diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml new file mode 100644 index 000000000..4b2a2281b --- /dev/null +++ b/.github/workflows/build-and-test.yaml @@ -0,0 +1,32 @@ +name: Build and test +on: + pull_request: + types: + - assigned + - opened + - synchronize + - reopened + +jobs: + test: + name: Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + with: + fetch-depth: 8 + - uses: actions/setup-go@v2 + with: + go-version: '1.18' + - name: test + shell: bash + run: | + set -o xtrace + workdir="$HOME/go/src/yunion.io/x" + mkdir -p "$workdir" + mv "$HOME/work/pkg/kubecomps" "$workdir/" + + export GOPATH="$HOME/go" + export GO111MODULE=off + cd "$workdir/kubecomps" + make test diff --git a/Makefile b/Makefile index 82ffa4181..896650263 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ LDFLAGS := "-w \ export GO111MODULE:=on export GOPROXY:=direct -RELEASE_BRANCH:=master +RELEASE_BRANCH:=release/3.11 GO_BUILD := go build -mod vendor -buildvcs=false -ldflags $(LDFLAGS) CMDS := $(shell find $(ROOT_DIR)/cmd -mindepth 1 -maxdepth 1 -type d) @@ -52,7 +52,7 @@ prepare_dir: mod: GOPROXY=$(GOPROXY) GONOSUMDB=yunion.io/x go get yunion.io/x/onecloud@$(RELEASE_BRANCH) - GOPROXY=$(GOPROXY) GONOSUMDB=yunion.io/x go get $(patsubst %,%@master,$(shell GO111MODULE=on go mod edit -print | sed -n -e 's|.*\(yunion.io/x/[a-z].*\) v.*|\1|p' | grep -v '/onecloud$$')) + #GOPROXY=$(GOPROXY) GONOSUMDB=yunion.io/x go get $(patsubst %,%@master,$(shell GO111MODULE=on go mod edit -print | sed -n -e 's|.*\(yunion.io/x/[a-z].*\) v.*|\1|p' | grep -v '/onecloud$$')) go mod tidy go mod vendor -v @@ -111,7 +111,11 @@ fmt-check: fmt echo "$@: working tree modified (possibly by gofmt)" >&2 ; \ false ; \ fi -.PHONY: fmt fmt-check + +test: + @go test $(GO_BUILD_FLAGS) $(shell go list ./...) + +.PHONY: fmt fmt-check test %: @: diff --git a/go.mod b/go.mod index 2673d97be..a0669a35b 100644 --- a/go.mod +++ b/go.mod @@ -38,15 +38,16 @@ require ( sigs.k8s.io/controller-runtime v0.6.4 sigs.k8s.io/yaml v1.2.0 yunion.io/x/code-generator v0.0.0-20230130032150-a6851cfe4737 - yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 + yunion.io/x/jsonutils v1.0.1-0.20240203102553-4096f103b401 yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 - yunion.io/x/onecloud v0.0.0-20230718094204-288bb6d900db - yunion.io/x/pkg v1.0.1-0.20230711090507-0aafe0f0c9db - yunion.io/x/sqlchemy v1.1.2-0.20230712025503-b1892bc5944c + yunion.io/x/onecloud v0.0.0-20240305022950-ed2dd1f548c2 + yunion.io/x/pkg v1.10.1-0.20240303050651-73685b15a96e + yunion.io/x/sqlchemy v1.1.3-0.20240304110946-16faa82225e6 ) require ( cloud.google.com/go v0.99.0 // indirect + gitee.com/chunanyong/dm v1.8.14 // indirect github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.1 // indirect @@ -119,6 +120,7 @@ require ( github.com/golang-plus/uuid v1.0.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/snappy v0.0.3 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.1.0 // indirect @@ -237,10 +239,10 @@ require ( rsc.io/letsencrypt v0.0.3 // indirect sigs.k8s.io/kustomize v2.0.3+incompatible // indirect sigs.k8s.io/structured-merge-diff/v4 v4.0.1 // indirect - yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230714020436-02f1bfcc8e8e // indirect + yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240304114831-feebc346e513 // indirect yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 // indirect yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e // indirect - yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6 // indirect + yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c // indirect ) replace ( diff --git a/go.sum b/go.sum index fa33b8498..b6b156e60 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,8 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gitee.com/chunanyong/dm v1.8.14 h1:1S9+aD0fY/HXkcm8dKh2HjYsDlcdXNG+4IOX9JtrSjA= +gitee.com/chunanyong/dm v1.8.14/go.mod h1:EPRJnuPFgbyOFgJ0TRYCTGzhq+ZT4wdyaj/GW/LLcNg= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= @@ -528,6 +530,7 @@ github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= @@ -710,7 +713,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -855,6 +857,7 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -1633,8 +1636,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -1762,30 +1765,30 @@ sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230714020436-02f1bfcc8e8e h1:5X432B4i7RMiA76FAFwQueyIvyw3t0LgjyrS+a37wfA= -yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230714020436-02f1bfcc8e8e/go.mod h1:2sgCN7nRPQL3woLfdgqLDd92vwAHqtlz3KKiHxC5BAw= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240304114831-feebc346e513 h1:p6TyojYdVP5S3jTTgOOj/Pm5uRRAv6sLRj8xLxADRe4= +yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240304114831-feebc346e513/go.mod h1:dsUESXIbXJ+/ywbNClhldOrbPOiBi2udrgOnB/ffoWk= yunion.io/x/code-generator v0.0.0-20230130032150-a6851cfe4737 h1:+wbsJEsGDbuMZWeflXb+sQwuqrUOa4QSa/MFmgicD3w= yunion.io/x/code-generator v0.0.0-20230130032150-a6851cfe4737/go.mod h1:kUCyyjSbaDW0A+ZXuUg3avTpaS1LUw3LxYkHZymjgz8= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32 h1:v7POYkQwo1XzOxBoIoRVr/k0V9Y5JyjpshlIFa9raug= yunion.io/x/executor v0.0.0-20230705125604-c5ac3141db32/go.mod h1:Uxuou9WQIeJXNpy7t2fPLL0BYLvLiMvGQwY7Qc6aSws= yunion.io/x/jsonutils v0.0.0-20190625054549-a964e1e8a051/go.mod h1:4N0/RVzsYL3kH3WE/H1BjUQdFiWu50JGCFQuuy+Z634= -yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 h1:mZh6vuo7oOiOtE5HF4667+XBNnn7uYpmGN5eIgCVMLk= -yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19/go.mod h1:VK4Z93dgiKgAijcSqbMKmGaBMJuHulR16Hz4K015ZPo= +yunion.io/x/jsonutils v1.0.1-0.20240203102553-4096f103b401 h1:4l6ELFSQ0MBVInscZ8/yOtSWF0cwH5BT1ATN6dCtAqc= +yunion.io/x/jsonutils v1.0.1-0.20240203102553-4096f103b401/go.mod h1:VK4Z93dgiKgAijcSqbMKmGaBMJuHulR16Hz4K015ZPo= yunion.io/x/log v0.0.0-20190514041436-04ce53b17c6b/go.mod h1:+gauLs73omeJAPlsXcevLsJLKixV+sR/E7WSYTSx1fE= yunion.io/x/log v0.0.0-20190629062853-9f6483a7103d/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U= yunion.io/x/log v0.0.0-20200313080802-57a4ce5966b3/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U= yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 h1:c5LyNdhbvBe/92pXs9jgXOU/S+RgYh/DHe538LpT/Mo= yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361/go.mod h1:LC6f/4FozL0iaAbnFt2eDX9jlsyo3WiOUPm03d7+U4U= -yunion.io/x/onecloud v0.0.0-20230718094204-288bb6d900db h1:dGGl4xqqY2EXDMsK5Mpv1g72h5vr/n2mmN7EZSB7XkQ= -yunion.io/x/onecloud v0.0.0-20230718094204-288bb6d900db/go.mod h1:TVk1N2tHQ1jIEIfYm5f2615PbDzXXnuAjcsQ+nXGG3Y= +yunion.io/x/onecloud v0.0.0-20240305022950-ed2dd1f548c2 h1:a//bOiPceVRMdBV7ziolAoxFS8mQSKZU1kv8Oe26Muc= +yunion.io/x/onecloud v0.0.0-20240305022950-ed2dd1f548c2/go.mod h1:MoJDV5/Sc1+dA8r7F1upUOQy/D0BWDh2JAk+iTmUC/A= yunion.io/x/pkg v0.0.0-20190620104149-945c25821dbf/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E= yunion.io/x/pkg v0.0.0-20190628082551-f4033ba2ea30/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E= yunion.io/x/pkg v0.0.0-20200416145704-22c189971435/go.mod h1:t6rEGG2sQ4J7DhFxSZVOTjNd0YO/KlfWQyK1W4tog+E= -yunion.io/x/pkg v1.0.1-0.20230711090507-0aafe0f0c9db h1:GyBvo/gYl2MY5Q0SZ6Nso8WJHPonmngOtcpVfyCE0yA= -yunion.io/x/pkg v1.0.1-0.20230711090507-0aafe0f0c9db/go.mod h1:ksCJVQ+DwKrJ5QBEoU8pzrDFfDaZVAFH/iJ6yQCYxJk= +yunion.io/x/pkg v1.10.1-0.20240303050651-73685b15a96e h1:NuYu+z0dOT93aoNjg3W3PkLidy3E3cdNFZqz2Aua6UE= +yunion.io/x/pkg v1.10.1-0.20240303050651-73685b15a96e/go.mod h1:ksCJVQ+DwKrJ5QBEoU8pzrDFfDaZVAFH/iJ6yQCYxJk= yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e h1:v+EzIadodSwkdZ/7bremd7J8J50Cise/HCylsOJngmo= yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e/go.mod h1:0iFKpOs1y4lbCxeOmq3Xx/0AcQoewVPwj62eRluioEo= -yunion.io/x/sqlchemy v1.1.2-0.20230712025503-b1892bc5944c h1:jlJkjiL1jv6mpdV3Z0RdeEWB5U3qEwUnSjioGZmki70= -yunion.io/x/sqlchemy v1.1.2-0.20230712025503-b1892bc5944c/go.mod h1:uuPVZEyEq3sWd5vf9VjGSy6lZzof22X87OEHw9sddJQ= -yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6 h1:WuWXhY3DvhdRTzWCJ/kwt3Ss6KIq7+KqJwb+esvNGwU= -yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng= +yunion.io/x/sqlchemy v1.1.3-0.20240304110946-16faa82225e6 h1:3R34JW8CxuweUn4mCrFMSTwU5Njwh5aCB5x9x6l5GBA= +yunion.io/x/sqlchemy v1.1.3-0.20240304110946-16faa82225e6/go.mod h1:5W8ghvJ4TNt/r2yDjjD3i4QsZgIiJX45dhRQBGWPHsQ= +yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c h1:QuLab2kSRECZRxo4Lo2KcYn6XjQFDGaZ1+x0pYDVVwQ= +yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c/go.mod h1:EP6NSv2C0zzqBDTKumv8hPWLb3XvgMZDHQRfyuOrQng= diff --git a/manifests/ansible/kubespray_2_19_1 b/manifests/ansible/kubespray_2_19_1 index 453dbcef1..1c954d828 160000 --- a/manifests/ansible/kubespray_2_19_1 +++ b/manifests/ansible/kubespray_2_19_1 @@ -1 +1 @@ -Subproject commit 453dbcef1d10dd62481a836d26130f48073078d2 +Subproject commit 1c954d828efe16c07caeb4c585f3d78c14310897 diff --git a/pkg/calico-node-agent/serve/serve.go b/pkg/calico-node-agent/serve/serve.go index 4db68447f..203fa10e9 100644 --- a/pkg/calico-node-agent/serve/serve.go +++ b/pkg/calico-node-agent/serve/serve.go @@ -16,6 +16,7 @@ import ( kapiv1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "yunion.io/x/jsonutils" "yunion.io/x/log" "yunion.io/x/pkg/errors" @@ -235,7 +236,7 @@ func (s *server) syncIPPools(ctx context.Context) error { } // delete remote pool if err := s.deleteIPPool(ctx, rp); err != nil { - return errors.Wrapf(err, "delete remote IPPool %s") + return errors.Wrapf(err, "delete remote IPPool %s", jsonutils.Marshal(rp)) } } diff --git a/pkg/kubeserver/api/container_registry.go b/pkg/kubeserver/api/container_registry.go index 2cc1d1cc3..16ef4f27a 100644 --- a/pkg/kubeserver/api/container_registry.go +++ b/pkg/kubeserver/api/container_registry.go @@ -15,6 +15,7 @@ type ContainerRegistryListInput struct { apis.StatusInfrasResourceBaseListInput Type string `json:"type"` + Url string `json:"url"` } type ContainerRegistryConfigCommon struct { @@ -72,5 +73,6 @@ type ContainerRegistryDownloadImageInput struct { } type ContainerRegistryListImagesInput struct { - Details bool `json:"details"` + Details bool `json:"details"` + RepositoryName string `json:"repository_name"` } diff --git a/pkg/kubeserver/api/repo.go b/pkg/kubeserver/api/repo.go index 9f31e6fa1..0bb417556 100644 --- a/pkg/kubeserver/api/repo.go +++ b/pkg/kubeserver/api/repo.go @@ -44,6 +44,7 @@ type RepoListInput struct { apis.StatusInfrasResourceBaseListInput Type string `json:"type"` + Url string `json:"url"` } type RepoDetail struct { diff --git a/pkg/kubeserver/app/handlers.go b/pkg/kubeserver/app/handlers.go index 8670089c6..fc3046778 100644 --- a/pkg/kubeserver/app/handlers.go +++ b/pkg/kubeserver/app/handlers.go @@ -21,7 +21,7 @@ func InitHandlers(app *appsrv.Application) { apiPrefix := "/api" taskman.AddTaskHandler(apiPrefix, app) usages.AddUsageHandler(apiPrefix, app) - appsrv.AddPProfHandler(apiPrefix, app) + app.EnableProfiling() for _, man := range []db.IModelManager{ taskman.TaskManager, diff --git a/pkg/kubeserver/client/api/types.go b/pkg/kubeserver/client/api/types.go index 44e8b29f9..f7efa10b9 100644 --- a/pkg/kubeserver/client/api/types.go +++ b/pkg/kubeserver/client/api/types.go @@ -2,7 +2,7 @@ package api import ( apps "k8s.io/api/apps/v1" - autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2" + // autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2" batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" // extensionsv1beta1 "k8s.io/api/extensions/v1beta1" @@ -73,17 +73,17 @@ var KindToResourceMap = map[string]ResourceMap{ Namespaced: true, }, - api.ResourceNameHorizontalPodAutoscaler: { - GroupVersionResourceKind: GroupVersionResourceKind{ - GroupVersionResource: schema.GroupVersionResource{ - Group: autoscalingv2beta2.GroupName, - Version: autoscalingv2beta2.SchemeGroupVersion.Version, - Resource: api.ResourceNameHorizontalPodAutoscaler, - }, - Kind: api.KindNameHorizontalPodAutoscaler, - }, - Namespaced: true, - }, + // api.ResourceNameHorizontalPodAutoscaler: { + // GroupVersionResourceKind: GroupVersionResourceKind{ + // GroupVersionResource: schema.GroupVersionResource{ + // Group: autoscalingv2beta2.GroupName, + // Version: autoscalingv2beta2.SchemeGroupVersion.Version, + // Resource: api.ResourceNameHorizontalPodAutoscaler, + // }, + // Kind: api.KindNameHorizontalPodAutoscaler, + // }, + // Namespaced: true, + // }, // api.ResourceNameIngress: { // GroupVersionResourceKind: GroupVersionResourceKind{ // GroupVersionResource: schema.GroupVersionResource{ @@ -319,7 +319,7 @@ var KindToResourceMap = map[string]ResourceMap{ } var KindHandledByDynamic = []string{ - api.KindNameIngress, api.KindNameCronJob, + api.KindNameIngress, api.KindNameCronJob, // api.KindNameHorizontalPodAutoscaler, } func GetResourceKinds() sets.String { diff --git a/pkg/kubeserver/client/client.go b/pkg/kubeserver/client/client.go index 7dd15d165..27680c8ea 100644 --- a/pkg/kubeserver/client/client.go +++ b/pkg/kubeserver/client/client.go @@ -128,7 +128,7 @@ func GetManager(cluster string) (*ClusterManager, error) { func BuildClientConfig(master string, kubeconfig string) (*rest.Config, *clientcmdapi.Config, error) { configInternal, err := clientcmd.Load([]byte(kubeconfig)) if err != nil { - return nil, nil, err + return nil, nil, errors.Wrapf(err, "Load kubeconfig") } curCtxName := configInternal.CurrentContext curCtx, ok := configInternal.Contexts[curCtxName] @@ -140,6 +140,9 @@ func BuildClientConfig(master string, kubeconfig string) (*rest.Config, *clientc if !ok { return nil, nil, errors.Errorf("Not found cluster %q", ctxClsName) } + if master == "" { + master = cls.Server + } cls.Server = master configInternal.Clusters[ctxClsName] = cls diff --git a/pkg/kubeserver/drivers/clusters/imported/external_openshift.go b/pkg/kubeserver/drivers/clusters/imported/external_openshift.go index d73a941ad..65414f884 100644 --- a/pkg/kubeserver/drivers/clusters/imported/external_openshift.go +++ b/pkg/kubeserver/drivers/clusters/imported/external_openshift.go @@ -33,11 +33,11 @@ func (d *ExternalOpenshift) ValidateCreateData(ctx context.Context, userCred mcc return errors.Wrap(err, "new openshift client") } var clusterOperator *configv1.ClusterOperator - clusterOperator, serverErr := ocCli.ClusterOperators().Get(context.Background(), "openshift-apiserver", metav1.GetOptions{}) + clusterOperator, serverErr := ocCli.ClusterOperators().Get(ctx, "openshift-apiserver", metav1.GetOptions{}) if serverErr != nil { switch { case kerrors.IsForbidden(serverErr), kerrors.IsNotFound(serverErr): - return errors.Wrapf(err, "OpenShift Version not found (must be logged in to cluster as admin): %v") + return errors.Wrapf(err, "OpenShift Version not found (must be logged in to cluster as admin): %v", config) } return errors.Wrap(err, "get openshift apiserver") } diff --git a/pkg/kubeserver/drivers/clusters/imported_base.go b/pkg/kubeserver/drivers/clusters/imported_base.go index 24a1b5216..001f0219d 100644 --- a/pkg/kubeserver/drivers/clusters/imported_base.go +++ b/pkg/kubeserver/drivers/clusters/imported_base.go @@ -119,6 +119,9 @@ func (d *sImportBaseDriver) ValidateCreateData(ctx context.Context, userCred mcc apiServer := importData.ApiServer kubeconfig := importData.Kubeconfig newKubeconfig, restConfig, cli, err := d.getKubeClientByConfig(apiServer, kubeconfig) + if err != nil { + return httperrors.NewNotSupportedError("get kubernetes client by config: %v", err) + } importData.Kubeconfig = string(newKubeconfig) importData.ApiServer = restConfig.Host version, err := cli.Discovery().ServerVersion() diff --git a/pkg/kubeserver/drivers/clusters/selfbuild/aws.go b/pkg/kubeserver/drivers/clusters/selfbuild/aws.go index 2a48992ee..084bdd480 100644 --- a/pkg/kubeserver/drivers/clusters/selfbuild/aws.go +++ b/pkg/kubeserver/drivers/clusters/selfbuild/aws.go @@ -120,20 +120,23 @@ func (s *sAwsDriver) GetAddonsManifest(cluster *models.SCluster, conf *api.Clust commonConf.IngressControllerYunionConfig = nil commonConf.CSIYunionConfig = nil commonConf.MetricsPluginConfig = nil - commonConf.CSIRancherLocalPathConfig.Image = "registry.cn-beijing.aliyuncs.com/yunionio/local-path-provisioner:v0.0.24" + // commonConf.CSIRancherLocalPathConfig.Image = "registry.cn-beijing.aliyuncs.com/yunionio/local-path-provisioner:v0.0.24" + commonConf.CSIRancherLocalPathConfig.Image = "rancher/local-path-provisioner:v0.0.24" + commonConf.CSIRancherLocalPathConfig.HelperImage = "busybox:latest" - reg, err := cluster.GetImageRepository() - if err != nil { - return "", errors.Wrap(err, "get cluster image_repository") - } + // reg, err := cluster.GetImageRepository() + // if err != nil { + // return "", errors.Wrap(err, "get cluster image_repository") + // } cniVersion := "v1.13.3" + cniUrl := "registry.us-west-1.aliyuncs.com/yunion-dev" pluginConf := &addons.AwsVMPluginsConfig{ YunionCommonPluginsConfig: commonConf, AwsVPCCNIConfig: &addons.AwsVPCCNIConfig{ - Image: registry.MirrorImage(reg.Url, "amazon-k8s-cni", cniVersion, ""), - InitImage: registry.MirrorImage(reg.Url, "amazon-k8s-cni-init", cniVersion, ""), + Image: registry.MirrorImage(cniUrl, "amazon-k8s-cni", cniVersion, ""), + InitImage: registry.MirrorImage(cniUrl, "amazon-k8s-cni-init", cniVersion, ""), }, CloudProviderAwsConfig: &addons.CloudProviderAwsConfig{}, } diff --git a/pkg/kubeserver/drivers/container_registries/client/client.go b/pkg/kubeserver/drivers/container_registries/client/client.go index 7e99d2689..3aa177268 100644 --- a/pkg/kubeserver/drivers/container_registries/client/client.go +++ b/pkg/kubeserver/drivers/container_registries/client/client.go @@ -154,7 +154,17 @@ func (c client) ListImages(ctx context.Context, input *api.ContainerRegistryList newRepos = result.Repositories } } - result.Repositories = newRepos + if input.RepositoryName != "" { + filterRepos := []string{} + for _, name := range newRepos { + if strings.Contains(name, input.RepositoryName) { + filterRepos = append(filterRepos, name) + } + } + result.Repositories = filterRepos + } else { + result.Repositories = newRepos + } if input.Details { result.Details = make([]*ImageTagResult, 0) var errgrp errgroup.Group diff --git a/pkg/kubeserver/drivers/container_registries/harbor.go b/pkg/kubeserver/drivers/container_registries/harbor.go index 58ede5ab8..499dca62b 100644 --- a/pkg/kubeserver/drivers/container_registries/harbor.go +++ b/pkg/kubeserver/drivers/container_registries/harbor.go @@ -101,6 +101,6 @@ func (h harborImpl) PreparePushImage(ctx context.Context, url string, conf *api. Public: &trueObj, } ret, err := cs.V2().Project.CreateProject(ctx, params) - log.Infof("create project %q, ret: %#v, error: %v", ret, err) + log.Infof("create project %q, ret: %#v, error: %v", projectName, ret, err) return nil } diff --git a/pkg/kubeserver/drivers/machines/hypervisors/aws.go b/pkg/kubeserver/drivers/machines/hypervisors/aws.go index f77c375d9..54a886e14 100644 --- a/pkg/kubeserver/drivers/machines/hypervisors/aws.go +++ b/pkg/kubeserver/drivers/machines/hypervisors/aws.go @@ -141,7 +141,7 @@ func (_ aws) PostPrepareServerResource(ctx context.Context, s *mcclient.ClientSe for _, netId := range netIds { details, err := onecloudcli.NewNetworkHelper(s).GetDetails(netId) if err != nil { - return errors.Wrapf(err, "get network %d details", netId) + return errors.Wrapf(err, "get network %s details", netId) } if err := clirc.EC2CreateTags(details.ExternalId, awscli.NewClusterTag(cls.GetName(), awscli.ClusterTagValueShared)); err != nil { return errors.Wrapf(err, "EC2CreateTags for subnet %s", details.Name) diff --git a/pkg/kubeserver/helm/repo.go b/pkg/kubeserver/helm/repo.go index cda65d5dd..15d690310 100644 --- a/pkg/kubeserver/helm/repo.go +++ b/pkg/kubeserver/helm/repo.go @@ -95,16 +95,16 @@ func (c RepoClient) Add(entry *repo.Entry) error { defer fileLock.Unlock() } if err != nil { - return err + return errors.Wrapf(err, "Try lock context file lock: %s", repoFile) } b, err := ioutil.ReadFile(repoFile) if err != nil && !os.IsNotExist(err) { - return err + return errors.Wrapf(err, "read repo file %s", repoFile) } var f repo.File if err := yaml.Unmarshal(b, &f); err != nil { - return err + return errors.Wrapf(err, "unmarshal %s to repo.File", b) } if f.Has(entry.Name) { @@ -113,7 +113,7 @@ func (c RepoClient) Add(entry *repo.Entry) error { r, err := repo.NewChartRepository(entry, getter.All(c.GetSetting())) if err != nil { - return err + return errors.Wrapf(err, "NewChartRepository") } if _, err := r.DownloadIndexFile(); err != nil { @@ -123,7 +123,7 @@ func (c RepoClient) Add(entry *repo.Entry) error { f.Update(entry) if err := f.WriteFile(c.RepositoryConfig, 0644); err != nil { - return err + return errors.Wrapf(err, "write repo config") } log.Infof("%q has been added to your repositories", entry.Name) return nil diff --git a/pkg/kubeserver/initial/client.go b/pkg/kubeserver/initial/client.go index 6cfd631c4..c48c91b0f 100644 --- a/pkg/kubeserver/initial/client.go +++ b/pkg/kubeserver/initial/client.go @@ -6,6 +6,7 @@ import ( // "k8s.io/apimachinery/pkg/util/wait" "yunion.io/x/onecloud/pkg/cloudcommon/cronman" + "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/kubecomps/pkg/kubeserver/client" "yunion.io/x/kubecomps/pkg/kubeserver/models" @@ -21,6 +22,8 @@ func InitClient(cron *cronman.SCronJobManager) { // go wait.Forever(client.BuildApiserverClient, 5*time.Second) client.InitClustersManager(manager.ClusterManager()) + cron.AddJobEveryFewHour("AutoPurgeSplitable", 4, 30, 0, db.AutoPurgeSplitable, false) + cron.AddJobAtIntervalsWithStartRun("StartKubeClusterHealthCheck", 5*time.Minute, models.ClusterManager.ClusterHealthCheckTask, true) cron.AddJobAtIntervalsWithStartRun("StartKubeClusterAutoSyncTask", 30*time.Minute, models.ClusterManager.StartAutoSyncTask, true) if options.Options.RunningMode == options.RUNNING_MODE_K8S { diff --git a/pkg/kubeserver/k8s/client/api/types.go b/pkg/kubeserver/k8s/client/api/types.go index 6d008cd83..8f5bf68b4 100644 --- a/pkg/kubeserver/k8s/client/api/types.go +++ b/pkg/kubeserver/k8s/client/api/types.go @@ -1,13 +1,15 @@ package api import ( + "context" + "k8s.io/apimachinery/pkg/runtime" ) // ResourceVerber is responsible for performing generic CRUD operations on all supported resources. type ResourceVerber interface { - Put(kind string, namespaceSet bool, namespace string, name string, + Put(ctx context.Context, kind string, namespaceSet bool, namespace string, name string, object runtime.Object) error - Get(kind string, namespaceSet bool, namespace string, name string) (runtime.Object, error) - Delete(kind string, namespaceSet bool, namespace string, name string) error + Get(ctx context.Context, kind string, namespaceSet bool, namespace string, name string) (runtime.Object, error) + Delete(ctx context.Context, kind string, namespaceSet bool, namespace string, name string) error } diff --git a/pkg/kubeserver/k8s/client/dynamic_client.go b/pkg/kubeserver/k8s/client/dynamic_client.go index 7b27580a1..06f560b81 100644 --- a/pkg/kubeserver/k8s/client/dynamic_client.go +++ b/pkg/kubeserver/k8s/client/dynamic_client.go @@ -1,6 +1,8 @@ package client import ( + "context" + "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -41,7 +43,7 @@ func NewDynamicClient(config *rest.Config) (*DynamicClient, error) { }, nil } -func (c *DynamicClient) Update(namespace string, obj runtime.Object) (*unstructured.Unstructured, error) { +func (c *DynamicClient) Update(ctx context.Context, namespace string, obj runtime.Object) (*unstructured.Unstructured, error) { gvk := obj.GetObjectKind().GroupVersionKind() gk := gvk.GroupKind() mapping, err := c.mapper.RESTMapping(gk, gvk.Version) @@ -52,5 +54,5 @@ func (c *DynamicClient) Update(namespace string, obj runtime.Object) (*unstructu if err != nil { return nil, err } - return c.dynamicCli.Resource(mapping.Resource).Namespace(namespace).Update(&unstructured.Unstructured{unstructureObj}, metav1.UpdateOptions{}) + return c.dynamicCli.Resource(mapping.Resource).Namespace(namespace).Update(ctx, &unstructured.Unstructured{unstructureObj}, metav1.UpdateOptions{}) } diff --git a/pkg/kubeserver/k8s/client/verber.go b/pkg/kubeserver/k8s/client/verber.go index c088a95ad..46785d2b2 100644 --- a/pkg/kubeserver/k8s/client/verber.go +++ b/pkg/kubeserver/k8s/client/verber.go @@ -2,9 +2,10 @@ package client import ( //"encoding/json" + "context" "fmt" - "k8s.io/apimachinery/pkg/apis/meta/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" restclient "k8s.io/client-go/rest" @@ -58,7 +59,7 @@ func NewResourceVerber(client, extensionsClient, appsClient, } // Delete deletes the resource of the given kind in the given namespace with the given name. -func (verber *resourceVerber) Delete(kind string, namespaceSet bool, namespace string, name string) error { +func (verber *resourceVerber) Delete(ctx context.Context, kind string, namespaceSet bool, namespace string, name string) error { resourceSpec, ok := api.KindToAPIMapping[kind] if !ok { return fmt.Errorf("Unknown resource kind: %s", kind) @@ -86,11 +87,11 @@ func (verber *resourceVerber) Delete(kind string, namespaceSet bool, namespace s req.Namespace(namespace) } - return req.Do().Error() + return req.Do(ctx).Error() } // Put puts new resource version of the given kind in the given namespace with the given name. -func (verber *resourceVerber) Put(kind string, namespaceSet bool, namespace string, name string, +func (verber *resourceVerber) Put(ctx context.Context, kind string, namespaceSet bool, namespace string, name string, obj runtime.Object) error { resourceSpec, ok := api.KindToAPIMapping[kind] @@ -122,11 +123,11 @@ func (verber *resourceVerber) Put(kind string, namespaceSet bool, namespace stri req.Namespace(namespace) } - return req.Do().Error() + return req.Do(ctx).Error() } // Get gets the resource of the given kind in the given namespace with the given name. -func (verber *resourceVerber) Get(kind string, namespaceSet bool, namespace string, name string) (runtime.Object, error) { +func (verber *resourceVerber) Get(ctx context.Context, kind string, namespaceSet bool, namespace string, name string) (runtime.Object, error) { resourceSpec, ok := api.KindToAPIMapping[kind] if !ok { return nil, fmt.Errorf("Unknown resource kind: %s", kind) @@ -148,6 +149,6 @@ func (verber *resourceVerber) Get(kind string, namespaceSet bool, namespace stri req.Namespace(namespace) } - err := req.Do().Into(result) + err := req.Do(ctx).Into(result) return result, err } diff --git a/pkg/kubeserver/k8s/common/model/filterclause.go b/pkg/kubeserver/k8s/common/model/filterclause.go index 638fd21af..76467a60c 100644 --- a/pkg/kubeserver/k8s/common/model/filterclause.go +++ b/pkg/kubeserver/k8s/common/model/filterclause.go @@ -47,14 +47,14 @@ func (_ qCond) IN(field string, params []string) QueryFilter { f := func(val string) (bool, error) { return utils.IsInStringArray(val, params), nil } - return QWrapStr(field, f, "%s.in(%v)", params) + return QWrapStr(field, f, "%s.in(%v)", field, params) } func (_ qCond) NOT_IN(field string, params []string) QueryFilter { f := func(val string) (bool, error) { return utils.IsInStringArray(val, params), nil } - return QWrapStr(field, f, "%s.notin(%v)", params) + return QWrapStr(field, f, "%s.notin(%v)", field, params) } func (cond qCond) or(op func(val1, val2 string) bool, val string, params ...string) (bool, error) { @@ -72,7 +72,7 @@ func (cond qCond) CONTAINS(field string, params []string) QueryFilter { return strings.Contains(v1, v2) }, val, params...) } - return QWrapStr(field, f, "%s.contains(%v)", params) + return QWrapStr(field, f, "%s.contains(%v)", field, params) } func (cond qCond) LIKE(field string, params []string) QueryFilter { @@ -85,7 +85,7 @@ func (cond qCond) STARTWITH(field string, params []string) QueryFilter { return strings.HasPrefix(v1, v2) }, val, params...) } - return QWrapStr(field, f, "%s.startwith(%v)", params) + return QWrapStr(field, f, "%s.startwith(%v)", field, params) } func (cond qCond) ENDWITH(field string, params []string) QueryFilter { @@ -94,7 +94,7 @@ func (cond qCond) ENDWITH(field string, params []string) QueryFilter { return strings.HasSuffix(v1, v2) }, val, params...) } - return QWrapStr(field, f, "%s.endwith(%v)", params) + return QWrapStr(field, f, "%s.endwith(%v)", field, params) } func (cond qCond) EQUALS(field string, params []string) QueryFilter { @@ -103,7 +103,7 @@ func (cond qCond) EQUALS(field string, params []string) QueryFilter { return strings.Compare(v1, v2) == 0 }, val, params...) } - return QWrapStr(field, f, "%s.equals(%v)", params) + return QWrapStr(field, f, "%s.equals(%v)", field, params) } func (cond qCond) NOT_EQUALS(field string, params []string) QueryFilter { @@ -112,7 +112,7 @@ func (cond qCond) NOT_EQUALS(field string, params []string) QueryFilter { return strings.Compare(v1, v2) != 0 }, val, params...) } - return QWrapStr(field, f, "%s.not_equals(%v)", params) + return QWrapStr(field, f, "%s.not_equals(%v)", field, params) } func (fc *SFilterClause) QueryFilter() QueryFilter { diff --git a/pkg/kubeserver/k8s/dispatcher/k8s_resource_dispatcher.go b/pkg/kubeserver/k8s/dispatcher/k8s_resource_dispatcher.go index 023f620b3..8eb8d9607 100644 --- a/pkg/kubeserver/k8s/dispatcher/k8s_resource_dispatcher.go +++ b/pkg/kubeserver/k8s/dispatcher/k8s_resource_dispatcher.go @@ -150,7 +150,7 @@ func mergeQueryParams(params map[string]string, query jsonutils.JSONObject, excl return queryDict } -func (d K8sModelDispatcher) getCluster(query, data *jsonutils.JSONDict, userCred mcclient.TokenCredential) (*client.ClusterManager, error) { +func (d K8sModelDispatcher) getCluster(ctx context.Context, query, data *jsonutils.JSONDict, userCred mcclient.TokenCredential) (*client.ClusterManager, error) { var clusterId string for _, src := range []*jsonutils.JSONDict{query, data} { if src == nil { @@ -164,7 +164,7 @@ func (d K8sModelDispatcher) getCluster(query, data *jsonutils.JSONDict, userCred if clusterId == "" { return nil, httperrors.NewMissingParameterError("cluster") } - cluster, err := models.ClusterManager.FetchClusterByIdOrName(userCred, clusterId) + cluster, err := models.ClusterManager.FetchClusterByIdOrName(ctx, userCred, clusterId) if err != nil { return nil, err } @@ -177,7 +177,7 @@ func getUserCredential(ctx context.Context) mcclient.TokenCredential { func (d K8sModelDispatcher) getContext(ctx context.Context, query, data *jsonutils.JSONDict) (*model.RequestContext, error) { userCred := getUserCredential(ctx) - cluster, err := d.getCluster(query, data, userCred) + cluster, err := d.getCluster(ctx, query, data, userCred) if err != nil { return nil, err } diff --git a/pkg/kubeserver/k8s/helm_handler.go b/pkg/kubeserver/k8s/helm_handler.go index aab26d532..55f4c81fd 100644 --- a/pkg/kubeserver/k8s/helm_handler.go +++ b/pkg/kubeserver/k8s/helm_handler.go @@ -103,7 +103,7 @@ func chartlistHandler(ctx context.Context, w http.ResponseWriter, r *http.Reques return } userCred := policy.FetchUserCredential(ctx) - list, err := chart.ChartManager.List(userCred, cq, dsq) + list, err := chart.ChartManager.List(ctx, userCred, cq, dsq) if err != nil { errors.GeneralServerError(ctx, w, err) return @@ -120,7 +120,7 @@ func chartShowHandler(ctx context.Context, w http.ResponseWriter, r *http.Reques } chartName := params[""] userCred := getUserCredential(ctx) - repo, err := models.RepoManager.FetchRepoByIdOrName(userCred, repoName) + repo, err := models.RepoManager.FetchRepoByIdOrName(ctx, userCred, repoName) if err != nil { errors.GeneralServerError(ctx, w, err) return diff --git a/pkg/kubeserver/k8s/k8s_handler.go b/pkg/kubeserver/k8s/k8s_handler.go index fbcb61aea..620b793cb 100644 --- a/pkg/kubeserver/k8s/k8s_handler.go +++ b/pkg/kubeserver/k8s/k8s_handler.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "reflect" + "yunion.io/x/kubecomps/pkg/kubeserver/models" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -105,7 +106,7 @@ func getUserCredential(ctx context.Context) mcclient.TokenCredential { return policy.FetchUserCredential(ctx) } -func getCluster(query, data *jsonutils.JSONDict, userCred mcclient.TokenCredential) (*models.SCluster, error) { +func getCluster(ctx context.Context, query, data *jsonutils.JSONDict, userCred mcclient.TokenCredential) (*models.SCluster, error) { var clusterId string for _, src := range []*jsonutils.JSONDict{query, data} { if src == nil { @@ -119,7 +120,7 @@ func getCluster(query, data *jsonutils.JSONDict, userCred mcclient.TokenCredenti if clusterId == "" { return nil, httperrors.NewMissingParameterError("cluster") } - cluster, err := models.ClusterManager.FetchClusterByIdOrName(userCred, clusterId) + cluster, err := models.ClusterManager.FetchClusterByIdOrName(ctx, userCred, clusterId) if err != nil { return nil, err } @@ -141,7 +142,7 @@ func newK8sAdminClient(cluster *models.SCluster) (kubernetes.Interface, *rest.Co func NewCloudK8sRequest(ctx context.Context, query, data *jsonutils.JSONDict) (*common.Request, error) { userCred := getUserCredential(ctx) - cluster, err := getCluster(query, data, userCred) + cluster, err := getCluster(ctx, query, data, userCred) if err != nil { return nil, err } diff --git a/pkg/kubeserver/models/clusterresource.go b/pkg/kubeserver/models/clusterresource.go index 500412b8e..0e6b1724b 100644 --- a/pkg/kubeserver/models/clusterresource.go +++ b/pkg/kubeserver/models/clusterresource.go @@ -121,7 +121,7 @@ type IClusterModel interface { GetClusterId() string GetCluster() (*SCluster, error) SetCluster(userCred mcclient.TokenCredential, cluster *SCluster) - SetStatus(userCred mcclient.TokenCredential, status string, reason string) error + SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error NewRemoteObjectForUpdate(cli *client.ClusterManager, remoteObj interface{}, data jsonutils.JSONObject) (interface{}, error) SetStatusByRemoteObject(ctx context.Context, userCred mcclient.TokenCredential, remoteObj interface{}) error UpdateFromRemoteObject(ctx context.Context, userCred mcclient.TokenCredential, extObj interface{}) error @@ -215,7 +215,7 @@ func (m SClusterResourceBaseManager) ValidateCreateData(ctx context.Context, use if data.ClusterId == "" { return nil, httperrors.NewNotEmptyError("cluster is empty") } - clsObj, err := ClusterManager.FetchByIdOrName(userCred, data.ClusterId) + clsObj, err := ClusterManager.FetchByIdOrName(ctx, userCred, data.ClusterId) if err != nil { return nil, NewCheckIdOrNameError("cluster", data.ClusterId, err) } @@ -755,7 +755,7 @@ func (m *SClusterResourceBaseManager) ListItemFilter(ctx context.Context, q *sql return nil, err } if input.ClusterId != "" { - cls, err := ClusterManager.FetchClusterByIdOrName(userCred, input.ClusterId) + cls, err := ClusterManager.FetchClusterByIdOrName(ctx, userCred, input.ClusterId) if err != nil { return nil, errors.Wrap(err, "FetchClusterByIdOrName") } @@ -1261,7 +1261,7 @@ func onRemoteObjectUpdate(resMan IClusterModelManager, ctx context.Context, user func OnRemoteObjectDelete(resMan IClusterModelManager, ctx context.Context, userCred mcclient.TokenCredential, dbObj IClusterModel) error { // log.Debugf("remote object %s/%s deleted, delete local", resMan.Keyword(), dbObj.GetName()) if err := SyncRemovedClusterResource(ctx, userCred, dbObj); err != nil { - return errors.Wrapf(err, "OnRemoteObjectDelete %s %s SyncRemovedClusterResource error: %v", resMan.Keyword(), dbObj.GetName()) + return errors.Wrapf(err, "OnRemoteObjectDelete %s %s SyncRemovedClusterResource error: %v", resMan.Keyword(), dbObj.GetName(), err) } return nil } @@ -1269,7 +1269,7 @@ func OnRemoteObjectDelete(resMan IClusterModelManager, ctx context.Context, user func GetResourcesByClusters(man IClusterModelManager, clusterIds []string, ret interface{}) error { q := man.Query().In("cluster_id", clusterIds) if err := q.All(ret); err != nil { - return errors.Wrapf(err, "fetch %s resources by clusters") + return errors.Wrapf(err, "fetch %s resources by clusters", man.Keyword()) } return nil } diff --git a/pkg/kubeserver/models/clusters.go b/pkg/kubeserver/models/clusters.go index 61b97799f..9fb3dfeea 100644 --- a/pkg/kubeserver/models/clusters.go +++ b/pkg/kubeserver/models/clusters.go @@ -29,7 +29,6 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudcommon/db/lockman" "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" - "yunion.io/x/onecloud/pkg/cloudcommon/policy" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/util/stringutils2" @@ -428,7 +427,7 @@ func (m *SClusterManager) ListItemFilter( return nil, httperrors.NewInputParameterError("federated_keyword %s not found", input.FederatedKeyword) } fedMan := fedJointMan.GetFedManager() - fedObj, err := fedMan.FetchByIdOrName(userCred, input.FederatedResourceId) + fedObj, err := fedMan.FetchByIdOrName(ctx, userCred, input.FederatedResourceId) if err != nil { return nil, httperrors.NewNotFoundError("federated resource %s %s found error: %v", input.FederatedKeyword, input.FederatedResourceId, err) } @@ -781,10 +780,6 @@ func (m *SClusterManager) PerformPreCheck(ctx context.Context, userCred mcclient return driver.PreCheck(s, data) } -func (m *SClusterManager) AllowGetPropertyUsableInstances(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { - return userCred.IsAllow(rbacscope.ScopeSystem, m.KeywordPlural(), policy.PolicyActionGet, "usable-instances").Result.IsAllow() -} - func (m *SClusterManager) GetPropertyUsableInstances(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { driver, err := m.GetDriverByQuery(query) if err != nil { @@ -815,8 +810,8 @@ func (m *SClusterManager) PerformGc(ctx context.Context, userCred mcclient.Token return nil, nil } -func (m *SClusterManager) IsClusterExists(userCred mcclient.TokenCredential, id string) (manager.ICluster, bool, error) { - obj, err := m.FetchByIdOrName(userCred, id) +func (m *SClusterManager) IsClusterExists(ctx context.Context, userCred mcclient.TokenCredential, id string) (manager.ICluster, bool, error) { + obj, err := m.FetchByIdOrName(ctx, userCred, id) if err != nil { if err == sql.ErrNoRows { return nil, false, nil @@ -874,12 +869,12 @@ func (m *SClusterManager) GetClustersByStatus(status ...string) ([]manager.IClus return ret, nil } -func (m *SClusterManager) FetchClusterByIdOrName(userCred mcclient.TokenCredential, id string) (manager.ICluster, error) { - return m.GetClusterByIdOrName(userCred, id) +func (m *SClusterManager) FetchClusterByIdOrName(ctx context.Context, userCred mcclient.TokenCredential, id string) (manager.ICluster, error) { + return m.GetClusterByIdOrName(ctx, userCred, id) } -func (m *SClusterManager) GetClusterByIdOrName(userCred mcclient.TokenCredential, id string) (*SCluster, error) { - cluster, err := m.FetchByIdOrName(userCred, id) +func (m *SClusterManager) GetClusterByIdOrName(ctx context.Context, userCred mcclient.TokenCredential, id string) (*SCluster, error) { + cluster, err := m.FetchByIdOrName(ctx, userCred, id) if err != nil { if err == sql.ErrNoRows { return nil, httperrors.NewNotFoundError("Cluster %s", id) @@ -912,14 +907,14 @@ func (m *SClusterManager) ClusterHealthCheckTask(ctx context.Context, userCred m if err := c.IsHealthy(); err == nil { prevStatus := c.GetStatus() if c.GetStatus() != api.ClusterStatusRunning { - if err := c.SetStatus(userCred, api.ClusterStatusRunning, "by health check cronjob"); err != nil { + if err := c.SetStatus(ctx, userCred, api.ClusterStatusRunning, "by health check cronjob"); err != nil { log.Errorf("Set cluster %s status to running error: %v", c.GetName(), err) } else { c.Status = api.ClusterStatusRunning } if err := client.GetClustersManager().UpdateClient(c, false); err != nil { log.Errorf("Update cluster %s client error: %v", c.GetName(), err) - c.SetStatus(userCred, prevStatus, err.Error()) + c.SetStatus(ctx, userCred, prevStatus, err.Error()) } else { if err := c.StartSyncTask(ctx, userCred, nil, ""); err != nil { log.Errorf("cluster %s StartSyncTask when health check error: %v", c.GetId(), err) @@ -928,7 +923,7 @@ func (m *SClusterManager) ClusterHealthCheckTask(ctx context.Context, userCred m } continue } else { - c.SetStatus(userCred, api.ClusterStatusLost, err.Error()) + c.SetStatus(ctx, userCred, api.ClusterStatusLost, err.Error()) client.GetClustersManager().RemoveClient(c.GetId()) } } @@ -1079,7 +1074,7 @@ func (c *SCluster) PostCreate(ctx context.Context, userCred mcclient.TokenCreden } func (c *SCluster) StartClusterCreateTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error { - c.SetStatus(userCred, api.ClusterStatusCreating, "") + c.SetStatus(ctx, userCred, api.ClusterStatusCreating, "") task, err := taskman.TaskManager.NewTask(ctx, "ClusterCreateTask", c, userCred, data, parentTaskId, "", nil) if err != nil { return err @@ -1195,7 +1190,7 @@ func (c *SCluster) CustomizeDelete(ctx context.Context, userCred mcclient.TokenC } func (c *SCluster) StartClusterDeleteTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error { - if err := c.SetStatus(userCred, api.ClusterStatusDeleting, ""); err != nil { + if err := c.SetStatus(ctx, userCred, api.ClusterStatusDeleting, ""); err != nil { return err } if err := client.GetClustersManager().RemoveClient(c.GetId()); err != nil { @@ -1502,10 +1497,6 @@ func (c *SCluster) PerformApplyAddons(ctx context.Context, userCred mcclient.Tok return nil, nil } -func (c *SCluster) AllowGetDetailsAddons(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { - return c.AllowGetDetails(ctx, userCred, query) -} - func (c *SCluster) genAddonsManifestConfigByQuery(query api.ClusterGetAddonsInput) *api.ClusterAddonsManifestConfig { return &api.ClusterAddonsManifestConfig{ Network: api.ClusterAddonNetworkConfig{ @@ -1867,7 +1858,7 @@ func (c *SCluster) CreateMachines(ctx context.Context, userCred mcclient.TokenCr } func (c *SCluster) StartDeployMachinesTask(ctx context.Context, userCred mcclient.TokenCredential, action api.ClusterDeployAction, machineIds []string, parentTaskId string, skipDownloads bool) error { - if err := c.SetStatus(userCred, api.ClusterStatusDeploying, ""); err != nil { + if err := c.SetStatus(ctx, userCred, api.ClusterStatusDeploying, ""); err != nil { return err } @@ -1899,7 +1890,7 @@ func (c *SCluster) PerformDeleteMachines(ctx context.Context, userCred mcclient. if err != nil { return nil, err } - machineObj, err := manager.MachineManager().FetchMachineByIdOrName(userCred, id) + machineObj, err := manager.MachineManager().FetchMachineByIdOrName(ctx, userCred, id) if err != nil { return nil, httperrors.NewInputParameterError("Not found node by id: %s", id) } @@ -1931,7 +1922,7 @@ func (c *SCluster) StartDeleteMachinesTask(ctx context.Context, userCred mcclien } mids := []jsonutils.JSONObject{} for _, m := range ms { - m.SetStatus(userCred, api.MachineStatusDeleting, "ClusterDeleteMachinesTask") + m.SetStatus(ctx, userCred, api.MachineStatusDeleting, "ClusterDeleteMachinesTask") mids = append(mids, jsonutils.NewString(m.GetId())) } data.Set("machines", jsonutils.NewArray(mids...)) @@ -2099,7 +2090,7 @@ func (c *SCluster) ReRunDeployingComponents() error { comp := comps[i] errgrp.Go(func() error { if comp.GetStatus() == api.ComponentStatusDeploying { - if err := comp.StartSelfUpdate(GetAdminCred(), c); err != nil { + if err := comp.StartSelfUpdate(context.Background(), GetAdminCred(), c); err != nil { return errors.Wrap(err, "start component self update") } } diff --git a/pkg/kubeserver/models/compare.go b/pkg/kubeserver/models/compare.go index 1bf43b39b..38eff035a 100644 --- a/pkg/kubeserver/models/compare.go +++ b/pkg/kubeserver/models/compare.go @@ -54,11 +54,11 @@ func CompareSetsByFunc( added interface{}) error { dbSetArray, err := valueSet2Array(localObjs, getExternalIdMethod) if err != nil { - return errors.Wrapf(err, "Get local objects %s", getExternalIdMethod) + return errors.Wrapf(err, "Get local objects") } extSetArray, err := valueSet2Array(extObjs, getGlobalIdMethod) if err != nil { - return errors.Wrapf(err, "Get remote objects %s", getGlobalIdMethod) + return errors.Wrapf(err, "Get remote objects") } sort.Sort(valueSet(dbSetArray)) sort.Sort(valueSet(extSetArray)) diff --git a/pkg/kubeserver/models/components.go b/pkg/kubeserver/models/components.go index 1a634d99c..aab7bd296 100644 --- a/pkg/kubeserver/models/components.go +++ b/pkg/kubeserver/models/components.go @@ -300,7 +300,7 @@ func (m *SComponentManager) ValidateCreateData( if input.Cluster == "" { return nil, httperrors.NewNotEmptyError("cluster must specified") } - cluster, err := GetClusterManager().FetchByIdOrName(userCred, input.Cluster) + cluster, err := GetClusterManager().FetchByIdOrName(ctx, userCred, input.Cluster) if err != nil { return nil, errors.Wrapf(err, "fetch cluster %s", input.Cluster) } @@ -329,7 +329,7 @@ func (m *SComponent) CustomizeCreate( if err != nil { return errors.Wrapf(err, "get component %s settings", input.Type) } - cls, err := ClusterManager.GetClusterByIdOrName(userCred, input.Cluster) + cls, err := ClusterManager.GetClusterByIdOrName(ctx, userCred, input.Cluster) if err != nil { return errors.Wrapf(err, "get component %s cluster", input.Type) } @@ -417,7 +417,7 @@ func (m *SComponent) StartComponentDeployTask(ctx context.Context, userCred mccl if err := m.SetEnabled(true); err != nil { return err } - if err := m.SetStatus(userCred, api.ComponentStatusDeploying, ""); err != nil { + if err := m.SetStatus(ctx, userCred, api.ComponentStatusDeploying, ""); err != nil { return err } task, err := taskman.TaskManager.NewTask(ctx, "ComponentDeployTask", m, userCred, data, parentTaskId, "", nil) @@ -429,7 +429,7 @@ func (m *SComponent) StartComponentDeployTask(ctx context.Context, userCred mccl } func (m *SComponent) StartComponentUndeployTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error { - if err := m.SetStatus(userCred, api.ComponentStatusUndeploying, ""); err != nil { + if err := m.SetStatus(ctx, userCred, api.ComponentStatusUndeploying, ""); err != nil { return err } task, err := taskman.TaskManager.NewTask(ctx, "ComponentUndeployTask", m, userCred, data, parentTaskId, "", nil) @@ -479,7 +479,7 @@ func (m *SComponent) StartComponentDeleteTask(ctx context.Context, userCred mccl if err := m.SetEnabled(false); err != nil { return err } - if err := m.SetStatus(userCred, api.ComponentStatusDeleting, ""); err != nil { + if err := m.SetStatus(ctx, userCred, api.ComponentStatusDeleting, ""); err != nil { return err } task, err := taskman.TaskManager.NewTask(ctx, "ComponentDeleteTask", m, userCred, data, parentTaskId, "", nil) @@ -562,7 +562,7 @@ func (m *SComponent) DoUpdate(ctx context.Context, userCred mcclient.TokenCreden return m.StartComponentUpdateTask(ctx, userCred, input.JSON(input), "") } -func (m *SComponent) StartSelfUpdate(userCred mcclient.TokenCredential, cls *SCluster) error { +func (m *SComponent) StartSelfUpdate(ctx context.Context, userCred mcclient.TokenCredential, cls *SCluster) error { settings, err := m.GetSettings() if err != nil { return errors.Wrap(err, "GetSettings") @@ -581,15 +581,15 @@ func (m *SComponent) StartSelfUpdate(userCred mcclient.TokenCredential, cls *SCl } if err := drv.DoUpdate(cls, settings); err != nil { msg := fmt.Sprintf("Start component %s self update error: %v", m.Type, err) - m.SetStatus(userCred, api.ComponentStatusUpdateFail, msg) + m.SetStatus(ctx, userCred, api.ComponentStatusUpdateFail, msg) return errors.Error(msg) } - m.SetStatus(userCred, api.ComponentStatusDeployed, "") + m.SetStatus(ctx, userCred, api.ComponentStatusDeployed, "") return nil } func (m *SComponent) StartComponentUpdateTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error { - if err := m.SetStatus(userCred, api.ComponentStatusUpdating, ""); err != nil { + if err := m.SetStatus(ctx, userCred, api.ComponentStatusUpdating, ""); err != nil { return err } task, err := taskman.TaskManager.NewTask(ctx, "ComponentUpdateTask", m, userCred, data, parentTaskId, "", nil) diff --git a/pkg/kubeserver/models/components_monitor.go b/pkg/kubeserver/models/components_monitor.go index 83d9d70c2..5ea161fef 100644 --- a/pkg/kubeserver/models/components_monitor.go +++ b/pkg/kubeserver/models/components_monitor.go @@ -546,7 +546,7 @@ func (m SMonitorComponentManager) GetHelmValues(cluster *SCluster, setting *api. DefaultDatasourceEnabled: true, }, }, - Image: mi("grafana", "6.7.1"), + Image: mi("grafana", "7.5.17"), Service: &components.Service{ Type: string(v1.ServiceTypeClusterIP), }, diff --git a/pkg/kubeserver/models/container_registries.go b/pkg/kubeserver/models/container_registries.go index c6b33993d..4ffef4606 100644 --- a/pkg/kubeserver/models/container_registries.go +++ b/pkg/kubeserver/models/container_registries.go @@ -75,6 +75,9 @@ func (man *SContainerRegistryManager) ListItemFilter(ctx context.Context, q *sql if input.Type != "" { q = q.Equals("type", input.Type) } + if input.Url != "" { + q = q.Contains("url", input.Url) + } return q, nil } diff --git a/pkg/kubeserver/models/daemonsets.go b/pkg/kubeserver/models/daemonsets.go index 4fd5102fb..b4d6a12cd 100644 --- a/pkg/kubeserver/models/daemonsets.go +++ b/pkg/kubeserver/models/daemonsets.go @@ -170,7 +170,7 @@ func (obj *SDaemonSet) SetStatusByRemoteObject(ctx context.Context, userCred mcc return errors.Wrap(err, "get pod info") } status := getters.GetDaemonsetStatus(podInfo, *ds) - return obj.SetStatus(userCred, status.Status, "update from remote") + return obj.SetStatus(ctx, userCred, status.Status, "update from remote") } func (obj *SDaemonSet) NewRemoteObjectForUpdate(cli *client.ClusterManager, remoteObj interface{}, data jsonutils.JSONObject) (interface{}, error) { diff --git a/pkg/kubeserver/models/deployment.go b/pkg/kubeserver/models/deployment.go index dab98e849..4e2b7d37d 100644 --- a/pkg/kubeserver/models/deployment.go +++ b/pkg/kubeserver/models/deployment.go @@ -149,7 +149,7 @@ func (obj *SDeployment) SetStatusByRemoteObject(ctx context.Context, userCred mc return errors.Wrap(err, "get pod info") } deployStatus := getters.GetDeploymentStatus(podInfo, *deploy) - return obj.SetStatus(userCred, deployStatus.Status, "update from remote") + return obj.SetStatus(ctx, userCred, deployStatus.Status, "update from remote") } func (obj *SDeployment) GetRawReplicaSets(cli *client.ClusterManager, deploy *apps.Deployment) ([]*apps.ReplicaSet, error) { diff --git a/pkg/kubeserver/models/drivers/release/external.go b/pkg/kubeserver/models/drivers/release/external.go index db8479c3b..44d397322 100644 --- a/pkg/kubeserver/models/drivers/release/external.go +++ b/pkg/kubeserver/models/drivers/release/external.go @@ -26,7 +26,7 @@ func (d *externalDriver) GetType() api.RepoType { } func (d *externalDriver) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerCred mcclient.IIdentityProvider, data *api.ReleaseCreateInput) (*api.ReleaseCreateInput, error) { - cluster, err := models.ClusterManager.FetchClusterByIdOrName(userCred, data.ClusterId) + cluster, err := models.ClusterManager.FetchClusterByIdOrName(ctx, userCred, data.ClusterId) if err != nil { return nil, err } diff --git a/pkg/kubeserver/models/fed_api.go b/pkg/kubeserver/models/fed_api.go index 1bcfa83ff..cd708b2c7 100644 --- a/pkg/kubeserver/models/fed_api.go +++ b/pkg/kubeserver/models/fed_api.go @@ -140,7 +140,7 @@ func (a sFedResAPI) StartSyncTask(obj IFedModel, ctx context.Context, userCred m } func (a sFedResAPI) PerformSyncCluster(obj IFedModel, ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) error { - jObj, data, err := obj.ValidateJointCluster(userCred, data) + jObj, data, err := obj.ValidateJointCluster(ctx, userCred, data) if err != nil { return err } diff --git a/pkg/kubeserver/models/federated_joint_namespace_resource.go b/pkg/kubeserver/models/federated_joint_namespace_resource.go index 5855009c1..3a78659a8 100644 --- a/pkg/kubeserver/models/federated_joint_namespace_resource.go +++ b/pkg/kubeserver/models/federated_joint_namespace_resource.go @@ -43,7 +43,7 @@ func (m *SFedNamespaceJointClusterManager) ListItemFilter(ctx context.Context, q return nil, err } if input.FederatedNamespaceId != "" { - fedNsObj, err := GetFedNamespaceManager().FetchByIdOrName(userCred, input.FederatedNamespaceId) + fedNsObj, err := GetFedNamespaceManager().FetchByIdOrName(ctx, userCred, input.FederatedNamespaceId) if err != nil { return nil, errors.Wrap(err, "Get federatednamespace") } diff --git a/pkg/kubeserver/models/federated_joint_resource.go b/pkg/kubeserver/models/federated_joint_resource.go index 82cb8879e..6a3f0b543 100644 --- a/pkg/kubeserver/models/federated_joint_resource.go +++ b/pkg/kubeserver/models/federated_joint_resource.go @@ -207,14 +207,14 @@ func (m *SFedJointClusterManager) ListItemFilter(ctx context.Context, q *sqlchem } if len(input.FederatedResourceId) > 0 { masterMan := m.GetMasterManager() - fedObj, err := masterMan.FetchByIdOrName(userCred, input.FederatedResourceId) + fedObj, err := masterMan.FetchByIdOrName(ctx, userCred, input.FederatedResourceId) if err != nil { return nil, errors.Wrapf(err, "Get %s object", masterMan.Keyword()) } q = q.Equals("federatedresource_id", fedObj.GetId()) } if len(input.ClusterId) > 0 { - clusterObj, err := GetClusterManager().FetchByIdOrName(userCred, input.ClusterId) + clusterObj, err := GetClusterManager().FetchByIdOrName(ctx, userCred, input.ClusterId) if err != nil { return nil, errors.Wrap(err, "Get cluster") } @@ -225,7 +225,7 @@ func (m *SFedJointClusterManager) ListItemFilter(ctx context.Context, q *sqlchem q = q.In("cluster_id", csq) } if len(input.ResourceId) > 0 { - resObj, err := m.GetResourceManager().FetchByIdOrName(userCred, input.ResourceId) + resObj, err := m.GetResourceManager().FetchByIdOrName(ctx, userCred, input.ResourceId) if err != nil { return nil, errors.Wrap(err, "Get resource") } diff --git a/pkg/kubeserver/models/federated_namespace_resource.go b/pkg/kubeserver/models/federated_namespace_resource.go index 1fb17d481..fdf4519f3 100644 --- a/pkg/kubeserver/models/federated_namespace_resource.go +++ b/pkg/kubeserver/models/federated_namespace_resource.go @@ -54,7 +54,7 @@ func (m *SFedNamespaceResourceManager) ValidateCreateData(ctx context.Context, u if fedNsId == "" { return nil, httperrors.NewNotEmptyError("federatednamespace_id is empty") } - nsObj, err := GetFedNamespaceManager().GetFedNamespaceByIdOrName(userCred, fedNsId) + nsObj, err := GetFedNamespaceManager().GetFedNamespaceByIdOrName(ctx, userCred, fedNsId) if err != nil { return nil, err } @@ -69,7 +69,7 @@ func (m *SFedNamespaceResourceManager) ListItemFilter(ctx context.Context, q *sq return nil, err } if input.FederatednamespaceId != "" { - ns, err := GetFedNamespaceManager().GetFedNamespaceByIdOrName(userCred, input.FederatednamespaceId) + ns, err := GetFedNamespaceManager().GetFedNamespaceByIdOrName(ctx, userCred, input.FederatednamespaceId) if err != nil { return nil, err } diff --git a/pkg/kubeserver/models/federated_namespaces.go b/pkg/kubeserver/models/federated_namespaces.go index a8aa319e4..81c883298 100644 --- a/pkg/kubeserver/models/federated_namespaces.go +++ b/pkg/kubeserver/models/federated_namespaces.go @@ -63,8 +63,8 @@ func (m *SFedNamespaceManager) GetFedNamespace(id string) (*SFedNamespace, error return obj.(*SFedNamespace), nil } -func (m *SFedNamespaceManager) GetFedNamespaceByIdOrName(userCred mcclient.IIdentityProvider, id string) (*SFedNamespace, error) { - obj, err := m.FetchByIdOrName(userCred, id) +func (m *SFedNamespaceManager) GetFedNamespaceByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, id string) (*SFedNamespace, error) { + obj, err := m.FetchByIdOrName(ctx, userCred, id) if err != nil { return nil, err } diff --git a/pkg/kubeserver/models/federated_resource.go b/pkg/kubeserver/models/federated_resource.go index c7abc8e70..cc39fac39 100644 --- a/pkg/kubeserver/models/federated_resource.go +++ b/pkg/kubeserver/models/federated_resource.go @@ -33,11 +33,11 @@ type IFedModel interface { GetManager() IFedModelManager GetDetails(baseDetails interface{}, isList bool) interface{} - ValidateJointCluster(userCred mcclient.TokenCredential, data jsonutils.JSONObject) (IFedJointClusterModel, jsonutils.JSONObject, error) + ValidateJointCluster(ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) (IFedJointClusterModel, jsonutils.JSONObject, error) GetJointModelManager() IFedJointClusterManager ValidateAttachCluster(ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) (jsonutils.JSONObject, error) ValidateDetachCluster(ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) (jsonutils.JSONObject, error) - SetStatus(userCred mcclient.TokenCredential, status string, reason string) error + SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error LogPrefix() string } @@ -159,7 +159,7 @@ func (obj *SFedResourceBase) GetClustersCount() (int, error) { func (obj *SFedResourceBase) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) { obj.SStatusDomainLevelResourceBase.PostCreate(ctx, userCred, ownerId, query, data) - obj.SetStatus(userCred, api.FederatedResourceStatusActive, "post create") + obj.SetStatus(ctx, userCred, api.FederatedResourceStatusActive, "post create") } func (obj *SFedResourceBase) GetDetails(base interface{}, isList bool) interface{} { @@ -179,13 +179,13 @@ func (obj *SFedResourceBase) GetDetails(base interface{}, isList bool) interface return out } -func (obj *SFedResourceBase) ValidateJointCluster(userCred mcclient.TokenCredential, data jsonutils.JSONObject) (IFedJointClusterModel, jsonutils.JSONObject, error) { +func (obj *SFedResourceBase) ValidateJointCluster(ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) (IFedJointClusterModel, jsonutils.JSONObject, error) { jointMan := obj.GetJointModelManager() clusterId, _ := data.GetString("cluster_id") if clusterId == "" { return nil, data, httperrors.NewInputParameterError("cluster_id not provided") } - cluster, err := GetClusterManager().GetClusterByIdOrName(userCred, clusterId) + cluster, err := GetClusterManager().GetClusterByIdOrName(ctx, userCred, clusterId) if err != nil { return nil, nil, err } @@ -197,7 +197,7 @@ func (obj *SFedResourceBase) ValidateJointCluster(userCred mcclient.TokenCredent } func (obj *SFedResourceBase) ValidateAttachCluster(ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { - jointModel, data, err := obj.ValidateJointCluster(userCred, data) + jointModel, data, err := obj.ValidateJointCluster(ctx, userCred, data) if err != nil && errors.Cause(err) != sql.ErrNoRows { return data, err } @@ -215,7 +215,7 @@ func (obj *SFedResourceBase) GetK8sObjectMeta() metav1.ObjectMeta { } func (obj *SFedResourceBase) ValidateDetachCluster(ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { - jointModel, input, err := obj.ValidateJointCluster(userCred, data) + jointModel, input, err := obj.ValidateJointCluster(ctx, userCred, data) if err != nil && errors.Cause(err) != sql.ErrNoRows { return input, err } diff --git a/pkg/kubeserver/models/federated_utils.go b/pkg/kubeserver/models/federated_utils.go index 2d7a31688..2febc030e 100644 --- a/pkg/kubeserver/models/federated_utils.go +++ b/pkg/kubeserver/models/federated_utils.go @@ -122,7 +122,7 @@ func ValidateFederatedRoleRef(ctx context.Context, userCred mcclient.TokenCreden } else { return httperrors.NewInputParameterError("Not support role kind %s", roleKind) } - _, err := man.FetchByName(userCred, roleName) + _, err := man.FetchByName(ctx, userCred, roleName) if err != nil { return errors.Wrapf(err, "Not found federated %s role object by name: %s", roleKind, roleName) } diff --git a/pkg/kubeserver/models/machines.go b/pkg/kubeserver/models/machines.go index a3a2c846d..0468f2978 100644 --- a/pkg/kubeserver/models/machines.go +++ b/pkg/kubeserver/models/machines.go @@ -67,8 +67,8 @@ type SMachine struct { K8sNodeConfig jsonutils.JSONObject `nullable:"true" create:"optional" update:"admin" list:"user"` } -func (man *SMachineManager) GetCluster(userCred mcclient.TokenCredential, clusterId string) (*SCluster, error) { - obj, err := ClusterManager.FetchByIdOrName(userCred, clusterId) +func (man *SMachineManager) GetCluster(ctx context.Context, userCred mcclient.TokenCredential, clusterId string) (*SCluster, error) { + obj, err := ClusterManager.FetchByIdOrName(ctx, userCred, clusterId) if err != nil { return nil, err } @@ -117,8 +117,8 @@ func (man *SMachineManager) GetMachines(clusterId string) ([]manager.IMachine, e return ret, nil } -func (man *SMachineManager) IsMachineExists(userCred mcclient.TokenCredential, id string) (manager.IMachine, bool, error) { - obj, err := man.FetchByIdOrName(userCred, id) +func (man *SMachineManager) IsMachineExists(ctx context.Context, userCred mcclient.TokenCredential, id string) (manager.IMachine, bool, error) { + obj, err := man.FetchByIdOrName(ctx, userCred, id) if err != nil { if err == sql.ErrNoRows { return nil, false, nil @@ -202,7 +202,7 @@ func (m *SMachine) GetCreateInput(ctx context.Context, userCred mcclient.TokenCr } func (man *SMachineManager) CreateMachine(ctx context.Context, userCred mcclient.TokenCredential, data *api.CreateMachineData) (manager.IMachine, error) { - cluster, err := GetClusterManager().GetClusterByIdOrName(userCred, data.ClusterId) + cluster, err := GetClusterManager().GetClusterByIdOrName(ctx, userCred, data.ClusterId) if err != nil { return nil, errors.Wrapf(err, "Get cluster by id %s", data.ClusterId) } @@ -277,8 +277,8 @@ func (man *SMachineManager) FetchMachineById(id string) (*SMachine, error) { return obj.(*SMachine), nil } -func (man *SMachineManager) FetchMachineByIdOrName(userCred mcclient.TokenCredential, id string) (manager.IMachine, error) { - m, err := man.FetchByIdOrName(userCred, id) +func (man *SMachineManager) FetchMachineByIdOrName(ctx context.Context, userCred mcclient.TokenCredential, id string) (manager.IMachine, error) { + m, err := man.FetchByIdOrName(ctx, userCred, id) if err != nil { if err == sql.ErrNoRows { return nil, httperrors.NewNotFoundError("Machine %s", id) @@ -319,7 +319,7 @@ func (man *SMachineManager) ValidateCreateData(ctx context.Context, userCred mcc if len(clusterId) == 0 { return nil, httperrors.NewInputParameterError("Cluster must specified") } - cluster, err := man.GetCluster(userCred, clusterId) + cluster, err := man.GetCluster(ctx, userCred, clusterId) if err != nil { return nil, httperrors.NewNotFoundError("Cluster %s not found", clusterId) } @@ -375,7 +375,7 @@ func (m *SMachine) PostCreate(ctx context.Context, userCred mcclient.TokenCreden } func (m *SMachine) StartMachineCreateTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error { - if err := m.SetStatus(userCred, api.MachineStatusCreating, ""); err != nil { + if err := m.SetStatus(ctx, userCred, api.MachineStatusCreating, ""); err != nil { return errors.Wrapf(err, "set status to %s", api.MachineStatusCreating) } task, err := taskman.TaskManager.NewTask(ctx, "MachineCreateTask", m, userCred, data, parentTaskId, "", nil) @@ -437,7 +437,7 @@ func (m *SMachine) AllowPerformRecreate(ctx context.Context, userCred mcclient.T func (m *SMachine) PerformRecreate(ctx context.Context, userCred mcclient.TokenCredential, query, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { if m.Status != api.MachineStatusCreateFail { - return nil, httperrors.NewForbiddenError("Status is %s", m.SetStatus) + return nil, httperrors.NewForbiddenError("Status is %s", m.Status) } if err := m.StartMachineCreateTask(ctx, userCred, data.(*jsonutils.JSONDict), ""); err != nil { return nil, err @@ -454,7 +454,7 @@ func (m *SMachine) ValidatePrepareCondition(ctx context.Context, userCred mcclie } func (m *SMachine) StartPrepareTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error { - if err := m.SetStatus(userCred, api.MachineStatusPrepare, ""); err != nil { + if err := m.SetStatus(ctx, userCred, api.MachineStatusPrepare, ""); err != nil { return err } task, err := taskman.TaskManager.NewTask(ctx, "MachinePrepareTask", m, userCred, data, parentTaskId, "", nil) @@ -523,7 +523,7 @@ func (m *SMachine) PerformTerminate(ctx context.Context, userCred mcclient.Token // StartTerminateTask invoke by MachineBatchDeleteTask func (m *SMachine) StartTerminateTask(ctx context.Context, userCred mcclient.TokenCredential, data *jsonutils.JSONDict, parentTaskId string) error { - if err := m.SetStatus(userCred, api.MachineStatusTerminating, ""); err != nil { + if err := m.SetStatus(ctx, userCred, api.MachineStatusTerminating, ""); err != nil { return err } task, err := taskman.TaskManager.NewTask(ctx, "MachineTerminateTask", m, userCred, data, parentTaskId, "", nil) @@ -623,11 +623,11 @@ func WaitMachineRunning(machine *SMachine) error { }) } -func WaitMachineDelete(machine *SMachine) error { +func WaitMachineDelete(ctx context.Context, machine *SMachine) error { interval := 30 * time.Second timeout := 15 * time.Minute return wait.Poll(interval, timeout, func() (bool, error) { - m, exists, err := MachineManager.IsMachineExists(nil, machine.GetId()) + m, exists, err := MachineManager.IsMachineExists(ctx, nil, machine.GetId()) if err != nil { return false, err } diff --git a/pkg/kubeserver/models/manager/manager.go b/pkg/kubeserver/models/manager/manager.go index 87db20516..3ae4ca1dd 100644 --- a/pkg/kubeserver/models/manager/manager.go +++ b/pkg/kubeserver/models/manager/manager.go @@ -17,7 +17,7 @@ type ICluster interface { GetName() string GetId() string RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error - SetStatus(userCred mcclient.TokenCredential, status string, reason string) error + SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error //SetKubeconfig(kubeconfig string) error GetAPIServer() (string, error) GetKubeconfig() (string, error) @@ -36,8 +36,8 @@ type IK8sResourceManager interface { } type IClusterManager interface { - IsClusterExists(userCred mcclient.TokenCredential, id string) (ICluster, bool, error) - FetchClusterByIdOrName(userCred mcclient.TokenCredential, id string) (ICluster, error) + IsClusterExists(ctx context.Context, userCred mcclient.TokenCredential, id string) (ICluster, bool, error) + FetchClusterByIdOrName(ctx context.Context, userCred mcclient.TokenCredential, id string) (ICluster, error) CreateCluster(ctx context.Context, userCred mcclient.TokenCredential, data api.ClusterCreateInput) (ICluster, error) //GetNonSystemClusters() ([]ICluster, error) GetRunningClusters() ([]ICluster, error) @@ -54,7 +54,7 @@ type IMachine interface { GetEIP() (string, error) RealDelete(ctx context.Context, userCred mcclient.TokenCredential) error GetStatus() string - SetStatus(userCred mcclient.TokenCredential, status string, reason string) error + SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error SetPrivateIP(address string) error GetRole() string SyncInfoFromCloud(ctx context.Context, s *mcclient.ClientSession) error @@ -62,9 +62,9 @@ type IMachine interface { } type IMachineManager interface { - FetchMachineByIdOrName(userCred mcclient.TokenCredential, id string) (IMachine, error) + FetchMachineByIdOrName(ctx context.Context, userCred mcclient.TokenCredential, id string) (IMachine, error) GetMachines(clusterId string) ([]IMachine, error) - IsMachineExists(userCred mcclient.TokenCredential, id string) (IMachine, bool, error) + IsMachineExists(ctx context.Context, userCred mcclient.TokenCredential, id string) (IMachine, bool, error) CreateMachine(ctx context.Context, userCred mcclient.TokenCredential, data *api.CreateMachineData) (IMachine, error) } diff --git a/pkg/kubeserver/models/namespaceresource.go b/pkg/kubeserver/models/namespaceresource.go index 9a4765924..68842242a 100644 --- a/pkg/kubeserver/models/namespaceresource.go +++ b/pkg/kubeserver/models/namespaceresource.go @@ -214,15 +214,17 @@ func (m *SNamespaceResourceBaseManager) GetGCQuery() *sqlchemy.SQuery { } func (m *SNamespaceResourceBaseManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, input *api.NamespaceResourceListInput) (*sqlchemy.SQuery, error) { + log.Infof("=====namespace list input: %s", jsonutils.Marshal(input)) q, err := m.SClusterResourceBaseManager.ListItemFilter(ctx, q, userCred, &input.ClusterResourceListInput) if err != nil { - return nil, err + return nil, errors.Wrapf(err, "SClusterResourceBaseManager.ListItemFilter with input: %s", jsonutils.Marshal(input.ClusterResourceListInput)) } if input.Namespace != "" { ns, err := GetNamespaceManager().GetByIdOrName(userCred, input.Cluster, input.Namespace) if err != nil { - return nil, err + return nil, errors.Wrapf(err, "Not found namespace %s by cluster %s", input.Namespace, input.Cluster) } + log.Infof("=====get ns %s of id: %s", ns.GetName(), ns.GetId()) q = q.Equals("namespace_id", ns.GetId()) } return q, nil diff --git a/pkg/kubeserver/models/release.go b/pkg/kubeserver/models/release.go index f746bc251..e04e3499b 100644 --- a/pkg/kubeserver/models/release.go +++ b/pkg/kubeserver/models/release.go @@ -135,7 +135,7 @@ func (m *SReleaseManager) ValidateCreateData(ctx context.Context, userCred mccli if chart == "" { return nil, httperrors.NewNotEmptyError("chart must provided") } - repoObj, err := db.FetchByIdOrName(RepoManager, userCred, repo) + repoObj, err := db.FetchByIdOrName(ctx, RepoManager, userCred, repo) if err != nil { return nil, NewCheckIdOrNameError("repo", repo, err) } diff --git a/pkg/kubeserver/models/repos.go b/pkg/kubeserver/models/repos.go index 481662c69..d0fcdd9cc 100644 --- a/pkg/kubeserver/models/repos.go +++ b/pkg/kubeserver/models/repos.go @@ -97,6 +97,9 @@ func (man *SRepoManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, if input.Type != "" { q = q.Equals("type", input.Type) } + if input.Url != "" { + q = q.Equals("url", input.Url) + } return q, nil } @@ -174,20 +177,20 @@ func (man *SRepoManager) ValidateCreateData(ctx context.Context, userCred mcclie } data, err = drv.ValidateCreateData(ctx, userCred, ownerId, query, data) if err != nil { - return nil, err + return nil, errors.Wrapf(err, "driver %s ValidateCreateData", drv.GetBackend()) } entry := man.ToEntry(data.Name, data.Url, data.Username, data.Password) cli, err := man.GetClient(ownerId.GetProjectDomainId()) if err != nil { - return nil, err + return nil, errors.Wrapf(err, "GetClient by domainId: %s", ownerId.GetProjectDomainId()) } if err := cli.Add(entry); err != nil { log.Errorf("Add helm entry %#v error: %v", entry, err) if errors.Cause(err) == helm.ErrRepoAlreadyExists { return nil, httperrors.NewDuplicateResourceError("Backend helm repo name %s already exists, please specify a different name", data.Name) } - return nil, httperrors.NewNotAcceptableError("Add helm repo %s failed", entry.URL) + return nil, httperrors.NewNotAcceptableError("Add helm repo %s failed: %v", entry.URL, err) } return data, nil @@ -201,8 +204,8 @@ func (man *SRepoManager) FetchRepoById(id string) (*SRepo, error) { return repo.(*SRepo), nil } -func (man *SRepoManager) FetchRepoByIdOrName(userCred mcclient.IIdentityProvider, ident string) (*SRepo, error) { - repo, err := man.FetchByIdOrName(userCred, ident) +func (man *SRepoManager) FetchRepoByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, ident string) (*SRepo, error) { + repo, err := man.FetchByIdOrName(ctx, userCred, ident) if err != nil { return nil, err } diff --git a/pkg/kubeserver/models/roleref.go b/pkg/kubeserver/models/roleref.go index a3730cf71..734ad45ea 100644 --- a/pkg/kubeserver/models/roleref.go +++ b/pkg/kubeserver/models/roleref.go @@ -1,6 +1,8 @@ package models import ( + "context" + "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" @@ -20,7 +22,7 @@ type IRoleBaseManager interface { GetRoleKind() string } -func (m *SRoleRefResourceBaseManager) ValidateRoleRef(roleObjManager IRoleBaseManager, userCred mcclient.TokenCredential, ref *api.RoleRef) error { +func (m *SRoleRefResourceBaseManager) ValidateRoleRef(ctx context.Context, roleObjManager IRoleBaseManager, userCred mcclient.TokenCredential, ref *api.RoleRef) error { if ref == nil { return httperrors.NewNotEmptyError("roleRef must provided") } @@ -28,7 +30,7 @@ func (m *SRoleRefResourceBaseManager) ValidateRoleRef(roleObjManager IRoleBaseMa if ref.Kind != kind { return httperrors.NewNotAcceptableError("role reference kind must %s, input %s", kind, ref.Kind) } - refObj, err := roleObjManager.FetchByIdOrName(userCred, ref.Name) + refObj, err := roleObjManager.FetchByIdOrName(ctx, userCred, ref.Name) if err != nil { return err } diff --git a/pkg/kubeserver/models/statefulsets.go b/pkg/kubeserver/models/statefulsets.go index 68e0d015d..8778b823c 100644 --- a/pkg/kubeserver/models/statefulsets.go +++ b/pkg/kubeserver/models/statefulsets.go @@ -194,5 +194,5 @@ func (obj *SStatefulSet) SetStatusByRemoteObject(ctx context.Context, userCred m return errors.Wrap(err, "get pod info") } statefulSetStatus := *getters.GetStatefulSetStatus(podInfo, *ss) - return obj.SetStatus(userCred, statefulSetStatus.Status, "update from remote") + return obj.SetStatus(ctx, userCred, statefulSetStatus.Status, "update from remote") } diff --git a/pkg/kubeserver/resources/chart/list.go b/pkg/kubeserver/resources/chart/list.go index fa82ef25b..d58a5d03c 100644 --- a/pkg/kubeserver/resources/chart/list.go +++ b/pkg/kubeserver/resources/chart/list.go @@ -1,6 +1,7 @@ package chart import ( + "context" "fmt" "regexp" @@ -39,13 +40,13 @@ func (l *ChartList) Append(obj interface{}) { l.Charts = append(l.Charts, ToChart(l.Repo, obj.(*api.ChartResult))) } -func (man *SChartManager) List(userCred mcclient.TokenCredential, query *api.ChartListInput, dsQuery *dataselect.DataSelectQuery) (common.ListResource, error) { +func (man *SChartManager) List(ctx context.Context, userCred mcclient.TokenCredential, query *api.ChartListInput, dsQuery *dataselect.DataSelectQuery) (common.ListResource, error) { cli := helm.NewChartClient(options.Options.HelmDataDir) repo := query.Repo if repo == "" { return nil, httperrors.NewNotEmptyError("repo must provided") } - repoObj, err := models.RepoManager.FetchByIdOrName(userCred, repo) + repoObj, err := models.RepoManager.FetchByIdOrName(ctx, userCred, repo) if err != nil { return nil, err } diff --git a/pkg/kubeserver/resources/release/resources.go b/pkg/kubeserver/resources/release/resources.go index c76c152a7..7f18fe752 100644 --- a/pkg/kubeserver/resources/release/resources.go +++ b/pkg/kubeserver/resources/release/resources.go @@ -43,7 +43,7 @@ func GetReleaseResources( } namespace := info.Namespace metaObj := newObj.(metav1.Object) - modelObj, err := model.NewK8SModelObjectByName(man, clusterMan, namespace, metaObj.GetName()) + modelObj, err := model.NewK8SModelObjectByName(ctx, man, clusterMan, namespace, metaObj.GetName()) if err != nil { return err } diff --git a/pkg/kubeserver/tasks/cluster_create_task.go b/pkg/kubeserver/tasks/cluster_create_task.go index c421473de..7fc80cae6 100644 --- a/pkg/kubeserver/tasks/cluster_create_task.go +++ b/pkg/kubeserver/tasks/cluster_create_task.go @@ -142,7 +142,7 @@ func (t *ClusterCreateTask) onError(ctx context.Context, cluster db.IStandaloneM func (t *ClusterCreateTask) SetFailed(ctx context.Context, obj db.IStandaloneModel, reason jsonutils.JSONObject) { cluster := obj.(*models.SCluster) - cluster.SetStatus(t.UserCred, api.ClusterStatusCreateFail, reason.String()) + cluster.SetStatus(ctx, t.UserCred, api.ClusterStatusCreateFail, reason.String()) t.STask.SetStageFailed(ctx, reason) logclient.LogWithStartable(t, obj, logclient.ActionClusterCreate, reason, t.UserCred, false) } diff --git a/pkg/kubeserver/tasks/cluster_delete_machines_task.go b/pkg/kubeserver/tasks/cluster_delete_machines_task.go index be72a9fd7..4d2d29214 100644 --- a/pkg/kubeserver/tasks/cluster_delete_machines_task.go +++ b/pkg/kubeserver/tasks/cluster_delete_machines_task.go @@ -21,7 +21,7 @@ func init() { taskman.RegisterTask(ClusterDeleteMachinesTask{}) } -func (t *ClusterDeleteMachinesTask) getDeleteMachines() ([]manager.IMachine, error) { +func (t *ClusterDeleteMachinesTask) getDeleteMachines(ctx context.Context) ([]manager.IMachine, error) { machinesData, err := t.GetParams().GetArray("machines") if err != nil { return nil, err @@ -32,7 +32,7 @@ func (t *ClusterDeleteMachinesTask) getDeleteMachines() ([]manager.IMachine, err if err != nil { return nil, err } - machineObj, err := manager.MachineManager().FetchMachineByIdOrName(t.UserCred, id) + machineObj, err := manager.MachineManager().FetchMachineByIdOrName(ctx, t.UserCred, id) if err != nil { return nil, err } @@ -47,7 +47,7 @@ func (t *ClusterDeleteMachinesTask) IsFromClusterDeleteTask(cluster *models.SClu func (t *ClusterDeleteMachinesTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { cluster := obj.(*models.SCluster) - ms, err := t.getDeleteMachines() + ms, err := t.getDeleteMachines(ctx) if err != nil { t.OnError(ctx, cluster, err.Error()) return @@ -68,7 +68,7 @@ func (t *ClusterDeleteMachinesTask) OnInit(ctx context.Context, obj db.IStandalo } func (t *ClusterDeleteMachinesTask) OnClusterNodeRemoved(ctx context.Context, cluster *models.SCluster, data jsonutils.JSONObject) { - ms, err := t.getDeleteMachines() + ms, err := t.getDeleteMachines(ctx) if err != nil { t.OnError(ctx, cluster, err.Error()) return @@ -107,7 +107,7 @@ func (t *ClusterDeleteMachinesTask) OnSyncStatusFailed(ctx context.Context, clus } func (t *ClusterDeleteMachinesTask) OnError(ctx context.Context, cluster *models.SCluster, err string) { - cluster.SetStatus(t.UserCred, api.ClusterStatusError, err) + cluster.SetStatus(ctx, t.UserCred, api.ClusterStatusError, err) t.SetStageFailed(ctx, jsonutils.NewString(err)) logclient.LogWithStartable(t, cluster, logclient.ActionClusterDeleteMachine, err, t.UserCred, false) } diff --git a/pkg/kubeserver/tasks/cluster_delete_task.go b/pkg/kubeserver/tasks/cluster_delete_task.go index 1afc094f6..7b5867956 100644 --- a/pkg/kubeserver/tasks/cluster_delete_task.go +++ b/pkg/kubeserver/tasks/cluster_delete_task.go @@ -62,7 +62,7 @@ func (t *ClusterDeleteTask) onError(ctx context.Context, cluster db.IStandaloneM func (t *ClusterDeleteTask) SetFailed(ctx context.Context, obj db.IStandaloneModel, reason jsonutils.JSONObject) { cluster := obj.(*models.SCluster) - cluster.SetStatus(t.UserCred, api.ClusterStatusDeleteFail, "") + cluster.SetStatus(ctx, t.UserCred, api.ClusterStatusDeleteFail, "") t.STask.SetStageFailed(ctx, reason) logclient.LogWithStartable(t, obj, logclient.ActionClusterDelete, reason, t.UserCred, false) } diff --git a/pkg/kubeserver/tasks/cluster_deploy_machines_task.go b/pkg/kubeserver/tasks/cluster_deploy_machines_task.go index 7ac2d82bb..9f9e69455 100644 --- a/pkg/kubeserver/tasks/cluster_deploy_machines_task.go +++ b/pkg/kubeserver/tasks/cluster_deploy_machines_task.go @@ -88,7 +88,7 @@ func (t *ClusterDeployMachinesTask) OnSyncCompleteFailed(ctx context.Context, cl func (t *ClusterDeployMachinesTask) SetFailed(ctx context.Context, obj db.IStandaloneModel, reason jsonutils.JSONObject) { cluster := obj.(*models.SCluster) - cluster.SetStatus(t.UserCred, api.ClusterStatusDeployingFail, reason.String()) + cluster.SetStatus(ctx, t.UserCred, api.ClusterStatusDeployingFail, reason.String()) t.STask.SetStageFailed(ctx, reason) logclient.LogWithStartable(t, obj, logclient.ActionClusterDeploy, reason, t.UserCred, false) } diff --git a/pkg/kubeserver/tasks/cluster_resource_sync_task.go b/pkg/kubeserver/tasks/cluster_resource_sync_task.go index 288070145..722ca08d7 100644 --- a/pkg/kubeserver/tasks/cluster_resource_sync_task.go +++ b/pkg/kubeserver/tasks/cluster_resource_sync_task.go @@ -23,7 +23,7 @@ type ClusterResourceSyncTask struct { func (t *ClusterResourceSyncTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { resObj, _ := t.getModelManager(obj) - resObj.SetStatus(t.UserCred, api.ClusterResourceStatusSyncing, "sync resource") + resObj.SetStatus(ctx, t.UserCred, api.ClusterResourceStatusSyncing, "sync resource") t.SetStage("OnSyncComplete", nil) taskman.LocalTaskRun(t, func() (jsonutils.JSONObject, error) { cAPI := models.GetClusterResAPI() diff --git a/pkg/kubeserver/tasks/cluster_resource_task.go b/pkg/kubeserver/tasks/cluster_resource_task.go index 594737977..e7f696a5f 100644 --- a/pkg/kubeserver/tasks/cluster_resource_task.go +++ b/pkg/kubeserver/tasks/cluster_resource_task.go @@ -40,7 +40,7 @@ type ClusterResourceCreateTask struct { func (t *ClusterResourceCreateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { resObj, resMan := t.getModelManager(obj) - resObj.SetStatus(t.UserCred, api.ClusterResourceStatusCreating, "create resource") + resObj.SetStatus(ctx, t.UserCred, api.ClusterResourceStatusCreating, "create resource") t.SetStage("OnCreateComplete", nil) taskman.LocalTaskRun(t, func() (jsonutils.JSONObject, error) { obj, err := models.CreateRemoteObject(ctx, t.UserCred, resMan, resObj, t.GetParams()) @@ -81,7 +81,7 @@ type ClusterResourceUpdateTask struct { func (t *ClusterResourceUpdateTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { resObj, _ := t.getModelManager(obj) - resObj.SetStatus(t.UserCred, api.ClusterResourceStatusUpdating, "update resource") + resObj.SetStatus(ctx, t.UserCred, api.ClusterResourceStatusUpdating, "update resource") t.SetStage("OnUpdateComplete", nil) taskman.LocalTaskRun(t, func() (jsonutils.JSONObject, error) { obj, err := models.UpdateRemoteObject(ctx, t.UserCred, resObj, t.GetParams()) @@ -109,7 +109,7 @@ type ClusterResourceDeleteTask struct { func (t *ClusterResourceDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { resObj, resMan := t.getModelManager(obj) - resObj.SetStatus(t.UserCred, api.ClusterResourceStatusDeleting, "delete resource") + resObj.SetStatus(ctx, t.UserCred, api.ClusterResourceStatusDeleting, "delete resource") t.SetStage("OnDeleteComplete", nil) taskman.LocalTaskRun(t, func() (jsonutils.JSONObject, error) { err := models.DeleteRemoteObject(ctx, t.UserCred, resMan, resObj, t.Params) diff --git a/pkg/kubeserver/tasks/cluster_sync_task.go b/pkg/kubeserver/tasks/cluster_sync_task.go index bb735c75e..4067e8f35 100644 --- a/pkg/kubeserver/tasks/cluster_sync_task.go +++ b/pkg/kubeserver/tasks/cluster_sync_task.go @@ -36,7 +36,7 @@ func (t *ClusterSyncTask) OnInit(ctx context.Context, obj db.IStandaloneModel, d if err := client.GetClustersManager().UpdateClient(cluster, true); err != nil { return nil, errors.Wrap(err, "update cluster to client manager") } - if err := cluster.SetStatus(t.GetUserCred(), api.ClusterStatusRunning, "by syncing"); err != nil { + if err := cluster.SetStatus(ctx, t.GetUserCred(), api.ClusterStatusRunning, "by syncing"); err != nil { return nil, errors.Wrap(err, "change cluster status to running") } } else { diff --git a/pkg/kubeserver/tasks/cluster_syncstatus_task.go b/pkg/kubeserver/tasks/cluster_syncstatus_task.go index 811247856..24bacfab3 100644 --- a/pkg/kubeserver/tasks/cluster_syncstatus_task.go +++ b/pkg/kubeserver/tasks/cluster_syncstatus_task.go @@ -2,6 +2,9 @@ package tasks import ( "context" + "time" + + "k8s.io/apimachinery/pkg/version" "yunion.io/x/jsonutils" "yunion.io/x/log" @@ -22,6 +25,18 @@ type ClusterSyncstatusTask struct { taskman.STask } +func getClusterVersion(cluster *models.SCluster) (*version.Info, error) { + k8sCli, err := cluster.GetK8sClient() + if err != nil { + return nil, errors.Wrap(err, "GetK8sClient") + } + info, err := k8sCli.Discovery().ServerVersion() + if err != nil { + return nil, errors.Wrap(err, "Discovery server version") + } + return info, nil +} + func (t *ClusterSyncstatusTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { cluster := obj.(*models.SCluster) mCnt, err := cluster.GetMachinesCount() @@ -30,27 +45,30 @@ func (t *ClusterSyncstatusTask) OnInit(ctx context.Context, obj db.IStandaloneMo return } if mCnt == 0 && cluster.GetDriver().NeedCreateMachines() { - cluster.SetStatus(t.UserCred, api.ClusterStatusInit, "") + cluster.SetStatus(ctx, t.UserCred, api.ClusterStatusInit, "") t.SetStageComplete(ctx, nil) return } t.SetStage("OnSyncStatus", nil) taskman.LocalTaskRun(t, func() (jsonutils.JSONObject, error) { - k8sCli, err := cluster.GetK8sClient() - if err != nil { - return nil, err - } - info, err := k8sCli.Discovery().ServerVersion() - if err != nil { - return nil, err - } - log.Infof("Get %s cluster k8s version: %#v", cluster.GetName(), info) - if err := cluster.SetStatus(t.UserCred, api.ClusterStatusRunning, ""); err != nil { - return nil, errors.Wrap(err, "set status to running") + var err error + for i := 0; i < 30; i++ { + info, vErr := getClusterVersion(cluster) + if vErr != nil { + err = vErr + log.Warningf("check cluster %q version: %v", cluster.GetName(), vErr) + time.Sleep(10 * time.Second) + } else { + log.Infof("Get %s cluster k8s version: %#v", cluster.GetName(), info) + if err := cluster.SetStatus(ctx, t.UserCred, api.ClusterStatusRunning, ""); err != nil { + return nil, errors.Wrap(err, "set status to running") + } + cluster.SetK8sVersion(ctx, info.String()) + return nil, nil + } } - cluster.SetK8sVersion(ctx, info.String()) - return nil, nil + return nil, err }) } @@ -70,6 +88,6 @@ func (t *ClusterSyncstatusTask) onError(ctx context.Context, cluster db.IStandal func (t *ClusterSyncstatusTask) SetFailed(ctx context.Context, obj db.IStandaloneModel, reason jsonutils.JSONObject) { cluster := obj.(*models.SCluster) - cluster.SetStatus(t.UserCred, api.ClusterStatusUnknown, "") + cluster.SetStatus(ctx, t.UserCred, api.ClusterStatusUnknown, "") t.STask.SetStageFailed(ctx, reason) } diff --git a/pkg/kubeserver/tasks/common.go b/pkg/kubeserver/tasks/common.go index fa60cd94d..de9f4077d 100644 --- a/pkg/kubeserver/tasks/common.go +++ b/pkg/kubeserver/tasks/common.go @@ -12,12 +12,12 @@ import ( type IStatusStandaloneModel interface { db.IStandaloneModel - SetStatus(userCred mcclient.TokenCredential, status string, reason string) error + SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error } func SetObjectTaskFailed(ctx context.Context, task taskman.ITask, obj IStatusStandaloneModel, status, reason string) { if len(status) > 0 { - obj.SetStatus(task.GetUserCred(), status, reason) + obj.SetStatus(ctx, task.GetUserCred(), status, reason) } task.SetStageFailed(ctx, jsonutils.NewString(reason)) } diff --git a/pkg/kubeserver/tasks/component_delete_task.go b/pkg/kubeserver/tasks/component_delete_task.go index 66c8de479..fc3d6d25f 100644 --- a/pkg/kubeserver/tasks/component_delete_task.go +++ b/pkg/kubeserver/tasks/component_delete_task.go @@ -40,6 +40,6 @@ func (t *ComponentDeleteTask) OnUndeployCompleteFailed(ctx context.Context, obj func (t *ComponentDeleteTask) onError(ctx context.Context, obj *models.SComponent, err error) { reason := err.Error() - obj.SetStatus(t.UserCred, api.ComponentStatusDeleteFail, reason) + obj.SetStatus(ctx, t.UserCred, api.ComponentStatusDeleteFail, reason) t.STask.SetStageFailed(ctx, jsonutils.NewString(err.Error())) } diff --git a/pkg/kubeserver/tasks/component_deploy_task.go b/pkg/kubeserver/tasks/component_deploy_task.go index 1097f0cd7..a9996e971 100644 --- a/pkg/kubeserver/tasks/component_deploy_task.go +++ b/pkg/kubeserver/tasks/component_deploy_task.go @@ -3,6 +3,7 @@ package tasks import ( "context" "fmt" + "yunion.io/x/kubecomps/pkg/kubeserver/models" "yunion.io/x/jsonutils" @@ -45,7 +46,7 @@ func (t *ComponentDeployTask) OnInit(ctx context.Context, obj db.IStandaloneMode } func (t *ComponentDeployTask) OnDeployComplete(ctx context.Context, obj *models.SComponent, data jsonutils.JSONObject) { - obj.SetStatus(t.UserCred, api.ComponentStatusDeployed, "") + obj.SetStatus(ctx, t.UserCred, api.ComponentStatusDeployed, "") t.SetStageComplete(ctx, nil) } @@ -55,6 +56,6 @@ func (t *ComponentDeployTask) OnDeployCompleteFailed(ctx context.Context, obj *m func (t *ComponentDeployTask) onError(ctx context.Context, obj *models.SComponent, err error) { reason := err.Error() - obj.SetStatus(t.UserCred, api.ComponentStatusDeployFail, reason) + obj.SetStatus(ctx, t.UserCred, api.ComponentStatusDeployFail, reason) t.STask.SetStageFailed(ctx, jsonutils.NewString(err.Error())) } diff --git a/pkg/kubeserver/tasks/component_undeploy_task.go b/pkg/kubeserver/tasks/component_undeploy_task.go index a0ef075c2..f1872aa4f 100644 --- a/pkg/kubeserver/tasks/component_undeploy_task.go +++ b/pkg/kubeserver/tasks/component_undeploy_task.go @@ -2,13 +2,13 @@ package tasks import ( "context" - "yunion.io/x/kubecomps/pkg/kubeserver/models" "yunion.io/x/jsonutils" "yunion.io/x/onecloud/pkg/cloudcommon/db" "yunion.io/x/onecloud/pkg/cloudcommon/db/taskman" "yunion.io/x/kubecomps/pkg/kubeserver/api" + "yunion.io/x/kubecomps/pkg/kubeserver/models" ) func init() { @@ -40,13 +40,13 @@ func (t *ComponentUndeployTask) OnInit(ctx context.Context, obj db.IStandaloneMo t.onError(ctx, comp, err) return } - comp.SetStatus(t.UserCred, api.ComponentStatusInit, "") + comp.SetStatus(ctx, t.UserCred, api.ComponentStatusInit, "") comp.SetEnabled(false) t.SetStageComplete(ctx, nil) } func (t *ComponentUndeployTask) onError(ctx context.Context, obj *models.SComponent, err error) { reason := err.Error() - obj.SetStatus(t.UserCred, api.ComponentStatusUndeployFail, reason) + obj.SetStatus(ctx, t.UserCred, api.ComponentStatusUndeployFail, reason) t.STask.SetStageFailed(ctx, jsonutils.NewString(err.Error())) } diff --git a/pkg/kubeserver/tasks/component_update_task.go b/pkg/kubeserver/tasks/component_update_task.go index 05375dd71..b13e30c80 100644 --- a/pkg/kubeserver/tasks/component_update_task.go +++ b/pkg/kubeserver/tasks/component_update_task.go @@ -45,7 +45,7 @@ func (t *ComponentUpdateTask) OnInit(ctx context.Context, obj db.IStandaloneMode } func (t *ComponentUpdateTask) OnUpdateComplete(ctx context.Context, obj *models.SComponent, data jsonutils.JSONObject) { - obj.SetStatus(t.UserCred, api.ComponentStatusDeployed, "") + obj.SetStatus(ctx, t.UserCred, api.ComponentStatusDeployed, "") t.SetStageComplete(ctx, nil) } @@ -55,6 +55,6 @@ func (t *ComponentUpdateTask) OnUpdateCompleteFailed(ctx context.Context, obj *m func (t *ComponentUpdateTask) onError(ctx context.Context, obj *models.SComponent, err error) { reason := err.Error() - obj.SetStatus(t.UserCred, api.ComponentStatusUpdateFail, reason) + obj.SetStatus(ctx, t.UserCred, api.ComponentStatusUpdateFail, reason) t.STask.SetStageFailed(ctx, jsonutils.NewString(err.Error())) } diff --git a/pkg/kubeserver/tasks/fed_resource_task.go b/pkg/kubeserver/tasks/fed_resource_task.go index 253b23344..a05262083 100644 --- a/pkg/kubeserver/tasks/fed_resource_task.go +++ b/pkg/kubeserver/tasks/fed_resource_task.go @@ -63,7 +63,7 @@ func (t *FedResourceSyncTask) OnInit(ctx context.Context, obj db.IStandaloneMode t.SetStage("OnSyncComplete", nil) fedApi := models.GetFedResAPI() fedObj := obj.(models.IFedModel) - fedObj.SetStatus(t.GetUserCred(), api.FederatedResourceStatusSyncing, "start syncing") + fedObj.SetStatus(ctx, t.GetUserCred(), api.FederatedResourceStatusSyncing, "start syncing") taskman.LocalTaskRun(t, func() (jsonutils.JSONObject, error) { clusters, err := fedApi.GetAttachedClusters(fedObj) if err != nil { @@ -82,7 +82,7 @@ func (t *FedResourceSyncTask) OnInit(ctx context.Context, obj db.IStandaloneMode } func (t *FedResourceSyncTask) OnSyncComplete(ctx context.Context, obj models.IFedModel, data jsonutils.JSONObject) { - obj.SetStatus(t.GetUserCred(), api.FederatedResourceStatusActive, "sync complete") + obj.SetStatus(ctx, t.GetUserCred(), api.FederatedResourceStatusActive, "sync complete") t.SetStageComplete(ctx, nil) logclient.LogWithStartable(t, obj, logclient.ActionResourceSync, nil, t.GetUserCred(), true) } diff --git a/pkg/kubeserver/tasks/machine_create_task.go b/pkg/kubeserver/tasks/machine_create_task.go index 544bc27fd..427483dd4 100644 --- a/pkg/kubeserver/tasks/machine_create_task.go +++ b/pkg/kubeserver/tasks/machine_create_task.go @@ -51,7 +51,7 @@ func (t *MachineCreateTask) OnMachinePreparedFailed(ctx context.Context, obj db. } func (t *MachineCreateTask) OnError(ctx context.Context, machine *models.SMachine, err error) { - machine.SetStatus(t.UserCred, api.MachineStatusCreateFail, err.Error()) + machine.SetStatus(ctx, t.UserCred, api.MachineStatusCreateFail, err.Error()) t.SetStageFailed(ctx, jsonutils.NewString(err.Error())) logclient.LogWithStartable(t, machine, logclient.ActionMachineCreate, err.Error(), t.UserCred, false) } diff --git a/pkg/kubeserver/tasks/machine_prepare_task.go b/pkg/kubeserver/tasks/machine_prepare_task.go index 634a23754..e66f5dfae 100644 --- a/pkg/kubeserver/tasks/machine_prepare_task.go +++ b/pkg/kubeserver/tasks/machine_prepare_task.go @@ -62,13 +62,13 @@ func (t *MachinePrepareTask) doPrepare(ctx context.Context, obj db.IStandaloneMo ip, err := driver.GetPrivateIP(session, machine.GetResourceId()) if err != nil { - return errors.Wrapf(err, "Get resource %s private ip", machine.GetResourceId) + return errors.Wrapf(err, "Get resource %s private ip", machine.GetResourceId()) } if err := machine.SetPrivateIP(ip); err != nil { return errors.Wrapf(err, "Set machine private ip %s", ip) } - machine.SetStatus(t.UserCred, api.MachineStatusRunning, "") + machine.SetStatus(ctx, t.UserCred, api.MachineStatusRunning, "") return nil } @@ -82,7 +82,7 @@ func (t *MachinePrepareTask) OnPreparedFailed(ctx context.Context, machine *mode } func (t *MachinePrepareTask) OnError(ctx context.Context, machine *models.SMachine, err error) { - machine.SetStatus(t.UserCred, api.MachineStatusPrepareFail, err.Error()) + machine.SetStatus(ctx, t.UserCred, api.MachineStatusPrepareFail, err.Error()) t.SetStageFailed(ctx, jsonutils.NewString(err.Error())) logclient.LogWithStartable(t, machine, logclient.ActionMachinePrepare, err.Error(), t.UserCred, false) } diff --git a/pkg/kubeserver/tasks/machine_terminate_task.go b/pkg/kubeserver/tasks/machine_terminate_task.go index ca9da2019..d74e64fd0 100644 --- a/pkg/kubeserver/tasks/machine_terminate_task.go +++ b/pkg/kubeserver/tasks/machine_terminate_task.go @@ -37,6 +37,6 @@ func (t *MachineTerminateTask) OnInit(ctx context.Context, obj db.IStandaloneMod } func (t *MachineTerminateTask) OnError(ctx context.Context, machine *models.SMachine, err error) { - machine.SetStatus(t.UserCred, api.MachineStatusTerminateFail, err.Error()) + machine.SetStatus(ctx, t.UserCred, api.MachineStatusTerminateFail, err.Error()) t.SetStageFailed(ctx, jsonutils.NewString(err.Error())) } diff --git a/scripts/cherry_pick_pull.sh b/scripts/cherry_pick_pull.sh index 4b0cc52ff..33fde7611 100755 --- a/scripts/cherry_pick_pull.sh +++ b/scripts/cherry_pick_pull.sh @@ -46,8 +46,8 @@ declare -r REBASEMAGIC="${REPO_ROOT}/.git/rebase-apply" DRY_RUN=${DRY_RUN:-""} UPSTREAM_REMOTE=${UPSTREAM_REMOTE:-upstream} FORK_REMOTE=${FORK_REMOTE:-origin} -MAIN_REPO_ORG=${MAIN_REPO_ORG:-$(git_remote_get_url "$UPSTREAM_REMOTE" | awk '{gsub(/http[s]:\/\/|git@/,"")}1' | awk -F'[@:./]' 'NR==1{print $3}')} -MAIN_REPO_NAME=${MAIN_REPO_NAME:-$(git_remote_get_url "$UPSTREAM_REMOTE" | awk '{gsub(/http[s]:\/\/|git@/,"")}1' | awk -F'[@:./]' 'NR==1{print $4}')} +MAIN_REPO_ORG=${MAIN_REPO_ORG:-$(git_remote_get_url "$UPSTREAM_REMOTE" | awk -F'github.com' '{print $2}' | awk -F'[:./]' 'NR==1{print $2}')} +MAIN_REPO_NAME=${MAIN_REPO_NAME:-$(git_remote_get_url "$UPSTREAM_REMOTE" | awk -F'github.com' '{print $2}' | awk -F'[:./]' 'NR==1{print $3}')} if [[ -z ${GITHUB_USER:-} ]]; then echo "Please export GITHUB_USER= (or GH organization, if that's where your fork lives)" @@ -59,6 +59,15 @@ if ! which hub > /dev/null; then exit 1 fi +function version_lt() { + test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" != "$1" +} + +if version_lt "$(hub version | awk '/hub/ {print $3}')" "2.13.0"; then + echo "Please install 'hub' with version 2.13.0+ from https://github.com/github/hub/releases" + exit 1 +fi + if [[ "$#" -lt 2 ]]; then echo "${0} ...: cherry pick one or more onto and leave instructions for proposing pull request" echo @@ -156,36 +165,6 @@ EOF hub pull-request -F "${prtext}" -h "${GITHUB_USER}:${NEWBRANCH}" -b "${MAIN_REPO_ORG}:${rel}" } -function python_bin() { - command -v python3 >/dev/null 2>&1 && echo python3 || echo python -} - -function extract-subject { - local patch="$1" - - $(python_bin) -c ' -import os -import email.parser -import email.header -with open("'"$patch"'", "r") as f: - m = email.parser.Parser().parse(f, headersonly=True) -subj = m["subject"] -subj = email.header.decode_header(subj) -s = u"" -for txt, enc in subj: - txt = txt.decode(enc) if enc else txt - txt = txt.decode("ascii") if isinstance(txt, bytes) else txt - txt = txt.replace(u"\n", u"") - if txt.startswith(u"[PATCH"): - i = txt.index(u"]") - txt = txt[i+1:] - s += txt -s = s.strip() + u"\n" -s = s.encode("utf-8") # write out utf-8 bytes whatsoever -os.write(1, s) -' -} - git checkout -b "${NEWBRANCHUNIQ}" "${BRANCH}" cleanbranch="${NEWBRANCHUNIQ}" @@ -193,6 +172,7 @@ gitamcleanup=true for pull in "${PULLS[@]}"; do echo "+++ Downloading patch to /tmp/${pull}.patch (in case you need to do this again)" + echo "Downloading https://github.com/${MAIN_REPO_ORG}/${MAIN_REPO_NAME}/pull/${pull}.patch ..." curl -o "/tmp/${pull}.patch" -sSL "https://github.com/${MAIN_REPO_ORG}/${MAIN_REPO_NAME}/pull/${pull}.patch" echo echo "+++ About to attempt cherry pick of PR. To reattempt:" @@ -223,9 +203,7 @@ for pull in "${PULLS[@]}"; do fi } - # set the subject - subject=$(extract-subject "/tmp/${pull}.patch") - SUBJECTS+=("#${pull}: ${subject}") +SUBJECTS+=("$(hub pr show -f "%i: %t" ${pull})") # remove the patch file from /tmp rm -f "/tmp/${pull}.patch" diff --git a/vendor/gitee.com/chunanyong/dm/CHANGELOG.md b/vendor/gitee.com/chunanyong/dm/CHANGELOG.md new file mode 100644 index 000000000..5d9f822ed --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/CHANGELOG.md @@ -0,0 +1,38 @@ +# Change Logs + +*你可以在文件p.go中的发版标记里找到当前驱动的svn号 + +## svn 16752 +支持在连接串上直接配置动态服务名,使用示例: +dm://user:password@GroupName?GroupName=(host1:port1,host2:port2,...) + +## svn 16505 +新增连接串属性driverReconnect,配合doSwitch=1或2使用,表示连接重连是否使用驱动自身的重连机制,否则在连接失效时返回sql标准错误driver.ErrBadConn,由go来处理重连 + +## svn 16258 +重连逻辑修改,当连接失效时,返回driver.ErrBadConn而不是驱动自己管理重连,连接串参数doSwitch默认值改为1 +驱动接口方法同步锁改到连接网络请求的总入口处,解决一些panic和数组越界问题 +日志优化,去除遍历结果集时因io.EOF错误记录的日志 + +## svn 15619 +驱动接口方法添加同步锁 +驱动日志修改bug,可以记录SQL语句和参数值了 + +## svn 15357 +发布方言包,支持gorm v1和v2框架,方言包位于达梦安装目录的drivers/go目录中,详细使用说明参考《DM8程序员手册》 + +## svn 15157 +修复了字符大字段(Clob)中存在乱码字符时,读取结果会漏读一些字符的问题 +修复了开启SSL后并发创建连接导致panic的问题 + +## svn 15035 +修复了连接串属性doSwitch=1时,语句不会自动切换和重连的问题 +修复了连接重置后,可能出现的空指针问题 + +## svn 14992 +修复了连接串属性doSwitch=1时,连接不会自动切换和重连的问题 +修复了连接串属性loginMode=默认值4时,备库可能会被优先连接的问题 + +## svn 14589 +sql.Result.LastInsertId()函数能优先返回自增列的值,如果没有则返回数据库表内部的rowid +修复了开启事务时指定只读不生效的问题 \ No newline at end of file diff --git a/vendor/gitee.com/chunanyong/dm/README.md b/vendor/gitee.com/chunanyong/dm/README.md new file mode 100644 index 000000000..a29173895 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/README.md @@ -0,0 +1,51 @@ +# dm + +### 介绍 +``` +go get gitee.com/chunanyong/dm +``` +达梦数据库官方Go驱动,本项目和官方驱动版本同步,方便go mod 使用. +安装达梦数据库(版本>=8.1.1.126),安装目录下 drivers/go/dm-go-driver.zip +达梦官方文档:https://eco.dameng.com/docs/zh-cn/app-dev/go-go.html +资源下载:https://eco.dameng.com/download/ +达梦官方Go驱动包:https://package.dameng.com/eco/adapter/resource/go/dm-go-driver.zip +达梦官方论坛(提交bug):https://eco.dameng.com/community/question + +### zorm +Go轻量ORM https://gitee.com/chunanyong/zorm 原生支持达梦数据库 + +### DSN +dm://userName:password@127.0.0.1:5236?schema=DBName +用户名(userName)默认就是数据库的名称,达梦用户模式和数据库名称是对应的,也可以通过schema参数指定数据库 +建议达梦使用UTF-8字符编码,不区分大小写,建表语句的字段名不要带""双引号 + +### bug +- 达梦开启等保参数 COMM_ENCRYPT_NAME = AES128_ECB,导致连接异常 + +### 版本号 +Go三段位版本号和达梦四段位版本号不兼容,统一使用1.达梦主版本号.发布的小版本号,具体查看标签的备注 + +* v1.8.13 来自 达梦8.1.3.62 +* v1.8.12 来自 达梦8.1.3.12 +* v1.8.11 来自 达梦8.1.2.192 +* v1.8.10 来自 达梦8.1.2.174 +* v1.8.9 来自 达梦8.1.2.162 +* v1.8.8 来自 达梦8.1.2.138 +* v1.8.7 来自 达梦8.1.2.128 +* v1.8.6 来自 达梦8.1.2.114 +* v1.8.5 来自 达梦8.1.2.94 +* v1.8.4 来自 达梦8.1.2.84 +* v1.8.3 来自 达梦8.1.2.38 +* v1.8.2 来自 达梦8.1.2.18 +* v1.8.1 来自 达梦8.1.1.190 +* v1.8.0 来自 达梦8.1.1.126 + + + + + + + + + + diff --git a/vendor/gitee.com/chunanyong/dm/VERSION b/vendor/gitee.com/chunanyong/dm/VERSION new file mode 100644 index 000000000..71e68360a --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/VERSION @@ -0,0 +1,3 @@ +#8.1.3.100 +#2023.12.14 +#20657 diff --git a/vendor/gitee.com/chunanyong/dm/a.go b/vendor/gitee.com/chunanyong/dm/a.go new file mode 100644 index 000000000..e708b6686 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/a.go @@ -0,0 +1,838 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "bytes" + "context" + "crypto/tls" + "fmt" + "net" + "strconv" + "time" + "unicode/utf8" + + "gitee.com/chunanyong/dm/security" +) + +const ( + Dm_build_1343 = 8192 + Dm_build_1344 = 2 * time.Second +) + +type dm_build_1345 struct { + dm_build_1346 net.Conn + dm_build_1347 *tls.Conn + dm_build_1348 *Dm_build_1009 + dm_build_1349 *DmConnection + dm_build_1350 security.Cipher + dm_build_1351 bool + dm_build_1352 bool + dm_build_1353 *security.DhKey + + dm_build_1354 bool + dm_build_1355 string + dm_build_1356 bool +} + +func dm_build_1357(dm_build_1358 context.Context, dm_build_1359 *DmConnection) (*dm_build_1345, error) { + var dm_build_1360 net.Conn + var dm_build_1361 error + + dialsLock.RLock() + dm_build_1362, dm_build_1363 := dials[dm_build_1359.dmConnector.dialName] + dialsLock.RUnlock() + if dm_build_1363 { + dm_build_1360, dm_build_1361 = dm_build_1362(dm_build_1358, dm_build_1359.dmConnector.host+":"+strconv.Itoa(int(dm_build_1359.dmConnector.port))) + } else { + dm_build_1360, dm_build_1361 = dm_build_1365(dm_build_1359.dmConnector.host+":"+strconv.Itoa(int(dm_build_1359.dmConnector.port)), time.Duration(dm_build_1359.dmConnector.socketTimeout)*time.Second) + } + if dm_build_1361 != nil { + return nil, dm_build_1361 + } + + dm_build_1364 := dm_build_1345{} + dm_build_1364.dm_build_1346 = dm_build_1360 + dm_build_1364.dm_build_1348 = Dm_build_1012(Dm_build_14) + dm_build_1364.dm_build_1349 = dm_build_1359 + dm_build_1364.dm_build_1351 = false + dm_build_1364.dm_build_1352 = false + dm_build_1364.dm_build_1354 = false + dm_build_1364.dm_build_1355 = "" + dm_build_1364.dm_build_1356 = false + dm_build_1359.Access = &dm_build_1364 + + return &dm_build_1364, nil +} + +func dm_build_1365(dm_build_1366 string, dm_build_1367 time.Duration) (net.Conn, error) { + dm_build_1368, dm_build_1369 := net.DialTimeout("tcp", dm_build_1366, dm_build_1367) + if dm_build_1369 != nil { + return &net.TCPConn{}, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_1366).throw() + } + + if tcpConn, ok := dm_build_1368.(*net.TCPConn); ok { + tcpConn.SetKeepAlive(true) + tcpConn.SetKeepAlivePeriod(Dm_build_1344) + tcpConn.SetNoDelay(true) + + } + return dm_build_1368, nil +} + +func (dm_build_1371 *dm_build_1345) dm_build_1370(dm_build_1372 dm_build_135) bool { + var dm_build_1373 = dm_build_1371.dm_build_1349.dmConnector.compress + if dm_build_1372.dm_build_150() == Dm_build_42 || dm_build_1373 == Dm_build_91 { + return false + } + + if dm_build_1373 == Dm_build_89 { + return true + } else if dm_build_1373 == Dm_build_90 { + return !dm_build_1371.dm_build_1349.Local && dm_build_1372.dm_build_148() > Dm_build_88 + } + + return false +} + +func (dm_build_1375 *dm_build_1345) dm_build_1374(dm_build_1376 dm_build_135) bool { + var dm_build_1377 = dm_build_1375.dm_build_1349.dmConnector.compress + if dm_build_1376.dm_build_150() == Dm_build_42 || dm_build_1377 == Dm_build_91 { + return false + } + + if dm_build_1377 == Dm_build_89 { + return true + } else if dm_build_1377 == Dm_build_90 { + return dm_build_1375.dm_build_1348.Dm_build_1276(Dm_build_50) == 1 + } + + return false +} + +func (dm_build_1379 *dm_build_1345) dm_build_1378(dm_build_1380 dm_build_135) (err error) { + defer func() { + if p := recover(); p != nil { + if _, ok := p.(string); ok { + err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw() + } else { + err = fmt.Errorf("internal error: %v", p) + } + } + }() + + dm_build_1382 := dm_build_1380.dm_build_148() + + if dm_build_1382 > 0 { + + if dm_build_1379.dm_build_1370(dm_build_1380) { + var retBytes, err = Compress(dm_build_1379.dm_build_1348, Dm_build_43, int(dm_build_1382), int(dm_build_1379.dm_build_1349.dmConnector.compressID)) + if err != nil { + return err + } + + dm_build_1379.dm_build_1348.Dm_build_1023(Dm_build_43) + + dm_build_1379.dm_build_1348.Dm_build_1064(dm_build_1382) + + dm_build_1379.dm_build_1348.Dm_build_1092(retBytes) + + dm_build_1380.dm_build_149(int32(len(retBytes)) + ULINT_SIZE) + + dm_build_1379.dm_build_1348.Dm_build_1196(Dm_build_50, 1) + } + + if dm_build_1379.dm_build_1352 { + dm_build_1382 = dm_build_1380.dm_build_148() + var retBytes = dm_build_1379.dm_build_1350.Encrypt(dm_build_1379.dm_build_1348.Dm_build_1303(Dm_build_43, int(dm_build_1382)), true) + + dm_build_1379.dm_build_1348.Dm_build_1023(Dm_build_43) + + dm_build_1379.dm_build_1348.Dm_build_1092(retBytes) + + dm_build_1380.dm_build_149(int32(len(retBytes))) + } + } + + if dm_build_1379.dm_build_1348.Dm_build_1021() > Dm_build_15 { + return ECGO_MSG_TOO_LONG.throw() + } + + dm_build_1380.dm_build_144() + if dm_build_1379.dm_build_1613(dm_build_1380) { + if dm_build_1379.dm_build_1347 != nil { + dm_build_1379.dm_build_1348.Dm_build_1026(0) + if _, err := dm_build_1379.dm_build_1348.Dm_build_1045(dm_build_1379.dm_build_1347); err != nil { + return err + } + } + } else { + dm_build_1379.dm_build_1348.Dm_build_1026(0) + if _, err := dm_build_1379.dm_build_1348.Dm_build_1045(dm_build_1379.dm_build_1346); err != nil { + return err + } + } + return nil +} + +func (dm_build_1384 *dm_build_1345) dm_build_1383(dm_build_1385 dm_build_135) (err error) { + defer func() { + if p := recover(); p != nil { + if _, ok := p.(string); ok { + err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw() + } else { + err = fmt.Errorf("internal error: %v", p) + } + } + }() + + dm_build_1387 := int32(0) + if dm_build_1384.dm_build_1613(dm_build_1385) { + if dm_build_1384.dm_build_1347 != nil { + dm_build_1384.dm_build_1348.Dm_build_1023(0) + if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1347, Dm_build_43); err != nil { + return err + } + + dm_build_1387 = dm_build_1385.dm_build_148() + if dm_build_1387 > 0 { + if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1347, int(dm_build_1387)); err != nil { + return err + } + } + } + } else { + + dm_build_1384.dm_build_1348.Dm_build_1023(0) + if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1346, Dm_build_43); err != nil { + return err + } + dm_build_1387 = dm_build_1385.dm_build_148() + + if dm_build_1387 > 0 { + if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1346, int(dm_build_1387)); err != nil { + return err + } + } + } + + dm_build_1385.dm_build_145() + + dm_build_1387 = dm_build_1385.dm_build_148() + if dm_build_1387 <= 0 { + return nil + } + + if dm_build_1384.dm_build_1352 { + ebytes := dm_build_1384.dm_build_1348.Dm_build_1303(Dm_build_43, int(dm_build_1387)) + bytes, err := dm_build_1384.dm_build_1350.Decrypt(ebytes, true) + if err != nil { + return err + } + dm_build_1384.dm_build_1348.Dm_build_1023(Dm_build_43) + dm_build_1384.dm_build_1348.Dm_build_1092(bytes) + dm_build_1385.dm_build_149(int32(len(bytes))) + } + + if dm_build_1384.dm_build_1374(dm_build_1385) { + + dm_build_1387 = dm_build_1385.dm_build_148() + cbytes := dm_build_1384.dm_build_1348.Dm_build_1303(Dm_build_43+ULINT_SIZE, int(dm_build_1387-ULINT_SIZE)) + bytes, err := UnCompress(cbytes, int(dm_build_1384.dm_build_1349.dmConnector.compressID)) + if err != nil { + return err + } + dm_build_1384.dm_build_1348.Dm_build_1023(Dm_build_43) + dm_build_1384.dm_build_1348.Dm_build_1092(bytes) + dm_build_1385.dm_build_149(int32(len(bytes))) + } + return nil +} + +func (dm_build_1389 *dm_build_1345) dm_build_1388(dm_build_1390 dm_build_135) (dm_build_1391 interface{}, dm_build_1392 error) { + if dm_build_1389.dm_build_1356 { + return nil, ECGO_CONNECTION_CLOSED.throw() + } + dm_build_1393 := dm_build_1389.dm_build_1349 + dm_build_1393.mu.Lock() + defer dm_build_1393.mu.Unlock() + dm_build_1392 = dm_build_1390.dm_build_139(dm_build_1390) + if dm_build_1392 != nil { + return nil, dm_build_1392 + } + + dm_build_1392 = dm_build_1389.dm_build_1378(dm_build_1390) + if dm_build_1392 != nil { + return nil, dm_build_1392 + } + + dm_build_1392 = dm_build_1389.dm_build_1383(dm_build_1390) + if dm_build_1392 != nil { + return nil, dm_build_1392 + } + + return dm_build_1390.dm_build_143(dm_build_1390) +} + +func (dm_build_1395 *dm_build_1345) dm_build_1394() (*dm_build_592, error) { + + Dm_build_1396 := dm_build_598(dm_build_1395) + _, dm_build_1397 := dm_build_1395.dm_build_1388(Dm_build_1396) + if dm_build_1397 != nil { + return nil, dm_build_1397 + } + + return Dm_build_1396, nil +} + +func (dm_build_1399 *dm_build_1345) dm_build_1398() error { + + dm_build_1400 := dm_build_459(dm_build_1399) + _, dm_build_1401 := dm_build_1399.dm_build_1388(dm_build_1400) + if dm_build_1401 != nil { + return dm_build_1401 + } + + return nil +} + +func (dm_build_1403 *dm_build_1345) dm_build_1402() error { + + var dm_build_1404 *dm_build_592 + var err error + if dm_build_1404, err = dm_build_1403.dm_build_1394(); err != nil { + return err + } + + if dm_build_1403.dm_build_1349.sslEncrypt == 2 { + if err = dm_build_1403.dm_build_1609(false); err != nil { + return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() + } + } else if dm_build_1403.dm_build_1349.sslEncrypt == 1 { + if err = dm_build_1403.dm_build_1609(true); err != nil { + return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() + } + } + + if dm_build_1403.dm_build_1352 || dm_build_1403.dm_build_1351 { + k, err := dm_build_1403.dm_build_1599() + if err != nil { + return err + } + sessionKey := security.ComputeSessionKey(k, dm_build_1404.Dm_build_596) + encryptType := dm_build_1404.dm_build_594 + hashType := int(dm_build_1404.Dm_build_595) + if encryptType == -1 { + encryptType = security.DES_CFB + } + if hashType == -1 { + hashType = security.MD5 + } + err = dm_build_1403.dm_build_1602(encryptType, sessionKey, dm_build_1403.dm_build_1349.dmConnector.cipherPath, hashType) + if err != nil { + return err + } + } + + if err := dm_build_1403.dm_build_1398(); err != nil { + return err + } + return nil +} + +func (dm_build_1407 *dm_build_1345) Dm_build_1406(dm_build_1408 *DmStatement) error { + dm_build_1409 := dm_build_621(dm_build_1407, dm_build_1408) + _, dm_build_1410 := dm_build_1407.dm_build_1388(dm_build_1409) + if dm_build_1410 != nil { + return dm_build_1410 + } + + return nil +} + +func (dm_build_1412 *dm_build_1345) Dm_build_1411(dm_build_1413 int32) error { + dm_build_1414 := dm_build_631(dm_build_1412, dm_build_1413) + _, dm_build_1415 := dm_build_1412.dm_build_1388(dm_build_1414) + if dm_build_1415 != nil { + return dm_build_1415 + } + + return nil +} + +func (dm_build_1417 *dm_build_1345) Dm_build_1416(dm_build_1418 *DmStatement, dm_build_1419 bool, dm_build_1420 int16) (*execRetInfo, error) { + dm_build_1421 := dm_build_498(dm_build_1417, dm_build_1418, dm_build_1419, dm_build_1420) + dm_build_1422, dm_build_1423 := dm_build_1417.dm_build_1388(dm_build_1421) + if dm_build_1423 != nil { + return nil, dm_build_1423 + } + return dm_build_1422.(*execRetInfo), nil +} + +func (dm_build_1425 *dm_build_1345) Dm_build_1424(dm_build_1426 *DmStatement, dm_build_1427 int16) (*execRetInfo, error) { + return dm_build_1425.Dm_build_1416(dm_build_1426, false, Dm_build_95) +} + +func (dm_build_1429 *dm_build_1345) Dm_build_1428(dm_build_1430 *DmStatement, dm_build_1431 []OptParameter) (*execRetInfo, error) { + dm_build_1432, dm_build_1433 := dm_build_1429.dm_build_1388(dm_build_238(dm_build_1429, dm_build_1430, dm_build_1431)) + if dm_build_1433 != nil { + return nil, dm_build_1433 + } + + return dm_build_1432.(*execRetInfo), nil +} + +func (dm_build_1435 *dm_build_1345) Dm_build_1434(dm_build_1436 *DmStatement, dm_build_1437 int16) (*execRetInfo, error) { + return dm_build_1435.Dm_build_1416(dm_build_1436, true, dm_build_1437) +} + +func (dm_build_1439 *dm_build_1345) Dm_build_1438(dm_build_1440 *DmStatement, dm_build_1441 [][]interface{}) (*execRetInfo, error) { + dm_build_1442 := dm_build_270(dm_build_1439, dm_build_1440, dm_build_1441) + dm_build_1443, dm_build_1444 := dm_build_1439.dm_build_1388(dm_build_1442) + if dm_build_1444 != nil { + return nil, dm_build_1444 + } + return dm_build_1443.(*execRetInfo), nil +} + +func (dm_build_1446 *dm_build_1345) Dm_build_1445(dm_build_1447 *DmStatement, dm_build_1448 [][]interface{}, dm_build_1449 bool) (*execRetInfo, error) { + var dm_build_1450, dm_build_1451 = 0, 0 + var dm_build_1452 = len(dm_build_1448) + var dm_build_1453 [][]interface{} + var dm_build_1454 = NewExceInfo() + dm_build_1454.updateCounts = make([]int64, dm_build_1452) + var dm_build_1455 = false + for dm_build_1450 < dm_build_1452 { + for dm_build_1451 = dm_build_1450; dm_build_1451 < dm_build_1452; dm_build_1451++ { + paramData := dm_build_1448[dm_build_1451] + bindData := make([]interface{}, dm_build_1447.paramCount) + dm_build_1455 = false + for icol := 0; icol < int(dm_build_1447.paramCount); icol++ { + if dm_build_1447.bindParams[icol].ioType == IO_TYPE_OUT { + continue + } + if dm_build_1446.dm_build_1582(bindData, paramData, icol) { + dm_build_1455 = true + break + } + } + + if dm_build_1455 { + break + } + dm_build_1453 = append(dm_build_1453, bindData) + } + + if dm_build_1451 != dm_build_1450 { + tmpExecInfo, err := dm_build_1446.Dm_build_1438(dm_build_1447, dm_build_1453) + if err != nil { + return nil, err + } + dm_build_1453 = dm_build_1453[0:0] + dm_build_1454.union(tmpExecInfo, dm_build_1450, dm_build_1451-dm_build_1450) + } + + if dm_build_1451 < dm_build_1452 { + tmpExecInfo, err := dm_build_1446.Dm_build_1456(dm_build_1447, dm_build_1448[dm_build_1451], dm_build_1449) + if err != nil { + return nil, err + } + + dm_build_1449 = true + dm_build_1454.union(tmpExecInfo, dm_build_1451, 1) + } + + dm_build_1450 = dm_build_1451 + 1 + } + for _, i := range dm_build_1454.updateCounts { + if i > 0 { + dm_build_1454.updateCount += i + } + } + return dm_build_1454, nil +} + +func (dm_build_1457 *dm_build_1345) Dm_build_1456(dm_build_1458 *DmStatement, dm_build_1459 []interface{}, dm_build_1460 bool) (*execRetInfo, error) { + + var dm_build_1461 = make([]interface{}, dm_build_1458.paramCount) + for icol := 0; icol < int(dm_build_1458.paramCount); icol++ { + if dm_build_1458.bindParams[icol].ioType == IO_TYPE_OUT { + continue + } + if dm_build_1457.dm_build_1582(dm_build_1461, dm_build_1459, icol) { + + if !dm_build_1460 { + preExecute := dm_build_487(dm_build_1457, dm_build_1458, dm_build_1458.bindParams) + dm_build_1457.dm_build_1388(preExecute) + dm_build_1460 = true + } + + dm_build_1457.dm_build_1588(dm_build_1458, dm_build_1458.bindParams[icol], icol, dm_build_1459[icol].(iOffRowBinder)) + dm_build_1461[icol] = ParamDataEnum_OFF_ROW + } + } + + var dm_build_1462 = make([][]interface{}, 1, 1) + dm_build_1462[0] = dm_build_1461 + + dm_build_1463 := dm_build_270(dm_build_1457, dm_build_1458, dm_build_1462) + dm_build_1464, dm_build_1465 := dm_build_1457.dm_build_1388(dm_build_1463) + if dm_build_1465 != nil { + return nil, dm_build_1465 + } + return dm_build_1464.(*execRetInfo), nil +} + +func (dm_build_1467 *dm_build_1345) Dm_build_1466(dm_build_1468 *DmStatement, dm_build_1469 int16) (*execRetInfo, error) { + dm_build_1470 := dm_build_474(dm_build_1467, dm_build_1468, dm_build_1469) + + dm_build_1471, dm_build_1472 := dm_build_1467.dm_build_1388(dm_build_1470) + if dm_build_1472 != nil { + return nil, dm_build_1472 + } + return dm_build_1471.(*execRetInfo), nil +} + +func (dm_build_1474 *dm_build_1345) Dm_build_1473(dm_build_1475 *innerRows, dm_build_1476 int64) (*execRetInfo, error) { + dm_build_1477 := dm_build_377(dm_build_1474, dm_build_1475, dm_build_1476, INT64_MAX) + dm_build_1478, dm_build_1479 := dm_build_1474.dm_build_1388(dm_build_1477) + if dm_build_1479 != nil { + return nil, dm_build_1479 + } + return dm_build_1478.(*execRetInfo), nil +} + +func (dm_build_1481 *dm_build_1345) Commit() error { + dm_build_1482 := dm_build_223(dm_build_1481) + _, dm_build_1483 := dm_build_1481.dm_build_1388(dm_build_1482) + if dm_build_1483 != nil { + return dm_build_1483 + } + + return nil +} + +func (dm_build_1485 *dm_build_1345) Rollback() error { + dm_build_1486 := dm_build_536(dm_build_1485) + _, dm_build_1487 := dm_build_1485.dm_build_1388(dm_build_1486) + if dm_build_1487 != nil { + return dm_build_1487 + } + + return nil +} + +func (dm_build_1489 *dm_build_1345) Dm_build_1488(dm_build_1490 *DmConnection) error { + dm_build_1491 := dm_build_541(dm_build_1489, dm_build_1490.IsoLevel) + _, dm_build_1492 := dm_build_1489.dm_build_1388(dm_build_1491) + if dm_build_1492 != nil { + return dm_build_1492 + } + + return nil +} + +func (dm_build_1494 *dm_build_1345) Dm_build_1493(dm_build_1495 *DmStatement, dm_build_1496 string) error { + dm_build_1497 := dm_build_228(dm_build_1494, dm_build_1495, dm_build_1496) + _, dm_build_1498 := dm_build_1494.dm_build_1388(dm_build_1497) + if dm_build_1498 != nil { + return dm_build_1498 + } + + return nil +} + +func (dm_build_1500 *dm_build_1345) Dm_build_1499(dm_build_1501 []uint32) ([]int64, error) { + dm_build_1502 := dm_build_639(dm_build_1500, dm_build_1501) + dm_build_1503, dm_build_1504 := dm_build_1500.dm_build_1388(dm_build_1502) + if dm_build_1504 != nil { + return nil, dm_build_1504 + } + return dm_build_1503.([]int64), nil +} + +func (dm_build_1506 *dm_build_1345) Close() error { + if dm_build_1506.dm_build_1356 { + return nil + } + + dm_build_1507 := dm_build_1506.dm_build_1346.Close() + if dm_build_1507 != nil { + return dm_build_1507 + } + + dm_build_1506.dm_build_1349 = nil + dm_build_1506.dm_build_1356 = true + return nil +} + +func (dm_build_1509 *dm_build_1345) dm_build_1508(dm_build_1510 *lob) (int64, error) { + dm_build_1511 := dm_build_410(dm_build_1509, dm_build_1510) + dm_build_1512, dm_build_1513 := dm_build_1509.dm_build_1388(dm_build_1511) + if dm_build_1513 != nil { + return 0, dm_build_1513 + } + return dm_build_1512.(int64), nil +} + +func (dm_build_1515 *dm_build_1345) dm_build_1514(dm_build_1516 *lob, dm_build_1517 int32, dm_build_1518 int32) (*lobRetInfo, error) { + dm_build_1519 := dm_build_395(dm_build_1515, dm_build_1516, int(dm_build_1517), int(dm_build_1518)) + dm_build_1520, dm_build_1521 := dm_build_1515.dm_build_1388(dm_build_1519) + if dm_build_1521 != nil { + return nil, dm_build_1521 + } + return dm_build_1520.(*lobRetInfo), nil +} + +func (dm_build_1523 *dm_build_1345) dm_build_1522(dm_build_1524 *DmBlob, dm_build_1525 int32, dm_build_1526 int32) ([]byte, error) { + var dm_build_1527 = make([]byte, dm_build_1526) + var dm_build_1528 int32 = 0 + var dm_build_1529 int32 = 0 + var dm_build_1530 *lobRetInfo + var dm_build_1531 []byte + var dm_build_1532 error + for dm_build_1528 < dm_build_1526 { + dm_build_1529 = dm_build_1526 - dm_build_1528 + if dm_build_1529 > Dm_build_128 { + dm_build_1529 = Dm_build_128 + } + dm_build_1530, dm_build_1532 = dm_build_1523.dm_build_1514(&dm_build_1524.lob, dm_build_1525+dm_build_1528, dm_build_1529) + if dm_build_1532 != nil { + return nil, dm_build_1532 + } + dm_build_1531 = dm_build_1530.data + if dm_build_1531 == nil || len(dm_build_1531) == 0 { + break + } + Dm_build_650.Dm_build_706(dm_build_1527, int(dm_build_1528), dm_build_1531, 0, len(dm_build_1531)) + dm_build_1528 += int32(len(dm_build_1531)) + if dm_build_1524.readOver { + break + } + } + return dm_build_1527, nil +} + +func (dm_build_1534 *dm_build_1345) dm_build_1533(dm_build_1535 *DmClob, dm_build_1536 int32, dm_build_1537 int32) (string, error) { + var dm_build_1538 bytes.Buffer + var dm_build_1539 int32 = 0 + var dm_build_1540 int32 = 0 + var dm_build_1541 *lobRetInfo + var dm_build_1542 []byte + var dm_build_1543 string + var dm_build_1544 error + for dm_build_1539 < dm_build_1537 { + dm_build_1540 = dm_build_1537 - dm_build_1539 + if dm_build_1540 > Dm_build_128/2 { + dm_build_1540 = Dm_build_128 / 2 + } + dm_build_1541, dm_build_1544 = dm_build_1534.dm_build_1514(&dm_build_1535.lob, dm_build_1536+dm_build_1539, dm_build_1540) + if dm_build_1544 != nil { + return "", dm_build_1544 + } + dm_build_1542 = dm_build_1541.data + if dm_build_1542 == nil || len(dm_build_1542) == 0 { + break + } + dm_build_1543 = Dm_build_650.Dm_build_807(dm_build_1542, 0, len(dm_build_1542), dm_build_1535.serverEncoding, dm_build_1534.dm_build_1349) + + dm_build_1538.WriteString(dm_build_1543) + var strLen = dm_build_1541.charLen + if strLen == -1 { + strLen = int64(utf8.RuneCountInString(dm_build_1543)) + } + dm_build_1539 += int32(strLen) + if dm_build_1535.readOver { + break + } + } + return dm_build_1538.String(), nil +} + +func (dm_build_1546 *dm_build_1345) dm_build_1545(dm_build_1547 *DmClob, dm_build_1548 int, dm_build_1549 string, dm_build_1550 string) (int, error) { + var dm_build_1551 = Dm_build_650.Dm_build_866(dm_build_1549, dm_build_1550, dm_build_1546.dm_build_1349) + var dm_build_1552 = 0 + var dm_build_1553 = len(dm_build_1551) + var dm_build_1554 = 0 + var dm_build_1555 = 0 + var dm_build_1556 = 0 + var dm_build_1557 = dm_build_1553/Dm_build_127 + 1 + var dm_build_1558 byte = 0 + var dm_build_1559 byte = 0x01 + var dm_build_1560 byte = 0x02 + for i := 0; i < dm_build_1557; i++ { + dm_build_1558 = 0 + if i == 0 { + dm_build_1558 |= dm_build_1559 + } + if i == dm_build_1557-1 { + dm_build_1558 |= dm_build_1560 + } + dm_build_1556 = dm_build_1553 - dm_build_1555 + if dm_build_1556 > Dm_build_127 { + dm_build_1556 = Dm_build_127 + } + + setLobData := dm_build_555(dm_build_1546, &dm_build_1547.lob, dm_build_1558, dm_build_1548, dm_build_1551, dm_build_1552, dm_build_1556) + ret, err := dm_build_1546.dm_build_1388(setLobData) + if err != nil { + return 0, err + } + tmp := ret.(int32) + if err != nil { + return -1, err + } + if tmp <= 0 { + return dm_build_1554, nil + } else { + dm_build_1548 += int(tmp) + dm_build_1554 += int(tmp) + dm_build_1555 += dm_build_1556 + dm_build_1552 += dm_build_1556 + } + } + return dm_build_1554, nil +} + +func (dm_build_1562 *dm_build_1345) dm_build_1561(dm_build_1563 *DmBlob, dm_build_1564 int, dm_build_1565 []byte) (int, error) { + var dm_build_1566 = 0 + var dm_build_1567 = len(dm_build_1565) + var dm_build_1568 = 0 + var dm_build_1569 = 0 + var dm_build_1570 = 0 + var dm_build_1571 = dm_build_1567/Dm_build_127 + 1 + var dm_build_1572 byte = 0 + var dm_build_1573 byte = 0x01 + var dm_build_1574 byte = 0x02 + for i := 0; i < dm_build_1571; i++ { + dm_build_1572 = 0 + if i == 0 { + dm_build_1572 |= dm_build_1573 + } + if i == dm_build_1571-1 { + dm_build_1572 |= dm_build_1574 + } + dm_build_1570 = dm_build_1567 - dm_build_1569 + if dm_build_1570 > Dm_build_127 { + dm_build_1570 = Dm_build_127 + } + + setLobData := dm_build_555(dm_build_1562, &dm_build_1563.lob, dm_build_1572, dm_build_1564, dm_build_1565, dm_build_1566, dm_build_1570) + ret, err := dm_build_1562.dm_build_1388(setLobData) + if err != nil { + return 0, err + } + tmp := ret.(int32) + if tmp <= 0 { + return dm_build_1568, nil + } else { + dm_build_1564 += int(tmp) + dm_build_1568 += int(tmp) + dm_build_1569 += dm_build_1570 + dm_build_1566 += dm_build_1570 + } + } + return dm_build_1568, nil +} + +func (dm_build_1576 *dm_build_1345) dm_build_1575(dm_build_1577 *lob, dm_build_1578 int) (int64, error) { + dm_build_1579 := dm_build_421(dm_build_1576, dm_build_1577, dm_build_1578) + dm_build_1580, dm_build_1581 := dm_build_1576.dm_build_1388(dm_build_1579) + if dm_build_1581 != nil { + return dm_build_1577.length, dm_build_1581 + } + return dm_build_1580.(int64), nil +} + +func (dm_build_1583 *dm_build_1345) dm_build_1582(dm_build_1584 []interface{}, dm_build_1585 []interface{}, dm_build_1586 int) bool { + var dm_build_1587 = false + dm_build_1584[dm_build_1586] = dm_build_1585[dm_build_1586] + + if binder, ok := dm_build_1585[dm_build_1586].(iOffRowBinder); ok { + dm_build_1587 = true + dm_build_1584[dm_build_1586] = make([]byte, 0) + var lob lob + if l, ok := binder.getObj().(DmBlob); ok { + lob = l.lob + } else if l, ok := binder.getObj().(DmClob); ok { + lob = l.lob + } + if &lob != nil && lob.canOptimized(dm_build_1583.dm_build_1349) { + dm_build_1584[dm_build_1586] = &lobCtl{lob.buildCtlData()} + dm_build_1587 = false + } + } else { + dm_build_1584[dm_build_1586] = dm_build_1585[dm_build_1586] + } + return dm_build_1587 +} + +func (dm_build_1589 *dm_build_1345) dm_build_1588(dm_build_1590 *DmStatement, dm_build_1591 parameter, dm_build_1592 int, dm_build_1593 iOffRowBinder) error { + var dm_build_1594 = Dm_build_935() + dm_build_1593.read(dm_build_1594) + var dm_build_1595 = 0 + for !dm_build_1593.isReadOver() || dm_build_1594.Dm_build_936() > 0 { + if !dm_build_1593.isReadOver() && dm_build_1594.Dm_build_936() < Dm_build_127 { + dm_build_1593.read(dm_build_1594) + } + if dm_build_1594.Dm_build_936() > Dm_build_127 { + dm_build_1595 = Dm_build_127 + } else { + dm_build_1595 = dm_build_1594.Dm_build_936() + } + + putData := dm_build_526(dm_build_1589, dm_build_1590, int16(dm_build_1592), dm_build_1594, int32(dm_build_1595)) + _, err := dm_build_1589.dm_build_1388(putData) + if err != nil { + return err + } + } + return nil +} + +func (dm_build_1597 *dm_build_1345) dm_build_1596() ([]byte, error) { + var dm_build_1598 error + if dm_build_1597.dm_build_1353 == nil { + if dm_build_1597.dm_build_1353, dm_build_1598 = security.NewClientKeyPair(); dm_build_1598 != nil { + return nil, dm_build_1598 + } + } + return security.Bn2Bytes(dm_build_1597.dm_build_1353.GetY(), security.DH_KEY_LENGTH), nil +} + +func (dm_build_1600 *dm_build_1345) dm_build_1599() (*security.DhKey, error) { + var dm_build_1601 error + if dm_build_1600.dm_build_1353 == nil { + if dm_build_1600.dm_build_1353, dm_build_1601 = security.NewClientKeyPair(); dm_build_1601 != nil { + return nil, dm_build_1601 + } + } + return dm_build_1600.dm_build_1353, nil +} + +func (dm_build_1603 *dm_build_1345) dm_build_1602(dm_build_1604 int, dm_build_1605 []byte, dm_build_1606 string, dm_build_1607 int) (dm_build_1608 error) { + if dm_build_1604 > 0 && dm_build_1604 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_1605 != nil { + dm_build_1603.dm_build_1350, dm_build_1608 = security.NewSymmCipher(dm_build_1604, dm_build_1605) + } else if dm_build_1604 >= security.MIN_EXTERNAL_CIPHER_ID { + if dm_build_1603.dm_build_1350, dm_build_1608 = security.NewThirdPartCipher(dm_build_1604, dm_build_1605, dm_build_1606, dm_build_1607); dm_build_1608 != nil { + dm_build_1608 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_1608.Error()).throw() + } + } + return +} + +func (dm_build_1610 *dm_build_1345) dm_build_1609(dm_build_1611 bool) (dm_build_1612 error) { + if dm_build_1610.dm_build_1347, dm_build_1612 = security.NewTLSFromTCP(dm_build_1610.dm_build_1346, dm_build_1610.dm_build_1349.dmConnector.sslCertPath, dm_build_1610.dm_build_1349.dmConnector.sslKeyPath, dm_build_1610.dm_build_1349.dmConnector.user); dm_build_1612 != nil { + return + } + if !dm_build_1611 { + dm_build_1610.dm_build_1347 = nil + } + return +} + +func (dm_build_1614 *dm_build_1345) dm_build_1613(dm_build_1615 dm_build_135) bool { + return dm_build_1615.dm_build_150() != Dm_build_42 && dm_build_1614.dm_build_1349.sslEncrypt == 1 +} diff --git a/vendor/gitee.com/chunanyong/dm/b.go b/vendor/gitee.com/chunanyong/dm/b.go new file mode 100644 index 000000000..6939100e5 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/b.go @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +type ArrayDescriptor struct { + m_typeDesc *TypeDescriptor +} + +func newArrayDescriptor(fulName string, conn *DmConnection) (*ArrayDescriptor, error) { + + ad := new(ArrayDescriptor) + + if fulName == "" { + return nil, ECGO_INVALID_COMPLEX_TYPE_NAME.throw() + } + + ad.m_typeDesc = newTypeDescriptorWithFulName(fulName, conn) + err := ad.m_typeDesc.parseDescByName() + if err != nil { + return nil, err + } + + return ad, nil +} + +func newArrayDescriptorByTypeDescriptor(desc *TypeDescriptor) *ArrayDescriptor { + ad := new(ArrayDescriptor) + ad.m_typeDesc = desc + return ad +} + +func (ad *ArrayDescriptor) getMDesc() *TypeDescriptor { + return ad.m_typeDesc +} + +func (ad *ArrayDescriptor) getItemDesc() *TypeDescriptor { + return ad.m_typeDesc.m_arrObj +} + +func (ad *ArrayDescriptor) getLength() int { + return ad.m_typeDesc.m_length +} diff --git a/vendor/gitee.com/chunanyong/dm/c.go b/vendor/gitee.com/chunanyong/dm/c.go new file mode 100644 index 000000000..1704999ff --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/c.go @@ -0,0 +1,495 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "io" + "math" +) + +type Dm_build_1009 struct { + dm_build_1010 []byte + dm_build_1011 int +} + +func Dm_build_1012(dm_build_1013 int) *Dm_build_1009 { + return &Dm_build_1009{make([]byte, 0, dm_build_1013), 0} +} + +func Dm_build_1014(dm_build_1015 []byte) *Dm_build_1009 { + return &Dm_build_1009{dm_build_1015, 0} +} + +func (dm_build_1017 *Dm_build_1009) dm_build_1016(dm_build_1018 int) *Dm_build_1009 { + + dm_build_1019 := len(dm_build_1017.dm_build_1010) + dm_build_1020 := cap(dm_build_1017.dm_build_1010) + + if dm_build_1019+dm_build_1018 <= dm_build_1020 { + dm_build_1017.dm_build_1010 = dm_build_1017.dm_build_1010[:dm_build_1019+dm_build_1018] + } else { + + var calCap = int64(math.Max(float64(2*dm_build_1020), float64(dm_build_1018+dm_build_1019))) + + nbuf := make([]byte, dm_build_1018+dm_build_1019, calCap) + copy(nbuf, dm_build_1017.dm_build_1010) + dm_build_1017.dm_build_1010 = nbuf + } + + return dm_build_1017 +} + +func (dm_build_1022 *Dm_build_1009) Dm_build_1021() int { + return len(dm_build_1022.dm_build_1010) +} + +func (dm_build_1024 *Dm_build_1009) Dm_build_1023(dm_build_1025 int) *Dm_build_1009 { + for i := dm_build_1025; i < len(dm_build_1024.dm_build_1010); i++ { + dm_build_1024.dm_build_1010[i] = 0 + } + dm_build_1024.dm_build_1010 = dm_build_1024.dm_build_1010[:dm_build_1025] + return dm_build_1024 +} + +func (dm_build_1027 *Dm_build_1009) Dm_build_1026(dm_build_1028 int) *Dm_build_1009 { + dm_build_1027.dm_build_1011 = dm_build_1028 + return dm_build_1027 +} + +func (dm_build_1030 *Dm_build_1009) Dm_build_1029() int { + return dm_build_1030.dm_build_1011 +} + +func (dm_build_1032 *Dm_build_1009) Dm_build_1031(dm_build_1033 bool) int { + return len(dm_build_1032.dm_build_1010) - dm_build_1032.dm_build_1011 +} + +func (dm_build_1035 *Dm_build_1009) Dm_build_1034(dm_build_1036 int, dm_build_1037 bool, dm_build_1038 bool) *Dm_build_1009 { + + if dm_build_1037 { + if dm_build_1038 { + dm_build_1035.dm_build_1016(dm_build_1036) + } else { + dm_build_1035.dm_build_1010 = dm_build_1035.dm_build_1010[:len(dm_build_1035.dm_build_1010)-dm_build_1036] + } + } else { + if dm_build_1038 { + dm_build_1035.dm_build_1011 += dm_build_1036 + } else { + dm_build_1035.dm_build_1011 -= dm_build_1036 + } + } + + return dm_build_1035 +} + +func (dm_build_1040 *Dm_build_1009) Dm_build_1039(dm_build_1041 io.Reader, dm_build_1042 int) (int, error) { + dm_build_1043 := len(dm_build_1040.dm_build_1010) + dm_build_1040.dm_build_1016(dm_build_1042) + dm_build_1044 := 0 + for dm_build_1042 > 0 { + n, err := dm_build_1041.Read(dm_build_1040.dm_build_1010[dm_build_1043+dm_build_1044:]) + if n > 0 && err == io.EOF { + dm_build_1044 += n + dm_build_1040.dm_build_1010 = dm_build_1040.dm_build_1010[:dm_build_1043+dm_build_1044] + return dm_build_1044, nil + } else if n > 0 && err == nil { + dm_build_1042 -= n + dm_build_1044 += n + } else if n == 0 && err != nil { + return -1, ECGO_COMMUNITION_ERROR.addDetailln(err.Error()).throw() + } + } + + return dm_build_1044, nil +} + +func (dm_build_1046 *Dm_build_1009) Dm_build_1045(dm_build_1047 io.Writer) (*Dm_build_1009, error) { + if _, err := dm_build_1047.Write(dm_build_1046.dm_build_1010); err != nil { + return nil, ECGO_COMMUNITION_ERROR.addDetailln(err.Error()).throw() + } + return dm_build_1046, nil +} + +func (dm_build_1049 *Dm_build_1009) Dm_build_1048(dm_build_1050 bool) int { + dm_build_1051 := len(dm_build_1049.dm_build_1010) + dm_build_1049.dm_build_1016(1) + + if dm_build_1050 { + return copy(dm_build_1049.dm_build_1010[dm_build_1051:], []byte{1}) + } else { + return copy(dm_build_1049.dm_build_1010[dm_build_1051:], []byte{0}) + } +} + +func (dm_build_1053 *Dm_build_1009) Dm_build_1052(dm_build_1054 byte) int { + dm_build_1055 := len(dm_build_1053.dm_build_1010) + dm_build_1053.dm_build_1016(1) + + return copy(dm_build_1053.dm_build_1010[dm_build_1055:], Dm_build_650.Dm_build_828(dm_build_1054)) +} + +func (dm_build_1057 *Dm_build_1009) Dm_build_1056(dm_build_1058 int8) int { + dm_build_1059 := len(dm_build_1057.dm_build_1010) + dm_build_1057.dm_build_1016(1) + + return copy(dm_build_1057.dm_build_1010[dm_build_1059:], Dm_build_650.Dm_build_831(dm_build_1058)) +} + +func (dm_build_1061 *Dm_build_1009) Dm_build_1060(dm_build_1062 int16) int { + dm_build_1063 := len(dm_build_1061.dm_build_1010) + dm_build_1061.dm_build_1016(2) + + return copy(dm_build_1061.dm_build_1010[dm_build_1063:], Dm_build_650.Dm_build_834(dm_build_1062)) +} + +func (dm_build_1065 *Dm_build_1009) Dm_build_1064(dm_build_1066 int32) int { + dm_build_1067 := len(dm_build_1065.dm_build_1010) + dm_build_1065.dm_build_1016(4) + + return copy(dm_build_1065.dm_build_1010[dm_build_1067:], Dm_build_650.Dm_build_837(dm_build_1066)) +} + +func (dm_build_1069 *Dm_build_1009) Dm_build_1068(dm_build_1070 uint8) int { + dm_build_1071 := len(dm_build_1069.dm_build_1010) + dm_build_1069.dm_build_1016(1) + + return copy(dm_build_1069.dm_build_1010[dm_build_1071:], Dm_build_650.Dm_build_849(dm_build_1070)) +} + +func (dm_build_1073 *Dm_build_1009) Dm_build_1072(dm_build_1074 uint16) int { + dm_build_1075 := len(dm_build_1073.dm_build_1010) + dm_build_1073.dm_build_1016(2) + + return copy(dm_build_1073.dm_build_1010[dm_build_1075:], Dm_build_650.Dm_build_852(dm_build_1074)) +} + +func (dm_build_1077 *Dm_build_1009) Dm_build_1076(dm_build_1078 uint32) int { + dm_build_1079 := len(dm_build_1077.dm_build_1010) + dm_build_1077.dm_build_1016(4) + + return copy(dm_build_1077.dm_build_1010[dm_build_1079:], Dm_build_650.Dm_build_855(dm_build_1078)) +} + +func (dm_build_1081 *Dm_build_1009) Dm_build_1080(dm_build_1082 uint64) int { + dm_build_1083 := len(dm_build_1081.dm_build_1010) + dm_build_1081.dm_build_1016(8) + + return copy(dm_build_1081.dm_build_1010[dm_build_1083:], Dm_build_650.Dm_build_858(dm_build_1082)) +} + +func (dm_build_1085 *Dm_build_1009) Dm_build_1084(dm_build_1086 float32) int { + dm_build_1087 := len(dm_build_1085.dm_build_1010) + dm_build_1085.dm_build_1016(4) + + return copy(dm_build_1085.dm_build_1010[dm_build_1087:], Dm_build_650.Dm_build_855(math.Float32bits(dm_build_1086))) +} + +func (dm_build_1089 *Dm_build_1009) Dm_build_1088(dm_build_1090 float64) int { + dm_build_1091 := len(dm_build_1089.dm_build_1010) + dm_build_1089.dm_build_1016(8) + + return copy(dm_build_1089.dm_build_1010[dm_build_1091:], Dm_build_650.Dm_build_858(math.Float64bits(dm_build_1090))) +} + +func (dm_build_1093 *Dm_build_1009) Dm_build_1092(dm_build_1094 []byte) int { + dm_build_1095 := len(dm_build_1093.dm_build_1010) + dm_build_1093.dm_build_1016(len(dm_build_1094)) + return copy(dm_build_1093.dm_build_1010[dm_build_1095:], dm_build_1094) +} + +func (dm_build_1097 *Dm_build_1009) Dm_build_1096(dm_build_1098 []byte) int { + return dm_build_1097.Dm_build_1064(int32(len(dm_build_1098))) + dm_build_1097.Dm_build_1092(dm_build_1098) +} + +func (dm_build_1100 *Dm_build_1009) Dm_build_1099(dm_build_1101 []byte) int { + return dm_build_1100.Dm_build_1068(uint8(len(dm_build_1101))) + dm_build_1100.Dm_build_1092(dm_build_1101) +} + +func (dm_build_1103 *Dm_build_1009) Dm_build_1102(dm_build_1104 []byte) int { + return dm_build_1103.Dm_build_1072(uint16(len(dm_build_1104))) + dm_build_1103.Dm_build_1092(dm_build_1104) +} + +func (dm_build_1106 *Dm_build_1009) Dm_build_1105(dm_build_1107 []byte) int { + return dm_build_1106.Dm_build_1092(dm_build_1107) + dm_build_1106.Dm_build_1052(0) +} + +func (dm_build_1109 *Dm_build_1009) Dm_build_1108(dm_build_1110 string, dm_build_1111 string, dm_build_1112 *DmConnection) int { + dm_build_1113 := Dm_build_650.Dm_build_866(dm_build_1110, dm_build_1111, dm_build_1112) + return dm_build_1109.Dm_build_1096(dm_build_1113) +} + +func (dm_build_1115 *Dm_build_1009) Dm_build_1114(dm_build_1116 string, dm_build_1117 string, dm_build_1118 *DmConnection) int { + dm_build_1119 := Dm_build_650.Dm_build_866(dm_build_1116, dm_build_1117, dm_build_1118) + return dm_build_1115.Dm_build_1099(dm_build_1119) +} + +func (dm_build_1121 *Dm_build_1009) Dm_build_1120(dm_build_1122 string, dm_build_1123 string, dm_build_1124 *DmConnection) int { + dm_build_1125 := Dm_build_650.Dm_build_866(dm_build_1122, dm_build_1123, dm_build_1124) + return dm_build_1121.Dm_build_1102(dm_build_1125) +} + +func (dm_build_1127 *Dm_build_1009) Dm_build_1126(dm_build_1128 string, dm_build_1129 string, dm_build_1130 *DmConnection) int { + dm_build_1131 := Dm_build_650.Dm_build_866(dm_build_1128, dm_build_1129, dm_build_1130) + return dm_build_1127.Dm_build_1105(dm_build_1131) +} + +func (dm_build_1133 *Dm_build_1009) Dm_build_1132() byte { + dm_build_1134 := Dm_build_650.Dm_build_743(dm_build_1133.dm_build_1010, dm_build_1133.dm_build_1011) + dm_build_1133.dm_build_1011++ + return dm_build_1134 +} + +func (dm_build_1136 *Dm_build_1009) Dm_build_1135() int16 { + dm_build_1137 := Dm_build_650.Dm_build_747(dm_build_1136.dm_build_1010, dm_build_1136.dm_build_1011) + dm_build_1136.dm_build_1011 += 2 + return dm_build_1137 +} + +func (dm_build_1139 *Dm_build_1009) Dm_build_1138() int32 { + dm_build_1140 := Dm_build_650.Dm_build_752(dm_build_1139.dm_build_1010, dm_build_1139.dm_build_1011) + dm_build_1139.dm_build_1011 += 4 + return dm_build_1140 +} + +func (dm_build_1142 *Dm_build_1009) Dm_build_1141() int64 { + dm_build_1143 := Dm_build_650.Dm_build_757(dm_build_1142.dm_build_1010, dm_build_1142.dm_build_1011) + dm_build_1142.dm_build_1011 += 8 + return dm_build_1143 +} + +func (dm_build_1145 *Dm_build_1009) Dm_build_1144() float32 { + dm_build_1146 := Dm_build_650.Dm_build_762(dm_build_1145.dm_build_1010, dm_build_1145.dm_build_1011) + dm_build_1145.dm_build_1011 += 4 + return dm_build_1146 +} + +func (dm_build_1148 *Dm_build_1009) Dm_build_1147() float64 { + dm_build_1149 := Dm_build_650.Dm_build_766(dm_build_1148.dm_build_1010, dm_build_1148.dm_build_1011) + dm_build_1148.dm_build_1011 += 8 + return dm_build_1149 +} + +func (dm_build_1151 *Dm_build_1009) Dm_build_1150() uint8 { + dm_build_1152 := Dm_build_650.Dm_build_770(dm_build_1151.dm_build_1010, dm_build_1151.dm_build_1011) + dm_build_1151.dm_build_1011 += 1 + return dm_build_1152 +} + +func (dm_build_1154 *Dm_build_1009) Dm_build_1153() uint16 { + dm_build_1155 := Dm_build_650.Dm_build_774(dm_build_1154.dm_build_1010, dm_build_1154.dm_build_1011) + dm_build_1154.dm_build_1011 += 2 + return dm_build_1155 +} + +func (dm_build_1157 *Dm_build_1009) Dm_build_1156() uint32 { + dm_build_1158 := Dm_build_650.Dm_build_779(dm_build_1157.dm_build_1010, dm_build_1157.dm_build_1011) + dm_build_1157.dm_build_1011 += 4 + return dm_build_1158 +} + +func (dm_build_1160 *Dm_build_1009) Dm_build_1159(dm_build_1161 int) []byte { + dm_build_1162 := Dm_build_650.Dm_build_801(dm_build_1160.dm_build_1010, dm_build_1160.dm_build_1011, dm_build_1161) + dm_build_1160.dm_build_1011 += dm_build_1161 + return dm_build_1162 +} + +func (dm_build_1164 *Dm_build_1009) Dm_build_1163() []byte { + return dm_build_1164.Dm_build_1159(int(dm_build_1164.Dm_build_1138())) +} + +func (dm_build_1166 *Dm_build_1009) Dm_build_1165() []byte { + return dm_build_1166.Dm_build_1159(int(dm_build_1166.Dm_build_1132())) +} + +func (dm_build_1168 *Dm_build_1009) Dm_build_1167() []byte { + return dm_build_1168.Dm_build_1159(int(dm_build_1168.Dm_build_1135())) +} + +func (dm_build_1170 *Dm_build_1009) Dm_build_1169(dm_build_1171 int) []byte { + return dm_build_1170.Dm_build_1159(dm_build_1171) +} + +func (dm_build_1173 *Dm_build_1009) Dm_build_1172() []byte { + dm_build_1174 := 0 + for dm_build_1173.Dm_build_1132() != 0 { + dm_build_1174++ + } + dm_build_1173.Dm_build_1034(dm_build_1174, false, false) + return dm_build_1173.Dm_build_1159(dm_build_1174) +} + +func (dm_build_1176 *Dm_build_1009) Dm_build_1175(dm_build_1177 int, dm_build_1178 string, dm_build_1179 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1176.Dm_build_1159(dm_build_1177), dm_build_1178, dm_build_1179) +} + +func (dm_build_1181 *Dm_build_1009) Dm_build_1180(dm_build_1182 string, dm_build_1183 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1181.Dm_build_1163(), dm_build_1182, dm_build_1183) +} + +func (dm_build_1185 *Dm_build_1009) Dm_build_1184(dm_build_1186 string, dm_build_1187 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1185.Dm_build_1165(), dm_build_1186, dm_build_1187) +} + +func (dm_build_1189 *Dm_build_1009) Dm_build_1188(dm_build_1190 string, dm_build_1191 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1189.Dm_build_1167(), dm_build_1190, dm_build_1191) +} + +func (dm_build_1193 *Dm_build_1009) Dm_build_1192(dm_build_1194 string, dm_build_1195 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1193.Dm_build_1172(), dm_build_1194, dm_build_1195) +} + +func (dm_build_1197 *Dm_build_1009) Dm_build_1196(dm_build_1198 int, dm_build_1199 byte) int { + return dm_build_1197.Dm_build_1232(dm_build_1198, Dm_build_650.Dm_build_828(dm_build_1199)) +} + +func (dm_build_1201 *Dm_build_1009) Dm_build_1200(dm_build_1202 int, dm_build_1203 int16) int { + return dm_build_1201.Dm_build_1232(dm_build_1202, Dm_build_650.Dm_build_834(dm_build_1203)) +} + +func (dm_build_1205 *Dm_build_1009) Dm_build_1204(dm_build_1206 int, dm_build_1207 int32) int { + return dm_build_1205.Dm_build_1232(dm_build_1206, Dm_build_650.Dm_build_837(dm_build_1207)) +} + +func (dm_build_1209 *Dm_build_1009) Dm_build_1208(dm_build_1210 int, dm_build_1211 int64) int { + return dm_build_1209.Dm_build_1232(dm_build_1210, Dm_build_650.Dm_build_840(dm_build_1211)) +} + +func (dm_build_1213 *Dm_build_1009) Dm_build_1212(dm_build_1214 int, dm_build_1215 float32) int { + return dm_build_1213.Dm_build_1232(dm_build_1214, Dm_build_650.Dm_build_843(dm_build_1215)) +} + +func (dm_build_1217 *Dm_build_1009) Dm_build_1216(dm_build_1218 int, dm_build_1219 float64) int { + return dm_build_1217.Dm_build_1232(dm_build_1218, Dm_build_650.Dm_build_846(dm_build_1219)) +} + +func (dm_build_1221 *Dm_build_1009) Dm_build_1220(dm_build_1222 int, dm_build_1223 uint8) int { + return dm_build_1221.Dm_build_1232(dm_build_1222, Dm_build_650.Dm_build_849(dm_build_1223)) +} + +func (dm_build_1225 *Dm_build_1009) Dm_build_1224(dm_build_1226 int, dm_build_1227 uint16) int { + return dm_build_1225.Dm_build_1232(dm_build_1226, Dm_build_650.Dm_build_852(dm_build_1227)) +} + +func (dm_build_1229 *Dm_build_1009) Dm_build_1228(dm_build_1230 int, dm_build_1231 uint32) int { + return dm_build_1229.Dm_build_1232(dm_build_1230, Dm_build_650.Dm_build_855(dm_build_1231)) +} + +func (dm_build_1233 *Dm_build_1009) Dm_build_1232(dm_build_1234 int, dm_build_1235 []byte) int { + return copy(dm_build_1233.dm_build_1010[dm_build_1234:], dm_build_1235) +} + +func (dm_build_1237 *Dm_build_1009) Dm_build_1236(dm_build_1238 int, dm_build_1239 []byte) int { + return dm_build_1237.Dm_build_1204(dm_build_1238, int32(len(dm_build_1239))) + dm_build_1237.Dm_build_1232(dm_build_1238+4, dm_build_1239) +} + +func (dm_build_1241 *Dm_build_1009) Dm_build_1240(dm_build_1242 int, dm_build_1243 []byte) int { + return dm_build_1241.Dm_build_1196(dm_build_1242, byte(len(dm_build_1243))) + dm_build_1241.Dm_build_1232(dm_build_1242+1, dm_build_1243) +} + +func (dm_build_1245 *Dm_build_1009) Dm_build_1244(dm_build_1246 int, dm_build_1247 []byte) int { + return dm_build_1245.Dm_build_1200(dm_build_1246, int16(len(dm_build_1247))) + dm_build_1245.Dm_build_1232(dm_build_1246+2, dm_build_1247) +} + +func (dm_build_1249 *Dm_build_1009) Dm_build_1248(dm_build_1250 int, dm_build_1251 []byte) int { + return dm_build_1249.Dm_build_1232(dm_build_1250, dm_build_1251) + dm_build_1249.Dm_build_1196(dm_build_1250+len(dm_build_1251), 0) +} + +func (dm_build_1253 *Dm_build_1009) Dm_build_1252(dm_build_1254 int, dm_build_1255 string, dm_build_1256 string, dm_build_1257 *DmConnection) int { + return dm_build_1253.Dm_build_1236(dm_build_1254, Dm_build_650.Dm_build_866(dm_build_1255, dm_build_1256, dm_build_1257)) +} + +func (dm_build_1259 *Dm_build_1009) Dm_build_1258(dm_build_1260 int, dm_build_1261 string, dm_build_1262 string, dm_build_1263 *DmConnection) int { + return dm_build_1259.Dm_build_1240(dm_build_1260, Dm_build_650.Dm_build_866(dm_build_1261, dm_build_1262, dm_build_1263)) +} + +func (dm_build_1265 *Dm_build_1009) Dm_build_1264(dm_build_1266 int, dm_build_1267 string, dm_build_1268 string, dm_build_1269 *DmConnection) int { + return dm_build_1265.Dm_build_1244(dm_build_1266, Dm_build_650.Dm_build_866(dm_build_1267, dm_build_1268, dm_build_1269)) +} + +func (dm_build_1271 *Dm_build_1009) Dm_build_1270(dm_build_1272 int, dm_build_1273 string, dm_build_1274 string, dm_build_1275 *DmConnection) int { + return dm_build_1271.Dm_build_1248(dm_build_1272, Dm_build_650.Dm_build_866(dm_build_1273, dm_build_1274, dm_build_1275)) +} + +func (dm_build_1277 *Dm_build_1009) Dm_build_1276(dm_build_1278 int) byte { + return Dm_build_650.Dm_build_871(dm_build_1277.Dm_build_1303(dm_build_1278, 1)) +} + +func (dm_build_1280 *Dm_build_1009) Dm_build_1279(dm_build_1281 int) int16 { + return Dm_build_650.Dm_build_874(dm_build_1280.Dm_build_1303(dm_build_1281, 2)) +} + +func (dm_build_1283 *Dm_build_1009) Dm_build_1282(dm_build_1284 int) int32 { + return Dm_build_650.Dm_build_877(dm_build_1283.Dm_build_1303(dm_build_1284, 4)) +} + +func (dm_build_1286 *Dm_build_1009) Dm_build_1285(dm_build_1287 int) int64 { + return Dm_build_650.Dm_build_880(dm_build_1286.Dm_build_1303(dm_build_1287, 8)) +} + +func (dm_build_1289 *Dm_build_1009) Dm_build_1288(dm_build_1290 int) float32 { + return Dm_build_650.Dm_build_883(dm_build_1289.Dm_build_1303(dm_build_1290, 4)) +} + +func (dm_build_1292 *Dm_build_1009) Dm_build_1291(dm_build_1293 int) float64 { + return Dm_build_650.Dm_build_886(dm_build_1292.Dm_build_1303(dm_build_1293, 8)) +} + +func (dm_build_1295 *Dm_build_1009) Dm_build_1294(dm_build_1296 int) uint8 { + return Dm_build_650.Dm_build_889(dm_build_1295.Dm_build_1303(dm_build_1296, 1)) +} + +func (dm_build_1298 *Dm_build_1009) Dm_build_1297(dm_build_1299 int) uint16 { + return Dm_build_650.Dm_build_892(dm_build_1298.Dm_build_1303(dm_build_1299, 2)) +} + +func (dm_build_1301 *Dm_build_1009) Dm_build_1300(dm_build_1302 int) uint32 { + return Dm_build_650.Dm_build_895(dm_build_1301.Dm_build_1303(dm_build_1302, 4)) +} + +func (dm_build_1304 *Dm_build_1009) Dm_build_1303(dm_build_1305 int, dm_build_1306 int) []byte { + return dm_build_1304.dm_build_1010[dm_build_1305 : dm_build_1305+dm_build_1306] +} + +func (dm_build_1308 *Dm_build_1009) Dm_build_1307(dm_build_1309 int) []byte { + dm_build_1310 := dm_build_1308.Dm_build_1282(dm_build_1309) + return dm_build_1308.Dm_build_1303(dm_build_1309+4, int(dm_build_1310)) +} + +func (dm_build_1312 *Dm_build_1009) Dm_build_1311(dm_build_1313 int) []byte { + dm_build_1314 := dm_build_1312.Dm_build_1276(dm_build_1313) + return dm_build_1312.Dm_build_1303(dm_build_1313+1, int(dm_build_1314)) +} + +func (dm_build_1316 *Dm_build_1009) Dm_build_1315(dm_build_1317 int) []byte { + dm_build_1318 := dm_build_1316.Dm_build_1279(dm_build_1317) + return dm_build_1316.Dm_build_1303(dm_build_1317+2, int(dm_build_1318)) +} + +func (dm_build_1320 *Dm_build_1009) Dm_build_1319(dm_build_1321 int) []byte { + dm_build_1322 := 0 + for dm_build_1320.Dm_build_1276(dm_build_1321) != 0 { + dm_build_1321++ + dm_build_1322++ + } + + return dm_build_1320.Dm_build_1303(dm_build_1321-dm_build_1322, int(dm_build_1322)) +} + +func (dm_build_1324 *Dm_build_1009) Dm_build_1323(dm_build_1325 int, dm_build_1326 string, dm_build_1327 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1324.Dm_build_1307(dm_build_1325), dm_build_1326, dm_build_1327) +} + +func (dm_build_1329 *Dm_build_1009) Dm_build_1328(dm_build_1330 int, dm_build_1331 string, dm_build_1332 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1329.Dm_build_1311(dm_build_1330), dm_build_1331, dm_build_1332) +} + +func (dm_build_1334 *Dm_build_1009) Dm_build_1333(dm_build_1335 int, dm_build_1336 string, dm_build_1337 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1334.Dm_build_1315(dm_build_1335), dm_build_1336, dm_build_1337) +} + +func (dm_build_1339 *Dm_build_1009) Dm_build_1338(dm_build_1340 int, dm_build_1341 string, dm_build_1342 *DmConnection) string { + return Dm_build_650.Dm_build_902(dm_build_1339.Dm_build_1319(dm_build_1340), dm_build_1341, dm_build_1342) +} diff --git a/vendor/gitee.com/chunanyong/dm/d.go b/vendor/gitee.com/chunanyong/dm/d.go new file mode 100644 index 000000000..7f1f96777 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/d.go @@ -0,0 +1,206 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "container/list" + "io" +) + +type Dm_build_931 struct { + dm_build_932 *list.List + dm_build_933 *dm_build_985 + dm_build_934 int +} + +func Dm_build_935() *Dm_build_931 { + return &Dm_build_931{ + dm_build_932: list.New(), + dm_build_934: 0, + } +} + +func (dm_build_937 *Dm_build_931) Dm_build_936() int { + return dm_build_937.dm_build_934 +} + +func (dm_build_939 *Dm_build_931) Dm_build_938(dm_build_940 *Dm_build_1009, dm_build_941 int) int { + var dm_build_942 = 0 + var dm_build_943 = 0 + for dm_build_942 < dm_build_941 && dm_build_939.dm_build_933 != nil { + dm_build_943 = dm_build_939.dm_build_933.dm_build_993(dm_build_940, dm_build_941-dm_build_942) + if dm_build_939.dm_build_933.dm_build_988 == 0 { + dm_build_939.dm_build_975() + } + dm_build_942 += dm_build_943 + dm_build_939.dm_build_934 -= dm_build_943 + } + return dm_build_942 +} + +func (dm_build_945 *Dm_build_931) Dm_build_944(dm_build_946 []byte, dm_build_947 int, dm_build_948 int) int { + var dm_build_949 = 0 + var dm_build_950 = 0 + for dm_build_949 < dm_build_948 && dm_build_945.dm_build_933 != nil { + dm_build_950 = dm_build_945.dm_build_933.dm_build_997(dm_build_946, dm_build_947, dm_build_948-dm_build_949) + if dm_build_945.dm_build_933.dm_build_988 == 0 { + dm_build_945.dm_build_975() + } + dm_build_949 += dm_build_950 + dm_build_945.dm_build_934 -= dm_build_950 + dm_build_947 += dm_build_950 + } + return dm_build_949 +} + +func (dm_build_952 *Dm_build_931) Dm_build_951(dm_build_953 io.Writer, dm_build_954 int) int { + var dm_build_955 = 0 + var dm_build_956 = 0 + for dm_build_955 < dm_build_954 && dm_build_952.dm_build_933 != nil { + dm_build_956 = dm_build_952.dm_build_933.dm_build_1002(dm_build_953, dm_build_954-dm_build_955) + if dm_build_952.dm_build_933.dm_build_988 == 0 { + dm_build_952.dm_build_975() + } + dm_build_955 += dm_build_956 + dm_build_952.dm_build_934 -= dm_build_956 + } + return dm_build_955 +} + +func (dm_build_958 *Dm_build_931) Dm_build_957(dm_build_959 []byte, dm_build_960 int, dm_build_961 int) { + if dm_build_961 == 0 { + return + } + var dm_build_962 = dm_build_989(dm_build_959, dm_build_960, dm_build_961) + if dm_build_958.dm_build_933 == nil { + dm_build_958.dm_build_933 = dm_build_962 + } else { + dm_build_958.dm_build_932.PushBack(dm_build_962) + } + dm_build_958.dm_build_934 += dm_build_961 +} + +func (dm_build_964 *Dm_build_931) dm_build_963(dm_build_965 int) byte { + var dm_build_966 = dm_build_965 + var dm_build_967 = dm_build_964.dm_build_933 + for dm_build_966 > 0 && dm_build_967 != nil { + if dm_build_967.dm_build_988 == 0 { + continue + } + if dm_build_966 > dm_build_967.dm_build_988-1 { + dm_build_966 -= dm_build_967.dm_build_988 + dm_build_967 = dm_build_964.dm_build_932.Front().Value.(*dm_build_985) + } else { + break + } + } + return dm_build_967.dm_build_1006(dm_build_966) +} +func (dm_build_969 *Dm_build_931) Dm_build_968(dm_build_970 *Dm_build_931) { + if dm_build_970.dm_build_934 == 0 { + return + } + var dm_build_971 = dm_build_970.dm_build_933 + for dm_build_971 != nil { + dm_build_969.dm_build_972(dm_build_971) + dm_build_970.dm_build_975() + dm_build_971 = dm_build_970.dm_build_933 + } + dm_build_970.dm_build_934 = 0 +} +func (dm_build_973 *Dm_build_931) dm_build_972(dm_build_974 *dm_build_985) { + if dm_build_974.dm_build_988 == 0 { + return + } + if dm_build_973.dm_build_933 == nil { + dm_build_973.dm_build_933 = dm_build_974 + } else { + dm_build_973.dm_build_932.PushBack(dm_build_974) + } + dm_build_973.dm_build_934 += dm_build_974.dm_build_988 +} + +func (dm_build_976 *Dm_build_931) dm_build_975() { + var dm_build_977 = dm_build_976.dm_build_932.Front() + if dm_build_977 == nil { + dm_build_976.dm_build_933 = nil + } else { + dm_build_976.dm_build_933 = dm_build_977.Value.(*dm_build_985) + dm_build_976.dm_build_932.Remove(dm_build_977) + } +} + +func (dm_build_979 *Dm_build_931) Dm_build_978() []byte { + var dm_build_980 = make([]byte, dm_build_979.dm_build_934) + var dm_build_981 = dm_build_979.dm_build_933 + var dm_build_982 = 0 + var dm_build_983 = len(dm_build_980) + var dm_build_984 = 0 + for dm_build_981 != nil { + if dm_build_981.dm_build_988 > 0 { + if dm_build_983 > dm_build_981.dm_build_988 { + dm_build_984 = dm_build_981.dm_build_988 + } else { + dm_build_984 = dm_build_983 + } + copy(dm_build_980[dm_build_982:dm_build_982+dm_build_984], dm_build_981.dm_build_986[dm_build_981.dm_build_987:dm_build_981.dm_build_987+dm_build_984]) + dm_build_982 += dm_build_984 + dm_build_983 -= dm_build_984 + } + if dm_build_979.dm_build_932.Front() == nil { + dm_build_981 = nil + } else { + dm_build_981 = dm_build_979.dm_build_932.Front().Value.(*dm_build_985) + } + } + return dm_build_980 +} + +type dm_build_985 struct { + dm_build_986 []byte + dm_build_987 int + dm_build_988 int +} + +func dm_build_989(dm_build_990 []byte, dm_build_991 int, dm_build_992 int) *dm_build_985 { + return &dm_build_985{ + dm_build_990, + dm_build_991, + dm_build_992, + } +} + +func (dm_build_994 *dm_build_985) dm_build_993(dm_build_995 *Dm_build_1009, dm_build_996 int) int { + if dm_build_994.dm_build_988 <= dm_build_996 { + dm_build_996 = dm_build_994.dm_build_988 + } + dm_build_995.Dm_build_1092(dm_build_994.dm_build_986[dm_build_994.dm_build_987 : dm_build_994.dm_build_987+dm_build_996]) + dm_build_994.dm_build_987 += dm_build_996 + dm_build_994.dm_build_988 -= dm_build_996 + return dm_build_996 +} + +func (dm_build_998 *dm_build_985) dm_build_997(dm_build_999 []byte, dm_build_1000 int, dm_build_1001 int) int { + if dm_build_998.dm_build_988 <= dm_build_1001 { + dm_build_1001 = dm_build_998.dm_build_988 + } + copy(dm_build_999[dm_build_1000:dm_build_1000+dm_build_1001], dm_build_998.dm_build_986[dm_build_998.dm_build_987:dm_build_998.dm_build_987+dm_build_1001]) + dm_build_998.dm_build_987 += dm_build_1001 + dm_build_998.dm_build_988 -= dm_build_1001 + return dm_build_1001 +} + +func (dm_build_1003 *dm_build_985) dm_build_1002(dm_build_1004 io.Writer, dm_build_1005 int) int { + if dm_build_1003.dm_build_988 <= dm_build_1005 { + dm_build_1005 = dm_build_1003.dm_build_988 + } + dm_build_1004.Write(dm_build_1003.dm_build_986[dm_build_1003.dm_build_987 : dm_build_1003.dm_build_987+dm_build_1005]) + dm_build_1003.dm_build_987 += dm_build_1005 + dm_build_1003.dm_build_988 -= dm_build_1005 + return dm_build_1005 +} +func (dm_build_1007 *dm_build_985) dm_build_1006(dm_build_1008 int) byte { + return dm_build_1007.dm_build_986[dm_build_1007.dm_build_987+dm_build_1008] +} diff --git a/vendor/gitee.com/chunanyong/dm/e.go b/vendor/gitee.com/chunanyong/dm/e.go new file mode 100644 index 000000000..3861183c3 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/e.go @@ -0,0 +1,522 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "bytes" + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/ianaindex" + "golang.org/x/text/transform" + "io" + "io/ioutil" + "math" +) + +type dm_build_649 struct{} + +var Dm_build_650 = &dm_build_649{} + +func (Dm_build_652 *dm_build_649) Dm_build_651(dm_build_653 []byte, dm_build_654 int, dm_build_655 byte) int { + dm_build_653[dm_build_654] = dm_build_655 + return 1 +} + +func (Dm_build_657 *dm_build_649) Dm_build_656(dm_build_658 []byte, dm_build_659 int, dm_build_660 int8) int { + dm_build_658[dm_build_659] = byte(dm_build_660) + return 1 +} + +func (Dm_build_662 *dm_build_649) Dm_build_661(dm_build_663 []byte, dm_build_664 int, dm_build_665 int16) int { + dm_build_663[dm_build_664] = byte(dm_build_665) + dm_build_664++ + dm_build_663[dm_build_664] = byte(dm_build_665 >> 8) + return 2 +} + +func (Dm_build_667 *dm_build_649) Dm_build_666(dm_build_668 []byte, dm_build_669 int, dm_build_670 int32) int { + dm_build_668[dm_build_669] = byte(dm_build_670) + dm_build_669++ + dm_build_668[dm_build_669] = byte(dm_build_670 >> 8) + dm_build_669++ + dm_build_668[dm_build_669] = byte(dm_build_670 >> 16) + dm_build_669++ + dm_build_668[dm_build_669] = byte(dm_build_670 >> 24) + dm_build_669++ + return 4 +} + +func (Dm_build_672 *dm_build_649) Dm_build_671(dm_build_673 []byte, dm_build_674 int, dm_build_675 int64) int { + dm_build_673[dm_build_674] = byte(dm_build_675) + dm_build_674++ + dm_build_673[dm_build_674] = byte(dm_build_675 >> 8) + dm_build_674++ + dm_build_673[dm_build_674] = byte(dm_build_675 >> 16) + dm_build_674++ + dm_build_673[dm_build_674] = byte(dm_build_675 >> 24) + dm_build_674++ + dm_build_673[dm_build_674] = byte(dm_build_675 >> 32) + dm_build_674++ + dm_build_673[dm_build_674] = byte(dm_build_675 >> 40) + dm_build_674++ + dm_build_673[dm_build_674] = byte(dm_build_675 >> 48) + dm_build_674++ + dm_build_673[dm_build_674] = byte(dm_build_675 >> 56) + return 8 +} + +func (Dm_build_677 *dm_build_649) Dm_build_676(dm_build_678 []byte, dm_build_679 int, dm_build_680 float32) int { + return Dm_build_677.Dm_build_696(dm_build_678, dm_build_679, math.Float32bits(dm_build_680)) +} + +func (Dm_build_682 *dm_build_649) Dm_build_681(dm_build_683 []byte, dm_build_684 int, dm_build_685 float64) int { + return Dm_build_682.Dm_build_701(dm_build_683, dm_build_684, math.Float64bits(dm_build_685)) +} + +func (Dm_build_687 *dm_build_649) Dm_build_686(dm_build_688 []byte, dm_build_689 int, dm_build_690 uint8) int { + dm_build_688[dm_build_689] = byte(dm_build_690) + return 1 +} + +func (Dm_build_692 *dm_build_649) Dm_build_691(dm_build_693 []byte, dm_build_694 int, dm_build_695 uint16) int { + dm_build_693[dm_build_694] = byte(dm_build_695) + dm_build_694++ + dm_build_693[dm_build_694] = byte(dm_build_695 >> 8) + return 2 +} + +func (Dm_build_697 *dm_build_649) Dm_build_696(dm_build_698 []byte, dm_build_699 int, dm_build_700 uint32) int { + dm_build_698[dm_build_699] = byte(dm_build_700) + dm_build_699++ + dm_build_698[dm_build_699] = byte(dm_build_700 >> 8) + dm_build_699++ + dm_build_698[dm_build_699] = byte(dm_build_700 >> 16) + dm_build_699++ + dm_build_698[dm_build_699] = byte(dm_build_700 >> 24) + return 3 +} + +func (Dm_build_702 *dm_build_649) Dm_build_701(dm_build_703 []byte, dm_build_704 int, dm_build_705 uint64) int { + dm_build_703[dm_build_704] = byte(dm_build_705) + dm_build_704++ + dm_build_703[dm_build_704] = byte(dm_build_705 >> 8) + dm_build_704++ + dm_build_703[dm_build_704] = byte(dm_build_705 >> 16) + dm_build_704++ + dm_build_703[dm_build_704] = byte(dm_build_705 >> 24) + dm_build_704++ + dm_build_703[dm_build_704] = byte(dm_build_705 >> 32) + dm_build_704++ + dm_build_703[dm_build_704] = byte(dm_build_705 >> 40) + dm_build_704++ + dm_build_703[dm_build_704] = byte(dm_build_705 >> 48) + dm_build_704++ + dm_build_703[dm_build_704] = byte(dm_build_705 >> 56) + return 3 +} + +func (Dm_build_707 *dm_build_649) Dm_build_706(dm_build_708 []byte, dm_build_709 int, dm_build_710 []byte, dm_build_711 int, dm_build_712 int) int { + copy(dm_build_708[dm_build_709:dm_build_709+dm_build_712], dm_build_710[dm_build_711:dm_build_711+dm_build_712]) + return dm_build_712 +} + +func (Dm_build_714 *dm_build_649) Dm_build_713(dm_build_715 []byte, dm_build_716 int, dm_build_717 []byte, dm_build_718 int, dm_build_719 int) int { + dm_build_716 += Dm_build_714.Dm_build_696(dm_build_715, dm_build_716, uint32(dm_build_719)) + return 4 + Dm_build_714.Dm_build_706(dm_build_715, dm_build_716, dm_build_717, dm_build_718, dm_build_719) +} + +func (Dm_build_721 *dm_build_649) Dm_build_720(dm_build_722 []byte, dm_build_723 int, dm_build_724 []byte, dm_build_725 int, dm_build_726 int) int { + dm_build_723 += Dm_build_721.Dm_build_691(dm_build_722, dm_build_723, uint16(dm_build_726)) + return 2 + Dm_build_721.Dm_build_706(dm_build_722, dm_build_723, dm_build_724, dm_build_725, dm_build_726) +} + +func (Dm_build_728 *dm_build_649) Dm_build_727(dm_build_729 []byte, dm_build_730 int, dm_build_731 string, dm_build_732 string, dm_build_733 *DmConnection) int { + dm_build_734 := Dm_build_728.Dm_build_866(dm_build_731, dm_build_732, dm_build_733) + dm_build_730 += Dm_build_728.Dm_build_696(dm_build_729, dm_build_730, uint32(len(dm_build_734))) + return 4 + Dm_build_728.Dm_build_706(dm_build_729, dm_build_730, dm_build_734, 0, len(dm_build_734)) +} + +func (Dm_build_736 *dm_build_649) Dm_build_735(dm_build_737 []byte, dm_build_738 int, dm_build_739 string, dm_build_740 string, dm_build_741 *DmConnection) int { + dm_build_742 := Dm_build_736.Dm_build_866(dm_build_739, dm_build_740, dm_build_741) + + dm_build_738 += Dm_build_736.Dm_build_691(dm_build_737, dm_build_738, uint16(len(dm_build_742))) + return 2 + Dm_build_736.Dm_build_706(dm_build_737, dm_build_738, dm_build_742, 0, len(dm_build_742)) +} + +func (Dm_build_744 *dm_build_649) Dm_build_743(dm_build_745 []byte, dm_build_746 int) byte { + return dm_build_745[dm_build_746] +} + +func (Dm_build_748 *dm_build_649) Dm_build_747(dm_build_749 []byte, dm_build_750 int) int16 { + var dm_build_751 int16 + dm_build_751 = int16(dm_build_749[dm_build_750] & 0xff) + dm_build_750++ + dm_build_751 |= int16(dm_build_749[dm_build_750]&0xff) << 8 + return dm_build_751 +} + +func (Dm_build_753 *dm_build_649) Dm_build_752(dm_build_754 []byte, dm_build_755 int) int32 { + var dm_build_756 int32 + dm_build_756 = int32(dm_build_754[dm_build_755] & 0xff) + dm_build_755++ + dm_build_756 |= int32(dm_build_754[dm_build_755]&0xff) << 8 + dm_build_755++ + dm_build_756 |= int32(dm_build_754[dm_build_755]&0xff) << 16 + dm_build_755++ + dm_build_756 |= int32(dm_build_754[dm_build_755]&0xff) << 24 + return dm_build_756 +} + +func (Dm_build_758 *dm_build_649) Dm_build_757(dm_build_759 []byte, dm_build_760 int) int64 { + var dm_build_761 int64 + dm_build_761 = int64(dm_build_759[dm_build_760] & 0xff) + dm_build_760++ + dm_build_761 |= int64(dm_build_759[dm_build_760]&0xff) << 8 + dm_build_760++ + dm_build_761 |= int64(dm_build_759[dm_build_760]&0xff) << 16 + dm_build_760++ + dm_build_761 |= int64(dm_build_759[dm_build_760]&0xff) << 24 + dm_build_760++ + dm_build_761 |= int64(dm_build_759[dm_build_760]&0xff) << 32 + dm_build_760++ + dm_build_761 |= int64(dm_build_759[dm_build_760]&0xff) << 40 + dm_build_760++ + dm_build_761 |= int64(dm_build_759[dm_build_760]&0xff) << 48 + dm_build_760++ + dm_build_761 |= int64(dm_build_759[dm_build_760]&0xff) << 56 + return dm_build_761 +} + +func (Dm_build_763 *dm_build_649) Dm_build_762(dm_build_764 []byte, dm_build_765 int) float32 { + return math.Float32frombits(Dm_build_763.Dm_build_779(dm_build_764, dm_build_765)) +} + +func (Dm_build_767 *dm_build_649) Dm_build_766(dm_build_768 []byte, dm_build_769 int) float64 { + return math.Float64frombits(Dm_build_767.Dm_build_784(dm_build_768, dm_build_769)) +} + +func (Dm_build_771 *dm_build_649) Dm_build_770(dm_build_772 []byte, dm_build_773 int) uint8 { + return uint8(dm_build_772[dm_build_773] & 0xff) +} + +func (Dm_build_775 *dm_build_649) Dm_build_774(dm_build_776 []byte, dm_build_777 int) uint16 { + var dm_build_778 uint16 + dm_build_778 = uint16(dm_build_776[dm_build_777] & 0xff) + dm_build_777++ + dm_build_778 |= uint16(dm_build_776[dm_build_777]&0xff) << 8 + return dm_build_778 +} + +func (Dm_build_780 *dm_build_649) Dm_build_779(dm_build_781 []byte, dm_build_782 int) uint32 { + var dm_build_783 uint32 + dm_build_783 = uint32(dm_build_781[dm_build_782] & 0xff) + dm_build_782++ + dm_build_783 |= uint32(dm_build_781[dm_build_782]&0xff) << 8 + dm_build_782++ + dm_build_783 |= uint32(dm_build_781[dm_build_782]&0xff) << 16 + dm_build_782++ + dm_build_783 |= uint32(dm_build_781[dm_build_782]&0xff) << 24 + return dm_build_783 +} + +func (Dm_build_785 *dm_build_649) Dm_build_784(dm_build_786 []byte, dm_build_787 int) uint64 { + var dm_build_788 uint64 + dm_build_788 = uint64(dm_build_786[dm_build_787] & 0xff) + dm_build_787++ + dm_build_788 |= uint64(dm_build_786[dm_build_787]&0xff) << 8 + dm_build_787++ + dm_build_788 |= uint64(dm_build_786[dm_build_787]&0xff) << 16 + dm_build_787++ + dm_build_788 |= uint64(dm_build_786[dm_build_787]&0xff) << 24 + dm_build_787++ + dm_build_788 |= uint64(dm_build_786[dm_build_787]&0xff) << 32 + dm_build_787++ + dm_build_788 |= uint64(dm_build_786[dm_build_787]&0xff) << 40 + dm_build_787++ + dm_build_788 |= uint64(dm_build_786[dm_build_787]&0xff) << 48 + dm_build_787++ + dm_build_788 |= uint64(dm_build_786[dm_build_787]&0xff) << 56 + return dm_build_788 +} + +func (Dm_build_790 *dm_build_649) Dm_build_789(dm_build_791 []byte, dm_build_792 int) []byte { + dm_build_793 := Dm_build_790.Dm_build_779(dm_build_791, dm_build_792) + + dm_build_794 := make([]byte, dm_build_793) + copy(dm_build_794[:int(dm_build_793)], dm_build_791[dm_build_792+4:dm_build_792+4+int(dm_build_793)]) + return dm_build_794 +} + +func (Dm_build_796 *dm_build_649) Dm_build_795(dm_build_797 []byte, dm_build_798 int) []byte { + dm_build_799 := Dm_build_796.Dm_build_774(dm_build_797, dm_build_798) + + dm_build_800 := make([]byte, dm_build_799) + copy(dm_build_800[:int(dm_build_799)], dm_build_797[dm_build_798+2:dm_build_798+2+int(dm_build_799)]) + return dm_build_800 +} + +func (Dm_build_802 *dm_build_649) Dm_build_801(dm_build_803 []byte, dm_build_804 int, dm_build_805 int) []byte { + + dm_build_806 := make([]byte, dm_build_805) + copy(dm_build_806[:dm_build_805], dm_build_803[dm_build_804:dm_build_804+dm_build_805]) + return dm_build_806 +} + +func (Dm_build_808 *dm_build_649) Dm_build_807(dm_build_809 []byte, dm_build_810 int, dm_build_811 int, dm_build_812 string, dm_build_813 *DmConnection) string { + return Dm_build_808.Dm_build_902(dm_build_809[dm_build_810:dm_build_810+dm_build_811], dm_build_812, dm_build_813) +} + +func (Dm_build_815 *dm_build_649) Dm_build_814(dm_build_816 []byte, dm_build_817 int, dm_build_818 string, dm_build_819 *DmConnection) string { + dm_build_820 := Dm_build_815.Dm_build_779(dm_build_816, dm_build_817) + dm_build_817 += 4 + return Dm_build_815.Dm_build_807(dm_build_816, dm_build_817, int(dm_build_820), dm_build_818, dm_build_819) +} + +func (Dm_build_822 *dm_build_649) Dm_build_821(dm_build_823 []byte, dm_build_824 int, dm_build_825 string, dm_build_826 *DmConnection) string { + dm_build_827 := Dm_build_822.Dm_build_774(dm_build_823, dm_build_824) + dm_build_824 += 2 + return Dm_build_822.Dm_build_807(dm_build_823, dm_build_824, int(dm_build_827), dm_build_825, dm_build_826) +} + +func (Dm_build_829 *dm_build_649) Dm_build_828(dm_build_830 byte) []byte { + return []byte{dm_build_830} +} + +func (Dm_build_832 *dm_build_649) Dm_build_831(dm_build_833 int8) []byte { + return []byte{byte(dm_build_833)} +} + +func (Dm_build_835 *dm_build_649) Dm_build_834(dm_build_836 int16) []byte { + return []byte{byte(dm_build_836), byte(dm_build_836 >> 8)} +} + +func (Dm_build_838 *dm_build_649) Dm_build_837(dm_build_839 int32) []byte { + return []byte{byte(dm_build_839), byte(dm_build_839 >> 8), byte(dm_build_839 >> 16), byte(dm_build_839 >> 24)} +} + +func (Dm_build_841 *dm_build_649) Dm_build_840(dm_build_842 int64) []byte { + return []byte{byte(dm_build_842), byte(dm_build_842 >> 8), byte(dm_build_842 >> 16), byte(dm_build_842 >> 24), byte(dm_build_842 >> 32), + byte(dm_build_842 >> 40), byte(dm_build_842 >> 48), byte(dm_build_842 >> 56)} +} + +func (Dm_build_844 *dm_build_649) Dm_build_843(dm_build_845 float32) []byte { + return Dm_build_844.Dm_build_855(math.Float32bits(dm_build_845)) +} + +func (Dm_build_847 *dm_build_649) Dm_build_846(dm_build_848 float64) []byte { + return Dm_build_847.Dm_build_858(math.Float64bits(dm_build_848)) +} + +func (Dm_build_850 *dm_build_649) Dm_build_849(dm_build_851 uint8) []byte { + return []byte{byte(dm_build_851)} +} + +func (Dm_build_853 *dm_build_649) Dm_build_852(dm_build_854 uint16) []byte { + return []byte{byte(dm_build_854), byte(dm_build_854 >> 8)} +} + +func (Dm_build_856 *dm_build_649) Dm_build_855(dm_build_857 uint32) []byte { + return []byte{byte(dm_build_857), byte(dm_build_857 >> 8), byte(dm_build_857 >> 16), byte(dm_build_857 >> 24)} +} + +func (Dm_build_859 *dm_build_649) Dm_build_858(dm_build_860 uint64) []byte { + return []byte{byte(dm_build_860), byte(dm_build_860 >> 8), byte(dm_build_860 >> 16), byte(dm_build_860 >> 24), byte(dm_build_860 >> 32), byte(dm_build_860 >> 40), byte(dm_build_860 >> 48), byte(dm_build_860 >> 56)} +} + +func (Dm_build_862 *dm_build_649) Dm_build_861(dm_build_863 []byte, dm_build_864 string, dm_build_865 *DmConnection) []byte { + if dm_build_864 == "UTF-8" { + return dm_build_863 + } + + if dm_build_865 == nil { + if e := dm_build_907(dm_build_864); e != nil { + tmp, err := ioutil.ReadAll( + transform.NewReader(bytes.NewReader(dm_build_863), e.NewEncoder()), + ) + if err != nil { + panic("UTF8 To Charset error!") + } + + return tmp + } + + panic("Unsupported Charset!") + } + + if dm_build_865.encodeBuffer == nil { + dm_build_865.encodeBuffer = bytes.NewBuffer(nil) + dm_build_865.encode = dm_build_907(dm_build_865.getServerEncoding()) + dm_build_865.transformReaderDst = make([]byte, 4096) + dm_build_865.transformReaderSrc = make([]byte, 4096) + } + + if e := dm_build_865.encode; e != nil { + + dm_build_865.encodeBuffer.Reset() + + n, err := dm_build_865.encodeBuffer.ReadFrom( + Dm_build_921(bytes.NewReader(dm_build_863), e.NewEncoder(), dm_build_865.transformReaderDst, dm_build_865.transformReaderSrc), + ) + if err != nil { + panic("UTF8 To Charset error!") + } + var tmp = make([]byte, n) + if _, err = dm_build_865.encodeBuffer.Read(tmp); err != nil { + panic("UTF8 To Charset error!") + } + return tmp + } + + panic("Unsupported Charset!") +} + +func (Dm_build_867 *dm_build_649) Dm_build_866(dm_build_868 string, dm_build_869 string, dm_build_870 *DmConnection) []byte { + return Dm_build_867.Dm_build_861([]byte(dm_build_868), dm_build_869, dm_build_870) +} + +func (Dm_build_872 *dm_build_649) Dm_build_871(dm_build_873 []byte) byte { + return Dm_build_872.Dm_build_743(dm_build_873, 0) +} + +func (Dm_build_875 *dm_build_649) Dm_build_874(dm_build_876 []byte) int16 { + return Dm_build_875.Dm_build_747(dm_build_876, 0) +} + +func (Dm_build_878 *dm_build_649) Dm_build_877(dm_build_879 []byte) int32 { + return Dm_build_878.Dm_build_752(dm_build_879, 0) +} + +func (Dm_build_881 *dm_build_649) Dm_build_880(dm_build_882 []byte) int64 { + return Dm_build_881.Dm_build_757(dm_build_882, 0) +} + +func (Dm_build_884 *dm_build_649) Dm_build_883(dm_build_885 []byte) float32 { + return Dm_build_884.Dm_build_762(dm_build_885, 0) +} + +func (Dm_build_887 *dm_build_649) Dm_build_886(dm_build_888 []byte) float64 { + return Dm_build_887.Dm_build_766(dm_build_888, 0) +} + +func (Dm_build_890 *dm_build_649) Dm_build_889(dm_build_891 []byte) uint8 { + return Dm_build_890.Dm_build_770(dm_build_891, 0) +} + +func (Dm_build_893 *dm_build_649) Dm_build_892(dm_build_894 []byte) uint16 { + return Dm_build_893.Dm_build_774(dm_build_894, 0) +} + +func (Dm_build_896 *dm_build_649) Dm_build_895(dm_build_897 []byte) uint32 { + return Dm_build_896.Dm_build_779(dm_build_897, 0) +} + +func (Dm_build_899 *dm_build_649) Dm_build_898(dm_build_900 []byte, dm_build_901 string) []byte { + if dm_build_901 == "UTF-8" { + return dm_build_900 + } + + if e := dm_build_907(dm_build_901); e != nil { + + tmp, err := ioutil.ReadAll( + transform.NewReader(bytes.NewReader(dm_build_900), e.NewDecoder()), + ) + if err != nil { + + panic("Charset To UTF8 error!") + } + + return tmp + } + + panic("Unsupported Charset!") + +} + +func (Dm_build_903 *dm_build_649) Dm_build_902(dm_build_904 []byte, dm_build_905 string, dm_build_906 *DmConnection) string { + return string(Dm_build_903.Dm_build_898(dm_build_904, dm_build_905)) +} + +func dm_build_907(dm_build_908 string) encoding.Encoding { + if e, err := ianaindex.MIB.Encoding(dm_build_908); err == nil && e != nil { + return e + } + return nil +} + +type Dm_build_909 struct { + dm_build_910 io.Reader + dm_build_911 transform.Transformer + dm_build_912 error + + dm_build_913 []byte + dm_build_914, dm_build_915 int + + dm_build_916 []byte + dm_build_917, dm_build_918 int + + dm_build_919 bool +} + +const dm_build_920 = 4096 + +func Dm_build_921(dm_build_922 io.Reader, dm_build_923 transform.Transformer, dm_build_924 []byte, dm_build_925 []byte) *Dm_build_909 { + dm_build_923.Reset() + return &Dm_build_909{ + dm_build_910: dm_build_922, + dm_build_911: dm_build_923, + dm_build_913: dm_build_924, + dm_build_916: dm_build_925, + } +} + +func (dm_build_927 *Dm_build_909) Read(dm_build_928 []byte) (int, error) { + dm_build_929, dm_build_930 := 0, error(nil) + for { + + if dm_build_927.dm_build_914 != dm_build_927.dm_build_915 { + dm_build_929 = copy(dm_build_928, dm_build_927.dm_build_913[dm_build_927.dm_build_914:dm_build_927.dm_build_915]) + dm_build_927.dm_build_914 += dm_build_929 + if dm_build_927.dm_build_914 == dm_build_927.dm_build_915 && dm_build_927.dm_build_919 { + return dm_build_929, dm_build_927.dm_build_912 + } + return dm_build_929, nil + } else if dm_build_927.dm_build_919 { + return 0, dm_build_927.dm_build_912 + } + + if dm_build_927.dm_build_917 != dm_build_927.dm_build_918 || dm_build_927.dm_build_912 != nil { + dm_build_927.dm_build_914 = 0 + dm_build_927.dm_build_915, dm_build_929, dm_build_930 = dm_build_927.dm_build_911.Transform(dm_build_927.dm_build_913, dm_build_927.dm_build_916[dm_build_927.dm_build_917:dm_build_927.dm_build_918], dm_build_927.dm_build_912 == io.EOF) + dm_build_927.dm_build_917 += dm_build_929 + + switch { + case dm_build_930 == nil: + if dm_build_927.dm_build_917 != dm_build_927.dm_build_918 { + dm_build_927.dm_build_912 = nil + } + + dm_build_927.dm_build_919 = dm_build_927.dm_build_912 != nil + continue + case dm_build_930 == transform.ErrShortDst && (dm_build_927.dm_build_915 != 0 || dm_build_929 != 0): + + continue + case dm_build_930 == transform.ErrShortSrc && dm_build_927.dm_build_918-dm_build_927.dm_build_917 != len(dm_build_927.dm_build_916) && dm_build_927.dm_build_912 == nil: + + default: + dm_build_927.dm_build_919 = true + + if dm_build_927.dm_build_912 == nil || dm_build_927.dm_build_912 == io.EOF { + dm_build_927.dm_build_912 = dm_build_930 + } + continue + } + } + + if dm_build_927.dm_build_917 != 0 { + dm_build_927.dm_build_917, dm_build_927.dm_build_918 = 0, copy(dm_build_927.dm_build_916, dm_build_927.dm_build_916[dm_build_927.dm_build_917:dm_build_927.dm_build_918]) + } + dm_build_929, dm_build_927.dm_build_912 = dm_build_927.dm_build_910.Read(dm_build_927.dm_build_916[dm_build_927.dm_build_918:]) + dm_build_927.dm_build_918 += dm_build_929 + } +} diff --git a/vendor/gitee.com/chunanyong/dm/f.go b/vendor/gitee.com/chunanyong/dm/f.go new file mode 100644 index 000000000..6cb031829 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/f.go @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "bytes" + "compress/zlib" + "github.com/golang/snappy" +) + +func Compress(srcBuffer *Dm_build_1009, offset int, length int, compressID int) ([]byte, error) { + if compressID == Dm_build_93 { + return snappy.Encode(nil, srcBuffer.Dm_build_1303(offset, length)), nil + } + return GzlibCompress(srcBuffer, offset, length) +} + +func UnCompress(srcBytes []byte, compressID int) ([]byte, error) { + if compressID == Dm_build_93 { + return snappy.Decode(nil, srcBytes) + } + return GzlibUncompress(srcBytes) +} + +func GzlibCompress(srcBuffer *Dm_build_1009, offset int, length int) ([]byte, error) { + var ret bytes.Buffer + var w = zlib.NewWriter(&ret) + w.Write(srcBuffer.Dm_build_1303(offset, length)) + w.Close() + return ret.Bytes(), nil +} + +func GzlibUncompress(srcBytes []byte) ([]byte, error) { + var bytesBuf = new(bytes.Buffer) + r, err := zlib.NewReader(bytes.NewReader(srcBytes)) + if err != nil { + return nil, err + } + defer r.Close() + _, err = bytesBuf.ReadFrom(r) + if err != nil { + return nil, err + } + return bytesBuf.Bytes(), nil +} diff --git a/vendor/gitee.com/chunanyong/dm/g.go b/vendor/gitee.com/chunanyong/dm/g.go new file mode 100644 index 000000000..a94db26f9 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/g.go @@ -0,0 +1,2158 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "fmt" + "math" + "os" + "sort" + "strconv" + "strings" + "sync" + "sync/atomic" + "time" + + "gitee.com/chunanyong/dm/util" +) + +type ExecuteTypeEnum int + +const ( + Execute ExecuteTypeEnum = iota + ExecuteQuery + ExecuteUpdate +) + +var idGenerator int64 = 0 + +func generateId() string { + return time.Now().String() + strconv.Itoa(int(atomic.AddInt64(&idGenerator, 1))) +} + +func getInt64(counter *int64, reset bool) int64 { + if reset { + return atomic.SwapInt64(counter, 0) + } + return atomic.LoadInt64(counter) +} + +type SqlStatValue struct { + id string + + sql string + + sqlHash int64 + + dataSource string + + dataSourceId string + + executeLastStartTime int64 + + executeBatchSizeTotal int64 + + executeBatchSizeMax int64 + + executeSuccessCount int64 + + executeSpanNanoTotal int64 + + executeSpanNanoMax int64 + + runningCount int64 + + concurrentMax int64 + + resultSetHoldTimeNano int64 + + executeAndResultSetHoldTime int64 + + executeNanoSpanMaxOccurTime int64 + + executeErrorCount int64 + + executeErrorLast error + + executeErrorLastMessage string + + executeErrorLastStackTrace string + + executeErrorLastTime int64 + + updateCount int64 + + updateCountMax int64 + + fetchRowCount int64 + + fetchRowCountMax int64 + + inTransactionCount int64 + + lastSlowParameters string + + clobOpenCount int64 + + blobOpenCount int64 + + readStringLength int64 + + readBytesLength int64 + + inputStreamOpenCount int64 + + readerOpenCount int64 + + histogram_0_1 int64 + + histogram_1_10 int64 + + histogram_10_100 int64 + + histogram_100_1000 int64 + + histogram_1000_10000 int64 + + histogram_10000_100000 int64 + + histogram_100000_1000000 int64 + + histogram_1000000_more int64 + + executeAndResultHoldTime_0_1 int64 + + executeAndResultHoldTime_1_10 int64 + + executeAndResultHoldTime_10_100 int64 + + executeAndResultHoldTime_100_1000 int64 + + executeAndResultHoldTime_1000_10000 int64 + + executeAndResultHoldTime_10000_100000 int64 + + executeAndResultHoldTime_100000_1000000 int64 + + executeAndResultHoldTime_1000000_more int64 + + fetchRowCount_0_1 int64 + + fetchRowCount_1_10 int64 + + fetchRowCount_10_100 int64 + + fetchRowCount_100_1000 int64 + + fetchRowCount_1000_10000 int64 + + fetchRowCount_10000_more int64 + + updateCount_0_1 int64 + + updateCount_1_10 int64 + + updateCount_10_100 int64 + + updateCount_100_1000 int64 + + updateCount_1000_10000 int64 + + updateCount_10000_more int64 +} + +func newSqlStatValue() *SqlStatValue { + ssv := new(SqlStatValue) + return ssv +} + +func (ssv *SqlStatValue) getExecuteHistogram() []int64 { + return []int64{ + ssv.histogram_0_1, + ssv.histogram_1_10, + ssv.histogram_10_100, + ssv.histogram_100_1000, + ssv.histogram_1000_10000, + ssv.histogram_10000_100000, + ssv.histogram_100000_1000000, + ssv.histogram_1000000_more, + } +} + +func (ssv *SqlStatValue) getExecuteAndResultHoldHistogram() []int64 { + return []int64{ssv.executeAndResultHoldTime_0_1, + ssv.executeAndResultHoldTime_1_10, + ssv.executeAndResultHoldTime_10_100, + ssv.executeAndResultHoldTime_100_1000, + ssv.executeAndResultHoldTime_1000_10000, + ssv.executeAndResultHoldTime_10000_100000, + ssv.executeAndResultHoldTime_100000_1000000, + ssv.executeAndResultHoldTime_1000000_more, + } +} + +func (ssv *SqlStatValue) getFetchRowHistogram() []int64 { + return []int64{ssv.fetchRowCount_0_1, + ssv.fetchRowCount_1_10, + ssv.fetchRowCount_10_100, + ssv.fetchRowCount_100_1000, + ssv.fetchRowCount_1000_10000, + ssv.fetchRowCount_10000_more, + } +} + +func (ssv *SqlStatValue) getUpdateHistogram() []int64 { + return []int64{ssv.updateCount_0_1, + ssv.updateCount_1_10, + ssv.updateCount_10_100, + ssv.updateCount_100_1000, + ssv.updateCount_1000_10000, + ssv.updateCount_10000_more, + } +} + +func (ssv *SqlStatValue) getExecuteCount() int64 { + return ssv.executeErrorCount + ssv.executeSuccessCount +} + +func (ssv *SqlStatValue) getExecuteMillisMax() int64 { + return ssv.executeSpanNanoMax / (1000 * 1000) +} + +func (ssv *SqlStatValue) getExecuteMillisTotal() int64 { + return ssv.executeSpanNanoTotal / (1000 * 1000) +} + +func (ssv *SqlStatValue) getHistogramValues() []int64 { + return []int64{ + + ssv.histogram_0_1, + ssv.histogram_1_10, + ssv.histogram_10_100, + ssv.histogram_100_1000, + ssv.histogram_1000_10000, + ssv.histogram_10000_100000, + ssv.histogram_100000_1000000, + ssv.histogram_1000000_more, + } +} + +func (ssv *SqlStatValue) getFetchRowCountHistogramValues() []int64 { + return []int64{ + + ssv.fetchRowCount_0_1, + ssv.fetchRowCount_1_10, + ssv.fetchRowCount_10_100, + ssv.fetchRowCount_100_1000, + ssv.fetchRowCount_1000_10000, + ssv.fetchRowCount_10000_more, + } +} + +func (ssv *SqlStatValue) getUpdateCountHistogramValues() []int64 { + return []int64{ + + ssv.updateCount_0_1, + ssv.updateCount_1_10, + ssv.updateCount_10_100, + ssv.updateCount_100_1000, + ssv.updateCount_1000_10000, + ssv.updateCount_10000_more, + } +} + +func (ssv *SqlStatValue) getExecuteAndResultHoldTimeHistogramValues() []int64 { + return []int64{ + + ssv.executeAndResultHoldTime_0_1, + ssv.executeAndResultHoldTime_1_10, + ssv.executeAndResultHoldTime_10_100, + ssv.executeAndResultHoldTime_100_1000, + ssv.executeAndResultHoldTime_1000_10000, + ssv.executeAndResultHoldTime_10000_100000, + ssv.executeAndResultHoldTime_100000_1000000, + ssv.executeAndResultHoldTime_1000000_more, + } +} + +func (ssv *SqlStatValue) getResultSetHoldTimeMilis() int64 { + return ssv.resultSetHoldTimeNano / (1000 * 1000) +} + +func (ssv *SqlStatValue) getExecuteAndResultSetHoldTimeMilis() int64 { + return ssv.executeAndResultSetHoldTime / (1000 * 1000) +} + +func (ssv *SqlStatValue) getData() map[string]interface{} { + m := make(map[string]interface{}) + + m[idConstStr] = ssv.id + m[dataSourceConstStr] = ssv.dataSource + m["DataSourceId"] = ssv.dataSourceId + m[sqlConstStr] = ssv.sql + m[executeCountConstStr] = ssv.getExecuteCount() + m[errorCountConstStr] = ssv.executeErrorCount + + m[totalTimeConstStr] = ssv.getExecuteMillisTotal() + m["LastTime"] = ssv.executeLastStartTime + m[maxTimespanConstStr] = ssv.getExecuteMillisMax() + m["LastError"] = ssv.executeErrorLast + m[effectedRowCountConstStr] = ssv.updateCount + + m[fetchRowCountConstStr] = ssv.fetchRowCount + m["MaxTimespanOccurTime"] = ssv.executeNanoSpanMaxOccurTime + m["BatchSizeMax"] = ssv.executeBatchSizeMax + m["BatchSizeTotal"] = ssv.executeBatchSizeTotal + m[concurrentMaxConstStr] = ssv.concurrentMax + + m[runningCountConstStr] = ssv.runningCount + + if ssv.executeErrorLastMessage != "" { + m["LastErrorMessage"] = ssv.executeErrorLastMessage + m["LastErrorStackTrace"] = ssv.executeErrorLastStackTrace + m["LastErrorTime"] = ssv.executeErrorLastTime + } else { + m["LastErrorMessage"] = "" + m["LastErrorClass"] = "" + m["LastErrorStackTrace"] = "" + m["LastErrorTime"] = "" + } + + m[urlConstStr] = "" + m[inTransactionCountConstStr] = ssv.inTransactionCount + + m["Histogram"] = ssv.getHistogramValues() + m["LastSlowParameters"] = ssv.lastSlowParameters + m["ResultSetHoldTime"] = ssv.getResultSetHoldTimeMilis() + m["ExecuteAndResultSetHoldTime"] = ssv.getExecuteAndResultSetHoldTimeMilis() + m[fetchRowCountConstStr] = ssv.getFetchRowCountHistogramValues() + + m[effectedRowCountHistogramConstStr] = ssv.getUpdateCountHistogramValues() + m[executeAndResultHoldTimeHistogramConstStr] = ssv.getExecuteAndResultHoldTimeHistogramValues() + m["EffectedRowCountMax"] = ssv.updateCountMax + m["FetchRowCountMax"] = ssv.fetchRowCountMax + m[clobOpenCountConstStr] = ssv.clobOpenCount + + m[blobOpenCountConstStr] = ssv.blobOpenCount + m["ReadStringLength"] = ssv.readStringLength + m["ReadBytesLength"] = ssv.readBytesLength + m["InputStreamOpenCount"] = ssv.inputStreamOpenCount + m["ReaderOpenCount"] = ssv.readerOpenCount + + m["HASH"] = ssv.sqlHash + + m[executeHoldTimeHistogramConstStr] = ssv.getExecuteHistogram() + + return m +} + +type sqlStat struct { + Sql string + + SqlHash int64 + + Id string + + ExecuteLastStartTime int64 + + ExecuteBatchSizeTotal int64 + + ExecuteBatchSizeMax int64 + + ExecuteSuccessCount int64 + + ExecuteSpanNanoTotal int64 + + ExecuteSpanNanoMax int64 + + RunningCount int64 + + ConcurrentMax int64 + + ResultSetHoldTimeNano int64 + + ExecuteAndResultSetHoldTime int64 + + DataSource string + + File string + + ExecuteNanoSpanMaxOccurTime int64 + + ExecuteErrorCount int64 + + ExecuteErrorLast error + + ExecuteErrorLastTime int64 + + UpdateCount int64 + + UpdateCountMax int64 + + FetchRowCount int64 + + FetchRowCountMax int64 + + InTransactionCount int64 + + LastSlowParameters string + + Removed int64 + + ClobOpenCount int64 + + BlobOpenCount int64 + + ReadStringLength int64 + + ReadBytesLength int64 + + InputStreamOpenCount int64 + + ReaderOpenCount int64 + + Histogram_0_1 int64 + + Histogram_1_10 int64 + + Histogram_10_100 int64 + + Histogram_100_1000 int64 + + Histogram_1000_10000 int64 + + Histogram_10000_100000 int64 + + Histogram_100000_1000000 int64 + + Histogram_1000000_more int64 + + ExecuteAndResultHoldTime_0_1 int64 + + ExecuteAndResultHoldTime_1_10 int64 + + ExecuteAndResultHoldTime_10_100 int64 + + ExecuteAndResultHoldTime_100_1000 int64 + + ExecuteAndResultHoldTime_1000_10000 int64 + + ExecuteAndResultHoldTime_10000_100000 int64 + + ExecuteAndResultHoldTime_100000_1000000 int64 + + ExecuteAndResultHoldTime_1000000_more int64 + + FetchRowCount_0_1 int64 + + FetchRowCount_1_10 int64 + + FetchRowCount_10_100 int64 + + FetchRowCount_100_1000 int64 + + FetchRowCount_1000_10000 int64 + + FetchRowCount_10000_more int64 + + UpdateCount_0_1 int64 + + UpdateCount_1_10 int64 + + UpdateCount_10_100 int64 + + UpdateCount_100_1000 int64 + + UpdateCount_1000_10000 int64 + + UpdateCount_10000_more int64 + + DataSourceId string +} + +func NewSqlStat(sql string) *sqlStat { + s := new(sqlStat) + s.Sql = sql + s.Id = "SQL" + generateId() + return s +} + +func (s *sqlStat) reset() { + s.ExecuteLastStartTime = 0 + + s.ExecuteBatchSizeTotal = 0 + s.ExecuteBatchSizeMax = 0 + + s.ExecuteSuccessCount = 0 + s.ExecuteSpanNanoTotal = 0 + s.ExecuteSpanNanoMax = 0 + s.ExecuteNanoSpanMaxOccurTime = 0 + s.ConcurrentMax = 0 + + s.ExecuteErrorCount = 0 + s.ExecuteErrorLast = nil + s.ExecuteErrorLastTime = 0 + + s.UpdateCount = 0 + s.UpdateCountMax = 0 + s.FetchRowCount = 0 + s.FetchRowCountMax = 0 + + s.Histogram_0_1 = 0 + s.Histogram_1_10 = 0 + s.Histogram_10_100 = 0 + s.Histogram_100_1000 = 0 + s.Histogram_1000_10000 = 0 + s.Histogram_10000_100000 = 0 + s.Histogram_100000_1000000 = 0 + s.Histogram_1000000_more = 0 + + s.LastSlowParameters = "" + s.InTransactionCount = 0 + s.ResultSetHoldTimeNano = 0 + s.ExecuteAndResultSetHoldTime = 0 + + s.FetchRowCount_0_1 = 0 + s.FetchRowCount_1_10 = 0 + s.FetchRowCount_10_100 = 0 + s.FetchRowCount_100_1000 = 0 + s.FetchRowCount_1000_10000 = 0 + s.FetchRowCount_10000_more = 0 + + s.UpdateCount_0_1 = 0 + s.UpdateCount_1_10 = 0 + s.UpdateCount_10_100 = 0 + s.UpdateCount_100_1000 = 0 + s.UpdateCount_1000_10000 = 0 + s.UpdateCount_10000_more = 0 + + s.ExecuteAndResultHoldTime_0_1 = 0 + s.ExecuteAndResultHoldTime_1_10 = 0 + s.ExecuteAndResultHoldTime_10_100 = 0 + s.ExecuteAndResultHoldTime_100_1000 = 0 + s.ExecuteAndResultHoldTime_1000_10000 = 0 + s.ExecuteAndResultHoldTime_10000_100000 = 0 + s.ExecuteAndResultHoldTime_100000_1000000 = 0 + s.ExecuteAndResultHoldTime_1000000_more = 0 + + s.BlobOpenCount = 0 + s.ClobOpenCount = 0 + s.ReadStringLength = 0 + s.ReadBytesLength = 0 + s.InputStreamOpenCount = 0 + s.ReaderOpenCount = 0 +} + +func (s *sqlStat) getValueAndReset() *SqlStatValue { + return s.getValue(true) +} + +func (s *sqlStat) getValue(reset bool) *SqlStatValue { + ssv := newSqlStatValue() + ssv.dataSource = s.DataSource + ssv.dataSourceId = s.DataSourceId + ssv.sql = s.Sql + ssv.sqlHash = s.SqlHash + ssv.id = s.Id + ssv.executeLastStartTime = s.ExecuteLastStartTime + if reset { + s.ExecuteLastStartTime = 0 + } + + ssv.executeBatchSizeTotal = getInt64(&s.ExecuteBatchSizeTotal, reset) + ssv.executeBatchSizeMax = getInt64(&s.ExecuteBatchSizeMax, reset) + ssv.executeSuccessCount = getInt64(&s.ExecuteSuccessCount, reset) + ssv.executeSpanNanoTotal = getInt64(&s.ExecuteSpanNanoTotal, reset) + ssv.executeSpanNanoMax = getInt64(&s.ExecuteSpanNanoMax, reset) + ssv.executeNanoSpanMaxOccurTime = s.ExecuteNanoSpanMaxOccurTime + if reset { + s.ExecuteNanoSpanMaxOccurTime = 0 + } + + ssv.runningCount = s.RunningCount + ssv.concurrentMax = getInt64(&s.ConcurrentMax, reset) + ssv.executeErrorCount = getInt64(&s.ExecuteErrorCount, reset) + ssv.executeErrorLast = s.ExecuteErrorLast + if reset { + s.ExecuteErrorLast = nil + } + + ssv.executeErrorLastTime = s.ExecuteErrorLastTime + if reset { + ssv.executeErrorLastTime = 0 + } + + ssv.updateCount = getInt64(&s.UpdateCount, reset) + ssv.updateCountMax = getInt64(&s.UpdateCountMax, reset) + ssv.fetchRowCount = getInt64(&s.FetchRowCount, reset) + ssv.fetchRowCountMax = getInt64(&s.FetchRowCountMax, reset) + ssv.histogram_0_1 = getInt64(&s.Histogram_0_1, reset) + ssv.histogram_1_10 = getInt64(&s.Histogram_1_10, reset) + ssv.histogram_10_100 = getInt64(&s.Histogram_10_100, reset) + ssv.histogram_100_1000 = getInt64(&s.Histogram_100_1000, reset) + ssv.histogram_1000_10000 = getInt64(&s.Histogram_1000_10000, reset) + ssv.histogram_10000_100000 = getInt64(&s.Histogram_10000_100000, reset) + ssv.histogram_100000_1000000 = getInt64(&s.Histogram_100000_1000000, reset) + ssv.histogram_1000000_more = getInt64(&s.Histogram_1000000_more, reset) + ssv.lastSlowParameters = s.LastSlowParameters + if reset { + s.LastSlowParameters = "" + } + + ssv.inTransactionCount = getInt64(&s.InTransactionCount, reset) + ssv.resultSetHoldTimeNano = getInt64(&s.ResultSetHoldTimeNano, reset) + ssv.executeAndResultSetHoldTime = getInt64(&s.ExecuteAndResultSetHoldTime, reset) + ssv.fetchRowCount_0_1 = getInt64(&s.FetchRowCount_0_1, reset) + ssv.fetchRowCount_1_10 = getInt64(&s.FetchRowCount_1_10, reset) + ssv.fetchRowCount_10_100 = getInt64(&s.FetchRowCount_10_100, reset) + ssv.fetchRowCount_100_1000 = getInt64(&s.FetchRowCount_100_1000, reset) + ssv.fetchRowCount_1000_10000 = getInt64(&s.FetchRowCount_1000_10000, reset) + ssv.fetchRowCount_10000_more = getInt64(&s.FetchRowCount_10000_more, reset) + ssv.updateCount_0_1 = getInt64(&s.UpdateCount_0_1, reset) + ssv.updateCount_1_10 = getInt64(&s.UpdateCount_1_10, reset) + ssv.updateCount_10_100 = getInt64(&s.UpdateCount_10_100, reset) + ssv.updateCount_100_1000 = getInt64(&s.UpdateCount_100_1000, reset) + ssv.updateCount_1000_10000 = getInt64(&s.UpdateCount_1000_10000, reset) + ssv.updateCount_10000_more = getInt64(&s.UpdateCount_10000_more, reset) + ssv.executeAndResultHoldTime_0_1 = getInt64(&s.ExecuteAndResultHoldTime_0_1, reset) + ssv.executeAndResultHoldTime_1_10 = getInt64(&s.ExecuteAndResultHoldTime_1_10, reset) + ssv.executeAndResultHoldTime_10_100 = getInt64(&s.ExecuteAndResultHoldTime_10_100, reset) + ssv.executeAndResultHoldTime_100_1000 = getInt64(&s.ExecuteAndResultHoldTime_100_1000, reset) + ssv.executeAndResultHoldTime_1000_10000 = getInt64(&s.ExecuteAndResultHoldTime_1000_10000, reset) + ssv.executeAndResultHoldTime_10000_100000 = getInt64(&s.ExecuteAndResultHoldTime_10000_100000, reset) + ssv.executeAndResultHoldTime_100000_1000000 = getInt64(&s.ExecuteAndResultHoldTime_100000_1000000, reset) + ssv.executeAndResultHoldTime_1000000_more = getInt64(&s.ExecuteAndResultHoldTime_1000000_more, reset) + ssv.blobOpenCount = getInt64(&s.BlobOpenCount, reset) + ssv.clobOpenCount = getInt64(&s.ClobOpenCount, reset) + ssv.readStringLength = getInt64(&s.ReadStringLength, reset) + ssv.readBytesLength = getInt64(&s.ReadBytesLength, reset) + ssv.inputStreamOpenCount = getInt64(&s.InputStreamOpenCount, reset) + ssv.readerOpenCount = getInt64(&s.ReaderOpenCount, reset) + return ssv +} + +func (s *sqlStat) addUpdateCount(delta int64) { + if delta > 0 { + atomic.AddInt64(&s.UpdateCount, delta) + } + + for { + max := atomic.LoadInt64(&s.UpdateCountMax) + if delta <= max { + break + } + if atomic.CompareAndSwapInt64(&s.UpdateCountMax, max, delta) { + break + } + } + + if delta < 1 { + atomic.AddInt64(&s.UpdateCount_0_1, 1) + } else if delta < 10 { + atomic.AddInt64(&s.UpdateCount_1_10, 1) + } else if delta < 100 { + atomic.AddInt64(&s.UpdateCount_10_100, 1) + } else if delta < 1000 { + atomic.AddInt64(&s.UpdateCount_100_1000, 1) + } else if delta < 10000 { + atomic.AddInt64(&s.UpdateCount_1000_10000, 1) + } else { + atomic.AddInt64(&s.UpdateCount_10000_more, 1) + } +} + +func (s *sqlStat) incrementClobOpenCount() { + atomic.AddInt64(&s.ClobOpenCount, 1) +} + +func (s *sqlStat) incrementBlobOpenCount() { + atomic.AddInt64(&s.BlobOpenCount, 1) +} + +func (s *sqlStat) addStringReadLength(length int64) { + atomic.AddInt64(&s.ReadStringLength, length) +} + +func (s *sqlStat) addReadBytesLength(length int64) { + atomic.AddInt64(&s.ReadBytesLength, length) +} + +func (s *sqlStat) addReaderOpenCount(count int64) { + atomic.AddInt64(&s.ReaderOpenCount, count) +} + +func (s *sqlStat) addInputStreamOpenCount(count int64) { + atomic.AddInt64(&s.InputStreamOpenCount, count) +} + +func (s *sqlStat) addFetchRowCount(delta int64) { + atomic.AddInt64(&s.FetchRowCount, delta) + for { + max := atomic.LoadInt64(&s.FetchRowCountMax) + if delta <= max { + break + } + if atomic.CompareAndSwapInt64(&s.FetchRowCountMax, max, delta) { + break + } + } + + if delta < 1 { + atomic.AddInt64(&s.FetchRowCount_0_1, 1) + } else if delta < 10 { + atomic.AddInt64(&s.FetchRowCount_1_10, 1) + } else if delta < 100 { + atomic.AddInt64(&s.FetchRowCount_10_100, 1) + } else if delta < 1000 { + atomic.AddInt64(&s.FetchRowCount_100_1000, 1) + } else if delta < 10000 { + atomic.AddInt64(&s.FetchRowCount_1000_10000, 1) + } else { + atomic.AddInt64(&s.FetchRowCount_10000_more, 1) + } + +} + +func (s *sqlStat) addExecuteBatchCount(batchSize int64) { + atomic.AddInt64(&s.ExecuteBatchSizeTotal, batchSize) + + for { + current := atomic.LoadInt64(&s.ExecuteBatchSizeMax) + if current < batchSize { + if atomic.CompareAndSwapInt64(&s.ExecuteBatchSizeMax, current, batchSize) { + break + } else { + continue + } + } else { + break + } + } +} + +func (s *sqlStat) incrementExecuteSuccessCount() { + atomic.AddInt64(&s.ExecuteSuccessCount, 1) +} + +func (s *sqlStat) incrementRunningCount() { + val := atomic.AddInt64(&s.RunningCount, 1) + + for { + max := atomic.LoadInt64(&s.ConcurrentMax) + if val > max { + if atomic.CompareAndSwapInt64(&s.ConcurrentMax, max, val) { + break + } else { + continue + } + } else { + break + } + } +} + +func (s *sqlStat) decrementRunningCount() { + atomic.AddInt64(&s.RunningCount, -1) +} + +func (s *sqlStat) addExecuteTimeAndResultHoldTimeHistogramRecord(executeType ExecuteTypeEnum, firstResultSet bool, nanoSpan int64, parameters string) { + s.addExecuteTime(nanoSpan, parameters) + + if ExecuteQuery != executeType && !firstResultSet { + s.executeAndResultHoldTimeHistogramRecord(nanoSpan) + } +} + +func (s *sqlStat) executeAndResultHoldTimeHistogramRecord(nanoSpan int64) { + millis := nanoSpan / 1000 / 1000 + + if millis < 1 { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_0_1, 1) + } else if millis < 10 { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_1_10, 1) + } else if millis < 100 { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_10_100, 1) + } else if millis < 1000 { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_100_1000, 1) + } else if millis < 10000 { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_1000_10000, 1) + } else if millis < 100000 { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_10000_100000, 1) + } else if millis < 1000000 { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_100000_1000000, 1) + } else { + atomic.AddInt64(&s.ExecuteAndResultHoldTime_1000000_more, 1) + } +} + +func (s *sqlStat) histogramRecord(nanoSpan int64) { + millis := nanoSpan / 1000 / 1000 + + if millis < 1 { + atomic.AddInt64(&s.Histogram_0_1, 1) + } else if millis < 10 { + atomic.AddInt64(&s.Histogram_1_10, 1) + } else if millis < 100 { + atomic.AddInt64(&s.Histogram_10_100, 1) + } else if millis < 1000 { + atomic.AddInt64(&s.Histogram_100_1000, 1) + } else if millis < 10000 { + atomic.AddInt64(&s.Histogram_1000_10000, 1) + } else if millis < 100000 { + atomic.AddInt64(&s.Histogram_10000_100000, 1) + } else if millis < 1000000 { + atomic.AddInt64(&s.Histogram_100000_1000000, 1) + } else { + atomic.AddInt64(&s.Histogram_1000000_more, 1) + } +} + +func (s *sqlStat) addExecuteTime(nanoSpan int64, parameters string) { + atomic.AddInt64(&s.ExecuteSpanNanoTotal, nanoSpan) + + for { + current := atomic.LoadInt64(&s.ExecuteSpanNanoMax) + if current < nanoSpan { + if atomic.CompareAndSwapInt64(&s.ExecuteSpanNanoMax, current, nanoSpan) { + + s.ExecuteNanoSpanMaxOccurTime = time.Now().UnixNano() + s.LastSlowParameters = parameters + + break + } else { + continue + } + } else { + break + } + } + + s.histogramRecord(nanoSpan) +} + +func (s *sqlStat) getExecuteMillisTotal() int64 { + return s.ExecuteSpanNanoTotal / (1000 * 1000) +} + +func (s *sqlStat) getExecuteMillisMax() int64 { + return s.ExecuteSpanNanoMax / (1000 * 1000) +} + +func (s *sqlStat) incrementInTransactionCount() { + atomic.AddInt64(&s.InTransactionCount, 1) +} + +func (s *sqlStat) getExecuteCount() int64 { + return s.ExecuteErrorCount + s.ExecuteSuccessCount +} + +func (s *sqlStat) getData() map[string]interface{} { + return s.getValue(false).getData() +} + +func (s *sqlStat) getHistogramValues() []int64 { + return []int64{ + + s.Histogram_0_1, + s.Histogram_1_10, + s.Histogram_10_100, + s.Histogram_100_1000, + s.Histogram_1000_10000, + s.Histogram_10000_100000, + s.Histogram_100000_1000000, + s.Histogram_1000000_more, + } +} + +func (s *sqlStat) getHistogramSum() int64 { + values := s.getHistogramValues() + var sum int64 = 0 + for i := 0; i < len(values); i++ { + sum += values[i] + } + return sum +} + +func (s *sqlStat) error(err error) { + atomic.AddInt64(&s.ExecuteErrorCount, 1) + s.ExecuteErrorLastTime = time.Now().UnixNano() + s.ExecuteErrorLast = err +} + +func (s *sqlStat) getResultSetHoldTimeMilis() int64 { + return s.ResultSetHoldTimeNano / (1000 * 1000) +} + +func (s *sqlStat) getExecuteAndResultSetHoldTimeMilis() int64 { + return s.ExecuteAndResultSetHoldTime / (1000 * 1000) +} + +func (s *sqlStat) getFetchRowCountHistogramValues() []int64 { + return []int64{ + + s.FetchRowCount_0_1, + s.FetchRowCount_1_10, + s.FetchRowCount_10_100, + s.FetchRowCount_100_1000, + s.FetchRowCount_1000_10000, + s.FetchRowCount_10000_more, + } +} + +func (s *sqlStat) getUpdateCountHistogramValues() []int64 { + return []int64{ + + s.UpdateCount_0_1, + s.UpdateCount_1_10, + s.UpdateCount_10_100, + s.UpdateCount_100_1000, + s.UpdateCount_1000_10000, + s.UpdateCount_10000_more, + } +} + +func (s *sqlStat) getExecuteAndResultHoldTimeHistogramValues() []int64 { + return []int64{ + + s.ExecuteAndResultHoldTime_0_1, + s.ExecuteAndResultHoldTime_1_10, + s.ExecuteAndResultHoldTime_10_100, + s.ExecuteAndResultHoldTime_100_1000, + s.ExecuteAndResultHoldTime_1000_10000, + s.ExecuteAndResultHoldTime_10000_100000, + s.ExecuteAndResultHoldTime_100000_1000000, + s.ExecuteAndResultHoldTime_1000000_more, + } +} + +func (s *sqlStat) getExecuteAndResultHoldTimeHistogramSum() int64 { + values := s.getExecuteAndResultHoldTimeHistogramValues() + var sum int64 = 0 + for i := 0; i < len(values); i++ { + sum += values[i] + } + return sum +} + +func (s *sqlStat) addResultSetHoldTimeNano(nano int64) { + atomic.AddInt64(&s.ResultSetHoldTimeNano, nano) +} + +func (s *sqlStat) addResultSetHoldTimeNano2(statementExecuteNano int64, resultHoldTimeNano int64) { + atomic.AddInt64(&s.ResultSetHoldTimeNano, resultHoldTimeNano) + atomic.AddInt64(&s.ExecuteAndResultSetHoldTime, statementExecuteNano+resultHoldTimeNano) + s.executeAndResultHoldTimeHistogramRecord((statementExecuteNano + resultHoldTimeNano) / 1000 / 1000) + atomic.AddInt64(&s.UpdateCount_0_1, 1) +} + +type connectionStatValue struct { + id string + + url string + + connCount int64 + + activeConnCount int64 + + maxActiveConnCount int64 + + executeCount int64 + + errorCount int64 + + stmtCount int64 + + activeStmtCount int64 + + maxActiveStmtCount int64 + + commitCount int64 + + rollbackCount int64 + + clobOpenCount int64 + + blobOpenCount int64 + + properties string +} + +func newConnectionStatValue() *connectionStatValue { + csv := new(connectionStatValue) + return csv +} + +func (csv *connectionStatValue) getData() map[string]interface{} { + m := make(map[string]interface{}) + m[idConstStr] = csv.id + m[urlConstStr] = csv.url + m[connCountConstStr] = csv.connCount + m[activeConnCountConstStr] = csv.activeConnCount + m[maxActiveConnCountConstStr] = csv.maxActiveConnCount + + m[stmtCountConstStr] = csv.stmtCount + m[activeStmtCountConstStr] = csv.activeStmtCount + m[maxActiveStmtCountConstStr] = csv.maxActiveStmtCount + + m[executeCountConstStr] = csv.executeCount + m[errorCountConstStr] = csv.errorCount + m[commitCountConstStr] = csv.commitCount + m[rollbackCountConstStr] = csv.rollbackCount + + m[clobOpenCountConstStr] = csv.clobOpenCount + m[blobOpenCountConstStr] = csv.blobOpenCount + + m[propertiesConstStr] = csv.properties + return m +} + +type connectionStat struct { + id string + + url string + + connCount int64 + + activeConnCount int64 + + maxActiveConnCount int64 + + executeCount int64 + + errorCount int64 + + stmtCount int64 + + activeStmtCount int64 + + maxActiveStmtCount int64 + + commitCount int64 + + rollbackCount int64 + + clobOpenCount int64 + + blobOpenCount int64 + + sqlStatMap map[string]*sqlStat + + maxSqlSize int + + skipSqlCount int64 + + lock sync.RWMutex + + properties string +} + +func newConnectionStat(url string) *connectionStat { + cs := new(connectionStat) + cs.maxSqlSize = StatSqlMaxCount + cs.id = "DS" + generateId() + cs.url = url + cs.sqlStatMap = make(map[string]*sqlStat, 200) + return cs +} + +func (cs *connectionStat) createSqlStat(sql string) *sqlStat { + cs.lock.Lock() + defer cs.lock.Unlock() + sqlStat, ok := cs.sqlStatMap[sql] + if !ok { + sqlStat := NewSqlStat(sql) + sqlStat.DataSource = cs.url + sqlStat.DataSourceId = cs.id + if cs.putSqlStat(sqlStat) { + return sqlStat + } else { + return nil + } + } + + return sqlStat + +} + +func (cs *connectionStat) putSqlStat(sqlStat *sqlStat) bool { + if cs.maxSqlSize > 0 && len(cs.sqlStatMap) == cs.maxSqlSize { + if StatSqlRemoveMode == STAT_SQL_REMOVE_OLDEST { + removeSqlStat := cs.eliminateSqlStat() + if removeSqlStat.RunningCount > 0 || removeSqlStat.getExecuteCount() > 0 { + atomic.AddInt64(&cs.skipSqlCount, 1) + } + cs.sqlStatMap[sqlStat.Sql] = sqlStat + return true + } else { + if sqlStat.RunningCount > 0 || sqlStat.getExecuteCount() > 0 { + atomic.AddInt64(&cs.skipSqlCount, 1) + } + return false + } + } else { + cs.sqlStatMap[sqlStat.Sql] = sqlStat + return true + } +} + +func (cs *connectionStat) eliminateSqlStat() *sqlStat { + if cs.maxSqlSize > 0 && len(cs.sqlStatMap) == cs.maxSqlSize { + if StatSqlRemoveMode == STAT_SQL_REMOVE_OLDEST { + for s, item := range cs.sqlStatMap { + if item != nil { + delete(cs.sqlStatMap, s) + return item + } + } + } + } + return nil +} + +func (cs *connectionStat) getSqlStatMap() map[string]*sqlStat { + m := make(map[string]*sqlStat, len(cs.sqlStatMap)) + cs.lock.Lock() + defer cs.lock.Unlock() + for s, item := range cs.sqlStatMap { + m[s] = item + } + return m +} + +func (cs *connectionStat) getSqlStatMapAndReset() []*SqlStatValue { + stats := make([]*sqlStat, 0, len(cs.sqlStatMap)) + cs.lock.Lock() + defer cs.lock.Unlock() + + for s, stat := range cs.sqlStatMap { + + if stat.getExecuteCount() == 0 && stat.RunningCount == 0 { + stat.Removed = 1 + delete(cs.sqlStatMap, s) + } else { + stats = append(stats, stat) + } + } + + values := make([]*SqlStatValue, 0, len(stats)) + for _, stat := range stats { + value := stat.getValueAndReset() + if value.getExecuteCount() == 0 && value.runningCount == 0 { + continue + } + values = append(values, value) + } + return values +} + +func (cs *connectionStat) incrementConn() { + atomic.AddInt64(&cs.connCount, 1) + atomic.AddInt64(&cs.activeConnCount, 1) + count := atomic.LoadInt64(&cs.activeConnCount) + if count > atomic.LoadInt64(&cs.maxActiveConnCount) { + atomic.StoreInt64(&cs.maxActiveConnCount, count) + } +} + +func (cs *connectionStat) decrementConn() { + atomic.AddInt64(&cs.activeConnCount, -1) +} + +func (cs *connectionStat) incrementStmt() { + atomic.AddInt64(&cs.stmtCount, 1) + atomic.AddInt64(&cs.activeStmtCount, 1) + count := atomic.LoadInt64(&cs.activeStmtCount) + if count > atomic.LoadInt64(&cs.maxActiveStmtCount) { + atomic.StoreInt64(&cs.maxActiveStmtCount, count) + } +} + +func (cs *connectionStat) decrementStmt() { + atomic.AddInt64(&cs.activeStmtCount, -1) +} + +func (cs *connectionStat) decrementStmtByActiveStmtCount(activeStmtCount int64) { + atomic.AddInt64(&cs.activeStmtCount, -activeStmtCount) +} + +func (cs *connectionStat) incrementExecuteCount() { + atomic.AddInt64(&cs.executeCount, 1) +} + +func (cs *connectionStat) incrementErrorCount() { + atomic.AddInt64(&cs.errorCount, 1) +} + +func (cs *connectionStat) incrementCommitCount() { + atomic.AddInt64(&cs.commitCount, 1) +} + +func (cs *connectionStat) incrementRollbackCount() { + atomic.AddInt64(&cs.rollbackCount, 1) +} + +func (cs *connectionStat) getValue(reset bool) *connectionStatValue { + val := newConnectionStatValue() + val.id = cs.id + val.url = cs.url + + val.connCount = getInt64(&cs.connCount, reset) + val.activeConnCount = getInt64(&cs.activeConnCount, false) + val.maxActiveConnCount = getInt64(&cs.maxActiveConnCount, false) + + val.stmtCount = getInt64(&cs.stmtCount, reset) + val.activeStmtCount = getInt64(&cs.activeStmtCount, false) + val.maxActiveStmtCount = getInt64(&cs.maxActiveStmtCount, false) + + val.commitCount = getInt64(&cs.commitCount, reset) + val.rollbackCount = getInt64(&cs.rollbackCount, reset) + val.executeCount = getInt64(&cs.executeCount, reset) + val.errorCount = getInt64(&cs.errorCount, reset) + + val.blobOpenCount = getInt64(&cs.blobOpenCount, reset) + val.clobOpenCount = getInt64(&cs.clobOpenCount, reset) + + val.properties = cs.properties + return val +} + +func (cs *connectionStat) getData() map[string]interface{} { + return cs.getValue(false).getData() +} + +func (cs *connectionStat) getValueAndReset() *connectionStatValue { + return cs.getValue(true) +} + +type GoStat struct { + connStatMap map[string]*connectionStat + + lock sync.RWMutex + + maxConnSize int + + skipConnCount int64 +} + +func newGoStat(maxConnSize int) *GoStat { + gs := new(GoStat) + if maxConnSize > 0 { + gs.maxConnSize = maxConnSize + } else { + gs.maxConnSize = 1000 + } + + gs.connStatMap = make(map[string]*connectionStat, 16) + return gs +} + +func (gs *GoStat) createConnStat(conn *DmConnection) *connectionStat { + url := conn.dmConnector.host + ":" + strconv.Itoa(int(conn.dmConnector.port)) + gs.lock.Lock() + defer gs.lock.Unlock() + connstat, ok := gs.connStatMap[url] + if !ok { + connstat = newConnectionStat(url) + + remove := len(gs.connStatMap) > gs.maxConnSize + if remove && connstat.activeConnCount > 0 { + atomic.AddInt64(&gs.skipConnCount, 1) + } + + gs.connStatMap[url] = connstat + } + + return connstat +} + +func (gs *GoStat) getConnStatMap() map[string]*connectionStat { + m := make(map[string]*connectionStat, len(gs.connStatMap)) + gs.lock.Lock() + defer gs.lock.Unlock() + + for s, stat := range gs.connStatMap { + m[s] = stat + } + return m +} + +var sqlRowField = []string{rowNumConstStr, dataSourceConstStr, sqlConstStr, executeCountConstStr, + totalTimeConstStr, maxTimespanConstStr, inTransactionCountConstStr, errorCountConstStr, effectedRowCountConstStr, + fetchRowCountConstStr, runningCountConstStr, concurrentMaxConstStr, executeHoldTimeHistogramConstStr, + executeAndResultHoldTimeHistogramConstStr, fetchRowCountHistogramConstStr, effectedRowCountHistogramConstStr} + +var sqlColField = []string{"ID", "DataSource", "SQL", "ExecuteCount", + "ErrorCount", "TotalTime", "LastTime", "MaxTimespan", "LastError", "EffectedRowCount", + "FetchRowCount", "MaxTimespanOccurTime", "BatchSizeMax", "BatchSizeTotal", "ConcurrentMax", + "RunningCount", "Name", "File", "LastErrorMessage", "LastErrorClass", "LastErrorStackTrace", + "LastErrorTime", "DbType", "URL", "InTransactionCount", "Histogram", "LastSlowParameters", + "ResultSetHoldTime", "ExecuteAndResultSetHoldTime", "FetchRowCountHistogram", + "EffectedRowCountHistogram", "ExecuteAndResultHoldTimeHistogram", "EffectedRowCountMax", + "FetchRowCountMax", "ClobOpenCount"} + +const ( + rowNumConstStr = "rowNum" + idConstStr = "ID" + urlConstStr = "Url" + connCountConstStr = "ConnCount" + activeConnCountConstStr = "ActiveConnCount" + maxActiveConnCountConstStr = "MaxActiveConnCount" + stmtCountConstStr = "StmtCount" + activeStmtCountConstStr = "ActiveStmtCount" + maxActiveStmtCountConstStr = "MaxActiveStmtCount" + executeCountConstStr = "ExecuteCount" + errorCountConstStr = "ErrorCount" + commitCountConstStr = "CommitCount" + rollbackCountConstStr = "RollbackCount" + clobOpenCountConstStr = "ClobOpenCount" + blobOpenCountConstStr = "BlobOpenCount" + propertiesConstStr = "Properties" + dataSourceConstStr = "DataSource" + sqlConstStr = "SQL" + totalTimeConstStr = "TotalTime" + maxTimespanConstStr = "MaxTimespan" + inTransactionCountConstStr = "InTransactionCount" + effectedRowCountConstStr = "EffectedRowCount" + fetchRowCountConstStr = "FetchRowCount" + runningCountConstStr = "RunningCount" + concurrentMaxConstStr = "ConcurrentMax" + executeHoldTimeHistogramConstStr = "ExecuteHoldTimeHistogram" + executeAndResultHoldTimeHistogramConstStr = "ExecuteAndResultHoldTimeHistogram" + fetchRowCountHistogramConstStr = "FetchRowCountHistogram" + effectedRowCountHistogramConstStr = "EffectedRowCountHistogram" +) + +var dsRowField = []string{rowNumConstStr, urlConstStr, activeConnCountConstStr, + maxActiveConnCountConstStr, activeStmtCountConstStr, maxActiveStmtCountConstStr, executeCountConstStr, errorCountConstStr, + commitCountConstStr, rollbackCountConstStr} + +var dsColField = []string{"ID", "ConnCount", "ActiveConnCount", + "MaxActiveConnCount", "StmtCount", "ActiveStmtCount", "MaxActiveStmtCount", "ExecuteCount", + "ErrorCount", "CommitCount", "RollbackCount", "ClobOpenCount", "BlobOpenCount"} + +const ( + PROP_NAME_SORT = "sort" + PROP_NAME_SORT_FIELD = "field" + PROP_NAME_SORT_TYPE = "direction" + PROP_NAME_SEARCH = "search" + PROP_NAME_PAGE_NUM = "pageNum" + PROP_NAME_PAGE_SIZE = "pageSize" + PROP_NAME_PAGE_COUNT = "pageCount" + PROP_NAME_TOTAL_ROW_COUNT = "totalRowCount" + PROP_NAME_FLUSH_FREQ = "flushFreq" + PROP_NAME_DATASOURCE_ID = "dataSourceId" + PROP_NAME_SQL_ID = "sqlId" + + URL_SQL = "sql" + URL_SQL_DETAIL = "sqlDetail" + URL_DATASOURCE = "dataSource" + URL_DATASOURCE_DETAIL = "dataSourceDetail" + + RESULT_CODE_SUCCESS = 1 + RESULT_CODE_ERROR = -1 + DEFAULT_PAGE_NUM = 1 + DEFAULT_PAGE_SIZE = int(INT32_MAX) + DEFAULT_ORDER_TYPE = "asc" + DEFAULT_ORDERBY = "DataSourceId" +) + +type StatReader struct { + connStat []map[string]interface{} + + connStatColLens []int + + highFreqSqlStat []map[string]interface{} + + highFreqSqlStatColLens []int + + slowSqlStat []map[string]interface{} + + slowSqlStatColLens []int +} + +func newStatReader() *StatReader { + sr := new(StatReader) + return sr +} + +func (sr *StatReader) readConnStat(retList []string, maxCount int) (bool, []string) { + fields := dsRowField + isAppend := false + if sr.connStat == nil { + sr.connStat = sr.getConnStat("", fields) + sr.connStatColLens = calcColLens(sr.connStat, fields, COL_MAX_LEN) + isAppend = false + } else { + isAppend = true + } + var retContent []map[string]interface{} + if maxCount > 0 && len(sr.connStat) > maxCount { + retContent = sr.connStat[0:maxCount] + sr.connStat = sr.connStat[maxCount:len(sr.connStat)] + } else { + retContent = sr.connStat + sr.connStat = nil + } + retList = append(retList, sr.getFormattedOutput(retContent, fields, sr.connStatColLens, isAppend)) + return sr.connStat != nil, retList +} + +func (sr *StatReader) readHighFreqSqlStat(retList []string, maxCount int) (bool, []string) { + isAppend := false + if sr.highFreqSqlStat == nil { + sr.highFreqSqlStat = sr.getHighFreqSqlStat(StatHighFreqSqlCount, -1, sqlRowField) + sr.highFreqSqlStatColLens = calcColLens(sr.highFreqSqlStat, sqlRowField, COL_MAX_LEN) + isAppend = false + } else { + isAppend = true + } + var retContent []map[string]interface{} + if maxCount > 0 && len(sr.highFreqSqlStat) > maxCount { + retContent = sr.highFreqSqlStat[0:maxCount] + sr.highFreqSqlStat = sr.highFreqSqlStat[maxCount:len(sr.highFreqSqlStat)] + } else { + retContent = sr.highFreqSqlStat + sr.highFreqSqlStat = nil + } + retList = append(retList, sr.getFormattedOutput(retContent, sqlRowField, sr.highFreqSqlStatColLens, isAppend)) + return sr.highFreqSqlStat != nil, retList +} + +func (sr *StatReader) getHighFreqSqlStat(topCount int, sqlId int, + fields []string) []map[string]interface{} { + var content []map[string]interface{} + + if topCount != 0 { + parameters := NewProperties() + parameters.Set(PROP_NAME_SORT_FIELD, "ExecuteCount") + parameters.Set(PROP_NAME_SORT_TYPE, "desc") + parameters.Set(PROP_NAME_PAGE_NUM, "1") + parameters.Set(PROP_NAME_PAGE_SIZE, strconv.Itoa(topCount)) + content = sr.service(URL_SQL, parameters) + if sqlId != -1 { + matchedContent := make([]map[string]interface{}, 0) + for _, sqlStat := range content { + idStr := sqlStat["ID"] + if idStr == sqlId { + matchedContent = append(matchedContent, sqlStat) + break + } + } + content = matchedContent + } + } + + if content == nil { + content = make([]map[string]interface{}, 0) + } else { + i := 1 + for _, m := range content { + m[rowNumConstStr] = i + i++ + } + } + content = addTitles(content, fields) + return content +} + +func (sr *StatReader) readSlowSqlStat(retList []string, maxCount int) (bool, []string) { + isAppend := false + if sr.slowSqlStat == nil { + sr.slowSqlStat = sr.getSlowSqlStat(StatSlowSqlCount, -1, sqlRowField) + sr.slowSqlStatColLens = calcColLens(sr.slowSqlStat, sqlRowField, + COL_MAX_LEN) + isAppend = false + } else { + isAppend = true + } + var retContent []map[string]interface{} + if maxCount > 0 && len(sr.slowSqlStat) > maxCount { + retContent = sr.slowSqlStat[0:maxCount] + sr.slowSqlStat = sr.slowSqlStat[maxCount:len(sr.slowSqlStat)] + } else { + retContent = sr.slowSqlStat + sr.slowSqlStat = nil + } + retList = append(retList, sr.getFormattedOutput(retContent, sqlRowField, sr.slowSqlStatColLens, isAppend)) + return sr.slowSqlStat != nil, retList +} + +func (sr *StatReader) getSlowSqlStat(topCount int, sqlId int, fields []string) []map[string]interface{} { + var content []map[string]interface{} + + if topCount != 0 { + parameters := NewProperties() + parameters.Set(PROP_NAME_SORT_FIELD, "MaxTimespan") + parameters.Set(PROP_NAME_SORT_TYPE, "desc") + parameters.Set(PROP_NAME_PAGE_NUM, "1") + parameters.Set(PROP_NAME_PAGE_SIZE, strconv.Itoa(topCount)) + + content = sr.service(URL_SQL, parameters) + if sqlId != -1 { + matchedContent := make([]map[string]interface{}, 0) + for _, sqlStat := range content { + idStr := sqlStat["ID"] + if idStr == sqlId { + matchedContent = append(matchedContent, sqlStat) + break + } + } + content = matchedContent + } + } + + if content == nil { + content = make([]map[string]interface{}, 0) + } else { + i := 1 + for _, m := range content { + m["rowNum"] = i + i++ + } + } + content = addTitles(content, fields) + return content +} + +func (sr *StatReader) getConnStat(connId string, fields []string) []map[string]interface{} { + content := sr.service(URL_DATASOURCE, nil) + if connId != "" { + matchedContent := make([]map[string]interface{}, 0) + for _, dsStat := range content { + idStr := dsStat["Identity"] + if connId == idStr { + matchedContent = append(matchedContent, dsStat) + break + } + } + content = matchedContent + } + if content == nil { + content = make([]map[string]interface{}, 0) + } else { + i := 1 + for _, m := range content { + m["rowNum"] = i + i++ + } + } + content = addTitles(content, fields) + return content +} + +func (sr *StatReader) getFormattedOutput(content []map[string]interface{}, fields []string, colLens []int, + isAppend bool) string { + return toTable(content, fields, colLens, true, isAppend) +} + +func (sr *StatReader) parseUrl(url string) *Properties { + parameters := NewProperties() + + if url == "" || len(strings.TrimSpace(url)) == 0 { + return parameters + } + + parametersStr := util.StringUtil.SubstringBetween(url, "?", "") + if parametersStr == "" || len(parametersStr) == 0 { + return parameters + } + + parametersArray := strings.Split(parametersStr, "&") + + for _, parameterStr := range parametersArray { + index := strings.Index(parametersStr, "=") + if index <= 0 { + continue + } + + name := parameterStr[0:index] + value := parameterStr[index+1:] + parameters.Set(name, value) + } + return parameters +} + +func (sr *StatReader) service(url string, params *Properties) []map[string]interface{} { + if params != nil { + params.SetProperties(sr.parseUrl(url)) + } else { + params = sr.parseUrl(url) + } + + if strings.Index(url, URL_SQL) == 0 { + array := sr.getSqlStatList(params) + array = sr.comparatorOrderBy(array, params) + params.Set(PROP_NAME_FLUSH_FREQ, strconv.Itoa(StatFlushFreq)) + return array + } else if strings.Index(url, URL_SQL_DETAIL) == 0 { + array := sr.getSqlStatDetailList(params) + return array + } else if strings.Index(url, URL_DATASOURCE) == 0 { + array := sr.getConnStatList(params) + array = sr.comparatorOrderBy(array, params) + params.Set(PROP_NAME_FLUSH_FREQ, strconv.Itoa(StatFlushFreq)) + return array + } else if strings.Index(url, URL_DATASOURCE_DETAIL) == 0 { + array := sr.getConnStatDetailList(params) + return array + } else { + return nil + } +} + +func (sr *StatReader) getSqlStatList(params *Properties) []map[string]interface{} { + array := make([]map[string]interface{}, 0) + connStatMap := goStat.getConnStatMap() + var sqlStatMap map[string]*sqlStat + for _, connStat := range connStatMap { + sqlStatMap = connStat.getSqlStatMap() + for _, sqlStat := range sqlStatMap { + data := sqlStat.getData() + executeCount := data[executeCountConstStr] + runningCount := data[runningCountConstStr] + if executeCount == 0 && runningCount == 0 { + continue + } + + array = append(array, data) + } + } + + return array +} + +func (sr *StatReader) getSqlStatDetailList(params *Properties) []map[string]interface{} { + array := make([]map[string]interface{}, 0) + connStatMap := goStat.getConnStatMap() + var data *sqlStat + sqlId := "" + dsId := "" + if v := params.GetString(PROP_NAME_SQL_ID, ""); v != "" { + sqlId = v + } + if v := params.GetString(PROP_NAME_DATASOURCE_ID, ""); v != "" { + dsId = v + } + if sqlId != "" && dsId != "" { + for _, connStat := range connStatMap { + if dsId != connStat.id { + continue + } else { + sqlStatMap := connStat.getSqlStatMap() + for _, sqlStat := range sqlStatMap { + + if sqlId == sqlStat.Id { + data = sqlStat + break + } + } + } + break + } + } + if data != nil { + + array = append(array, data.getData()) + + } + return array +} + +func (sr *StatReader) getConnStatList(params *Properties) []map[string]interface{} { + array := make([]map[string]interface{}, 0) + connStatMap := goStat.getConnStatMap() + id := "" + if v := params.GetString(PROP_NAME_DATASOURCE_ID, ""); v != "" { + id = v + } + for _, connStat := range connStatMap { + data := connStat.getData() + + connCount := data["ConnCount"] + + if connCount == 0 { + continue + } + + if id != "" { + if id == connStat.id { + array = append(array, data) + break + } else { + continue + } + } else { + + array = append(array, data) + } + + } + return array +} + +func (sr *StatReader) getConnStatDetailList(params *Properties) []map[string]interface{} { + array := make([]map[string]interface{}, 0) + var data *connectionStat + connStatMap := goStat.getConnStatMap() + id := "" + if v := params.GetString(PROP_NAME_DATASOURCE_ID, ""); v != "" { + id = v + } + if id != "" { + for _, connStat := range connStatMap { + if id == connStat.id { + data = connStat + break + } + } + } + if data != nil { + dataValue := data.getValue(false) + m := make(map[string]interface{}, 2) + m["name"] = "数据源" + m["value"] = dataValue.url + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "总会话数" + m["value"] = dataValue.connCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "活动会话数" + m["value"] = dataValue.activeConnCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "活动会话数峰值" + m["value"] = dataValue.maxActiveStmtCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "总句柄数" + m["value"] = dataValue.stmtCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "活动句柄数" + m["value"] = dataValue.activeStmtCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "活动句柄数峰值" + m["value"] = dataValue.maxActiveStmtCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "执行次数" + m["value"] = dataValue.executeCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "执行出错次数" + m["value"] = dataValue.errorCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "提交次数" + m["value"] = dataValue.commitCount + array = append(array, m) + + m = make(map[string]interface{}, 2) + m["name"] = "回滚次数" + m["value"] = dataValue.rollbackCount + array = append(array, m) + + } + return array +} + +type mapSlice struct { + m []map[string]interface{} + isDesc bool + orderByKey string +} + +func newMapSlice(m []map[string]interface{}, isDesc bool, orderByKey string) *mapSlice { + ms := new(mapSlice) + ms.m = m + ms.isDesc = isDesc + ms.orderByKey = orderByKey + return ms +} + +func (ms mapSlice) Len() int { return len(ms.m) } + +func (ms mapSlice) Less(i, j int) bool { + m1 := ms.m[i] + m2 := ms.m[j] + v1 := m1[ms.orderByKey] + v2 := m2[ms.orderByKey] + if v1 == nil { + return true + } else if v2 == nil { + return false + } + + switch v1.(type) { + case int64: + return v1.(int64) < v2.(int64) + case float64: + return v1.(float64) < v2.(float64) + default: + return true + } +} + +func (ms mapSlice) Swap(i, j int) { + ms.m[i], ms.m[j] = ms.m[j], ms.m[i] +} + +func (sr *StatReader) comparatorOrderBy(array []map[string]interface{}, params *Properties) []map[string]interface{} { + if array == nil { + array = make([]map[string]interface{}, 0) + } + + orderBy := DEFAULT_ORDERBY + orderType := DEFAULT_ORDER_TYPE + pageNum := DEFAULT_PAGE_NUM + pageSize := DEFAULT_PAGE_SIZE + if params != nil { + if v := params.GetTrimString(PROP_NAME_SORT_FIELD, ""); v != "" { + orderBy = v + } + + if v := params.GetTrimString(PROP_NAME_SORT_TYPE, ""); v != "" { + orderType = v + } + + if v := params.GetTrimString(PROP_NAME_PAGE_NUM, ""); v != "" { + var err error + pageNum, err = strconv.Atoi(v) + if err != nil { + pageNum = DEFAULT_PAGE_NUM + } + } + if v := params.GetTrimString(PROP_NAME_PAGE_SIZE, ""); v != "" { + var err error + pageSize, err = strconv.Atoi(v) + if err != nil { + pageSize = DEFAULT_PAGE_SIZE + } + } + } + + rowCount := len(array) + pageCount := int(math.Ceil(float64(rowCount * 1.0 / pageSize))) + if pageCount < 1 { + pageCount = 1 + } + + if pageNum > pageCount { + pageNum = pageCount + } + + if len(array) > 0 { + + if orderBy != "" { + sort.Sort(newMapSlice(array, !(DEFAULT_ORDER_TYPE == orderType), orderBy)) + } + + fromIndex := (pageNum - 1) * pageSize + + toIndex := pageNum * pageSize + if toIndex > rowCount { + toIndex = rowCount + } + array = array[fromIndex:toIndex] + } + sr.resetPageInfo(params, rowCount, pageCount, pageNum) + return array +} + +func (sr *StatReader) resetPageInfo(params *Properties, rowCount int, pageCount int, pageNum int) { + + if params != nil { + v := params.GetString(PROP_NAME_PAGE_SIZE, "") + if v != "" { + + params.Set(PROP_NAME_PAGE_COUNT, strconv.Itoa(pageCount)) + params.Set(PROP_NAME_TOTAL_ROW_COUNT, strconv.Itoa(rowCount)) + params.Set(PROP_NAME_PAGE_NUM, strconv.Itoa(pageNum)) + } + } +} + +const COL_MAX_LEN = 32 + +func calcColLens(objList []map[string]interface{}, fields []string, maxColLen int) []int { + + colLen := 0 + colVal := "" + colLens := make([]int, len(fields)) + for _, obj := range objList { + for i := 0; i < len(fields); i++ { + colVal = getColValue(obj[fields[i]]) + colLen = len(colVal) + if colLen > colLens[i] { + colLens[i] = colLen + } + } + } + if maxColLen > 0 { + for i := 0; i < len(fields); i++ { + if colLens[i] > maxColLen { + colLens[i] = maxColLen + } + } + } + return colLens +} + +func addTitles(objList []map[string]interface{}, fields []string) []map[string]interface{} { + titleMap := make(map[string]interface{}, len(fields)) + for i := 0; i < len(fields); i++ { + titleMap[fields[i]] = fields[i] + } + + dst := append(objList, titleMap) + copy(dst[1:], dst[:len(dst)-1]) + dst[0] = titleMap + return dst +} + +func toTable(objList []map[string]interface{}, fields []string, colLens []int, + showAll bool, append bool) string { + if fields == nil || objList == nil { + return "" + } + + if colLens == nil { + colLens = calcColLens(objList, fields, COL_MAX_LEN) + } + + output := &strings.Builder{} + if !append { + sepLine(output, colLens) + } + + for _, obj := range objList { + objMore := obj + for objMore != nil { + objMore = formateLine(output, objMore, fields, colLens, showAll) + } + sepLine(output, colLens) + } + + return output.String() +} + +func formateLine(output *strings.Builder, obj map[string]interface{}, fields []string, colLens []int, + showAll bool) map[string]interface{} { + hasMore := false + objMore := make(map[string]interface{}) + colLen := 0 + colVal := "" + for i := 0; i < len(fields); i++ { + colVal = getColValue(obj[fields[i]]) + + colLen = len(colVal) + if colLen <= colLens[i] { + output.WriteString("|") + output.WriteString(colVal) + blanks(output, colLens[i]-colLen) + if showAll { + objMore[fields[i]] = "" + } + } else { + output.WriteString("|") + if showAll { + output.WriteString(colVal[0:colLens[i]]) + objMore[fields[i]] = colVal[colLens[i]:] + hasMore = true + } else { + output.WriteString(colVal[0:colLens[i]-3] + "...") + } + } + } + output.WriteString("|") + output.WriteString(util.StringUtil.LineSeparator()) + + if hasMore { + return objMore + } else { + return nil + } +} + +func sepLine(output *strings.Builder, colLens []int) { + output.WriteString("+") + for _, colLen := range colLens { + for i := 0; i < colLen; i++ { + output.WriteString("+") + } + output.WriteString("+") + } + output.WriteString(util.StringUtil.LineSeparator()) +} + +func blanks(output *strings.Builder, count int) { + for count > 0 { + output.WriteString(" ") + count-- + } +} + +func getColValue(colObj interface{}) string { + var colVal string + if colObj == nil { + colVal = "" + } else { + colVal = fmt.Sprint(colObj) + } + + colVal = strings.Replace(colVal, "\t", "", -1) + colVal = strings.Replace(colVal, "\n", "", -1) + colVal = strings.Replace(colVal, "\r", "", -1) + + return colVal +} + +const ( + READ_MAX_SIZE = 100 +) + +type statFlusher struct { + sr *StatReader + logList []string + date string + logFile *os.File + flushFreq int + filePath string + filePrefix string + buffer *Dm_build_931 +} + +func newStatFlusher() *statFlusher { + sf := new(statFlusher) + sf.sr = newStatReader() + sf.logList = make([]string, 0, 32) + sf.date = time.Now().Format("2006-01-02") + sf.flushFreq = StatFlushFreq + sf.filePath = StatDir + sf.filePrefix = "dm_go_stat" + sf.buffer = Dm_build_935() + return sf +} + +func (sf *statFlusher) isConnStatEnabled() bool { + return StatEnable +} + +func (sf *statFlusher) isSlowSqlStatEnabled() bool { + return StatEnable +} + +func (sf *statFlusher) isHighFreqSqlStatEnabled() bool { + return StatEnable +} + +func (sf *statFlusher) doRun() { + + for { + if len(goStat.connStatMap) > 0 { + sf.logList = append(sf.logList, time.Now().String()) + if sf.isConnStatEnabled() { + sf.logList = append(sf.logList, "#connection stat") + hasMore := true + for hasMore { + hasMore, sf.logList = sf.sr.readConnStat(sf.logList, READ_MAX_SIZE) + sf.writeAndFlush(sf.logList, 0, len(sf.logList)) + sf.logList = sf.logList[0:0] + } + } + if sf.isHighFreqSqlStatEnabled() { + sf.logList = append(sf.logList, "#top "+strconv.Itoa(StatHighFreqSqlCount)+" high freq sql stat") + hasMore := true + for hasMore { + hasMore, sf.logList = sf.sr.readHighFreqSqlStat(sf.logList, READ_MAX_SIZE) + sf.writeAndFlush(sf.logList, 0, len(sf.logList)) + sf.logList = sf.logList[0:0] + } + } + if sf.isSlowSqlStatEnabled() { + sf.logList = append(sf.logList, "#top "+strconv.Itoa(StatSlowSqlCount)+" slow sql stat") + hasMore := true + for hasMore { + hasMore, sf.logList = sf.sr.readSlowSqlStat(sf.logList, READ_MAX_SIZE) + sf.writeAndFlush(sf.logList, 0, len(sf.logList)) + sf.logList = sf.logList[0:0] + } + } + sf.logList = append(sf.logList, util.StringUtil.LineSeparator()) + sf.logList = append(sf.logList, util.StringUtil.LineSeparator()) + sf.writeAndFlush(sf.logList, 0, len(sf.logList)) + sf.logList = sf.logList[0:0] + time.Sleep(time.Duration(StatFlushFreq) * time.Second) + } + } +} + +func (sf *statFlusher) writeAndFlush(logs []string, startOff int, l int) { + var bytes []byte + for i := startOff; i < startOff+l; i++ { + bytes = []byte(logs[i] + util.StringUtil.LineSeparator()) + + sf.buffer.Dm_build_957(bytes, 0, len(bytes)) + + if sf.buffer.Dm_build_936() >= FLUSH_SIZE { + sf.doFlush(sf.buffer) + } + } + + if sf.buffer.Dm_build_936() > 0 { + sf.doFlush(sf.buffer) + } +} + +func (sf *statFlusher) doFlush(buffer *Dm_build_931) { + if sf.needCreateNewFile() { + sf.closeCurrentFile() + sf.logFile = sf.createNewFile() + } + if sf.logFile != nil { + buffer.Dm_build_951(sf.logFile, buffer.Dm_build_936()) + } +} +func (sf *statFlusher) closeCurrentFile() { + if sf.logFile != nil { + sf.logFile.Close() + sf.logFile = nil + } +} +func (sf *statFlusher) createNewFile() *os.File { + sf.date = time.Now().Format("2006-01-02") + fileName := sf.filePrefix + "_" + sf.date + "_" + strconv.Itoa(time.Now().Nanosecond()) + ".txt" + sf.filePath = StatDir + if len(sf.filePath) > 0 { + if _, err := os.Stat(sf.filePath); err != nil { + os.MkdirAll(sf.filePath, 0755) + } + if _, err := os.Stat(sf.filePath + fileName); err != nil { + logFile, err := os.Create(sf.filePath + fileName) + if err != nil { + fmt.Println(err) + return nil + } + return logFile + } + } + return nil +} +func (sf *statFlusher) needCreateNewFile() bool { + now := time.Now().Format("2006-01-02") + fileInfo, err := sf.logFile.Stat() + return now != sf.date || err != nil || sf.logFile == nil || fileInfo.Size() > int64(MAX_FILE_SIZE) +} diff --git a/vendor/gitee.com/chunanyong/dm/h.go b/vendor/gitee.com/chunanyong/dm/h.go new file mode 100644 index 000000000..6976be71e --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/h.go @@ -0,0 +1,923 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "math" + "strconv" + "strings" + "time" + "unicode" +) + +func encodeByString(x string, column column, conn DmConnection) ([]byte, error) { + dt := make([]int, DT_LEN) + if _, err := toDTFromString(x, dt); err != nil { + return nil, err + } + return encode(dt, column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) +} + +func encodeByTime(x time.Time, column column, conn DmConnection) ([]byte, error) { + dt := toDTFromTime(x) + return encode(dt, column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) +} + +func toTimeFromString(str string, ltz int) time.Time { + dt := make([]int, DT_LEN) + toDTFromString(str, dt) + return toTimeFromDT(dt, ltz) +} + +func toTimeFromDT(dt []int, ltz int) time.Time { + var year, month, day, hour, minute, second, nsec, tz int + + year = dt[OFFSET_YEAR] + + if dt[OFFSET_MONTH] > 0 { + month = dt[OFFSET_MONTH] + } else { + month = 1 + } + + if dt[OFFSET_DAY] > 0 { + day = dt[OFFSET_DAY] + } else { + day = 1 + } + + hour = dt[OFFSET_HOUR] + minute = dt[OFFSET_MINUTE] + second = dt[OFFSET_SECOND] + nsec = dt[OFFSET_NANOSECOND] + if dt[OFFSET_TIMEZONE] == INVALID_VALUE { + tz = ltz * 60 + } else { + tz = dt[OFFSET_TIMEZONE] * 60 + } + return time.Date(year, time.Month(month), day, hour, minute, second, nsec, time.FixedZone("", tz)) +} + +func decode(value []byte, isBdta bool, column column, ltz int, dtz int) []int { + var dt []int + if isBdta { + dt = dmdtDecodeBdta(value) + } else { + dt = dmdtDecodeFast(value) + } + + if column.mask == MASK_LOCAL_DATETIME { + transformTZ(dt, dtz, ltz) + } + + return dt +} + +func dmdtDecodeFast(value []byte) []int { + dt := make([]int, DT_LEN) + dt[OFFSET_TIMEZONE] = INVALID_VALUE + + dtype := 0 + if len(value) == DATE_PREC { + dtype = DATE + } else if len(value) == TIME_PREC { + dtype = TIME + } else if len(value) == TIME_TZ_PREC { + dtype = TIME_TZ + } else if len(value) == DATETIME_PREC { + dtype = DATETIME + } else if len(value) == DATETIME2_PREC { + dtype = DATETIME2 + } else if len(value) == DATETIME_TZ_PREC { + dtype = DATETIME_TZ + } else if len(value) == DATETIME2_TZ_PREC { + dtype = DATETIME2_TZ + } + + if dtype == DATE { + + dt[OFFSET_YEAR] = int(Dm_build_650.Dm_build_747(value, 0)) & 0x7FFF + if dt[OFFSET_YEAR] > 9999 { + dt[OFFSET_YEAR] = int(int16(dt[OFFSET_YEAR] | 0x8000)) + } + + dt[OFFSET_MONTH] = ((int(value[1]) >> 7) & 0x1) + ((int(value[2]) & 0x07) << 1) + + dt[OFFSET_DAY] = ((int(value[2]) & 0xF8) >> 3) & 0x1f + } else if dtype == TIME { + dt[OFFSET_HOUR] = int(value[0]) & 0x1F + dt[OFFSET_MINUTE] = ((int(value[0]) >> 5) & 0x07) + ((int(value[1]) & 0x07) << 3) + dt[OFFSET_SECOND] = ((int(value[1]) >> 3) & 0x1f) + ((int(value[2]) & 0x01) << 5) + dt[OFFSET_NANOSECOND] = ((int(value[2]) >> 1) & 0x7f) + ((int(value[3]) & 0x00ff) << 7) + ((int(value[4]) & 0x1F) << 15) + dt[OFFSET_NANOSECOND] *= 1000 + } else if dtype == TIME_TZ { + dt[OFFSET_HOUR] = int(value[0]) & 0x1F + dt[OFFSET_MINUTE] = ((int(value[0]) >> 5) & 0x07) + ((int(value[1]) & 0x07) << 3) + dt[OFFSET_SECOND] = ((int(value[1]) >> 3) & 0x1f) + ((int(value[2]) & 0x01) << 5) + dt[OFFSET_NANOSECOND] = ((int(value[2]) >> 1) & 0x7f) + ((int(value[3]) & 0x00ff) << 7) + ((int(value[4]) & 0x1F) << 15) + dt[OFFSET_NANOSECOND] *= 1000 + dt[OFFSET_TIMEZONE] = int(Dm_build_650.Dm_build_747(value, 5)) + } else if dtype == DATETIME { + + dt[OFFSET_YEAR] = int(Dm_build_650.Dm_build_747(value, 0)) & 0x7FFF + if dt[OFFSET_YEAR] > 9999 { + dt[OFFSET_YEAR] = int(int16(dt[OFFSET_YEAR] | 0x8000)) + } + + dt[OFFSET_MONTH] = ((int(value[1]) >> 7) & 0x1) + ((int(value[2]) & 0x07) << 1) + + dt[OFFSET_DAY] = ((int(value[2]) & 0xF8) >> 3) & 0x1f + + dt[OFFSET_HOUR] = (int(value[3]) & 0x1F) + + dt[OFFSET_MINUTE] = ((int(value[3]) >> 5) & 0x07) + ((int(value[4]) & 0x07) << 3) + + dt[OFFSET_SECOND] = ((int(value[4]) >> 3) & 0x1f) + ((int(value[5]) & 0x01) << 5) + + dt[OFFSET_NANOSECOND] = ((int(value[5]) >> 1) & 0x7f) + ((int(value[6]) & 0x00ff) << 7) + ((int(value[7]) & 0x1F) << 15) + dt[OFFSET_NANOSECOND] *= 1000 + } else if dtype == DATETIME_TZ { + + dt[OFFSET_YEAR] = int(Dm_build_650.Dm_build_747(value, 0)) & 0x7FFF + if dt[OFFSET_YEAR] > 9999 { + dt[OFFSET_YEAR] = int(int16(dt[OFFSET_YEAR] | 0x8000)) + } + + dt[OFFSET_MONTH] = ((int(value[1]) >> 7) & 0x1) + ((int(value[2]) & 0x07) << 1) + + dt[OFFSET_DAY] = ((int(value[2]) & 0xF8) >> 3) & 0x1f + + dt[OFFSET_HOUR] = (int(value[3]) & 0x1F) + + dt[OFFSET_MINUTE] = ((int(value[3]) >> 5) & 0x07) + ((int(value[4]) & 0x07) << 3) + + dt[OFFSET_SECOND] = ((int(value[4]) >> 3) & 0x1f) + ((int(value[5]) & 0x01) << 5) + + dt[OFFSET_NANOSECOND] = ((int(value[5]) >> 1) & 0x7f) + ((int(value[6]) & 0x00ff) << 7) + ((int(value[7]) & 0x1F) << 15) + dt[OFFSET_NANOSECOND] *= 1000 + + dt[OFFSET_TIMEZONE] = int(Dm_build_650.Dm_build_747(value, len(value)-2)) + } else if dtype == DATETIME2 { + + dt[OFFSET_YEAR] = int(Dm_build_650.Dm_build_747(value, 0)) & 0x7FFF + if dt[OFFSET_YEAR] > 9999 { + dt[OFFSET_YEAR] = int(int16(dt[OFFSET_YEAR] | 0x8000)) + } + + dt[OFFSET_MONTH] = ((int(value[1]) >> 7) & 0x1) + ((int(value[2]) & 0x07) << 1) + + dt[OFFSET_DAY] = ((int(value[2]) & 0xF8) >> 3) & 0x1f + + dt[OFFSET_HOUR] = (int(value[3]) & 0x1F) + + dt[OFFSET_MINUTE] = ((int(value[3]) >> 5) & 0x07) + ((int(value[4]) & 0x07) << 3) + + dt[OFFSET_SECOND] = ((int(value[4]) >> 3) & 0x1f) + ((int(value[5]) & 0x01) << 5) + + dt[OFFSET_NANOSECOND] = ((int(value[5]) >> 1) & 0x7f) + ((int(value[6]) & 0x00ff) << 7) + ((int(value[7]) & 0x00ff) << 15) + ((int(value[8]) & 0x7F) << 23) + } else if dtype == DATETIME2_TZ { + + dt[OFFSET_YEAR] = int(Dm_build_650.Dm_build_747(value, 0)) & 0x7FFF + if dt[OFFSET_YEAR] > 9999 { + dt[OFFSET_YEAR] = int(int16(dt[OFFSET_YEAR] | 0x8000)) + } + + dt[OFFSET_MONTH] = ((int(value[1]) >> 7) & 0x1) + ((int(value[2]) & 0x07) << 1) + + dt[OFFSET_DAY] = ((int(value[2]) & 0xF8) >> 3) & 0x1f + + dt[OFFSET_HOUR] = (int(value[3]) & 0x1F) + + dt[OFFSET_MINUTE] = ((int(value[3]) >> 5) & 0x07) + ((int(value[4]) & 0x07) << 3) + + dt[OFFSET_SECOND] = ((int(value[4]) >> 3) & 0x1f) + ((int(value[5]) & 0x01) << 5) + + dt[OFFSET_NANOSECOND] = ((int(value[5]) >> 1) & 0x7f) + ((int(value[6]) & 0x00ff) << 7) + ((int(value[7]) & 0x00ff) << 15) + ((int(value[8]) & 0x7F) << 23) + + dt[OFFSET_TIMEZONE] = int(Dm_build_650.Dm_build_747(value, len(value)-2)) + } + return dt +} + +func dmdtDecodeBdta(value []byte) []int { + dt := make([]int, DT_LEN) + dt[OFFSET_YEAR] = int(Dm_build_650.Dm_build_747(value, 0)) + dt[OFFSET_MONTH] = int(value[2] & 0xFF) + dt[OFFSET_DAY] = int(value[3] & 0xFF) + dt[OFFSET_HOUR] = int(value[4] & 0xFF) + dt[OFFSET_MINUTE] = int(value[5] & 0xFF) + dt[OFFSET_SECOND] = int(value[6] & 0xFF) + dt[OFFSET_NANOSECOND] = int((value[7] & 0xFF) + (value[8] << 8) + (value[9] << 16)) + dt[OFFSET_TIMEZONE] = int(Dm_build_650.Dm_build_747(value, 10)) + + if len(value) > 12 { + + dt[OFFSET_NANOSECOND] += int(value[12] << 24) + } + return dt +} + +func dtToStringByOracleFormat(dt []int, oracleFormatPattern string, scale int32, language int) string { + return format(dt, oracleFormatPattern, scale, language) +} + +func dtToString(dt []int, dtype int, scale int) string { + switch dtype { + case DATE: + return formatYear(dt[OFFSET_YEAR]) + "-" + format2(dt[OFFSET_MONTH]) + "-" + format2(dt[OFFSET_DAY]) + + case TIME: + if scale > 0 { + return format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + "." + formatMilliSecond(dt[OFFSET_NANOSECOND], scale) + } else { + return format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + } + + case TIME_TZ: + if scale > 0 { + return format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + "." + formatMilliSecond(dt[OFFSET_NANOSECOND], scale) + " " + formatTZ(dt[OFFSET_TIMEZONE]) + } else { + return format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + " " + formatTZ(dt[OFFSET_TIMEZONE]) + } + + case DATETIME, DATETIME2: + if scale > 0 { + return formatYear(dt[OFFSET_YEAR]) + "-" + format2(dt[OFFSET_MONTH]) + "-" + format2(dt[OFFSET_DAY]) + " " + format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + "." + formatMilliSecond(dt[OFFSET_NANOSECOND], scale) + } else { + return formatYear(dt[OFFSET_YEAR]) + "-" + format2(dt[OFFSET_MONTH]) + "-" + format2(dt[OFFSET_DAY]) + " " + format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + } + + case DATETIME_TZ, DATETIME2_TZ: + if scale > 0 { + return formatYear(dt[OFFSET_YEAR]) + "-" + format2(dt[OFFSET_MONTH]) + "-" + format2(dt[OFFSET_DAY]) + " " + format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + "." + formatMilliSecond(dt[OFFSET_NANOSECOND], scale) + " " + formatTZ(dt[OFFSET_TIMEZONE]) + } else { + return formatYear(dt[OFFSET_YEAR]) + "-" + format2(dt[OFFSET_MONTH]) + "-" + format2(dt[OFFSET_DAY]) + " " + format2(dt[OFFSET_HOUR]) + ":" + format2(dt[OFFSET_MINUTE]) + ":" + format2(dt[OFFSET_SECOND]) + " " + formatTZ(dt[OFFSET_TIMEZONE]) + } + } + + return "" +} + +func formatYear(value int) string { + if value >= 0 { + if value < 10 { + return "000" + strconv.FormatInt(int64(value), 10) + } else if value < 100 { + return "00" + strconv.FormatInt(int64(value), 10) + } else if value < 1000 { + return "0" + strconv.FormatInt(int64(value), 10) + } else { + return strconv.FormatInt(int64(value), 10) + } + } else { + if value > -10 { + return "-000" + strconv.FormatInt(int64(-value), 10) + } else if value > -100 { + return "-00" + strconv.FormatInt(int64(-value), 10) + } else if value > -1000 { + return "-0" + strconv.FormatInt(int64(-value), 10) + } else { + return strconv.FormatInt(int64(value), 10) + } + } +} + +func format2(value int) string { + if value < 10 { + return "0" + strconv.FormatInt(int64(value), 10) + } else { + return strconv.FormatInt(int64(value), 10) + } +} + +func formatMilliSecond(ms int, prec int) string { + var ret string + if ms < 10 { + ret = "00000000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 100 { + ret = "0000000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 1000 { + ret = "000000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 10000 { + ret = "00000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 100000 { + ret = "0000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 1000000 { + ret = "000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 10000000 { + ret = "00" + strconv.FormatInt(int64(ms), 10) + } else if ms < 100000000 { + ret = "0" + strconv.FormatInt(int64(ms), 10) + } else { + ret = strconv.FormatInt(int64(ms), 10) + } + + if prec < NANOSECOND_DIGITS { + ret = ret[:prec] + } + return ret +} + +func formatTZ(tz int) string { + tz_hour := int(math.Abs(float64(tz / 60))) + tz_min := int(math.Abs(float64(tz % 60))) + + if tz >= 0 { + return "+" + format2(tz_hour) + ":" + format2(tz_min) + } else { + return "-" + format2(tz_hour) + ":" + format2(tz_min) + } +} + +func toDTFromTime(x time.Time) []int { + hour, min, sec := x.Clock() + ts := make([]int, DT_LEN) + ts[OFFSET_YEAR] = x.Year() + ts[OFFSET_MONTH] = int(x.Month()) + ts[OFFSET_DAY] = x.Day() + ts[OFFSET_HOUR] = hour + ts[OFFSET_MINUTE] = min + ts[OFFSET_SECOND] = sec + ts[OFFSET_NANOSECOND] = (int)(x.Nanosecond()) + _, tz := x.Zone() + ts[OFFSET_TIMEZONE] = tz / 60 + return ts +} + +func toDTFromUnix(sec int64, nsec int64) []int { + return toDTFromTime(time.Unix(sec, nsec)) +} + +func toDTFromString(s string, dt []int) (dtype int, err error) { + defer func() { + if p := recover(); p != nil { + err = ECGO_INVALID_DATETIME_FORMAT.throw() + } + }() + date_s := "" + time_s := "" + nanos_s := "" + tz_s := "" + year := 0 + month := 0 + day := 0 + hour := 0 + minute := 0 + second := 0 + a_nanos := 0 + firstDash := -1 + secondDash := -1 + firstColon := -1 + secondColon := -1 + period := -1 + sign := 0 + ownTz := INVALID_VALUE + dtype = -1 + + zeros := "000000000" + + if s != "" && strings.TrimSpace(s) == "" { + return 0, ECGO_INVALID_DATETIME_FORMAT.throw() + } + s = strings.TrimSpace(s) + + if strings.Index(s, "-") == 0 { + s = strings.TrimSpace(s[1:]) + sign = 1 + } + + comps := strings.Split(s, " ") + + switch len(comps) { + case 3: + date_s = comps[0] + time_s = comps[1] + tz_s = comps[2] + dtype = DATETIME_TZ + + case 2: + if strings.Index(comps[0], ":") > 0 { + time_s = comps[0] + tz_s = comps[1] + dtype = TIME_TZ + } else { + date_s = comps[0] + time_s = comps[1] + dtype = DATETIME + } + + case 1: + if strings.Index(comps[0], ":") > 0 { + time_s = comps[0] + dtype = TIME + } else { + date_s = comps[0] + dtype = DATE + } + + default: + return 0, ECGO_INVALID_DATETIME_FORMAT.throw() + } + + if date_s != "" { + + firstDash = strings.Index(date_s, "-") + secondDash = strings.Index(date_s[firstDash+1:], "-") + + if firstDash < 0 || secondDash < 0 { + firstDash = strings.Index(s, ".") + secondDash = strings.Index(date_s[firstDash+1:], ".") + } + + if firstDash < 0 || secondDash < 0 { + firstDash = strings.Index(s, "/") + secondDash = strings.Index(date_s[firstDash+1:], "/") + } + if secondDash > 0 { + secondDash += firstDash + 1 + } + + if (firstDash > 0) && (secondDash > 0) && (secondDash < len(date_s)-1) { + + if sign == 1 { + i, err := strconv.ParseInt(date_s[:firstDash], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + year = 0 - int(i) - 1900 + } else { + i, err := strconv.ParseInt(date_s[:firstDash], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + year = int(i) - 1900 + } + + i, err := strconv.ParseInt(date_s[firstDash+1:secondDash], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + month = int(i) - 1 + + i, err = strconv.ParseInt(date_s[secondDash+1:], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + day = int(i) + + if !checkDate(year+1900, month+1, day) { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + } else { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + } + + if time_s != "" { + firstColon = strings.Index(time_s, ":") + secondColon = strings.Index(time_s[firstColon+1:], ":") + if secondColon > 0 { + secondColon += firstColon + 1 + } + + period = strings.Index(time_s[secondColon+1:], ".") + if period > 0 { + period += secondColon + 1 + } + + if (firstColon > 0) && (secondColon > 0) && (secondColon < len(time_s)-1) { + i, err := strconv.ParseInt(time_s[:firstColon], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + hour = int(i) + + i, err = strconv.ParseInt(time_s[firstColon+1:secondColon], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + minute = int(i) + + if period > 0 && period < len(time_s)-1 { + i, err = strconv.ParseInt(time_s[secondColon+1:period], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + second = int(i) + + nanos_s = time_s[period+1:] + if len(nanos_s) > NANOSECOND_DIGITS { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + if !unicode.IsDigit(rune(nanos_s[0])) { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + nanos_s = nanos_s + zeros[0:NANOSECOND_DIGITS-len(nanos_s)] + + i, err = strconv.ParseInt(nanos_s, 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + a_nanos = int(i) + } else if period > 0 { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } else { + i, err = strconv.ParseInt(time_s[secondColon+1:], 10, 32) + if err != nil { + return 0, ECGO_INVALID_DATETIME_FORMAT.addDetailln(err.Error()).throw() + } + second = int(i) + } + + if hour >= 24 || hour < 0 || minute >= 60 || minute < 0 || second >= 60 || second < 0 { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + } else { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + } + + if tz_s != "" { + neg := false + if strings.Index(tz_s, "-") == 0 { + neg = true + } + + if strings.Index(tz_s, "-") == 0 || strings.Index(tz_s, "+") == 0 { + tz_s = strings.TrimSpace(tz_s[1:]) + } + + hm := strings.Split(tz_s, ":") + var tzh, tzm int16 = 0, 0 + switch len(hm) { + case 2: + s, err := strconv.ParseInt(strings.TrimSpace(hm[0]), 10, 16) + if err != nil { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + tzh = int16(s) + + s, err = strconv.ParseInt(strings.TrimSpace(hm[1]), 10, 16) + if err != nil { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + tzm = int16(s) + case 1: + s, err := strconv.ParseInt(strings.TrimSpace(hm[0]), 10, 16) + if err != nil { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + tzh = int16(s) + default: + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + + ownTz = int(tzh*60 + tzm) + if ownTz < 0 { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + + if neg { + ownTz *= -1 + } + + if ownTz <= -13*60 || ownTz > 14*60 { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + } + + dt[OFFSET_YEAR] = year + 1900 + dt[OFFSET_MONTH] = month + 1 + if day == 0 { + dt[OFFSET_DAY] = 1 + } else { + dt[OFFSET_DAY] = day + } + dt[OFFSET_HOUR] = hour + dt[OFFSET_MINUTE] = minute + dt[OFFSET_SECOND] = second + dt[OFFSET_NANOSECOND] = a_nanos + dt[OFFSET_TIMEZONE] = int(ownTz) + return dtype, nil +} + +func transformTZ(dt []int, defaultSrcTz int, destTz int) { + srcTz := defaultSrcTz + + if srcTz != INVALID_VALUE && destTz != INVALID_VALUE && destTz != srcTz { + dt = addMinute(dt, destTz-srcTz) + + dt[OFFSET_TIMEZONE] = destTz + + } +} + +func encode(dt []int, column column, lTz int, dTz int) ([]byte, error) { + if dt[OFFSET_TIMEZONE] != INVALID_VALUE { + transformTZ(dt, dt[OFFSET_TIMEZONE], lTz) + } + + if column.mask == MASK_LOCAL_DATETIME { + transformTZ(dt, dt[OFFSET_TIMEZONE], dTz) + } + + if dt[OFFSET_YEAR] < -4712 || dt[OFFSET_YEAR] > 9999 { + return nil, ECGO_DATETIME_OVERFLOW.throw() + } + + year := dt[OFFSET_YEAR] + + month := dt[OFFSET_MONTH] + + day := dt[OFFSET_DAY] + + hour := dt[OFFSET_HOUR] + + min := dt[OFFSET_MINUTE] + + sec := dt[OFFSET_SECOND] + + msec := dt[OFFSET_NANOSECOND] + + var tz int + + if dt[OFFSET_TIMEZONE] == INVALID_VALUE { + tz = dTz + } else { + tz = dt[OFFSET_TIMEZONE] + } + + var ret []byte + + if column.colType == DATE { + ret = make([]byte, 3) + + ret[0] = (byte)(year & 0xFF) + + if year >= 0 { + ret[1] = (byte)((year >> 8) | ((month & 0x01) << 7)) + } else { + ret[1] = (byte)((year >> 8) & (((month & 0x01) << 7) | 0x7f)) + } + + ret[2] = (byte)(((month & 0x0E) >> 1) | (day << 3)) + } else if column.colType == DATETIME { + msec /= 1000 + ret = make([]byte, 8) + + ret[0] = (byte)(year & 0xFF) + + if year >= 0 { + ret[1] = (byte)((year >> 8) | ((month & 0x01) << 7)) + } else { + ret[1] = (byte)((year >> 8) & (((month & 0x01) << 7) | 0x7f)) + } + + ret[2] = (byte)(((month & 0x0E) >> 1) | (day << 3)) + + ret[3] = (byte)(hour | ((min & 0x07) << 5)) + + ret[4] = (byte)(((min & 0x38) >> 3) | ((sec & 0x1F) << 3)) + + ret[5] = (byte)(((sec & 0x20) >> 5) | ((msec & 0x7F) << 1)) + + ret[6] = (byte)((msec >> 7) & 0xFF) + + ret[7] = (byte)((msec >> 15) & 0xFF) + } else if column.colType == DATETIME2 { + ret = make([]byte, 9) + + ret[0] = (byte)(year & 0xFF) + + if year >= 0 { + ret[1] = (byte)((year >> 8) | ((month & 0x01) << 7)) + } else { + ret[1] = (byte)((year >> 8) & (((month & 0x01) << 7) | 0x7f)) + } + + ret[2] = (byte)(((month & 0x0E) >> 1) | (day << 3)) + + ret[3] = (byte)(hour | ((min & 0x07) << 5)) + + ret[4] = (byte)(((min & 0x38) >> 3) | ((sec & 0x1F) << 3)) + + ret[5] = (byte)(((sec & 0x20) >> 5) | ((msec & 0x7F) << 1)) + + ret[6] = (byte)((msec >> 7) & 0xFF) + + ret[7] = (byte)((msec >> 15) & 0xFF) + + ret[8] = (byte)((msec >> 23) & 0xFF) + } else if column.colType == DATETIME_TZ { + msec /= 1000 + ret = make([]byte, 10) + + ret[0] = (byte)(year & 0xFF) + + if year >= 0 { + ret[1] = (byte)((year >> 8) | ((month & 0x01) << 7)) + } else { + ret[1] = (byte)((year >> 8) & (((month & 0x01) << 7) | 0x7f)) + } + + ret[2] = (byte)(((month & 0x0E) >> 1) | (day << 3)) + + ret[3] = (byte)(hour | ((min & 0x07) << 5)) + + ret[4] = (byte)(((min & 0x38) >> 3) | ((sec & 0x1F) << 3)) + + ret[5] = (byte)(((sec & 0x20) >> 5) | ((msec & 0x7F) << 1)) + + ret[6] = (byte)((msec >> 7) & 0xFF) + + ret[7] = (byte)((msec >> 15) & 0xFF) + + Dm_build_650.Dm_build_661(ret, 8, int16(tz)) + } else if column.colType == DATETIME2_TZ { + ret = make([]byte, 11) + + ret[0] = (byte)(year & 0xFF) + + if year >= 0 { + ret[1] = (byte)((year >> 8) | ((month & 0x01) << 7)) + } else { + ret[1] = (byte)((year >> 8) & (((month & 0x01) << 7) | 0x7f)) + } + + ret[2] = (byte)(((month & 0x0E) >> 1) | (day << 3)) + + ret[3] = (byte)(hour | ((min & 0x07) << 5)) + + ret[4] = (byte)(((min & 0x38) >> 3) | ((sec & 0x1F) << 3)) + + ret[5] = (byte)(((sec & 0x20) >> 5) | ((msec & 0x7F) << 1)) + + ret[6] = (byte)((msec >> 7) & 0xFF) + + ret[7] = (byte)((msec >> 15) & 0xFF) + + ret[8] = (byte)((msec >> 23) & 0xFF) + + Dm_build_650.Dm_build_661(ret, 8, int16(tz)) + } else if column.colType == TIME { + msec /= 1000 + ret = make([]byte, 5) + + ret[0] = (byte)(hour | ((min & 0x07) << 5)) + + ret[1] = (byte)(((min & 0x38) >> 3) | ((sec & 0x1F) << 3)) + + ret[2] = (byte)(((sec & 0x20) >> 5) | ((msec & 0x7F) << 1)) + + ret[3] = (byte)((msec >> 7) & 0xFF) + + ret[4] = (byte)((msec >> 15) & 0xFF) + } else if column.colType == TIME_TZ { + msec /= 1000 + ret = make([]byte, 7) + + ret[0] = (byte)(hour | ((min & 0x07) << 5)) + + ret[1] = (byte)(((min & 0x38) >> 3) | ((sec & 0x1F) << 3)) + + ret[2] = (byte)(((sec & 0x20) >> 5) | ((msec & 0x7F) << 1)) + + ret[3] = (byte)((msec >> 7) & 0xFF) + + ret[4] = (byte)((msec >> 15) & 0xFF) + + Dm_build_650.Dm_build_661(ret, 5, int16(tz)) + } + + return ret, nil +} + +func toDate(x int64, column column, conn DmConnection) ([]byte, error) { + switch column.colType { + case DATETIME, DATETIME2: + if x > 2958463*24*60*60 { + return nil, ECGO_DATETIME_OVERFLOW.throw() + } + + dt := toDTFromUnix(x-Seconds_1900_1970, 0) + return encode(dt, column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + + case TIME: + dt := toDTFromUnix(x, 0) + return encode(dt, column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + + case DATE: + if x > 2958463 { + return nil, ECGO_DATETIME_OVERFLOW.throw() + } + + dt := toDTFromUnix(x*24*60*60-Seconds_1900_1970, 0) + if dt[OFFSET_YEAR] < -4712 || dt[OFFSET_YEAR] > 9999 { + return nil, ECGO_DATETIME_OVERFLOW.throw() + } + return encode(dt, column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } +} + +func checkDate(year int, month int, day int) bool { + if year > 9999 || year < -4712 || month > 12 || month < 1 { + return false + } + + monthDays := getDaysOfMonth(year, month) + if day > monthDays || day < 1 { + return false + } + return true +} + +func getDaysOfMonth(year int, month int) int { + switch month { + case 1, 3, 5, 7, 8, 10, 12: + return 31 + case 4, 6, 9, 11: + return 30 + case 2: + if isLeapYear(year) { + return 29 + } + return 28 + default: + return 0 + } +} + +func isLeapYear(year int) bool { + return (year%4 == 0 && year%100 != 0) || year%400 == 0 +} + +func addYear(dt []int, n int) []int { + dt[OFFSET_YEAR] += n + return dt +} + +func addMonth(dt []int, n int) []int { + month := dt[OFFSET_MONTH] + n + addYearValue := month / 12 + if month %= 12; month < 1 { + month += 12 + addYearValue-- + } + + daysOfMonth := getDaysOfMonth(dt[OFFSET_YEAR], month) + if dt[OFFSET_DAY] > daysOfMonth { + dt[OFFSET_DAY] = daysOfMonth + } + + dt[OFFSET_MONTH] = month + addYear(dt, addYearValue) + return dt +} + +func addDay(dt []int, n int) []int { + tmp := dt[OFFSET_DAY] + n + monthDays := 0 + monthDays = getDaysOfMonth(dt[OFFSET_YEAR], dt[OFFSET_MONTH]) + for tmp > monthDays || tmp <= 0 { + if tmp > monthDays { + addMonth(dt, 1) + tmp -= monthDays + } else { + addMonth(dt, -1) + tmp += monthDays + } + } + dt[OFFSET_DAY] = tmp + return dt +} + +func addHour(dt []int, n int) []int { + hour := dt[OFFSET_HOUR] + n + addDayValue := hour / 24 + if hour %= 24; hour < 0 { + hour += 24 + addDayValue-- + } + + dt[OFFSET_HOUR] = hour + addDay(dt, addDayValue) + return dt +} + +func addMinute(dt []int, n int) []int { + minute := dt[OFFSET_MINUTE] + n + addHourValue := minute / 60 + if minute %= 60; minute < 0 { + minute += 60 + addHourValue-- + } + + dt[OFFSET_MINUTE] = minute + addHour(dt, addHourValue) + return dt +} diff --git a/vendor/gitee.com/chunanyong/dm/i.go b/vendor/gitee.com/chunanyong/dm/i.go new file mode 100644 index 000000000..4101f92fe --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/i.go @@ -0,0 +1,917 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "strconv" + "time" + + "gitee.com/chunanyong/dm/util" +) + +var DB2G db2g + +type db2g struct { +} + +func (DB2G db2g) processVarchar2(bytes []byte, prec int) []byte { + rbytes := make([]byte, prec) + copy(rbytes[:len(bytes)], bytes[:]) + for i := len(bytes); i < len(rbytes); i++ { + rbytes[i] = ' ' + } + return rbytes +} + +func (DB2G db2g) charToString(bytes []byte, column *column, conn *DmConnection) string { + if column.colType == VARCHAR2 { + bytes = DB2G.processVarchar2(bytes, int(column.prec)) + } else if column.colType == CLOB { + clob := newClobFromDB(bytes, conn, column, true) + clobLen, _ := clob.GetLength() + clobStr, _ := clob.getSubString(1, int32(clobLen)) + return clobStr + } + return Dm_build_650.Dm_build_902(bytes, conn.serverEncoding, conn) +} + +func (DB2G db2g) charToFloat64(bytes []byte, column *column, conn *DmConnection) (float64, error) { + str := DB2G.charToString(bytes, column, conn) + val, err := strconv.ParseFloat(str, 64) + if err != nil { + return 0, ECGO_DATA_CONVERTION_ERROR.throw() + } + + return val, nil +} + +func (DB2G db2g) charToDeciaml(bytes []byte, column *column, conn *DmConnection) (*DmDecimal, error) { + str := DB2G.charToString(bytes, column, conn) + return NewDecimalFromString(str) +} + +func (DB2G db2g) BinaryToInt64(bytes []byte, column *column, conn *DmConnection) (int64, error) { + if column.colType == BLOB { + blob := newBlobFromDB(bytes, conn, column, true) + blobLen, err := blob.GetLength() + if err != nil { + return 0, err + } + bytes, err = blob.getBytes(1, int32(blobLen)) + if err != nil { + return 0, err + } + } + var n, b int64 = 0, 0 + + startIndex := 0 + var length int + if len(bytes) > 8 { + length = 8 + for j := 0; j < len(bytes)-8; j++ { + if bytes[j] != 0 { + return 0, ECGO_DATA_CONVERTION_ERROR.throw() + } + + startIndex = len(bytes) - 8 + length = 8 + } + } else { + length = len(bytes) + } + + for j := startIndex; j < startIndex+length; j++ { + b = int64(0xff & bytes[j]) + n = b | (n << 8) + } + + return n, nil +} + +func (DB2G db2g) decToDecimal(bytes []byte, prec int, scale int, compatibleOracle bool) (*DmDecimal, error) { + + if compatibleOracle { + prec = -1 + scale = -1 + } + return newDecimal(bytes, prec, scale) +} + +func (DB2G db2g) toBytes(bytes []byte, column *column, conn *DmConnection) ([]byte, error) { + retBytes := Dm_build_650.Dm_build_801(bytes, 0, len(bytes)) + switch column.colType { + case CLOB: + clob := newClobFromDB(retBytes, conn, column, true) + str, err := clob.getSubString(1, int32(clob.length)) + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_866(str, conn.getServerEncoding(), conn), nil + case BLOB: + blob := newBlobFromDB(retBytes, conn, column, true) + bs, err := blob.getBytes(1, int32(blob.length)) + if err != nil { + return nil, err + } + + return bs, nil + } + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toString(bytes []byte, column *column, conn *DmConnection) string { + switch column.colType { + case CHAR, VARCHAR, VARCHAR2: + return DB2G.charToString(bytes, column, conn) + case BIT, BOOLEAN, TINYINT: + return strconv.FormatInt(int64(bytes[0]), 10) + case SMALLINT: + return strconv.FormatInt(int64(Dm_build_650.Dm_build_874(bytes)), 10) + case INT: + return strconv.FormatInt(int64(Dm_build_650.Dm_build_877(bytes)), 10) + case BIGINT: + return strconv.FormatInt(int64(Dm_build_650.Dm_build_880(bytes)), 10) + case REAL: + return strconv.FormatFloat(float64(Dm_build_650.Dm_build_883(bytes)), 'f', -1, 32) + case DOUBLE: + return strconv.FormatFloat(float64(Dm_build_650.Dm_build_886(bytes)), 'f', -1, 64) + case DECIMAL: + + case BINARY, VARBINARY: + util.StringUtil.BytesToHexString(bytes, false) + case BLOB: + + case CLOB: + + case DATE: + dt := decode(bytes, column.isBdta, *column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + if conn.FormatDate != "" { + return dtToStringByOracleFormat(dt, conn.FormatDate, column.scale, int(conn.OracleDateLanguage)) + } + case TIME: + dt := decode(bytes, column.isBdta, *column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + if conn.FormatTime != "" { + return dtToStringByOracleFormat(dt, conn.FormatTime, column.scale, int(conn.OracleDateLanguage)) + } + case DATETIME, DATETIME2: + dt := decode(bytes, column.isBdta, *column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + if conn.FormatTimestamp != "" { + return dtToStringByOracleFormat(dt, conn.FormatTimestamp, column.scale, int(conn.OracleDateLanguage)) + } + case TIME_TZ: + dt := decode(bytes, column.isBdta, *column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + if conn.FormatTimeTZ != "" { + return dtToStringByOracleFormat(dt, conn.FormatTimeTZ, column.scale, int(conn.OracleDateLanguage)) + } + case DATETIME_TZ, DATETIME2_TZ: + dt := decode(bytes, column.isBdta, *column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + if conn.FormatTimestampTZ != "" { + return dtToStringByOracleFormat(dt, conn.FormatTimestampTZ, column.scale, int(conn.OracleDateLanguage)) + } + case INTERVAL_DT: + return newDmIntervalDTByBytes(bytes).String() + case INTERVAL_YM: + return newDmIntervalYMByBytes(bytes).String() + case ARRAY: + + case SARRAY: + + case CLASS: + + case PLTYPE_RECORD: + + } + return "" +} + +func (DB2G db2g) toBool(bytes []byte, column *column, conn *DmConnection) (bool, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + return bytes[0] != 0, nil + case SMALLINT: + return Dm_build_650.Dm_build_747(bytes, 0) != 0, nil + case INT: + return Dm_build_650.Dm_build_752(bytes, 0) != 0, nil + case BIGINT: + return Dm_build_650.Dm_build_757(bytes, 0) != 0, nil + case REAL: + return Dm_build_650.Dm_build_762(bytes, 0) != 0, nil + case DOUBLE: + return Dm_build_650.Dm_build_766(bytes, 0) != 0, nil + case DECIMAL: + + case CHAR, VARCHAR, VARCHAR2, CLOB: + return G2DB.toBool(DB2G.charToString(bytes, column, conn)) + } + + return false, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toByte(bytes []byte, column *column, conn *DmConnection) (byte, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + + if bytes == nil || len(bytes) == 0 { + return 0, nil + } else { + return bytes[0], nil + } + case SMALLINT: + tval := Dm_build_650.Dm_build_747(bytes, 0) + if tval < int16(BYTE_MIN) || tval > int16(BYTE_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return byte(tval), nil + case INT: + tval := Dm_build_650.Dm_build_752(bytes, 0) + if tval < int32(BYTE_MIN) || tval > int32(BYTE_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return byte(tval), nil + case BIGINT: + tval := Dm_build_650.Dm_build_757(bytes, 0) + if tval < int64(BYTE_MIN) || tval > int64(BYTE_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return byte(tval), nil + case REAL: + tval := Dm_build_650.Dm_build_762(bytes, 0) + if tval < float32(BYTE_MIN) || tval > float32(BYTE_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return byte(tval), nil + case DOUBLE: + tval := Dm_build_650.Dm_build_766(bytes, 0) + if tval < float64(BYTE_MIN) || tval > float64(BYTE_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return byte(tval), nil + case DECIMAL: + + case CHAR, VARCHAR, VARCHAR2, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < float64(BYTE_MIN) || tval > float64(BYTE_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return byte(tval), nil + case BINARY, VARBINARY, BLOB: + { + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < int64(BYTE_MIN) || tval > int64(BYTE_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return byte(tval), nil + } + } + + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toInt8(bytes []byte, column *column, conn *DmConnection) (int8, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if bytes == nil || len(bytes) == 0 { + return 0, nil + } + + return int8(bytes[0]), nil + case SMALLINT: + tval := Dm_build_650.Dm_build_747(bytes, 0) + if tval < int16(INT8_MIN) || tval < int16(INT8_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int8(tval), nil + case INT: + + tval := Dm_build_650.Dm_build_752(bytes, 0) + if tval < int32(INT8_MIN) || tval > int32(INT8_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int8(tval), nil + case BIGINT: + tval := Dm_build_650.Dm_build_757(bytes, 0) + if tval < int64(INT8_MIN) || tval > int64(INT8_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int8(tval), nil + case REAL: + tval := Dm_build_650.Dm_build_762(bytes, 0) + if tval < float32(INT8_MIN) || tval > float32(INT8_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int8(tval), nil + case DOUBLE: + tval := Dm_build_650.Dm_build_766(bytes, 0) + if tval < float64(INT8_MIN) || tval > float64(INT8_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int8(tval), nil + case DECIMAL: + + case CHAR, VARCHAR, VARCHAR2, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < float64(INT8_MIN) || tval > float64(INT8_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int8(tval), nil + case BINARY, VARBINARY, BLOB: + { + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < int64(INT8_MIN) || tval > int64(INT8_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int8(tval), nil + } + } + + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toInt16(bytes []byte, column *column, conn *DmConnection) (int16, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if bytes == nil || len(bytes) == 0 { + return 0, nil + } + + return int16(bytes[0]), nil + case SMALLINT: + return Dm_build_650.Dm_build_747(bytes, 0), nil + case INT: + + tval := Dm_build_650.Dm_build_752(bytes, 0) + if tval < int32(INT16_MIN) || tval > int32(INT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int16(tval), nil + case BIGINT: + tval := Dm_build_650.Dm_build_757(bytes, 0) + if tval < int64(INT16_MIN) || tval > int64(INT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int16(tval), nil + case REAL: + tval := Dm_build_650.Dm_build_762(bytes, 0) + if tval < float32(INT16_MIN) || tval > float32(INT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int16(tval), nil + case DOUBLE: + tval := Dm_build_650.Dm_build_766(bytes, 0) + if tval < float64(INT16_MIN) || tval > float64(INT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int16(tval), nil + case DECIMAL: + + case CHAR, VARCHAR, VARCHAR2, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < float64(INT16_MIN) || tval > float64(INT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int16(tval), nil + case BINARY, VARBINARY, BLOB: + { + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < int64(INT16_MIN) || tval > int64(INT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int16(tval), nil + } + } + + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toUInt16(bytes []byte, column *column, conn *DmConnection) (uint16, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if bytes == nil || len(bytes) == 0 { + return 0, nil + } + + return uint16(bytes[0]), nil + case SMALLINT: + return uint16(Dm_build_650.Dm_build_747(bytes, 0)), nil + case INT: + tval := Dm_build_650.Dm_build_752(bytes, 0) + if tval < int32(UINT16_MIN) || tval > int32(UINT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint16(tval), nil + case BIGINT: + tval := Dm_build_650.Dm_build_757(bytes, 0) + if tval < int64(UINT16_MIN) || tval > int64(UINT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint16(tval), nil + case REAL: + tval := Dm_build_650.Dm_build_762(bytes, 0) + if tval < float32(UINT16_MIN) || tval > float32(UINT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint16(tval), nil + case DOUBLE: + tval := Dm_build_650.Dm_build_766(bytes, 0) + if tval < float64(UINT16_MIN) || tval > float64(UINT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint16(tval), nil + case DECIMAL: + + case CHAR, VARCHAR, VARCHAR2, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < float64(UINT16_MIN) || tval > float64(UINT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint16(tval), nil + case BINARY, VARBINARY, BLOB: + { + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < int64(UINT16_MIN) || tval > int64(UINT16_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint16(tval), nil + } + } + + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toInt32(bytes []byte, column *column, conn *DmConnection) (int32, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if bytes == nil || len(bytes) == 0 { + return 0, nil + } + + return int32(bytes[0]), nil + case SMALLINT: + return int32(Dm_build_650.Dm_build_747(bytes, 0)), nil + case INT: + return Dm_build_650.Dm_build_752(bytes, 0), nil + case BIGINT: + tval := Dm_build_650.Dm_build_757(bytes, 0) + if tval < int64(INT32_MIN) || tval > int64(INT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int32(tval), nil + case REAL: + tval := Dm_build_650.Dm_build_762(bytes, 0) + if tval < float32(INT32_MIN) || tval > float32(INT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int32(tval), nil + case DOUBLE: + tval := Dm_build_650.Dm_build_766(bytes, 0) + if tval < float64(INT32_MIN) || tval > float64(INT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int32(tval), nil + case DECIMAL: + + case CHAR, VARCHAR, VARCHAR2, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < float64(INT32_MIN) || tval > float64(INT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int32(tval), nil + case BINARY, VARBINARY, BLOB: + { + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < int64(INT32_MIN) || tval > int64(INT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int32(tval), nil + } + } + + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toUInt32(bytes []byte, column *column, conn *DmConnection) (uint32, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if bytes == nil || len(bytes) == 0 { + return 0, nil + } + + return uint32(bytes[0]), nil + case SMALLINT: + return uint32(Dm_build_650.Dm_build_747(bytes, 0)), nil + case INT: + return uint32(Dm_build_650.Dm_build_752(bytes, 0)), nil + case BIGINT: + tval := Dm_build_650.Dm_build_757(bytes, 0) + if tval < int64(UINT32_MIN) || tval > int64(UINT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint32(tval), nil + case REAL: + tval := Dm_build_650.Dm_build_762(bytes, 0) + if tval < float32(UINT32_MIN) || tval > float32(UINT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint32(tval), nil + case DOUBLE: + tval := Dm_build_650.Dm_build_766(bytes, 0) + if tval < float64(UINT32_MIN) || tval > float64(UINT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint32(tval), nil + case DECIMAL: + + case CHAR, VARCHAR, VARCHAR2, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < float64(UINT32_MIN) || tval > float64(UINT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint32(tval), nil + case BINARY, VARBINARY, BLOB: + { + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + if tval < int64(UINT32_MIN) || tval > int64(UINT32_MAX) { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint32(tval), nil + } + } + + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toInt64(bytes []byte, column *column, conn *DmConnection) (int64, error) { + switch column.colType { + case BOOLEAN, BIT, TINYINT: + if bytes == nil || len(bytes) == 0 { + return int64(0), nil + } else { + return int64(bytes[0]), nil + } + case SMALLINT: + return int64(Dm_build_650.Dm_build_874(bytes)), nil + case INT: + return int64(Dm_build_650.Dm_build_877(bytes)), nil + case BIGINT: + return int64(Dm_build_650.Dm_build_880(bytes)), nil + case REAL: + return int64(Dm_build_650.Dm_build_883(bytes)), nil + case DOUBLE: + return int64(Dm_build_650.Dm_build_886(bytes)), nil + + case CHAR, VARCHAR2, VARCHAR, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if int64(tval) < INT64_MIN || int64(tval) > INT64_MAX { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return int64(tval), nil + case BINARY, VARBINARY, BLOB: + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + return tval, nil + } + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toUInt64(bytes []byte, column *column, conn *DmConnection) (uint64, error) { + switch column.colType { + case BOOLEAN, BIT, TINYINT: + if bytes == nil || len(bytes) == 0 { + return uint64(0), nil + } else { + return uint64(bytes[0]), nil + } + case SMALLINT: + return uint64(Dm_build_650.Dm_build_874(bytes)), nil + case INT: + return uint64(Dm_build_650.Dm_build_877(bytes)), nil + case BIGINT: + return uint64(Dm_build_650.Dm_build_880(bytes)), nil + case REAL: + return uint64(Dm_build_650.Dm_build_883(bytes)), nil + case DOUBLE: + return uint64(Dm_build_650.Dm_build_886(bytes)), nil + + case CHAR, VARCHAR2, VARCHAR, CLOB: + tval, err := DB2G.charToFloat64(bytes, column, conn) + if err != nil { + return 0, err + } + + if uint64(tval) < UINT64_MIN || uint64(tval) > UINT64_MAX { + return 0, ECGO_DATA_OVERFLOW.throw() + } + return uint64(tval), nil + case BINARY, VARBINARY, BLOB: + tval, err := DB2G.BinaryToInt64(bytes, column, conn) + if err != nil { + return 0, err + } + + return uint64(tval), nil + } + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toInt(bytes []byte, column *column, conn *DmConnection) (int, error) { + if strconv.IntSize == 32 { + tmp, err := DB2G.toInt32(bytes, column, conn) + return int(tmp), err + } else { + tmp, err := DB2G.toInt64(bytes, column, conn) + return int(tmp), err + } +} + +func (DB2G db2g) toUInt(bytes []byte, column *column, conn *DmConnection) (uint, error) { + if strconv.IntSize == 32 { + tmp, err := DB2G.toUInt32(bytes, column, conn) + return uint(tmp), err + } else { + tmp, err := DB2G.toUInt64(bytes, column, conn) + return uint(tmp), err + } +} + +func (DB2G db2g) toFloat32(bytes []byte, column *column, conn *DmConnection) (float32, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if bytes == nil || len(bytes) == 0 { + return 0, nil + } + return float32(bytes[0]), nil + case SMALLINT: + return float32(Dm_build_650.Dm_build_747(bytes, 0)), nil + case INT: + return float32(Dm_build_650.Dm_build_752(bytes, 0)), nil + case BIGINT: + return float32(Dm_build_650.Dm_build_757(bytes, 0)), nil + case REAL: + return Dm_build_650.Dm_build_762(bytes, 0), nil + case DOUBLE: + dval := Dm_build_650.Dm_build_766(bytes, 0) + return float32(dval), nil + case DECIMAL: + dval, err := DB2G.decToDecimal(bytes, int(column.prec), int(column.scale), conn.CompatibleOracle()) + if err != nil { + return 0, err + } + return float32(dval.ToFloat64()), nil + case CHAR, VARCHAR2, VARCHAR, CLOB: + dval, err := DB2G.charToDeciaml(bytes, column, conn) + if err != nil { + return 0, err + } + return float32(dval.ToFloat64()), nil + } + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toFloat64(bytes []byte, column *column, conn *DmConnection) (float64, error) { + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if bytes == nil || len(bytes) == 0 { + return 0, nil + } + return float64(bytes[0]), nil + case SMALLINT: + return float64(Dm_build_650.Dm_build_747(bytes, 0)), nil + case INT: + return float64(Dm_build_650.Dm_build_752(bytes, 0)), nil + case BIGINT: + return float64(Dm_build_650.Dm_build_757(bytes, 0)), nil + case REAL: + return float64(Dm_build_650.Dm_build_762(bytes, 0)), nil + case DOUBLE: + return Dm_build_650.Dm_build_766(bytes, 0), nil + case DECIMAL: + dval, err := DB2G.decToDecimal(bytes, int(column.prec), int(column.scale), conn.CompatibleOracle()) + if err != nil { + return 0, err + } + return dval.ToFloat64(), nil + case CHAR, VARCHAR2, VARCHAR, CLOB: + dval, err := DB2G.charToDeciaml(bytes, column, conn) + if err != nil { + return 0, err + } + return dval.ToFloat64(), nil + } + + return 0, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toDmBlob(value []byte, column *column, conn *DmConnection) *DmBlob { + + switch column.colType { + case BLOB: + return newBlobFromDB(value, conn, column, conn.lobFetchAll()) + default: + return newBlobOfLocal(value, conn) + } +} + +func (DB2G db2g) toDmClob(value []byte, conn *DmConnection, column *column) *DmClob { + + switch column.colType { + case CLOB: + return newClobFromDB(value, conn, column, conn.lobFetchAll()) + default: + return newClobOfLocal(DB2G.toString(value, column, conn), conn) + } +} + +func (DB2G db2g) toDmDecimal(value []byte, column *column, conn *DmConnection) (*DmDecimal, error) { + + switch column.colType { + case BIT, BOOLEAN, TINYINT: + if value == nil || len(value) == 0 { + return NewDecimalFromInt64(0) + } else { + return NewDecimalFromInt64(int64(value[0])) + } + case SMALLINT: + return NewDecimalFromInt64(int64(Dm_build_650.Dm_build_747(value, 0))) + case INT: + return NewDecimalFromInt64(int64(Dm_build_650.Dm_build_752(value, 0))) + case BIGINT: + return NewDecimalFromInt64(Dm_build_650.Dm_build_757(value, 0)) + case REAL: + return NewDecimalFromFloat64(float64(Dm_build_650.Dm_build_762(value, 0))) + case DOUBLE: + return NewDecimalFromFloat64(Dm_build_650.Dm_build_766(value, 0)) + case DECIMAL: + return decodeDecimal(value, int(column.prec), int(column.scale)) + case CHAR, VARCHAR, VARCHAR2, CLOB: + return DB2G.charToDeciaml(value, column, conn) + } + + return nil, ECGO_DATA_CONVERTION_ERROR +} + +func (DB2G db2g) toTime(bytes []byte, column *column, conn *DmConnection) (time.Time, error) { + switch column.colType { + case DATE, TIME, TIME_TZ, DATETIME_TZ, DATETIME, DATETIME2_TZ, DATETIME2: + dt := decode(bytes, column.isBdta, *column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + return toTimeFromDT(dt, int(conn.dmConnector.localTimezone)), nil + case CHAR, VARCHAR2, VARCHAR, CLOB: + return toTimeFromString(DB2G.charToString(bytes, column, conn), int(conn.dmConnector.localTimezone)), nil + } + return time.Now(), ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toObject(bytes []byte, column *column, conn *DmConnection) (interface{}, error) { + + switch column.colType { + case BIT, BOOLEAN: + return bytes[0] != 0, nil + + case TINYINT: + + return Dm_build_650.Dm_build_743(bytes, 0), nil + case SMALLINT: + return Dm_build_650.Dm_build_747(bytes, 0), nil + case INT: + return Dm_build_650.Dm_build_752(bytes, 0), nil + case BIGINT: + return Dm_build_650.Dm_build_757(bytes, 0), nil + case DECIMAL: + return DB2G.decToDecimal(bytes, int(column.prec), int(column.scale), conn.CompatibleOracle()) + case REAL: + return Dm_build_650.Dm_build_762(bytes, 0), nil + case DOUBLE: + return Dm_build_650.Dm_build_766(bytes, 0), nil + case DATE, TIME, DATETIME, TIME_TZ, DATETIME_TZ, DATETIME2, DATETIME2_TZ: + dt := decode(bytes, column.isBdta, *column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + return toTimeFromDT(dt, int(conn.dmConnector.localTimezone)), nil + case BINARY, VARBINARY: + return bytes, nil + case BLOB: + blob := newBlobFromDB(bytes, conn, column, conn.lobFetchAll()) + + if util.StringUtil.EqualsIgnoreCase(column.typeName, "LONGVARBINARY") { + + l, err := blob.GetLength() + if err != nil { + return nil, err + } + return blob.getBytes(1, int32(l)) + } else { + return blob, nil + } + case CHAR, VARCHAR, VARCHAR2: + val := DB2G.charToString(bytes, column, conn) + if column.mask == MASK_BFILE { + + } + + return val, nil + case CLOB: + clob := newClobFromDB(bytes, conn, column, conn.lobFetchAll()) + if util.StringUtil.EqualsIgnoreCase(column.typeName, "LONGVARCHAR") { + + l, err := clob.GetLength() + if err != nil { + return nil, err + } + return clob.getSubString(1, int32(l)) + } else { + return clob, nil + } + case INTERVAL_YM: + return newDmIntervalYMByBytes(bytes), nil + case INTERVAL_DT: + return newDmIntervalDTByBytes(bytes), nil + case ARRAY: + return TypeDataSV.bytesToArray(bytes, nil, column.typeDescriptor) + case SARRAY: + return TypeDataSV.bytesToSArray(bytes, nil, column.typeDescriptor) + case CLASS: + + case PLTYPE_RECORD: + + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (DB2G db2g) toComplexType(bytes []byte, column *column, conn *DmConnection) (interface{}, error) { + switch column.colType { + case BLOB: + if !isComplexType(int(column.colType), int(column.scale)) { + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + blob := newBlobFromDB(bytes, conn, column, true) + return TypeDataSV.objBlobToObj(blob, column.typeDescriptor) + case ARRAY: + return TypeDataSV.bytesToArray(bytes, nil, column.typeDescriptor) + case SARRAY: + return TypeDataSV.bytesToSArray(bytes, nil, column.typeDescriptor) + case CLASS: + return TypeDataSV.bytesToObj(bytes, nil, column.typeDescriptor) + case PLTYPE_RECORD: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } +} diff --git a/vendor/gitee.com/chunanyong/dm/i18n/zj.go b/vendor/gitee.com/chunanyong/dm/i18n/zj.go new file mode 100644 index 000000000..62b5bfde5 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/i18n/zj.go @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package i18n + +import ( + "encoding/json" + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +type msg struct { + Id string `json:"id"` + Translation string `json:"translation,omitempty"` +} + +type i18n struct { + Language string `json:"language"` + Messages []msg `json:"messages"` +} + +func InitConfig(jsonStr string) { + + var i18n i18n + json.Unmarshal([]byte(jsonStr), &i18n) + msaArry := i18n.Messages + tag := language.MustParse(i18n.Language) + for _, e := range msaArry { + message.SetString(tag, e.Id, e.Translation) + } +} + +func Get(key string, locale int) string { + var p *message.Printer + + switch locale { + case 0: + p = message.NewPrinter(language.SimplifiedChinese) + case 1: + p = message.NewPrinter(language.AmericanEnglish) + case 2: + p = message.NewPrinter(language.TraditionalChinese) + } + + return p.Sprintf(key) +} diff --git a/vendor/gitee.com/chunanyong/dm/i18n/zk.go b/vendor/gitee.com/chunanyong/dm/i18n/zk.go new file mode 100644 index 000000000..7e1525f47 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/i18n/zk.go @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package i18n + +const Messages_en_US = `{ + "language": "en-US", + "messages": [ + { + "id": "error.dsn.invalidSchema", + "translation": "DSN must start with dm://" + }, + { + "id": "error.unsupported.scan", + "translation": "Unsupported scan type" + }, + { + "id": "error.invalidParameterNumber", + "translation": "Invalid parameter number" + }, + { + "id": "error.initThirdPartCipherFailed", + "translation": "Init third part cipher failed" + }, + { + "id": "error.connectionSwitchFailed", + "translation": "Connection switch failed" + }, + { + "id": "error.connectionSwitched", + "translation": "Connection has been switched" + }, + { + "id": "error.invalidServerMode", + "translation": "Invalid server mode" + }, + { + "id": "error.osauthError", + "translation": "At the same time using the specifed user login and OS authentication login, please determine a way." + }, + { + "id": "error.notQuerySQL", + "translation": "The SQL is not a query SQL" + }, + { + "id": "error.notExecSQL", + "translation": "The SQL is not a execute SQL" + }, + { + "id": "error.invalidTranIsolation", + "translation": "invalid Transaltion Isolation" + }, + { + "id": "errorCommitInAutoCommitMode", + "translation": "Can't commit in Auto commit status" + }, + { + "id": "errorCommitInAutoCommitMode", + "translation": "Can't rollback in Auto commit status" + }, + { + "id": "errorStatementHandleClosed", + "translation": "Statement handle is closed" + }, + { + "id": "errorResultSetColsed", + "translation": "Resultset is closed" + }, + { + "id": "error.communicationError", + "translation": "Communication error" + }, + { + "id": "error.msgCheckError", + "translation": "Message check error" + }, + { + "id": "error.unkownNetWork", + "translation": "Unkown net work" + }, + { + "id": "error.serverVersion", + "translation": "Server version is too low" + }, + { + "id": "error.usernameTooLong", + "translation": "Username is too long." + }, + { + "id": "error.passwordTooLong", + "translation": "Password to login is too long." + }, + { + "id": "error.dataTooLong", + "translation": "The data is too large to support." + }, + { + "id": "error.invalidColumnType", + "translation": "Invalid column type" + }, + { + "id": "error.dataConvertionError", + "translation": "Data convertion error" + }, + { + "id": "error.invalidConn", + "translation": "Invalid connection" + }, + { + "id": "error.invalidHex", + "translation": "Invalid Hex Number." + }, + { + "id": "error.invalidBFile", + "translation": "Invalid BFile format string." + }, + { + "id": "error.dataOverflow", + "translation": "Digital overflow" + }, + { + "id": "error.invalidDateTimeFormat", + "translation": "Invalid datetime type format" + }, + { + "id": "error.datetimeOverflow", + "translation": "Digital overflow" + }, + { + "id": "error.invalidTimeInterval", + "translation": "Invalid time interval type value" + }, + { + "id": "error.unsupportedInparamType", + "translation": "Unsupported input parameter type" + }, + { + "id": "error.unsupportedOutparamType", + "translation": "Unsupported output parameter type" + }, + { + "id": "error.unsupportedType", + "translation": "Not support this type" + }, + { + "id": "error.invalidObjBlob", + "translation": "invalid Object Blob Data." + }, + { + "id": "error.structMemNotMatch", + "translation": "Members are not matched in Record or Class" + }, + { + "id": "error.invalidComplexTypeName", + "translation": "Invalid descriptor name." + }, + { + "id": "error.invalidParamterValue", + "translation": "Invalid parameter value" + }, + { + "id": "error.invalidArrayLen", + "translation": "the length of static array is bigger than the one when defined." + }, + { + "id": "error.invalidSequenceNumber", + "translation": "Invalid sequence no" + }, + { + "id": "error.resultsetInReadOnlyStatus", + "translation": "Resultset in readonly status" + }, + { + "id": "error.SSLInitFailed", + "translation": "Failed to initialize SSL" + }, + { + "id": "error.LobDataHasFreed", + "translation": "Lob Data has been freed" + }, + { + "id": "error.fatalError", + "translation": "Fatal error" + }, + { + "id": "error.invalidLenOrOffset", + "translation": "Invalid length or offset" + }, + { + "id": "error.intervalValueOverflow", + "translation": "interval type value overflow" + }, + { + "id": "error.invalidCipher", + "translation": "Invalid cipher type" + }, + { + "id": "error.storeInNilPointer", + "translation": "Can't store value into a nil pointer" + }, + { + "id": "error.batchError", + "translation": "Error in executing with batch" + }, + { + "id": "warning.bpWithErr", + "translation": "Warning:Partial failure on execute with batch" + }, + { + "id": "error.invalidSqlType", + "translation": "Invalid sql type" + }, + { + "id": "error.invalidDateTimeValue", + "translation": "Invalid datetime value" + }, + { + "id": "error.msgTooLong", + "translation": "Message too long, limit 512M" + }, + { + "id": "error.isNull", + "translation": "Data is NULL" + }, + { + "id": "error.ParamCountLimit", + "translation": "Parameter count limit is 65536." + }, + { + "id": "error.unbindedParameter", + "translation": "Unbound parameter" + }, + { + "id": "error.stringCut", + "translation": "The string is cut" + }, + { + "id": "error.connectionClosedOrNotBuild", + "translation": "Connection is colsed or not build" + } + ] +}` diff --git a/vendor/gitee.com/chunanyong/dm/i18n/zl.go b/vendor/gitee.com/chunanyong/dm/i18n/zl.go new file mode 100644 index 000000000..d7c87e713 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/i18n/zl.go @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package i18n + +const Messages_zh_CN = `{ + "language": "zh-Hans", + "messages": [ + { + "id": "error.dsn.invalidSchema", + "translation": "DSN串必须以dm://开头" + }, + { + "id": "error.unsupported.scan", + "translation": "Scan类型转换出错" + }, + { + "id": "error.invalidParameterNumber", + "translation": "参数个数不匹配" + }, + { + "id": "error.initThirdPartCipherFailed", + "translation": "第三方加密初始化失败" + }, + { + "id": "error.connectionSwitchFailed", + "translation": "连接重置失败" + }, + { + "id": "error.connectionSwitched", + "translation": "连接已重置" + }, + { + "id": "error.invalidServerMode", + "translation": "服务器模式不匹配" + }, + { + "id": "error.osauthError", + "translation": "同时使用了指定用户登录和OS认证登录, 请确定一种方式." + }, + { + "id": "error.notQuerySQL", + "translation": "非查询SQL语句" + }, + { + "id": "error.notExecSQL", + "translation": "非执行SQL语句" + }, + { + "id": "error.invalidTranIsolation", + "translation": "非法的事务隔离级" + }, + { + "id": "errorCommitInAutoCommitMode", + "translation": "自动提交模式下不能手动提交" + }, + { + "id": "errorRollbackInAutoCommitMode", + "translation": "自动提交模式下不能手动回滚" + }, + { + "id": "errorStatementHandleClosed", + "translation": "语句已经关闭" + }, + { + "id": "errorResultSetColsed", + "translation": "结果集已经关闭" + }, + { + "id": "error.communicationError", + "translation": "网络通信异常" + }, + { + "id": "error.msgCheckError", + "translation": "消息校验异常" + }, + { + "id": "error.unkownNetWork", + "translation": "未知的网络" + }, + { + "id": "error.serverVersion", + "translation": "服务器版本太低" + }, + { + "id": "error.usernameTooLong", + "translation": "用户名超长" + }, + { + "id": "error.passwordTooLong", + "translation": "密码超长" + }, + { + "id": "error.dataTooLong", + "translation": "数据大小已超过可支持范围" + }, + { + "id": "error.invalidColumnType", + "translation": "无效的列类型" + }, + { + "id": "error.dataConvertionError", + "translation": "类型转换异常" + }, + { + "id": "error.invalidConn", + "translation": "连接失效" + }, + { + "id": "error.invalidHex", + "translation": "无效的十六进制数字" + }, + { + "id": "error.invalidBFile", + "translation": "无效的BFile格式串" + }, + { + "id": "error.dataOverflow", + "translation": "数字溢出" + }, + { + "id": "error.invalidDateTimeFormat", + "translation": "错误的日期时间类型格式" + }, + { + "id": "error.datetimeOverflow", + "translation": "数字溢出" + }, + { + "id": "error.invalidTimeInterval", + "translation": "错误的时间间隔类型数据" + }, + { + "id": "error.unsupportedInparamType", + "translation": "输入参数类型不支持" + }, + { + "id": "error.unsupportedOutparamType", + "translation": "输出参数类型不支持" + }, + { + "id": "error.unsupportedType", + "translation": "不支持该数据类型" + }, + { + "id": "error.invalidObjBlob", + "translation": "无效的对象BLOB数据" + }, + { + "id": "error.structMemNotMatch", + "translation": "记录或类数据成员不匹配" + }, + { + "id": "error.invalidComplexTypeName", + "translation": "无效的类型描述名称" + }, + { + "id": "error.invalidParamterValue", + "translation": "无效的参数值" + }, + { + "id": "error.invalidArrayLen", + "translation": "静态数组长度大于定义时长度" + }, + { + "id": "error.invalidSequenceNumber", + "translation": "无效的列序号" + }, + { + "id": "error.resultsetInReadOnlyStatus", + "translation": "结果集处于只读状态" + }, + { + "id": "error.SSLInitFailed", + "translation": "初始化SSL环境失败" + }, + { + "id": "error.LobDataHasFreed", + "translation": "LOB数据已经被释放" + }, + { + "id": "error.fatalError", + "translation": "致命错误" + }, + { + "id": "error.invalidLenOrOffset", + "translation": "长度或偏移错误" + }, + { + "id": "error.intervalValueOverflow", + "translation": "时间间隔类型数据溢出" + }, + { + "id": "error.invalidCipher", + "translation": "不支持的加密类型" + }, + { + "id": "error.storeInNilPointer", + "translation": "无法将数据存入空指针" + }, + { + "id": "error.batchError", + "translation": "批量执行出错" + }, + { + "id": "warning.bpWithErr", + "translation": "警告:批量执行部分行产生错误" + }, + { + "id": "error.invalidSqlType", + "translation": "非法的SQL语句类型" + }, + { + "id": "error.invalidDateTimeValue", + "translation": "无效的日期时间类型值" + }, + { + "id": "error.msgTooLong", + "translation": "消息长度超出限制512M" + }, + { + "id": "error.isNull", + "translation": "数据为NULL" + }, + { + "id": "error.ParamCountLimit", + "translation": "参数个数超过最大值65536." + }, + { + "id": "error.unbindedParameter", + "translation": "有参数未绑定" + }, + { + "id": "error.stringCut", + "translation": "字符串截断" + }, + { + "id": "error.connectionClosedOrNotBuild", + "translation": "连接尚未建立或已经关闭" + } + ] +}` diff --git a/vendor/gitee.com/chunanyong/dm/i18n/zm.go b/vendor/gitee.com/chunanyong/dm/i18n/zm.go new file mode 100644 index 000000000..5bf70f80a --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/i18n/zm.go @@ -0,0 +1,244 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package i18n + +const Messages_zh_HK = `{ + "language": "zh-Hant", + "messages": [ + { + "id": "error.dsn.invalidSchema", + "translation": "DSN串必須以dm://開頭" + }, + { + "id": "error.unsupported.scan", + "translation": "Scan類型轉換出錯" + }, + { + "id": "error.invalidParameterNumber", + "translation": "參數個數不匹配" + }, + { + "id": "error.initThirdPartCipherFailed", + "translation": "第三方加密初始化失敗" + }, + { + "id": "error.connectionSwitchFailed", + "translation": "連接重置失敗" + }, + { + "id": "error.connectionSwitched", + "translation": "連接已重置" + }, + { + "id": "error.invalidServerMode", + "translation": "服務器模式不匹配" + }, + { + "id": "error.osauthError", + "translation": "同時使用了指定用戶登錄和OS認證登錄, 請確定一種方式." + }, + { + "id": "error.notQuerySQL", + "translation": "非查詢SQL語句" + }, + { + "id": "error.notExecSQL", + "translation": "非執行SQL語句" + }, + { + "id": "error.invalidTranIsolation", + "translation": "非法的事務隔離級" + }, + { + "id": "errorCommitInAutoCommitMode", + "translation": "自動提交模式下不能手動提交" + }, + { + "id": "errorRollbackInAutoCommitMode", + "translation": "自動提交模式下不能手動回滾" + }, + { + "id": "errorStatementHandleClosed", + "translation": "語句已經關閉" + }, + { + "id": "errorResultSetColsed", + "translation": "結果集已經關閉" + }, + { + "id": "error.communicationError", + "translation": "網絡通信異常" + }, + { + "id": "error.msgCheckError", + "translation": "消息校驗異常" + }, + { + "id": "error.unkownNetWork", + "translation": "未知的網絡" + }, + { + "id": "error.serverVersion", + "translation": "服務器版本太低" + }, + { + "id": "error.usernameTooLong", + "translation": "用戶名超長" + }, + { + "id": "error.passwordTooLong", + "translation": "密碼超長" + }, + { + "id": "error.dataTooLong", + "translation": "數據大小已超過可支持範圍" + }, + { + "id": "error.invalidColumnType", + "translation": "無效的列類型" + }, + { + "id": "error.dataConvertionError", + "translation": "類型轉換異常" + }, + { + "id": "error.invalidConn", + "translation": "連接失效" + }, + { + "id": "error.invalidHex", + "translation": "無效的十六進制数字" + }, + { + "id": "error.invalidBFile", + "translation": "無效的BFile格式串" + }, + { + "id": "error.dataOverflow", + "translation": "数字溢出" + }, + { + "id": "error.invalidDateTimeFormat", + "translation": "錯誤的日期時間類型格式" + }, + { + "id": "error.datetimeOverflow", + "translation": "数字溢出" + }, + { + "id": "error.invalidTimeInterval", + "translation": "錯誤的時間間隔類型數據" + }, + { + "id": "error.unsupportedInparamType", + "translation": "輸入參數類型不支持" + }, + { + "id": "error.unsupportedOutparamType", + "translation": "輸出參數類型不支持" + }, + { + "id": "error.unsupportedType", + "translation": "不支持該數據類型" + }, + { + "id": "error.invalidObjBlob", + "translation": "無效的對象BLOB數據" + }, + { + "id": "error.structMemNotMatch", + "translation": "記錄或類數據成員不匹配" + }, + { + "id": "error.invalidComplexTypeName", + "translation": "無效的類型描述名稱" + }, + { + "id": "error.invalidParamterValue", + "translation": "無效的參數值" + }, + { + "id": "error.invalidArrayLen", + "translation": "靜態數組長度大於定義時長度" + }, + { + "id": "error.invalidSequenceNumber", + "translation": "無效的列序號" + }, + { + "id": "error.resultsetInReadOnlyStatus", + "translation": "結果集處於只讀狀態" + }, + { + "id": "error.SSLInitFailed", + "translation": "初始化SSL環境失敗" + }, + { + "id": "error.LobDataHasFreed", + "translation": "LOB數據已經被釋放" + }, + { + "id": "error.fatalError", + "translation": "致命錯誤" + }, + { + "id": "error.invalidLenOrOffset", + "translation": "長度或偏移錯誤" + }, + { + "id": "error.intervalValueOverflow", + "translation": "時間間隔類型數據溢出" + }, + { + "id": "error.invalidCipher", + "translation": "不支持的加密類型" + }, + { + "id": "error.storeInNilPointer", + "translation": "無法將數據存入空指針" + }, + { + "id": "error.batchError", + "translation": "批量執行出錯" + }, + { + "id": "warning.bpWithErr", + "translation": "警告:批量執行部分行產生錯誤" + }, + { + "id": "error.invalidSqlType", + "translation": "非法的SQL語句類型" + }, + { + "id": "error.invalidDateTimeValue", + "translation": "無效的日期時間類型值" + }, + { + "id": "error.msgTooLong", + "translation": "消息長度超出限制512M" + }, + { + "id": "error.isNull", + "translation": "數據為NULL" + }, + { + "id": "error.ParamCountLimit", + "translation": "參數個數超過最大值65536." + }, + { + "id": "error.unbindedParameter", + "translation": "有參數未綁定" + }, + { + "id": "error.stringCut", + "translation": "字符串截斷" + }, + { + "id": "error.connectionClosedOrNotBuild", + "translation": "連接尚未建立或已經關閉" + } + ] +}` \ No newline at end of file diff --git a/vendor/gitee.com/chunanyong/dm/j.go b/vendor/gitee.com/chunanyong/dm/j.go new file mode 100644 index 000000000..2617e1239 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/j.go @@ -0,0 +1,270 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import "database/sql/driver" + +type DmArray struct { + TypeData + m_arrDesc *ArrayDescriptor // 数组的描述信息 + + m_arrData []TypeData // 数组中各行数据值 + + m_objArray interface{} // 从服务端获取的 + + m_itemCount int // 本次获取的行数 + + m_itemSize int // 数组中一个数组项的大小,单位bytes + + m_objCount int // 一个数组项中存在对象类型的个数(class、动态数组) + + m_strCount int // 一个数组项中存在字符串类型的个数 + + m_objStrOffs []int // 对象在前,字符串在后 + + typeName string + + elements []interface{} + + // Valid为false代表DmArray数据在数据库中为NULL + Valid bool +} + +func (da *DmArray) init() *DmArray { + da.initTypeData() + da.m_itemCount = 0 + da.m_itemSize = 0 + da.m_objCount = 0 + da.m_strCount = 0 + da.m_objStrOffs = nil + da.m_dumyData = nil + da.m_offset = 0 + + da.m_objArray = nil + da.Valid = true + return da +} + +// 数据库自定义数组Array构造函数,typeName为库中定义的数组类型名称,elements为该数组类型的每个值 +// +// 例如,自定义数组类型语句为:create or replace type myArray is array int[]; +// +// 则绑入绑出的go对象为: val := dm.NewDmArray("myArray", []interface{} {123, 456}) +func NewDmArray(typeName string, elements []interface{}) *DmArray { + da := new(DmArray) + da.typeName = typeName + da.elements = elements + da.Valid = true + return da +} + +func (da *DmArray) create(dc *DmConnection) (*DmArray, error) { + desc, err := newArrayDescriptor(da.typeName, dc) + if err != nil { + return nil, err + } + return da.createByArrayDescriptor(desc, dc) +} + +func (da *DmArray) createByArrayDescriptor(arrDesc *ArrayDescriptor, conn *DmConnection) (*DmArray, error) { + + if nil == arrDesc { + return nil, ECGO_INVALID_PARAMETER_VALUE.throw() + } + + da.init() + + da.m_arrDesc = arrDesc + if nil == da.elements { + da.m_arrData = make([]TypeData, 0) + } else { + // 若为静态数组,判断给定数组长度是否超过静态数组的上限 + if arrDesc.getMDesc() == nil || (arrDesc.getMDesc().getDType() == SARRAY && len(da.elements) > arrDesc.getMDesc().getStaticArrayLength()) { + return nil, ECGO_INVALID_ARRAY_LEN.throw() + } + + var err error + da.m_arrData, err = TypeDataSV.toArray(da.elements, da.m_arrDesc.getMDesc()) + if err != nil { + return nil, err + } + } + + da.m_itemCount = len(da.m_arrData) + return da, nil +} + +func newDmArrayByTypeData(atData []TypeData, desc *TypeDescriptor) *DmArray { + da := new(DmArray) + da.init() + da.m_arrDesc = newArrayDescriptorByTypeDescriptor(desc) + da.m_arrData = atData + return da +} + +func (da *DmArray) checkIndex(index int64) error { + if index < 0 || index > int64(len(da.m_arrData)-1) { + return ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + return nil +} + +func (da *DmArray) checkIndexAndCount(index int64, count int) error { + err := da.checkIndex(index) + if err != nil { + return err + } + + if count <= 0 || index+int64(count) > int64(len(da.m_arrData)) { + return ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + return nil +} + +// 获取Array对象在数据库中的类型名称 +func (da *DmArray) GetBaseTypeName() (string, error) { + if err := da.checkValid(); err != nil { + return "", err + } + return da.m_arrDesc.m_typeDesc.getFulName() +} + +// 获取Array对象的go数组对象 +func (da *DmArray) GetArray() (interface{}, error) { + if da.m_arrData == nil || len(da.m_arrData) <= 0 { + return nil, nil; + } + + return TypeDataSV.toJavaArray(da, 0, len(da.m_arrData), da.m_arrDesc.getItemDesc().getDType()) +} + +// 获取Array对象的指定偏移和执行长度go数据对象 index从0开始 +func (da *DmArray) GetObjArray(index int64, count int) (interface{}, error) { + var err error + if err = da.checkValid(); err != nil { + return nil, err + } + if err = da.checkIndexAndCount(index, count); err != nil { + return nil, err + } + + return TypeDataSV.toJavaArray(da, index, count, da.m_arrDesc.getItemDesc().getDType()) +} + +func (da *DmArray) GetIntArray(index int64, count int) ([]int, error) { + var err error + if err = da.checkValid(); err != nil { + return nil, err + } + if err = da.checkIndexAndCount(index, count); err != nil { + return nil, err + } + + tmp, err := TypeDataSV.toNumericArray(da, index, count, ARRAY_TYPE_INTEGER) + if err != nil { + return nil, err + } + return tmp.([]int), nil +} + +func (da *DmArray) GetInt16Array(index int64, count int) ([]int16, error) { + var err error + if err = da.checkValid(); err != nil { + return nil, err + } + if err = da.checkIndexAndCount(index, count); err != nil { + return nil, err + } + + tmp, err := TypeDataSV.toNumericArray(da, index, count, ARRAY_TYPE_SHORT) + if err != nil { + return nil, err + } + return tmp.([]int16), nil +} + +func (da *DmArray) GetInt64Array(index int64, count int) ([]int64, error) { + var err error + if err = da.checkValid(); err != nil { + return nil, err + } + if err = da.checkIndexAndCount(index, count); err != nil { + return nil, err + } + + tmp, err := TypeDataSV.toNumericArray(da, index, count, ARRAY_TYPE_LONG) + if err != nil { + return nil, err + } + + return tmp.([]int64), nil +} + +func (da *DmArray) GetFloatArray(index int64, count int) ([]float32, error) { + var err error + if err = da.checkValid(); err != nil { + return nil, err + } + if err = da.checkIndexAndCount(index, count); err != nil { + return nil, err + } + + tmp, err := TypeDataSV.toNumericArray(da, index, count, ARRAY_TYPE_FLOAT) + if err != nil { + return nil, err + } + + return tmp.([]float32), nil +} + +func (da *DmArray) GetDoubleArray(index int64, count int) ([]float64, error) { + var err error + if err = da.checkValid(); err != nil { + return nil, err + } + if err = da.checkIndexAndCount(index, count); err != nil { + return nil, err + } + + tmp, err := TypeDataSV.toNumericArray(da, index, count, ARRAY_TYPE_DOUBLE) + if err != nil { + return nil, err + } + + return tmp.([]float64), nil +} + +func (dest *DmArray) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmArray) + // 将Valid标志置false表示数据库中该列为NULL + (*dest).Valid = false + return nil + case *DmArray: + *dest = *src + return nil + default: + return UNSUPPORTED_SCAN.throw() + } +} + +func (array DmArray) Value() (driver.Value, error) { + if !array.Valid { + return nil, nil + } + return array, nil +} + +func (array *DmArray) checkValid() error { + if !array.Valid { + return ECGO_IS_NULL.throw() + } + return nil +} diff --git a/vendor/gitee.com/chunanyong/dm/k.go b/vendor/gitee.com/chunanyong/dm/k.go new file mode 100644 index 000000000..abfa83cf4 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/k.go @@ -0,0 +1,294 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql/driver" + "io" +) + +type DmBlob struct { + lob + data []byte + offset int64 +} + +func newDmBlob() *DmBlob { + return &DmBlob{ + lob: lob{ + inRow: true, + groupId: -1, + fileId: -1, + pageNo: -1, + readOver: false, + local: true, + updateable: true, + length: -1, + compatibleOracle: false, + fetchAll: false, + freed: false, + modify: false, + Valid: true, + }, + offset: 1, + } +} + +func newBlobFromDB(value []byte, conn *DmConnection, column *column, fetchAll bool) *DmBlob { + var blob = newDmBlob() + blob.connection = conn + blob.lobFlag = LOB_FLAG_BYTE + blob.compatibleOracle = conn.CompatibleOracle() + blob.local = false + blob.updateable = !column.readonly + blob.tabId = column.lobTabId + blob.colId = column.lobColId + + blob.inRow = Dm_build_650.Dm_build_743(value, NBLOB_HEAD_IN_ROW_FLAG) == LOB_IN_ROW + blob.blobId = Dm_build_650.Dm_build_757(value, NBLOB_HEAD_BLOBID) + if !blob.inRow { + blob.groupId = Dm_build_650.Dm_build_747(value, NBLOB_HEAD_OUTROW_GROUPID) + blob.fileId = Dm_build_650.Dm_build_747(value, NBLOB_HEAD_OUTROW_FILEID) + blob.pageNo = Dm_build_650.Dm_build_752(value, NBLOB_HEAD_OUTROW_PAGENO) + } + if conn.NewLobFlag { + blob.tabId = Dm_build_650.Dm_build_752(value, NBLOB_EX_HEAD_TABLE_ID) + blob.colId = Dm_build_650.Dm_build_747(value, NBLOB_EX_HEAD_COL_ID) + blob.rowId = Dm_build_650.Dm_build_757(value, NBLOB_EX_HEAD_ROW_ID) + blob.exGroupId = Dm_build_650.Dm_build_747(value, NBLOB_EX_HEAD_FPA_GRPID) + blob.exFileId = Dm_build_650.Dm_build_747(value, NBLOB_EX_HEAD_FPA_FILEID) + blob.exPageNo = Dm_build_650.Dm_build_752(value, NBLOB_EX_HEAD_FPA_PAGENO) + } + blob.resetCurrentInfo() + + blob.length = blob.getLengthFromHead(value) + if blob.inRow { + blob.data = make([]byte, blob.length) + if conn.NewLobFlag { + Dm_build_650.Dm_build_706(blob.data, 0, value, NBLOB_EX_HEAD_SIZE, len(blob.data)) + } else { + Dm_build_650.Dm_build_706(blob.data, 0, value, NBLOB_INROW_HEAD_SIZE, len(blob.data)) + } + } else if fetchAll { + blob.loadAllData() + } + return blob +} + +func newBlobOfLocal(value []byte, conn *DmConnection) *DmBlob { + var blob = newDmBlob() + blob.connection = conn + blob.lobFlag = LOB_FLAG_BYTE + blob.data = value + blob.length = int64(len(blob.data)) + return blob +} + +func NewBlob(value []byte) *DmBlob { + var blob = newDmBlob() + + blob.lobFlag = LOB_FLAG_BYTE + blob.data = value + blob.length = int64(len(blob.data)) + return blob +} + +func (blob *DmBlob) Read(dest []byte) (n int, err error) { + if err = blob.checkValid(); err != nil { + return + } + result, err := blob.getBytes(blob.offset, int32(len(dest))) + if err != nil { + return 0, err + } + blob.offset += int64(len(result)) + copy(dest, result) + if len(result) == 0 { + return 0, io.EOF + } + return len(result), nil +} + +func (blob *DmBlob) ReadAt(pos int, dest []byte) (n int, err error) { + if err = blob.checkValid(); err != nil { + return + } + result, err := blob.getBytes(int64(pos), int32(len(dest))) + if err != nil { + return 0, err + } + if len(result) == 0 { + return 0, io.EOF + } + copy(dest[0:len(result)], result) + return len(result), nil +} + +func (blob *DmBlob) Write(pos int, src []byte) (n int, err error) { + if err = blob.checkValid(); err != nil { + return + } + if err = blob.checkFreed(); err != nil { + return + } + if pos < 1 { + err = ECGO_INVALID_LENGTH_OR_OFFSET.throw() + return + } + if !blob.updateable { + err = ECGO_RESULTSET_IS_READ_ONLY.throw() + return + } + pos -= 1 + if blob.local || blob.fetchAll { + if int64(pos) > blob.length { + err = ECGO_INVALID_LENGTH_OR_OFFSET.throw() + return + } + blob.setLocalData(pos, src) + n = len(src) + } else { + if err = blob.connection.checkClosed(); err != nil { + return -1, err + } + var writeLen, err = blob.connection.Access.dm_build_1561(blob, pos, src) + if err != nil { + return -1, err + } + + if blob.groupId == -1 { + blob.setLocalData(pos, src) + } else { + blob.inRow = false + blob.length = -1 + } + n = writeLen + + } + blob.modify = true + return +} + +func (blob *DmBlob) Truncate(length int64) error { + var err error + if err = blob.checkValid(); err != nil { + return err + } + if err = blob.checkFreed(); err != nil { + return err + } + if length < 0 { + return ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + if !blob.updateable { + return ECGO_RESULTSET_IS_READ_ONLY.throw() + } + if blob.local || blob.fetchAll { + if length >= int64(len(blob.data)) { + return nil + } + tmp := make([]byte, length) + Dm_build_650.Dm_build_706(tmp, 0, blob.data, 0, len(tmp)) + blob.data = tmp + blob.length = int64(len(tmp)) + } else { + if err = blob.connection.checkClosed(); err != nil { + return err + } + blob.length, err = blob.connection.Access.dm_build_1575(&blob.lob, int(length)) + if err != nil { + return err + } + if blob.groupId == -1 { + tmp := make([]byte, blob.length) + Dm_build_650.Dm_build_706(tmp, 0, blob.data, 0, int(blob.length)) + blob.data = tmp + } + } + blob.modify = true + return nil +} + +func (dest *DmBlob) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmBlob) + + (*dest).Valid = false + return nil + case []byte: + *dest = *NewBlob(src) + return nil + case *DmBlob: + *dest = *src + return nil + default: + return UNSUPPORTED_SCAN.throw() + } +} + +func (blob DmBlob) Value() (driver.Value, error) { + if !blob.Valid { + return nil, nil + } + return blob, nil +} + +func (blob *DmBlob) getBytes(pos int64, length int32) ([]byte, error) { + var err error + var leaveLength int64 + if err = blob.checkFreed(); err != nil { + return nil, err + } + if pos < 1 || length < 0 { + return nil, ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + pos = pos - 1 + if leaveLength, err = blob.GetLength(); err != nil { + return nil, err + } + leaveLength -= pos + if leaveLength < 0 { + return nil, ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + if int64(length) > leaveLength { + length = int32(leaveLength) + } + if blob.local || blob.inRow || blob.fetchAll { + return blob.data[pos : pos+int64(length)], nil + } else { + + return blob.connection.Access.dm_build_1522(blob, int32(pos), length) + } +} + +func (blob *DmBlob) loadAllData() { + blob.checkFreed() + if blob.local || blob.inRow || blob.fetchAll { + return + } + len, _ := blob.GetLength() + blob.data, _ = blob.getBytes(1, int32(len)) + blob.fetchAll = true +} + +func (blob *DmBlob) setLocalData(pos int, p []byte) { + if pos+len(p) >= int(blob.length) { + var tmp = make([]byte, pos+len(p)) + Dm_build_650.Dm_build_706(tmp, 0, blob.data, 0, pos) + Dm_build_650.Dm_build_706(tmp, pos, p, 0, len(p)) + blob.data = tmp + } else { + Dm_build_650.Dm_build_706(blob.data, pos, p, 0, len(p)) + } + blob.length = int64(len(blob.data)) +} + +func (d *DmBlob) GormDataType() string { + return "BLOB" +} diff --git a/vendor/gitee.com/chunanyong/dm/l.go b/vendor/gitee.com/chunanyong/dm/l.go new file mode 100644 index 000000000..5091a3292 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/l.go @@ -0,0 +1,276 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql/driver" + "io" +) + +type DmClob struct { + lob + data []rune + serverEncoding string +} + +func newDmClob() *DmClob { + return &DmClob{ + lob: lob{ + inRow: true, + groupId: -1, + fileId: -1, + pageNo: -1, + readOver: false, + local: true, + updateable: true, + length: -1, + compatibleOracle: false, + fetchAll: false, + freed: false, + modify: false, + Valid: true, + }, + } +} + +func newClobFromDB(value []byte, conn *DmConnection, column *column, fetchAll bool) *DmClob { + var clob = newDmClob() + clob.connection = conn + clob.lobFlag = LOB_FLAG_CHAR + clob.compatibleOracle = conn.CompatibleOracle() + clob.local = false + clob.updateable = !column.readonly + clob.tabId = column.lobTabId + clob.colId = column.lobColId + + clob.inRow = Dm_build_650.Dm_build_743(value, NBLOB_HEAD_IN_ROW_FLAG) == LOB_IN_ROW + clob.blobId = Dm_build_650.Dm_build_757(value, NBLOB_HEAD_BLOBID) + if !clob.inRow { + clob.groupId = Dm_build_650.Dm_build_747(value, NBLOB_HEAD_OUTROW_GROUPID) + clob.fileId = Dm_build_650.Dm_build_747(value, NBLOB_HEAD_OUTROW_FILEID) + clob.pageNo = Dm_build_650.Dm_build_752(value, NBLOB_HEAD_OUTROW_PAGENO) + } + if conn.NewLobFlag { + clob.tabId = Dm_build_650.Dm_build_752(value, NBLOB_EX_HEAD_TABLE_ID) + clob.colId = Dm_build_650.Dm_build_747(value, NBLOB_EX_HEAD_COL_ID) + clob.rowId = Dm_build_650.Dm_build_757(value, NBLOB_EX_HEAD_ROW_ID) + clob.exGroupId = Dm_build_650.Dm_build_747(value, NBLOB_EX_HEAD_FPA_GRPID) + clob.exFileId = Dm_build_650.Dm_build_747(value, NBLOB_EX_HEAD_FPA_FILEID) + clob.exPageNo = Dm_build_650.Dm_build_752(value, NBLOB_EX_HEAD_FPA_PAGENO) + } + clob.resetCurrentInfo() + + clob.serverEncoding = conn.getServerEncoding() + if clob.inRow { + if conn.NewLobFlag { + clob.data = []rune(Dm_build_650.Dm_build_807(value, NBLOB_EX_HEAD_SIZE, int(clob.getLengthFromHead(value)), clob.serverEncoding, conn)) + } else { + clob.data = []rune(Dm_build_650.Dm_build_807(value, NBLOB_INROW_HEAD_SIZE, int(clob.getLengthFromHead(value)), clob.serverEncoding, conn)) + } + clob.length = int64(len(clob.data)) + } else if fetchAll { + clob.loadAllData() + } + return clob +} + +func newClobOfLocal(value string, conn *DmConnection) *DmClob { + var clob = newDmClob() + clob.connection = conn + clob.lobFlag = LOB_FLAG_CHAR + clob.data = []rune(value) + clob.length = int64(len(clob.data)) + return clob +} + +func NewClob(value string) *DmClob { + var clob = newDmClob() + + clob.lobFlag = LOB_FLAG_CHAR + clob.data = []rune(value) + clob.length = int64(len(clob.data)) + return clob +} + +func (clob *DmClob) ReadString(pos int, length int) (result string, err error) { + if err = clob.checkValid(); err != nil { + return + } + result, err = clob.getSubString(int64(pos), int32(length)) + if err != nil { + return + } + if len(result) == 0 { + err = io.EOF + return + } + return +} + +func (clob *DmClob) WriteString(pos int, s string) (n int, err error) { + if err = clob.checkValid(); err != nil { + return + } + if err = clob.checkFreed(); err != nil { + return + } + if pos < 1 { + err = ECGO_INVALID_LENGTH_OR_OFFSET.throw() + return + } + if !clob.updateable { + err = ECGO_RESULTSET_IS_READ_ONLY.throw() + return + } + pos -= 1 + if clob.local || clob.fetchAll { + if int64(pos) > clob.length { + err = ECGO_INVALID_LENGTH_OR_OFFSET.throw() + return + } + clob.setLocalData(pos, s) + n = len(s) + } else { + if err = clob.connection.checkClosed(); err != nil { + return -1, err + } + var writeLen, err = clob.connection.Access.dm_build_1545(clob, pos, s, clob.serverEncoding) + if err != nil { + return -1, err + } + + if clob.groupId == -1 { + clob.setLocalData(pos, s) + } else { + clob.inRow = false + clob.length = -1 + } + n = writeLen + } + clob.modify = true + return +} + +func (clob *DmClob) Truncate(length int64) error { + var err error + if err = clob.checkValid(); err != nil { + return err + } + if err = clob.checkFreed(); err != nil { + return err + } + if length < 0 { + return ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + if !clob.updateable { + return ECGO_RESULTSET_IS_READ_ONLY.throw() + } + if clob.local || clob.fetchAll { + if length >= int64(len(clob.data)) { + return nil + } + clob.data = clob.data[0:length] + clob.length = int64(len(clob.data)) + } else { + if err = clob.connection.checkClosed(); err != nil { + return err + } + clob.length, err = clob.connection.Access.dm_build_1575(&clob.lob, int(length)) + if err != nil { + return err + } + if clob.groupId == -1 { + clob.data = clob.data[0:clob.length] + } + } + clob.modify = true + return nil +} + +func (dest *DmClob) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmClob) + + (*dest).Valid = false + return nil + case string: + *dest = *NewClob(src) + return nil + case *DmClob: + *dest = *src + return nil + default: + return UNSUPPORTED_SCAN.throw() + } +} + +func (clob DmClob) Value() (driver.Value, error) { + if !clob.Valid { + return nil, nil + } + return clob, nil +} + +func (clob *DmClob) getSubString(pos int64, len int32) (string, error) { + var err error + var leaveLength int64 + if err = clob.checkFreed(); err != nil { + return "", err + } + if pos < 1 || len < 0 { + return "", ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + pos = pos - 1 + if leaveLength, err = clob.GetLength(); err != nil { + return "", err + } + if pos > leaveLength { + pos = leaveLength + } + leaveLength -= pos + if leaveLength < 0 { + return "", ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + if int64(len) > leaveLength { + len = int32(leaveLength) + } + if clob.local || clob.inRow || clob.fetchAll { + if pos > clob.length { + return "", ECGO_INVALID_LENGTH_OR_OFFSET.throw() + } + return string(clob.data[pos : pos+int64(len)]), nil + } else { + + return clob.connection.Access.dm_build_1533(clob, int32(pos), len) + } +} + +func (clob *DmClob) loadAllData() { + clob.checkFreed() + if clob.local || clob.inRow || clob.fetchAll { + return + } + len, _ := clob.GetLength() + s, _ := clob.getSubString(1, int32(len)) + clob.data = []rune(s) + clob.fetchAll = true +} + +func (clob *DmClob) setLocalData(pos int, str string) { + if pos+len(str) >= int(clob.length) { + clob.data = []rune(string(clob.data[0:pos]) + str) + } else { + clob.data = []rune(string(clob.data[0:pos]) + str + string(clob.data[pos+len(str):len(clob.data)])) + } + clob.length = int64(len(clob.data)) +} + +func (d *DmClob) GormDataType() string { + return "CLOB" +} diff --git a/vendor/gitee.com/chunanyong/dm/m.go b/vendor/gitee.com/chunanyong/dm/m.go new file mode 100644 index 000000000..f00651269 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/m.go @@ -0,0 +1,875 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "bytes" + "context" + "database/sql" + "database/sql/driver" + "fmt" + "sync" + "sync/atomic" + + "gitee.com/chunanyong/dm/parser" + + "gitee.com/chunanyong/dm/util" + "golang.org/x/text/encoding" +) + +type DmConnection struct { + filterable + mu sync.Mutex + + dmConnector *DmConnector + Access *dm_build_1345 + stmtMap map[int32]*DmStatement + + lastExecInfo *execRetInfo + lexer *parser.Lexer + encode encoding.Encoding + encodeBuffer *bytes.Buffer + transformReaderDst []byte + transformReaderSrc []byte + + serverEncoding string + GlobalServerSeries int + ServerVersion string + Malini2 bool + Execute2 bool + LobEmptyCompOrcl bool + IsoLevel int32 + ReadOnly bool + NewLobFlag bool + sslEncrypt int + MaxRowSize int32 + DDLAutoCommit bool + BackslashEscape bool + SvrStat int32 + SvrMode int32 + ConstParaOpt bool + DbTimezone int16 + LifeTimeRemainder int16 + InstanceName string + Schema string + LastLoginIP string + LastLoginTime string + FailedAttempts int32 + LoginWarningID int32 + GraceTimeRemainder int32 + Guid string + DbName string + StandbyHost string + StandbyPort int32 + StandbyCount int32 + SessionID int64 + OracleDateLanguage byte + FormatDate string + FormatTimestamp string + FormatTimestampTZ string + FormatTime string + FormatTimeTZ string + Local bool + MsgVersion int32 + TrxStatus int32 + dscControl bool + trxFinish bool + autoCommit bool + isBatch bool + + watching bool + watcher chan<- context.Context + closech chan struct{} + finished chan<- struct{} + canceled atomicError + closed atomicBool +} + +func (conn *DmConnection) setTrxFinish(status int32) { + switch status & Dm_build_132 { + case Dm_build_129, Dm_build_130, Dm_build_131: + conn.trxFinish = true + default: + conn.trxFinish = false + } +} + +func (dmConn *DmConnection) init() { + + dmConn.stmtMap = make(map[int32]*DmStatement) + dmConn.DbTimezone = 0 + dmConn.GlobalServerSeries = 0 + dmConn.MaxRowSize = 0 + dmConn.LobEmptyCompOrcl = false + dmConn.ReadOnly = false + dmConn.DDLAutoCommit = false + dmConn.ConstParaOpt = false + dmConn.IsoLevel = -1 + dmConn.Malini2 = true + dmConn.NewLobFlag = true + dmConn.Execute2 = true + dmConn.serverEncoding = ENCODING_GB18030 + dmConn.TrxStatus = Dm_build_80 + dmConn.setTrxFinish(dmConn.TrxStatus) + dmConn.OracleDateLanguage = byte(Locale) + dmConn.lastExecInfo = NewExceInfo() + dmConn.MsgVersion = Dm_build_13 + + dmConn.idGenerator = dmConnIDGenerator +} + +func (dmConn *DmConnection) reset() { + dmConn.DbTimezone = 0 + dmConn.GlobalServerSeries = 0 + dmConn.MaxRowSize = 0 + dmConn.LobEmptyCompOrcl = false + dmConn.ReadOnly = false + dmConn.DDLAutoCommit = false + dmConn.ConstParaOpt = false + dmConn.IsoLevel = -1 + dmConn.Malini2 = true + dmConn.NewLobFlag = true + dmConn.Execute2 = true + dmConn.serverEncoding = ENCODING_GB18030 + dmConn.TrxStatus = Dm_build_80 + dmConn.setTrxFinish(dmConn.TrxStatus) +} + +func (dc *DmConnection) checkClosed() error { + if dc.closed.IsSet() { + return driver.ErrBadConn + } + + return nil +} + +func (dc *DmConnection) executeInner(query string, execType int16) (interface{}, error) { + + stmt, err := NewDmStmt(dc, query) + + if err != nil { + return nil, err + } + + if execType == Dm_build_97 { + defer stmt.close() + } + + stmt.innerUsed = true + if stmt.dmConn.dmConnector.escapeProcess { + stmt.nativeSql, err = stmt.dmConn.escape(stmt.nativeSql, stmt.dmConn.dmConnector.keyWords) + if err != nil { + stmt.close() + return nil, err + } + } + + var optParamList []OptParameter + + if stmt.dmConn.ConstParaOpt { + optParamList = make([]OptParameter, 0) + stmt.nativeSql, optParamList, err = stmt.dmConn.execOpt(stmt.nativeSql, optParamList, stmt.dmConn.getServerEncoding()) + if err != nil { + stmt.close() + optParamList = nil + } + } + + if execType == Dm_build_96 && dc.dmConnector.enRsCache { + rpv, err := rp.get(stmt, query) + if err != nil { + return nil, err + } + + if rpv != nil { + stmt.execInfo = rpv.execInfo + dc.lastExecInfo = rpv.execInfo + return newDmRows(rpv.getResultSet(stmt)), nil + } + } + + var info *execRetInfo + + if optParamList != nil && len(optParamList) > 0 { + info, err = dc.Access.Dm_build_1428(stmt, optParamList) + if err != nil { + stmt.nativeSql = query + info, err = dc.Access.Dm_build_1434(stmt, execType) + } + } else { + info, err = dc.Access.Dm_build_1434(stmt, execType) + } + + if err != nil { + stmt.close() + return nil, err + } + dc.lastExecInfo = info + + if execType == Dm_build_96 && info.hasResultSet { + return newDmRows(newInnerRows(0, stmt, info)), nil + } else { + return newDmResult(stmt, info), nil + } +} + +func g2dbIsoLevel(isoLevel int32) int32 { + switch isoLevel { + case 1: + return Dm_build_84 + case 2: + return Dm_build_85 + case 4: + return Dm_build_86 + case 6: + return Dm_build_87 + default: + return -1 + } +} + +func (dc *DmConnection) Begin() (driver.Tx, error) { + if len(dc.filterChain.filters) == 0 { + return dc.begin() + } else { + return dc.filterChain.reset().DmConnectionBegin(dc) + } +} + +func (dc *DmConnection) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) { + if len(dc.filterChain.filters) == 0 { + return dc.beginTx(ctx, opts) + } + return dc.filterChain.reset().DmConnectionBeginTx(dc, ctx, opts) +} + +func (dc *DmConnection) Commit() error { + if len(dc.filterChain.filters) == 0 { + return dc.commit() + } else { + return dc.filterChain.reset().DmConnectionCommit(dc) + } +} + +func (dc *DmConnection) Rollback() error { + if len(dc.filterChain.filters) == 0 { + return dc.rollback() + } else { + return dc.filterChain.reset().DmConnectionRollback(dc) + } +} + +func (dc *DmConnection) Close() error { + if len(dc.filterChain.filters) == 0 { + return dc.close() + } else { + return dc.filterChain.reset().DmConnectionClose(dc) + } +} + +func (dc *DmConnection) Ping(ctx context.Context) error { + if len(dc.filterChain.filters) == 0 { + return dc.ping(ctx) + } else { + return dc.filterChain.reset().DmConnectionPing(dc, ctx) + } +} + +func (dc *DmConnection) Exec(query string, args []driver.Value) (driver.Result, error) { + if len(dc.filterChain.filters) == 0 { + return dc.exec(query, args) + } + return dc.filterChain.reset().DmConnectionExec(dc, query, args) +} + +func (dc *DmConnection) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) { + if len(dc.filterChain.filters) == 0 { + return dc.execContext(ctx, query, args) + } + return dc.filterChain.reset().DmConnectionExecContext(dc, ctx, query, args) +} + +func (dc *DmConnection) Query(query string, args []driver.Value) (driver.Rows, error) { + if len(dc.filterChain.filters) == 0 { + return dc.query(query, args) + } + return dc.filterChain.reset().DmConnectionQuery(dc, query, args) +} + +func (dc *DmConnection) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) { + if len(dc.filterChain.filters) == 0 { + return dc.queryContext(ctx, query, args) + } + return dc.filterChain.reset().DmConnectionQueryContext(dc, ctx, query, args) +} + +func (dc *DmConnection) Prepare(query string) (driver.Stmt, error) { + if len(dc.filterChain.filters) == 0 { + return dc.prepare(query) + } + return dc.filterChain.reset().DmConnectionPrepare(dc, query) +} + +func (dc *DmConnection) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) { + if len(dc.filterChain.filters) == 0 { + return dc.prepareContext(ctx, query) + } + return dc.filterChain.reset().DmConnectionPrepareContext(dc, ctx, query) +} + +func (dc *DmConnection) ResetSession(ctx context.Context) error { + if len(dc.filterChain.filters) == 0 { + return dc.resetSession(ctx) + } + if err := dc.filterChain.reset().DmConnectionResetSession(dc, ctx); err != nil { + return driver.ErrBadConn + } else { + return nil + } +} + +func (dc *DmConnection) CheckNamedValue(nv *driver.NamedValue) error { + if len(dc.filterChain.filters) == 0 { + return dc.checkNamedValue(nv) + } + return dc.filterChain.reset().DmConnectionCheckNamedValue(dc, nv) +} + +func (dc *DmConnection) begin() (*DmConnection, error) { + return dc.beginTx(context.Background(), driver.TxOptions{driver.IsolationLevel(sql.LevelDefault), false}) +} + +func (dc *DmConnection) beginTx(ctx context.Context, opts driver.TxOptions) (*DmConnection, error) { + if err := dc.watchCancel(ctx); err != nil { + return nil, err + } + defer dc.finish() + + err := dc.checkClosed() + if err != nil { + return nil, err + } + + dc.autoCommit = false + + if dc.ReadOnly != opts.ReadOnly { + dc.ReadOnly = opts.ReadOnly + var readonly = 0 + if opts.ReadOnly { + readonly = 1 + } + dc.exec(fmt.Sprintf("SP_SET_SESSION_READONLY(%d)", readonly), nil) + } + + if dc.IsoLevel != int32(opts.Isolation) { + switch sql.IsolationLevel(opts.Isolation) { + case sql.LevelDefault: + dc.IsoLevel = int32(sql.LevelReadCommitted) + case sql.LevelReadUncommitted, sql.LevelReadCommitted, sql.LevelSerializable: + dc.IsoLevel = int32(opts.Isolation) + case sql.LevelRepeatableRead: + if dc.CompatibleMysql() { + dc.IsoLevel = int32(sql.LevelReadCommitted) + } else { + return nil, ECGO_INVALID_TRAN_ISOLATION.throw() + } + default: + return nil, ECGO_INVALID_TRAN_ISOLATION.throw() + } + + err = dc.Access.Dm_build_1488(dc) + if err != nil { + return nil, err + } + } + + return dc, nil +} + +func (dc *DmConnection) commit() error { + err := dc.checkClosed() + if err != nil { + return err + } + + defer func() { + dc.autoCommit = dc.dmConnector.autoCommit + if dc.ReadOnly { + dc.exec("SP_SET_SESSION_READONLY(0)", nil) + } + }() + + if !dc.autoCommit { + err = dc.Access.Commit() + if err != nil { + return err + } + dc.trxFinish = true + return nil + } else if !dc.dmConnector.alwayseAllowCommit { + return ECGO_COMMIT_IN_AUTOCOMMIT_MODE.throw() + } + + return nil +} + +func (dc *DmConnection) rollback() error { + err := dc.checkClosed() + if err != nil { + return err + } + + defer func() { + dc.autoCommit = dc.dmConnector.autoCommit + if dc.ReadOnly { + dc.exec("SP_SET_SESSION_READONLY(0)", nil) + } + }() + + if !dc.autoCommit { + err = dc.Access.Rollback() + if err != nil { + return err + } + dc.trxFinish = true + return nil + } else if !dc.dmConnector.alwayseAllowCommit { + return ECGO_ROLLBACK_IN_AUTOCOMMIT_MODE.throw() + } + + return nil +} + +func (dc *DmConnection) reconnect() error { + err := dc.Access.Close() + if err != nil { + return err + } + + for _, stmt := range dc.stmtMap { + + for id, rs := range stmt.rsMap { + rs.Close() + delete(stmt.rsMap, id) + } + } + + var newConn *DmConnection + if dc.dmConnector.group != nil { + if newConn, err = dc.dmConnector.group.connect(dc.dmConnector); err != nil { + return err + } + } else { + newConn, err = dc.dmConnector.connect(context.Background()) + } + + oldMap := dc.stmtMap + newConn.mu = dc.mu + newConn.filterable = dc.filterable + *dc = *newConn + + for _, stmt := range oldMap { + if stmt.closed { + continue + } + err = dc.Access.Dm_build_1406(stmt) + if err != nil { + stmt.free() + continue + } + + if stmt.prepared || stmt.paramCount > 0 { + if err = stmt.prepare(); err != nil { + continue + } + } + + dc.stmtMap[stmt.id] = stmt + } + + return nil +} + +func (dc *DmConnection) cleanup() { + dc.close() +} + +func (dc *DmConnection) close() error { + if !dc.closed.TrySet(true) { + return nil + } + + util.AbsorbPanic(func() { + close(dc.closech) + }) + if dc.Access == nil { + return nil + } + + dc.rollback() + + for _, stmt := range dc.stmtMap { + stmt.free() + } + + dc.Access.Close() + + return nil +} + +func (dc *DmConnection) ping(ctx context.Context) error { + if err := dc.watchCancel(ctx); err != nil { + return err + } + defer dc.finish() + + rows, err := dc.query("select 1", nil) + if err != nil { + return err + } + return rows.close() +} + +func (dc *DmConnection) exec(query string, args []driver.Value) (*DmResult, error) { + err := dc.checkClosed() + if err != nil { + return nil, err + } + + if args != nil && len(args) > 0 { + stmt, err := dc.prepare(query) + if err != nil { + return nil, err + } + defer stmt.close() + dc.lastExecInfo = stmt.execInfo + + return stmt.exec(args) + } else { + r1, err := dc.executeInner(query, Dm_build_97) + if err != nil { + return nil, err + } + + if r2, ok := r1.(*DmResult); ok { + return r2, nil + } else { + return nil, ECGO_NOT_EXEC_SQL.throw() + } + } +} + +func (dc *DmConnection) execContext(ctx context.Context, query string, args []driver.NamedValue) (*DmResult, error) { + if err := dc.watchCancel(ctx); err != nil { + return nil, err + } + defer dc.finish() + + err := dc.checkClosed() + if err != nil { + return nil, err + } + + if args != nil && len(args) > 0 { + stmt, err := dc.prepare(query) + if err != nil { + return nil, err + } + defer stmt.close() + dc.lastExecInfo = stmt.execInfo + dargs, err := namedValueToValue(stmt, args) + if err != nil { + return nil, err + } + return stmt.exec(dargs) + } else { + r1, err := dc.executeInner(query, Dm_build_97) + if err != nil { + return nil, err + } + + if r2, ok := r1.(*DmResult); ok { + return r2, nil + } else { + return nil, ECGO_NOT_EXEC_SQL.throw() + } + } +} + +func (dc *DmConnection) query(query string, args []driver.Value) (*DmRows, error) { + + err := dc.checkClosed() + if err != nil { + return nil, err + } + + if args != nil && len(args) > 0 { + stmt, err := dc.prepare(query) + if err != nil { + return nil, err + } + dc.lastExecInfo = stmt.execInfo + + stmt.innerUsed = true + return stmt.query(args) + + } else { + r1, err := dc.executeInner(query, Dm_build_96) + if err != nil { + return nil, err + } + + if r2, ok := r1.(*DmRows); ok { + return r2, nil + } else { + return nil, ECGO_NOT_QUERY_SQL.throw() + } + } +} + +func (dc *DmConnection) queryContext(ctx context.Context, query string, args []driver.NamedValue) (*DmRows, error) { + if err := dc.watchCancel(ctx); err != nil { + return nil, err + } + defer dc.finish() + + err := dc.checkClosed() + if err != nil { + return nil, err + } + + if args != nil && len(args) > 0 { + stmt, err := dc.prepare(query) + if err != nil { + return nil, err + } + dc.lastExecInfo = stmt.execInfo + + stmt.innerUsed = true + dargs, err := namedValueToValue(stmt, args) + if err != nil { + return nil, err + } + return stmt.query(dargs) + + } else { + r1, err := dc.executeInner(query, Dm_build_96) + if err != nil { + return nil, err + } + + if r2, ok := r1.(*DmRows); ok { + return r2, nil + } else { + return nil, ECGO_NOT_QUERY_SQL.throw() + } + } + +} + +func (dc *DmConnection) prepare(query string) (stmt *DmStatement, err error) { + if err = dc.checkClosed(); err != nil { + return + } + if stmt, err = NewDmStmt(dc, query); err != nil { + return + } + if err = stmt.prepare(); err != nil { + stmt.close() + stmt = nil + return + } + return +} + +func (dc *DmConnection) prepareContext(ctx context.Context, query string) (*DmStatement, error) { + if err := dc.watchCancel(ctx); err != nil { + return nil, err + } + defer dc.finish() + + return dc.prepare(query) +} + +func (dc *DmConnection) resetSession(ctx context.Context) error { + if err := dc.watchCancel(ctx); err != nil { + return err + } + defer dc.finish() + + err := dc.checkClosed() + if err != nil { + return err + } + + return nil +} + +func (dc *DmConnection) checkNamedValue(nv *driver.NamedValue) error { + var err error + var cvt = converter{dc, false} + nv.Value, err = cvt.ConvertValue(nv.Value) + dc.isBatch = cvt.isBatch + return err +} + +func (dc *DmConnection) driverQuery(query string) (*DmStatement, *DmRows, error) { + stmt, err := NewDmStmt(dc, query) + if err != nil { + return nil, nil, err + } + stmt.innerUsed = true + stmt.innerExec = true + info, err := dc.Access.Dm_build_1434(stmt, Dm_build_96) + if err != nil { + return nil, nil, err + } + dc.lastExecInfo = info + stmt.innerExec = false + return stmt, newDmRows(newInnerRows(0, stmt, info)), nil +} + +func (dc *DmConnection) getIndexOnEPGroup() int32 { + if dc.dmConnector.group == nil || dc.dmConnector.group.epList == nil { + return -1 + } + for i := 0; i < len(dc.dmConnector.group.epList); i++ { + ep := dc.dmConnector.group.epList[i] + if dc.dmConnector.host == ep.host && dc.dmConnector.port == ep.port { + return int32(i) + } + } + return -1 +} + +func (dc *DmConnection) getServerEncoding() string { + if dc.dmConnector.charCode != "" { + return dc.dmConnector.charCode + } + return dc.serverEncoding +} + +func (dc *DmConnection) lobFetchAll() bool { + return dc.dmConnector.lobMode == 2 +} + +func (conn *DmConnection) CompatibleOracle() bool { + return conn.dmConnector.compatibleMode == COMPATIBLE_MODE_ORACLE +} + +func (conn *DmConnection) CompatibleMysql() bool { + return conn.dmConnector.compatibleMode == COMPATIBLE_MODE_MYSQL +} + +func (conn *DmConnection) cancel(err error) { + conn.canceled.Set(err) + conn.close() + +} + +func (conn *DmConnection) finish() { + if !conn.watching || conn.finished == nil { + return + } + select { + case conn.finished <- struct{}{}: + conn.watching = false + case <-conn.closech: + } +} + +func (conn *DmConnection) startWatcher() { + watcher := make(chan context.Context, 1) + conn.watcher = watcher + finished := make(chan struct{}) + conn.finished = finished + go func() { + for { + var ctx context.Context + select { + case ctx = <-watcher: + case <-conn.closech: + return + } + + select { + case <-ctx.Done(): + conn.cancel(ctx.Err()) + case <-finished: + case <-conn.closech: + return + } + } + }() +} + +func (conn *DmConnection) watchCancel(ctx context.Context) error { + if conn.watching { + + conn.cleanup() + return nil + } + + if err := ctx.Err(); err != nil { + return err + } + + if ctx.Done() == nil { + return nil + } + + if conn.watcher == nil { + return nil + } + + conn.watching = true + conn.watcher <- ctx + return nil +} + +type noCopy struct{} + +func (*noCopy) Lock() {} + +type atomicBool struct { + _noCopy noCopy + value uint32 +} + +func (ab *atomicBool) IsSet() bool { + return atomic.LoadUint32(&ab.value) > 0 +} + +func (ab *atomicBool) Set(value bool) { + if value { + atomic.StoreUint32(&ab.value, 1) + } else { + atomic.StoreUint32(&ab.value, 0) + } +} + +func (ab *atomicBool) TrySet(value bool) bool { + if value { + return atomic.SwapUint32(&ab.value, 1) == 0 + } + return atomic.SwapUint32(&ab.value, 0) > 0 +} + +type atomicError struct { + _noCopy noCopy + value atomic.Value +} + +func (ae *atomicError) Set(value error) { + ae.value.Store(value) +} + +func (ae *atomicError) Value() error { + if v := ae.value.Load(); v != nil { + + return v.(error) + } + return nil +} diff --git a/vendor/gitee.com/chunanyong/dm/n.go b/vendor/gitee.com/chunanyong/dm/n.go new file mode 100644 index 000000000..9ca012d8f --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/n.go @@ -0,0 +1,923 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "bytes" + "context" + "database/sql/driver" + "net" + "net/url" + "os" + "path/filepath" + "regexp" + "runtime" + "strconv" + "strings" + "sync" + "time" + + "gitee.com/chunanyong/dm/util" +) + +const ( + TimeZoneKey = "timeZone" + EnRsCacheKey = "enRsCache" + RsCacheSizeKey = "rsCacheSize" + RsRefreshFreqKey = "rsRefreshFreq" + LoginPrimary = "loginPrimary" + LoginModeKey = "loginMode" + LoginStatusKey = "loginStatus" + LoginDscCtrlKey = "loginDscCtrl" + SwitchTimesKey = "switchTimes" + SwitchIntervalKey = "switchInterval" + EpSelectorKey = "epSelector" + PrimaryKey = "primaryKey" + KeywordsKey = "keywords" + CompressKey = "compress" + CompressIdKey = "compressId" + LoginEncryptKey = "loginEncrypt" + CommunicationEncryptKey = "communicationEncrypt" + DirectKey = "direct" + Dec2DoubleKey = "dec2double" + RwSeparateKey = "rwSeparate" + RwPercentKey = "rwPercent" + RwAutoDistributeKey = "rwAutoDistribute" + CompatibleModeKey = "compatibleMode" + CompatibleOraKey = "comOra" + CipherPathKey = "cipherPath" + DoSwitchKey = "doSwitch" + DriverReconnectKey = "driverReconnect" + ClusterKey = "cluster" + LanguageKey = "language" + DbAliveCheckFreqKey = "dbAliveCheckFreq" + RwStandbyRecoverTimeKey = "rwStandbyRecoverTime" + LogLevelKey = "logLevel" + LogDirKey = "logDir" + LogBufferPoolSizeKey = "logBufferPoolSize" + LogBufferSizeKey = "logBufferSize" + LogFlusherQueueSizeKey = "logFlusherQueueSize" + LogFlushFreqKey = "logFlushFreq" + StatEnableKey = "statEnable" + StatDirKey = "statDir" + StatFlushFreqKey = "statFlushFreq" + StatHighFreqSqlCountKey = "statHighFreqSqlCount" + StatSlowSqlCountKey = "statSlowSqlCount" + StatSqlMaxCountKey = "statSqlMaxCount" + StatSqlRemoveModeKey = "statSqlRemoveMode" + AddressRemapKey = "addressRemap" + UserRemapKey = "userRemap" + ConnectTimeoutKey = "connectTimeout" + LoginCertificateKey = "loginCertificate" + UrlKey = "url" + HostKey = "host" + PortKey = "port" + UserKey = "user" + PasswordKey = "password" + DialNameKey = "dialName" + RwStandbyKey = "rwStandby" + IsCompressKey = "isCompress" + RwHAKey = "rwHA" + RwIgnoreSqlKey = "rwIgnoreSql" + AppNameKey = "appName" + OsNameKey = "osName" + MppLocalKey = "mppLocal" + SocketTimeoutKey = "socketTimeout" + SessionTimeoutKey = "sessionTimeout" + ContinueBatchOnErrorKey = "continueBatchOnError" + BatchAllowMaxErrorsKey = "batchAllowMaxErrors" + EscapeProcessKey = "escapeProcess" + AutoCommitKey = "autoCommit" + MaxRowsKey = "maxRows" + RowPrefetchKey = "rowPrefetch" + BufPrefetchKey = "bufPrefetch" + LobModeKey = "LobMode" + StmtPoolSizeKey = "StmtPoolSize" + IgnoreCaseKey = "ignoreCase" + AlwayseAllowCommitKey = "AlwayseAllowCommit" + BatchTypeKey = "batchType" + BatchNotOnCallKey = "batchNotOnCall" + IsBdtaRSKey = "isBdtaRS" + ClobAsStringKey = "clobAsString" + SslCertPathKey = "sslCertPath" + SslKeyPathKey = "sslKeyPath" + SslFilesPathKey = "sslFilesPath" + KerberosLoginConfPathKey = "kerberosLoginConfPath" + UKeyNameKey = "uKeyName" + UKeyPinKey = "uKeyPin" + ColumnNameUpperCaseKey = "columnNameUpperCase" + ColumnNameCaseKey = "columnNameCase" + DatabaseProductNameKey = "databaseProductName" + OsAuthTypeKey = "osAuthType" + SchemaKey = "schema" + + DO_SWITCH_OFF int32 = 0 + DO_SWITCH_WHEN_CONN_ERROR int32 = 1 + DO_SWITCH_WHEN_EP_RECOVER int32 = 2 + + CLUSTER_TYPE_NORMAL int32 = 0 + CLUSTER_TYPE_RW int32 = 1 + CLUSTER_TYPE_DW int32 = 2 + CLUSTER_TYPE_DSC int32 = 3 + CLUSTER_TYPE_MPP int32 = 4 + + EP_STATUS_OK int32 = 1 + EP_STATUS_ERROR int32 = 2 + + LOGIN_MODE_PRIMARY_FIRST int32 = 0 + + LOGIN_MODE_PRIMARY_ONLY int32 = 1 + + LOGIN_MODE_STANDBY_ONLY int32 = 2 + + LOGIN_MODE_STANDBY_FIRST int32 = 3 + + LOGIN_MODE_NORMAL_FIRST int32 = 4 + + SERVER_MODE_NORMAL int32 = 0 + + SERVER_MODE_PRIMARY int32 = 1 + + SERVER_MODE_STANDBY int32 = 2 + + SERVER_STATUS_MOUNT int32 = 3 + + SERVER_STATUS_OPEN int32 = 4 + + SERVER_STATUS_SUSPEND int32 = 5 + + COMPATIBLE_MODE_ORACLE int = 1 + + COMPATIBLE_MODE_MYSQL int = 2 + + LANGUAGE_CN int = 0 + + LANGUAGE_EN int = 1 + + LANGUAGE_CNT_HK = 2 + + COLUMN_NAME_NATURAL_CASE = 0 + + COLUMN_NAME_UPPER_CASE = 1 + + COLUMN_NAME_LOWER_CASE = 2 + + compressDef = Dm_build_91 + compressIDDef = Dm_build_92 + + charCodeDef = "" + + enRsCacheDef = false + + rsCacheSizeDef = 20 + + rsRefreshFreqDef = 10 + + loginModeDef = LOGIN_MODE_NORMAL_FIRST + + loginStatusDef = 0 + + loginEncryptDef = true + + loginCertificateDef = "" + + dec2DoubleDef = false + + rwHADef = false + + rwStandbyDef = false + + rwSeparateDef = false + + rwPercentDef = 25 + + rwAutoDistributeDef = true + + rwStandbyRecoverTimeDef = 1000 + + cipherPathDef = "" + + urlDef = "" + + userDef = "SYSDBA" + + passwordDef = "SYSDBA" + + hostDef = "localhost" + + portDef = DEFAULT_PORT + + appNameDef = "" + + mppLocalDef = false + + socketTimeoutDef = 0 + + connectTimeoutDef = 5000 + + sessionTimeoutDef = 0 + + osAuthTypeDef = Dm_build_74 + + continueBatchOnErrorDef = false + + escapeProcessDef = false + + autoCommitDef = true + + maxRowsDef = 0 + + rowPrefetchDef = Dm_build_75 + + bufPrefetchDef = 0 + + lobModeDef = 1 + + stmtPoolMaxSizeDef = 15 + + ignoreCaseDef = true + + alwayseAllowCommitDef = true + + isBdtaRSDef = false + + kerberosLoginConfPathDef = "" + + uKeyNameDef = "" + + uKeyPinDef = "" + + databaseProductNameDef = "" + + caseSensitiveDef = true + + compatibleModeDef = 0 +) + +type DmConnector struct { + filterable + + mu sync.Mutex + + dmDriver *DmDriver + + compress int + + compressID int8 + + newClientType bool + + charCode string + + enRsCache bool + + rsCacheSize int + + rsRefreshFreq int + + loginMode int32 + + loginStatus int + + loginDscCtrl bool + + switchTimes int32 + + switchInterval int + + epSelector int32 + + keyWords []string + + loginEncrypt bool + + loginCertificate string + + dec2Double bool + + rwHA bool + + rwStandby bool + + rwSeparate bool + + rwPercent int32 + + rwAutoDistribute bool + + rwStandbyRecoverTime int + + rwIgnoreSql bool + + doSwitch int32 + + driverReconnect bool + + cluster int32 + + cipherPath string + + url string + + user string + + password string + + dialName string + + host string + + group *epGroup + + port int32 + + appName string + + osName string + + mppLocal bool + + socketTimeout int + + connectTimeout int + + sessionTimeout int + + osAuthType byte + + continueBatchOnError bool + + batchAllowMaxErrors int32 + + escapeProcess bool + + autoCommit bool + + maxRows int + + rowPrefetch int + + bufPrefetch int + + lobMode int + + stmtPoolMaxSize int + + ignoreCase bool + + alwayseAllowCommit bool + + batchType int + + batchNotOnCall bool + + isBdtaRS bool + + sslCertPath string + + sslKeyPath string + + sslFilesPath string + + kerberosLoginConfPath string + + uKeyName string + + uKeyPin string + + svcConfPath string + + columnNameCase int + + caseSensitive bool + + compatibleMode int + + localTimezone int16 + + schema string + + logLevel int + + logDir string + + logFlushFreq int + + logFlushQueueSize int + + logBufferSize int + + statEnable bool + + statDir string + + statFlushFreq int + + statSlowSqlCount int + + statHighFreqSqlCount int + + statSqlMaxCount int + + statSqlRemoveMode int +} + +func (c *DmConnector) init() *DmConnector { + c.compress = compressDef + c.compressID = compressIDDef + c.charCode = charCodeDef + c.enRsCache = enRsCacheDef + c.rsCacheSize = rsCacheSizeDef + c.rsRefreshFreq = rsRefreshFreqDef + c.loginMode = loginModeDef + c.loginStatus = loginStatusDef + c.loginDscCtrl = false + c.switchTimes = 1 + c.switchInterval = 1000 + c.epSelector = 0 + c.keyWords = nil + c.loginEncrypt = loginEncryptDef + c.loginCertificate = loginCertificateDef + c.dec2Double = dec2DoubleDef + c.rwHA = rwHADef + c.rwStandby = rwStandbyDef + c.rwSeparate = rwSeparateDef + c.rwPercent = rwPercentDef + c.rwAutoDistribute = rwAutoDistributeDef + c.rwStandbyRecoverTime = rwStandbyRecoverTimeDef + c.rwIgnoreSql = false + c.doSwitch = DO_SWITCH_WHEN_CONN_ERROR + c.driverReconnect = false + c.cluster = CLUSTER_TYPE_NORMAL + c.cipherPath = cipherPathDef + c.url = urlDef + c.user = userDef + c.password = passwordDef + c.host = hostDef + c.port = portDef + c.appName = appNameDef + c.osName = runtime.GOOS + c.mppLocal = mppLocalDef + c.socketTimeout = socketTimeoutDef + c.connectTimeout = connectTimeoutDef + c.sessionTimeout = sessionTimeoutDef + c.osAuthType = osAuthTypeDef + c.continueBatchOnError = continueBatchOnErrorDef + c.batchAllowMaxErrors = 0 + c.escapeProcess = escapeProcessDef + c.autoCommit = autoCommitDef + c.maxRows = maxRowsDef + c.rowPrefetch = rowPrefetchDef + c.bufPrefetch = bufPrefetchDef + c.lobMode = lobModeDef + c.stmtPoolMaxSize = stmtPoolMaxSizeDef + c.ignoreCase = ignoreCaseDef + c.alwayseAllowCommit = alwayseAllowCommitDef + c.batchType = 1 + c.batchNotOnCall = false + c.isBdtaRS = isBdtaRSDef + c.kerberosLoginConfPath = kerberosLoginConfPathDef + c.uKeyName = uKeyNameDef + c.uKeyPin = uKeyPinDef + c.columnNameCase = COLUMN_NAME_NATURAL_CASE + c.caseSensitive = caseSensitiveDef + c.compatibleMode = compatibleModeDef + _, tzs := time.Now().Zone() + c.localTimezone = int16(tzs / 60) + c.idGenerator = dmConntorIDGenerator + + c.logDir = LogDirDef + c.logFlushFreq = LogFlushFreqDef + c.logFlushQueueSize = LogFlushQueueSizeDef + c.logBufferSize = LogBufferSizeDef + c.statEnable = StatEnableDef + c.statDir = StatDirDef + c.statFlushFreq = StatFlushFreqDef + c.statSlowSqlCount = StatSlowSqlCountDef + c.statHighFreqSqlCount = StatHighFreqSqlCountDef + c.statSqlMaxCount = StatSqlMaxCountDef + c.statSqlRemoveMode = StatSqlRemoveModeDef + return c +} + +func (c *DmConnector) setAttributes(props *Properties) error { + if props == nil || props.Len() == 0 { + return nil + } + + c.url = props.GetTrimString(UrlKey, c.url) + c.host = props.GetTrimString(HostKey, c.host) + c.port = int32(props.GetInt(PortKey, int(c.port), 0, 65535)) + c.user = props.GetString(UserKey, c.user) + c.password = props.GetString(PasswordKey, c.password) + c.dialName = props.GetString(DialNameKey, "") + c.rwStandby = props.GetBool(RwStandbyKey, c.rwStandby) + + if b := props.GetBool(IsCompressKey, false); b { + c.compress = Dm_build_90 + } + + c.compress = props.GetInt(CompressKey, c.compress, 0, 2) + c.compressID = int8(props.GetInt(CompressIdKey, int(c.compressID), 0, 1)) + c.enRsCache = props.GetBool(EnRsCacheKey, c.enRsCache) + c.localTimezone = int16(props.GetInt(TimeZoneKey, int(c.localTimezone), -720, 720)) + c.rsCacheSize = props.GetInt(RsCacheSizeKey, c.rsCacheSize, 0, int(INT32_MAX)) + c.rsRefreshFreq = props.GetInt(RsRefreshFreqKey, c.rsRefreshFreq, 0, int(INT32_MAX)) + c.loginMode = int32(props.GetInt(LoginModeKey, int(c.loginMode), 0, 4)) + c.loginStatus = props.GetInt(LoginStatusKey, c.loginStatus, 0, int(INT32_MAX)) + c.loginDscCtrl = props.GetBool(LoginDscCtrlKey, c.loginDscCtrl) + c.switchTimes = int32(props.GetInt(SwitchTimesKey, int(c.switchTimes), 0, int(INT32_MAX))) + c.switchInterval = props.GetInt(SwitchIntervalKey, c.switchInterval, 0, int(INT32_MAX)) + c.epSelector = int32(props.GetInt(EpSelectorKey, int(c.epSelector), 0, 1)) + c.loginEncrypt = props.GetBool(LoginEncryptKey, c.loginEncrypt) + c.loginCertificate = props.GetTrimString(LoginCertificateKey, c.loginCertificate) + c.dec2Double = props.GetBool(Dec2DoubleKey, c.dec2Double) + parseLanguage(props.GetString(LanguageKey, "")) + + c.rwSeparate = props.GetBool(RwSeparateKey, c.rwSeparate) + c.rwAutoDistribute = props.GetBool(RwAutoDistributeKey, c.rwAutoDistribute) + c.rwPercent = int32(props.GetInt(RwPercentKey, int(c.rwPercent), 0, 100)) + c.rwHA = props.GetBool(RwHAKey, c.rwHA) + c.rwStandbyRecoverTime = props.GetInt(RwStandbyRecoverTimeKey, c.rwStandbyRecoverTime, 0, int(INT32_MAX)) + c.rwIgnoreSql = props.GetBool(RwIgnoreSqlKey, c.rwIgnoreSql) + c.doSwitch = int32(props.GetInt(DoSwitchKey, int(c.doSwitch), 0, 2)) + c.driverReconnect = props.GetBool(DriverReconnectKey, c.driverReconnect) + c.parseCluster(props) + c.cipherPath = props.GetTrimString(CipherPathKey, c.cipherPath) + + if props.GetBool(CompatibleOraKey, false) { + c.compatibleMode = int(COMPATIBLE_MODE_ORACLE) + } + c.parseCompatibleMode(props) + c.keyWords = props.GetStringArray(KeywordsKey, c.keyWords) + + c.appName = props.GetTrimString(AppNameKey, c.appName) + c.osName = props.GetTrimString(OsNameKey, c.osName) + c.mppLocal = props.GetBool(MppLocalKey, c.mppLocal) + c.socketTimeout = props.GetInt(SocketTimeoutKey, c.socketTimeout, 0, int(INT32_MAX)) + c.connectTimeout = props.GetInt(ConnectTimeoutKey, c.connectTimeout, 0, int(INT32_MAX)) + c.sessionTimeout = props.GetInt(SessionTimeoutKey, c.sessionTimeout, 0, int(INT32_MAX)) + + err := c.parseOsAuthType(props) + if err != nil { + return err + } + c.continueBatchOnError = props.GetBool(ContinueBatchOnErrorKey, c.continueBatchOnError) + c.batchAllowMaxErrors = int32(props.GetInt(BatchAllowMaxErrorsKey, int(c.batchAllowMaxErrors), 0, int(INT32_MAX))) + c.escapeProcess = props.GetBool(EscapeProcessKey, c.escapeProcess) + c.autoCommit = props.GetBool(AutoCommitKey, c.autoCommit) + c.maxRows = props.GetInt(MaxRowsKey, c.maxRows, 0, int(INT32_MAX)) + c.rowPrefetch = props.GetInt(RowPrefetchKey, c.rowPrefetch, 0, int(INT32_MAX)) + c.bufPrefetch = props.GetInt(BufPrefetchKey, c.bufPrefetch, int(Dm_build_76), int(Dm_build_77)) + c.lobMode = props.GetInt(LobModeKey, c.lobMode, 1, 2) + c.stmtPoolMaxSize = props.GetInt(StmtPoolSizeKey, c.stmtPoolMaxSize, 0, int(INT32_MAX)) + c.ignoreCase = props.GetBool(IgnoreCaseKey, c.ignoreCase) + c.alwayseAllowCommit = props.GetBool(AlwayseAllowCommitKey, c.alwayseAllowCommit) + c.batchType = props.GetInt(BatchTypeKey, c.batchType, 1, 2) + c.batchNotOnCall = props.GetBool(BatchNotOnCallKey, c.batchNotOnCall) + c.isBdtaRS = props.GetBool(IsBdtaRSKey, c.isBdtaRS) + c.sslFilesPath = props.GetTrimString(SslFilesPathKey, c.sslFilesPath) + c.sslCertPath = props.GetTrimString(SslCertPathKey, c.sslCertPath) + if c.sslCertPath == "" && c.sslFilesPath != "" { + c.sslCertPath = filepath.Join(c.sslFilesPath, "client-cert.pem") + } + c.sslKeyPath = props.GetTrimString(SslKeyPathKey, c.sslKeyPath) + if c.sslKeyPath == "" && c.sslFilesPath != "" { + c.sslKeyPath = filepath.Join(c.sslKeyPath, "client-key.pem") + } + + c.kerberosLoginConfPath = props.GetTrimString(KerberosLoginConfPathKey, c.kerberosLoginConfPath) + + c.uKeyName = props.GetTrimString(UKeyNameKey, c.uKeyName) + c.uKeyPin = props.GetTrimString(UKeyPinKey, c.uKeyPin) + + c.svcConfPath = props.GetString("confPath", "") + + if props.GetBool(ColumnNameUpperCaseKey, false) { + c.columnNameCase = COLUMN_NAME_UPPER_CASE + } + + v := props.GetTrimString(ColumnNameCaseKey, "") + if util.StringUtil.EqualsIgnoreCase(v, "upper") { + c.columnNameCase = COLUMN_NAME_UPPER_CASE + } else if util.StringUtil.EqualsIgnoreCase(v, "lower") { + c.columnNameCase = COLUMN_NAME_LOWER_CASE + } + + c.schema = props.GetTrimString(SchemaKey, c.schema) + + c.logLevel = ParseLogLevel(props) + LogLevel = c.logLevel + c.logDir = util.StringUtil.FormatDir(props.GetTrimString(LogDirKey, LogDirDef)) + LogDir = c.logDir + c.logBufferSize = props.GetInt(LogBufferSizeKey, LogBufferSizeDef, 1, int(INT32_MAX)) + LogBufferSize = c.logBufferSize + c.logFlushFreq = props.GetInt(LogFlushFreqKey, LogFlushFreqDef, 1, int(INT32_MAX)) + LogFlushFreq = c.logFlushFreq + c.logFlushQueueSize = props.GetInt(LogFlusherQueueSizeKey, LogFlushQueueSizeDef, 1, int(INT32_MAX)) + LogFlushQueueSize = c.logFlushQueueSize + + c.statEnable = props.GetBool(StatEnableKey, StatEnableDef) + StatEnable = c.statEnable + c.statDir = util.StringUtil.FormatDir(props.GetTrimString(StatDirKey, StatDirDef)) + StatDir = c.statDir + c.statFlushFreq = props.GetInt(StatFlushFreqKey, StatFlushFreqDef, 1, int(INT32_MAX)) + StatFlushFreq = c.statFlushFreq + c.statHighFreqSqlCount = props.GetInt(StatHighFreqSqlCountKey, StatHighFreqSqlCountDef, 0, 1000) + StatHighFreqSqlCount = c.statHighFreqSqlCount + c.statSlowSqlCount = props.GetInt(StatSlowSqlCountKey, StatSlowSqlCountDef, 0, 1000) + StatSlowSqlCount = c.statSlowSqlCount + c.statSqlMaxCount = props.GetInt(StatSqlMaxCountKey, StatSqlMaxCountDef, 0, 100000) + StatSqlMaxCount = c.statSqlMaxCount + c.parseStatSqlRemoveMode(props) + return nil +} + +func (c *DmConnector) parseOsAuthType(props *Properties) error { + value := props.GetString(OsAuthTypeKey, "") + if value != "" && !util.StringUtil.IsDigit(value) { + if util.StringUtil.EqualsIgnoreCase(value, "ON") { + c.osAuthType = Dm_build_74 + } else if util.StringUtil.EqualsIgnoreCase(value, "SYSDBA") { + c.osAuthType = Dm_build_70 + } else if util.StringUtil.EqualsIgnoreCase(value, "SYSAUDITOR") { + c.osAuthType = Dm_build_72 + } else if util.StringUtil.EqualsIgnoreCase(value, "SYSSSO") { + c.osAuthType = Dm_build_71 + } else if util.StringUtil.EqualsIgnoreCase(value, "AUTO") { + c.osAuthType = Dm_build_73 + } else if util.StringUtil.EqualsIgnoreCase(value, "OFF") { + c.osAuthType = Dm_build_69 + } + } else { + c.osAuthType = byte(props.GetInt(OsAuthTypeKey, int(c.osAuthType), 0, 4)) + } + if c.user == "" && c.osAuthType == Dm_build_69 { + c.user = "SYSDBA" + } else if c.osAuthType != Dm_build_69 && c.user != "" { + return ECGO_OSAUTH_ERROR.throw() + } else if c.osAuthType != Dm_build_69 { + c.user = os.Getenv("user") + c.password = "" + } + return nil +} + +func (c *DmConnector) parseCompatibleMode(props *Properties) { + value := props.GetString(CompatibleModeKey, "") + if value != "" && !util.StringUtil.IsDigit(value) { + if util.StringUtil.EqualsIgnoreCase(value, "oracle") { + c.compatibleMode = COMPATIBLE_MODE_ORACLE + } else if util.StringUtil.EqualsIgnoreCase(value, "mysql") { + c.compatibleMode = COMPATIBLE_MODE_MYSQL + } + } else { + c.compatibleMode = props.GetInt(CompatibleModeKey, c.compatibleMode, 0, 2) + } +} + +func (c *DmConnector) parseStatSqlRemoveMode(props *Properties) { + value := props.GetString(StatSqlRemoveModeKey, "") + if value != "" && !util.StringUtil.IsDigit(value) { + if util.StringUtil.EqualsIgnoreCase("oldest", value) || util.StringUtil.EqualsIgnoreCase("eldest", value) { + c.statSqlRemoveMode = STAT_SQL_REMOVE_OLDEST + } else if util.StringUtil.EqualsIgnoreCase("latest", value) { + c.statSqlRemoveMode = STAT_SQL_REMOVE_LATEST + } + } else { + c.statSqlRemoveMode = props.GetInt(StatSqlRemoveModeKey, StatSqlRemoveModeDef, 1, 2) + } +} + +func (c *DmConnector) parseCluster(props *Properties) { + value := props.GetTrimString(ClusterKey, "") + if util.StringUtil.EqualsIgnoreCase(value, "DSC") { + c.cluster = CLUSTER_TYPE_DSC + } else if util.StringUtil.EqualsIgnoreCase(value, "RW") { + c.cluster = CLUSTER_TYPE_RW + } else if util.StringUtil.EqualsIgnoreCase(value, "DW") { + c.cluster = CLUSTER_TYPE_DW + } else if util.StringUtil.EqualsIgnoreCase(value, "MPP") { + c.cluster = CLUSTER_TYPE_MPP + } else { + c.cluster = CLUSTER_TYPE_NORMAL + } +} + +func (c *DmConnector) parseDSN(dsn string) (*Properties, string, error) { + var dsnProps = NewProperties() + url, err := url.Parse(dsn) + if err != nil { + return nil, "", err + } + if url.Scheme != "dm" { + return nil, "", DSN_INVALID_SCHEMA + } + + if url.User != nil { + c.user = url.User.Username() + c.password, _ = url.User.Password() + } + + q := url.Query() + for k := range q { + dsnProps.Set(k, q.Get(k)) + } + + return dsnProps, url.Host, nil +} + +func (c *DmConnector) BuildDSN() string { + var buf bytes.Buffer + + buf.WriteString("dm://") + + if len(c.user) > 0 { + buf.WriteString(url.QueryEscape(c.user)) + if len(c.password) > 0 { + buf.WriteByte(':') + buf.WriteString(url.QueryEscape(c.password)) + } + buf.WriteByte('@') + } + + if len(c.host) > 0 { + buf.WriteString(c.host) + if c.port > 0 { + buf.WriteByte(':') + buf.WriteString(strconv.Itoa(int(c.port))) + } + } + + hasParam := false + if c.connectTimeout > 0 { + if hasParam { + buf.WriteString("&timeout=") + } else { + buf.WriteString("?timeout=") + hasParam = true + } + buf.WriteString(strconv.Itoa(c.connectTimeout)) + } + return buf.String() +} + +func (c *DmConnector) mergeConfigs(dsn string) error { + props, host, err := c.parseDSN(dsn) + if err != nil { + return err + } + + driverInit(props.GetString("svcConfPath", "")) + + addressRemapStr := props.GetTrimString(AddressRemapKey, "") + userRemapStr := props.GetTrimString(UserRemapKey, "") + if addressRemapStr == "" { + addressRemapStr = GlobalProperties.GetTrimString(AddressRemapKey, "") + } + if userRemapStr == "" { + userRemapStr = GlobalProperties.GetTrimString(UserRemapKey, "") + } + + host = c.remap(host, addressRemapStr) + + c.user = c.remap(c.user, userRemapStr) + + if a := props.GetTrimString(host, ""); a != "" { + + if strings.HasPrefix(a, "(") && strings.HasSuffix(a, ")") { + a = strings.TrimSpace(a[1 : len(a)-1]) + } + c.group = parseServerName(host, a) + if c.group != nil { + c.group.props = NewProperties() + c.group.props.SetProperties(GlobalProperties) + } + } else if group, ok := ServerGroupMap[strings.ToLower(host)]; ok { + + c.group = group + } else { + host, port, err := net.SplitHostPort(host) + if err == nil { + ip := net.ParseIP(host) + var v4InV6Prefix = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff} + if ip != nil && len(ip) == net.IPv6len && !bytes.Equal(ip[0:12], v4InV6Prefix) { + + host = "[" + host + "]" + } + } + + c.host = host + + tmpPort, err := strconv.Atoi(port) + if err != nil { + c.port = portDef + } else { + c.port = int32(tmpPort) + } + + c.group = newEPGroup(c.host+":"+strconv.Itoa(int(c.port)), []*ep{newEP(c.host, c.port)}) + } + + props.SetDiffProperties(c.group.props) + + props.SetDiffProperties(GlobalProperties) + + if props.GetBool(RwSeparateKey, false) { + props.SetIfNotExist(LoginModeKey, strconv.Itoa(int(LOGIN_MODE_PRIMARY_ONLY))) + props.SetIfNotExist(LoginStatusKey, strconv.Itoa(int(SERVER_STATUS_OPEN))) + + props.SetIfNotExist(DoSwitchKey, "true") + } + + if err = c.setAttributes(props); err != nil { + return err + } + return nil +} + +func (c *DmConnector) remap(origin string, cfgStr string) string { + if cfgStr == "" || origin == "" { + return origin + } + + maps := regexp.MustCompile("\\(.*?,.*?\\)").FindAllString(cfgStr, -1) + for _, kvStr := range maps { + kv := strings.Split(strings.TrimSpace(kvStr[1:len(kvStr)-1]), ",") + if util.StringUtil.Equals(strings.TrimSpace(kv[0]), origin) { + return strings.TrimSpace(kv[1]) + } + } + return origin +} + +func (c *DmConnector) Connect(ctx context.Context) (driver.Conn, error) { + c.mu.Lock() + defer c.mu.Unlock() + return c.filterChain.reset().DmConnectorConnect(c, ctx) +} + +func (c *DmConnector) Driver() driver.Driver { + c.mu.Lock() + defer c.mu.Unlock() + return c.filterChain.reset().DmConnectorDriver(c) +} + +func (c *DmConnector) connect(ctx context.Context) (*DmConnection, error) { + if c.group != nil && len(c.group.epList) > 0 { + return c.group.connect(c) + } else { + return c.connectSingle(ctx) + } +} + +func (c *DmConnector) driver() *DmDriver { + return c.dmDriver +} + +func (c *DmConnector) connectSingle(ctx context.Context) (*DmConnection, error) { + var err error + var dc = &DmConnection{ + closech: make(chan struct{}), + dmConnector: c, + autoCommit: c.autoCommit, + } + + dc.createFilterChain(c, nil) + dc.objId = -1 + dc.init() + + dc.Access, err = dm_build_1357(ctx, dc) + if err != nil { + return nil, err + } + + dc.startWatcher() + if err = dc.watchCancel(ctx); err != nil { + return nil, err + } + defer dc.finish() + + if err = dc.Access.dm_build_1402(); err != nil { + + if !dc.closed.IsSet() { + close(dc.closech) + if dc.Access != nil { + dc.Access.Close() + } + dc.closed.Set(true) + } + return nil, err + } + + if c.schema != "" { + _, err = dc.exec("set schema "+c.schema, nil) + if err != nil { + return nil, err + } + } + + return dc, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/o.go b/vendor/gitee.com/chunanyong/dm/o.go new file mode 100644 index 000000000..db5bbd5a6 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/o.go @@ -0,0 +1,447 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql/driver" + "math/big" + "reflect" + "strconv" + "strings" +) + +const ( + XDEC_MAX_PREC int = 38 + XDEC_SIZE = 21 + + FLAG_ZERO int = 0x80 + FLAG_POSITIVE int = 0xC1 + FLAG_NEGTIVE int = 0x3E + EXP_MAX int = 0xFF - 1 - FLAG_POSITIVE + EXP_MIN int = FLAG_NEGTIVE + 1 - 0x7F + + NUM_POSITIVE int = 1 + NUM_NEGTIVE int = 101 +) + +type DmDecimal struct { + sign int + weight int + prec int + scale int + digits string + + Valid bool +} + +func NewDecimalFromInt64(x int64) (*DmDecimal, error) { + return NewDecimalFromBigInt(big.NewInt(x)) +} + +func (d DmDecimal) ToInt64() int64 { + return d.ToBigInt().Int64() +} + +func NewDecimalFromFloat64(x float64) (*DmDecimal, error) { + return NewDecimalFromBigFloat(big.NewFloat(x)) +} + +func (d DmDecimal) ToFloat64() float64 { + f, _ := d.ToBigFloat().Float64() + return f +} + +func NewDecimalFromBigInt(bigInt *big.Int) (*DmDecimal, error) { + return newDecimal(bigInt, len(bigInt.String()), 0) +} + +func (d DmDecimal) ToBigInt() *big.Int { + if d.isZero() { + return big.NewInt(0) + } + var digits = d.digits + if d.sign < 0 { + digits = "-" + digits + } + i1, ok := new(big.Int).SetString(digits, 10) + if !ok { + return nil + } + if d.weight > 0 { + i2, ok := new(big.Int).SetString("1"+strings.Repeat("0", d.weight), 10) + if !ok { + return nil + } + i1.Mul(i1, i2) + } else if d.weight < 0 { + i2, ok := new(big.Int).SetString("1"+strings.Repeat("0", -d.weight), 10) + if !ok { + return nil + } + i1.Quo(i1, i2) + } + return i1 +} + +func NewDecimalFromBigFloat(bigFloat *big.Float) (*DmDecimal, error) { + return newDecimal(bigFloat, int(bigFloat.Prec()), int(bigFloat.Prec())) +} + +func (d DmDecimal) ToBigFloat() *big.Float { + if d.isZero() { + return big.NewFloat(0.0) + } + var digits = d.digits + if d.sign < 0 { + digits = "-" + digits + } + f1, ok := new(big.Float).SetString(digits) + if !ok { + return nil + } + if d.weight > 0 { + f2, ok := new(big.Float).SetString("1" + strings.Repeat("0", d.weight)) + if !ok { + return nil + } + f1.Mul(f1, f2) + } else if d.weight < 0 { + f2, ok := new(big.Float).SetString("1" + strings.Repeat("0", -d.weight)) + if !ok { + return nil + } + f1.Quo(f1, f2) + } + return f1 +} + +func NewDecimalFromString(s string) (*DmDecimal, error) { + num, ok := new(big.Float).SetString(strings.TrimSpace(s)) + if !ok { + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return NewDecimalFromBigFloat(num) +} + +func (d DmDecimal) String() string { + + if d.isZero() { + return "0" + } + digitsStr := d.digits + if d.weight > 0 { + digitsStr = digitsStr + strings.Repeat("0", d.weight) + } else if d.weight < 0 { + if len(digitsStr) < -d.weight { + digitsStr = strings.Repeat("0", -d.weight-len(digitsStr)+1) + digitsStr + } + indexOfDot := len(digitsStr) + d.weight + digitsStr = digitsStr[:indexOfDot] + "." + digitsStr[indexOfDot:] + } + + if digitsStr[0] == '0' && digitsStr[1] != '.' { + digitsStr = digitsStr[1:] + } + + if digitsStr[len(digitsStr)-1] == '0' && strings.IndexRune(digitsStr, '.') >= 0 { + digitsStr = digitsStr[0 : len(digitsStr)-1] + } + + if d.sign < 0 { + digitsStr = "-" + digitsStr + } + + return digitsStr +} + +func (d DmDecimal) Sign() int { + return d.sign +} + +func (dest *DmDecimal) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmDecimal) + + (*dest).Valid = false + return nil + case int, int8, int16, int32, int64: + d, err := NewDecimalFromInt64(reflect.ValueOf(src).Int()) + if err != nil { + return err + } + *dest = *d + return nil + case uint, uint8, uint16, uint32, uint64: + d, err := NewDecimalFromBigInt(new(big.Int).SetUint64(reflect.ValueOf(src).Uint())) + if err != nil { + return err + } + *dest = *d + return nil + case float32, float64: + d, err := NewDecimalFromFloat64(reflect.ValueOf(src).Float()) + if err != nil { + return err + } + *dest = *d + return nil + case string: + d, err := NewDecimalFromString(src) + if err != nil { + return err + } + *dest = *d + return nil + case *DmDecimal: + *dest = *src + return nil + default: + return UNSUPPORTED_SCAN + } +} + +func (d DmDecimal) Value() (driver.Value, error) { + if !d.Valid { + return nil, nil + } + return d, nil +} + +func newDecimal(dec interface{}, prec int, scale int) (*DmDecimal, error) { + d := &DmDecimal{ + prec: prec, + scale: scale, + Valid: true, + } + if isFloat(DECIMAL, scale) { + d.prec = getFloatPrec(prec) + d.scale = -1 + } + switch de := dec.(type) { + case *big.Int: + d.sign = de.Sign() + + if d.isZero() { + return d, nil + } + str := de.String() + + if d.sign < 0 { + str = str[1:] + } + + if err := checkPrec(len(str), prec); err != nil { + return d, err + } + i := 0 + istart := len(str) - 1 + + for i = istart; i > 0; i-- { + if str[i] != '0' { + break + } + } + str = str[:i+1] + d.weight += istart - i + + if isOdd(d.weight) { + str += "0" + d.weight -= 1 + } + if isOdd(len(str)) { + str = "0" + str + } + d.digits = str + case *big.Float: + d.sign = de.Sign() + + if d.isZero() { + return d, nil + } + str := de.Text('f', -1) + + if d.sign < 0 { + str = str[1:] + } + + pointIndex := strings.IndexByte(str, '.') + i, istart, length := 0, 0, len(str) + + if pointIndex != -1 { + if str[0] == '0' { + + istart = 2 + for i = istart; i < length; i++ { + if str[i] != '0' { + break + } + } + str = str[i:] + d.weight -= i - istart + len(str) + } else { + str = str[:pointIndex] + str[pointIndex+1:] + d.weight -= length - pointIndex - 1 + } + } + + length = len(str) + istart = length - 1 + for i = istart; i > 0; i-- { + if str[i] != '0' { + break + } + } + str = str[:i+1] + str[length:] + d.weight += istart - i + + if isOdd(d.weight) { + str += "0" + d.weight -= 1 + } + if isOdd(len(str)) { + str = "0" + str + } + d.digits = str + case []byte: + return decodeDecimal(de, prec, scale) + } + return d, nil +} + +func (d DmDecimal) encodeDecimal() ([]byte, error) { + if d.isZero() { + return []byte{byte(FLAG_ZERO)}, nil + } + exp := (d.weight+len(d.digits))/2 - 1 + if exp > EXP_MAX || exp < EXP_MIN { + return nil, ECGO_DATA_TOO_LONG.throw() + } + validLen := len(d.digits)/2 + 1 + + if d.sign < 0 && validLen >= XDEC_SIZE { + validLen = XDEC_SIZE - 1 + } else if validLen > XDEC_SIZE { + validLen = XDEC_SIZE + } + retLen := validLen + if d.sign < 0 { + retLen = validLen + 1 + } + retBytes := make([]byte, retLen) + if d.sign > 0 { + retBytes[0] = byte(exp + FLAG_POSITIVE) + } else { + retBytes[0] = byte(FLAG_NEGTIVE - exp) + } + + ibytes := 1 + for ichar := 0; ibytes < validLen; { + digit1, err := strconv.Atoi(string(d.digits[ichar])) + if err != nil { + return nil, err + } + ichar++ + digit2, err := strconv.Atoi(string(d.digits[ichar])) + ichar++ + if err != nil { + return nil, err + } + + digit := digit1*10 + digit2 + if d.sign > 0 { + retBytes[ibytes] = byte(digit + NUM_POSITIVE) + } else { + retBytes[ibytes] = byte(NUM_NEGTIVE - digit) + } + ibytes++ + } + if d.sign < 0 && ibytes < retLen { + retBytes[ibytes] = 0x66 + ibytes++ + } + if ibytes < retLen { + retBytes[ibytes] = 0x00 + } + return retBytes, nil +} + +func decodeDecimal(values []byte, prec int, scale int) (*DmDecimal, error) { + var decimal = &DmDecimal{ + prec: prec, + scale: scale, + sign: 0, + weight: 0, + Valid: true, + } + if values == nil || len(values) == 0 || len(values) > XDEC_SIZE { + return nil, ECGO_FATAL_ERROR.throw() + } + if values[0] == byte(FLAG_ZERO) || len(values) == 1 { + return decimal, nil + } + if values[0]&byte(FLAG_ZERO) != 0 { + decimal.sign = 1 + } else { + decimal.sign = -1 + } + + var flag = int(Dm_build_650.Dm_build_770(values, 0)) + var exp int + if decimal.sign > 0 { + exp = flag - FLAG_POSITIVE + } else { + exp = FLAG_NEGTIVE - flag + } + var digit = 0 + var sf = "" + for ival := 1; ival < len(values); ival++ { + if decimal.sign > 0 { + digit = int(values[ival]) - NUM_POSITIVE + } else { + digit = NUM_NEGTIVE - int(values[ival]) + } + if digit < 0 || digit > 99 { + break + } + if digit < 10 { + sf += "0" + } + sf += strconv.Itoa(digit) + } + decimal.digits = sf + decimal.weight = exp*2 - (len(decimal.digits) - 2) + + return decimal, nil +} + +func (d DmDecimal) isZero() bool { + return d.sign == 0 +} + +func checkPrec(len int, prec int) error { + if prec > 0 && len > prec || len > XDEC_MAX_PREC { + return ECGO_DATA_TOO_LONG.throw() + } + return nil +} + +func isOdd(val int) bool { + return val%2 != 0 +} + +func (d *DmDecimal) checkValid() error { + if !d.Valid { + return ECGO_IS_NULL.throw() + } + return nil +} + +func (d *DmDecimal) GormDataType() string { + return "DECIMAL" +} diff --git a/vendor/gitee.com/chunanyong/dm/p.go b/vendor/gitee.com/chunanyong/dm/p.go new file mode 100644 index 000000000..51664cac3 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/p.go @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "context" + "database/sql" + "database/sql/driver" + "net" + "sync" + + "gitee.com/chunanyong/dm/i18n" +) + +// 发版标记 +var version = "8.1.3.100" +var build_date = "2023.12.14" +var svn = "20657" + +var globalDmDriver = newDmDriver() + +func init() { + sql.Register("dm", globalDmDriver) + + i18n.InitConfig(i18n.Messages_zh_CN) + i18n.InitConfig(i18n.Messages_en_US) + i18n.InitConfig(i18n.Messages_zh_HK) +} + +func driverInit(svcConfPath string) { + load(svcConfPath) + if GlobalProperties != nil && GlobalProperties.Len() > 0 { + setDriverAttributes(GlobalProperties) + } + globalDmDriver.createFilterChain(nil, GlobalProperties) +} + +type DmDriver struct { + filterable + mu sync.Mutex + //readPropMutex sync.Mutex +} + +func newDmDriver() *DmDriver { + d := new(DmDriver) + d.idGenerator = dmDriverIDGenerator + return d +} + +// 支持自定义连接网络地址,返回标准net.Conn对象,相关数据库操作的消息包都将发送到该对象 +type DialFunc func(addr string) (net.Conn, error) + +// 支持自定义连接网络地址,返回标准net.Conn对象,相关数据库操作的消息包都将发送到该对象 +type DialContextFunc func(ctx context.Context, addr string) (net.Conn, error) + +var ( + dialsLock sync.RWMutex + dials map[string]DialContextFunc +) + +// 注册自定义连接方法 +func RegisterDial(dialName string, dial DialFunc) { + RegisterDialContext(dialName, func(_ context.Context, addr string) (net.Conn, error) { + return dial(addr) + }) +} + +// 注册自定义连接方法 +func RegisterDialContext(dialName string, dial DialContextFunc) { + dialsLock.Lock() + defer dialsLock.Unlock() + if dials == nil { + dials = make(map[string]DialContextFunc) + } + dials[dialName] = dial +} + +/************************************************************* + ** PUBLIC METHODS AND FUNCTIONS + *************************************************************/ +func (d *DmDriver) Open(dsn string) (driver.Conn, error) { + d.mu.Lock() + defer d.mu.Unlock() + return d.open(dsn) +} + +func (d *DmDriver) OpenConnector(dsn string) (driver.Connector, error) { + d.mu.Lock() + defer d.mu.Unlock() + return d.openConnector(dsn) +} + +func (d *DmDriver) open(dsn string) (*DmConnection, error) { + c, err := d.openConnector(dsn) + if err != nil { + return nil, err + } + return c.connect(context.Background()) +} + +func (d *DmDriver) openConnector(dsn string) (*DmConnector, error) { + connector := new(DmConnector).init() + connector.url = dsn + connector.dmDriver = d + //d.readPropMutex.Lock() + err := connector.mergeConfigs(dsn) + //d.readPropMutex.Unlock() + if err != nil { + return nil, err + } + connector.createFilterChain(connector, nil) + return connector, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/parser/zt.go b/vendor/gitee.com/chunanyong/dm/parser/zt.go new file mode 100644 index 000000000..04963dd55 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/parser/zt.go @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package parser + +import "strconv" + +const ( + MAX_DEC_LEN = 38 +) + +const ( + NORMAL int = iota + INT + DOUBLE + DECIMAL + STRING + HEX_INT + WHITESPACE_OR_COMMENT + NULL +) + +type LVal struct { + Value string + Tp int + Position int +} + +func newLValNoParams() *LVal { + return new(LVal).reset() +} + +func newLVal(value string, tp int) *LVal { + return &LVal{Value: value, Tp: tp} +} + +func (l *LVal) reset() *LVal { + l.Value = "" + l.Tp = NORMAL + return l +} + +func (l *LVal) String() string { + return strconv.Itoa(l.Tp) + ":" + l.Value +} diff --git a/vendor/gitee.com/chunanyong/dm/parser/zu.go b/vendor/gitee.com/chunanyong/dm/parser/zu.go new file mode 100644 index 000000000..ed960f321 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/parser/zu.go @@ -0,0 +1,1206 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package parser + +import ( + "io" + "strconv" + "unicode/utf8" +) + +const ( + YYEOF = -1 /** This character denotes the end of file */ + ZZ_BUFFERSIZE = 16384 /** initial size of the lookahead buffer */ + /** lexical states */ + YYINITIAL = 0 + xc = 2 + xq = 4 + xdq = 6 + xsb = 8 + xbin = 10 + xhex = 12 + xhint = 14 + xq2 = 16 + xq2_2 = 18 +) + +/** +* ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l +* ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l +* at the beginning of a line +* l is of the form l = 2*k, k a non negative integer + */ +var ZZ_LEXSTATE []int = []int{0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 4, 4, 7, 7, 8, 8} + +/** +* Translates characters to character classes + */ +var ZZ_CMAP_PACKED []rune = []rune{0011, 0000, 0001, 0026, 0001, 0025, 0001, 0030, 0001, 0026, 0001, 0025, 0022, 0000, 0001, 0026, 0001, 0017, 0001, 0002, + 0002, 0012, 0002, 0017, 0001, 0001, 0002, 0017, 0001, 0004, 0001, 0023, 0001, 0017, 0001, 0027, 0001, 0016, 0001, 0003, + 0001, 0020, 0011, 0013, 0001, 0014, 0001, 0017, 0001, 0017, 0001, 0015, 0003, 0017, 0001, 0021, 0001, 0010, 0001, 0021, + 0001, 0024, 0001, 0022, 0001, 0024, 0002, 0012, 0001, 0034, 0002, 0012, 0001, 0033, 0001, 0012, 0001, 0031, 0001, 0036, + 0001, 0012, 0001, 0007, 0001, 0012, 0001, 0035, 0001, 0037, 0001, 0032, 0002, 0012, 0001, 0011, 0002, 0012, 0001, 0005, + 0001, 0000, 0001, 0006, 0001, 0017, 0001, 0012, 0001, 0000, 0001, 0021, 0001, 0010, 0001, 0021, 0001, 0024, 0001, 0022, + 0001, 0024, 0002, 0012, 0001, 0034, 0002, 0012, 0001, 0033, 0001, 0012, 0001, 0031, 0001, 0036, 0001, 0012, 0001, 0007, + 0001, 0012, 0001, 0035, 0001, 0037, 0001, 0032, 0002, 0012, 0001, 0011, 0002, 0012, 0001, 0017, 0001, 0017, 0002, 0017, + 0001, 0000, 0005, 0012, 0001, 0012, 0172, 0012, 0x1f28, 0000, 0001, 0030, 0001, 0030, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xffff, 0000, 0xdfe6, 0000} + +/** +* Translates characters to character classes + */ +var ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED) + +/** +* Translates DFA states to action switch labels. + */ +var ZZ_ACTION = zzUnpackActionNoParams() + +var ZZ_ACTION_PACKED_0 []rune = []rune{0011, 0000, 0001, 0001, 0001, 0002, 0001, 0003, 0002, 0004, 0004, 0005, 0001, 0006, 0002, 0004, + 0001, 0006, 0001, 0007, 0001, 0004, 0002, 0005, 0001, 0010, 0002, 0011, 0001, 0012, 0001, 0013, + 0001, 0014, 0001, 0015, 0001, 0016, 0001, 0017, 0001, 0020, 0001, 0021, 0001, 0022, 0001, 0023, + 0001, 0024, 0001, 0025, 0001, 0026, 0001, 0007, 0001, 0027, 0001, 0000, 0001, 0030, 0001, 0031, + 0001, 0032, 0001, 0000, 0001, 0033, 0001, 0034, 0001, 0035, 0001, 0032, 0001, 0036, 0001, 0000, + 0003, 0005, 0001, 0037, 0001, 0040, 0001, 0000, 0001, 0041, 0002, 0000, 0001, 0042, 0004, 0000, + 0001, 0043, 0001, 0044, 0001, 0033, 0001, 0000, 0001, 0045, 0002, 0005, 0003, 0000, 0001, 0046, + 0001, 0047, 0001, 0050, 0001, 0051, 0020, 0000, 0001, 0052, 0001, 0000, 0001, 0053, 0001, 0052, + 0001, 0053} + +func zzUnpackActionNoParams() []int { + result := make([]int, 104) + offset := 0 + offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result) + return result +} + +func zzUnpackAction(packed []rune, offset int, result []int) int { + i := 0 /* index in packed string */ + j := offset /* index in unpacked array */ + l := len(packed) //130 + for i < l { + count := packed[i] + i++ + value := packed[i] + i++ + result[j] = int(value) + j++ + count-- + for count > 0 { + result[j] = int(value) + j++ + count-- + } + } + return j +} + +/** +* Translates a state to a row index in the transition table + */ +var ZZ_ROWMAP = zzUnpackRowMapNoParams() + +var ZZ_ROWMAP_PACKED_0 []rune = []rune{0000, 0000, 0000, 0040, 0000, 0100, 0000, 0140, 0000, 0200, 0000, 0240, 0000, 0300, 0000, 0340, + 0000, 0x0100, 0000, 0200, 0000, 0200, 0000, 0200, 0000, 0x0120, 0000, 0200, 0000, 0x0140, 0000, 0x0160, + 0000, 0x0180, 0000, 0x01a0, 0000, 0x01c0, 0000, 0x01e0, 0000, 0x0200, 0000, 0x0220, 0000, 0200, 0000, 0x0240, + 0000, 0x0260, 0000, 0x0280, 0000, 0x02a0, 0000, 0x02c0, 0000, 0x02e0, 0000, 0x0300, 0000, 0x0320, 0000, 0x0340, + 0000, 0x0360, 0000, 0x0380, 0000, 0x03a0, 0000, 0x03c0, 0000, 0x03e0, 0000, 0x0400, 0000, 0200, 0000, 0200, + 0000, 0200, 0000, 0200, 0000, 0x0420, 0000, 0200, 0000, 0x0440, 0000, 0200, 0000, 0200, 0000, 0x0460, + 0000, 0x0480, 0000, 0200, 0000, 0200, 0000, 0200, 0000, 0x04a0, 0000, 0200, 0000, 0x04c0, 0000, 0x04e0, + 0000, 0x0500, 0000, 0x0520, 0000, 0200, 0000, 0200, 0000, 0x02e0, 0000, 0200, 0000, 0x0540, 0000, 0x0560, + 0000, 0200, 0000, 0x0580, 0000, 0x03a0, 0000, 0x05a0, 0000, 0x03e0, 0000, 0200, 0000, 0200, 0000, 0x05c0, + 0000, 0x05c0, 0000, 0x04c0, 0000, 0x05e0, 0000, 0x0600, 0000, 0x0620, 0000, 0x0640, 0000, 0x0660, 0000, 0200, + 0000, 0200, 0000, 0200, 0000, 0x01a0, 0000, 0x0680, 0000, 0x06a0, 0000, 0x06c0, 0000, 0x06e0, 0000, 0x0700, + 0000, 0x0720, 0000, 0x0740, 0000, 0x0760, 0000, 0x0780, 0000, 0x07a0, 0000, 0x07c0, 0000, 0x07e0, 0000, 0x0800, + 0000, 0x0820, 0000, 0x0840, 0000, 0x0860, 0000, 0200, 0000, 0x0880, 0000, 0200, 0000, 0x06e0, 0000, 0x0720} + +func zzUnpackRowMapNoParams() []int { + result := make([]int, 104) + offset := 0 + offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result) + return result +} + +func zzUnpackRowMap(packed []rune, offset int, result []int) int { + i := 0 /* index in packed string */ + j := offset /* index in unpacked array */ + l := len(packed) //208 + for i < l { + high := packed[i] << 16 + i++ + result[j] = int(high | packed[i]) + i++ + j++ + } + return j +} + +/** +* The transition table of the DFA + */ +var ZZ_TRANS []int = zzUnpackTransNoParams() + +var ZZ_TRANS_PACKED_0 []rune = []rune{0001, 0012, 0001, 0013, 0001, 0014, 0001, 0015, 0003, 0016, 0001, 0017, 0001, 0020, 0001, 0021, + 0001, 0022, 0001, 0023, 0001, 0024, 0001, 0016, 0001, 0025, 0001, 0016, 0001, 0026, 0002, 0022, + 0001, 0016, 0001, 0022, 0002, 0027, 0001, 0030, 0001, 0000, 0001, 0031, 0002, 0022, 0001, 0032, + 0003, 0022, 0003, 0033, 0001, 0034, 0001, 0035, 0033, 0033, 0001, 0036, 0001, 0037, 0036, 0036, + 0002, 0040, 0001, 0041, 0035, 0040, 0040, 0000, 0001, 0042, 0001, 0043, 0036, 0042, 0001, 0044, + 0001, 0045, 0036, 0044, 0006, 0046, 0001, 0047, 0031, 0046, 0001, 0050, 0001, 0051, 0004, 0050, + 0001, 0052, 0031, 0050, 0003, 0000, 0001, 0053, 0001, 0054, 0034, 0000, 0001, 0055, 0005, 0000, + 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, 0001, 0022, 0004, 0000, 0007, 0022, 0001, 0000, + 0001, 0056, 0005, 0000, 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, 0001, 0022, 0004, 0000, + 0007, 0022, 0001, 0000, 0001, 0057, 0005, 0000, 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, + 0001, 0022, 0004, 0000, 0007, 0022, 0007, 0000, 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, + 0001, 0022, 0004, 0000, 0007, 0022, 0013, 0000, 0001, 0023, 0002, 0000, 0001, 0060, 0001, 0000, + 0001, 0023, 0001, 0000, 0001, 0061, 0001, 0000, 0001, 0062, 0030, 0000, 0001, 0063, 0026, 0000, + 0001, 0064, 0006, 0000, 0001, 0065, 0002, 0000, 0001, 0066, 0001, 0000, 0001, 0065, 0030, 0000, + 0001, 0067, 0001, 0000, 0001, 0023, 0002, 0000, 0001, 0060, 0001, 0000, 0001, 0023, 0001, 0000, + 0001, 0061, 0001, 0000, 0001, 0062, 0042, 0000, 0001, 0053, 0017, 0000, 0005, 0022, 0004, 0000, + 0003, 0022, 0001, 0000, 0001, 0022, 0004, 0000, 0001, 0022, 0001, 0070, 0003, 0022, 0001, 0071, + 0001, 0022, 0007, 0000, 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, 0001, 0022, 0004, 0000, + 0004, 0022, 0001, 0072, 0002, 0022, 0003, 0033, 0002, 0000, 0033, 0033, 0004, 0000, 0001, 0073, + 0036, 0000, 0001, 0074, 0001, 0075, 0033, 0000, 0001, 0036, 0001, 0000, 0036, 0036, 0001, 0000, + 0001, 0076, 0023, 0000, 0001, 0077, 0001, 0100, 0011, 0000, 0002, 0040, 0001, 0000, 0035, 0040, + 0002, 0000, 0001, 0101, 0035, 0000, 0001, 0042, 0001, 0000, 0036, 0042, 0025, 0000, 0001, 0102, + 0001, 0103, 0011, 0000, 0001, 0044, 0001, 0000, 0036, 0044, 0025, 0000, 0001, 0104, 0001, 0105, + 0011, 0000, 0006, 0046, 0001, 0000, 0031, 0046, 0025, 0053, 0001, 0000, 0012, 0053, 0005, 0000, + 0001, 0106, 0045, 0000, 0001, 0065, 0002, 0000, 0001, 0107, 0001, 0000, 0001, 0065, 0001, 0000, + 0001, 0061, 0001, 0000, 0001, 0062, 0026, 0000, 0001, 0110, 0004, 0000, 0001, 0110, 0002, 0000, + 0001, 0111, 0003, 0000, 0001, 0111, 0023, 0000, 0001, 0065, 0004, 0000, 0001, 0065, 0001, 0000, + 0001, 0061, 0001, 0000, 0001, 0062, 0023, 0000, 0001, 0112, 0002, 0000, 0001, 0112, 0004, 0000, + 0003, 0112, 0001, 0000, 0001, 0112, 0022, 0000, 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, + 0001, 0022, 0004, 0000, 0002, 0022, 0001, 0113, 0004, 0022, 0007, 0000, 0005, 0022, 0004, 0000, + 0003, 0022, 0001, 0000, 0001, 0022, 0004, 0000, 0006, 0022, 0001, 0114, 0003, 0000, 0001, 0115, + 0003, 0000, 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, 0001, 0022, 0002, 0116, 0001, 0117, + 0001, 0000, 0007, 0022, 0001, 0000, 0001, 0120, 0023, 0000, 0002, 0077, 0036, 0000, 0001, 0077, + 0001, 0100, 0012, 0000, 0001, 0121, 0023, 0000, 0002, 0102, 0012, 0000, 0001, 0122, 0023, 0000, + 0002, 0104, 0024, 0000, 0001, 0110, 0004, 0000, 0001, 0110, 0026, 0000, 0005, 0022, 0004, 0000, + 0003, 0022, 0001, 0000, 0001, 0022, 0004, 0000, 0002, 0022, 0001, 0123, 0004, 0022, 0003, 0000, + 0001, 0124, 0003, 0000, 0005, 0022, 0004, 0000, 0003, 0022, 0001, 0000, 0001, 0022, 0002, 0125, + 0001, 0126, 0001, 0000, 0007, 0022, 0003, 0000, 0001, 0127, 0037, 0000, 0001, 0115, 0021, 0000, + 0002, 0116, 0001, 0117, 0001, 0000, 0001, 0130, 0035, 0000, 0001, 0127, 0013, 0000, 0001, 0131, + 0037, 0000, 0001, 0124, 0021, 0000, 0002, 0125, 0001, 0126, 0001, 0000, 0001, 0132, 0035, 0000, + 0001, 0131, 0010, 0000, 0025, 0127, 0001, 0116, 0003, 0127, 0001, 0133, 0006, 0127, 0032, 0000, + 0001, 0134, 0005, 0000, 0025, 0131, 0001, 0125, 0003, 0131, 0001, 0135, 0006, 0131, 0032, 0000, + 0001, 0136, 0005, 0000, 0025, 0127, 0001, 0116, 0003, 0127, 0001, 0133, 0001, 0137, 0005, 0127, + 0033, 0000, 0001, 0140, 0004, 0000, 0025, 0131, 0001, 0125, 0003, 0131, 0001, 0135, 0001, 0141, + 0005, 0131, 0033, 0000, 0001, 0142, 0004, 0000, 0025, 0127, 0001, 0116, 0003, 0127, 0001, 0133, + 0001, 0127, 0001, 0143, 0004, 0127, 0033, 0000, 0001, 0144, 0004, 0000, 0025, 0131, 0001, 0125, + 0003, 0131, 0001, 0135, 0001, 0131, 0001, 0145, 0004, 0131, 0033, 0000, 0001, 0146, 0004, 0000, + 0025, 0127, 0001, 0116, 0003, 0127, 0001, 0133, 0001, 0127, 0001, 0147, 0004, 0127, 0025, 0131, + 0001, 0125, 0003, 0131, 0001, 0135, 0001, 0131, 0001, 0150, 0004, 0131} + +func zzUnpackTransNoParams() []int { + result := make([]int, 2208) + offset := 0 + offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result) + return result +} + +func zzUnpackTrans(packed []rune, offset int, result []int) int { + i := 0 /* index in packed string */ + j := offset /* index in unpacked array */ + l := len(packed) //780 + for i < l { + count := packed[i] + i++ + value := packed[i] + i++ + value-- + result[j] = int(value) + j++ + count-- + for count > 0 { + result[j] = int(value) + j++ + count-- + } + } + return j +} + +/* error codes */ +const ( + ZZ_UNKNOWN_ERROR = 0 + ZZ_NO_MATCH = 1 + ZZ_PUSHBACK_2BIG = 2 +) + +/* error messages for the codes above */ +var ZZ_ERROR_MSG []string = []string{ + "Unknown internal scanner error", + "Error: could not match input", + "Error: pushback Value was too large"} + +/** +* ZZ_ATTRIBUTE[aState] contains the attributes of state aState + */ +var ZZ_ATTRIBUTE []int = zzUnpackAttributeNoParams() + +var ZZ_ATTRIBUTE_PACKED_0 []rune = []rune{0004, 0000, 0001, 0010, 0004, 0000, 0003, 0011, 0001, 0001, 0001, 0011, 0010, 0001, 0001, 0011, + 0017, 0001, 0004, 0011, 0001, 0001, 0001, 0011, 0001, 0000, 0002, 0011, 0001, 0001, 0001, 0000, + 0003, 0011, 0001, 0001, 0001, 0011, 0001, 0000, 0003, 0001, 0002, 0011, 0001, 0000, 0001, 0011, + 0002, 0000, 0001, 0011, 0004, 0000, 0002, 0011, 0001, 0001, 0001, 0000, 0003, 0001, 0003, 0000, + 0003, 0011, 0001, 0001, 0020, 0000, 0001, 0011, 0001, 0000, 0001, 0011, 0002, 0001} + +func zzUnpackAttributeNoParams() []int { + result := make([]int, 104) + offset := 0 + offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result) + return result +} + +func zzUnpackAttribute(packed []rune, offset int, result []int) int { + i := 0 /* index in packed string */ + j := offset /* index in unpacked array */ + l := len(packed) //78 + for i < l { + count := packed[i] + i++ + value := packed[i] + i++ + result[j] = int(value) + j++ + count-- + + for count > 0 { + result[j] = int(value) + j++ + count-- + } + } + return j +} + +type Lexer struct { + /** the input device */ + zzReader io.RuneReader + + /** the current state of the DFA */ + zzState int + + /** the current lexical state */ + zzLexicalState int + + /** this buffer contains the current text to be matched and is + the source of the yytext() string */ + zzBuffer []rune + + //zzBytesBuffer []byte + + /** the textposition at the last accepting state */ + zzMarkedPos int + + /** the current text Position in the buffer */ + zzCurrentPos int + + /** startRead marks the beginning of the yytext() string in the buffer */ + zzStartRead int + + /** endRead marks the last character in the buffer, that has been read + from input */ + zzEndRead int + + /** number of newlines encountered up to the start of the matched text */ + yyline int + + /** the number of characters up to the start of the matched text */ + yychar int + + /** + * the number of characters from the last newline up to the start of the + * matched text + */ + yycolumn int + + /** + * zzAtBOL == true <=> the scanner is currently at the beginning of a line + */ + zzAtBOL bool + + /** zzAtEOF == true <=> the scanner is at the EOF */ + zzAtEOF bool + + /** denotes if the user-EOF-code has already been executed */ + zzEOFDone bool + + /** + * The number of occupied positions in zzBuffer beyond zzEndRead. + * When a lead/high surrogate has been read from the input stream + * into the final zzBuffer Position, this will have a Value of 1; + * otherwise, it will have a Value of 0. + */ + zzFinalHighSurrogate int + + /* user code: */ + ltstr string + debugFlag bool +} + +func (lexer *Lexer) init() { + lexer.zzLexicalState = YYINITIAL + lexer.zzBuffer = make([]rune, ZZ_BUFFERSIZE) + lexer.zzAtBOL = true +} + +func (lexer *Lexer) Reset(in io.RuneReader) *Lexer { + lexer.zzLexicalState = YYINITIAL + lexer.zzAtBOL = true + lexer.zzReader = in + lexer.zzState = 0 + lexer.zzMarkedPos = 0 + lexer.zzCurrentPos = 0 + lexer.zzStartRead = 0 + lexer.zzEndRead = 0 + lexer.yyline = 0 + lexer.yychar = 0 + lexer.yycolumn = 0 + lexer.zzAtEOF = false + lexer.zzEOFDone = false + lexer.zzFinalHighSurrogate = 0 + lexer.ltstr = "" + return lexer +} + +func (lexer *Lexer) debug(info string) { + if !lexer.debugFlag { + return + } + +} + +func (lexer *Lexer) yyerror(msg string) { + locInfo := "(line: " + strconv.Itoa(lexer.yyline) + ", column: " + strconv.Itoa(lexer.yycolumn) + ", char: " + strconv.Itoa(lexer.yychar) + ")" + if msg == "" { + panic("syntex error" + locInfo) + } else { + panic("syntex error" + locInfo + ": " + msg) + } +} + +/** +* Creates a new scanner +* +* @param in the java.io.Reader to read input from. + */ +func NewLexer(in io.RuneReader, debug bool) *Lexer { + l := new(Lexer) + l.init() + l.debugFlag = debug + l.zzReader = in + return l +} + +/** +* Unpacks the compressed character translation table. +* +* @param packed the packed character translation table +* @return the unpacked character translation table + */ +func zzUnpackCMap(packed []rune) []rune { + m := make([]rune, 0x110000) + i := 0 /* index in packed string */ + j := 0 /* index in unpacked array */ + for i < 208 { + count := packed[i] + i++ + value := packed[i] + i++ + m[j] = value + j++ + count-- + for count > 0 { + m[j] = value + j++ + count-- + } + } + return m +} + +/** +* Refills the input buffer. +* +* @return false, iff there was new input. +* +* @exception java.io.IOException if any I/O-Error occurs + */ +func (lexer *Lexer) zzRefill() (bool, error) { + + /* first: make room (if you can) */ + if lexer.zzStartRead > 0 { + lexer.zzEndRead += lexer.zzFinalHighSurrogate + lexer.zzFinalHighSurrogate = 0 + l := lexer.zzEndRead - lexer.zzStartRead + if l > 0 { + copy(lexer.zzBuffer[:l], lexer.zzBuffer[lexer.zzStartRead:lexer.zzEndRead]) + } + + /* translate stored positions */ + lexer.zzEndRead -= lexer.zzStartRead + lexer.zzCurrentPos -= lexer.zzStartRead + lexer.zzMarkedPos -= lexer.zzStartRead + lexer.zzStartRead = 0 + } + + /* is the buffer big enough? */ + if lexer.zzCurrentPos >= len(lexer.zzBuffer)-lexer.zzFinalHighSurrogate { + /* if not: blow it up */ + newBuffer := make([]rune, len(lexer.zzBuffer)*2) + + copy(newBuffer[:len(lexer.zzBuffer)], lexer.zzBuffer[:len(lexer.zzBuffer)]) + lexer.zzBuffer = newBuffer + lexer.zzEndRead += lexer.zzFinalHighSurrogate + lexer.zzFinalHighSurrogate = 0 + } + + /* fill the buffer with new input */ + requested := len(lexer.zzBuffer) - lexer.zzEndRead + + var numRead = 0 + for i := lexer.zzEndRead; i < lexer.zzEndRead+requested; i++ { + r, _, err := lexer.zzReader.ReadRune() + if err == io.EOF { + if numRead == 0 { + numRead = -1 + } + break + } else if err != nil { + return false, err + } else { + numRead++ + lexer.zzBuffer[i] = r + } + } + + /* not supposed to occur according to specification of java.io.Reader */ + if numRead == 0 { + panic("Reader returned 0 characters. See JFlex examples for workaround.") + } + + if numRead > 0 { + + lexer.zzEndRead += numRead + /* If numRead == requested, we might have requested to few chars to + encode a full Unicode character. We assume that a Reader would + otherwise never return half characters. */ + if numRead == requested { + if utf8.ValidRune(lexer.zzBuffer[lexer.zzEndRead-1]) { + lexer.zzEndRead-- + lexer.zzFinalHighSurrogate = 1 + } + } + /* potentially more input available */ + return false, nil + } + + /* numRead < 0 ==> end of stream */ + return true, nil +} + +/** +* Closes the input stream. + */ +func (lexer *Lexer) yyclose() error { + lexer.zzAtEOF = true /* indicate end of file */ + lexer.zzEndRead = lexer.zzStartRead /* invalidate buffer */ + + if lexer.zzReader != nil { + if c, ok := lexer.zzReader.(io.Closer); ok { + return c.Close() + } + } + return nil +} + +/** +* Resets the scanner to read from a new input stream. +* Does not close the old reader. +* +* All internal variables are reset, the old input stream +* cannot be reused (internal buffer is discarded and lost). +* Lexical state is set to ZZ_INITIAL. +* +* Internal scan buffer is resized down to its initial length, if it has grown. +* +* @param reader the new input stream + */ +func (lexer *Lexer) yyreset(reader io.RuneReader) { + lexer.zzReader = reader + lexer.zzAtBOL = true + lexer.zzAtEOF = false + lexer.zzEOFDone = false + lexer.zzEndRead = 0 + lexer.zzStartRead = 0 + lexer.zzCurrentPos = 0 + lexer.zzMarkedPos = 0 + lexer.zzFinalHighSurrogate = 0 + lexer.yyline = 0 + lexer.yychar = 0 + lexer.yycolumn = 0 + lexer.zzLexicalState = YYINITIAL + if len(lexer.zzBuffer) > ZZ_BUFFERSIZE { + lexer.zzBuffer = make([]rune, ZZ_BUFFERSIZE) + } +} + +/** +* Returns the current lexical state. + */ +func (lexer *Lexer) yystate() int { + return lexer.zzLexicalState +} + +/** +* Enters a new lexical state +* +* @param newState the new lexical state + */ +func (lexer *Lexer) yybegin(newState int) { + lexer.zzLexicalState = newState +} + +/** +* Returns the text matched by the current regular expression. + */ +func (lexer *Lexer) yytext() string { + return string(lexer.zzBuffer[lexer.zzStartRead:lexer.zzMarkedPos]) +} + +/** +* Returns the character at Position pos from the +* matched text. +* +* It is equivalent to yytext().charAt(pos), but faster +* +* @param pos the Position of the character to fetch. +* A Value from 0 to yylength()-1. +* +* @return the character at Position pos + */ +func (lexer *Lexer) yycharat(pos int) rune { + return lexer.zzBuffer[lexer.zzStartRead+pos] +} + +/** +* Returns the length of the matched text region. + */ +func (lexer *Lexer) yylength() int { + return lexer.zzMarkedPos - lexer.zzStartRead +} + +/** +* Reports an error that occured while scanning. +* +* In a wellformed scanner (no or only correct usage of +* yypushback(int) and a match-all fallback rule) this method +* will only be called with things that "Can't Possibly Happen". +* If this method is called, something is seriously wrong +* (e.g. a JFlex bug producing a faulty scanner etc.). +* +* Usual syntax/scanner level error handling should be done +* in error fallback rules. +* +* @param errorCode the code of the errormessage to display + */ +func (lexer *Lexer) zzScanError(errorCode int) { + var message string + + message = ZZ_ERROR_MSG[errorCode] + if message == "" { + message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR] + } + + panic(message) +} + +/** +* Pushes the specified amount of characters back into the input stream. +* +* They will be read again by then next call of the scanning method +* +* @param number the number of characters to be read again. +* This number must not be greater than yylength()! + */ +func (lexer *Lexer) yypushback(number int) { + if number > lexer.yylength() { + lexer.zzScanError(ZZ_PUSHBACK_2BIG) + } + + lexer.zzMarkedPos -= number +} + +/** +* Resumes scanning until the next regular expression is matched, +* the end of input is encountered or an I/O-Error occurs. +* +* @return the next token +* @exception java.io.IOException if any I/O-Error occurs + */ +func (lexer *Lexer) Yylex() (*LVal, error) { + var zzInput rune + var zzAction, zzCurrentPosL, zzMarkedPosL int + // cached fields: + zzEndReadL := lexer.zzEndRead + zzBufferL := lexer.zzBuffer + zzCMapL := ZZ_CMAP + + zzTransL := ZZ_TRANS + zzRowMapL := ZZ_ROWMAP + zzAttrL := ZZ_ATTRIBUTE + + for { + zzMarkedPosL = lexer.zzMarkedPos + + lexer.yychar += zzMarkedPosL - lexer.zzStartRead + + zzR := false + var zzCh rune + var zzCharCount int + zzCurrentPosL = lexer.zzStartRead + for zzCurrentPosL < zzMarkedPosL { + zzCh = zzBufferL[zzCurrentPosL] + zzCharCount = utf8.RuneLen(zzCh) + switch zzCh { + case '\u000B', '\u000C', '\u0085', '\u2028', '\u2029': + lexer.yyline++ + lexer.yycolumn = 0 + zzR = false + case '\r': + lexer.yyline++ + lexer.yycolumn = 0 + zzR = true + case '\n': + if zzR { + zzR = false + } else { + lexer.yyline++ + lexer.yycolumn = 0 + } + default: + zzR = false + lexer.yycolumn += zzCharCount + } + zzCurrentPosL += zzCharCount + } + + if zzR { + // peek one character ahead if it is \n (if we have counted one line too much) + var zzPeek bool + if zzMarkedPosL < zzEndReadL { + zzPeek = zzBufferL[zzMarkedPosL] == '\n' + } else if lexer.zzAtEOF { + zzPeek = false + } else { + eof, err := lexer.zzRefill() + if err != nil { + return nil, err + } + zzEndReadL = lexer.zzEndRead + zzMarkedPosL = lexer.zzMarkedPos + zzBufferL = lexer.zzBuffer + if eof { + zzPeek = false + } else { + zzPeek = zzBufferL[zzMarkedPosL] == '\n' + } + + } + if zzPeek { + lexer.yyline-- + } + } + zzAction = -1 + + zzCurrentPosL = zzMarkedPosL + lexer.zzCurrentPos = zzMarkedPosL + lexer.zzStartRead = zzMarkedPosL + lexer.zzState = ZZ_LEXSTATE[lexer.zzLexicalState] + + // set up zzAction for empty match case: + zzAttributes := zzAttrL[lexer.zzState] + if (zzAttributes & 1) == 1 { + zzAction = lexer.zzState + } + + { + for true { + + if zzCurrentPosL < zzEndReadL { + zzInput = zzBufferL[zzCurrentPosL] + zzCurrentPosL += 1 //utf8.RuneLen(zzInput) + } else if lexer.zzAtEOF { + zzInput = YYEOF + goto zzForAction + } else { + // store back cached positions + lexer.zzCurrentPos = zzCurrentPosL + lexer.zzMarkedPos = zzMarkedPosL + eof, err := lexer.zzRefill() + if err != nil { + return nil, err + } + // get translated positions and possibly new buffer + zzCurrentPosL = lexer.zzCurrentPos + zzMarkedPosL = lexer.zzMarkedPos + zzBufferL = lexer.zzBuffer + zzEndReadL = lexer.zzEndRead + if eof { + zzInput = YYEOF + goto zzForAction + } else { + zzInput = zzBufferL[zzCurrentPosL] + zzCurrentPosL += 1 //utf8.RuneLen(zzInput) + } + } + + zzNext := zzTransL[zzRowMapL[lexer.zzState]+int(zzCMapL[zzInput])] + if zzNext == -1 { + goto zzForAction + } + + lexer.zzState = zzNext + + zzAttributes = zzAttrL[lexer.zzState] + if (zzAttributes & 1) == 1 { + zzAction = lexer.zzState + zzMarkedPosL = zzCurrentPosL + if (zzAttributes & 8) == 8 { + goto zzForAction + } + } + + } + } + + zzForAction: + // store back cached Position + lexer.zzMarkedPos = zzMarkedPosL + + if zzInput == YYEOF && lexer.zzStartRead == lexer.zzCurrentPos { + lexer.zzAtEOF = true + switch lexer.zzLexicalState { + case xc: + { + lexer.debug("<>") + + lexer.yybegin(YYINITIAL) + lexer.yyerror("unterminated /* comment") + } + case 105: + case xq: + { + lexer.debug("<>") + + lexer.yybegin(YYINITIAL) + lexer.yyerror("unterminated quoted string") + } + fallthrough + case 106: + case xdq: + { + lexer.debug("<>") + + lexer.yybegin(YYINITIAL) + lexer.yyerror("unterminated quoted identifier") + } + fallthrough + case 107: + case xbin: + { + lexer.debug("<>") + + lexer.yybegin(YYINITIAL) + lexer.yyerror("unterminated binary string literal") + } + fallthrough + case 108: + case xhex: + { + lexer.debug("<>") + + lexer.yybegin(YYINITIAL) + lexer.yyerror("unterminated hexadecimal integer") + } + fallthrough + case 109: + case xq2: + { + lexer.yybegin(YYINITIAL) + lexer.yyerror("unterminated q2 string") + } + fallthrough + case 110: + case xq2_2: + { + lexer.yybegin(YYINITIAL) + lexer.yyerror("unterminated q2 string") + } + fallthrough + case 111: + default: + return nil, nil + } + } else { + var action int + if zzAction < 0 { + action = zzAction + } else { + action = ZZ_ACTION[zzAction] + } + switch action { + case 1: + { + lexer.debug("{other}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 44: + case 2: + { + lexer.debug("{xq_start}") + + lexer.yybegin(xq) + lexer.ltstr = "" + } + fallthrough + case 45: + case 3: + { + lexer.debug("{xdq_start}") + + lexer.yybegin(xdq) + lexer.ltstr = "" + lexer.ltstr += lexer.yytext() + } + fallthrough + case 46: + case 4: + { + lexer.debug("{self} | {op_chars}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 47: + case 5: + { + lexer.debug("{identifier}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 48: + case 6: + { + lexer.debug("{integer}") + + return newLVal(lexer.yytext(), INT), nil + } + fallthrough + case 49: + case 7: + { + lexer.debug("{whitespace} | {comment} | {c_line_comment}") + + return newLVal(lexer.yytext(), WHITESPACE_OR_COMMENT), nil + } + fallthrough + case 50: + case 8: + { + lexer.debug("{xc_inside}") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 51: + case 9: + { + lexer.debug("[\\/] | [\\*]") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 52: + case 10: + { + lexer.debug("{xq_inside}") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 53: + case 11: + { + lexer.debug("{xq_stop}") + + lexer.yybegin(YYINITIAL) + return newLVal(lexer.ltstr, STRING), nil + } + fallthrough + case 54: + case 12: + { + lexer.debug("{xdq_inside}") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 55: + case 13: + { + lexer.debug("{xdq_stop}") + + lexer.yybegin(YYINITIAL) + lexer.ltstr += lexer.yytext() + return newLVal(lexer.ltstr, NORMAL), nil + } + fallthrough + case 56: + case 14: + { + lexer.debug("{xbin_inside}") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 57: + case 15: + { + lexer.debug("{xbin_stop}") + + lexer.yybegin(YYINITIAL) + lexer.ltstr += lexer.yytext() + return newLVal(lexer.ltstr, NORMAL), nil + } + fallthrough + case 58: + case 16: + { + lexer.debug("{xhex_inside}") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 59: + case 17: + { + lexer.debug("{xhex_stop}") + + lexer.yybegin(YYINITIAL) + lexer.ltstr += lexer.yytext() + return newLVal(lexer.ltstr, NORMAL), nil + } + fallthrough + case 60: + case 18: + { + lexer.ltstr += lexer.yytext() + } + fallthrough + case 61: + case 19: + { + lexer.yybegin(xq2_2) + } + fallthrough + case 62: + case 20: + { + lexer.ltstr += "]" + lexer.ltstr += lexer.yytext() + lexer.yybegin(xq2) + } + fallthrough + case 63: + case 21: + { + lexer.yybegin(YYINITIAL) + + return newLVal(lexer.ltstr, STRING), nil + } + fallthrough + case 64: + case 22: + { + lexer.ltstr += "]" + lexer.yybegin(xq2_2) + } + fallthrough + case 65: + case 23: + { + lexer.debug("{xc_start}") + + lexer.yybegin(xc) + lexer.ltstr = lexer.yytext() + } + fallthrough + case 66: + case 24: + { + lexer.debug("{xbin_start}") + + lexer.yybegin(xbin) + lexer.ltstr = "" + lexer.ltstr += lexer.yytext() + } + fallthrough + case 67: + case 25: + { + lexer.debug("{xhex_start}") + + lexer.yybegin(xhex) + lexer.ltstr = "" + lexer.ltstr += lexer.yytext() + } + fallthrough + case 68: + case 26: + { + lexer.debug("{decimal}") + + return newLVal(lexer.yytext(), DECIMAL), nil + } + fallthrough + case 69: + case 27: + { + lexer.debug("{real}") + + return newLVal(lexer.yytext(), DOUBLE), nil + } + fallthrough + case 70: + case 28: + { + lexer.debug("{assign}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 71: + case 29: + { + lexer.debug("{selstar}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 72: + case 30: + { + lexer.debug("{boundary}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 73: + case 31: + { + lexer.debug("{xc_start}") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 74: + case 32: + { + lexer.debug("{xc_stop}") + + lexer.yybegin(YYINITIAL) + lexer.ltstr += lexer.yytext() + return newLVal(lexer.ltstr, WHITESPACE_OR_COMMENT), nil + } + fallthrough + case 75: + case 33: + { + lexer.debug("{xq_double}") + + lexer.ltstr += "\\'" + } + fallthrough + case 76: + case 34: + { // keep original string + lexer.debug("{xdq_double}") + + lexer.ltstr += lexer.yytext() + } + fallthrough + case 77: + case 35: + { + lexer.yybegin(xq2) + lexer.ltstr = "" + } + fallthrough + case 78: + case 36: + { + lexer.debug("{integer_with_boundary}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 79: + case 37: + { + lexer.debug("{hex_integer}") + + return newLVal(lexer.yytext(), HEX_INT), nil + } + fallthrough + case 80: + case 38: + { + lexer.debug("{xq_cat}") + } + fallthrough + case 81: + case 39: + { /* ignore */ + lexer.debug("{xbin_cat}") + } + fallthrough + case 82: + case 40: + { + lexer.debug("{xhex_cat}") + } + fallthrough + case 83: + case 41: + { + lexer.debug("{null}") + + return newLVal("null", NULL), nil + } + fallthrough + case 84: + case 42: + { + lexer.debug("{is_null}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 85: + case 43: + { + lexer.debug("{not_null}") + + return newLVal(lexer.yytext(), NORMAL), nil + } + fallthrough + case 86: + default: + lexer.zzScanError(ZZ_NO_MATCH) + } + } + } +} diff --git a/vendor/gitee.com/chunanyong/dm/q.go b/vendor/gitee.com/chunanyong/dm/q.go new file mode 100644 index 000000000..2528463bb --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/q.go @@ -0,0 +1,1455 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql/driver" + "math" + "strconv" + "strings" + + "gitee.com/chunanyong/dm/util" +) + +const ( + LOADPREC_DEFAULT = 2 + + LOADPREC_MAX = 9 + + SECDPREC_DEFAULT = 6 + + SECDPREC_MAX = 6 + + QUA_D byte = 3 + + QUA_DH byte = 4 + + QUA_DHM byte = 5 + + QUA_DHMS byte = 6 + + QUA_H byte = 7 + + QUA_HM byte = 8 + + QUA_HMS byte = 9 + + QUA_M byte = 10 + + QUA_MS byte = 11 + + QUA_S byte = 12 +) + +type DmIntervalDT struct { + _type byte + + leadScale int + + secScale int + + negative bool + + days int + + hours int + + minutes int + + seconds int + + fraction int + + scaleForSvr int + + Valid bool +} + +func (dt *DmIntervalDT) init() { + dt._type = QUA_D + dt.leadScale = 2 + dt.secScale = 6 + dt.negative = false + dt.days = 0 + dt.hours = 0 + dt.minutes = 0 + dt.seconds = 0 + dt.fraction = 0 + dt.scaleForSvr = 0 + dt.Valid = true +} + +func newDmIntervalDTByBytes(bytes []byte) *DmIntervalDT { + dt := new(DmIntervalDT) + dt.init() + + dt._type = bytes[21] + dt.scaleForSvr = int(Dm_build_650.Dm_build_752(bytes, 20)) + dt.leadScale = (dt.scaleForSvr >> 4) & 0x0000000F + dt.secScale = dt.scaleForSvr & 0x0000000F + + switch dt._type { + case QUA_D: + dt.days = int(Dm_build_650.Dm_build_752(bytes, 0)) + case QUA_DH: + dt.days = int(Dm_build_650.Dm_build_752(bytes, 0)) + dt.hours = int(Dm_build_650.Dm_build_752(bytes, 4)) + case QUA_DHM: + dt.days = int(Dm_build_650.Dm_build_752(bytes, 0)) + dt.hours = int(Dm_build_650.Dm_build_752(bytes, 4)) + dt.minutes = int(Dm_build_650.Dm_build_752(bytes, 8)) + case QUA_DHMS: + dt.days = int(Dm_build_650.Dm_build_752(bytes, 0)) + dt.hours = int(Dm_build_650.Dm_build_752(bytes, 4)) + dt.minutes = int(Dm_build_650.Dm_build_752(bytes, 8)) + dt.seconds = int(Dm_build_650.Dm_build_752(bytes, 12)) + dt.fraction = int(Dm_build_650.Dm_build_752(bytes, 16)) + case QUA_H: + dt.hours = int(Dm_build_650.Dm_build_752(bytes, 4)) + case QUA_HM: + dt.hours = int(Dm_build_650.Dm_build_752(bytes, 4)) + dt.minutes = int(Dm_build_650.Dm_build_752(bytes, 8)) + case QUA_HMS: + dt.hours = int(Dm_build_650.Dm_build_752(bytes, 4)) + dt.minutes = int(Dm_build_650.Dm_build_752(bytes, 8)) + dt.seconds = int(Dm_build_650.Dm_build_752(bytes, 12)) + dt.fraction = int(Dm_build_650.Dm_build_752(bytes, 16)) + case QUA_M: + dt.minutes = int(Dm_build_650.Dm_build_752(bytes, 8)) + case QUA_MS: + dt.minutes = int(Dm_build_650.Dm_build_752(bytes, 8)) + dt.seconds = int(Dm_build_650.Dm_build_752(bytes, 12)) + dt.fraction = int(Dm_build_650.Dm_build_752(bytes, 16)) + case QUA_S: + dt.seconds = int(Dm_build_650.Dm_build_752(bytes, 12)) + dt.fraction = int(Dm_build_650.Dm_build_752(bytes, 16)) + } + if dt.days < 0 { + dt.days = -dt.days + dt.negative = true + } + if dt.hours < 0 { + dt.hours = -dt.hours + dt.negative = true + } + if dt.minutes < 0 { + dt.minutes = -dt.minutes + dt.negative = true + } + if dt.seconds < 0 { + dt.seconds = -dt.seconds + dt.negative = true + } + if dt.fraction < 0 { + dt.fraction = -dt.fraction + dt.negative = true + } + + return dt +} + +func NewDmIntervalDTByString(str string) (dt *DmIntervalDT, err error) { + defer func() { + if p := recover(); p != nil { + err = ECGO_INVALID_TIME_INTERVAL.throw() + } + }() + dt = new(DmIntervalDT) + dt.init() + + if str == "" { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + + leadStr := strings.TrimSpace(strings.ToUpper(str)) + + if !(strings.Index(leadStr, "INTERVAL ") == 0) { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + + leadStr = strings.TrimSpace(leadStr[strings.Index(leadStr, " "):]) + + endIndex := 0 + var valueStr string + + if endIndex = strings.Index(leadStr[1:], "'"); leadStr[0] == '\'' && endIndex != -1 { + endIndex += 1 + valueStr = strings.TrimSpace(leadStr[1:endIndex]) + valueStr = dt.checkSign(valueStr) + leadStr = strings.TrimSpace(leadStr[endIndex+1:]) + } + + if valueStr == "" { + leadStr = dt.checkSign(leadStr) + if endIndex = strings.Index(leadStr[1:], "'"); leadStr[0] != '\'' || endIndex == -1 { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + endIndex += 1 + valueStr = strings.TrimSpace(leadStr[1:endIndex]) + leadStr = strings.TrimSpace(leadStr[endIndex+1:]) + } + + strLeadPrec := "" + strSecPrec := "" + + leadPrecIndex := 0 + secPrecIndex := 0 + toIndex := 0 + + if leadPrecIndex = strings.Index(leadStr, "DAY"); leadPrecIndex != -1 { + toIndex = strings.Index(leadStr[leadPrecIndex:], "TO") + + if toIndex == -1 { + strLeadPrec = strings.TrimSpace(leadStr[leadPrecIndex:]) + if err := dt.setDay(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + toIndex += leadPrecIndex + strLeadPrec = strings.TrimSpace(leadStr[leadPrecIndex:toIndex]) + + if strings.Index(leadStr[toIndex:], "HOUR") != -1 { + if err := dt.setDayToHour(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else if strings.Index(leadStr[toIndex:], "MINUTE") != -1 { + if err := dt.setDayToMinute(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else if secPrecIndex = strings.Index(leadStr[toIndex:], "SECOND"); secPrecIndex != -1 { + secPrecIndex += toIndex + strSecPrec = leadStr[secPrecIndex:] + if err := dt.setDayToSecond(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } + + if err := dt.setPrecForSvr(leadStr, strLeadPrec, strSecPrec); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + return dt, nil + } + + if leadPrecIndex = strings.Index(leadStr, "HOUR"); leadPrecIndex != -1 { + toIndex = strings.Index(leadStr[leadPrecIndex:], "TO") + + if toIndex == -1 { + toIndex += leadPrecIndex + strLeadPrec = leadStr[leadPrecIndex:] + if err := dt.setHour(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + strLeadPrec = leadStr[leadPrecIndex:toIndex] + + if strings.Index(leadStr[toIndex:], "MINUTE") != -1 { + if err := dt.setHourToMinute(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else if secPrecIndex = strings.Index(leadStr[toIndex:], "SECOND"); secPrecIndex != -1 { + secPrecIndex += toIndex + strSecPrec = leadStr[secPrecIndex:] + if err := dt.setHourToSecond(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } + + if err := dt.setPrecForSvr(leadStr, strLeadPrec, strSecPrec); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + return dt, nil + } + + if leadPrecIndex = strings.Index(leadStr, "MINUTE"); leadPrecIndex != -1 { + toIndex = strings.Index(leadStr, "TO") + + if toIndex == -1 { + toIndex += leadPrecIndex + strLeadPrec = leadStr[leadPrecIndex:] + if err := dt.setMinute(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + strLeadPrec = leadStr[leadPrecIndex:toIndex] + + if secPrecIndex = strings.Index(leadStr[toIndex:], "SECOND"); secPrecIndex != -1 { + strSecPrec = leadStr[secPrecIndex:] + if err := dt.setMinuteToSecond(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } + + if err := dt.setPrecForSvr(leadStr, strLeadPrec, strSecPrec); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + return dt, nil + } + + if leadPrecIndex = strings.Index(leadStr, "SECOND"); leadPrecIndex != -1 { + if err := dt.setSecond(valueStr); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + + leadStr = strings.TrimSpace(leadStr[leadPrecIndex:]) + + colonIndex := strings.Index(leadStr, ",") + if colonIndex != -1 { + strLeadPrec = strings.TrimSpace(leadStr[:colonIndex]) + ")" + strSecPrec = "(" + strings.TrimSpace(leadStr[:colonIndex+1]) + } + + if err := dt.setPrecForSvr(leadStr, strLeadPrec, strSecPrec); err != nil { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + return dt, nil + } + + return nil, ECGO_INVALID_TIME_INTERVAL.throw() +} + +func (dt *DmIntervalDT) GetDay() int { + return dt.days +} + +func (dt *DmIntervalDT) GetHour() int { + return dt.hours +} + +func (dt *DmIntervalDT) GetMinute() int { + return dt.minutes +} + +func (dt *DmIntervalDT) GetSecond() int { + return dt.seconds +} + +func (dt *DmIntervalDT) GetMsec() int { + return dt.fraction +} + +func (dt *DmIntervalDT) GetDTType() byte { + return dt._type +} + +func (dt *DmIntervalDT) String() string { + if !dt.Valid { + return "" + } + var l, destLen int + var dStr, hStr, mStr, sStr, nStr string + interval := "INTERVAL " + + switch dt._type { + case QUA_D: + dStr := strconv.FormatInt(int64(float64(dt.days)), 10) + if dt.negative { + interval += "-" + } + + if len(dStr) < dt.leadScale { + l = len(dStr) + destLen = dt.leadScale + + for destLen > l { + dStr = "0" + dStr + destLen-- + } + } + + interval += "'" + dStr + "' DAY(" + strconv.FormatInt(int64(dt.leadScale), 10) + ")" + case QUA_DH: + dStr = strconv.FormatInt(int64(float64(dt.days)), 10) + hStr = strconv.FormatInt(int64(float64(dt.hours)), 10) + + if dt.negative { + interval += "-" + } + + if len(dStr) < dt.leadScale { + l = len(dStr) + destLen = dt.leadScale + + for destLen > l { + dStr = "0" + dStr + destLen-- + } + } + + if len(hStr) < 2 { + hStr = "0" + hStr + } + + interval += "'" + dStr + " " + hStr + "' DAY(" + strconv.FormatInt(int64(dt.leadScale), 10) + ") TO HOUR" + case QUA_DHM: + dStr = strconv.FormatInt(int64(float64(dt.days)), 10) + hStr = strconv.FormatInt(int64(float64(dt.hours)), 10) + mStr = strconv.FormatInt(int64(float64(dt.minutes)), 10) + + if dt.negative { + interval += "-" + } + + if len(dStr) < dt.leadScale { + l = len(dStr) + destLen = dt.leadScale + + for destLen > l { + dStr = "0" + dStr + destLen-- + } + } + if len(hStr) < 2 { + hStr = "0" + hStr + } + if len(mStr) < 2 { + mStr = "0" + mStr + } + interval += "'" + dStr + " " + hStr + ":" + mStr + "' DAY(" + strconv.FormatInt(int64(dt.leadScale), 10) + ") TO MINUTE" + case QUA_DHMS: + dStr = strconv.FormatInt(int64(float64(dt.days)), 10) + hStr = strconv.FormatInt(int64(float64(dt.hours)), 10) + mStr = strconv.FormatInt(int64(float64(dt.minutes)), 10) + sStr = strconv.FormatInt(int64(float64(dt.seconds)), 10) + nStr = dt.getMsecString() + if dt.negative { + interval += "-" + } + + if len(dStr) < dt.leadScale { + l = len(dStr) + destLen = dt.leadScale + + for destLen > l { + dStr = "0" + dStr + destLen-- + } + } + if len(hStr) < 2 { + hStr = "0" + hStr + } + if len(mStr) < 2 { + mStr = "0" + mStr + } + if len(sStr) < 2 { + sStr = "0" + sStr + } + interval += "'" + dStr + " " + hStr + ":" + mStr + ":" + sStr + if nStr != "" { + interval += "." + nStr + } + + interval += "' DAY(" + strconv.FormatInt(int64(dt.leadScale), 10) + ") TO SECOND(" + strconv.FormatInt(int64(dt.secScale), 10) + ")" + case QUA_H: + hStr = strconv.FormatInt(int64(float64(dt.hours)), 10) + if dt.negative { + interval += "-" + } + + if len(hStr) < dt.leadScale { + l = len(hStr) + destLen = dt.leadScale + + for destLen > l { + hStr = "0" + hStr + destLen-- + } + } + + interval += "'" + hStr + "' HOUR(" + strconv.FormatInt(int64(dt.leadScale), 10) + ")" + case QUA_HM: + hStr = strconv.FormatInt(int64(float64(dt.hours)), 10) + mStr = strconv.FormatInt(int64(float64(dt.minutes)), 10) + + if dt.negative { + interval += "-" + } + + if len(hStr) < dt.leadScale { + l = len(hStr) + destLen = dt.leadScale + + for destLen > l { + hStr = "0" + hStr + destLen-- + } + } + if len(mStr) < 2 { + mStr = "0" + mStr + } + + interval += "'" + hStr + ":" + mStr + "' HOUR(" + strconv.FormatInt(int64(dt.leadScale), 10) + ") TO MINUTE" + case QUA_HMS: + nStr = dt.getMsecString() + hStr = strconv.FormatInt(int64(float64(dt.hours)), 10) + mStr = strconv.FormatInt(int64(float64(dt.minutes)), 10) + sStr = strconv.FormatInt(int64(float64(dt.seconds)), 10) + + if dt.negative { + interval += "-" + } + + if len(hStr) < dt.leadScale { + l = len(hStr) + destLen = dt.leadScale + + for destLen > l { + hStr = "0" + hStr + destLen-- + } + } + if len(mStr) < 2 { + mStr = "0" + mStr + } + if len(sStr) < 2 { + sStr = "0" + sStr + } + + interval += "'" + hStr + ":" + mStr + ":" + sStr + if nStr != "" { + interval += "." + nStr + } + + interval += "' HOUR(" + strconv.FormatInt(int64(dt.leadScale), 10) + ") TO SECOND(" + strconv.FormatInt(int64(dt.secScale), 10) + ")" + + case QUA_M: + mStr = strconv.FormatInt(int64(float64(dt.minutes)), 10) + + if dt.negative { + interval += "-" + } + + if len(mStr) < dt.leadScale { + l = len(mStr) + destLen = dt.leadScale + + for destLen > l { + mStr = "0" + mStr + destLen-- + } + } + + interval += "'" + mStr + "' MINUTE(" + strconv.FormatInt(int64(dt.leadScale), 10) + ")" + case QUA_MS: + nStr = dt.getMsecString() + mStr = strconv.FormatInt(int64(float64(dt.minutes)), 10) + sStr = strconv.FormatInt(int64(float64(dt.seconds)), 10) + + if dt.negative { + interval += "-" + } + + if len(mStr) < dt.leadScale { + l = len(mStr) + destLen = dt.leadScale + + for destLen > l { + mStr = "0" + mStr + destLen-- + } + } + if len(sStr) < 2 { + sStr = "0" + sStr + } + interval += "'" + mStr + ":" + sStr + if nStr != "" { + interval += "." + nStr + } + + interval += "' MINUTE(" + strconv.FormatInt(int64(dt.leadScale), 10) + ") TO SECOND(" + strconv.FormatInt(int64(dt.secScale), 10) + ")" + case QUA_S: + nStr = dt.getMsecString() + sStr = strconv.FormatInt(int64(float64(dt.seconds)), 10) + + if dt.negative { + interval += "-" + } + + if len(sStr) < dt.leadScale { + l = len(sStr) + destLen = dt.leadScale + + for destLen > l { + sStr = "0" + sStr + destLen-- + } + } + + interval += "'" + sStr + + if nStr != "" { + interval += "." + nStr + } + + interval += "' SECOND(" + strconv.FormatInt(int64(dt.leadScale), 10) + ", " + strconv.FormatInt(int64(dt.secScale), 10) + ")" + + } + + return interval +} + +func (dest *DmIntervalDT) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmIntervalDT) + + (*dest).Valid = false + return nil + case *DmIntervalDT: + *dest = *src + return nil + case string: + ret, err := NewDmIntervalDTByString(src) + if err != nil { + return err + } + *dest = *ret + return nil + default: + return UNSUPPORTED_SCAN + } +} + +func (dt DmIntervalDT) Value() (driver.Value, error) { + if !dt.Valid { + return nil, nil + } + return dt, nil +} + +func (dt *DmIntervalDT) checkScale(leadScale int) (int, error) { + switch dt._type { + case QUA_D: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_DH: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + if int64(math.Abs(float64((dt.hours)))) > 23 { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_DHM: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + if int64(math.Abs(float64(dt.hours))) > 23 || int64(math.Abs(float64(dt.minutes))) > 59 { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_DHMS: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.days))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + if int64(math.Abs(float64(dt.hours))) > 23 || int64(math.Abs(float64(dt.minutes))) > 59 || + int64(math.Abs(float64(dt.seconds))) > 59 { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_H: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.hours))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.hours))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_HM: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.hours))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.hours))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + if int64(math.Abs(float64(dt.minutes))) > 59 { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_HMS: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.hours))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.hours))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + if int64(math.Abs(float64(dt.minutes))) > 59 || int64(math.Abs(float64(dt.seconds))) > 59 { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_M: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.minutes))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.minutes))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_MS: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.minutes))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.minutes))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + if int64(math.Abs(float64(dt.seconds))) > 59 { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + case QUA_S: + if leadScale == -1 { + leadScale = len(strconv.FormatInt(int64(math.Abs(float64(dt.minutes))), 10)) + } else if leadScale < len(strconv.FormatInt(int64(math.Abs(float64(dt.minutes))), 10)) { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + } + + if leadScale > LOADPREC_MAX { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + return leadScale, nil +} + +func (dt *DmIntervalDT) parsePrec(leadStr string) (int, error) { + leftBtId := strings.Index(leadStr, "(") + rightBtId := strings.Index(leadStr, ")") + var prec int64 = -1 + + if rightBtId != -1 && leftBtId != -1 && rightBtId > leftBtId+1 { + strPrec := strings.TrimSpace(leadStr[leftBtId+1 : rightBtId]) + var err error + prec, err = strconv.ParseInt(strPrec, 10, 32) + if err != nil { + return -1, err + } + } + + return int(prec), nil +} + +func (dt *DmIntervalDT) setPrecForSvr(fullStr string, leadScale string, secScale string) error { + prec, err := dt.parsePrec(leadScale) + if err != nil { + return err + } + + prec, err = dt.checkScale(prec) + if err != nil { + return err + } + + if prec < LOADPREC_DEFAULT { + dt.leadScale = LOADPREC_DEFAULT + } else { + dt.leadScale = prec + } + + prec, err = dt.parsePrec(secScale) + if err != nil { + return err + } + + if prec >= 0 && prec < SECDPREC_MAX { + dt.secScale = prec + } else { + dt.secScale = SECDPREC_DEFAULT + } + + dt.scaleForSvr = (int(dt._type) << 8) + (dt.leadScale << 4) + dt.secScale + return nil +} + +func (dt *DmIntervalDT) checkSign(str string) string { + + if str[0] == '-' { + str = strings.TrimSpace(str[1:]) + dt.negative = true + } else if str[0] == '+' { + str = strings.TrimSpace(str[1:]) + dt.negative = false + } + + return str +} + +func (dt *DmIntervalDT) setDay(value string) error { + list := util.Split(value, " :.") + if len(list) > 1 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_D + i, err := strconv.ParseInt(value, 10, 32) + if err != nil { + return err + } + + if i < 0 { + dt.days = int(-i) + dt.negative = true + } else { + dt.days = int(i) + } + return nil +} + +func (dt *DmIntervalDT) setHour(value string) error { + list := util.Split(value, " :.") + if len(list) > 1 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_H + i, err := strconv.ParseInt(value, 10, 32) + if err != nil { + return err + } + + if i < 0 { + dt.hours = int(-i) + dt.negative = true + } else { + dt.hours = int(i) + } + return nil +} + +func (dt *DmIntervalDT) setMinute(value string) error { + list := util.Split(value, " :.") + if len(list) > 1 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_M + i, err := strconv.ParseInt(value, 10, 32) + if err != nil { + return err + } + + if i < 0 { + dt.minutes = int(-i) + dt.negative = true + } else { + dt.minutes = int(i) + } + return nil +} + +func (dt *DmIntervalDT) setSecond(value string) error { + list := util.Split(value, " :.") + if len(list) > 2 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_S + i, err := strconv.ParseInt(list[0], 10, 32) + if err != nil { + return err + } + + nano := 0 + if len(list) > 1 { + strNano := "0" + "." + list[1] + d_v, err := strconv.ParseFloat(strNano, 64) + if err != nil { + return err + } + nx := math.Pow10(dt.secScale) + nano = (int)(d_v * nx) + } + + if i < 0 { + dt.seconds = int(-i) + } else { + dt.seconds = int(i) + } + if nano < 0 { + dt.fraction = -nano + } else { + dt.fraction = nano + } + if i < 0 || nano < 0 { + dt.negative = true + } + return nil + +} + +func (dt *DmIntervalDT) setHourToSecond(value string) error { + list := util.Split(value, " :.") + if len(list) > 4 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_HMS + + h, err := strconv.ParseInt(list[0], 10, 32) + if err != nil { + return err + } + + m, err := strconv.ParseInt(list[1], 10, 32) + if err != nil { + return err + } + + s, err := strconv.ParseInt(list[2], 10, 32) + if err != nil { + return err + } + nano := 0 + if len(list) > 3 { + strNano := "0" + "." + list[3] + d_v, err := strconv.ParseFloat(strNano, 64) + if err != nil { + return err + } + nx := math.Pow10(dt.secScale) + nano = (int)(d_v * nx) + } + + if h < 0 { + dt.hours = int(-h) + } else { + dt.hours = int(h) + } + if m < 0 { + dt.minutes = int(-m) + } else { + dt.minutes = int(m) + } + if s < 0 { + dt.seconds = int(-s) + } else { + dt.seconds = int(s) + } + if nano < 0 { + dt.fraction = -nano + } else { + dt.fraction = nano + } + if h < 0 || m < 0 || s < 0 || nano < 0 { + dt.negative = true + } + return nil +} + +func (dt *DmIntervalDT) setHourToMinute(value string) error { + value = strings.TrimSpace(value) + list := util.Split(value, " :.") + if len(list) > 2 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_HM + + h, err := strconv.ParseInt(list[0], 10, 32) + if err != nil { + return err + } + + m, err := strconv.ParseInt(list[1], 10, 32) + if err != nil { + return err + } + + if h < 0 { + dt.hours = int(-h) + } else { + dt.hours = int(h) + } + if m < 0 { + dt.minutes = int(-m) + } else { + dt.minutes = int(m) + } + if h < 0 || m < 0 { + dt.negative = true + } + return nil +} + +func (dt *DmIntervalDT) setMinuteToSecond(value string) error { + list := util.Split(value, " :.") + if len(list) > 3 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_MS + + m, err := strconv.ParseInt(list[0], 10, 32) + if err != nil { + return err + } + + s, err := strconv.ParseInt(list[1], 10, 32) + if err != nil { + return err + } + + nano := 0 + if len(list) > 2 { + strNano := "0" + "." + list[2] + d_v, err := strconv.ParseFloat(strNano, 64) + if err != nil { + return err + } + + nx := math.Pow10(dt.secScale) + nano = (int)(d_v * nx) + } + + if m < 0 { + dt.minutes = int(-m) + } else { + dt.minutes = int(m) + } + if s < 0 { + dt.seconds = int(-s) + } else { + dt.seconds = int(s) + } + if nano < 0 { + dt.fraction = -nano + } else { + dt.fraction = nano + } + if m < 0 || s < 0 || nano < 0 { + dt.negative = true + } + return nil +} + +func (dt *DmIntervalDT) setDayToHour(value string) error { + list := util.Split(value, " :.") + if len(list) > 2 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_DH + + d, err := strconv.ParseInt(list[0], 10, 32) + if err != nil { + return err + } + + h, err := strconv.ParseInt(list[1], 10, 32) + if err != nil { + return err + } + + if d < 0 { + dt.days = int(-d) + } else { + dt.days = int(d) + } + if h < 0 { + dt.hours = int(-h) + } else { + dt.hours = int(h) + } + if d < 0 || h < 0 { + dt.negative = true + } + return nil +} + +func (dt *DmIntervalDT) setDayToMinute(value string) error { + list := util.Split(value, " :.") + if len(list) > 3 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_DHM + + d, err := strconv.ParseInt(list[0], 10, 32) + if err != nil { + return err + } + + h, err := strconv.ParseInt(list[1], 10, 32) + if err != nil { + return err + } + + m, err := strconv.ParseInt(list[2], 10, 32) + if err != nil { + return err + } + + if d < 0 { + dt.days = int(-d) + } else { + dt.days = int(d) + } + if h < 0 { + dt.hours = int(-h) + } else { + dt.hours = int(h) + } + if m < 0 { + dt.minutes = int(-m) + } else { + dt.minutes = int(m) + } + if d < 0 || h < 0 || m < 0 { + dt.negative = true + } + return nil +} + +func (dt *DmIntervalDT) setDayToSecond(value string) error { + list := util.Split(value, " :.") + if len(list) > 5 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + dt._type = QUA_DHMS + + d, err := strconv.ParseInt(list[0], 10, 32) + if err != nil { + return err + } + + h, err := strconv.ParseInt(list[1], 10, 32) + if err != nil { + return err + } + + m, err := strconv.ParseInt(list[2], 10, 32) + if err != nil { + return err + } + + s, err := strconv.ParseInt(list[3], 10, 32) + if err != nil { + return err + } + + nano := 0 + if len(list) > 4 { + strNano := "0" + "." + list[4] + d_v, err := strconv.ParseFloat(strNano, 64) + if err != nil { + return err + } + + nx := math.Pow10(dt.secScale) + nano = (int)(d_v * nx) + } + + if d < 0 { + dt.days = int(-d) + } else { + dt.days = int(d) + } + if h < 0 { + dt.hours = int(-h) + } else { + dt.hours = int(h) + } + if m < 0 { + dt.minutes = int(-m) + } else { + dt.minutes = int(m) + } + if s < 0 { + dt.seconds = int(-s) + } else { + dt.seconds = int(s) + } + if nano < 0 { + dt.fraction = -nano + } else { + dt.fraction = nano + } + if d < 0 || h < 0 || m < 0 || s < 0 || nano < 0 { + dt.negative = true + } + return nil +} + +func (dt *DmIntervalDT) getMsecString() string { + nano := strconv.Itoa(dt.fraction) + + for i := 6 - len(nano); i > 0; i-- { + nano = "0" + nano + } + + if len(nano) > dt.secScale { + nano = nano[:dt.secScale] + } + + return nano +} + +func (dt *DmIntervalDT) encode(scale int) ([]byte, error) { + if scale == 0 { + scale = dt.scaleForSvr + } + day, hour, minute, second, f := dt.days, dt.hours, dt.minutes, dt.seconds, dt.fraction + if scale != dt.scaleForSvr { + convertDT, err := dt.convertTo(scale) + if err != nil { + return nil, err + } + day, hour, minute, second, f = convertDT.days, convertDT.hours, convertDT.minutes, convertDT.seconds, convertDT.fraction + } else { + loadPrec := (scale >> 4) & 0x0000000F + if _, err := dt.checkScale(loadPrec); err != nil { + return nil, err + } + } + + bytes := make([]byte, 24) + if dt.negative { + Dm_build_650.Dm_build_666(bytes, 0, int32(-day)) + Dm_build_650.Dm_build_666(bytes, 4, int32(-hour)) + Dm_build_650.Dm_build_666(bytes, 8, int32(-minute)) + Dm_build_650.Dm_build_666(bytes, 12, int32(-second)) + Dm_build_650.Dm_build_666(bytes, 16, int32(-f)) + Dm_build_650.Dm_build_666(bytes, 20, int32(scale)) + } else { + Dm_build_650.Dm_build_666(bytes, 0, int32(day)) + Dm_build_650.Dm_build_666(bytes, 4, int32(hour)) + Dm_build_650.Dm_build_666(bytes, 8, int32(minute)) + Dm_build_650.Dm_build_666(bytes, 12, int32(second)) + Dm_build_650.Dm_build_666(bytes, 16, int32(f)) + Dm_build_650.Dm_build_666(bytes, 20, int32(scale)) + } + return bytes, nil +} + +func (dt *DmIntervalDT) convertTo(scale int) (*DmIntervalDT, error) { + destType := (scale & 0x0000FF00) >> 8 + leadPrec := (scale >> 4) & 0x0000000F + secScale := scale & 0x0000000F + dayIndex := 0 + hourIndex := 1 + minuteIndex := 2 + secondIndex := 3 + fractionIndex := 4 + orgDT := make([]int, 5) + destDT := make([]int, 5) + + switch dt._type { + case QUA_D: + orgDT[dayIndex] = dt.days + case QUA_DH: + orgDT[dayIndex] = dt.days + orgDT[hourIndex] = dt.hours + case QUA_DHM: + orgDT[dayIndex] = dt.days + orgDT[hourIndex] = dt.hours + orgDT[minuteIndex] = dt.minutes + case QUA_DHMS: + orgDT[dayIndex] = dt.days + orgDT[hourIndex] = dt.hours + orgDT[minuteIndex] = dt.minutes + orgDT[secondIndex] = dt.seconds + orgDT[fractionIndex] = dt.fraction + case QUA_H: + orgDT[dayIndex] = dt.hours / 24 + orgDT[hourIndex] = dt.hours % 24 + case QUA_HM: + orgDT[dayIndex] = dt.hours / 24 + orgDT[hourIndex] = dt.hours % 24 + orgDT[minuteIndex] = dt.minutes + case QUA_HMS: + orgDT[dayIndex] = dt.hours / 24 + orgDT[hourIndex] = dt.hours % 24 + orgDT[minuteIndex] = dt.minutes + orgDT[secondIndex] = dt.seconds + orgDT[fractionIndex] = dt.fraction + case QUA_M: + orgDT[dayIndex] = dt.minutes / (24 * 60) + orgDT[hourIndex] = (dt.minutes % (24 * 60)) / 60 + orgDT[minuteIndex] = (dt.minutes % (24 * 60)) % 60 + case QUA_MS: + orgDT[dayIndex] = dt.minutes / (24 * 60) + orgDT[hourIndex] = (dt.minutes % (24 * 60)) / 60 + orgDT[minuteIndex] = (dt.minutes % (24 * 60)) % 60 + orgDT[secondIndex] = dt.seconds + orgDT[fractionIndex] = dt.fraction + case QUA_S: + orgDT[dayIndex] = dt.seconds / (24 * 60 * 60) + orgDT[hourIndex] = (dt.seconds % (24 * 60 * 60)) / (60 * 60) + orgDT[minuteIndex] = ((dt.seconds % (24 * 60 * 60)) % (60 * 60)) / 60 + orgDT[secondIndex] = ((dt.seconds % (24 * 60 * 60)) % (60 * 60)) % 60 + orgDT[fractionIndex] = dt.fraction + } + + switch byte(destType) { + case QUA_D: + destDT[dayIndex] = orgDT[dayIndex] + if orgDT[hourIndex] >= 12 { + incrementDay(QUA_D, destDT) + } + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[dayIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_DH: + destDT[dayIndex] = orgDT[dayIndex] + destDT[hourIndex] = orgDT[hourIndex] + if orgDT[minuteIndex] >= 30 { + incrementHour(QUA_DH, destDT) + } + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[dayIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_DHM: + destDT[dayIndex] = orgDT[dayIndex] + destDT[hourIndex] = orgDT[hourIndex] + destDT[minuteIndex] = orgDT[minuteIndex] + if orgDT[secondIndex] >= 30 { + incrementMinute(QUA_DHM, destDT) + } + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[dayIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_DHMS: + destDT[dayIndex] = orgDT[dayIndex] + destDT[hourIndex] = orgDT[hourIndex] + destDT[minuteIndex] = orgDT[minuteIndex] + destDT[secondIndex] = orgDT[secondIndex] + destDT[fractionIndex] = orgDT[fractionIndex] + dt.convertMSecond(QUA_DHMS, destDT, secScale) + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[dayIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_H: + destDT[hourIndex] = orgDT[dayIndex]*24 + orgDT[hourIndex] + if orgDT[minuteIndex] >= 30 { + incrementHour(QUA_H, destDT) + } + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[hourIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_HM: + destDT[hourIndex] = orgDT[dayIndex]*24 + orgDT[hourIndex] + destDT[minuteIndex] = orgDT[minuteIndex] + if orgDT[secondIndex] >= 30 { + incrementMinute(QUA_HM, destDT) + } + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[hourIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_HMS: + destDT[hourIndex] = orgDT[dayIndex]*24 + orgDT[hourIndex] + destDT[minuteIndex] = orgDT[minuteIndex] + destDT[secondIndex] = orgDT[secondIndex] + destDT[fractionIndex] = orgDT[fractionIndex] + dt.convertMSecond(QUA_HMS, destDT, secScale) + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[hourIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_M: + destDT[minuteIndex] = orgDT[dayIndex]*24*60 + orgDT[hourIndex]*60 + orgDT[minuteIndex] + if orgDT[secondIndex] >= 30 { + incrementMinute(QUA_M, destDT) + } + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[minuteIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_MS: + destDT[minuteIndex] = orgDT[dayIndex]*24*60 + orgDT[hourIndex]*60 + orgDT[minuteIndex] + destDT[secondIndex] = orgDT[secondIndex] + destDT[fractionIndex] = orgDT[fractionIndex] + dt.convertMSecond(QUA_MS, destDT, secScale) + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[minuteIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + case QUA_S: + destDT[secondIndex] = orgDT[dayIndex]*24*60*60 + orgDT[hourIndex]*60*60 + orgDT[minuteIndex]*60 + orgDT[secondIndex] + destDT[fractionIndex] = orgDT[fractionIndex] + dt.convertMSecond(QUA_S, destDT, secScale) + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(destDT[secondIndex]))))) { + return nil, ECGO_INTERVAL_OVERFLOW.throw() + } + } + + return &DmIntervalDT{ + _type: byte(destType), + negative: dt.negative, + leadScale: (scale >> 4) & 0x0000000F, + secScale: scale & 0x0000000F, + scaleForSvr: scale, + days: destDT[dayIndex], + hours: destDT[hourIndex], + minutes: destDT[minuteIndex], + seconds: destDT[secondIndex], + fraction: destDT[fractionIndex], + Valid: true, + }, nil +} + +func (dt DmIntervalDT) convertMSecond(destType byte, destDT []int, destSecScale int) { + fractionIndex := 4 + orgFraction := destDT[fractionIndex] + if destSecScale == 0 || destSecScale < dt.secScale { + n := int(math.Pow(10, 6-float64(destSecScale)-1)) + f := orgFraction / n / 10 + + if (orgFraction/n)%10 >= 5 { + f++ + f = f * n * 10 + if f == 1000000 { + destDT[fractionIndex] = 0 + incrementSecond(destType, destDT) + return + } + } + destDT[fractionIndex] = f + } +} + +func incrementDay(destType byte, dt []int) { + dayIndex := 0 + dt[dayIndex]++ +} + +func incrementHour(destType byte, dt []int) { + hourIndex := 1 + dt[hourIndex]++ + if dt[hourIndex] == 24 && destType < QUA_H { + incrementDay(destType, dt) + dt[hourIndex] = 0 + } +} + +func incrementMinute(destType byte, dt []int) { + minuteIndex := 2 + dt[minuteIndex]++ + if dt[minuteIndex] == 60 && destType < QUA_M { + incrementHour(destType, dt) + dt[minuteIndex] = 0 + } +} + +func incrementSecond(destType byte, dt []int) { + secondIndex := 3 + dt[secondIndex]++ + if dt[secondIndex] == 60 && destType < QUA_S { + incrementMinute(destType, dt) + dt[secondIndex] = 0 + } +} + +func (dt *DmIntervalDT) checkValid() error { + if !dt.Valid { + return ECGO_IS_NULL.throw() + } + return nil +} + +func (d *DmIntervalDT) GormDataType() string { + return "INTERVAL DAY TO SECOND" +} diff --git a/vendor/gitee.com/chunanyong/dm/r.go b/vendor/gitee.com/chunanyong/dm/r.go new file mode 100644 index 000000000..c03290c46 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/r.go @@ -0,0 +1,494 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql/driver" + "math" + "strconv" + "strings" + + "gitee.com/chunanyong/dm/util" +) + +const ( + QUA_Y = 0 + QUA_YM = 1 + QUA_MO = 2 +) + +type DmIntervalYM struct { + leadScale int + isLeadScaleSet bool + _type byte + years int + months int + scaleForSvr int + + Valid bool +} + +func newDmIntervalYM() *DmIntervalYM { + return &DmIntervalYM{ + Valid: true, + } +} + +func NewDmIntervalYMByString(str string) (ym *DmIntervalYM, err error) { + defer func() { + if p := recover(); p != nil { + err = ECGO_INVALID_TIME_INTERVAL.throw() + } + }() + ym = newDmIntervalYM() + ym.isLeadScaleSet = false + if err = ym.parseIntervYMString(strings.TrimSpace(str)); err != nil { + return nil, err + } + return ym, nil +} + +func newDmIntervalYMByBytes(bytes []byte) *DmIntervalYM { + ym := newDmIntervalYM() + + ym.scaleForSvr = int(Dm_build_650.Dm_build_752(bytes, 8)) + ym.leadScale = (ym.scaleForSvr >> 4) & 0x0000000F + ym._type = bytes[9] + switch ym._type { + case QUA_Y: + ym.years = int(Dm_build_650.Dm_build_752(bytes, 0)) + case QUA_YM: + ym.years = int(Dm_build_650.Dm_build_752(bytes, 0)) + ym.months = int(Dm_build_650.Dm_build_752(bytes, 4)) + case QUA_MO: + ym.months = int(Dm_build_650.Dm_build_752(bytes, 4)) + } + return ym +} + +func (ym *DmIntervalYM) GetYear() int { + return ym.years +} + +func (ym *DmIntervalYM) GetMonth() int { + return ym.months +} + +func (ym *DmIntervalYM) GetYMType() byte { + return ym._type +} + +func (ym *DmIntervalYM) String() string { + if !ym.Valid { + return "" + } + str := "INTERVAL " + var year, month string + var l int + var destLen int + + switch ym._type { + case QUA_Y: + year = strconv.FormatInt(int64(math.Abs(float64(ym.years))), 10) + if ym.years < 0 { + str += "-" + } + + if ym.leadScale > len(year) { + l = len(year) + destLen = ym.leadScale + + for destLen > l { + year = "0" + year + destLen-- + } + } + + str += "'" + year + "' YEAR(" + strconv.FormatInt(int64(ym.leadScale), 10) + ")" + case QUA_YM: + year = strconv.FormatInt(int64(math.Abs(float64(ym.years))), 10) + month = strconv.FormatInt(int64(math.Abs(float64(ym.months))), 10) + + if ym.years < 0 || ym.months < 0 { + str += "-" + } + + if ym.leadScale > len(year) { + l = len(year) + destLen = ym.leadScale + + for destLen > l { + year = "0" + year + destLen-- + } + } + + if len(month) < 2 { + month = "0" + month + } + + str += "'" + year + "-" + month + "' YEAR(" + strconv.FormatInt(int64(ym.leadScale), 10) + ") TO MONTH" + case QUA_MO: + + month = strconv.FormatInt(int64(math.Abs(float64(ym.months))), 10) + if ym.months < 0 { + str += "-" + } + + if ym.leadScale > len(month) { + l = len(month) + destLen = ym.leadScale + for destLen > l { + month = "0" + month + destLen-- + } + } + + str += "'" + month + "' MONTH(" + strconv.FormatInt(int64(ym.leadScale), 10) + ")" + } + return str +} + +func (dest *DmIntervalYM) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmIntervalYM) + + (*dest).Valid = false + return nil + case *DmIntervalYM: + *dest = *src + return nil + case string: + ret, err := NewDmIntervalYMByString(src) + if err != nil { + return err + } + *dest = *ret + return nil + default: + return UNSUPPORTED_SCAN + } +} + +func (ym DmIntervalYM) Value() (driver.Value, error) { + if !ym.Valid { + return nil, nil + } + return ym, nil +} + +func (ym *DmIntervalYM) parseIntervYMString(str string) error { + str = strings.ToUpper(str) + ret := strings.Split(str, " ") + l := len(ret) + if l < 3 || !util.StringUtil.EqualsIgnoreCase(ret[0], "INTERVAL") || !(strings.HasPrefix(ret[2], "YEAR") || strings.HasPrefix(ret[2], "MONTH")) { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + ym._type = QUA_YM + yearId := strings.Index(str, "YEAR") + monthId := strings.Index(str, "MONTH") + toId := strings.Index(str, "TO") + var err error + if toId == -1 { + if yearId != -1 && monthId == -1 { + ym._type = QUA_Y + ym.leadScale, err = ym.getLeadPrec(str, yearId) + if err != nil { + return err + } + } else if monthId != -1 && yearId == -1 { + ym._type = QUA_MO + ym.leadScale, err = ym.getLeadPrec(str, monthId) + if err != nil { + return err + } + } else { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + if yearId == -1 || monthId == -1 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + ym._type = QUA_YM + ym.leadScale, err = ym.getLeadPrec(str, yearId) + if err != nil { + return err + } + } + + ym.scaleForSvr = (int(ym._type) << 8) + (ym.leadScale << 4) + timeVals, err := ym.getTimeValue(ret[1], int(ym._type)) + if err != nil { + return err + } + ym.years = timeVals[0] + ym.months = timeVals[1] + return ym.checkScale(ym.leadScale) +} + +func (ym *DmIntervalYM) getLeadPrec(str string, startIndex int) (int, error) { + if ym.isLeadScaleSet { + return ym.leadScale, nil + } + + leftBtId := strings.Index(str[startIndex:], "(") + rightBtId := strings.Index(str[startIndex:], ")") + leadPrec := 0 + + if rightBtId == -1 && leftBtId == -1 { + leftBtId += startIndex + rightBtId += startIndex + l := strings.Index(str, "'") + var r int + var dataStr string + if l != -1 { + r = strings.Index(str[l+1:], "'") + if r != -1 { + r += l + 1 + } + } else { + r = -1 + } + + if r != -1 { + dataStr = strings.TrimSpace(str[l+1 : r]) + } else { + dataStr = "" + } + + if dataStr != "" { + sign := dataStr[0] + if sign == '+' || sign == '-' { + dataStr = strings.TrimSpace(dataStr[1:]) + } + end := strings.Index(dataStr, "-") + + if end != -1 { + dataStr = dataStr[:end] + } + + leadPrec = len(dataStr) + } else { + leadPrec = 2 + } + } else if rightBtId != -1 && leftBtId != -1 && rightBtId > leftBtId+1 { + leftBtId += startIndex + rightBtId += startIndex + strPrec := strings.TrimSpace(str[leftBtId+1 : rightBtId]) + temp, err := strconv.ParseInt(strPrec, 10, 32) + if err != nil { + return 0, err + } + + leadPrec = int(temp) + } else { + return 0, ECGO_INVALID_TIME_INTERVAL.throw() + } + + return leadPrec, nil +} + +func (ym *DmIntervalYM) checkScale(prec int) error { + switch ym._type { + case QUA_Y: + if prec < len(strconv.FormatInt(int64(math.Abs(float64(ym.years))), 10)) { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + case QUA_YM: + if prec < len(strconv.FormatInt(int64(math.Abs(float64(ym.years))), 10)) { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + + if int64(math.Abs(float64(ym.months))) > 11 { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + + case QUA_MO: + if prec < len(strconv.FormatInt(int64(math.Abs(float64(ym.months))), 10)) { + return ECGO_INVALID_TIME_INTERVAL.throw() + } + } + return nil +} + +func (ym *DmIntervalYM) getTimeValue(subStr string, _type int) ([]int, error) { + hasQuate := false + if subStr[0] == '\'' && subStr[len(subStr)-1] == '\'' { + hasQuate = true + subStr = strings.TrimSpace(subStr[1 : len(subStr)-1]) + } + + negative := false + if strings.Index(subStr, "-") == 0 { + negative = true + subStr = subStr[1:] + } else if strings.Index(subStr, "+") == 0 { + negative = false + subStr = subStr[1:] + } + + if subStr[0] == '\'' && subStr[len(subStr)-1] == '\'' { + hasQuate = true + subStr = strings.TrimSpace(subStr[1 : len(subStr)-1]) + } + + if !hasQuate { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + + lastSignIndex := strings.LastIndex(subStr, "-") + + list := make([]string, 2) + if lastSignIndex == -1 || lastSignIndex == 0 { + list[0] = subStr + list[1] = "" + } else { + list[0] = subStr[0:lastSignIndex] + list[1] = subStr[lastSignIndex+1:] + } + + var yearVal, monthVal int64 + var err error + if ym._type == QUA_YM { + yearVal, err = strconv.ParseInt(list[0], 10, 32) + if err != nil { + return nil, err + } + + if util.StringUtil.EqualsIgnoreCase(list[1], "") { + monthVal = 0 + } else { + monthVal, err = strconv.ParseInt(list[1], 10, 32) + if err != nil { + return nil, err + } + } + + if negative { + yearVal *= -1 + monthVal *= -1 + } + + if yearVal > int64(math.Pow10(ym.leadScale))-1 || yearVal < 1-int64(math.Pow10(ym.leadScale)) { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else if ym._type == QUA_Y { + yearVal, err = strconv.ParseInt(list[0], 10, 32) + if err != nil { + return nil, err + } + monthVal = 0 + + if negative { + yearVal *= -1 + } + + if yearVal > int64(math.Pow10(ym.leadScale))-1 || yearVal < 1-int64(math.Pow10(ym.leadScale)) { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } else { + yearVal = 0 + monthVal, err = strconv.ParseInt(list[0], 10, 32) + if err != nil { + return nil, err + } + if negative { + monthVal *= -1 + } + + if monthVal > int64(math.Pow10(ym.leadScale))-1 || monthVal < 1-int64(math.Pow10(ym.leadScale)) { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } + + ret := make([]int, 2) + ret[0] = int(yearVal) + ret[1] = int(monthVal) + + return ret, nil +} + +func (ym *DmIntervalYM) encode(scale int) ([]byte, error) { + if scale == 0 { + scale = ym.scaleForSvr + } + year, month := ym.years, ym.months + if err := ym.checkScale(ym.leadScale); err != nil { + return nil, err + } + if scale != ym.scaleForSvr { + convertYM, err := ym.convertTo(scale) + if err != nil { + return nil, err + } + year = convertYM.years + month = convertYM.months + } else { + if err := ym.checkScale(ym.leadScale); err != nil { + return nil, err + } + } + + bytes := make([]byte, 12) + Dm_build_650.Dm_build_666(bytes, 0, int32(year)) + Dm_build_650.Dm_build_666(bytes, 4, int32(month)) + Dm_build_650.Dm_build_666(bytes, 8, int32(scale)) + return bytes, nil +} + +func (ym *DmIntervalYM) convertTo(scale int) (*DmIntervalYM, error) { + destType := (scale & 0x0000FF00) >> 8 + leadPrec := (scale >> 4) & 0x0000000F + totalMonths := ym.years*12 + ym.months + year := 0 + month := 0 + switch destType { + case QUA_Y: + year = totalMonths / 12 + + if totalMonths%12 >= 6 { + year++ + } else if totalMonths%12 <= -6 { + year-- + } + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(year))))) { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + case QUA_YM: + year = totalMonths / 12 + month = totalMonths % 12 + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(year))))) { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + case QUA_MO: + month = totalMonths + if leadPrec < len(strconv.Itoa(int(math.Abs(float64(month))))) { + return nil, ECGO_INVALID_TIME_INTERVAL.throw() + } + } + return &DmIntervalYM{ + _type: byte(destType), + years: year, + months: month, + scaleForSvr: scale, + leadScale: (scale >> 4) & 0x0000000F, + Valid: true, + }, nil +} + +func (ym *DmIntervalYM) checkValid() error { + if !ym.Valid { + return ECGO_IS_NULL.throw() + } + return nil +} + +func (d *DmIntervalYM) GormDataType() string { + return "INTERVAL YEAR TO MONTH" +} diff --git a/vendor/gitee.com/chunanyong/dm/s.go b/vendor/gitee.com/chunanyong/dm/s.go new file mode 100644 index 000000000..cd025f83f --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/s.go @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +type DmResult struct { + filterable + dmStmt *DmStatement + affectedRows int64 + insertId int64 +} + +func newDmResult(bs *DmStatement, execInfo *execRetInfo) *DmResult { + result := DmResult{} + result.resetFilterable(&bs.filterable) + result.dmStmt = bs + result.affectedRows = execInfo.updateCount + result.insertId = execInfo.lastInsertId + result.idGenerator = dmResultIDGenerator + + return &result +} + +/************************************************************* + ** PUBLIC METHODS AND FUNCTIONS + *************************************************************/ +func (r *DmResult) LastInsertId() (int64, error) { + //if err := r.dmStmt.checkClosed(); err != nil { + // return -1, err + //} + if len(r.filterChain.filters) == 0 { + return r.lastInsertId() + } + return r.filterChain.reset().DmResultLastInsertId(r) +} + +func (r *DmResult) RowsAffected() (int64, error) { + //if err := r.dmStmt.checkClosed(); err != nil { + // return -1, err + //} + if len(r.filterChain.filters) == 0 { + return r.rowsAffected() + } + return r.filterChain.reset().DmResultRowsAffected(r) +} + +func (result *DmResult) lastInsertId() (int64, error) { + return result.insertId, nil +} + +func (result *DmResult) rowsAffected() (int64, error) { + return result.affectedRows, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zy.go b/vendor/gitee.com/chunanyong/dm/security/zy.go new file mode 100644 index 000000000..b3ccc3810 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zy.go @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +// This is a mirror of golang.org/x/crypto/internal/subtle. +package security + +import "unsafe" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) && + uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1])) +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zz.go b/vendor/gitee.com/chunanyong/dm/security/zz.go new file mode 100644 index 000000000..45b2c1a02 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zz.go @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +type Cipher interface { + Encrypt(plaintext []byte, genDigest bool) []byte + Decrypt(ciphertext []byte, checkDigest bool) ([]byte, error) +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zza.go b/vendor/gitee.com/chunanyong/dm/security/zza.go new file mode 100644 index 000000000..92062ced6 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zza.go @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import ( + "crypto/rand" + "errors" + "io" + "math/big" +) + +type dhGroup struct { + p *big.Int + g *big.Int +} + +func newDhGroup(prime, generator *big.Int) *dhGroup { + return &dhGroup{ + p: prime, + g: generator, + } +} + +func (dg *dhGroup) P() *big.Int { + p := new(big.Int) + p.Set(dg.p) + return p +} + +func (dg *dhGroup) G() *big.Int { + g := new(big.Int) + g.Set(dg.g) + return g +} + +// 生成本地公私钥 +func (dg *dhGroup) GeneratePrivateKey(randReader io.Reader) (key *DhKey, err error) { + if randReader == nil { + randReader = rand.Reader + } + // 0 < x < p + x, err := rand.Int(randReader, dg.p) + if err != nil { + return + } + zero := big.NewInt(0) + for x.Cmp(zero) == 0 { + x, err = rand.Int(randReader, dg.p) + if err != nil { + return + } + } + key = new(DhKey) + key.x = x + + // y = g ^ x mod p + key.y = new(big.Int).Exp(dg.g, x, dg.p) + key.group = dg + return +} + +func (dg *dhGroup) ComputeKey(pubkey *DhKey, privkey *DhKey) (kye *DhKey, err error) { + if dg.p == nil { + err = errors.New("DH: invalid group") + return + } + if pubkey.y == nil { + err = errors.New("DH: invalid public key") + return + } + if pubkey.y.Sign() <= 0 || pubkey.y.Cmp(dg.p) >= 0 { + err = errors.New("DH parameter out of bounds") + return + } + if privkey.x == nil { + err = errors.New("DH: invalid private key") + return + } + k := new(big.Int).Exp(pubkey.y, privkey.x, dg.p) + key := new(DhKey) + key.y = k + key.group = dg + return +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzb.go b/vendor/gitee.com/chunanyong/dm/security/zzb.go new file mode 100644 index 000000000..f9af99448 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzb.go @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import "math/big" + +type DhKey struct { + x *big.Int + y *big.Int + group *dhGroup +} + +func newPublicKey(s []byte) *DhKey { + key := new(DhKey) + key.y = new(big.Int).SetBytes(s) + return key +} + +func (dk *DhKey) GetX() *big.Int { + x := new(big.Int) + x.Set(dk.x) + return x +} + +func (dk *DhKey) GetY() *big.Int { + y := new(big.Int) + y.Set(dk.y) + return y +} + +func (dk *DhKey) GetYBytes() []byte { + if dk.y == nil { + return nil + } + if dk.group != nil { + blen := (dk.group.p.BitLen() + 7) / 8 + ret := make([]byte, blen) + copyWithLeftPad(ret, dk.y.Bytes()) + return ret + } + return dk.y.Bytes() +} + +func (dk *DhKey) GetYString() string { + if dk.y == nil { + return "" + } + return dk.y.String() +} + +func (dk *DhKey) IsPrivateKey() bool { + return dk.x != nil +} + +func copyWithLeftPad(dest, src []byte) { + numPaddingBytes := len(dest) - len(src) + for i := 0; i < numPaddingBytes; i++ { + dest[i] = 0 + } + copy(dest[:numPaddingBytes], src) +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzc.go b/vendor/gitee.com/chunanyong/dm/security/zzc.go new file mode 100644 index 000000000..ee09356a9 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzc.go @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +// go官方没有实现ecb加密模式 +package security + +import ( + "crypto/cipher" +) + +type ecb struct { + b cipher.Block + blockSize int +} + +func newECB(b cipher.Block) *ecb { + return &ecb{ + b: b, + blockSize: b.BlockSize(), + } +} + +type ecbEncrypter ecb + +func NewECBEncrypter(b cipher.Block) cipher.BlockMode { + return (*ecbEncrypter)(newECB(b)) +} + +func (x *ecbEncrypter) BlockSize() int { return x.blockSize } + +func (x *ecbEncrypter) CryptBlocks(dst, src []byte) { + if len(src)%x.blockSize != 0 { + panic("dm/security: input not full blocks") + } + if len(dst) < len(src) { + panic("dm/security: output smaller than input") + } + if InexactOverlap(dst[:len(src)], src) { + panic("dm/security: invalid buffer overlap") + } + for bs, be := 0, x.blockSize; bs < len(src); bs, be = bs+x.blockSize, be+x.blockSize { + x.b.Encrypt(dst[bs:be], src[bs:be]) + } +} + +type ecbDecrypter ecb + +func NewECBDecrypter(b cipher.Block) cipher.BlockMode { + return (*ecbDecrypter)(newECB(b)) +} + +func (x *ecbDecrypter) BlockSize() int { return x.blockSize } + +func (x *ecbDecrypter) CryptBlocks(dst, src []byte) { + if len(src)%x.blockSize != 0 { + panic("dm/security: input not full blocks") + } + if len(dst) < len(src) { + panic("dm/security: output smaller than input") + } + if InexactOverlap(dst[:len(src)], src) { + panic("dm/security: invalid buffer overlap") + } + for bs, be := 0, x.blockSize; bs < len(src); bs, be = bs+x.blockSize, be+x.blockSize { + x.b.Decrypt(dst[bs:be], src[bs:be]) + } +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzd.go b/vendor/gitee.com/chunanyong/dm/security/zzd.go new file mode 100644 index 000000000..bedbc54e9 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzd.go @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import ( + "math/big" +) + +const ( + DH_KEY_LENGTH int = 64 + /* 低7位用于保存分组加密算法中的工作模式 */ + WORK_MODE_MASK int = 0x007f + ECB_MODE int = 0x1 + CBC_MODE int = 0x2 + CFB_MODE int = 0x4 + OFB_MODE int = 0x8 + /* 高位保存加密算法 */ + ALGO_MASK int = 0xff80 + DES int = 0x0080 + DES3 int = 0x0100 + AES128 int = 0x0200 + AES192 int = 0x0400 + AES256 int = 0x0800 + RC4 int = 0x1000 + MD5 int = 0x1100 + + // 用户名密码加密算法 + DES_CFB int = 132 + // 消息加密摘要长度 + MD5_DIGEST_SIZE int = 16 + + MIN_EXTERNAL_CIPHER_ID int = 5000 +) + +var dhParaP = "C009D877BAF5FAF416B7F778E6115DCB90D65217DCC2F08A9DFCB5A192C593EBAB02929266B8DBFC2021039FDBD4B7FDE2B996E00008F57AE6EFB4ED3F17B6D3" +var dhParaG = "5" +var defaultIV = []byte{0x20, 0x21, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, + 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x20} +var p *big.Int +var g *big.Int + +func NewClientKeyPair() (key *DhKey, err error) { + p, _ = new(big.Int).SetString(dhParaP, 16) + g, _ = new(big.Int).SetString(dhParaG, 16) + dhGroup := newDhGroup(p, g) + key, err = dhGroup.GeneratePrivateKey(nil) + if err != nil { + return nil, err + } + return key, nil +} + +func ComputeSessionKey(clientPrivKey *DhKey, serverPubKey []byte) []byte { + serverKeyX := bytes2Bn(serverPubKey) + clientPrivKeyX := clientPrivKey.GetX() + sessionKeyBN := serverKeyX.Exp(serverKeyX, clientPrivKeyX, p) + return Bn2Bytes(sessionKeyBN, 0) +} + +func bytes2Bn(bnBytesSrc []byte) *big.Int { + if bnBytesSrc == nil { + return nil + } + if bnBytesSrc[0] == 0 { + return new(big.Int).SetBytes(bnBytesSrc) + } + validBytesCount := len(bnBytesSrc) + 1 + bnBytesTo := make([]byte, validBytesCount) + bnBytesTo[0] = 0 + copy(bnBytesTo[1:validBytesCount], bnBytesSrc) + return new(big.Int).SetBytes(bnBytesTo) +} + +func Bn2Bytes(bn *big.Int, bnLen int) []byte { + var bnBytesSrc, bnBytesTemp, bnBytesTo []byte + var leading_zero_count int + validBytesCount := 0 + if bn == nil { + return nil + } + bnBytesSrc = bn.Bytes() + + // 去除首位0 + if bnBytesSrc[0] != 0 { + bnBytesTemp = bnBytesSrc + validBytesCount = len(bnBytesTemp) + } else { + validBytesCount = len(bnBytesSrc) - 1 + bnBytesTemp = make([]byte, validBytesCount) + copy(bnBytesTemp, bnBytesSrc[1:validBytesCount+1]) + } + + if bnLen == 0 { + leading_zero_count = 0 + } else { + leading_zero_count = bnLen - validBytesCount + } + // 如果位数不足DH_KEY_LENGTH则在前面补0 + if leading_zero_count > 0 { + bnBytesTo = make([]byte, DH_KEY_LENGTH) + i := 0 + for i = 0; i < leading_zero_count; i++ { + bnBytesTo[i] = 0 + } + copy(bnBytesTo[i:i+validBytesCount], bnBytesTemp) + } else { + bnBytesTo = bnBytesTemp + } + return bnBytesTo +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zze.go b/vendor/gitee.com/chunanyong/dm/security/zze.go new file mode 100644 index 000000000..ca33e1e77 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zze.go @@ -0,0 +1,211 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import ( + "bytes" + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/md5" + "crypto/rc4" + "errors" + "reflect" +) + +type SymmCipher struct { + encryptCipher interface{} //cipher.BlockMode | cipher.Stream + decryptCipher interface{} //cipher.BlockMode | cipher.Stream + key []byte + block cipher.Block // 分组加密算法 + algorithmType int + workMode int + needPadding bool +} + +func NewSymmCipher(algorithmID int, key []byte) (SymmCipher, error) { + var sc SymmCipher + var err error + sc.key = key + sc.algorithmType = algorithmID & ALGO_MASK + sc.workMode = algorithmID & WORK_MODE_MASK + switch sc.algorithmType { + case AES128: + if sc.block, err = aes.NewCipher(key[:16]); err != nil { + return sc, err + } + case AES192: + if sc.block, err = aes.NewCipher(key[:24]); err != nil { + return sc, err + } + case AES256: + if sc.block, err = aes.NewCipher(key[:32]); err != nil { + return sc, err + } + case DES: + if sc.block, err = des.NewCipher(key[:8]); err != nil { + return sc, err + } + case DES3: + var tripleDESKey []byte + tripleDESKey = append(tripleDESKey, key[:16]...) + tripleDESKey = append(tripleDESKey, key[:8]...) + if sc.block, err = des.NewTripleDESCipher(tripleDESKey); err != nil { + return sc, err + } + case RC4: + if sc.encryptCipher, err = rc4.NewCipher(key[:16]); err != nil { + return sc, err + } + if sc.decryptCipher, err = rc4.NewCipher(key[:16]); err != nil { + return sc, err + } + return sc, nil + default: + return sc, errors.New("invalidCipher") + } + blockSize := sc.block.BlockSize() + if sc.encryptCipher, err = sc.getEncrypter(sc.workMode, sc.block, defaultIV[:blockSize]); err != nil { + return sc, err + } + if sc.decryptCipher, err = sc.getDecrypter(sc.workMode, sc.block, defaultIV[:blockSize]); err != nil { + return sc, err + } + return sc, nil +} + +func (sc SymmCipher) Encrypt(plaintext []byte, genDigest bool) []byte { + // 执行过加密后,IV值变了,需要重新初始化encryptCipher对象(因为没有类似resetIV的方法) + if sc.algorithmType != RC4 { + sc.encryptCipher, _ = sc.getEncrypter(sc.workMode, sc.block, defaultIV[:sc.block.BlockSize()]) + } else { + sc.encryptCipher, _ = rc4.NewCipher(sc.key[:16]) + } + // 填充 + var paddingtext = make([]byte, len(plaintext)) + copy(paddingtext, plaintext) + if sc.needPadding { + paddingtext = pkcs5Padding(paddingtext) + } + + ret := make([]byte, len(paddingtext)) + + if v, ok := sc.encryptCipher.(cipher.Stream); ok { + v.XORKeyStream(ret, paddingtext) + } else if v, ok := sc.encryptCipher.(cipher.BlockMode); ok { + v.CryptBlocks(ret, paddingtext) + } + + // md5摘要 + if genDigest { + digest := md5.Sum(plaintext) + encrypt := ret + ret = make([]byte, len(encrypt)+len(digest)) + copy(ret[:len(encrypt)], encrypt) + copy(ret[len(encrypt):], digest[:]) + } + return ret +} + +func (sc SymmCipher) Decrypt(ciphertext []byte, checkDigest bool) ([]byte, error) { + // 执行过解密后,IV值变了,需要重新初始化decryptCipher对象(因为没有类似resetIV的方法) + if sc.algorithmType != RC4 { + sc.decryptCipher, _ = sc.getDecrypter(sc.workMode, sc.block, defaultIV[:sc.block.BlockSize()]) + } else { + sc.decryptCipher, _ = rc4.NewCipher(sc.key[:16]) + } + var ret []byte + if checkDigest { + var digest = ciphertext[len(ciphertext)-MD5_DIGEST_SIZE:] + ret = ciphertext[:len(ciphertext)-MD5_DIGEST_SIZE] + ret = sc.decrypt(ret) + var msgDigest = md5.Sum(ret) + if !reflect.DeepEqual(msgDigest[:], digest) { + return nil, errors.New("Decrypt failed/Digest not match\n") + } + } else { + ret = sc.decrypt(ciphertext) + } + return ret, nil +} + +func (sc SymmCipher) decrypt(ciphertext []byte) []byte { + ret := make([]byte, len(ciphertext)) + if v, ok := sc.decryptCipher.(cipher.Stream); ok { + v.XORKeyStream(ret, ciphertext) + } else if v, ok := sc.decryptCipher.(cipher.BlockMode); ok { + v.CryptBlocks(ret, ciphertext) + } + // 去除填充 + if sc.needPadding { + ret = pkcs5UnPadding(ret) + } + return ret +} + +func (sc *SymmCipher) getEncrypter(workMode int, block cipher.Block, iv []byte) (ret interface{}, err error) { + switch workMode { + case ECB_MODE: + ret = NewECBEncrypter(block) + sc.needPadding = true + case CBC_MODE: + ret = cipher.NewCBCEncrypter(block, iv) + sc.needPadding = true + case CFB_MODE: + ret = cipher.NewCFBEncrypter(block, iv) + sc.needPadding = false + case OFB_MODE: + ret = cipher.NewOFB(block, iv) + sc.needPadding = false + default: + err = errors.New("invalidCipherMode") + } + return +} + +func (sc *SymmCipher) getDecrypter(workMode int, block cipher.Block, iv []byte) (ret interface{}, err error) { + switch workMode { + case ECB_MODE: + ret = NewECBDecrypter(block) + sc.needPadding = true + case CBC_MODE: + ret = cipher.NewCBCDecrypter(block, iv) + sc.needPadding = true + case CFB_MODE: + ret = cipher.NewCFBDecrypter(block, iv) + sc.needPadding = false + case OFB_MODE: + ret = cipher.NewOFB(block, iv) + sc.needPadding = false + default: + err = errors.New("invalidCipherMode") + } + return +} + +// 补码 +func pkcs77Padding(ciphertext []byte, blocksize int) []byte { + padding := blocksize - len(ciphertext)%blocksize + padtext := bytes.Repeat([]byte{byte(padding)}, padding) + return append(ciphertext, padtext...) +} + +// 去码 +func pkcs7UnPadding(origData []byte) []byte { + length := len(origData) + unpadding := int(origData[length-1]) + return origData[:length-unpadding] +} + +// 补码 +func pkcs5Padding(ciphertext []byte) []byte { + return pkcs77Padding(ciphertext, 8) +} + +// 去码 +func pkcs5UnPadding(ciphertext []byte) []byte { + return pkcs7UnPadding(ciphertext) +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzf.go b/vendor/gitee.com/chunanyong/dm/security/zzf.go new file mode 100644 index 000000000..d002c65dc --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzf.go @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import ( + "crypto/md5" + "errors" + "fmt" + "reflect" + "unsafe" +) + +type ThirdPartCipher struct { + encryptType int // 外部加密算法id + encryptName string // 外部加密算法名称 + hashType int + key []byte + cipherCount int // 外部加密算法个数 + //innerId int // 外部加密算法内部id + blockSize int // 分组块大小 + khSize int // key/hash大小 +} + +func NewThirdPartCipher(encryptType int, key []byte, cipherPath string, hashType int) (ThirdPartCipher, error) { + var tpc = ThirdPartCipher{ + encryptType: encryptType, + key: key, + hashType: hashType, + cipherCount: -1, + } + var err error + err = initThirdPartCipher(cipherPath) + if err != nil { + return tpc, err + } + tpc.getCount() + if err = tpc.getInfo(); err != nil { + return tpc, err + } + return tpc, nil +} + +func (tpc *ThirdPartCipher) getCount() int { + if tpc.cipherCount == -1 { + tpc.cipherCount = cipherGetCount() + } + return tpc.cipherCount +} + +func (tpc *ThirdPartCipher) getInfo() error { + var cipher_id, ty, blk_size, kh_size int + //var strptr, _ = syscall.UTF16PtrFromString(tpc.encryptName) + var strptr *uint16 = new(uint16) + for i := 1; i <= tpc.getCount(); i++ { + cipherGetInfo(uintptr(i), uintptr(unsafe.Pointer(&cipher_id)), uintptr(unsafe.Pointer(&strptr)), + uintptr(unsafe.Pointer(&ty)), uintptr(unsafe.Pointer(&blk_size)), uintptr(unsafe.Pointer(&kh_size))) + if tpc.encryptType == cipher_id { + tpc.blockSize = blk_size + tpc.khSize = kh_size + tpc.encryptName = string(uintptr2bytes(uintptr(unsafe.Pointer(strptr)))) + return nil + } + } + return fmt.Errorf("ThirdPartyCipher: cipher id:%d not found", tpc.encryptType) +} + +func (tpc ThirdPartCipher) Encrypt(plaintext []byte, genDigest bool) []byte { + var tmp_para uintptr + cipherEncryptInit(uintptr(tpc.encryptType), uintptr(unsafe.Pointer(&tpc.key[0])), uintptr(len(tpc.key)), tmp_para) + + ciphertextLen := cipherGetCipherTextSize(uintptr(tpc.encryptType), tmp_para, uintptr(len(plaintext))) + + ciphertext := make([]byte, ciphertextLen) + ret := cipherEncrypt(uintptr(tpc.encryptType), tmp_para, uintptr(unsafe.Pointer(&plaintext[0])), uintptr(len(plaintext)), + uintptr(unsafe.Pointer(&ciphertext[0])), uintptr(len(ciphertext))) + ciphertext = ciphertext[:ret] + + cipherClean(uintptr(tpc.encryptType), tmp_para) + // md5摘要 + if genDigest { + digest := md5.Sum(plaintext) + encrypt := ciphertext + ciphertext = make([]byte, len(encrypt)+len(digest)) + copy(ciphertext[:len(encrypt)], encrypt) + copy(ciphertext[len(encrypt):], digest[:]) + } + return ciphertext +} + +func (tpc ThirdPartCipher) Decrypt(ciphertext []byte, checkDigest bool) ([]byte, error) { + var ret []byte + if checkDigest { + var digest = ciphertext[len(ciphertext)-MD5_DIGEST_SIZE:] + ret = ciphertext[:len(ciphertext)-MD5_DIGEST_SIZE] + ret = tpc.decrypt(ret) + var msgDigest = md5.Sum(ret) + if !reflect.DeepEqual(msgDigest[:], digest) { + return nil, errors.New("Decrypt failed/Digest not match\n") + } + } else { + ret = tpc.decrypt(ciphertext) + } + return ret, nil +} + +func (tpc ThirdPartCipher) decrypt(ciphertext []byte) []byte { + var tmp_para uintptr + + cipherDecryptInit(uintptr(tpc.encryptType), uintptr(unsafe.Pointer(&tpc.key[0])), uintptr(len(tpc.key)), tmp_para) + + plaintext := make([]byte, len(ciphertext)) + ret := cipherDecrypt(uintptr(tpc.encryptType), tmp_para, uintptr(unsafe.Pointer(&ciphertext[0])), uintptr(len(ciphertext)), + uintptr(unsafe.Pointer(&plaintext[0])), uintptr(len(plaintext))) + plaintext = plaintext[:ret] + + cipherClean(uintptr(tpc.encryptType), tmp_para) + return plaintext +} + +func addBufSize(buf []byte, newCap int) []byte { + newBuf := make([]byte, newCap) + copy(newBuf, buf) + return newBuf +} + +func uintptr2bytes(p uintptr) []byte { + buf := make([]byte, 64) + i := 0 + for b := (*byte)(unsafe.Pointer(p)); *b != 0; i++ { + if i > cap(buf) { + buf = addBufSize(buf, i*2) + } + buf[i] = *b + // byte占1字节 + p++ + b = (*byte)(unsafe.Pointer(p)) + } + return buf[:i] +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzg_darwin.go b/vendor/gitee.com/chunanyong/dm/security/zzg_darwin.go new file mode 100644 index 000000000..835002eda --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzg_darwin.go @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import "plugin" + +var ( + dmCipherEncryptSo *plugin.Plugin + cipherGetCountProc plugin.Symbol + cipherGetInfoProc plugin.Symbol + cipherEncryptInitProc plugin.Symbol + cipherGetCipherTextSizeProc plugin.Symbol + cipherEncryptProc plugin.Symbol + cipherCleanupProc plugin.Symbol + cipherDecryptInitProc plugin.Symbol + cipherDecryptProc plugin.Symbol +) + +func initThirdPartCipher(cipherPath string) (err error) { + if dmCipherEncryptSo, err = plugin.Open(cipherPath); err != nil { + return err + } + if cipherGetCountProc, err = dmCipherEncryptSo.Lookup("cipher_get_count"); err != nil { + return err + } + if cipherGetInfoProc, err = dmCipherEncryptSo.Lookup("cipher_get_info"); err != nil { + return err + } + if cipherEncryptInitProc, err = dmCipherEncryptSo.Lookup("cipher_encrypt_init"); err != nil { + return err + } + if cipherGetCipherTextSizeProc, err = dmCipherEncryptSo.Lookup("cipher_get_cipher_text_size"); err != nil { + return err + } + if cipherEncryptProc, err = dmCipherEncryptSo.Lookup("cipher_encrypt"); err != nil { + return err + } + if cipherCleanupProc, err = dmCipherEncryptSo.Lookup("cipher_cleanup"); err != nil { + return err + } + if cipherDecryptInitProc, err = dmCipherEncryptSo.Lookup("cipher_decrypt_init"); err != nil { + return err + } + if cipherDecryptProc, err = dmCipherEncryptSo.Lookup("cipher_decrypt"); err != nil { + return err + } + return nil +} + +func cipherGetCount() int { + ret := cipherGetCountProc.(func() interface{})() + return ret.(int) +} + +func cipherGetInfo(seqno, cipherId, cipherName, _type, blkSize, khSIze uintptr) { + ret := cipherGetInfoProc.(func(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) interface{})(seqno, cipherId, cipherName, _type, blkSize, khSIze) + if ret.(int) == 0 { + panic("ThirdPartyCipher: call cipher_get_info failed") + } +} + +func cipherEncryptInit(cipherId, key, keySize, cipherPara uintptr) { + ret := cipherEncryptInitProc.(func(uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, key, keySize, cipherPara) + if ret.(int) == 0 { + panic("ThirdPartyCipher: call cipher_encrypt_init failed") + } +} + +func cipherGetCipherTextSize(cipherId, cipherPara, plainTextSize uintptr) uintptr { + ciphertextLen := cipherGetCipherTextSizeProc.(func(uintptr, uintptr, uintptr) interface{})(cipherId, cipherPara, plainTextSize) + return ciphertextLen.(uintptr) +} + +func cipherEncrypt(cipherId, cipherPara, plainText, plainTextSize, cipherText, cipherTextBufSize uintptr) uintptr { + ret := cipherEncryptProc.(func(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, cipherPara, plainText, plainTextSize, cipherText, cipherTextBufSize) + return ret.(uintptr) +} + +func cipherClean(cipherId, cipherPara uintptr) { + cipherEncryptProc.(func(uintptr, uintptr))(cipherId, cipherPara) +} + +func cipherDecryptInit(cipherId, key, keySize, cipherPara uintptr) { + ret := cipherDecryptInitProc.(func(uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, key, keySize, cipherPara) + if ret.(int) == 0 { + panic("ThirdPartyCipher: call cipher_decrypt_init failed") + } +} + +func cipherDecrypt(cipherId, cipherPara, cipherText, cipherTextSize, plainText, plainTextBufSize uintptr) uintptr { + ret := cipherDecryptProc.(func(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, cipherPara, cipherText, cipherTextSize, plainText, plainTextBufSize) + return ret.(uintptr) +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzg_linux.go b/vendor/gitee.com/chunanyong/dm/security/zzg_linux.go new file mode 100644 index 000000000..835002eda --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzg_linux.go @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import "plugin" + +var ( + dmCipherEncryptSo *plugin.Plugin + cipherGetCountProc plugin.Symbol + cipherGetInfoProc plugin.Symbol + cipherEncryptInitProc plugin.Symbol + cipherGetCipherTextSizeProc plugin.Symbol + cipherEncryptProc plugin.Symbol + cipherCleanupProc plugin.Symbol + cipherDecryptInitProc plugin.Symbol + cipherDecryptProc plugin.Symbol +) + +func initThirdPartCipher(cipherPath string) (err error) { + if dmCipherEncryptSo, err = plugin.Open(cipherPath); err != nil { + return err + } + if cipherGetCountProc, err = dmCipherEncryptSo.Lookup("cipher_get_count"); err != nil { + return err + } + if cipherGetInfoProc, err = dmCipherEncryptSo.Lookup("cipher_get_info"); err != nil { + return err + } + if cipherEncryptInitProc, err = dmCipherEncryptSo.Lookup("cipher_encrypt_init"); err != nil { + return err + } + if cipherGetCipherTextSizeProc, err = dmCipherEncryptSo.Lookup("cipher_get_cipher_text_size"); err != nil { + return err + } + if cipherEncryptProc, err = dmCipherEncryptSo.Lookup("cipher_encrypt"); err != nil { + return err + } + if cipherCleanupProc, err = dmCipherEncryptSo.Lookup("cipher_cleanup"); err != nil { + return err + } + if cipherDecryptInitProc, err = dmCipherEncryptSo.Lookup("cipher_decrypt_init"); err != nil { + return err + } + if cipherDecryptProc, err = dmCipherEncryptSo.Lookup("cipher_decrypt"); err != nil { + return err + } + return nil +} + +func cipherGetCount() int { + ret := cipherGetCountProc.(func() interface{})() + return ret.(int) +} + +func cipherGetInfo(seqno, cipherId, cipherName, _type, blkSize, khSIze uintptr) { + ret := cipherGetInfoProc.(func(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) interface{})(seqno, cipherId, cipherName, _type, blkSize, khSIze) + if ret.(int) == 0 { + panic("ThirdPartyCipher: call cipher_get_info failed") + } +} + +func cipherEncryptInit(cipherId, key, keySize, cipherPara uintptr) { + ret := cipherEncryptInitProc.(func(uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, key, keySize, cipherPara) + if ret.(int) == 0 { + panic("ThirdPartyCipher: call cipher_encrypt_init failed") + } +} + +func cipherGetCipherTextSize(cipherId, cipherPara, plainTextSize uintptr) uintptr { + ciphertextLen := cipherGetCipherTextSizeProc.(func(uintptr, uintptr, uintptr) interface{})(cipherId, cipherPara, plainTextSize) + return ciphertextLen.(uintptr) +} + +func cipherEncrypt(cipherId, cipherPara, plainText, plainTextSize, cipherText, cipherTextBufSize uintptr) uintptr { + ret := cipherEncryptProc.(func(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, cipherPara, plainText, plainTextSize, cipherText, cipherTextBufSize) + return ret.(uintptr) +} + +func cipherClean(cipherId, cipherPara uintptr) { + cipherEncryptProc.(func(uintptr, uintptr))(cipherId, cipherPara) +} + +func cipherDecryptInit(cipherId, key, keySize, cipherPara uintptr) { + ret := cipherDecryptInitProc.(func(uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, key, keySize, cipherPara) + if ret.(int) == 0 { + panic("ThirdPartyCipher: call cipher_decrypt_init failed") + } +} + +func cipherDecrypt(cipherId, cipherPara, cipherText, cipherTextSize, plainText, plainTextBufSize uintptr) uintptr { + ret := cipherDecryptProc.(func(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) interface{})(cipherId, cipherPara, cipherText, cipherTextSize, plainText, plainTextBufSize) + return ret.(uintptr) +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzh_windows.go b/vendor/gitee.com/chunanyong/dm/security/zzh_windows.go new file mode 100644 index 000000000..2fa686199 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzh_windows.go @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import ( + "syscall" +) + +var ( + dmCipherEncryptDLL *syscall.LazyDLL + cipherGetCountProc *syscall.LazyProc + cipherGetInfoProc *syscall.LazyProc + cipherEncryptInitProc *syscall.LazyProc + cipherGetCipherTextSizeProc *syscall.LazyProc + cipherEncryptProc *syscall.LazyProc + cipherCleanupProc *syscall.LazyProc + cipherDecryptInitProc *syscall.LazyProc + cipherDecryptProc *syscall.LazyProc +) + +func initThirdPartCipher(cipherPath string) error { + dmCipherEncryptDLL = syscall.NewLazyDLL(cipherPath) + if err := dmCipherEncryptDLL.Load(); err != nil { + return err + } + cipherGetCountProc = dmCipherEncryptDLL.NewProc("cipher_get_count") + cipherGetInfoProc = dmCipherEncryptDLL.NewProc("cipher_get_info") + cipherEncryptInitProc = dmCipherEncryptDLL.NewProc("cipher_encrypt_init") + cipherGetCipherTextSizeProc = dmCipherEncryptDLL.NewProc("cipher_get_cipher_text_size") + cipherEncryptProc = dmCipherEncryptDLL.NewProc("cipher_encrypt") + cipherCleanupProc = dmCipherEncryptDLL.NewProc("cipher_cleanup") + cipherDecryptInitProc = dmCipherEncryptDLL.NewProc("cipher_decrypt_init") + cipherDecryptProc = dmCipherEncryptDLL.NewProc("cipher_decrypt") + return nil +} + +func cipherGetCount() int { + ret, _, _ := cipherGetCountProc.Call() + return int(ret) +} + +func cipherGetInfo(seqno, cipherId, cipherName, _type, blkSize, khSIze uintptr) { + ret, _, _ := cipherGetInfoProc.Call(seqno, cipherId, cipherName, _type, blkSize, khSIze) + if ret == 0 { + panic("ThirdPartyCipher: call cipher_get_info failed") + } +} + +func cipherEncryptInit(cipherId, key, keySize, cipherPara uintptr) { + ret, _, _ := cipherEncryptInitProc.Call(cipherId, key, keySize, cipherPara) + if ret == 0 { + panic("ThirdPartyCipher: call cipher_encrypt_init failed") + } +} + +func cipherGetCipherTextSize(cipherId, cipherPara, plainTextSize uintptr) uintptr { + ciphertextLen, _, _ := cipherGetCipherTextSizeProc.Call(cipherId, cipherPara, plainTextSize) + return ciphertextLen +} + +func cipherEncrypt(cipherId, cipherPara, plainText, plainTextSize, cipherText, cipherTextBufSize uintptr) uintptr { + ret, _, _ := cipherEncryptProc.Call(cipherId, cipherPara, plainText, plainTextSize, cipherText, cipherTextBufSize) + return ret +} + +func cipherClean(cipherId, cipherPara uintptr) { + _, _, _ = cipherCleanupProc.Call(cipherId, cipherPara) +} + +func cipherDecryptInit(cipherId, key, keySize, cipherPara uintptr) { + ret, _, _ := cipherDecryptInitProc.Call(cipherId, key, keySize, cipherPara) + if ret == 0 { + panic("ThirdPartyCipher: call cipher_decrypt_init failed") + } +} + +func cipherDecrypt(cipherId, cipherPara, cipherText, cipherTextSize, plainText, plainTextBufSize uintptr) uintptr { + ret, _, _ := cipherDecryptProc.Call(cipherId, cipherPara, cipherText, cipherTextSize, plainText, plainTextBufSize) + return ret +} diff --git a/vendor/gitee.com/chunanyong/dm/security/zzi.go b/vendor/gitee.com/chunanyong/dm/security/zzi.go new file mode 100644 index 000000000..a68cc9e31 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/security/zzi.go @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package security + +import ( + "crypto/tls" + "errors" + "flag" + "net" + "os" + "sync" +) + +var dmHome = flag.String("DM_HOME", "", "Where DMDB installed") +var flagLock = sync.Mutex{} + +func NewTLSFromTCP(conn net.Conn, sslCertPath string, sslKeyPath string, user string) (*tls.Conn, error) { + if sslCertPath == "" && sslKeyPath == "" { + // 为什么从os.getEnv改为flag? 参照JDBC,它通过System.getProperty()获取命令中的-DDM_HOME=值 + // flag非协程安全,内部存在并发写map的操作 + func () { + flagLock.Lock() + defer flagLock.Unlock() + flag.Parse() + }() + separator := string(os.PathSeparator) + if *dmHome != "" { + sslCertPath = *dmHome + separator + "bin" + separator + "client_ssl" + separator + + user + separator + "client-cert.pem" + sslKeyPath = *dmHome + separator + "bin" + separator + "client_ssl" + separator + + user + separator + "client-key.pem" + } else { + return nil, errors.New("sslCertPath and sslKeyPath can not be empty!") + } + } + cer, err := tls.LoadX509KeyPair(sslCertPath, sslKeyPath) + if err != nil { + return nil, err + } + conf := &tls.Config{ + InsecureSkipVerify: true, + Certificates: []tls.Certificate{cer}, + } + tlsConn := tls.Client(conn, conf) + if err := tlsConn.Handshake(); err != nil { + return nil, err + } + return tlsConn, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/t.go b/vendor/gitee.com/chunanyong/dm/t.go new file mode 100644 index 000000000..c77bb1347 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/t.go @@ -0,0 +1,522 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql/driver" + "io" + "reflect" + "strings" +) + +type DmRows struct { + filterable + CurrentRows *innerRows + finish func() +} + +func (r *DmRows) Columns() []string { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return nil + } + if len(r.filterChain.filters) == 0 { + return r.columns() + } + return r.filterChain.reset().DmRowsColumns(r) +} + +func (r *DmRows) Close() error { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return err + } + if len(r.filterChain.filters) == 0 { + return r.close() + } + return r.filterChain.reset().DmRowsClose(r) +} + +func (r *DmRows) Next(dest []driver.Value) error { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return err + } + if len(r.filterChain.filters) == 0 { + return r.next(dest) + } + return r.filterChain.reset().DmRowsNext(r, dest) +} + +func (r *DmRows) HasNextResultSet() bool { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return false + } + if len(r.filterChain.filters) == 0 { + return r.hasNextResultSet() + } + return r.filterChain.reset().DmRowsHasNextResultSet(r) +} + +func (r *DmRows) NextResultSet() error { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return err + } + if len(r.filterChain.filters) == 0 { + return r.nextResultSet() + } + return r.filterChain.reset().DmRowsNextResultSet(r) +} + +func (r *DmRows) ColumnTypeScanType(index int) reflect.Type { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return nil + } + if len(r.filterChain.filters) == 0 { + return r.columnTypeScanType(index) + } + return r.filterChain.reset().DmRowsColumnTypeScanType(r, index) +} + +func (r *DmRows) ColumnTypeDatabaseTypeName(index int) string { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return "" + } + if len(r.filterChain.filters) == 0 { + return r.columnTypeDatabaseTypeName(index) + } + return r.filterChain.reset().DmRowsColumnTypeDatabaseTypeName(r, index) +} + +func (r *DmRows) ColumnTypeLength(index int) (length int64, ok bool) { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return -1, false + } + if len(r.filterChain.filters) == 0 { + return r.columnTypeLength(index) + } + return r.filterChain.reset().DmRowsColumnTypeLength(r, index) +} + +func (r *DmRows) ColumnTypeNullable(index int) (nullable, ok bool) { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return false, false + } + if len(r.filterChain.filters) == 0 { + return r.columnTypeNullable(index) + } + return r.filterChain.reset().DmRowsColumnTypeNullable(r, index) +} + +func (r *DmRows) ColumnTypePrecisionScale(index int) (precision, scale int64, ok bool) { + if err := r.CurrentRows.dmStmt.checkClosed(); err != nil { + return -1, -1, false + } + if len(r.filterChain.filters) == 0 { + return r.columnTypePrecisionScale(index) + } + return r.filterChain.reset().DmRowsColumnTypePrecisionScale(r, index) +} + +func (dest *DmRows) Scan(src interface{}) error { + switch src := src.(type) { + case nil: + *dest = *new(DmRows) + return nil + case *DmRows: + *dest = *src + return nil + default: + return UNSUPPORTED_SCAN + } +} + +func (rows *DmRows) columns() []string { + return rows.CurrentRows.Columns() +} + +func (rows *DmRows) close() error { + if f := rows.finish; f != nil { + f() + rows.finish = nil + } + return rows.CurrentRows.Close() +} + +func (rows *DmRows) next(dest []driver.Value) error { + return rows.CurrentRows.Next(dest) +} + +func (rows *DmRows) hasNextResultSet() bool { + return rows.CurrentRows.HasNextResultSet() +} + +func (rows *DmRows) nextResultSet() error { + return rows.CurrentRows.NextResultSet() +} + +func (rows *DmRows) columnTypeScanType(index int) reflect.Type { + return rows.CurrentRows.ColumnTypeScanType(index) +} + +func (rows *DmRows) columnTypeDatabaseTypeName(index int) string { + return rows.CurrentRows.ColumnTypeDatabaseTypeName(index) +} + +func (rows *DmRows) columnTypeLength(index int) (length int64, ok bool) { + return rows.CurrentRows.ColumnTypeLength(index) +} + +func (rows *DmRows) columnTypeNullable(index int) (nullable, ok bool) { + return rows.CurrentRows.ColumnTypeNullable(index) +} + +func (rows *DmRows) columnTypePrecisionScale(index int) (precision, scale int64, ok bool) { + return rows.CurrentRows.ColumnTypePrecisionScale(index) +} + +type innerRows struct { + dmStmt *DmStatement + + id int16 + + columns []column + + datas [][][]byte + + datasOffset int + + datasStartPos int64 + + currentPos int64 + + totalRowCount int64 + + fetchSize int + + sizeOfRow int + + isBdta bool + + nextExecInfo *execRetInfo + + next *innerRows + + dmRows *DmRows + + closed bool +} + +func (innerRows *innerRows) checkClosed() error { + if innerRows.closed { + return ECGO_RESULTSET_CLOSED.throw() + } + return nil +} + +func (innerRows *innerRows) Columns() []string { + if err := innerRows.checkClosed(); err != nil { + return nil + } + + columnNames := make([]string, len(innerRows.columns)) + nameCase := innerRows.dmStmt.dmConn.dmConnector.columnNameCase + + for i, column := range innerRows.columns { + if nameCase == COLUMN_NAME_NATURAL_CASE { + columnNames[i] = column.name + } else if nameCase == COLUMN_NAME_UPPER_CASE { + columnNames[i] = strings.ToUpper(column.name) + } else if nameCase == COLUMN_NAME_LOWER_CASE { + columnNames[i] = strings.ToLower(column.name) + } else { + columnNames[i] = column.name + } + } + + return columnNames +} + +func (innerRows *innerRows) Close() error { + if innerRows.closed { + return nil + } + + innerRows.closed = true + + if innerRows.dmStmt.innerUsed { + innerRows.dmStmt.close() + } else { + delete(innerRows.dmStmt.rsMap, innerRows.id) + } + + innerRows.dmStmt = nil + + return nil +} + +func (innerRows *innerRows) Next(dest []driver.Value) error { + err := innerRows.checkClosed() + if err != nil { + return err + } + + if innerRows.totalRowCount == 0 || innerRows.currentPos >= innerRows.totalRowCount { + return io.EOF + } + + if innerRows.currentPos+1 == innerRows.totalRowCount { + innerRows.currentPos++ + innerRows.datasOffset++ + return io.EOF + } + + if innerRows.currentPos+1 < innerRows.datasStartPos || innerRows.currentPos+1 >= innerRows.datasStartPos+int64(len(innerRows.datas)) { + if innerRows.fetchData(innerRows.currentPos + 1) { + innerRows.currentPos++ + err := innerRows.getRowData(dest) + if err != nil { + return err + } + } else { + innerRows.currentPos++ + innerRows.datasOffset++ + return io.EOF + } + } else { + innerRows.currentPos++ + innerRows.datasOffset++ + err := innerRows.getRowData(dest) + if err != nil { + return err + } + } + + return nil +} + +func (innerRows *innerRows) HasNextResultSet() bool { + err := innerRows.checkClosed() + if err != nil { + return false + } + + if innerRows.nextExecInfo != nil { + return innerRows.nextExecInfo.hasResultSet + } + + innerRows.nextExecInfo, err = innerRows.dmStmt.dmConn.Access.Dm_build_1466(innerRows.dmStmt, 0) + if err != nil { + return false + } + + if innerRows.nextExecInfo.hasResultSet { + innerRows.next = newInnerRows(innerRows.id+1, innerRows.dmStmt, innerRows.nextExecInfo) + return true + } + + return false +} + +func (innerRows *innerRows) NextResultSet() error { + err := innerRows.checkClosed() + if err != nil { + return err + } + + if innerRows.nextExecInfo == nil { + innerRows.HasNextResultSet() + } + + if innerRows.next == nil { + return io.EOF + } + + innerRows.next.dmRows = innerRows.dmRows + innerRows.dmRows.CurrentRows = innerRows.next + return nil +} + +func (innerRows *innerRows) ColumnTypeScanType(index int) reflect.Type { + if err := innerRows.checkClosed(); err != nil { + return nil + } + if column := innerRows.checkIndex(index); column != nil { + return column.ScanType() + } + return nil +} + +func (innerRows *innerRows) ColumnTypeDatabaseTypeName(index int) string { + if err := innerRows.checkClosed(); err != nil { + return "" + } + if column := innerRows.checkIndex(index); column != nil { + return column.typeName + } + return "" +} + +func (innerRows *innerRows) ColumnTypeLength(index int) (length int64, ok bool) { + if err := innerRows.checkClosed(); err != nil { + return 0, false + } + if column := innerRows.checkIndex(index); column != nil { + return column.Length() + } + return 0, false +} + +func (innerRows *innerRows) ColumnTypeNullable(index int) (nullable, ok bool) { + if err := innerRows.checkClosed(); err != nil { + return false, false + } + if column := innerRows.checkIndex(index); column != nil { + return column.nullable, true + } + return false, false +} + +func (innerRows *innerRows) ColumnTypePrecisionScale(index int) (precision, scale int64, ok bool) { + if err := innerRows.checkClosed(); err != nil { + return 0, 0, false + } + if column := innerRows.checkIndex(index); column != nil { + return column.PrecisionScale() + } + return 0, 0, false +} + +func newDmRows(currentRows *innerRows) *DmRows { + dr := new(DmRows) + dr.resetFilterable(¤tRows.dmStmt.filterable) + dr.CurrentRows = currentRows + dr.idGenerator = dmRowsIDGenerator + currentRows.dmRows = dr + return dr +} + +func newInnerRows(id int16, stmt *DmStatement, execInfo *execRetInfo) *innerRows { + rows := new(innerRows) + rows.id = id + rows.dmStmt = stmt + rows.columns = stmt.columns + rows.datas = execInfo.rsDatas + rows.totalRowCount = execInfo.updateCount + rows.isBdta = execInfo.rsBdta + rows.fetchSize = stmt.fetchSize + + if len(execInfo.rsDatas) == 0 { + rows.sizeOfRow = 0 + } else { + rows.sizeOfRow = execInfo.rsSizeof / len(execInfo.rsDatas) + } + + rows.currentPos = -1 + rows.datasOffset = -1 + rows.datasStartPos = 0 + + rows.nextExecInfo = nil + rows.next = nil + + if rows.dmStmt.rsMap != nil { + rows.dmStmt.rsMap[rows.id] = rows + } + + if stmt.dmConn.dmConnector.enRsCache && execInfo.rsCacheOffset > 0 && + int64(len(execInfo.rsDatas)) == execInfo.updateCount { + rp.put(stmt, stmt.nativeSql, execInfo) + } + + return rows +} + +func newLocalInnerRows(stmt *DmStatement, columns []column, rsDatas [][][]byte) *innerRows { + rows := new(innerRows) + rows.id = 0 + rows.dmStmt = stmt + rows.fetchSize = stmt.fetchSize + + if columns == nil { + rows.columns = make([]column, 0) + } else { + rows.columns = columns + } + + if rsDatas == nil { + rows.datas = make([][][]byte, 0) + rows.totalRowCount = 0 + } else { + rows.datas = rsDatas + rows.totalRowCount = int64(len(rsDatas)) + } + + rows.isBdta = false + return rows +} + +func (innerRows *innerRows) checkIndex(index int) *column { + if index < 0 || index > len(innerRows.columns)-1 { + return nil + } + + return &innerRows.columns[index] +} + +func (innerRows *innerRows) fetchData(startPos int64) bool { + execInfo, err := innerRows.dmStmt.dmConn.Access.Dm_build_1473(innerRows, startPos) + if err != nil { + return false + } + + innerRows.totalRowCount = execInfo.updateCount + if execInfo.rsDatas != nil { + innerRows.datas = execInfo.rsDatas + innerRows.datasStartPos = startPos + innerRows.datasOffset = 0 + return true + } + + return false +} + +func (innerRows *innerRows) getRowData(dest []driver.Value) (err error) { + for i, column := range innerRows.columns { + + if i <= len(dest)-1 { + if column.colType == CURSOR { + var tmpExecInfo *execRetInfo + tmpExecInfo, err = innerRows.dmStmt.dmConn.Access.Dm_build_1466(innerRows.dmStmt, 1) + if err != nil { + return err + } + + if tmpExecInfo.hasResultSet { + dest[i] = newDmRows(newInnerRows(innerRows.id+1, innerRows.dmStmt, tmpExecInfo)) + } else { + dest[i] = nil + } + continue + } + + dest[i], err = column.getColumnData(innerRows.datas[innerRows.datasOffset][i+1], innerRows.dmStmt.dmConn) + innerRows.columns[i].isBdta = innerRows.isBdta + if err != nil { + return err + } + } else { + return nil + } + } + + return nil +} + +func (innerRows *innerRows) getRowCount() int64 { + innerRows.checkClosed() + + if innerRows.totalRowCount == INT64_MAX { + return -1 + } + + return innerRows.totalRowCount +} diff --git a/vendor/gitee.com/chunanyong/dm/u.go b/vendor/gitee.com/chunanyong/dm/u.go new file mode 100644 index 000000000..5cb00a4df --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/u.go @@ -0,0 +1,1495 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "container/list" + "context" + "database/sql" + "database/sql/driver" + "fmt" + "io" + "math/big" + "reflect" + "strconv" + "strings" + "time" + + "gitee.com/chunanyong/dm/util" +) + +var rp = newRsPool() + +type DmStatement struct { + filterable + + dmConn *DmConnection + rsMap map[int16]*innerRows + inUse bool + + prepared bool + innerUsed bool + + innerExec bool + + id int32 + + cursorName string + + readBaseColName bool + + execInfo *execRetInfo + + resultSetType int + + resultSetConcurrency int + + resultSetHoldability int + + nativeSql string + + maxFieldSize int + + maxRows int64 + + escapeProcessing bool + + queryTimeout int32 + + fetchDirection int + + fetchSize int + + cursorUpdateRow int64 + + closeOnCompletion bool + + isBatch bool + + closed bool + + columns []column + + serverParams []parameter + + bindParams []parameter + + paramCount int32 + + preExec bool +} + +type stmtPoolInfo struct { + id int32 + + cursorName string + + readBaseColName bool +} + +type rsPoolKey struct { + dbGuid string + currentSchema string + sql string + paramCount int +} + +func newRsPoolKey(stmt *DmStatement, sql string) rsPoolKey { + rpk := new(rsPoolKey) + rpk.dbGuid = stmt.dmConn.Guid + rpk.currentSchema = stmt.dmConn.Schema + rpk.paramCount = int(stmt.paramCount) + + rpk.sql = sql + return *rpk +} + +func (key rsPoolKey) equals(destKey rsPoolKey) bool { + return key.dbGuid == destKey.dbGuid && + key.currentSchema == destKey.currentSchema && + key.sql == destKey.sql && + key.paramCount == destKey.paramCount + +} + +type rsPoolValue struct { + m_lastChkTime int + m_TbIds []int32 + m_TbTss []int64 + execInfo *execRetInfo +} + +func newRsPoolValue(execInfo *execRetInfo) rsPoolValue { + rpv := new(rsPoolValue) + rpv.execInfo = execInfo + rpv.m_lastChkTime = time.Now().Nanosecond() + copy(rpv.m_TbIds, execInfo.tbIds) + copy(rpv.m_TbTss, execInfo.tbTss) + return *rpv +} + +func (rpv rsPoolValue) refreshed(conn *DmConnection) (bool, error) { + + if conn.dmConnector.rsRefreshFreq == 0 { + return false, nil + } + + if rpv.m_lastChkTime+conn.dmConnector.rsRefreshFreq*int(time.Second) > time.Now().Nanosecond() { + return false, nil + } + + tss, err := conn.Access.Dm_build_1499(interface{}(rpv.m_TbIds).([]uint32)) + if err != nil { + return false, err + } + rpv.m_lastChkTime = time.Now().Nanosecond() + + var tbCount int + if tss != nil { + tbCount = len(tss) + } + + if tbCount != len(rpv.m_TbTss) { + return true, nil + } + + for i := 0; i < tbCount; i++ { + if rpv.m_TbTss[i] != tss[i] { + return true, nil + } + + } + return false, nil +} + +func (rpv rsPoolValue) getResultSet(stmt *DmStatement) *innerRows { + destDatas := rpv.execInfo.rsDatas + var totalRows int + if rpv.execInfo.rsDatas != nil { + totalRows = len(rpv.execInfo.rsDatas) + } + + if stmt.maxRows > 0 && stmt.maxRows < int64(totalRows) { + destDatas = make([][][]byte, stmt.maxRows) + copy(destDatas[:len(destDatas)], rpv.execInfo.rsDatas[:len(destDatas)]) + } + + rs := newLocalInnerRows(stmt, stmt.columns, destDatas) + rs.id = 1 + return rs +} + +func (rpv rsPoolValue) getDataLen() int { + return rpv.execInfo.rsSizeof +} + +type rsPool struct { + rsMap map[rsPoolKey]rsPoolValue + rsList *list.List + totalDataLen int +} + +func newRsPool() *rsPool { + rp := new(rsPool) + rp.rsMap = make(map[rsPoolKey]rsPoolValue, 100) + rp.rsList = list.New() + return rp +} + +func (rp *rsPool) removeInList(key rsPoolKey) { + for e := rp.rsList.Front(); e != nil && e.Value.(rsPoolKey).equals(key); e = e.Next() { + rp.rsList.Remove(e) + } +} + +func (rp *rsPool) put(stmt *DmStatement, sql string, execInfo *execRetInfo) { + var dataLen int + if execInfo != nil { + dataLen = execInfo.rsSizeof + } + + cacheSize := stmt.dmConn.dmConnector.rsCacheSize * 1024 * 1024 + + for rp.totalDataLen+dataLen > cacheSize { + if rp.totalDataLen == 0 { + return + } + + lk := rp.rsList.Back().Value.(rsPoolKey) + rp.totalDataLen -= rp.rsMap[lk].getDataLen() + rp.rsList.Remove(rp.rsList.Back()) + delete(rp.rsMap, rp.rsList.Back().Value.(rsPoolKey)) + } + + key := newRsPoolKey(stmt, sql) + value := newRsPoolValue(execInfo) + + if _, ok := rp.rsMap[key]; !ok { + rp.rsList.PushFront(key) + } else { + rp.removeInList(key) + rp.rsList.PushFront(key) + } + + rp.rsMap[key] = value + rp.totalDataLen += dataLen +} + +func (rp *rsPool) get(stmt *DmStatement, sql string) (*rsPoolValue, error) { + key := newRsPoolKey(stmt, sql) + + v, ok := rp.rsMap[key] + if ok { + b, err := v.refreshed(stmt.dmConn) + if err != nil { + return nil, err + } + + if b { + rp.removeInList(key) + delete(rp.rsMap, key) + return nil, nil + } + + rp.removeInList(key) + rp.rsList.PushFront(key) + return &v, nil + } else { + return nil, nil + } +} + +func (s *DmStatement) Close() error { + if s.closed { + return nil + } + if len(s.filterChain.filters) == 0 { + return s.close() + } + return s.filterChain.reset().DmStatementClose(s) +} + +func (s *DmStatement) NumInput() int { + if err := s.checkClosed(); err != nil { + return -1 + } + if len(s.filterChain.filters) == 0 { + return s.numInput() + } + return s.filterChain.reset().DmStatementNumInput(s) +} + +func (s *DmStatement) Exec(args []driver.Value) (driver.Result, error) { + if err := s.checkClosed(); err != nil { + return nil, err + } + if len(s.filterChain.filters) == 0 { + return s.exec(args) + } + return s.filterChain.reset().DmStatementExec(s, args) +} + +func (s *DmStatement) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { + if err := s.checkClosed(); err != nil { + return nil, err + } + if len(s.filterChain.filters) == 0 { + return s.execContext(ctx, args) + } + return s.filterChain.reset().DmStatementExecContext(s, ctx, args) +} + +func (s *DmStatement) Query(args []driver.Value) (driver.Rows, error) { + if err := s.checkClosed(); err != nil { + return nil, err + } + if len(s.filterChain.filters) == 0 { + return s.query(args) + } + return s.filterChain.reset().DmStatementQuery(s, args) +} + +func (s *DmStatement) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { + if err := s.checkClosed(); err != nil { + return nil, err + } + if len(s.filterChain.filters) == 0 { + return s.queryContext(ctx, args) + } + return s.filterChain.reset().DmStatementQueryContext(s, ctx, args) +} + +func (s *DmStatement) CheckNamedValue(nv *driver.NamedValue) error { + if len(s.filterChain.filters) == 0 { + return s.checkNamedValue(nv) + } + return s.filterChain.reset().DmStatementCheckNamedValue(s, nv) +} + +func (st *DmStatement) prepare() error { + var err error + if st.dmConn.dmConnector.escapeProcess { + st.nativeSql, err = st.dmConn.escape(st.nativeSql, st.dmConn.dmConnector.keyWords) + if err != nil { + return err + } + } + + st.execInfo, err = st.dmConn.Access.Dm_build_1424(st, Dm_build_95) + if err != nil { + return err + } + st.prepared = true + return nil +} + +func (stmt *DmStatement) close() error { + delete(stmt.dmConn.stmtMap, stmt.id) + if stmt.closed { + return nil + } + stmt.inUse = true + + return stmt.free() + +} + +func (stmt *DmStatement) numInput() int { + return int(stmt.paramCount) +} + +func (stmt *DmStatement) checkNamedValue(nv *driver.NamedValue) error { + var err error + var cvt = converter{stmt.dmConn, false} + nv.Value, err = cvt.ConvertValue(nv.Value) + stmt.isBatch = cvt.isBatch + return err +} + +func (stmt *DmStatement) exec(args []driver.Value) (*DmResult, error) { + var err error + + stmt.inUse = true + if stmt.isBatch && len(args) > 0 { + var tmpArg []driver.Value + var arg driver.Value + for i := len(args) - 1; i >= 0; i-- { + if args[i] != nil { + arg = args[i] + break + } + } + for _, row := range arg.([][]interface{}) { + tmpArg = append(tmpArg, row) + } + err = stmt.executeBatch(tmpArg) + } else { + err = stmt.executeInner(args, Dm_build_97) + } + if err != nil { + return nil, err + } + return newDmResult(stmt, stmt.execInfo), nil +} + +func (stmt *DmStatement) execContext(ctx context.Context, args []driver.NamedValue) (*DmResult, error) { + stmt.inUse = true + dargs, err := namedValueToValue(stmt, args) + if err != nil { + return nil, err + } + + if err := stmt.dmConn.watchCancel(ctx); err != nil { + return nil, err + } + defer stmt.dmConn.finish() + + return stmt.exec(dargs) +} + +func (stmt *DmStatement) query(args []driver.Value) (*DmRows, error) { + var err error + stmt.inUse = true + err = stmt.executeInner(args, Dm_build_96) + if err != nil { + return nil, err + } + + if stmt.execInfo.hasResultSet { + return newDmRows(newInnerRows(0, stmt, stmt.execInfo)), nil + } else { + return newDmRows(newLocalInnerRows(stmt, nil, nil)), nil + } +} + +func (stmt *DmStatement) queryContext(ctx context.Context, args []driver.NamedValue) (*DmRows, error) { + stmt.inUse = true + dargs, err := namedValueToValue(stmt, args) + if err != nil { + return nil, err + } + + if err := stmt.dmConn.watchCancel(ctx); err != nil { + return nil, err + } + defer stmt.dmConn.finish() + + rows, err := stmt.query(dargs) + if err != nil { + stmt.dmConn.finish() + return nil, err + } + rows.finish = stmt.dmConn.finish + return rows, err +} + +func NewDmStmt(conn *DmConnection, sql string) (*DmStatement, error) { + var s *DmStatement + + if s == nil { + s = new(DmStatement) + s.resetFilterable(&conn.filterable) + s.objId = -1 + s.idGenerator = dmStmtIDGenerator + s.dmConn = conn + s.maxRows = int64(conn.dmConnector.maxRows) + s.nativeSql = sql + s.rsMap = make(map[int16]*innerRows) + s.inUse = true + s.isBatch = conn.isBatch + + err := conn.Access.Dm_build_1406(s) + if err != nil { + return nil, err + } + + conn.stmtMap[s.id] = s + } + + return s, nil + +} + +func (stmt *DmStatement) checkClosed() error { + if stmt.dmConn.closed.IsSet() { + return driver.ErrBadConn + } else if stmt.closed { + return ECGO_STATEMENT_HANDLE_CLOSED.throw() + } + + return nil +} + +func (stmt *DmStatement) free() error { + delete(stmt.dmConn.stmtMap, stmt.id) + for _, rs := range stmt.rsMap { + rs.Close() + } + + err := stmt.dmConn.Access.Dm_build_1411(int32(stmt.id)) + if err != nil { + return err + } + stmt.inUse = false + stmt.closed = true + return nil +} + +func bindInParam(stmt *DmStatement, i int, dtype int32, firstRow bool) { + if !firstRow { + return + } + isNil := dtype == NULL + serverParam := &stmt.serverParams[i] + bindParam := &stmt.bindParams[i] + if serverParam == nil { + bindParam.resetType(dtype) + } else { + bindParam.name = serverParam.name + bindParam.typeDescriptor = serverParam.typeDescriptor + bindParam.mask = serverParam.mask + bindParam.typeFlag = serverParam.typeFlag + + if (serverParam.colType != UNKNOWN && (isNil || serverParam.typeFlag == TYPE_FLAG_EXACT)) || serverParam.mask != 0 { + + bindParam.colType = serverParam.colType + bindParam.prec = serverParam.prec + bindParam.scale = serverParam.scale + bindParam.mask = serverParam.mask + } else { + + bindParam.resetType(dtype) + } + } + + if bindParam.ioType == IO_TYPE_OUT || bindParam.ioType == IO_TYPE_INOUT { + bindParam.ioType = IO_TYPE_INOUT + } else { + bindParam.ioType = IO_TYPE_IN + } +} + +func checkBindParameters(stmt *DmStatement, bytes []interface{}) error { + + for i := 0; int32(i) < stmt.paramCount; i++ { + if stmt.bindParams[i].ioType == IO_TYPE_UNKNOWN { + + if stmt.serverParams[i].ioType == IO_TYPE_OUT { + + bytes[i] = nil + } else { + return ECGO_UNBINDED_PARAMETER.throw() + } + } + + if stmt.bindParams[i].colType == CURSOR { + stmt.bindParams[i].ioType = IO_TYPE_INOUT + continue + } + + if stmt.serverParams[i].ioType != stmt.bindParams[i].ioType { + + stmt.bindParams[i].ioType = stmt.serverParams[i].ioType + } + } + + for i := 0; int32(i) < stmt.paramCount; i++ { + if stmt.bindParams[i].ioType == IO_TYPE_INOUT || stmt.bindParams[i].ioType == IO_TYPE_OUT { + continue + } + switch stmt.bindParams[i].colType { + case CHAR, VARCHAR, VARCHAR2: + length := -1 + if b, ok := bytes[i].([]byte); ok { + length = len(b) + } + if length > VARCHAR_PREC { + return ECGO_STRING_CUT.throw() + } + if length > int(stmt.bindParams[i].prec) { + if length < VARCHAR_PREC/4 { + stmt.bindParams[i].prec = VARCHAR_PREC / 4 + } else if length < VARCHAR_PREC/2 { + stmt.bindParams[i].prec = VARCHAR_PREC / 2 + } else if length < VARCHAR_PREC*3/4 { + stmt.bindParams[i].prec = VARCHAR_PREC * 3 / 4 + } else { + stmt.bindParams[i].prec = VARCHAR_PREC + } + } + } + } + return nil +} + +func bindOutParam(stmt *DmStatement, i int, dtype int32) error { + var err error + serverParam := &stmt.serverParams[i] + bindParam := &stmt.bindParams[i] + + if bindParam.ioType == IO_TYPE_OUT || bindParam.ioType == IO_TYPE_UNKNOWN { + + if serverParam == nil { + + bindParam.resetType(dtype) + } else { + + bindParam.name = serverParam.name + bindParam.typeDescriptor = serverParam.typeDescriptor + bindParam.mask = serverParam.mask + bindParam.typeFlag = serverParam.typeFlag + + if (serverParam.colType != UNKNOWN && serverParam.typeFlag == TYPE_FLAG_EXACT) || serverParam.mask != 0 { + + bindParam.colType = serverParam.colType + bindParam.prec = serverParam.prec + bindParam.scale = serverParam.scale + bindParam.mask = serverParam.mask + } else { + + bindParam.resetType(dtype) + } + } + + if bindParam.colType == CURSOR { + bindParam.ioType = IO_TYPE_INOUT + if bindParam.cursorStmt == nil { + bindParam.cursorStmt = &DmStatement{dmConn: stmt.dmConn} + bindParam.cursorStmt.resetFilterable(&stmt.dmConn.filterable) + err = bindParam.cursorStmt.dmConn.Access.Dm_build_1406(bindParam.cursorStmt) + } + } + } + + if bindParam.ioType == IO_TYPE_IN || bindParam.ioType == IO_TYPE_INOUT { + bindParam.ioType = IO_TYPE_INOUT + } else { + bindParam.ioType = IO_TYPE_OUT + } + + return err +} + +func encodeArgs(stmt *DmStatement, args []driver.Value, firstRow bool) ([]interface{}, error) { + bytes := make([]interface{}, len(args), len(args)) + + var err error + + for i, arg := range args { + nextSwitch: + if stmt.serverParams[i].colType == CURSOR { + bindInParam(stmt, i, CURSOR, firstRow) + if stmt.bindParams[i].cursorStmt == nil { + stmt.bindParams[i].cursorStmt = &DmStatement{dmConn: stmt.dmConn} + stmt.bindParams[i].cursorStmt.resetFilterable(&stmt.dmConn.filterable) + err = stmt.bindParams[i].cursorStmt.dmConn.Access.Dm_build_1406(stmt.bindParams[i].cursorStmt) + } + stmt.bindParams[i].ioType = IO_TYPE_INOUT + continue + } + if arg == nil { + bindInParam(stmt, i, NULL, firstRow) + bytes[i] = nil + + continue + } + + switch v := arg.(type) { + case bool: + bindInParam(stmt, i, TINYINT, firstRow) + bytes[i], err = G2DB.fromBool(v, stmt.bindParams[i], stmt.dmConn) + case int8: + bindInParam(stmt, i, TINYINT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + case int16: + bindInParam(stmt, i, SMALLINT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + case int32: + bindInParam(stmt, i, INT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + case int64: + bindInParam(stmt, i, BIGINT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + case int: + bindInParam(stmt, i, BIGINT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + case uint8: + bindInParam(stmt, i, SMALLINT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + case uint16: + bindInParam(stmt, i, INT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + case uint32: + bindInParam(stmt, i, BIGINT, firstRow) + bytes[i], err = G2DB.fromInt64(int64(v), stmt.bindParams[i], stmt.dmConn) + + case float32: + bindInParam(stmt, i, REAL, firstRow) + bytes[i], err = G2DB.fromFloat32(v, stmt.bindParams[i], stmt.dmConn) + case float64: + bindInParam(stmt, i, DOUBLE, firstRow) + bytes[i], err = G2DB.fromFloat64(float64(v), stmt.bindParams[i], stmt.dmConn) + case []byte: + if v == nil { + bindInParam(stmt, i, NULL, firstRow) + bytes[i] = nil + + } else { + dtype := VARBINARY + if len(v) >= VARBINARY_PREC { + dtype = BLOB + } + bindInParam(stmt, i, int32(dtype), firstRow) + bytes[i], err = G2DB.fromBytes(v, stmt.bindParams[i], stmt.dmConn) + } + case string: + + if v == "" && emptyStringToNil(stmt.serverParams[i].colType) { + arg = nil + goto nextSwitch + } + dtype := VARCHAR + if len(v) >= VARCHAR_PREC { + dtype = CLOB + } + bindInParam(stmt, i, int32(dtype), firstRow) + bytes[i], err = G2DB.fromString(v, stmt.bindParams[i], stmt.dmConn) + case time.Time: + bindInParam(stmt, i, DATETIME, firstRow) + bytes[i], err = G2DB.fromTime(v, stmt.bindParams[i], stmt.dmConn) + case DmTimestamp: + bindInParam(stmt, i, DATETIME, firstRow) + bytes[i], err = G2DB.fromTime(v.ToTime(), stmt.bindParams[i], stmt.dmConn) + case DmIntervalDT: + bindInParam(stmt, i, INTERVAL_DT, firstRow) + if stmt.bindParams[i].typeFlag != TYPE_FLAG_EXACT { + stmt.bindParams[i].scale = int32(v.scaleForSvr) + } + bytes[i], err = G2DB.fromDmIntervalDT(v, stmt.bindParams[i], stmt.dmConn) + case DmIntervalYM: + bindInParam(stmt, i, INTERVAL_YM, firstRow) + if stmt.bindParams[i].typeFlag != TYPE_FLAG_EXACT { + stmt.bindParams[i].scale = int32(v.scaleForSvr) + } + bytes[i], err = G2DB.fromDmdbIntervalYM(v, stmt.bindParams[i], stmt.dmConn) + case DmDecimal: + bindInParam(stmt, i, DECIMAL, firstRow) + bytes[i], err = G2DB.fromDecimal(v, stmt.bindParams[i], stmt.dmConn) + + case DmBlob: + bindInParam(stmt, i, BLOB, firstRow) + bytes[i], err = G2DB.fromBlob(DmBlob(v), stmt.bindParams[i], stmt.dmConn) + if err != nil { + return nil, err + } + case DmClob: + bindInParam(stmt, i, CLOB, firstRow) + bytes[i], err = G2DB.fromClob(DmClob(v), stmt.bindParams[i], stmt.dmConn) + if err != nil { + return nil, err + } + case DmArray: + bindInParam(stmt, i, ARRAY, firstRow) + da := &v + da, err = da.create(stmt.dmConn) + if err != nil { + return nil, err + } + + bytes[i], err = G2DB.fromArray(da, stmt.bindParams[i], stmt.dmConn) + case DmStruct: + bindInParam(stmt, i, CLASS, firstRow) + ds := &v + ds, err = ds.create(stmt.dmConn) + if err != nil { + return nil, err + } + + bytes[i], err = G2DB.fromStruct(ds, stmt.bindParams[i], stmt.dmConn) + case sql.Out: + var cvt = converter{stmt.dmConn, false} + if arg, err = cvt.ConvertValue(v.Dest); err != nil { + return nil, err + } + goto nextSwitch + + case *DmTimestamp: + bindInParam(stmt, i, DATETIME, firstRow) + bytes[i], err = G2DB.fromTime(v.ToTime(), stmt.bindParams[i], stmt.dmConn) + case *DmIntervalDT: + bindInParam(stmt, i, INTERVAL_DT, firstRow) + if stmt.bindParams[i].typeFlag != TYPE_FLAG_EXACT { + stmt.bindParams[i].scale = int32(v.scaleForSvr) + } + bytes[i], err = G2DB.fromDmIntervalDT(*v, stmt.bindParams[i], stmt.dmConn) + case *DmIntervalYM: + bindInParam(stmt, i, INTERVAL_YM, firstRow) + if stmt.bindParams[i].typeFlag != TYPE_FLAG_EXACT { + stmt.bindParams[i].scale = int32(v.scaleForSvr) + } + bytes[i], err = G2DB.fromDmdbIntervalYM(*v, stmt.bindParams[i], stmt.dmConn) + case *DmDecimal: + bindInParam(stmt, i, DECIMAL, firstRow) + bytes[i], err = G2DB.fromDecimal(*v, stmt.bindParams[i], stmt.dmConn) + case *DmBlob: + bindInParam(stmt, i, BLOB, firstRow) + bytes[i], err = G2DB.fromBlob(DmBlob(*v), stmt.bindParams[i], stmt.dmConn) + case *DmClob: + bindInParam(stmt, i, CLOB, firstRow) + bytes[i], err = G2DB.fromClob(DmClob(*v), stmt.bindParams[i], stmt.dmConn) + case *DmArray: + bindInParam(stmt, i, ARRAY, firstRow) + v, err = v.create(stmt.dmConn) + if err != nil { + return nil, err + } + + bytes[i], err = G2DB.fromArray(v, stmt.bindParams[i], stmt.dmConn) + case *DmStruct: + bindInParam(stmt, i, CLASS, firstRow) + v, err = v.create(stmt.dmConn) + if err != nil { + return nil, err + } + + bytes[i], err = G2DB.fromStruct(v, stmt.bindParams[i], stmt.dmConn) + case *driver.Rows: + if stmt.serverParams[i].colType == CURSOR { + bindInParam(stmt, i, CURSOR, firstRow) + if stmt.bindParams[i].cursorStmt == nil { + stmt.bindParams[i].cursorStmt = &DmStatement{dmConn: stmt.dmConn} + stmt.bindParams[i].cursorStmt.resetFilterable(&stmt.dmConn.filterable) + err = stmt.bindParams[i].cursorStmt.dmConn.Access.Dm_build_1406(stmt.bindParams[i].cursorStmt) + } + } + case io.Reader: + bindInParam(stmt, i, stmt.serverParams[i].colType, firstRow) + bytes[i], err = G2DB.fromReader(io.Reader(v), stmt.serverParams[i], stmt.dmConn) + if err != nil { + return nil, err + } + default: + err = ECGO_UNSUPPORTED_INPARAM_TYPE.throw() + } + + if err != nil { + return nil, err + } + + } + checkBindParameters(stmt, bytes) + + return bytes, nil +} + +type converter struct { + conn *DmConnection + isBatch bool +} +type decimalDecompose interface { + Decompose(buf []byte) (form byte, negative bool, coefficient []byte, exponent int32) +} + +func (c *converter) ConvertValue(v interface{}) (driver.Value, error) { + if driver.IsValue(v) { + return v, nil + } + + switch vr := v.(type) { + case driver.Valuer: + sv, err := callValuerValue(vr) + if err != nil { + return nil, err + } + + return sv, nil + + case decimalDecompose, DmDecimal, *DmDecimal, DmTimestamp, *DmTimestamp, DmIntervalDT, *DmIntervalDT, + DmIntervalYM, *DmIntervalYM, driver.Rows, *driver.Rows, DmArray, *DmArray, DmStruct, *DmStruct, sql.Out: + return vr, nil + case big.Int: + return NewDecimalFromBigInt(&vr) + case big.Float: + return NewDecimalFromBigFloat(&vr) + case DmClob: + + if vr.connection == nil { + vr.connection = c.conn + } + return vr, nil + case *DmClob: + + if vr.connection == nil { + vr.connection = c.conn + } + return vr, nil + case DmBlob: + + if vr.connection == nil { + vr.connection = c.conn + } + return vr, nil + case *DmBlob: + + if vr.connection == nil { + vr.connection = c.conn + } + return vr, nil + case io.Reader: + return vr, nil + } + + rv := reflect.ValueOf(v) + switch rv.Kind() { + case reflect.Ptr: + if rv.IsNil() { + return nil, nil + } else { + return c.ConvertValue(rv.Elem().Interface()) + } + case reflect.Int: + return rv.Int(), nil + case reflect.Int8: + return int8(rv.Int()), nil + case reflect.Int16: + return int16(rv.Int()), nil + case reflect.Int32: + return int32(rv.Int()), nil + case reflect.Int64: + return int64(rv.Int()), nil + case reflect.Uint8: + return uint8(rv.Uint()), nil + case reflect.Uint16: + return uint16(rv.Uint()), nil + case reflect.Uint32: + return uint32(rv.Uint()), nil + case reflect.Uint64, reflect.Uint: + u64 := rv.Uint() + if u64 >= 1<<63 { + bigInt := &big.Int{} + bigInt.SetString(strconv.FormatUint(u64, 10), 10) + return NewDecimalFromBigInt(bigInt) + } + return int64(u64), nil + case reflect.Float32: + return float32(rv.Float()), nil + case reflect.Float64: + return float64(rv.Float()), nil + case reflect.Bool: + return rv.Bool(), nil + case reflect.Slice: + ek := rv.Type().Elem().Kind() + if ek == reflect.Uint8 { + return rv.Bytes(), nil + } else if ek == reflect.Slice { + c.isBatch = true + return v, nil + } + return nil, fmt.Errorf("unsupported type %T, a slice of %s", v, ek) + case reflect.String: + return rv.String(), nil + } + return nil, fmt.Errorf("unsupported type %T, a %s", v, rv.Kind()) +} + +var valuerReflectType = reflect.TypeOf((*driver.Valuer)(nil)).Elem() + +func callValuerValue(vr driver.Valuer) (v driver.Value, err error) { + if rv := reflect.ValueOf(vr); rv.Kind() == reflect.Ptr && + rv.IsNil() && + rv.Type().Elem().Implements(valuerReflectType) { + return nil, nil + } + return vr.Value() +} + +func namedValueToValue(stmt *DmStatement, named []driver.NamedValue) ([]driver.Value, error) { + + dargs := make([]driver.Value, stmt.paramCount) + for i, _ := range dargs { + found := false + for _, nv := range named { + if nv.Name != "" && strings.ToUpper(nv.Name) == strings.ToUpper(stmt.serverParams[i].name) { + dargs[i] = nv.Value + found = true + break + } + } + + if !found && i < len(named) { + dargs[i] = named[i].Value + } + + } + return dargs, nil +} + +func (stmt *DmStatement) executeInner(args []driver.Value, executeType int16) (err error) { + + var bytes []interface{} + + if stmt.paramCount > 0 { + bytes, err = encodeArgs(stmt, args, true) + if err != nil { + return err + } + } + stmt.execInfo, err = stmt.dmConn.Access.Dm_build_1456(stmt, bytes, false) + if err != nil { + return err + } + if stmt.execInfo.outParamDatas != nil { + for i, outParamData := range stmt.execInfo.outParamDatas { + if stmt.bindParams[i].ioType == IO_TYPE_IN || stmt.bindParams[i].ioType == IO_TYPE_UNKNOWN { + continue + } + + var v sql.Out + ok := true + for ok { + if v, ok = args[i].(sql.Out); ok { + args[i] = v.Dest + } + } + + if sc, ok := args[i].(sql.Scanner); ok { + var v interface{} + if outParamData == nil && stmt.bindParams[i].colType != CURSOR { + v = nil + if err = sc.Scan(v); err != nil { + return err + } + continue + } + + switch stmt.bindParams[i].colType { + case BOOLEAN: + v, err = DB2G.toBool(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case BIT: + if strings.ToLower(stmt.bindParams[i].typeName) == "boolean" { + v, err = DB2G.toBool(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + } + + v, err = DB2G.toInt8(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case TINYINT: + v, err = DB2G.toInt8(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case SMALLINT: + v, err = DB2G.toInt16(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case INT: + v, err = DB2G.toInt32(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case BIGINT: + v, err = DB2G.toInt64(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case REAL: + v, err = DB2G.toFloat32(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case DOUBLE: + v, err = DB2G.toFloat64(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case DATE, TIME, DATETIME, TIME_TZ, DATETIME_TZ, DATETIME2, DATETIME2_TZ: + v, err = DB2G.toTime(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case INTERVAL_DT: + v = newDmIntervalDTByBytes(outParamData) + case INTERVAL_YM: + v = newDmIntervalYMByBytes(outParamData) + case DECIMAL: + v, err = DB2G.toDmDecimal(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case BINARY, VARBINARY: + v = util.StringUtil.BytesToHexString(outParamData, false) + case BLOB: + v = DB2G.toDmBlob(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case CHAR, VARCHAR2, VARCHAR: + v = DB2G.toString(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case CLOB: + v = DB2G.toDmClob(outParamData, stmt.dmConn, &stmt.bindParams[i].column) + case ARRAY: + v, err = TypeDataSV.bytesToArray(outParamData, nil, stmt.bindParams[i].typeDescriptor) + case CLASS: + v, err = TypeDataSV.bytesToObj(outParamData, nil, stmt.bindParams[i].typeDescriptor) + case CURSOR: + var tmpExecInfo *execRetInfo + if tmpExecInfo, err = stmt.dmConn.Access.Dm_build_1466(stmt.bindParams[i].cursorStmt, 1); err != nil { + return err + } + if tmpExecInfo.hasResultSet { + v = newDmRows(newInnerRows(0, stmt.bindParams[i].cursorStmt, tmpExecInfo)) + } + default: + err = ECGO_UNSUPPORTED_OUTPARAM_TYPE.throw() + } + if err == nil { + err = sc.Scan(v) + } + } else if args[i] == nil { + if outParamData == nil && stmt.bindParams[i].colType != CURSOR { + continue + } + + switch stmt.bindParams[i].colType { + case BOOLEAN: + args[i], err = DB2G.toBool(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case BIT: + if strings.ToLower(stmt.bindParams[i].typeName) == "boolean" { + args[i], err = DB2G.toBool(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + } + + args[i], err = DB2G.toInt8(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case TINYINT: + args[i], err = DB2G.toInt8(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case SMALLINT: + args[i], err = DB2G.toInt16(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case INT: + args[i], err = DB2G.toInt32(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case BIGINT: + args[i], err = DB2G.toInt64(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case REAL: + args[i], err = DB2G.toFloat32(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case DOUBLE: + args[i], err = DB2G.toFloat64(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case DATE, TIME, DATETIME, TIME_TZ, DATETIME_TZ, DATETIME2, DATETIME2_TZ: + args[i], err = DB2G.toTime(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case INTERVAL_DT: + args[i] = newDmIntervalDTByBytes(outParamData) + case INTERVAL_YM: + args[i] = newDmIntervalYMByBytes(outParamData) + case DECIMAL: + args[i], err = DB2G.toDmDecimal(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case BINARY, VARBINARY: + args[i] = util.StringUtil.BytesToHexString(outParamData, false) + case BLOB: + args[i] = DB2G.toDmBlob(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case CHAR, VARCHAR2, VARCHAR: + args[i] = DB2G.toString(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + case CLOB: + args[i] = DB2G.toDmClob(outParamData, stmt.dmConn, &stmt.bindParams[i].column) + default: + err = ECGO_UNSUPPORTED_OUTPARAM_TYPE.throw() + } + } else { + switch v := args[i].(type) { + case *string: + if outParamData == nil { + *v = "" + } else { + *v = DB2G.toString(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + } + case *sql.NullString: + if outParamData == nil { + v.String = "" + v.Valid = false + } else { + v.String = DB2G.toString(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + v.Valid = true + } + case *[]byte: + if outParamData == nil { + *v = nil + } else { + var val []byte + if val, err = DB2G.toBytes(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *bool: + if outParamData == nil { + *v = false + } else { + var val bool + if val, err = DB2G.toBool(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *sql.NullBool: + if outParamData == nil { + v.Bool = false + v.Valid = false + } else { + var val bool + if val, err = DB2G.toBool(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + v.Bool = val + v.Valid = true + } + case *int8: + if outParamData == nil { + *v = 0 + } else { + var val int8 + if val, err = DB2G.toInt8(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *int16: + if outParamData == nil { + *v = 0 + } else { + var val int16 + if val, err = DB2G.toInt16(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *int32: + if outParamData == nil { + *v = 0 + } else { + var val int32 + if val, err = DB2G.toInt32(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *sql.NullInt32: + if outParamData == nil { + v.Int32 = 0 + v.Valid = false + } else { + var val int32 + if val, err = DB2G.toInt32(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + v.Int32 = val + v.Valid = true + } + case *int64: + if outParamData == nil { + *v = 0 + } else { + var val int64 + if val, err = DB2G.toInt64(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *sql.NullInt64: + if outParamData == nil { + v.Int64 = 0 + v.Valid = false + } else { + var val int64 + if val, err = DB2G.toInt64(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + v.Int64 = val + v.Valid = true + } + case *uint8: + if outParamData == nil { + *v = 0 + } else { + var val uint8 + if val, err = DB2G.toByte(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *uint16: + if outParamData == nil { + *v = 0 + } else { + var val uint16 + if val, err = DB2G.toUInt16(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *uint32: + if outParamData == nil { + *v = 0 + } else { + var val uint32 + if val, err = DB2G.toUInt32(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *uint64: + if outParamData == nil { + *v = 0 + } else { + var val uint64 + if val, err = DB2G.toUInt64(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *int: + if outParamData == nil { + *v = 0 + } else { + var val int + if val, err = DB2G.toInt(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *uint: + if outParamData == nil { + *v = 0 + } else { + var val uint + if val, err = DB2G.toUInt(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *float32: + if outParamData == nil { + *v = 0.0 + } else { + var val float32 + if val, err = DB2G.toFloat32(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *float64: + if outParamData == nil { + *v = 0.0 + } else { + var val float64 + if val, err = DB2G.toFloat64(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *sql.NullFloat64: + if outParamData == nil { + v.Float64 = 0.0 + v.Valid = false + } else { + var val float64 + if val, err = DB2G.toFloat64(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + v.Float64 = val + v.Valid = true + } + case *time.Time: + if outParamData == nil { + *v = time.Time{} + } else { + var val time.Time + if val, err = DB2G.toTime(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = val + } + case *sql.NullTime: + if outParamData == nil { + v.Time = time.Time{} + v.Valid = false + } else { + var val time.Time + if val, err = DB2G.toTime(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + v.Time = val + v.Valid = true + } + case *DmTimestamp: + if outParamData == nil { + *v = DmTimestamp{} + } else { + *v = *newDmTimestampFromBytes(outParamData, stmt.bindParams[i].column, stmt.dmConn) + } + case *DmIntervalDT: + if outParamData == nil { + *v = DmIntervalDT{} + } else { + *v = *newDmIntervalDTByBytes(outParamData) + } + case *DmIntervalYM: + if outParamData == nil { + *v = DmIntervalYM{} + } else { + *v = *newDmIntervalYMByBytes(outParamData) + } + case *DmDecimal: + if outParamData == nil { + *v = DmDecimal{} + } else { + var val *DmDecimal + if val, err = DB2G.toDmDecimal(outParamData, &stmt.bindParams[i].column, stmt.dmConn); err != nil { + return err + } + *v = *val + } + case *DmBlob: + if outParamData == nil { + *v = DmBlob{} + } else { + *v = *DB2G.toDmBlob(outParamData, &stmt.bindParams[i].column, stmt.dmConn) + } + case *DmClob: + if outParamData == nil { + *v = DmClob{} + } else { + *v = *DB2G.toDmClob(outParamData, stmt.dmConn, &stmt.bindParams[i].column) + } + case *driver.Rows: + if stmt.bindParams[i].colType == CURSOR { + var tmpExecInfo *execRetInfo + tmpExecInfo, err = stmt.dmConn.Access.Dm_build_1466(stmt.bindParams[i].cursorStmt, 1) + if err != nil { + return err + } + + if tmpExecInfo.hasResultSet { + *v = newDmRows(newInnerRows(0, stmt.bindParams[i].cursorStmt, tmpExecInfo)) + } else { + *v = nil + } + } + case *DmArray: + if outParamData == nil { + *v = DmArray{} + } else { + var val *DmArray + if val, err = TypeDataSV.bytesToArray(outParamData, nil, stmt.bindParams[i].typeDescriptor); err != nil { + return err + } + *v = *val + } + case *DmStruct: + if outParamData == nil { + *v = DmStruct{} + } else { + var tmp interface{} + if tmp, err = TypeDataSV.bytesToObj(outParamData, nil, stmt.bindParams[i].typeDescriptor); err != nil { + return err + } + if val, ok := tmp.(*DmStruct); ok { + *v = *val + } + } + default: + err = ECGO_UNSUPPORTED_OUTPARAM_TYPE.throw() + } + } + if err != nil { + return err + } + } + + } + return err +} + +func (stmt *DmStatement) executeBatch(args []driver.Value) (err error) { + + var bytes [][]interface{} + + if stmt.execInfo.retSqlType == Dm_build_110 || stmt.execInfo.retSqlType == Dm_build_115 { + return ECGO_INVALID_SQL_TYPE.throw() + } + + if stmt.paramCount > 0 && args != nil && len(args) > 0 { + + if len(args) == 1 || stmt.dmConn.dmConnector.batchType == 2 || + (stmt.dmConn.dmConnector.batchNotOnCall && stmt.execInfo.retSqlType == Dm_build_111) { + return stmt.executeBatchByRow(args) + } else { + for i, arg := range args { + var newArg []driver.Value + for _, a := range arg.([]interface{}) { + newArg = append(newArg, a) + } + tmpBytes, err := encodeArgs(stmt, newArg, i == 0) + if err != nil { + return err + } + bytes = append(bytes, tmpBytes) + } + stmt.execInfo, err = stmt.dmConn.Access.Dm_build_1445(stmt, bytes, stmt.preExec) + } + } + return err +} + +func (stmt *DmStatement) executeBatchByRow(args []driver.Value) (err error) { + count := len(args) + stmt.execInfo = NewExceInfo() + stmt.execInfo.updateCounts = make([]int64, count) + var sqlErrBuilder strings.Builder + for i := 0; i < count; i++ { + tmpExecInfo, err := stmt.dmConn.Access.Dm_build_1456(stmt, args[i].([]interface{}), stmt.preExec || i != 0) + if err == nil { + stmt.execInfo.union(tmpExecInfo, i, 1) + } else { + stmt.execInfo.updateCounts[i] = -1 + if stmt.dmConn.dmConnector.continueBatchOnError { + sqlErrBuilder.WriteString("row[" + strconv.Itoa(i) + "]:" + err.Error() + util.LINE_SEPARATOR) + } else { + return ECGO_BATCH_ERROR.addDetailln(err.Error()).throw() + } + } + } + if sqlErrBuilder.Len() > 0 { + return EC_BP_WITH_ERROR.addDetail(sqlErrBuilder.String()).throw() + } + return nil +} diff --git a/vendor/gitee.com/chunanyong/dm/util/zzq.go b/vendor/gitee.com/chunanyong/dm/util/zzq.go new file mode 100644 index 000000000..00660f265 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/util/zzq.go @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package util + +func Split(s string, sep string) []string { + var foot = make([]int, len(s)) // 足够的元素个数 + var count, sLen, sepLen = 0, len(s), len(sep) + for i := 0; i < sLen; i++ { + // 处理 s == “-9999-1" && seperators == "-"情况 + if i == 0 && sLen >= sepLen { + if s[0:sepLen] == sep { + i += sepLen - 1 + continue + } + } + for j := 0; j < sepLen; j++ { + if s[i] == sep[j] { + foot[count] = i + count++ + break + } + } + } + var ret = make([]string, count+1) + if count == 0 { + ret[0] = s + return ret + } + ret[0] = s[0:foot[0]] + for i := 1; i < count; i++ { + ret[i] = s[foot[i-1]+1 : foot[i]] + } + ret[count] = s[foot[count-1]+1:] + return ret +} diff --git a/vendor/gitee.com/chunanyong/dm/util/zzr.go b/vendor/gitee.com/chunanyong/dm/util/zzr.go new file mode 100644 index 000000000..3e6dbb378 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/util/zzr.go @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package util + +import ( + "go/build" + "os" + "runtime" + "strings" +) + +const ( + PathSeparator = string(os.PathSeparator) + PathListSeparator = string(os.PathListSeparator) +) + +var ( + goRoot = build.Default.GOROOT + goPath = build.Default.GOPATH //获取实际编译时的GOPATH值 +) + +type fileUtil struct { +} + +var FileUtil = &fileUtil{} + +func (fileUtil *fileUtil) Exists(path string) bool { + if _, err := os.Stat(path); !os.IsNotExist(err) { + return true + } + return false +} + +func (fileUtil *fileUtil) Search(relativePath string) (path string) { + if strings.Contains(runtime.GOOS, "windows") { + relativePath = strings.ReplaceAll(relativePath, "/", "\\") + } + + if fileUtil.Exists(goPath) { + for _, s := range strings.Split(goPath, PathListSeparator) { + path = s + PathSeparator + "src" + PathSeparator + relativePath + if fileUtil.Exists(path) { + return path + } + } + } + + if fileUtil.Exists(goPath) { + for _, s := range strings.Split(goPath, PathListSeparator) { + path = s + PathSeparator + "pkg" + PathSeparator + relativePath + if fileUtil.Exists(path) { + return path + } + } + } + + //if workDir, _ := os.Getwd(); fileUtil.Exists(workDir) { + // path = workDir + PathSeparator + "src" + PathSeparator + relativePath + // if fileUtil.Exists(path) { + // return path + // } + //} + + //if fileUtil.Exists(goRoot) { + // path = goRoot + PathSeparator + "src" + PathSeparator + relativePath + // if fileUtil.Exists(path) { + // return path + // } + //} + + return "" +} diff --git a/vendor/gitee.com/chunanyong/dm/util/zzs.go b/vendor/gitee.com/chunanyong/dm/util/zzs.go new file mode 100644 index 000000000..a575e381b --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/util/zzs.go @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package util + +const ( + LINE_SEPARATOR = "\n" +) + +// 执行f并忽略panic +func AbsorbPanic(f func()){ + defer func() { + if p := recover(); p != nil { + // TODO do something + } + }() + f() +} + +func SliceEquals(src []byte, dest []byte) bool { + if len(src) != len(dest) { + return false + } + + for i, _ := range src { + if src[i] != dest[i] { + return false + } + } + + return true +} + +// 获取两个数的最大公约数,由调用者确保m、n>=0;如果m或n为0,返回1 +func GCD(m int32, n int32) int32 { + if m == 0 || n == 0 { + return 1 + } + r := m % n + m = n + n = r + if r == 0 { + return m + } else { + return GCD(m, n) + } +} + +// 返回切片中所有数的累加值 +func Sum(arr []int32) int32 { + var sum int32 = 0 + for _, i := range arr { + sum += i + } + return sum +} diff --git a/vendor/gitee.com/chunanyong/dm/util/zzt.go b/vendor/gitee.com/chunanyong/dm/util/zzt.go new file mode 100644 index 000000000..e652897e3 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/util/zzt.go @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package util + +import ( + "bytes" + "runtime" + "strings" + "time" + "unicode" +) + +type stringutil struct{} + +var StringUtil = &stringutil{} + +/*----------------------------------------------------*/ +func (StringUtil *stringutil) LineSeparator() string { + var lineSeparator string + if strings.Contains(runtime.GOOS, "windos") { + lineSeparator = "\r\n" + } else if strings.Contains(runtime.GOOS, "mac") { + lineSeparator = "\r" + } else { + lineSeparator = "\n" + } + + return lineSeparator +} + +func (StringUtil *stringutil) Equals(str1 string, str2 string) bool { + return str1 == str2 +} + +func (StringUtil *stringutil) EqualsIgnoreCase(str1 string, str2 string) bool { + return strings.ToUpper(str1) == strings.ToUpper(str2) +} + +func (StringUtil *stringutil) StartsWith(s string, subStr string) bool { + return strings.Index(s, subStr) == 0 +} + +func (StringUtil *stringutil) StartWithIgnoreCase(s string, subStr string) bool { + return strings.HasPrefix(strings.ToLower(s), strings.ToLower(subStr)) +} + +func (StringUtil *stringutil) EndsWith(s string, subStr string) bool { + return strings.LastIndex(s, subStr) == len(s)-1 +} + +func (StringUtil *stringutil) IsDigit(str string) bool { + if str == "" { + return false + } + sz := len(str) + for i := 0; i < sz; i++ { + if unicode.IsDigit(rune(str[i])) { + continue + } else { + return false + } + } + return true +} + +func (StringUtil *stringutil) FormatDir(dir string) string { + dir = strings.TrimSpace(dir) + if dir != "" { + if !StringUtil.EndsWith(dir, PathSeparator) { + dir += PathSeparator + } + } + return dir +} + +func (StringUtil *stringutil) HexStringToBytes(s string) []byte { + str := s + + bs := make([]byte, 0) + flag := false + + str = strings.TrimSpace(str) + if strings.Index(str, "0x") == 0 || strings.Index(str, "0X") == 0 { + str = str[2:] + } + + if len(str) == 0 { + return bs + } + + var bsChr []byte + l := len(str) + + if l%2 == 0 { + bsChr = []byte(str) + } else { + l += 1 + bsChr = make([]byte, l) + bsChr[0] = '0' + for i := 0; i < l-1; i++ { + bsChr[i+1] = str[i] + } + } + + bs = make([]byte, l/2) + + pos := 0 + for i := 0; i < len(bsChr); i += 2 { + bt := convertHex(bsChr[i]) + bt2 := convertHex(bsChr[i+1]) + if int(bt) == 0xff || int(bt2) == 0xff { + flag = true + break + } + + bs[pos] = byte(bt*16 + bt2) + pos++ + } + + if flag { + bs = ([]byte)(str) + } + + return bs +} + +func convertHex(chr byte) byte { + if chr >= '0' && chr <= '9' { + return chr - '0' + } else if chr >= 'a' && chr <= 'f' { + return chr - 'a' + 10 + } else if chr >= 'A' && chr <= 'F' { + return chr - 'A' + 10 + } else { + return 0xff + } +} + +func (StringUtil *stringutil) BytesToHexString(bs []byte, pre bool) string { + if bs == nil { + return "" + } + if len(bs) == 0 { + return "" + } + + hexDigits := "0123456789ABCDEF" + ret := new(strings.Builder) + for _, b := range bs { + ret.WriteByte(hexDigits[0x0F&(b>>4)]) + ret.WriteByte(hexDigits[0x0F&b]) + } + if pre { + return "0x" + ret.String() + } + return ret.String() +} + +func (StringUtil *stringutil) ProcessSingleQuoteOfName(name string) string { + return StringUtil.processQuoteOfName(name, "'") +} + +func (StringUtil *stringutil) ProcessDoubleQuoteOfName(name string) string { + return StringUtil.processQuoteOfName(name, "\"") +} + +func (StringUtil *stringutil) processQuoteOfName(name string, quote string) string { + if quote == "" || name == "" { + return name + } + + temp := name + result := bytes.NewBufferString("") + index := -1 + quetoLength := len(quote) + index = strings.Index(temp, quote) + for index != -1 { + result.WriteString(temp[:index+quetoLength]) + result.WriteString(quote) + temp = temp[index+quetoLength:] + index = strings.Index(temp, quote) + } + result.WriteString(temp) + return result.String() +} + +func (StringUtil *stringutil) FormatTime() string { + return time.Now().Format("2006-01-02 15:04:05") +} + +func (StringUtil *stringutil) SubstringBetween(str string, open string, close string) string { + if str == "" { + return "" + } + + iopen := -1 + if open != "" { + iopen = strings.Index(str, open) + } + + iclose := -1 + if close != "" { + iclose = strings.LastIndex(str, close) + } + + if iopen == -1 && iclose == -1 { + return "" + } else if iopen == -1 { + return str[0:iclose] + } else if iclose == -1 { + return str[iopen:] + } else { + return str[iopen:iclose] + } +} diff --git a/vendor/gitee.com/chunanyong/dm/v.go b/vendor/gitee.com/chunanyong/dm/v.go new file mode 100644 index 000000000..3e586e161 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/v.go @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import "database/sql/driver" + +type DmStruct struct { + TypeData + m_strctDesc *StructDescriptor // 结构体的描述信息 + + m_attribs []TypeData // 各属性值 + + m_objCount int // 一个数组项中存在对象类型的个数(class、动态数组) + + m_strCount int // 一个数组项中存在字符串类型的个数 + + typeName string + + elements []interface{} + + // Valid为false代表DmArray数据在数据库中为NULL + Valid bool +} + +// 数据库自定义类型Struct构造函数,typeName为库中定义的类型名称,elements为该类型每个字段的值 +// +// 例如,自定义类型语句为:create or replace type myType as object (a1 int, a2 varchar); +// +// 则绑入绑出的go对象为: val := dm.NewDmStruct("myType", []interface{} {123, "abc"}) +func NewDmStruct(typeName string, elements []interface{}) *DmStruct { + ds := new(DmStruct) + ds.typeName = typeName + ds.elements = elements + ds.Valid = true + return ds +} + +func (ds *DmStruct) create(dc *DmConnection) (*DmStruct, error) { + desc, err := newStructDescriptor(ds.typeName, dc) + if err != nil { + return nil, err + } + return ds.createByStructDescriptor(desc, dc) +} + +func newDmStructByTypeData(atData []TypeData, desc *TypeDescriptor) *DmStruct { + ds := new(DmStruct) + ds.Valid = true + ds.initTypeData() + ds.m_strctDesc = newStructDescriptorByTypeDescriptor(desc) + ds.m_attribs = atData + return ds +} + +func (dest *DmStruct) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmStruct) + // 将Valid标志置false表示数据库中该列为NULL + (*dest).Valid = false + return nil + case *DmStruct: + *dest = *src + return nil + default: + return UNSUPPORTED_SCAN.throw() + } +} + +func (dt DmStruct) Value() (driver.Value, error) { + if !dt.Valid { + return nil, nil + } + return dt, nil +} + +func (ds *DmStruct) getAttribsTypeData() []TypeData { + return ds.m_attribs +} + +func (ds *DmStruct) createByStructDescriptor(desc *StructDescriptor, conn *DmConnection) (*DmStruct, error) { + ds.initTypeData() + + if nil == desc { + return nil, ECGO_INVALID_PARAMETER_VALUE.throw() + } + + ds.m_strctDesc = desc + if nil == ds.elements { + ds.m_attribs = make([]TypeData, desc.getSize()) + } else { + if desc.getSize() != len(ds.elements) && desc.getObjId() != 4 { + return nil, ECGO_STRUCT_MEM_NOT_MATCH.throw() + } + var err error + ds.m_attribs, err = TypeDataSV.toStruct(ds.elements, ds.m_strctDesc.m_typeDesc) + if err != nil { + return nil, err + } + } + + return ds, nil +} + +// 获取Struct对象在数据库中的类型名称 +func (ds *DmStruct) GetSQLTypeName() (string, error) { + return ds.m_strctDesc.m_typeDesc.getFulName() +} + +// 获取Struct对象中的各个字段的值 +func (ds *DmStruct) GetAttributes() ([]interface{}, error) { + return TypeDataSV.toJavaArrayByDmStruct(ds) +} + +func (ds *DmStruct) checkCol(col int) error { + if col < 1 || col > len(ds.m_attribs) { + return ECGO_INVALID_SEQUENCE_NUMBER.throw() + } + return nil +} + +// 获取指定索引的成员变量值,以TypeData的形式给出,col 1 based +func (ds *DmStruct) getAttrValue(col int) (*TypeData, error) { + err := ds.checkCol(col) + if err != nil { + return nil, err + } + return &ds.m_attribs[col-1], nil +} + +func (ds *DmStruct) checkValid() error { + if !ds.Valid { + return ECGO_IS_NULL.throw() + } + return nil +} diff --git a/vendor/gitee.com/chunanyong/dm/w.go b/vendor/gitee.com/chunanyong/dm/w.go new file mode 100644 index 000000000..e21dd66c5 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/w.go @@ -0,0 +1,231 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "database/sql/driver" + "strings" + "time" +) + +const ( + Seconds_1900_1970 = 2209017600 + + OFFSET_YEAR = 0 + + OFFSET_MONTH = 1 + + OFFSET_DAY = 2 + + OFFSET_HOUR = 3 + + OFFSET_MINUTE = 4 + + OFFSET_SECOND = 5 + + OFFSET_NANOSECOND = 6 + + OFFSET_TIMEZONE = 7 + + DT_LEN = 8 + + INVALID_VALUE = int(INT32_MIN) + + NANOSECOND_DIGITS = 9 + + NANOSECOND_POW = 1000000000 +) + +type DmTimestamp struct { + dt []int + dtype int + scale int + oracleFormatPattern string + oracleDateLanguage int + + // Valid为false代表DmArray数据在数据库中为NULL + Valid bool +} + +func newDmTimestampFromDt(dt []int, dtype int, scale int) *DmTimestamp { + dmts := new(DmTimestamp) + dmts.Valid = true + dmts.dt = dt + dmts.dtype = dtype + dmts.scale = scale + return dmts +} + +func newDmTimestampFromBytes(bytes []byte, column column, conn *DmConnection) *DmTimestamp { + dmts := new(DmTimestamp) + dmts.Valid = true + dmts.dt = decode(bytes, column.isBdta, column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + + if isLocalTimeZone(int(column.colType), int(column.scale)) { + dmts.scale = getLocalTimeZoneScale(int(column.colType), int(column.scale)) + } else { + dmts.scale = int(column.scale) + } + + dmts.dtype = int(column.colType) + dmts.scale = int(column.scale) + dmts.oracleDateLanguage = int(conn.OracleDateLanguage) + switch column.colType { + case DATE: + dmts.oracleFormatPattern = conn.FormatDate + case TIME: + dmts.oracleFormatPattern = conn.FormatTime + case TIME_TZ: + dmts.oracleFormatPattern = conn.FormatTimeTZ + case DATETIME, DATETIME2: + dmts.oracleFormatPattern = conn.FormatTimestamp + case DATETIME_TZ, DATETIME2_TZ: + dmts.oracleFormatPattern = conn.FormatTimestampTZ + } + return dmts +} + +func NewDmTimestampFromString(str string) (*DmTimestamp, error) { + dt := make([]int, DT_LEN) + dtype, err := toDTFromString(strings.TrimSpace(str), dt) + if err != nil { + return nil, err + } + + if dtype == DATE { + return newDmTimestampFromDt(dt, dtype, 0), nil + } + return newDmTimestampFromDt(dt, dtype, 6), nil +} + +func NewDmTimestampFromTime(time time.Time) *DmTimestamp { + dt := toDTFromTime(time) + return newDmTimestampFromDt(dt, DATETIME, 6) +} + +func (dmTimestamp *DmTimestamp) ToTime() time.Time { + return toTimeFromDT(dmTimestamp.dt, 0) +} + +// 获取年月日时分秒毫秒时区 +func (dmTimestamp *DmTimestamp) GetDt() []int { + return dmTimestamp.dt +} + +func (dmTimestamp *DmTimestamp) CompareTo(ts DmTimestamp) int { + if dmTimestamp.ToTime().Equal(ts.ToTime()) { + return 0 + } else if dmTimestamp.ToTime().Before(ts.ToTime()) { + return -1 + } else { + return 1 + } +} + +func (dmTimestamp *DmTimestamp) String() string { + if dmTimestamp.oracleFormatPattern != "" { + return dtToStringByOracleFormat(dmTimestamp.dt, dmTimestamp.oracleFormatPattern, int32(dmTimestamp.scale), dmTimestamp.oracleDateLanguage) + } + return dtToString(dmTimestamp.dt, dmTimestamp.dtype, dmTimestamp.scale) +} + +func (dest *DmTimestamp) Scan(src interface{}) error { + if dest == nil { + return ECGO_STORE_IN_NIL_POINTER.throw() + } + switch src := src.(type) { + case nil: + *dest = *new(DmTimestamp) + // 将Valid标志置false表示数据库中该列为NULL + (*dest).Valid = false + return nil + case *DmTimestamp: + *dest = *src + return nil + case time.Time: + ret := NewDmTimestampFromTime(src) + *dest = *ret + return nil + case string: + ret, err := NewDmTimestampFromString(src) + if err != nil { + return err + } + *dest = *ret + return nil + default: + return UNSUPPORTED_SCAN.throw() + } +} + +func (dmTimestamp DmTimestamp) Value() (driver.Value, error) { + if !dmTimestamp.Valid { + return nil, nil + } + return dmTimestamp, nil +} + +//func (dmTimestamp *DmTimestamp) toBytes() ([]byte, error) { +// return encode(dmTimestamp.dt, dmTimestamp.dtype, dmTimestamp.scale, dmTimestamp.dt[OFFSET_TIMEZONE]) +//} + +/** + * 获取当前对象的年月日时分秒,如果原来没有decode会先decode; + */ +func (dmTimestamp *DmTimestamp) getDt() []int { + return dmTimestamp.dt +} + +func (dmTimestamp *DmTimestamp) getTime() int64 { + sec := toTimeFromDT(dmTimestamp.dt, 0).Unix() + return sec + int64(dmTimestamp.dt[OFFSET_NANOSECOND]) +} + +func (dmTimestamp *DmTimestamp) setTime(time int64) { + timeInMillis := (time / 1000) * 1000 + nanos := (int64)((time % 1000) * 1000000) + if nanos < 0 { + nanos = 1000000000 + nanos + timeInMillis = (((time / 1000) - 1) * 1000) + } + dmTimestamp.dt = toDTFromUnix(timeInMillis, nanos) +} + +func (dmTimestamp *DmTimestamp) setTimezone(tz int) error { + // DM中合法的时区取值范围为-12:59至+14:00 + if tz <= -13*60 || tz > 14*60 { + return ECGO_INVALID_DATETIME_FORMAT.throw() + } + dmTimestamp.dt[OFFSET_TIMEZONE] = tz + return nil +} + +func (dmTimestamp *DmTimestamp) getNano() int64 { + return int64(dmTimestamp.dt[OFFSET_NANOSECOND] * 1000) +} + +func (dmTimestamp *DmTimestamp) setNano(nano int64) { + dmTimestamp.dt[OFFSET_NANOSECOND] = (int)(nano / 1000) +} + +func (dmTimestamp *DmTimestamp) string() string { + if dmTimestamp.oracleFormatPattern != "" { + return dtToStringByOracleFormat(dmTimestamp.dt, dmTimestamp.oracleFormatPattern, int32(dmTimestamp.scale), dmTimestamp.oracleDateLanguage) + } + return dtToString(dmTimestamp.dt, dmTimestamp.dtype, dmTimestamp.scale) +} + +func (dmTimestamp *DmTimestamp) checkValid() error { + if !dmTimestamp.Valid { + return ECGO_IS_NULL.throw() + } + return nil +} + +/* for gorm v2 */ +func (d *DmTimestamp) GormDataType() string { + return "TIMESTAMP" +} \ No newline at end of file diff --git a/vendor/gitee.com/chunanyong/dm/x.go b/vendor/gitee.com/chunanyong/dm/x.go new file mode 100644 index 000000000..b2f6ebf69 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/x.go @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "context" + "strconv" + "strings" + "sync" + "time" +) + +const ( + STATUS_VALID_TIME = 20 * time.Second // ms + + // sort 值 + SORT_SERVER_MODE_INVALID = -1 // 不允许连接的模式 + + SORT_SERVER_NOT_ALIVE = -2 // 站点无法连接 + + SORT_UNKNOWN = INT32_MAX // 站点还未连接过,模式未知 + + SORT_NORMAL = 30 + + SORT_PRIMARY = 20 + + SORT_STANDBY = 10 + + // OPEN>MOUNT>SUSPEND + SORT_OPEN = 3 + + SORT_MOUNT = 2 + + SORT_SUSPEND = 1 +) + +type ep struct { + host string + port int32 + alive bool + statusRefreshTs int64 // 状态更新的时间点 + serverMode int32 + serverStatus int32 + dscControl bool + sort int32 + epSeqno int32 + epStatus int32 + lock sync.Mutex +} + +func newEP(host string, port int32) *ep { + ep := new(ep) + ep.host = host + ep.port = port + ep.serverMode = -1 + ep.serverStatus = -1 + ep.sort = SORT_UNKNOWN + return ep +} + +func (ep *ep) getSort(checkTime bool) int32 { + if checkTime { + if time.Now().UnixNano()-ep.statusRefreshTs < int64(STATUS_VALID_TIME) { + return ep.sort + } else { + return SORT_UNKNOWN + } + } + return ep.sort +} + +func (ep *ep) calcSort(loginMode int32) int32 { + var sort int32 = 0 + switch loginMode { + case LOGIN_MODE_PRIMARY_FIRST: + { + // 主机优先:PRIMARY>NORMAL>STANDBY + switch ep.serverMode { + case SERVER_MODE_NORMAL: + sort += SORT_NORMAL * 10 + case SERVER_MODE_PRIMARY: + sort += SORT_PRIMARY * 100 + case SERVER_MODE_STANDBY: + sort += SORT_STANDBY + } + } + case LOGIN_MODE_STANDBY_FIRST: + { + // STANDBY优先: STANDBY>PRIMARY>NORMAL + switch ep.serverMode { + case SERVER_MODE_NORMAL: + sort += SORT_NORMAL + case SERVER_MODE_PRIMARY: + sort += SORT_PRIMARY * 10 + case SERVER_MODE_STANDBY: + sort += SORT_STANDBY * 100 + } + } + case LOGIN_MODE_NORMAL_FIRST: + { + // NORMAL优先: NORMAL>PRIMARY>STANDBY + switch ep.serverMode { + case SERVER_MODE_STANDBY: + sort += SORT_STANDBY + case SERVER_MODE_PRIMARY: + sort += SORT_PRIMARY * 10 + case SERVER_MODE_NORMAL: + sort += SORT_NORMAL * 100 + } + } + case LOGIN_MODE_PRIMARY_ONLY: + if ep.serverMode != SERVER_MODE_PRIMARY { + return SORT_SERVER_MODE_INVALID + } + sort += SORT_PRIMARY + case LOGIN_MODE_STANDBY_ONLY: + if ep.serverMode != SERVER_MODE_STANDBY { + return SORT_SERVER_MODE_INVALID + } + sort += SORT_STANDBY + } + + switch ep.serverStatus { + case SERVER_STATUS_MOUNT: + sort += SORT_MOUNT + case SERVER_STATUS_OPEN: + sort += SORT_OPEN + case SERVER_STATUS_SUSPEND: + sort += SORT_SUSPEND + } + return sort +} + +func (ep *ep) refreshStatus(alive bool, conn *DmConnection) { + ep.lock.Lock() + defer ep.lock.Unlock() + ep.alive = alive + ep.statusRefreshTs = time.Now().UnixNano() + if alive { + ep.serverMode = conn.SvrMode + ep.serverStatus = conn.SvrStat + ep.dscControl = conn.dscControl + ep.sort = ep.calcSort(int32(conn.dmConnector.loginMode)) + } else { + ep.serverMode = -1 + ep.serverStatus = -1 + ep.dscControl = false + ep.sort = SORT_SERVER_NOT_ALIVE + } +} + +func (ep *ep) connect(connector *DmConnector) (*DmConnection, error) { + connector.host = ep.host + connector.port = ep.port + conn, err := connector.connectSingle(context.Background()) + if err != nil { + ep.refreshStatus(false, conn) + return nil, err + } + ep.refreshStatus(true, conn) + return conn, nil +} + +func (ep *ep) getServerStatusDesc(serverStatus int32) string { + ret := "" + switch ep.serverStatus { + case SERVER_STATUS_OPEN: + ret = "OPEN" + case SERVER_STATUS_MOUNT: + ret = "MOUNT" + case SERVER_STATUS_SUSPEND: + ret = "SUSPEND" + default: + ret = "UNKNOWN" + } + return ret +} + +func (ep *ep) getServerModeDesc(serverMode int32) string { + ret := "" + switch ep.serverMode { + case SERVER_MODE_NORMAL: + ret = "NORMAL" + case SERVER_MODE_PRIMARY: + ret = "PRIMARY" + case SERVER_MODE_STANDBY: + ret = "STANDBY" + default: + ret = "UNKNOWN" + } + return ret +} + +func (ep *ep) String() string { + dscControl := ")" + if ep.dscControl { + dscControl = ", DSC CONTROL)" + } + return strings.TrimSpace(ep.host) + ":" + strconv.Itoa(int(ep.port)) + + " (" + ep.getServerModeDesc(ep.serverMode) + ", " + ep.getServerStatusDesc(ep.serverStatus) + dscControl +} diff --git a/vendor/gitee.com/chunanyong/dm/y.go b/vendor/gitee.com/chunanyong/dm/y.go new file mode 100644 index 000000000..dcf2f12c8 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/y.go @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "bytes" + "math/rand" + "sync" + "time" + + "gitee.com/chunanyong/dm/util" +) + +/** + * dm_svc.conf中配置的服务名对应的一组实例, 以及相关属性和状态信息 + * + * 需求: + * 1. 连接均匀分布在各个节点上 + * 2. loginMode,loginStatus匹配 + * 3. 连接异常节点比较耗时,在DB列表中包含异常节点时异常连接尽量靠后,减少对建连接速度的影响 + * + * + * DB 连接顺序: + * 1. well distribution,每次连接都从列表的下一个节点开始 + * 2. 用DB sort值按从大到小排序,sort为一个四位数XXXX,个位--serverStatus,十位--serverMode,共 有三种模式,最优先的 *100, 次优先的*10 + */ +type epGroup struct { + name string + epList []*ep + props *Properties + epStartPos int32 // wellDistribute 起始位置 + lock sync.Mutex +} + +func newEPGroup(name string, serverList []*ep) *epGroup { + g := new(epGroup) + g.name = name + g.epList = serverList + if serverList == nil || len(serverList) == 0 { + g.epStartPos = -1 + } else { + // 保证进程间均衡,起始位置采用随机值 + g.epStartPos = rand.Int31n(int32(len(serverList))) - 1 + } + return g +} + +func (g *epGroup) connect(connector *DmConnector) (*DmConnection, error) { + var dbSelector = g.getEPSelector(connector) + var ex error = nil + // 如果配置了loginMode的主、备等优先策略,而未找到最高优先级的节点时持续循环switchtimes次,如果最终还是没有找到最高优先级则选择次优先级的 + // 如果只有一个节点,一轮即可决定是否连接;多个节点时保证switchTimes轮尝试,最后一轮决定用哪个节点(由于节点已经按照模式优先级排序,最后一轮理论上就是连第一个节点) + var cycleCount int32 + if len(g.epList) == 1 { + cycleCount = 1 + } else { + cycleCount = connector.switchTimes + 1 + } + for i := int32(0); i < cycleCount; i++ { + // 循环了一遍,如果没有符合要求的, 重新排序, 再尝试连接 + conn, err := g.traverseServerList(connector, dbSelector, i == 0, i == cycleCount-1) + if err != nil { + ex = err + time.Sleep(time.Duration(connector.switchInterval) * time.Millisecond) + continue + } + return conn, nil + } + return nil, ex +} + +func (g *epGroup) getEPSelector(connector *DmConnector) *epSelector { + if connector.epSelector == TYPE_HEAD_FIRST { + return newEPSelector(g.epList) + } else { + serverCount := int32(len(g.epList)) + sortEPs := make([]*ep, serverCount) + g.lock.Lock() + defer g.lock.Unlock() + g.epStartPos = (g.epStartPos + 1) % serverCount + for i := int32(0); i < serverCount; i++ { + sortEPs[i] = g.epList[(i+g.epStartPos)%serverCount] + } + return newEPSelector(sortEPs) + } +} + +/** +* 从指定编号开始,遍历一遍服务名中的ip列表,只连接指定类型(主机或备机)的ip +* @param servers +* @param checkTime +* +* @exception +* DBError.ECJDBC_INVALID_SERVER_MODE 有站点的模式不匹配 +* DBError.ECJDBC_COMMUNITION_ERROR 所有站点都连不上 + */ +func (g *epGroup) traverseServerList(connector *DmConnector, epSelector *epSelector, first bool, last bool) (*DmConnection, error) { + epList := epSelector.sortDBList(first) + errorMsg := bytes.NewBufferString("") + var ex error = nil // 第一个错误 + for _, server := range epList { + conn, err := server.connect(connector) + if err != nil { + if ex == nil { + ex = err + } + errorMsg.WriteString("[") + errorMsg.WriteString(server.String()) + errorMsg.WriteString("]") + errorMsg.WriteString(err.Error()) + errorMsg.WriteString(util.StringUtil.LineSeparator()) + continue + } + valid, err := epSelector.checkServerMode(conn, last) + if err != nil { + if ex == nil { + ex = err + } + errorMsg.WriteString("[") + errorMsg.WriteString(server.String()) + errorMsg.WriteString("]") + errorMsg.WriteString(err.Error()) + errorMsg.WriteString(util.StringUtil.LineSeparator()) + continue + } + if !valid { + conn.close() + err = ECGO_INVALID_SERVER_MODE.throw() + if ex == nil { + ex = err + } + errorMsg.WriteString("[") + errorMsg.WriteString(server.String()) + errorMsg.WriteString("]") + errorMsg.WriteString(err.Error()) + errorMsg.WriteString(util.StringUtil.LineSeparator()) + continue + } + return conn, nil + } + if ex != nil { + return nil, ex + } + return nil, ECGO_COMMUNITION_ERROR.addDetail(errorMsg.String()).throw() +} diff --git a/vendor/gitee.com/chunanyong/dm/z.go b/vendor/gitee.com/chunanyong/dm/z.go new file mode 100644 index 000000000..7bb3315cf --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/z.go @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import "sort" + +const ( + TYPE_WELL_DISTRIBUTE = 0 + TYPE_HEAD_FIRST = 1 +) + +type epSelector struct { + dbs []*ep +} + +func newEPSelector(dbs []*ep) *epSelector { + return &epSelector{dbs} +} + +func (s *epSelector) sortDBList(first bool) []*ep { + if !first { + // 按sort从大到小排序,相同sort值顺序不变 + sort.Slice(s.dbs, func(i, j int) bool { + return s.dbs[i].getSort(first) > s.dbs[j].getSort(first) + }) + } + return s.dbs +} + +func (s *epSelector) checkServerMode(conn *DmConnection, last bool) (bool, error) { + // 只连dsc control节点 + if conn.dmConnector.loginDscCtrl && !conn.dscControl { + conn.close() + return false, ECGO_INVALID_SERVER_MODE.throw() + } + // 模式不匹配, 这里使用的是连接之前的sort,连接之后server的状态可能发生改变sort也可能改变 + if conn.dmConnector.loginStatus > 0 && int(conn.SvrStat) != conn.dmConnector.loginStatus { + conn.close() + return false, ECGO_INVALID_SERVER_MODE.throw() + } + if last { + switch conn.dmConnector.loginMode { + case LOGIN_MODE_PRIMARY_ONLY: + return conn.SvrMode == SERVER_MODE_PRIMARY, nil + case LOGIN_MODE_STANDBY_ONLY: + return conn.SvrMode == SERVER_MODE_STANDBY, nil + default: + return true, nil + } + } + switch conn.dmConnector.loginMode { + case LOGIN_MODE_NORMAL_FIRST: + return conn.SvrMode == SERVER_MODE_NORMAL, nil + case LOGIN_MODE_PRIMARY_FIRST, LOGIN_MODE_PRIMARY_ONLY: + return conn.SvrMode == SERVER_MODE_PRIMARY, nil + case LOGIN_MODE_STANDBY_FIRST, LOGIN_MODE_STANDBY_ONLY: + return conn.SvrMode == SERVER_MODE_STANDBY, nil + default: + break + } + return false, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/za.go b/vendor/gitee.com/chunanyong/dm/za.go new file mode 100644 index 000000000..a73f5ee2a --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/za.go @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "bytes" + "fmt" + "runtime" + + "gitee.com/chunanyong/dm/i18n" +) + +// 驱动级错误 +var ( + DSN_INVALID_SCHEMA = newDmError(9001, "error.dsn.invalidSchema") + UNSUPPORTED_SCAN = newDmError(9002, "error.unsupported.scan") + INVALID_PARAMETER_NUMBER = newDmError(9003, "error.invalidParameterNumber") + THIRD_PART_CIPHER_INIT_FAILED = newDmError(9004, "error.initThirdPartCipherFailed") + ECGO_NOT_QUERY_SQL = newDmError(9005, "error.notQuerySQL") + ECGO_NOT_EXEC_SQL = newDmError(9006, "error.notExecSQL") + ECGO_UNKOWN_NETWORK = newDmError(9007, "error.unkownNetWork") + ECGO_INVALID_CONN = newDmError(9008, "error.invalidConn") + ECGO_UNSUPPORTED_INPARAM_TYPE = newDmError(9009, "error.unsupportedInparamType") + ECGO_UNSUPPORTED_OUTPARAM_TYPE = newDmError(9010, "error.unsupportedOutparamType") + ECGO_STORE_IN_NIL_POINTER = newDmError(9011, "error.storeInNilPointer") + ECGO_IS_NULL = newDmError(9012, "error.isNull") +) + +var ( + ECGO_CONNECTION_SWITCH_FAILED = newDmError(20001, "error.connectionSwitchFailed") + ECGO_CONNECTION_SWITCHED = newDmError(20000, "error.connectionSwitched") + ECGO_COMMUNITION_ERROR = newDmError(6001, "error.communicationError") + ECGO_MSG_CHECK_ERROR = newDmError(6002, "error.msgCheckError") + ECGO_INVALID_TIME_INTERVAL = newDmError(6005, "error.invalidTimeInterval") + ECGO_UNSUPPORTED_TYPE = newDmError(6006, "error.unsupportedType") + ECGO_DATA_CONVERTION_ERROR = newDmError(6007, "error.dataConvertionError") + ECGO_INVALID_SQL_TYPE = newDmError(6009, "error.invalidSqlType") + ECGO_INVALID_DATETIME_FORMAT = newDmError(6015, "error.invalidDateTimeFormat") + ECGO_INVALID_COLUMN_TYPE = newDmError(6016, "error.invalidColumnType") + ECGO_RESULTSET_IS_READ_ONLY = newDmError(6029, "error.resultsetInReadOnlyStatus") + ECGO_INVALID_SEQUENCE_NUMBER = newDmError(6032, "error.invalidSequenceNumber") + ECGO_RESULTSET_CLOSED = newDmError(6034, "errorResultSetColsed") + ECGO_STATEMENT_HANDLE_CLOSED = newDmError(6035, "errorStatementHandleClosed") + ECGO_INVALID_PARAMETER_VALUE = newDmError(6036, "error.invalidParamterValue") + ECGO_INVALID_TRAN_ISOLATION = newDmError(6038, "error.invalidTranIsolation") + ECGO_COMMIT_IN_AUTOCOMMIT_MODE = newDmError(6039, "errorCommitInAutoCommitMode") + ECGO_ROLLBACK_IN_AUTOCOMMIT_MODE = newDmError(6040, "errorRollbackInAutoCommitMode") + ECGO_UNBINDED_PARAMETER = newDmError(6054, "error.unbindedParameter") + ECGO_PARAM_COUNT_LIMIT = newDmError(6056, "error.ParamCountLimit") + ECGO_INVALID_LENGTH_OR_OFFSET = newDmError(6057, "error.invalidLenOrOffset") + ECGO_CONNECTION_CLOSED = newDmError(6060, "error.error.connectionClosedOrNotBuild") + ECGO_INTERVAL_OVERFLOW = newDmError(6066, "error.intervalValueOverflow") + ECGO_STRING_CUT = newDmError(6067, "error.stringCut") + ECGO_INVALID_HEX = newDmError(6068, "error.invalidHex") + ECGO_INVALID_CIPHER = newDmError(6069, "error.invalidCipher") + ECGO_INVALID_BFILE_STR = newDmError(6070, "error.invalidBFile") + ECGO_OSAUTH_ERROR = newDmError(6073, "error.osauthError") + ECGO_ERROR_SERVER_VERSION = newDmError(6074, "error.serverVersion") + ECGO_USERNAME_TOO_LONG = newDmError(6075, "error.usernameTooLong") + ECGO_PASSWORD_TOO_LONG = newDmError(6076, "error.passwordTooLong") + ECGO_INVALID_COMPLEX_TYPE_NAME = newDmError(6079, "error.invalidComplexTypeName") + ECGO_STRUCT_MEM_NOT_MATCH = newDmError(6080, "error.structMemNotMatch") + ECGO_INVALID_OBJ_BLOB = newDmError(6081, "error.invalidObjBlob") + ECGO_INVALID_ARRAY_LEN = newDmError(6082, "error.invalidArrayLen") + ECGO_INVALID_SERVER_MODE = newDmError(6091, "error.invalidServerMode") + ECGO_DATA_TOO_LONG = newDmError(6092, "error.dataTooLong") + ECGO_BATCH_ERROR = newDmError(6093, "error.batchError") + ECGO_MSG_TOO_LONG = newDmError(6101, "error.msgTooLong") + ECGO_INVALID_DATETIME_VALUE = newDmError(6103, "error.invalidDateTimeValue") + + ECGO_INIT_SSL_FAILED = newDmError(20002, "error.SSLInitFailed") + ECGO_LOB_FREED = newDmError(20003, "error.LobDataHasFreed") + ECGO_FATAL_ERROR = newDmError(20004, "error.fatalError") +) + +// Svr Msg Err +var ( + ECGO_DATA_OVERFLOW = newDmError(-6102, "error.dataOverflow") + ECGO_DATETIME_OVERFLOW = newDmError(-6112, "error.datetimeOverflow") + EC_RN_EXCEED_ROWSET_SIZE = newDmError(-7036, "") + EC_BP_WITH_ERROR = newDmError(121, "warning.bpWithErr") +) + +type DmError struct { + ErrCode int32 + ErrText string + stack []uintptr + detail string +} + +func newDmError(errCode int32, errText string) *DmError { + de := new(DmError) + de.ErrCode = errCode + de.ErrText = errText + de.stack = nil + de.detail = "" + return de +} + +func (dmError *DmError) throw() *DmError { + var pcs [32]uintptr + n := runtime.Callers(2, pcs[:]) + dmError.stack = pcs[0:n] + return dmError +} + +func (dmError *DmError) FormatStack() string { + if dmError == nil || dmError.stack == nil { + return "" + } + buffer := bytes.NewBuffer(nil) + index := 1 + space := " " + for _, p := range dmError.stack { + if fn := runtime.FuncForPC(p - 1); fn != nil { + file, line := fn.FileLine(p - 1) + buffer.WriteString(fmt.Sprintf(" %d).%s%s\n \t%s:%d\n", index, space, fn.Name(), file, line)) + index++ + } + } + return buffer.String() +} + +func (dmError *DmError) getErrText() string { + return i18n.Get(dmError.ErrText, Locale) +} + +func (dmError *DmError) Error() string { + return fmt.Sprintf("Error %d: %s", dmError.ErrCode, dmError.getErrText()) + dmError.detail + "\n" + "stack info:\n" + dmError.FormatStack() +} + +// 扩充ErrText +func (dmError *DmError) addDetail(detail string) *DmError { + dmError.detail = detail + return dmError +} +func (dmError *DmError) addDetailln(detail string) *DmError { + return dmError.addDetail("\n" + detail) +} diff --git a/vendor/gitee.com/chunanyong/dm/zb.go b/vendor/gitee.com/chunanyong/dm/zb.go new file mode 100644 index 000000000..ec3ba561b --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zb.go @@ -0,0 +1,307 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +const ( + PARAM_COUNT_LIMIT int32 = 65536 + + IGNORE_TARGET_LENGTH int32 = -1 + + IGNORE_TARGET_SCALE int32 = -1 + + IGNORE_TARGET_TYPE = INT32_MIN + + TYPE_FLAG_UNKNOWN byte = 0 // 未知类型 + + TYPE_FLAG_EXACT byte = 1 // 精确类型 + + TYPE_FLAG_RECOMMEND byte = 2 // 推荐类型 + + IO_TYPE_UNKNOWN int8 = -1 + + IO_TYPE_IN int8 = 0 + + IO_TYPE_OUT int8 = 1 + + IO_TYPE_INOUT int8 = 2 + + MASK_ORACLE_DATE int32 = 1 + + MASK_ORACLE_FLOAT int32 = 2 + + MASK_BFILE int32 = 3 + + MASK_LOCAL_DATETIME int32 = 4 +) + +type execRetInfo struct { + // param + outParamDatas [][]byte + + // rs + hasResultSet bool + + rsDatas [][][]byte + + rsSizeof int // 结果集数据占用多少空间,(消息中结果集起始位置到 rsCacheOffset + // 的空间大小,这和实际的rsDatas占用空间大小有一定出入,这里粗略估算,用于结果集缓存时的空间管理) + + rsCacheOffset int32 // 缓存信息,在响应消息体中的偏移,0表示不存在,仅结果集缓存中可以用 + + rsBdta bool + + rsUpdatable bool + + rsRowIds []int64 + + // rs cache + tbIds []int32 + + tbTss []int64 + + // print + printLen int32 + + printMsg string + + // explain + explain string + + // 影响行数 + updateCount int64 // Insert/Update/Delet影响行数, select结果集的总行数 + + updateCounts []int64 // 批量影响行数 + + // 键 + rowid int64 + + lastInsertId int64 + + // other + retSqlType int16 // 执行返回的语句类型 + + execId int32 +} + +type column struct { + typeName string + + colType int32 + + prec int32 + + scale int32 + + name string + + tableName string + + schemaName string + + nullable bool + + identity bool + + readonly bool // 是否只读 + + baseName string + + // lob info + lob bool + + lobTabId int32 + + lobColId int16 + + // 用于描述ARRAY、STRUCT类型的特有描述信息 + typeDescriptor *TypeDescriptor + + isBdta bool + + mask int32 +} + +type parameter struct { + column + + typeFlag byte + + ioType int8 + + outJType int32 + + outScale int32 + + outObjectName string + + cursorStmt *DmStatement + + hasDefault bool +} + +func (column *column) InitColumn() *column { + column.typeName = "" + + column.colType = 0 + + column.prec = 0 + + column.scale = 0 + + column.name = "" + + column.tableName = "" + + column.schemaName = "" + + column.nullable = false + + column.identity = false + + column.readonly = false + + column.baseName = "" + + // lob info + column.lob = false + + column.lobTabId = 0 + + column.lobColId = 0 + + // 用于描述ARRAY、STRUCT类型的特有描述信息 + column.typeDescriptor = nil + + column.isBdta = false + + return column +} + +func (parameter *parameter) InitParameter() *parameter { + parameter.InitColumn() + + parameter.typeFlag = TYPE_FLAG_UNKNOWN + + parameter.ioType = IO_TYPE_UNKNOWN + + parameter.outJType = IGNORE_TARGET_TYPE + + parameter.outScale = IGNORE_TARGET_SCALE + + parameter.outObjectName = "" + + parameter.cursorStmt = nil + + return parameter +} + +func (parameter *parameter) resetType(colType int32) { + parameter.colType = colType + parameter.scale = 0 + switch colType { + case BIT, BOOLEAN: + parameter.prec = BIT_PREC + case TINYINT: + parameter.prec = TINYINT_PREC + case SMALLINT: + parameter.prec = SMALLINT_PREC + case INT: + parameter.prec = INT_PREC + case BIGINT: + parameter.prec = BIGINT_PREC + case CHAR, VARCHAR, VARCHAR2: + parameter.prec = VARCHAR_PREC + case CLOB: + parameter.prec = CLOB_PREC + case BINARY, VARBINARY: + parameter.prec = VARBINARY_PREC + case BLOB: + parameter.prec = BLOB_PREC + case DATE: + parameter.prec = DATE_PREC + case TIME: + parameter.prec = TIME_PREC + parameter.scale = 6 + case TIME_TZ: + parameter.prec = TIME_TZ_PREC + parameter.scale = 6 + case DATETIME: + parameter.prec = DATETIME_PREC + parameter.scale = 6 + case DATETIME_TZ: + parameter.prec = DATETIME_TZ_PREC + parameter.scale = 6 + case DATETIME2: + parameter.prec = DATETIME2_PREC + parameter.scale = 9 + case DATETIME2_TZ: + parameter.prec = DATETIME2_TZ_PREC + parameter.scale = 9 + case REAL,DOUBLE,DECIMAL,INTERVAL_YM,INTERVAL_DT,ARRAY,CLASS,PLTYPE_RECORD,SARRAY: + parameter.prec = 0 + case UNKNOWN, NULL: + // UNKNOWN 导致服务器断言 // setNull导致服务器报错“字符转换失败” + parameter.colType = VARCHAR + parameter.prec = VARCHAR_PREC + default: + } +} + +func (execInfo *execRetInfo) union(other *execRetInfo, startRow int, count int) { + if count == 1 { + execInfo.updateCounts[startRow] = other.updateCount + } else if execInfo.updateCounts != nil { + copy(execInfo.updateCounts[startRow:startRow+count], other.updateCounts[0:count]) + } + if execInfo.outParamDatas != nil { + execInfo.outParamDatas = append(execInfo.outParamDatas, other.outParamDatas...) + } +} + +func NewExceInfo() *execRetInfo { + + execInfo := execRetInfo{} + + execInfo.outParamDatas = nil + + execInfo.hasResultSet = false + + execInfo.rsDatas = nil + + execInfo.rsSizeof = 0 + + execInfo.rsCacheOffset = 0 + + execInfo.rsBdta = false + + execInfo.rsUpdatable = false + + execInfo.rsRowIds = nil + + execInfo.tbIds = nil + + execInfo.tbTss = nil + + execInfo.printLen = 0 + + execInfo.printMsg = "" + + execInfo.explain = "" + + execInfo.updateCount = 0 + + execInfo.updateCounts = nil + + execInfo.rowid = -1 + + execInfo.lastInsertId = 0 + // other + execInfo.retSqlType = -1 // 执行返回的语句类型 + + execInfo.execId = 0 + + return &execInfo +} diff --git a/vendor/gitee.com/chunanyong/dm/zc.go b/vendor/gitee.com/chunanyong/dm/zc.go new file mode 100644 index 000000000..02573531b --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zc.go @@ -0,0 +1,444 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "context" + "database/sql/driver" + "reflect" + "sync" + "sync/atomic" + "time" +) + +type filter interface { + DmDriverOpen(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnection, error) + DmDriverOpenConnector(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnector, error) + + DmConnectorConnect(filterChain *filterChain, c *DmConnector, ctx context.Context) (*DmConnection, error) + DmConnectorDriver(filterChain *filterChain, c *DmConnector) *DmDriver + + DmConnectionBegin(filterChain *filterChain, c *DmConnection) (*DmConnection, error) + DmConnectionBeginTx(filterChain *filterChain, c *DmConnection, ctx context.Context, opts driver.TxOptions) (*DmConnection, error) + DmConnectionCommit(filterChain *filterChain, c *DmConnection) error + DmConnectionRollback(filterChain *filterChain, c *DmConnection) error + DmConnectionClose(filterChain *filterChain, c *DmConnection) error + DmConnectionPing(filterChain *filterChain, c *DmConnection, ctx context.Context) error + DmConnectionExec(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmResult, error) + DmConnectionExecContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmResult, error) + DmConnectionQuery(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmRows, error) + DmConnectionQueryContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmRows, error) + DmConnectionPrepare(filterChain *filterChain, c *DmConnection, query string) (*DmStatement, error) + DmConnectionPrepareContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string) (*DmStatement, error) + DmConnectionResetSession(filterChain *filterChain, c *DmConnection, ctx context.Context) error + DmConnectionCheckNamedValue(filterChain *filterChain, c *DmConnection, nv *driver.NamedValue) error + + DmStatementClose(filterChain *filterChain, s *DmStatement) error + DmStatementNumInput(filterChain *filterChain, s *DmStatement) int + DmStatementExec(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmResult, error) + DmStatementExecContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmResult, error) + DmStatementQuery(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmRows, error) + DmStatementQueryContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmRows, error) + DmStatementCheckNamedValue(filterChain *filterChain, s *DmStatement, nv *driver.NamedValue) error + + DmResultLastInsertId(filterChain *filterChain, r *DmResult) (int64, error) + DmResultRowsAffected(filterChain *filterChain, r *DmResult) (int64, error) + + DmRowsColumns(filterChain *filterChain, r *DmRows) []string + DmRowsClose(filterChain *filterChain, r *DmRows) error + DmRowsNext(filterChain *filterChain, r *DmRows, dest []driver.Value) error + DmRowsHasNextResultSet(filterChain *filterChain, r *DmRows) bool + DmRowsNextResultSet(filterChain *filterChain, r *DmRows) error + DmRowsColumnTypeScanType(filterChain *filterChain, r *DmRows, index int) reflect.Type + DmRowsColumnTypeDatabaseTypeName(filterChain *filterChain, r *DmRows, index int) string + DmRowsColumnTypeLength(filterChain *filterChain, r *DmRows, index int) (length int64, ok bool) + DmRowsColumnTypeNullable(filterChain *filterChain, r *DmRows, index int) (nullable, ok bool) + DmRowsColumnTypePrecisionScale(filterChain *filterChain, r *DmRows, index int) (precision, scale int64, ok bool) +} + +type IDGenerator int64 + +var dmDriverIDGenerator = new(IDGenerator) +var dmConntorIDGenerator = new(IDGenerator) +var dmConnIDGenerator = new(IDGenerator) +var dmStmtIDGenerator = new(IDGenerator) +var dmResultIDGenerator = new(IDGenerator) +var dmRowsIDGenerator = new(IDGenerator) + +func (g *IDGenerator) incrementAndGet() int64 { + return atomic.AddInt64((*int64)(g), 1) +} + +type RWSiteEnum int + +const ( + PRIMARY RWSiteEnum = iota + STANDBY + ANYSITE +) + +var ( + goMapMu sync.RWMutex + goMap = make(map[string]goRun, 2) +) + +type filterable struct { + filterChain *filterChain + rwInfo *rwInfo + logInfo *logInfo + recoverInfo *recoverInfo + statInfo *statInfo + objId int64 + idGenerator *IDGenerator +} + +func runLog() { + goMapMu.Lock() + _, ok := goMap["log"] + if !ok { + goMap["log"] = &logWriter{ + flushQueue: make(chan []byte, LogFlushQueueSize), + date: time.Now().Format("2006-01-02"), + logFile: nil, + flushFreq: LogFlushFreq, + filePath: LogDir, + filePrefix: "dm_go", + buffer: Dm_build_935(), + } + go goMap["log"].doRun() + } + goMapMu.Unlock() +} + +func runStat() { + goMapMu.Lock() + _, ok := goMap["stat"] + if !ok { + goMap["stat"] = newStatFlusher() + go goMap["stat"].doRun() + } + goMapMu.Unlock() +} + +func (f *filterable) createFilterChain(bc *DmConnector, props *Properties) { + var filters = make([]filter, 0, 5) + + if bc != nil { + if LogLevel != LOG_OFF { + filters = append(filters, &logFilter{}) + f.logInfo = &logInfo{logRecord: new(LogRecord)} + runLog() + } + + if StatEnable { + filters = append(filters, &statFilter{}) + f.statInfo = newStatInfo() + goStatMu.Lock() + if goStat == nil { + goStat = newGoStat(1000) + } + goStatMu.Unlock() + runStat() + } + + if bc.doSwitch != DO_SWITCH_OFF { + filters = append(filters, &reconnectFilter{}) + f.recoverInfo = newRecoverInfo() + } + + if bc.rwSeparate { + filters = append(filters, &rwFilter{}) + f.rwInfo = newRwInfo() + } + } else if props != nil { + if ParseLogLevel(props) != LOG_OFF { + filters = append(filters, &logFilter{}) + f.logInfo = &logInfo{logRecord: new(LogRecord)} + runLog() + } + + if props.GetBool("statEnable", StatEnable) { + filters = append(filters, &statFilter{}) + f.statInfo = newStatInfo() + goStatMu.Lock() + if goStat == nil { + goStat = newGoStat(1000) + } + goStatMu.Unlock() + runStat() + } + + if props.GetInt(DoSwitchKey, int(DO_SWITCH_OFF), 0, 2) != int(DO_SWITCH_OFF) { + filters = append(filters, &reconnectFilter{}) + f.recoverInfo = newRecoverInfo() + } + + if props.GetBool("rwSeparate", false) { + filters = append(filters, &rwFilter{}) + f.rwInfo = newRwInfo() + } + } + + f.filterChain = newFilterChain(filters) +} + +func (f *filterable) resetFilterable(src *filterable) { + f.filterChain = src.filterChain + f.logInfo = src.logInfo + f.rwInfo = src.rwInfo + f.statInfo = src.statInfo +} + +func (f *filterable) getID() int64 { + if f.objId < 0 { + f.objId = f.idGenerator.incrementAndGet() + } + return f.objId +} + +type logInfo struct { + logRecord *LogRecord + lastExecuteStartNano time.Time +} + +type rwInfo struct { + distribute RWSiteEnum + + rwCounter *rwCounter + + connStandby *DmConnection + + connCurrent *DmConnection + + tryRecoverTs int64 + + stmtStandby *DmStatement + + stmtCurrent *DmStatement + + readOnly bool +} + +func newRwInfo() *rwInfo { + rwInfo := new(rwInfo) + rwInfo.distribute = PRIMARY + rwInfo.readOnly = true + return rwInfo +} + +func (rwi *rwInfo) cleanup() { + rwi.distribute = PRIMARY + rwi.rwCounter = nil + rwi.connStandby = nil + rwi.connCurrent = nil + rwi.stmtStandby = nil + rwi.stmtCurrent = nil +} + +func (rwi *rwInfo) toPrimary() RWSiteEnum { + if rwi.distribute != PRIMARY { + + rwi.rwCounter.countPrimary() + } + rwi.distribute = PRIMARY + return rwi.distribute +} + +func (rwi *rwInfo) toAny() RWSiteEnum { + + rwi.distribute = rwi.rwCounter.count(ANYSITE, rwi.connStandby) + return rwi.distribute +} + +type recoverInfo struct { + checkEpRecoverTs int64 +} + +func newRecoverInfo() *recoverInfo { + recoverInfo := new(recoverInfo) + recoverInfo.checkEpRecoverTs = 0 + return recoverInfo +} + +type statInfo struct { + constructNano int64 + + connStat *connectionStat + + lastExecuteStartNano int64 + + lastExecuteTimeNano int64 + + lastExecuteType ExecuteTypeEnum + + firstResultSet bool + + lastExecuteSql string + + sqlStat *sqlStat + + sql string + + cursorIndex int + + closeCount int + + readStringLength int64 + + readBytesLength int64 + + openInputStreamCount int + + openReaderCount int +} + +var ( + goStatMu sync.RWMutex + goStat *GoStat +) + +func newStatInfo() *statInfo { + si := new(statInfo) + return si +} +func (si *statInfo) init(conn *DmConnection) { + si.connStat = goStat.createConnStat(conn) +} + +func (si *statInfo) setConstructNano() { + si.constructNano = time.Now().UnixNano() +} + +func (si *statInfo) getConstructNano() int64 { + return si.constructNano +} + +func (si *statInfo) getConnStat() *connectionStat { + return si.connStat +} + +func (si *statInfo) getLastExecuteStartNano() int64 { + return si.lastExecuteStartNano +} + +func (si *statInfo) setLastExecuteStartNano(lastExecuteStartNano int64) { + si.lastExecuteStartNano = lastExecuteStartNano +} + +func (si *statInfo) getLastExecuteTimeNano() int64 { + return si.lastExecuteTimeNano +} + +func (si *statInfo) setLastExecuteTimeNano(lastExecuteTimeNano int64) { + si.lastExecuteTimeNano = lastExecuteTimeNano +} + +func (si *statInfo) getLastExecuteType() ExecuteTypeEnum { + return si.lastExecuteType +} + +func (si *statInfo) setLastExecuteType(lastExecuteType ExecuteTypeEnum) { + si.lastExecuteType = lastExecuteType +} + +func (si *statInfo) isFirstResultSet() bool { + return si.firstResultSet +} + +func (si *statInfo) setFirstResultSet(firstResultSet bool) { + si.firstResultSet = firstResultSet +} + +func (si *statInfo) getLastExecuteSql() string { + return si.lastExecuteSql +} + +func (si *statInfo) setLastExecuteSql(lastExecuteSql string) { + si.lastExecuteSql = lastExecuteSql +} + +func (si *statInfo) getSqlStat() *sqlStat { + return si.sqlStat +} + +func (si *statInfo) setSqlStat(sqlStat *sqlStat) { + si.sqlStat = sqlStat +} + +func (si *statInfo) setConnStat(connStat *connectionStat) { + si.connStat = connStat +} + +func (si *statInfo) setConstructNanoWithConstructNano(constructNano int64) { + si.constructNano = constructNano +} + +func (si *statInfo) afterExecute(nanoSpan int64) { + si.lastExecuteTimeNano = nanoSpan +} + +func (si *statInfo) beforeExecute() { + si.lastExecuteStartNano = time.Now().UnixNano() +} + +func (si *statInfo) getSql() string { + return si.sql +} + +func (si *statInfo) setSql(sql string) { + si.sql = sql +} + +func (si *statInfo) getCursorIndex() int { + return si.cursorIndex +} + +func (si *statInfo) setCursorIndex(cursorIndex int) { + si.cursorIndex = cursorIndex +} + +func (si *statInfo) getCloseCount() int { + return si.closeCount +} + +func (si *statInfo) setCloseCount(closeCount int) { + si.closeCount = closeCount +} + +func (si *statInfo) getReadStringLength() int64 { + return si.readStringLength +} + +func (si *statInfo) setReadStringLength(readStringLength int64) { + si.readStringLength = readStringLength +} + +func (si *statInfo) getReadBytesLength() int64 { + return si.readBytesLength +} + +func (si *statInfo) setReadBytesLength(readBytesLength int64) { + si.readBytesLength = readBytesLength +} + +func (si *statInfo) getOpenInputStreamCount() int { + return si.openInputStreamCount +} + +func (si *statInfo) setOpenInputStreamCount(openInputStreamCount int) { + si.openInputStreamCount = openInputStreamCount +} + +func (si *statInfo) getOpenReaderCount() int { + return si.openReaderCount +} + +func (si *statInfo) setOpenReaderCount(openReaderCount int) { + si.openReaderCount = openReaderCount +} + +func (si *statInfo) incrementCloseCount() { + si.closeCount++ +} diff --git a/vendor/gitee.com/chunanyong/dm/zd.go b/vendor/gitee.com/chunanyong/dm/zd.go new file mode 100644 index 000000000..2cf414c0d --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zd.go @@ -0,0 +1,403 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "context" + "database/sql/driver" + "reflect" +) + +type filterChain struct { + filters []filter + fpos int +} + +func newFilterChain(filters []filter) *filterChain { + fc := new(filterChain) + fc.filters = filters + fc.fpos = 0 + return fc +} + +func (filterChain *filterChain) reset() *filterChain { + filterChain.fpos = 0 + return filterChain +} + +func (filterChain *filterChain) DmDriverOpen(d *DmDriver, dsn string) (*DmConnection, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmDriverOpen(filterChain, d, dsn) + } + + return d.open(dsn) +} + +func (filterChain *filterChain) DmDriverOpenConnector(d *DmDriver, dsn string) (*DmConnector, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmDriverOpenConnector(filterChain, d, dsn) + } + + return d.openConnector(dsn) +} + +//DmConnector +func (filterChain *filterChain) DmConnectorConnect(c *DmConnector, ctx context.Context) (*DmConnection, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectorConnect(filterChain, c, ctx) + } + + return c.connect(ctx) +} + +func (filterChain *filterChain) DmConnectorDriver(c *DmConnector) *DmDriver { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectorDriver(filterChain, c) + } + + return c.driver() +} + +//DmConnection +func (filterChain *filterChain) DmConnectionBegin(c *DmConnection) (*DmConnection, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionBegin(filterChain, c) + } + + return c.begin() +} +func (filterChain *filterChain) DmConnectionBeginTx(c *DmConnection, ctx context.Context, opts driver.TxOptions) (*DmConnection, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionBeginTx(filterChain, c, ctx, opts) + } + + return c.beginTx(ctx, opts) +} + +func (filterChain *filterChain) DmConnectionCommit(c *DmConnection) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionCommit(filterChain, c) + } + + return c.commit() +} + +func (filterChain *filterChain) DmConnectionRollback(c *DmConnection) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionRollback(filterChain, c) + } + + return c.rollback() +} + +func (filterChain *filterChain) DmConnectionClose(c *DmConnection) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionClose(filterChain, c) + } + + return c.close() +} + +func (filterChain *filterChain) DmConnectionPing(c *DmConnection, ctx context.Context) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionPing(filterChain, c, ctx) + } + + return c.ping(ctx) +} + +func (filterChain *filterChain) DmConnectionExec(c *DmConnection, query string, args []driver.Value) (*DmResult, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionExec(filterChain, c, query, args) + } + + return c.exec(query, args) +} + +func (filterChain *filterChain) DmConnectionExecContext(c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmResult, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionExecContext(filterChain, c, ctx, query, args) + } + + return c.execContext(ctx, query, args) +} + +func (filterChain *filterChain) DmConnectionQuery(c *DmConnection, query string, args []driver.Value) (*DmRows, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionQuery(filterChain, c, query, args) + } + + return c.query(query, args) +} + +func (filterChain *filterChain) DmConnectionQueryContext(c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmRows, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionQueryContext(filterChain, c, ctx, query, args) + } + + return c.queryContext(ctx, query, args) +} + +func (filterChain *filterChain) DmConnectionPrepare(c *DmConnection, query string) (*DmStatement, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionPrepare(filterChain, c, query) + } + + return c.prepare(query) +} + +func (filterChain *filterChain) DmConnectionPrepareContext(c *DmConnection, ctx context.Context, query string) (*DmStatement, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionPrepareContext(filterChain, c, ctx, query) + } + + return c.prepareContext(ctx, query) +} + +func (filterChain *filterChain) DmConnectionResetSession(c *DmConnection, ctx context.Context) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionResetSession(filterChain, c, ctx) + } + + return c.resetSession(ctx) +} + +func (filterChain *filterChain) DmConnectionCheckNamedValue(c *DmConnection, nv *driver.NamedValue) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmConnectionCheckNamedValue(filterChain, c, nv) + } + + return c.checkNamedValue(nv) +} + +//DmStatement +func (filterChain *filterChain) DmStatementClose(s *DmStatement) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmStatementClose(filterChain, s) + } + + return s.close() +} + +func (filterChain *filterChain) DmStatementNumInput(s *DmStatement) int { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmStatementNumInput(filterChain, s) + } + + return s.numInput() +} + +func (filterChain *filterChain) DmStatementExec(s *DmStatement, args []driver.Value) (*DmResult, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmStatementExec(filterChain, s, args) + } + + return s.exec(args) +} + +func (filterChain *filterChain) DmStatementExecContext(s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmResult, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmStatementExecContext(filterChain, s, ctx, args) + } + + return s.execContext(ctx, args) +} + +func (filterChain *filterChain) DmStatementQuery(s *DmStatement, args []driver.Value) (*DmRows, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmStatementQuery(filterChain, s, args) + } + + return s.query(args) +} + +func (filterChain *filterChain) DmStatementQueryContext(s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmRows, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmStatementQueryContext(filterChain, s, ctx, args) + } + + return s.queryContext(ctx, args) +} + +func (filterChain *filterChain) DmStatementCheckNamedValue(s *DmStatement, nv *driver.NamedValue) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmStatementCheckNamedValue(filterChain, s, nv) + } + + return s.checkNamedValue(nv) +} + +//DmResult +func (filterChain *filterChain) DmResultLastInsertId(r *DmResult) (int64, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmResultLastInsertId(filterChain, r) + } + + return r.lastInsertId() +} + +func (filterChain *filterChain) DmResultRowsAffected(r *DmResult) (int64, error) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmResultRowsAffected(filterChain, r) + } + + return r.rowsAffected() +} + +//DmRows +func (filterChain *filterChain) DmRowsColumns(r *DmRows) []string { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsColumns(filterChain, r) + } + + return r.columns() +} + +func (filterChain *filterChain) DmRowsClose(r *DmRows) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsClose(filterChain, r) + } + + return r.close() +} + +func (filterChain *filterChain) DmRowsNext(r *DmRows, dest []driver.Value) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsNext(filterChain, r, dest) + } + + return r.next(dest) +} + +func (filterChain *filterChain) DmRowsHasNextResultSet(r *DmRows) bool { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsHasNextResultSet(filterChain, r) + } + + return r.hasNextResultSet() +} + +func (filterChain *filterChain) DmRowsNextResultSet(r *DmRows) error { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsNextResultSet(filterChain, r) + } + + return r.nextResultSet() +} + +func (filterChain *filterChain) DmRowsColumnTypeScanType(r *DmRows, index int) reflect.Type { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsColumnTypeScanType(filterChain, r, index) + } + + return r.columnTypeScanType(index) +} + +func (filterChain *filterChain) DmRowsColumnTypeDatabaseTypeName(r *DmRows, index int) string { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsColumnTypeDatabaseTypeName(filterChain, r, index) + } + + return r.columnTypeDatabaseTypeName(index) +} + +func (filterChain *filterChain) DmRowsColumnTypeLength(r *DmRows, index int) (length int64, ok bool) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsColumnTypeLength(filterChain, r, index) + } + + return r.columnTypeLength(index) +} + +func (filterChain *filterChain) DmRowsColumnTypeNullable(r *DmRows, index int) (nullable, ok bool) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsColumnTypeNullable(filterChain, r, index) + } + + return r.columnTypeNullable(index) +} + +func (filterChain *filterChain) DmRowsColumnTypePrecisionScale(r *DmRows, index int) (precision, scale int64, ok bool) { + if filterChain.fpos < len(filterChain.filters) { + f := filterChain.filters[filterChain.fpos] + filterChain.fpos++ + return f.DmRowsColumnTypePrecisionScale(filterChain, r, index) + } + + return r.columnTypePrecisionScale(index) +} diff --git a/vendor/gitee.com/chunanyong/dm/ze.go b/vendor/gitee.com/chunanyong/dm/ze.go new file mode 100644 index 000000000..1cefd189a --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/ze.go @@ -0,0 +1,907 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "context" + "database/sql/driver" + "fmt" + "io" + "reflect" + "strconv" + "time" + + "gitee.com/chunanyong/dm/util" +) + +type logFilter struct{} + +func (filter *logFilter) DmDriverOpen(filterChain *filterChain, d *DmDriver, dsn string) (ret *DmConnection, err error) { + var logRecord = d.logInfo.logRecord.Reset() + logRecord.Set(d, "open", dsn) + defer func() { + filter.doLog(logRecord) + }() + ret, err = filterChain.DmDriverOpen(d, dsn) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmDriverOpenConnector(filterChain *filterChain, d *DmDriver, dsn string) (ret *DmConnector, err error) { + var logRecord = d.logInfo.logRecord.Reset() + logRecord.Set(d, "openConnector", dsn) + defer func() { + filter.doLog(logRecord) + }() + ret, err = filterChain.DmDriverOpenConnector(d, dsn) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectorConnect(filterChain *filterChain, c *DmConnector, ctx context.Context) (ret *DmConnection, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "connect") + defer func() { + filter.doLog(logRecord) + }() + ret, err = filterChain.DmConnectorConnect(c, ctx) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectorDriver(filterChain *filterChain, c *DmConnector) (ret *DmDriver) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "driver") + defer func() { + filter.doLog(logRecord) + }() + ret = filterChain.DmConnectorDriver(c) + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionBegin(filterChain *filterChain, c *DmConnection) (ret *DmConnection, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "begin") + defer func() { + filter.doLog(logRecord) + }() + ret, err = filterChain.DmConnectionBegin(c) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionBeginTx(filterChain *filterChain, c *DmConnection, ctx context.Context, opts driver.TxOptions) (ret *DmConnection, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "beginTx", opts) + defer func() { + filter.doLog(logRecord) + }() + ret, err = filterChain.DmConnectionBeginTx(c, ctx, opts) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionCommit(filterChain *filterChain, c *DmConnection) (err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "commit") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmConnectionCommit(c) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmConnectionRollback(filterChain *filterChain, c *DmConnection) (err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "rollback") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmConnectionRollback(c) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmConnectionClose(filterChain *filterChain, c *DmConnection) (err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "close") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmConnectionClose(c) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmConnectionPing(filterChain *filterChain, c *DmConnection, ctx context.Context) (err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "ping") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmConnectionPing(c, ctx) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmConnectionExec(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (ret *DmResult, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "exec", convertParams2(args)...) + defer func() { + filter.executeAfter(c.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(query, true) + filter.executeBefore(c.logInfo) + ret, err = filterChain.DmConnectionExec(c, query, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionExecContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (ret *DmResult, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "execCtx", convertParams1(args)...) + defer func() { + filter.executeAfter(c.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(query, true) + filter.executeBefore(c.logInfo) + ret, err = filterChain.DmConnectionExecContext(c, ctx, query, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionQuery(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (ret *DmRows, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "query", convertParams2(args)...) + defer func() { + filter.executeAfter(c.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(query, true) + filter.executeBefore(c.logInfo) + ret, err = filterChain.DmConnectionQuery(c, query, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionQueryContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (ret *DmRows, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "queryCtx", convertParams1(args)...) + defer func() { + filter.executeAfter(c.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(query, true) + filter.executeBefore(c.logInfo) + ret, err = filterChain.DmConnectionQueryContext(c, ctx, query, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionPrepare(filterChain *filterChain, c *DmConnection, query string) (ret *DmStatement, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "prepare", query) + defer func() { + filter.doLog(logRecord) + }() + logRecord.SetSql(query, false) + ret, err = filterChain.DmConnectionPrepare(c, query) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionPrepareContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string) (ret *DmStatement, err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "prepareCtx", query) + defer func() { + filter.doLog(logRecord) + }() + logRecord.SetSql(query, false) + ret, err = filterChain.DmConnectionPrepareContext(c, ctx, query) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmConnectionResetSession(filterChain *filterChain, c *DmConnection, ctx context.Context) (err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "resetSession") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmConnectionResetSession(c, ctx) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmConnectionCheckNamedValue(filterChain *filterChain, c *DmConnection, nv *driver.NamedValue) (err error) { + var logRecord = c.logInfo.logRecord.Reset() + logRecord.Set(c, "checkNamedValue", nv.Value) + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmConnectionCheckNamedValue(c, nv) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmStatementClose(filterChain *filterChain, s *DmStatement) (err error) { + var logRecord = s.logInfo.logRecord.Reset() + logRecord.Set(s, "close") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmStatementClose(s) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmStatementNumInput(filterChain *filterChain, s *DmStatement) (ret int) { + var logRecord = s.logInfo.logRecord.Reset() + logRecord.Set(s, "numInput") + defer func() { + filter.doLog(logRecord) + }() + ret = filterChain.DmStatementNumInput(s) + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmStatementExec(filterChain *filterChain, s *DmStatement, args []driver.Value) (ret *DmResult, err error) { + var logRecord = s.logInfo.logRecord.Reset() + logRecord.Set(s, "exec", convertParams2(args)...) + defer func() { + filter.executeAfter(s.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(s.nativeSql, true) + filter.executeBefore(s.logInfo) + ret, err = filterChain.DmStatementExec(s, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmStatementExecContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (ret *DmResult, err error) { + var logRecord = s.logInfo.logRecord.Reset() + logRecord.Set(s, "execCtx", convertParams1(args)...) + defer func() { + filter.executeAfter(s.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(s.nativeSql, true) + filter.executeBefore(s.logInfo) + ret, err = filterChain.DmStatementExecContext(s, ctx, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmStatementQuery(filterChain *filterChain, s *DmStatement, args []driver.Value) (ret *DmRows, err error) { + var logRecord = s.logInfo.logRecord.Reset() + logRecord.Set(s, "query", convertParams2(args)...) + defer func() { + filter.executeAfter(s.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(s.nativeSql, true) + filter.executeBefore(s.logInfo) + ret, err = filterChain.DmStatementQuery(s, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmStatementQueryContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (ret *DmRows, err error) { + var logRecord = s.logInfo.logRecord.Reset() + logRecord.Set(s, "queryCtx", convertParams1(args)...) + defer func() { + filter.executeAfter(s.logInfo, logRecord) + filter.doLog(logRecord) + }() + logRecord.SetSql(s.nativeSql, true) + filter.executeBefore(s.logInfo) + ret, err = filterChain.DmStatementQueryContext(s, ctx, args) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmStatementCheckNamedValue(filterChain *filterChain, s *DmStatement, nv *driver.NamedValue) (err error) { + var logRecord = s.logInfo.logRecord.Reset() + logRecord.Set(s, "checkNamedValue", nv.Value) + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmStatementCheckNamedValue(s, nv) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmResultLastInsertId(filterChain *filterChain, r *DmResult) (ret int64, err error) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "lastInsertId") + defer func() { + filter.doLog(logRecord) + }() + ret, err = filterChain.DmResultLastInsertId(r) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmResultRowsAffected(filterChain *filterChain, r *DmResult) (ret int64, err error) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "rowsAffected") + defer func() { + filter.doLog(logRecord) + }() + ret, err = filterChain.DmResultRowsAffected(r) + if err != nil { + logRecord.SetError(err) + return + } + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmRowsColumns(filterChain *filterChain, r *DmRows) (ret []string) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "columns") + defer func() { + filter.doLog(logRecord) + }() + ret = filterChain.DmRowsColumns(r) + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmRowsClose(filterChain *filterChain, r *DmRows) (err error) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "close") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmRowsClose(r) + if err != nil { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmRowsNext(filterChain *filterChain, r *DmRows, dest []driver.Value) (err error) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "next", convertParams2(dest)...) + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmRowsNext(r, dest) + if err != nil && err != io.EOF { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmRowsHasNextResultSet(filterChain *filterChain, r *DmRows) (ret bool) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "hasNextResultSet") + defer func() { + filter.doLog(logRecord) + }() + ret = filterChain.DmRowsHasNextResultSet(r) + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmRowsNextResultSet(filterChain *filterChain, r *DmRows) (err error) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "nextResultSet") + defer func() { + filter.doLog(logRecord) + }() + err = filterChain.DmRowsNextResultSet(r) + if err != nil && err != io.EOF { + logRecord.SetError(err) + return + } + return +} + +func (filter *logFilter) DmRowsColumnTypeScanType(filterChain *filterChain, r *DmRows, index int) (ret reflect.Type) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "columnTypeScanType", index) + defer func() { + filter.doLog(logRecord) + }() + ret = filterChain.DmRowsColumnTypeScanType(r, index) + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmRowsColumnTypeDatabaseTypeName(filterChain *filterChain, r *DmRows, index int) (ret string) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "columnTypeDatabaseTypeName", index) + defer func() { + filter.doLog(logRecord) + }() + ret = filterChain.DmRowsColumnTypeDatabaseTypeName(r, index) + logRecord.SetReturnValue(ret) + return +} + +func (filter *logFilter) DmRowsColumnTypeLength(filterChain *filterChain, r *DmRows, index int) (length int64, ok bool) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "columnTypeLength", index) + defer func() { + filter.doLog(logRecord) + }() + length, ok = filterChain.DmRowsColumnTypeLength(r, index) + if ok { + logRecord.SetReturnValue(length) + } else { + logRecord.SetReturnValue(-1) + } + return +} + +func (filter *logFilter) DmRowsColumnTypeNullable(filterChain *filterChain, r *DmRows, index int) (nullable, ok bool) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "columnTypeNullable", index) + defer func() { + filter.doLog(logRecord) + }() + nullable, ok = filterChain.DmRowsColumnTypeNullable(r, index) + if ok { + logRecord.SetReturnValue(nullable) + } else { + logRecord.SetReturnValue(false) + } + return +} + +func (filter *logFilter) DmRowsColumnTypePrecisionScale(filterChain *filterChain, r *DmRows, index int) (precision, scale int64, ok bool) { + var logRecord = r.logInfo.logRecord.Reset() + logRecord.Set(r, "columnTypePrecisionScale", index) + defer func() { + filter.doLog(logRecord) + }() + precision, scale, ok = filterChain.DmRowsColumnTypePrecisionScale(r, index) + if ok { + logRecord.SetReturnValue(strconv.FormatInt(precision, 10) + "&" + strconv.FormatInt(scale, 10)) + } else { + logRecord.SetReturnValue("-1&-1") + } + return +} + +func (filter *logFilter) executeBefore(logInfo *logInfo) { + if LogFilterLogger.IsSqlEnabled() { + logInfo.lastExecuteStartNano = time.Now() + } +} + +func (filter *logFilter) executeAfter(logInfo *logInfo, record *LogRecord) { + if LogFilterLogger.IsSqlEnabled() { + record.SetUsedTime(time.Since(logInfo.lastExecuteStartNano)) + } +} + +func (filter *logFilter) doLog(record *LogRecord) { + + if record == nil { + return + } + if record.GetError() != nil { + LogFilterLogger.ErrorWithErr(record.ToString(), record.GetError()) + } else if record.GetSql() != "" && LogFilterLogger.IsSqlEnabled() { + LogFilterLogger.Sql(record.ToString()) + } else { + LogFilterLogger.Info(record.ToString()) + } +} + +/************************************************************************************************************/ +type Logger struct { +} + +var LogFilterLogger = &Logger{} +var ConnLogger = &Logger{} +var AccessLogger = &Logger{} + +func (logger Logger) IsDebugEnabled() bool { + return LogLevel >= LOG_DEBUG +} +func (logger Logger) IsErrorEnabled() bool { + return LogLevel >= LOG_ERROR +} +func (logger Logger) IsInfoEnabled() bool { + return LogLevel >= LOG_INFO +} +func (logger Logger) IsWarnEnabled() bool { + return LogLevel >= LOG_WARN +} +func (logger Logger) IsSqlEnabled() bool { + return LogLevel >= LOG_SQL +} +func (logger Logger) Debug(msg string) { + if logger.IsDebugEnabled() { + logger.println(logger.formatHead("DEBUG") + msg) + } +} +func (logger Logger) DebugWithErr(msg string, err error) { + if logger.IsDebugEnabled() { + if e, ok := err.(*DmError); ok { + logger.println(logger.formatHead("DEBUG") + msg + util.LINE_SEPARATOR + e.FormatStack()) + } else { + logger.println(logger.formatHead("DEBUG") + msg + util.LINE_SEPARATOR + err.Error()) + } + } +} +func (logger Logger) Info(msg string) { + if logger.IsInfoEnabled() { + logger.println(logger.formatHead("INFO ") + msg) + } +} +func (logger Logger) Sql(msg string) { + if logger.IsSqlEnabled() { + logger.println(logger.formatHead("SQL ") + msg) + } +} +func (logger Logger) Warn(msg string) { + if logger.IsWarnEnabled() { + logger.println(logger.formatHead("WARN ") + msg) + } +} +func (logger Logger) ErrorWithErr(msg string, err error) { + //if e, ok := err.(*DmError); ok { + // logger.println(logger.formatHead("ERROR") + msg + util.LINE_SEPARATOR + e.FormatStack()) + //} else { + logger.println(logger.formatHead("ERROR") + msg + util.LINE_SEPARATOR + err.Error()) + //} +} + +// TODO: 获取goroutine objId +func (logger Logger) formatHead(head string) string { + // return "[" + head + " - " + StringUtil.formatTime() + "] tid:" + Thread.currentThread().getId(); + return "[" + head + " - " + util.StringUtil.FormatTime() + "]" +} +func (logger Logger) println(msg string) { + goMap["log"].(*logWriter).WriteLine(msg) +} + +/*************************************************************************************************/ +func formatSource(source interface{}) string { + if source == nil { + return "" + } + var str string + switch src := source.(type) { + case string: + str += src + case *DmDriver: + str += formatDriver(src) + case *DmConnector: + str += formatContor(src) + case *DmConnection: + str += formatConn(src) + case *DmStatement: + str += formatConn(src.dmConn) + ", " + str += formatStmt(src) + case *DmResult: + str += formatConn(src.dmStmt.dmConn) + ", " + str += formatStmt(src.dmStmt) + ", " + str += formatRs(src) + case *DmRows: + str += formatConn(src.CurrentRows.dmStmt.dmConn) + ", " + str += formatStmt(src.CurrentRows.dmStmt) + ", " + str += formatRows(src) + default: + str += reflect.TypeOf(src).String() + "@" + reflect.ValueOf(src).Addr().String() + } + return str +} + +func formatDriver(driver *DmDriver) string { + if driver != nil && driver.logInfo != nil { + return "driver-" + strconv.FormatInt(driver.getID(), 10) + } + return "driver-nil" +} + +func formatContor(contor *DmConnector) string { + if contor != nil && contor.logInfo != nil { + return "contor-" + strconv.FormatInt(contor.getID(), 10) + } + return "contor-nil" +} + +func formatConn(conn *DmConnection) string { + if conn != nil && conn.logInfo != nil { + return "conn-0x" + strconv.FormatInt(conn.SessionID, 16) + } + return "conn-nil" +} + +func formatStmt(stmt *DmStatement) string { + if stmt != nil && stmt.logInfo != nil { + return "stmt-" + strconv.Itoa(int(stmt.id)) + } + return "stmt-nil" +} + +func formatRs(result *DmResult) string { + if result != nil && result.logInfo != nil { + return "rs-" + strconv.FormatInt(result.getID(), 10) + } + return "rs-nil" +} + +func formatRows(rows *DmRows) string { + if rows != nil && rows.logInfo != nil { + return "rows-" + strconv.FormatInt(rows.getID(), 10) + } + return "rows-nil" +} + +func formatTrace(source string, sql string, method string, returnValue interface{}, params ...interface{}) string { + var str string + if source != "" { + str += "{ " + source + " } " + } + str += method + "(" + var paramStartIndex = 0 + if params != nil && len(params) > paramStartIndex { + for i := paramStartIndex; i < len(params); i++ { + if i != paramStartIndex { + str += ", " + } + if params[i] != nil { + str += reflect.TypeOf(params[i]).String() + } else { + str += "nil" + } + } + } + str += ")" + if returnValue != nil { + str += ": " + formatReturn(returnValue) + } + str += "; " + if params != nil && len(params) > paramStartIndex { + str += "[PARAMS]: " + for i := paramStartIndex; i < len(params); i++ { + if i != 0 { + str += ", " + } + //if s, ok := params[i].(driver.NamedValue); ok { + // str += fmt.Sprintf("%v", s.Value) + //} else { + str += fmt.Sprintf("%v", params[i]) + //} + } + str += "; " + } + + if sql != "" { + str += "[SQL]: " + sql + "; " + } + + return str +} + +func formatReturn(returnObj interface{}) string { + var str string + switch o := returnObj.(type) { + case *DmConnection: + str = formatConn(o) + case *DmStatement: + str = formatStmt(o) + case *DmResult: + str = formatRs(o) + case *DmRows: + str = formatRows(o) + case string: + str = `"` + o + `"` + case nullData: + str = "nil" + default: + str = "unknown" + } + return str +} + +func formatUsedTime(duration time.Duration) string { + return "[USED TIME]: " + duration.String() +} + +/************************************************************************************************************/ + +type nullData struct{} + +var null = nullData{} + +type LogRecord struct { + source string + method string + params []interface{} + returnValue interface{} + e error + usedTime time.Duration + sql string + logSql bool // 是否需要记录sql(exec,query等需要在日志中记录sql语句) +} + +func (record *LogRecord) Reset() *LogRecord { + record.source = "" + record.method = "" + record.params = nil + record.returnValue = nil + record.e = nil + record.usedTime = 0 + record.sql = "" + record.logSql = false + return record +} + +func (record *LogRecord) Set(source interface{}, method string, params ...interface{}) { + record.source = formatSource(source) + record.method = method + record.params = params +} + +func (record *LogRecord) SetReturnValue(retValue interface{}) { + if retValue == nil { + record.returnValue = null + } else { + record.returnValue = retValue + } +} + +func (record *LogRecord) GetReturnValue() interface{} { + return record.returnValue +} + +func (record *LogRecord) SetSql(sql string, logSql bool) { + record.sql = sql + record.logSql = logSql +} + +func (record *LogRecord) GetSql() string { + return record.sql +} + +func (record *LogRecord) SetUsedTime(usedTime time.Duration) { + record.usedTime = usedTime +} + +func (record *LogRecord) GetUsedTime() time.Duration { + return record.usedTime +} + +func (record *LogRecord) SetError(err error) { + record.e = err +} + +func (record *LogRecord) GetError() error { + return record.e +} + +func (record *LogRecord) ToString() string { + var sql string + if record.logSql && record.sql != "" { + sql = record.sql + } + var str string + str += formatTrace(record.source, sql, record.method, record.returnValue, record.params...) + if record.usedTime > 0 { + str += formatUsedTime(record.usedTime) + } + return str +} + +func convertParams1(args []driver.NamedValue) []interface{} { + tmp := make([]interface{}, len(args)) + for i := 0; i < len(tmp); i++ { + tmp[i] = args[i].Value + } + return tmp +} + +func convertParams2(args []driver.Value) []interface{} { + tmp := make([]interface{}, len(args)) + for i := 0; i < len(tmp); i++ { + tmp[i] = args[i] + } + return tmp +} diff --git a/vendor/gitee.com/chunanyong/dm/zf.go b/vendor/gitee.com/chunanyong/dm/zf.go new file mode 100644 index 000000000..562ae2425 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zf.go @@ -0,0 +1,516 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "context" + "database/sql/driver" + "io" + "reflect" + "time" + + "gitee.com/chunanyong/dm/util" +) + +const SQL_GET_DSC_EP_SITE = "SELECT " + + "dsc.ep_seqno, " + + "(CASE mal.MAL_INST_HOST WHEN '' THEN mal.MAL_HOST ELSE mal.MAL_INST_HOST END) as ep_host, " + + "dcr.EP_PORT, " + + "dsc.EP_STATUS " + + "FROM V$DSC_EP_INFO dsc " + + "LEFT join V$DM_MAL_INI mal " + + "on dsc.EP_NAME = mal.MAL_INST_NAME " + + "LEFT join (SELECT grp.GROUP_TYPE GROUP_TYPE, ep.* FROM SYS.\"V$DCR_GROUP\" grp, SYS.\"V$DCR_EP\" ep where grp.GROUP_NAME = ep.GROUP_NAME) dcr " + + "on dsc.EP_NAME = dcr.EP_NAME and GROUP_TYPE = 'DB' order by dsc.ep_seqno asc;" + +type reconnectFilter struct { +} + +// 一定抛错 +func (rf *reconnectFilter) autoReconnect(connection *DmConnection, err error) error { + if dmErr, ok := err.(*DmError); ok { + if dmErr.ErrCode == ECGO_COMMUNITION_ERROR.ErrCode || dmErr.ErrCode == ECGO_CONNECTION_CLOSED.ErrCode { + + if connection.dmConnector.driverReconnect { + return rf.reconnect(connection, dmErr.getErrText()) + } else { + connection.Access.Close() + connection.closed.Set(true) + return driver.ErrBadConn + } + } + } + return err +} + +// 一定抛错 +func (rf *reconnectFilter) reconnect(connection *DmConnection, reason string) error { + // 读写分离,重连需要处理备机 + var err error + if connection.dmConnector.rwSeparate { + err = RWUtil.reconnect(connection) + } else { + err = connection.reconnect() + } + + if err != nil { + connection.closed.Set(true) + return ECGO_CONNECTION_SWITCH_FAILED.addDetailln(reason).throw() + } + + // 重连成功 + connection.closed.Set(false) + return ECGO_CONNECTION_SWITCHED.addDetailln(reason).throw() +} + +func (rf *reconnectFilter) loadDscEpSites(conn *DmConnection) []*ep { + stmt, rs, err := conn.driverQuery(SQL_GET_DSC_EP_SITE) + if err != nil { + return nil + } + defer func() { + rs.close() + stmt.close() + }() + epList := make([]*ep, 0) + dest := make([]driver.Value, 4) + for err = rs.next(dest); err != io.EOF; err = rs.next(dest) { + ep := newEP(dest[1].(string), dest[2].(int32)) + ep.epSeqno = dest[0].(int32) + if util.StringUtil.EqualsIgnoreCase(dest[3].(string), "OK") { + ep.epStatus = EP_STATUS_OK + } else { + ep.epStatus = EP_STATUS_ERROR + } + epList = append(epList, ep) + } + return epList +} + +func (rf *reconnectFilter) checkAndRecover(conn *DmConnection) error { + if conn.dmConnector.doSwitch != DO_SWITCH_WHEN_EP_RECOVER { + return nil + } + // check trx finish + if !conn.trxFinish { + return nil + } + var curIndex = conn.getIndexOnEPGroup() + if curIndex == 0 || (time.Now().UnixNano()/1000000-conn.recoverInfo.checkEpRecoverTs) < int64(conn.dmConnector.switchInterval) { + return nil + } + // check db recover + var dscEps []*ep + if conn.dmConnector.cluster == CLUSTER_TYPE_DSC { + dscEps = rf.loadDscEpSites(conn) + } + if dscEps == nil || len(dscEps) == 0 { + return nil + } + var recover = false + for _, okEp := range dscEps { + if okEp.epStatus != EP_STATUS_OK { + continue + } + for i := int32(0); i < curIndex; i++ { + ep := conn.dmConnector.group.epList[i] + if okEp.host == ep.host && okEp.port == ep.port { + recover = true + break + } + } + if recover { + break + } + } + + conn.recoverInfo.checkEpRecoverTs = time.Now().UnixNano() / 1000000 + if !recover { + return nil + } + + if conn.dmConnector.driverReconnect { + return conn.reconnect() + } else { + conn.Access.Close() + conn.closed.Set(false) + return ECGO_CONNECTION_CLOSED.throw() + } + + //return driver.ErrBadConn + // do reconnect + //return conn.reconnect() +} + +// DmDriver +func (rf *reconnectFilter) DmDriverOpen(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnection, error) { + return filterChain.DmDriverOpen(d, dsn) +} + +func (rf *reconnectFilter) DmDriverOpenConnector(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnector, error) { + return filterChain.DmDriverOpenConnector(d, dsn) +} + +// DmConnector +func (rf *reconnectFilter) DmConnectorConnect(filterChain *filterChain, c *DmConnector, ctx context.Context) (*DmConnection, error) { + return filterChain.DmConnectorConnect(c, ctx) +} + +func (rf *reconnectFilter) DmConnectorDriver(filterChain *filterChain, c *DmConnector) *DmDriver { + return filterChain.DmConnectorDriver(c) +} + +// DmConnection +func (rf *reconnectFilter) DmConnectionBegin(filterChain *filterChain, c *DmConnection) (*DmConnection, error) { + dc, err := filterChain.DmConnectionBegin(c) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + return dc, err +} + +func (rf *reconnectFilter) DmConnectionBeginTx(filterChain *filterChain, c *DmConnection, ctx context.Context, opts driver.TxOptions) (*DmConnection, error) { + dc, err := filterChain.DmConnectionBeginTx(c, ctx, opts) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + return dc, err +} + +func (rf *reconnectFilter) DmConnectionCommit(filterChain *filterChain, c *DmConnection) error { + if err := filterChain.DmConnectionCommit(c); err != nil { + return rf.autoReconnect(c, err) + } + if err := rf.checkAndRecover(c); err != nil { + return rf.autoReconnect(c, err) + } + return nil +} + +func (rf *reconnectFilter) DmConnectionRollback(filterChain *filterChain, c *DmConnection) error { + err := filterChain.DmConnectionRollback(c) + if err != nil { + err = rf.autoReconnect(c, err) + } + + return err +} + +func (rf *reconnectFilter) DmConnectionClose(filterChain *filterChain, c *DmConnection) error { + err := filterChain.DmConnectionClose(c) + if err != nil { + err = rf.autoReconnect(c, err) + } + + return err +} + +func (rf *reconnectFilter) DmConnectionPing(filterChain *filterChain, c *DmConnection, ctx context.Context) error { + err := filterChain.DmConnectionPing(c, ctx) + if err != nil { + err = rf.autoReconnect(c, err) + } + + return err +} + +func (rf *reconnectFilter) DmConnectionExec(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmResult, error) { + if err := rf.checkAndRecover(c); err != nil { + return nil, rf.autoReconnect(c, err) + } + dr, err := filterChain.DmConnectionExec(c, query, args) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmConnectionExecContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmResult, error) { + if err := rf.checkAndRecover(c); err != nil { + return nil, rf.autoReconnect(c, err) + } + dr, err := filterChain.DmConnectionExecContext(c, ctx, query, args) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmConnectionQuery(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmRows, error) { + if err := rf.checkAndRecover(c); err != nil { + return nil, rf.autoReconnect(c, err) + } + dr, err := filterChain.DmConnectionQuery(c, query, args) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmConnectionQueryContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmRows, error) { + if err := rf.checkAndRecover(c); err != nil { + return nil, rf.autoReconnect(c, err) + } + dr, err := filterChain.DmConnectionQueryContext(c, ctx, query, args) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmConnectionPrepare(filterChain *filterChain, c *DmConnection, query string) (*DmStatement, error) { + ds, err := filterChain.DmConnectionPrepare(c, query) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + + return ds, err +} + +func (rf *reconnectFilter) DmConnectionPrepareContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string) (*DmStatement, error) { + ds, err := filterChain.DmConnectionPrepareContext(c, ctx, query) + if err != nil { + return nil, rf.autoReconnect(c, err) + } + + return ds, err +} + +func (rf *reconnectFilter) DmConnectionResetSession(filterChain *filterChain, c *DmConnection, ctx context.Context) error { + err := filterChain.DmConnectionResetSession(c, ctx) + if err != nil { + err = rf.autoReconnect(c, err) + } + + return err +} + +func (rf *reconnectFilter) DmConnectionCheckNamedValue(filterChain *filterChain, c *DmConnection, nv *driver.NamedValue) error { + err := filterChain.DmConnectionCheckNamedValue(c, nv) + if err != nil { + err = rf.autoReconnect(c, err) + } + + return err +} + +// DmStatement +func (rf *reconnectFilter) DmStatementClose(filterChain *filterChain, s *DmStatement) error { + err := filterChain.DmStatementClose(s) + if err != nil { + err = rf.autoReconnect(s.dmConn, err) + } + + return err +} + +func (rf *reconnectFilter) DmStatementNumInput(filterChain *filterChain, s *DmStatement) int { + var ret int + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(s.dmConn, err.(error)) + ret = 0 + } + }() + ret = filterChain.DmStatementNumInput(s) + return ret +} + +func (rf *reconnectFilter) DmStatementExec(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmResult, error) { + if err := rf.checkAndRecover(s.dmConn); err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + dr, err := filterChain.DmStatementExec(s, args) + if err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmStatementExecContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmResult, error) { + if err := rf.checkAndRecover(s.dmConn); err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + dr, err := filterChain.DmStatementExecContext(s, ctx, args) + if err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmStatementQuery(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmRows, error) { + if err := rf.checkAndRecover(s.dmConn); err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + dr, err := filterChain.DmStatementQuery(s, args) + if err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmStatementQueryContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmRows, error) { + if err := rf.checkAndRecover(s.dmConn); err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + dr, err := filterChain.DmStatementQueryContext(s, ctx, args) + if err != nil { + return nil, rf.autoReconnect(s.dmConn, err) + } + + return dr, err +} + +func (rf *reconnectFilter) DmStatementCheckNamedValue(filterChain *filterChain, s *DmStatement, nv *driver.NamedValue) error { + err := filterChain.DmStatementCheckNamedValue(s, nv) + if err != nil { + err = rf.autoReconnect(s.dmConn, err) + } + + return err +} + +// DmResult +func (rf *reconnectFilter) DmResultLastInsertId(filterChain *filterChain, r *DmResult) (int64, error) { + i, err := filterChain.DmResultLastInsertId(r) + if err != nil { + err = rf.autoReconnect(r.dmStmt.dmConn, err) + return 0, err + } + + return i, err +} + +func (rf *reconnectFilter) DmResultRowsAffected(filterChain *filterChain, r *DmResult) (int64, error) { + i, err := filterChain.DmResultRowsAffected(r) + if err != nil { + err = rf.autoReconnect(r.dmStmt.dmConn, err) + return 0, err + } + + return i, err +} + +// DmRows +func (rf *reconnectFilter) DmRowsColumns(filterChain *filterChain, r *DmRows) []string { + var ret []string + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err.(error)) + ret = nil + } + }() + ret = filterChain.DmRowsColumns(r) + return ret +} + +func (rf *reconnectFilter) DmRowsClose(filterChain *filterChain, r *DmRows) error { + err := filterChain.DmRowsClose(r) + if err != nil { + err = rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err) + } + + return err +} + +func (rf *reconnectFilter) DmRowsNext(filterChain *filterChain, r *DmRows, dest []driver.Value) error { + err := filterChain.DmRowsNext(r, dest) + if err != nil { + err = rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err) + } + + return err +} + +func (rf *reconnectFilter) DmRowsHasNextResultSet(filterChain *filterChain, r *DmRows) bool { + var ret bool + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err.(error)) + ret = false + } + }() + ret = filterChain.DmRowsHasNextResultSet(r) + return ret +} + +func (rf *reconnectFilter) DmRowsNextResultSet(filterChain *filterChain, r *DmRows) error { + err := filterChain.DmRowsNextResultSet(r) + if err != nil { + err = rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err) + } + + return err +} + +func (rf *reconnectFilter) DmRowsColumnTypeScanType(filterChain *filterChain, r *DmRows, index int) reflect.Type { + var ret reflect.Type + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err.(error)) + ret = scanTypeUnknown + } + }() + ret = filterChain.DmRowsColumnTypeScanType(r, index) + return ret +} + +func (rf *reconnectFilter) DmRowsColumnTypeDatabaseTypeName(filterChain *filterChain, r *DmRows, index int) string { + var ret string + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err.(error)) + ret = "" + } + }() + ret = filterChain.DmRowsColumnTypeDatabaseTypeName(r, index) + return ret +} + +func (rf *reconnectFilter) DmRowsColumnTypeLength(filterChain *filterChain, r *DmRows, index int) (length int64, ok bool) { + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err.(error)) + length, ok = 0, false + } + }() + return filterChain.DmRowsColumnTypeLength(r, index) +} + +func (rf *reconnectFilter) DmRowsColumnTypeNullable(filterChain *filterChain, r *DmRows, index int) (nullable, ok bool) { + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err.(error)) + nullable, ok = false, false + } + }() + return filterChain.DmRowsColumnTypeNullable(r, index) +} + +func (rf *reconnectFilter) DmRowsColumnTypePrecisionScale(filterChain *filterChain, r *DmRows, index int) (precision, scale int64, ok bool) { + defer func() { + err := recover() + if err != nil { + rf.autoReconnect(r.CurrentRows.dmStmt.dmConn, err.(error)) + precision, scale, ok = 0, 0, false + } + }() + return filterChain.DmRowsColumnTypePrecisionScale(r, index) +} diff --git a/vendor/gitee.com/chunanyong/dm/zg.go b/vendor/gitee.com/chunanyong/dm/zg.go new file mode 100644 index 000000000..79efa2121 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zg.go @@ -0,0 +1,310 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "context" + "database/sql/driver" + "reflect" +) + +type rwFilter struct { +} + +//DmDriver +func (rwf *rwFilter) DmDriverOpen(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnection, error) { + return filterChain.DmDriverOpen(d, dsn) +} + +func (rwf *rwFilter) DmDriverOpenConnector(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnector, error) { + return filterChain.DmDriverOpenConnector(d, dsn) +} + +//DmConnector +func (rwf *rwFilter) DmConnectorConnect(filterChain *filterChain, c *DmConnector, ctx context.Context) (*DmConnection, error) { + return RWUtil.connect(c, ctx) +} + +func (rwf *rwFilter) DmConnectorDriver(filterChain *filterChain, c *DmConnector) *DmDriver { + return filterChain.DmConnectorDriver(c) +} + +//DmConnection +func (rwf *rwFilter) DmConnectionBegin(filterChain *filterChain, c *DmConnection) (*DmConnection, error) { + if RWUtil.isStandbyAlive(c) { + _, err := c.rwInfo.connStandby.begin() + if err != nil { + RWUtil.afterExceptionOnStandby(c, err) + } + } + + return filterChain.DmConnectionBegin(c) +} + +func (rwf *rwFilter) DmConnectionBeginTx(filterChain *filterChain, c *DmConnection, ctx context.Context, opts driver.TxOptions) (*DmConnection, error) { + if RWUtil.isStandbyAlive(c) { + _, err := c.rwInfo.connStandby.beginTx(ctx, opts) + if err != nil { + RWUtil.afterExceptionOnStandby(c, err) + } + } + + return filterChain.DmConnectionBeginTx(c, ctx, opts) +} + +func (rwf *rwFilter) DmConnectionCommit(filterChain *filterChain, c *DmConnection) error { + if RWUtil.isStandbyAlive(c) { + err := c.rwInfo.connStandby.commit() + if err != nil { + RWUtil.afterExceptionOnStandby(c, err) + } + } + + return filterChain.DmConnectionCommit(c) +} + +func (rwf *rwFilter) DmConnectionRollback(filterChain *filterChain, c *DmConnection) error { + if RWUtil.isStandbyAlive(c) { + err := c.rwInfo.connStandby.rollback() + if err != nil { + RWUtil.afterExceptionOnStandby(c, err) + } + } + + return filterChain.DmConnectionRollback(c) +} + +func (rwf *rwFilter) DmConnectionClose(filterChain *filterChain, c *DmConnection) error { + if RWUtil.isStandbyAlive(c) { + err := c.rwInfo.connStandby.close() + if err != nil { + RWUtil.afterExceptionOnStandby(c, err) + } + } + + return filterChain.DmConnectionClose(c) +} + +func (rwf *rwFilter) DmConnectionPing(filterChain *filterChain, c *DmConnection, ctx context.Context) error { + return filterChain.DmConnectionPing(c, ctx) +} + +func (rwf *rwFilter) DmConnectionExec(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmResult, error) { + ret, err := RWUtil.executeByConn(c, query, func() (interface{}, error) { + return c.rwInfo.connCurrent.exec(query, args) + }, func(otherConn *DmConnection) (interface{}, error) { + return otherConn.exec(query, args) + }) + if err != nil { + return nil, err + } + return ret.(*DmResult), nil +} + +func (rwf *rwFilter) DmConnectionExecContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmResult, error) { + ret, err := RWUtil.executeByConn(c, query, func() (interface{}, error) { + return c.rwInfo.connCurrent.execContext(ctx, query, args) + }, func(otherConn *DmConnection) (interface{}, error) { + return otherConn.execContext(ctx, query, args) + }) + if err != nil { + return nil, err + } + return ret.(*DmResult), nil +} + +func (rwf *rwFilter) DmConnectionQuery(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmRows, error) { + ret, err := RWUtil.executeByConn(c, query, func() (interface{}, error) { + return c.rwInfo.connCurrent.query(query, args) + }, func(otherConn *DmConnection) (interface{}, error) { + return otherConn.query(query, args) + }) + if err != nil { + return nil, err + } + return ret.(*DmRows), nil +} + +func (rwf *rwFilter) DmConnectionQueryContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmRows, error) { + ret, err := RWUtil.executeByConn(c, query, func() (interface{}, error) { + return c.rwInfo.connCurrent.queryContext(ctx, query, args) + }, func(otherConn *DmConnection) (interface{}, error) { + return otherConn.queryContext(ctx, query, args) + }) + if err != nil { + return nil, err + } + return ret.(*DmRows), nil +} + +func (rwf *rwFilter) DmConnectionPrepare(filterChain *filterChain, c *DmConnection, query string) (*DmStatement, error) { + stmt, err := c.prepare(query) + if err != nil { + return nil, err + } + stmt.rwInfo.stmtCurrent = stmt + stmt.rwInfo.readOnly = RWUtil.checkReadonlyByStmt(stmt) + if RWUtil.isCreateStandbyStmt(stmt) { + stmt.rwInfo.stmtStandby, err = c.rwInfo.connStandby.prepare(query) + if err == nil { + stmt.rwInfo.stmtCurrent = stmt.rwInfo.stmtStandby + } else { + RWUtil.afterExceptionOnStandby(c, err) + } + } + return stmt, nil +} + +func (rwf *rwFilter) DmConnectionPrepareContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string) (*DmStatement, error) { + stmt, err := c.prepareContext(ctx, query) + if err != nil { + return nil, err + } + stmt.rwInfo.stmtCurrent = stmt + stmt.rwInfo.readOnly = RWUtil.checkReadonlyByStmt(stmt) + if RWUtil.isCreateStandbyStmt(stmt) { + stmt.rwInfo.stmtStandby, err = c.rwInfo.connStandby.prepareContext(ctx, query) + if err == nil { + stmt.rwInfo.stmtCurrent = stmt.rwInfo.stmtStandby + } else { + RWUtil.afterExceptionOnStandby(c, err) + } + } + return stmt, nil +} + +func (rwf *rwFilter) DmConnectionResetSession(filterChain *filterChain, c *DmConnection, ctx context.Context) error { + if RWUtil.isStandbyAlive(c) { + err := c.rwInfo.connStandby.resetSession(ctx) + if err != nil { + RWUtil.afterExceptionOnStandby(c, err) + } + } + + return filterChain.DmConnectionResetSession(c, ctx) +} + +func (rwf *rwFilter) DmConnectionCheckNamedValue(filterChain *filterChain, c *DmConnection, nv *driver.NamedValue) error { + return filterChain.DmConnectionCheckNamedValue(c, nv) +} + +//DmStatement +func (rwf *rwFilter) DmStatementClose(filterChain *filterChain, s *DmStatement) error { + if RWUtil.isStandbyStatementValid(s) { + err := s.rwInfo.stmtStandby.close() + if err != nil { + RWUtil.afterExceptionOnStandby(s.dmConn, err) + } + } + + return filterChain.DmStatementClose(s) +} + +func (rwf *rwFilter) DmStatementNumInput(filterChain *filterChain, s *DmStatement) int { + return filterChain.DmStatementNumInput(s) +} + +func (rwf *rwFilter) DmStatementExec(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmResult, error) { + ret, err := RWUtil.executeByStmt(s, func() (interface{}, error) { + return s.rwInfo.stmtCurrent.exec(args) + }, func(otherStmt *DmStatement) (interface{}, error) { + return otherStmt.exec(args) + }) + if err != nil { + return nil, err + } + return ret.(*DmResult), nil +} + +func (rwf *rwFilter) DmStatementExecContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmResult, error) { + ret, err := RWUtil.executeByStmt(s, func() (interface{}, error) { + return s.rwInfo.stmtCurrent.execContext(ctx, args) + }, func(otherStmt *DmStatement) (interface{}, error) { + return otherStmt.execContext(ctx, args) + }) + if err != nil { + return nil, err + } + return ret.(*DmResult), nil +} + +func (rwf *rwFilter) DmStatementQuery(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmRows, error) { + ret, err := RWUtil.executeByStmt(s, func() (interface{}, error) { + return s.rwInfo.stmtCurrent.query(args) + }, func(otherStmt *DmStatement) (interface{}, error) { + return otherStmt.query(args) + }) + if err != nil { + return nil, err + } + return ret.(*DmRows), nil +} + +func (rwf *rwFilter) DmStatementQueryContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmRows, error) { + ret, err := RWUtil.executeByStmt(s, func() (interface{}, error) { + return s.rwInfo.stmtCurrent.queryContext(ctx, args) + }, func(otherStmt *DmStatement) (interface{}, error) { + return otherStmt.queryContext(ctx, args) + }) + if err != nil { + return nil, err + } + return ret.(*DmRows), nil +} + +func (rwf *rwFilter) DmStatementCheckNamedValue(filterChain *filterChain, s *DmStatement, nv *driver.NamedValue) error { + return filterChain.DmStatementCheckNamedValue(s, nv) +} + +//DmResult +func (rwf *rwFilter) DmResultLastInsertId(filterChain *filterChain, r *DmResult) (int64, error) { + return filterChain.DmResultLastInsertId(r) +} + +func (rwf *rwFilter) DmResultRowsAffected(filterChain *filterChain, r *DmResult) (int64, error) { + return filterChain.DmResultRowsAffected(r) +} + +//DmRows +func (rwf *rwFilter) DmRowsColumns(filterChain *filterChain, r *DmRows) []string { + return filterChain.DmRowsColumns(r) +} + +func (rwf *rwFilter) DmRowsClose(filterChain *filterChain, r *DmRows) error { + return filterChain.DmRowsClose(r) +} + +func (rwf *rwFilter) DmRowsNext(filterChain *filterChain, r *DmRows, dest []driver.Value) error { + return filterChain.DmRowsNext(r, dest) +} + +func (rwf *rwFilter) DmRowsHasNextResultSet(filterChain *filterChain, r *DmRows) bool { + return filterChain.DmRowsHasNextResultSet(r) +} + +func (rwf *rwFilter) DmRowsNextResultSet(filterChain *filterChain, r *DmRows) error { + return filterChain.DmRowsNextResultSet(r) +} + +func (rwf *rwFilter) DmRowsColumnTypeScanType(filterChain *filterChain, r *DmRows, index int) reflect.Type { + return filterChain.DmRowsColumnTypeScanType(r, index) +} + +func (rwf *rwFilter) DmRowsColumnTypeDatabaseTypeName(filterChain *filterChain, r *DmRows, index int) string { + return filterChain.DmRowsColumnTypeDatabaseTypeName(r, index) +} + +func (rwf *rwFilter) DmRowsColumnTypeLength(filterChain *filterChain, r *DmRows, index int) (length int64, ok bool) { + return filterChain.DmRowsColumnTypeLength(r, index) +} + +func (rwf *rwFilter) DmRowsColumnTypeNullable(filterChain *filterChain, r *DmRows, index int) (nullable, ok bool) { + return filterChain.DmRowsColumnTypeNullable(r, index) +} + +func (rwf *rwFilter) DmRowsColumnTypePrecisionScale(filterChain *filterChain, r *DmRows, index int) (precision, scale int64, ok bool) { + return filterChain.DmRowsColumnTypePrecisionScale(r, index) +} diff --git a/vendor/gitee.com/chunanyong/dm/zh.go b/vendor/gitee.com/chunanyong/dm/zh.go new file mode 100644 index 000000000..cd74d7016 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zh.go @@ -0,0 +1,607 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "bytes" + "context" + "database/sql/driver" + "fmt" + "reflect" + "time" +) + +type statFilter struct { +} + +//DmDriver +func (sf *statFilter) DmDriverOpen(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnection, error) { + conn, err := filterChain.DmDriverOpen(d, dsn) + if err != nil { + return nil, err + } + conn.statInfo.init(conn) + conn.statInfo.setConstructNano() + conn.statInfo.getConnStat().incrementConn() + return conn, nil +} + +func (sf *statFilter) DmDriverOpenConnector(filterChain *filterChain, d *DmDriver, dsn string) (*DmConnector, error) { + return filterChain.DmDriverOpenConnector(d, dsn) +} + +//DmConnector +func (sf *statFilter) DmConnectorConnect(filterChain *filterChain, c *DmConnector, ctx context.Context) (*DmConnection, error) { + conn, err := filterChain.DmConnectorConnect(c, ctx) + if err != nil { + return nil, err + } + conn.statInfo.init(conn) + conn.statInfo.setConstructNano() + conn.statInfo.getConnStat().incrementConn() + return conn, nil +} + +func (sf *statFilter) DmConnectorDriver(filterChain *filterChain, c *DmConnector) *DmDriver { + return filterChain.DmConnectorDriver(c) +} + +//DmConnection +func (sf *statFilter) DmConnectionBegin(filterChain *filterChain, c *DmConnection) (*DmConnection, error) { + return filterChain.DmConnectionBegin(c) +} + +func (sf *statFilter) DmConnectionBeginTx(filterChain *filterChain, c *DmConnection, ctx context.Context, opts driver.TxOptions) (*DmConnection, error) { + return filterChain.DmConnectionBeginTx(c, ctx, opts) +} + +func (sf *statFilter) DmConnectionCommit(filterChain *filterChain, c *DmConnection) error { + err := filterChain.DmConnectionCommit(c) + if err != nil { + return err + } + c.statInfo.getConnStat().incrementCommitCount() + return nil +} + +func (sf *statFilter) DmConnectionRollback(filterChain *filterChain, c *DmConnection) error { + err := filterChain.DmConnectionRollback(c) + if err != nil { + return err + } + c.statInfo.getConnStat().incrementRollbackCount() + return nil +} + +func (sf *statFilter) DmConnectionClose(filterChain *filterChain, c *DmConnection) error { + if !c.closed.IsSet() { + c.statInfo.getConnStat().decrementStmtByActiveStmtCount(int64(getActiveStmtCount(c))) + c.statInfo.getConnStat().decrementConn() + } + + return filterChain.DmConnectionClose(c) +} + +func (sf *statFilter) DmConnectionPing(filterChain *filterChain, c *DmConnection, ctx context.Context) error { + return c.ping(ctx) +} + +func (sf *statFilter) DmConnectionExec(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmResult, error) { + connExecBefore(c, query) + dr, err := filterChain.DmConnectionExec(c, query, args) + if err != nil { + connExecuteErrorAfter(c, args, err) + return nil, err + } + connExecAfter(c, query, args, int(dr.affectedRows)) + return dr, nil +} + +func (sf *statFilter) DmConnectionExecContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmResult, error) { + connExecBefore(c, query) + dr, err := filterChain.DmConnectionExecContext(c, ctx, query, args) + if err != nil { + connExecuteErrorAfter(c, args, err) + return nil, err + } + connExecAfter(c, query, args, int(dr.affectedRows)) + return dr, nil +} + +func (sf *statFilter) DmConnectionQuery(filterChain *filterChain, c *DmConnection, query string, args []driver.Value) (*DmRows, error) { + connQueryBefore(c, query) + dr, err := filterChain.DmConnectionQuery(c, query, args) + if err != nil { + connExecuteErrorAfter(c, args, err) + return nil, err + } + connQueryAfter(c, query, args, dr) + return dr, nil +} + +func (sf *statFilter) DmConnectionQueryContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string, args []driver.NamedValue) (*DmRows, error) { + connQueryBefore(c, query) + dr, err := filterChain.DmConnectionQueryContext(c, ctx, query, args) + if err != nil { + connExecuteErrorAfter(c, args, err) + return nil, err + } + connQueryAfter(c, query, args, dr) + return dr, nil +} + +func (sf *statFilter) DmConnectionPrepare(filterChain *filterChain, c *DmConnection, query string) (*DmStatement, error) { + stmt, err := filterChain.DmConnectionPrepare(c, query) + if err != nil { + return nil, err + } + statementCreateAfter(c, stmt) + return stmt, nil +} + +func (sf *statFilter) DmConnectionPrepareContext(filterChain *filterChain, c *DmConnection, ctx context.Context, query string) (*DmStatement, error) { + stmt, err := filterChain.DmConnectionPrepareContext(c, ctx, query) + if err != nil { + return nil, err + } + statementCreateAfter(c, stmt) + return stmt, nil +} + +func (sf *statFilter) DmConnectionResetSession(filterChain *filterChain, c *DmConnection, ctx context.Context) error { + return filterChain.DmConnectionResetSession(c, ctx) +} + +func (sf *statFilter) DmConnectionCheckNamedValue(filterChain *filterChain, c *DmConnection, nv *driver.NamedValue) error { + return filterChain.DmConnectionCheckNamedValue(c, nv) +} + +//DmStatement +func (sf *statFilter) DmStatementClose(filterChain *filterChain, s *DmStatement) error { + if !s.closed { + statementCloseBefore(s) + } + return filterChain.DmStatementClose(s) +} + +func (sf *statFilter) DmStatementNumInput(filterChain *filterChain, s *DmStatement) int { + return filterChain.DmStatementNumInput(s) +} + +func (sf *statFilter) DmStatementExec(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmResult, error) { + stmtExecBefore(s) + dr, err := filterChain.DmStatementExec(s, args) + if err != nil { + statementExecuteErrorAfter(s, args, err) + return nil, err + } + stmtExecAfter(s, args, int(dr.affectedRows)) + return dr, nil +} + +func (sf *statFilter) DmStatementExecContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmResult, error) { + stmtExecBefore(s) + dr, err := filterChain.DmStatementExecContext(s, ctx, args) + if err != nil { + statementExecuteErrorAfter(s, args, err) + return nil, err + } + stmtExecAfter(s, args, int(dr.affectedRows)) + return dr, nil +} + +func (sf *statFilter) DmStatementQuery(filterChain *filterChain, s *DmStatement, args []driver.Value) (*DmRows, error) { + stmtQueryBefore(s) + dr, err := filterChain.DmStatementQuery(s, args) + if err != nil { + statementExecuteErrorAfter(s, args, err) + return nil, err + } + stmtQueryAfter(s, args, dr) + return dr, nil +} + +func (sf *statFilter) DmStatementQueryContext(filterChain *filterChain, s *DmStatement, ctx context.Context, args []driver.NamedValue) (*DmRows, error) { + stmtQueryBefore(s) + dr, err := filterChain.DmStatementQueryContext(s, ctx, args) + if err != nil { + statementExecuteErrorAfter(s, args, err) + return nil, err + } + stmtQueryAfter(s, args, dr) + return dr, nil +} + +func (sf *statFilter) DmStatementCheckNamedValue(filterChain *filterChain, s *DmStatement, nv *driver.NamedValue) error { + return filterChain.DmStatementCheckNamedValue(s, nv) +} + +//DmResult +func (sf *statFilter) DmResultLastInsertId(filterChain *filterChain, r *DmResult) (int64, error) { + return filterChain.DmResultLastInsertId(r) +} + +func (sf *statFilter) DmResultRowsAffected(filterChain *filterChain, r *DmResult) (int64, error) { + return filterChain.DmResultRowsAffected(r) +} + +//DmRows +func (sf *statFilter) DmRowsColumns(filterChain *filterChain, r *DmRows) []string { + return filterChain.DmRowsColumns(r) +} + +func (sf *statFilter) DmRowsClose(filterChain *filterChain, r *DmRows) error { + if !r.CurrentRows.closed { + resultSetCloseBefore(r) + } + return filterChain.DmRowsClose(r) +} + +func (sf *statFilter) DmRowsNext(filterChain *filterChain, r *DmRows, dest []driver.Value) error { + return filterChain.DmRowsNext(r, dest) +} + +func (sf *statFilter) DmRowsHasNextResultSet(filterChain *filterChain, r *DmRows) bool { + return filterChain.DmRowsHasNextResultSet(r) +} + +func (sf *statFilter) DmRowsNextResultSet(filterChain *filterChain, r *DmRows) error { + return filterChain.DmRowsNextResultSet(r) +} + +func (sf *statFilter) DmRowsColumnTypeScanType(filterChain *filterChain, r *DmRows, index int) reflect.Type { + return filterChain.DmRowsColumnTypeScanType(r, index) +} + +func (sf *statFilter) DmRowsColumnTypeDatabaseTypeName(filterChain *filterChain, r *DmRows, index int) string { + return filterChain.DmRowsColumnTypeDatabaseTypeName(r, index) +} + +func (sf *statFilter) DmRowsColumnTypeLength(filterChain *filterChain, r *DmRows, index int) (length int64, ok bool) { + return filterChain.DmRowsColumnTypeLength(r, index) +} + +func (sf *statFilter) DmRowsColumnTypeNullable(filterChain *filterChain, r *DmRows, index int) (nullable, ok bool) { + return filterChain.DmRowsColumnTypeNullable(r, index) +} + +func (sf *statFilter) DmRowsColumnTypePrecisionScale(filterChain *filterChain, r *DmRows, index int) (precision, scale int64, ok bool) { + return filterChain.DmRowsColumnTypePrecisionScale(r, index) +} + +func getActiveStmtCount(conn *DmConnection) int { + if conn.stmtMap == nil { + return 0 + } else { + return len(conn.stmtMap) + } +} + +func statementCreateAfter(conn *DmConnection, stmt *DmStatement) { + stmt.statInfo.setConstructNano() + conn.statInfo.getConnStat().incrementStmt() +} + +func connExecBefore(conn *DmConnection, sql string) { + conn.statInfo.setLastExecuteSql(sql) + conn.statInfo.setFirstResultSet(false) + conn.statInfo.setLastExecuteType(ExecuteUpdate) + internalBeforeConnExecute(conn, sql) +} + +func connExecAfter(conn *DmConnection, sql string, args interface{}, updateCount int) { + internalAfterConnExecute(conn, args, updateCount) +} + +func connQueryBefore(conn *DmConnection, sql string) { + conn.statInfo.setLastExecuteSql(sql) + conn.statInfo.setFirstResultSet(true) + conn.statInfo.setLastExecuteType(ExecuteQuery) + internalBeforeConnExecute(conn, sql) +} + +func connQueryAfter(conn *DmConnection, sql string, args interface{}, resultSet *DmRows) { + if resultSet != nil { + connResultSetCreateAfter(resultSet, conn) + } + internalAfterConnExecute(conn, args, 0) +} + +func stmtExecBefore(stmt *DmStatement) { + stmt.statInfo.setLastExecuteSql(stmt.nativeSql) + stmt.statInfo.setFirstResultSet(false) + stmt.statInfo.setLastExecuteType(ExecuteUpdate) + internalBeforeStatementExecute(stmt, stmt.nativeSql) +} + +func stmtExecAfter(stmt *DmStatement, args interface{}, updateCount int) { + internalAfterStatementExecute(stmt, args, updateCount) +} + +func stmtQueryBefore(stmt *DmStatement) { + stmt.statInfo.setLastExecuteSql(stmt.nativeSql) + stmt.statInfo.setFirstResultSet(true) + stmt.statInfo.setLastExecuteType(ExecuteQuery) + internalBeforeStatementExecute(stmt, stmt.nativeSql) +} + +func stmtQueryAfter(stmt *DmStatement, args interface{}, resultSet *DmRows) { + if resultSet != nil { + stmtResultSetCreateAfter(resultSet, stmt) + } + internalAfterStatementExecute(stmt, args, 0) +} + +func internalBeforeConnExecute(conn *DmConnection, sql string) { + connStat := conn.statInfo.getConnStat() + connStat.incrementExecuteCount() + conn.statInfo.beforeExecute() + + sqlStat := conn.statInfo.getSqlStat() + if sqlStat == nil || sqlStat.Removed == 1 || !(sqlStat.Sql == sql) { + sqlStat = connStat.createSqlStat(sql) + conn.statInfo.setSqlStat(sqlStat) + } + + inTransaction := false + inTransaction = !conn.autoCommit + + if sqlStat != nil { + sqlStat.ExecuteLastStartTime = time.Now().UnixNano() + sqlStat.incrementRunningCount() + + if inTransaction { + sqlStat.incrementInTransactionCount() + } + } +} + +func internalAfterConnExecute(conn *DmConnection, args interface{}, updateCount int) { + nowNano := time.Now().UnixNano() + nanos := nowNano - conn.statInfo.getLastExecuteStartNano() + + conn.statInfo.afterExecute(nanos) + + sqlStat := conn.statInfo.getSqlStat() + + if sqlStat != nil { + sqlStat.incrementExecuteSuccessCount() + + sqlStat.decrementRunningCount() + + parameters := buildSlowParameters(args) + + sqlStat.addExecuteTimeAndResultHoldTimeHistogramRecord(conn.statInfo.getLastExecuteType(), conn.statInfo.isFirstResultSet(), + nanos, parameters) + + if !conn.statInfo.isFirstResultSet() && + conn.statInfo.getLastExecuteType() == ExecuteUpdate { + if updateCount < 0 { + updateCount = 0 + } + sqlStat.addUpdateCount(int64(updateCount)) + } + } + +} + +func internalBeforeStatementExecute(stmt *DmStatement, sql string) { + connStat := stmt.dmConn.statInfo.getConnStat() + connStat.incrementExecuteCount() + stmt.statInfo.beforeExecute() + + sqlStat := stmt.statInfo.getSqlStat() + if sqlStat == nil || sqlStat.Removed == 1 || !(sqlStat.Sql == sql) { + sqlStat = connStat.createSqlStat(sql) + stmt.statInfo.setSqlStat(sqlStat) + } + + inTransaction := false + inTransaction = !stmt.dmConn.autoCommit + + if sqlStat != nil { + sqlStat.ExecuteLastStartTime = time.Now().UnixNano() + sqlStat.incrementRunningCount() + + if inTransaction { + sqlStat.incrementInTransactionCount() + } + } +} + +func internalAfterStatementExecute(stmt *DmStatement, args interface{}, updateCount int) { + nowNano := time.Now().UnixNano() + nanos := nowNano - stmt.statInfo.getLastExecuteStartNano() + + stmt.statInfo.afterExecute(nanos) + + sqlStat := stmt.statInfo.getSqlStat() + + if sqlStat != nil { + sqlStat.incrementExecuteSuccessCount() + + sqlStat.decrementRunningCount() + + parameters := "" + if stmt.paramCount > 0 { + parameters = buildStmtSlowParameters(stmt, args) + } + sqlStat.addExecuteTimeAndResultHoldTimeHistogramRecord(stmt.statInfo.getLastExecuteType(), stmt.statInfo.isFirstResultSet(), + nanos, parameters) + + if (!stmt.statInfo.isFirstResultSet()) && + stmt.statInfo.getLastExecuteType() == ExecuteUpdate { + updateCount := stmt.execInfo.updateCount + if updateCount < 0 { + updateCount = 0 + } + sqlStat.addUpdateCount(updateCount) + } + + } + +} + +func buildSlowParameters(args interface{}) string { + switch v := args.(type) { + case []driver.Value: + sb := bytes.NewBufferString("") + for i := 0; i < len(v); i++ { + if i != 0 { + sb.WriteString(",") + } else { + sb.WriteString("[") + } + + sb.WriteString(fmt.Sprint(v[i])) + } + + if len(v) > 0 { + sb.WriteString("]") + } + return sb.String() + case []driver.NamedValue: + sb := bytes.NewBufferString("") + for i := 0; i < len(v); i++ { + if i != 0 { + sb.WriteString(",") + } else { + sb.WriteString("[") + } + + sb.WriteString(fmt.Sprint(v[i])) + } + if len(v) > 0 { + sb.WriteString("]") + } + return sb.String() + default: + return "" + } +} + +func buildStmtSlowParameters(stmt *DmStatement, args interface{}) string { + switch v := args.(type) { + case []driver.Value: + sb := bytes.NewBufferString("") + for i := 0; i < int(stmt.paramCount); i++ { + if i != 0 { + sb.WriteString(",") + } else { + sb.WriteString("[") + } + + sb.WriteString(fmt.Sprint(v[i])) + } + if len(v) > 0 { + sb.WriteString("]") + } + return sb.String() + case []driver.NamedValue: + sb := bytes.NewBufferString("") + for i := 0; i < int(stmt.paramCount); i++ { + if i != 0 { + sb.WriteString(",") + } else { + sb.WriteString("[") + } + + sb.WriteString(fmt.Sprint(v[i])) + } + if len(v) > 0 { + sb.WriteString("]") + } + return sb.String() + default: + return "" + } +} + +func connExecuteErrorAfter(conn *DmConnection, args interface{}, err error) { + nanos := time.Now().UnixNano() - conn.statInfo.getLastExecuteStartNano() + conn.statInfo.getConnStat().incrementErrorCount() + conn.statInfo.afterExecute(nanos) + + // SQL + sqlStat := conn.statInfo.getSqlStat() + if sqlStat != nil { + sqlStat.decrementRunningCount() + sqlStat.error(err) + parameters := buildSlowParameters(args) + sqlStat.addExecuteTimeAndResultHoldTimeHistogramRecord(conn.statInfo.getLastExecuteType(), conn.statInfo.isFirstResultSet(), + nanos, parameters) + } + +} + +func statementExecuteErrorAfter(stmt *DmStatement, args interface{}, err error) { + nanos := time.Now().UnixNano() - stmt.statInfo.getLastExecuteStartNano() + stmt.dmConn.statInfo.getConnStat().incrementErrorCount() + stmt.statInfo.afterExecute(nanos) + + // SQL + sqlStat := stmt.statInfo.getSqlStat() + if sqlStat != nil { + sqlStat.decrementRunningCount() + sqlStat.error(err) + parameters := "" + if stmt.paramCount > 0 { + parameters = buildStmtSlowParameters(stmt, args) + } + sqlStat.addExecuteTimeAndResultHoldTimeHistogramRecord(stmt.statInfo.getLastExecuteType(), stmt.statInfo.isFirstResultSet(), + nanos, parameters) + } + +} + +func statementCloseBefore(stmt *DmStatement) { + stmt.dmConn.statInfo.getConnStat().decrementStmt() +} + +func connResultSetCreateAfter(dmdbResultSet *DmRows, conn *DmConnection) { + dmdbResultSet.statInfo.setSql(conn.statInfo.getLastExecuteSql()) + dmdbResultSet.statInfo.setSqlStat(conn.statInfo.getSqlStat()) + dmdbResultSet.statInfo.setConstructNano() +} + +func stmtResultSetCreateAfter(dmdbResultSet *DmRows, stmt *DmStatement) { + dmdbResultSet.statInfo.setSql(stmt.statInfo.getLastExecuteSql()) + dmdbResultSet.statInfo.setSqlStat(stmt.statInfo.getSqlStat()) + dmdbResultSet.statInfo.setConstructNano() +} + +func resultSetCloseBefore(resultSet *DmRows) { + nanos := time.Now().UnixNano() - resultSet.statInfo.getConstructNano() + fetchRowCount := getFetchedRows(resultSet) + sqlStat := resultSet.statInfo.getSqlStat() + if sqlStat != nil && resultSet.statInfo.getCloseCount() == 0 { + sqlStat.addFetchRowCount(fetchRowCount) + stmtExecuteNano := resultSet.statInfo.getLastExecuteTimeNano() + sqlStat.addResultSetHoldTimeNano2(stmtExecuteNano, nanos) + if resultSet.statInfo.getReadStringLength() > 0 { + sqlStat.addStringReadLength(resultSet.statInfo.getReadStringLength()) + } + if resultSet.statInfo.getReadBytesLength() > 0 { + sqlStat.addReadBytesLength(resultSet.statInfo.getReadBytesLength()) + } + if resultSet.statInfo.getOpenInputStreamCount() > 0 { + sqlStat.addInputStreamOpenCount(int64(resultSet.statInfo.getOpenInputStreamCount())) + } + if resultSet.statInfo.getOpenReaderCount() > 0 { + sqlStat.addReaderOpenCount(int64(resultSet.statInfo.getOpenReaderCount())) + } + } + + resultSet.statInfo.incrementCloseCount() +} + +func getFetchedRows(rs *DmRows) int64 { + if rs.CurrentRows.currentPos >= rs.CurrentRows.totalRowCount { + return rs.CurrentRows.totalRowCount + } else { + return rs.CurrentRows.currentPos + 1 + } +} diff --git a/vendor/gitee.com/chunanyong/dm/zi.go b/vendor/gitee.com/chunanyong/dm/zi.go new file mode 100644 index 000000000..d5c83a246 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zi.go @@ -0,0 +1,1017 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "bytes" + "io" + "math/big" + "strconv" + "strings" + "time" + + "gitee.com/chunanyong/dm/util" +) + +var G2DB g2db + +type g2db struct { +} + +func (G2DB g2db) checkTinyint(val interface{}) error { + switch v := val.(type) { + case float64: + if v < float64(INT8_MIN) || v > float64(INT8_MAX) { + return ECGO_DATA_OVERFLOW.throw() + } + case DmDecimal: + if v.ToBigInt().Cmp(big.NewInt(int64(INT8_MIN))) < 0 || + v.ToBigInt().Cmp(big.NewInt(int64(INT8_MAX))) > 0 { + return ECGO_DATA_OVERFLOW.throw() + } + } + return nil +} + +func (G2DB g2db) checkSmallint(val interface{}) error { + switch v := val.(type) { + case float64: + if v < float64(INT16_MIN) || v > float64(INT16_MAX) { + return ECGO_DATA_OVERFLOW.throw() + } + case DmDecimal: + if v.ToBigInt().Cmp(big.NewInt(int64(INT16_MIN))) < 0 || + v.ToBigInt().Cmp(big.NewInt(int64(INT16_MAX))) > 0 { + return ECGO_DATA_OVERFLOW.throw() + } + } + return nil +} + +func (G2DB g2db) checkInt(val interface{}) error { + switch v := val.(type) { + case float64: + if v < float64(INT32_MIN) || v > float64(INT32_MAX) { + return ECGO_DATA_OVERFLOW.throw() + } + case DmDecimal: + if v.ToBigInt().Cmp(big.NewInt(int64(INT32_MIN))) < 0 || + v.ToBigInt().Cmp(big.NewInt(int64(INT32_MAX))) > 0 { + return ECGO_DATA_OVERFLOW.throw() + } + } + return nil +} + +func (G2DB g2db) checkBigint(val interface{}) error { + switch v := val.(type) { + case float64: + if v < float64(INT64_MIN) || v > float64(INT64_MAX) { + return ECGO_DATA_OVERFLOW.throw() + } + case DmDecimal: + if v.ToBigInt().Cmp(big.NewInt(INT64_MIN)) < 0 || + v.ToBigInt().Cmp(big.NewInt(INT64_MAX)) > 0 { + return ECGO_DATA_OVERFLOW.throw() + } + } + return nil +} + +func (G2DB g2db) checkReal(val interface{}) error { + switch v := val.(type) { + case float64: + if v < float64(FLOAT32_MIN) || v > float64(FLOAT32_MAX) { + return ECGO_DATA_OVERFLOW.throw() + } + case DmDecimal: + if v.ToBigFloat().Cmp(big.NewFloat(float64(FLOAT32_MIN))) < 0 || + v.ToBigFloat().Cmp(big.NewFloat(float64(FLOAT32_MAX))) > 0 { + return ECGO_DATA_OVERFLOW.throw() + } + } + return nil +} + +func (G2DB g2db) fromBool(val bool, param parameter, conn *DmConnection) ([]byte, error) { + switch param.colType { + case BOOLEAN, BIT, TINYINT, SMALLINT, INT, BIGINT, REAL, DOUBLE, DECIMAL, CHAR, + VARCHAR2, VARCHAR, CLOB: + if val { + return G2DB.fromInt64(1, param, conn) + } else { + return G2DB.fromInt64(0, param, conn) + } + case BINARY, VARBINARY, BLOB: + if val { + return Dm_build_650.Dm_build_828(byte(1)), nil + } else { + return Dm_build_650.Dm_build_828(byte(0)), nil + } + } + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (G2DB g2db) fromInt64(val int64, param parameter, conn *DmConnection) ([]byte, error) { + + switch param.colType { + case BOOLEAN, BIT: + if val == 0 { + return Dm_build_650.Dm_build_828(byte(0)), nil + } + + return Dm_build_650.Dm_build_828(byte(1)), nil + + case TINYINT: + err := G2DB.checkTinyint(float64(val)) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_828(byte(val)), nil + case SMALLINT: + err := G2DB.checkSmallint(float64(val)) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_834(int16(val)), nil + case INT: + err := G2DB.checkInt(float64(val)) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_837(int32(val)), nil + case BIGINT: + err := G2DB.checkBigint(float64(val)) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_840(int64(val)), nil + case REAL: + err := G2DB.checkReal(float64(val)) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_843(float32(val)), nil + case DOUBLE: + return Dm_build_650.Dm_build_846(float64(val)), nil + case DECIMAL: + d, err := newDecimal(big.NewInt(val), int(param.prec), int(param.scale)) + if err != nil { + return nil, err + } + return d.encodeDecimal() + case CHAR, VARCHAR2, VARCHAR, CLOB: + return Dm_build_650.Dm_build_866(strconv.FormatInt(val, 10), conn.getServerEncoding(), conn), nil + case BINARY, VARBINARY, BLOB: + return G2DB.ToBinary(val, int(param.prec)), nil + case DATE, TIME, DATETIME, DATETIME2: + if err := G2DB.checkInt(float64(val)); err != nil { + return nil, err + } + return toDate(val, param.column, *conn) + } + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (G2DB g2db) ToBinary(x int64, prec int) []byte { + b := make([]byte, 8) + b[7] = byte(x) + b[6] = byte(x >> 8) + b[5] = byte(x >> 16) + b[4] = byte(x >> 24) + b[3] = byte(x >> 32) + b[2] = byte(x >> 40) + b[1] = byte(x >> 48) + b[0] = byte(x >> 56) + + if prec > 0 && prec < len(b) { + dest := make([]byte, prec) + copy(dest, b[len(b)-prec:]) + return dest + } + return b +} + +func (G2DB g2db) fromFloat32(val float32, param parameter, conn *DmConnection) ([]byte, error) { + switch param.colType { + case BOOLEAN, BIT: + if val == 0.0 { + return Dm_build_650.Dm_build_828(0), nil + } + return Dm_build_650.Dm_build_828(1), nil + case TINYINT: + if err := G2DB.checkTinyint(float64(val)); err != nil { + return nil, err + } + return Dm_build_650.Dm_build_828(byte(val)), nil + case SMALLINT: + if err := G2DB.checkSmallint(float64(val)); err != nil { + return nil, err + } + return Dm_build_650.Dm_build_834(int16(val)), nil + case INT: + if err := G2DB.checkInt(float64(val)); err != nil { + return nil, err + } + return Dm_build_650.Dm_build_837(int32(val)), nil + case BIGINT: + if err := G2DB.checkBigint(float64(val)); err != nil { + return nil, err + } + return Dm_build_650.Dm_build_840(int64(val)), nil + case REAL: + if err := G2DB.checkReal(float64(val)); err != nil { + return nil, err + } + return Dm_build_650.Dm_build_843(val), nil + case DOUBLE: + return Dm_build_650.Dm_build_846(float64(val)), nil + case DECIMAL: + d, err := newDecimal(big.NewFloat(float64(val)), int(param.prec), int(param.scale)) + if err != nil { + return nil, err + } + return d.encodeDecimal() + case CHAR, VARCHAR2, VARCHAR, CLOB: + return Dm_build_650.Dm_build_866(strconv.FormatFloat(float64(val), 'f', -1, 32), conn.getServerEncoding(), conn), nil + } + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (G2DB g2db) fromFloat64(val float64, param parameter, conn *DmConnection) ([]byte, error) { + + switch param.colType { + case BOOLEAN, BIT: + if val == 0.0 { + return Dm_build_650.Dm_build_828(0), nil + } + return Dm_build_650.Dm_build_828(1), nil + + case TINYINT: + err := G2DB.checkTinyint(val) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_828(byte(val)), nil + case SMALLINT: + err := G2DB.checkSmallint(val) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_834(int16(val)), nil + case INT: + err := G2DB.checkInt(val) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_837(int32(val)), nil + case BIGINT: + err := G2DB.checkBigint(val) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_840(int64(val)), nil + case REAL: + err := G2DB.checkReal(val) + + if err != nil { + return nil, err + } + + return Dm_build_650.Dm_build_843(float32(val)), nil + case DOUBLE: + return Dm_build_650.Dm_build_846(float64(val)), nil + case DECIMAL: + d, err := newDecimal(big.NewFloat(val), int(param.prec), int(param.scale)) + if err != nil { + return nil, err + } + return d.encodeDecimal() + case CHAR, VARCHAR2, VARCHAR, CLOB: + return Dm_build_650.Dm_build_866(strconv.FormatFloat(val, 'f', -1, 64), conn.getServerEncoding(), conn), nil + } + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (G2DB g2db) fromBytes(val []byte, param parameter, conn *DmConnection) (interface{}, error) { + switch param.colType { + case CHAR, VARCHAR2, VARCHAR: + return G2DB.toVarchar(val) + case CLOB: + b, err := G2DB.toVarchar(val) + if err != nil { + return nil, err + } + return G2DB.changeOffRowData(param, b, conn.getServerEncoding()) + case BINARY, VARBINARY: + return val, nil + case BLOB: + return G2DB.bytes2Blob(val, param, conn) + case ARRAY, CLASS, PLTYPE_RECORD, SARRAY: + if param.typeDescriptor == nil { + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return TypeDataSV.objBlobToBytes(val, param.typeDescriptor) + } + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (G2DB g2db) toVarchar(bsArr []byte) ([]byte, error) { + if bsArr == nil || len(bsArr) == 0 { + return make([]byte, 0), nil + } + + realLen := len(bsArr) * 2 + bsRet := make([]byte, realLen) + for i := 0; i < len(bsArr); i++ { + bsTemp, err := G2DB.toChar(bsArr[i]) + if err != nil { + return nil, err + } + + bsRet[i*2] = bsTemp[0] + bsRet[i*2+1] = bsTemp[1] + } + + return bsRet, nil +} + +func (G2DB g2db) toChar(bt byte) ([]byte, error) { + bytes := make([]byte, 2) + var err error + + bytes[0], err = G2DB.getCharByNumVal((bt >> 4) & 0x0F) + if err != nil { + return nil, err + } + + bytes[1], err = G2DB.getCharByNumVal(bt & 0x0F) + if err != nil { + return nil, err + } + + return bytes, nil +} + +func (G2DB g2db) getCharByNumVal(val byte) (byte, error) { + if val >= 0 && val <= 9 { + return (byte)(val + '0'), nil + } + + if val >= 0x0a && val <= 0x0F { + return (byte)(val + 'A' - 0x0a), nil + } + return 0, ECGO_INVALID_HEX.throw() +} + +func (G2DB g2db) fromString(val string, param parameter, conn *DmConnection) (interface{}, error) { + switch param.colType { + case BOOLEAN, BIT: + ret, err := G2DB.toBool(val) + if err != nil { + return nil, err + } + + if ret { + return Dm_build_650.Dm_build_828(byte(1)), nil + } else { + return Dm_build_650.Dm_build_828(byte(0)), nil + } + + case TINYINT, SMALLINT, INT, BIGINT: + f, ok := new(big.Float).SetString(val) + if !ok { + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + if f.Sign() < 0 { + f.Sub(f, big.NewFloat(0.5)) + } else { + f.Add(f, big.NewFloat(0.5)) + } + z, _ := f.Int(nil) + return G2DB.fromBigInt(z, param, conn) + case REAL, DOUBLE, DECIMAL: + f, ok := new(big.Float).SetString(val) + if ok { + return G2DB.fromBigFloat(f, param, conn) + } else { + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + + case CHAR, VARCHAR2, VARCHAR: + if param.mask == MASK_BFILE && !isValidBFileStr(val) { + return nil, ECGO_INVALID_BFILE_STR.throw() + } + return Dm_build_650.Dm_build_866(val, conn.getServerEncoding(), conn), nil + case CLOB: + return G2DB.string2Clob(val, param, conn) + case BINARY, VARBINARY: + return util.StringUtil.HexStringToBytes(val), nil + case BLOB: + return G2DB.bytes2Blob(util.StringUtil.HexStringToBytes(val), param, conn) + case DATE: + if conn.FormatDate != "" { + dt, err := parse(val, conn.FormatDate, int(conn.OracleDateLanguage)) + if err != nil { + return nil, err + } + + return encode(dt, param.column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + } + + return encodeByString(val, param.column, *conn) + case TIME: + if conn.FormatTime != "" { + dt, err := parse(val, conn.FormatTime, int(conn.OracleDateLanguage)) + if err != nil { + return nil, err + } + + return encode(dt, param.column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + } + + return encodeByString(val, param.column, *conn) + case DATETIME, DATETIME2: + if conn.FormatTimestamp != "" { + dt, err := parse(val, conn.FormatTimestamp, int(conn.OracleDateLanguage)) + if err != nil { + return nil, err + } + + return encode(dt, param.column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + } + + return encodeByString(val, param.column, *conn) + case TIME_TZ: + dt, err := parse(val, conn.FormatTimeTZ, int(conn.OracleDateLanguage)) + if err != nil { + return nil, err + } + + if conn.FormatTimeTZ != "" { + return encode(dt, param.column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + } + + return encodeByString(val, param.column, *conn) + case DATETIME_TZ, DATETIME2_TZ: + if conn.FormatTimestampTZ != "" { + dt, err := parse(val, conn.FormatTimestampTZ, int(conn.OracleDateLanguage)) + if err != nil { + return nil, err + } + + return encode(dt, param.column, int(conn.dmConnector.localTimezone), int(conn.DbTimezone)) + } + + return encodeByString(val, param.column, *conn) + case INTERVAL_DT: + dt, err := NewDmIntervalDTByString(val) + if err != nil { + return nil, err + } + return dt.encode(int(param.scale)) + + case INTERVAL_YM: + ym, err := NewDmIntervalYMByString(val) + if err != nil { + return nil, err + } + return ym.encode(int(param.scale)) + } + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (G2DB g2db) toBool(str string) (bool, error) { + str = strings.TrimSpace(str) + if util.StringUtil.Equals(str, "0") { + return false, nil + } else if util.StringUtil.Equals(str, "1") { + return true, nil + } + + return strings.ToLower(str) == "true", nil +} + +func (G2DB g2db) fromBigInt(val *big.Int, param parameter, conn *DmConnection) ([]byte, error) { + var ret []byte + switch param.colType { + case BOOLEAN, BIT: + if val.Sign() == 0 { + ret = Dm_build_650.Dm_build_828(0) + } else { + ret = Dm_build_650.Dm_build_828(1) + } + case TINYINT: + err := G2DB.checkTinyint(float64(val.Int64())) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_828(byte(val.Int64())) + case SMALLINT: + err := G2DB.checkSmallint(float64(val.Int64())) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_834(int16(val.Int64())) + case INT: + err := G2DB.checkInt(float64(val.Int64())) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_837(int32(val.Int64())) + case BIGINT: + err := G2DB.checkBigint(float64(val.Int64())) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_840(val.Int64()) + case REAL: + err := G2DB.checkReal(float64(val.Int64())) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_843(float32(val.Int64())) + case DOUBLE: + ret = Dm_build_650.Dm_build_846(float64(val.Int64())) + case DECIMAL, BINARY, VARBINARY, BLOB: + d, err := newDecimal(val, int(param.prec), int(param.scale)) + if err != nil { + return nil, err + } + ret, err = d.encodeDecimal() + if err != nil { + return nil, err + } + case CHAR, VARCHAR2, VARCHAR, CLOB: + ret = Dm_build_650.Dm_build_866(val.String(), conn.getServerEncoding(), conn) + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, nil +} + +func (G2DB g2db) fromBigFloat(val *big.Float, param parameter, conn *DmConnection) ([]byte, error) { + var ret []byte + switch param.colType { + case BOOLEAN, BIT: + if val.Sign() == 0 { + ret = Dm_build_650.Dm_build_828(0) + } else { + ret = Dm_build_650.Dm_build_828(1) + } + case TINYINT: + f, _ := val.Float64() + + err := G2DB.checkTinyint(f) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_828(byte(f)) + case SMALLINT: + f, _ := val.Float64() + + err := G2DB.checkSmallint(f) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_834(int16(f)) + case INT: + f, _ := val.Float64() + + err := G2DB.checkInt(f) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_837(int32(f)) + case BIGINT: + f, _ := val.Float64() + + err := G2DB.checkBigint(f) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_840(int64(f)) + case REAL: + f, _ := val.Float64() + + err := G2DB.checkReal(f) + + if err != nil { + return nil, err + } + + ret = Dm_build_650.Dm_build_843(float32(f)) + case DOUBLE: + f, _ := val.Float64() + ret = Dm_build_650.Dm_build_846(f) + case DECIMAL: + d, err := newDecimal(val, int(param.prec), int(param.scale)) + if err != nil { + return nil, err + } + ret, err = d.encodeDecimal() + if err != nil { + return nil, err + } + case CHAR, VARCHAR2, VARCHAR, CLOB: + ret = Dm_build_650.Dm_build_866(val.Text('f', int(param.scale)), conn.getServerEncoding(), conn) + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, nil +} + +func (G2DB g2db) fromDecimal(val DmDecimal, param parameter, conn *DmConnection) ([]byte, error) { + var ret []byte + switch param.colType { + case BOOLEAN, BIT: + if val.Sign() == 0 { + ret = Dm_build_650.Dm_build_828(0) + } else { + ret = Dm_build_650.Dm_build_828(1) + } + case TINYINT: + if err := G2DB.checkTinyint(val); err != nil { + return nil, err + } + ret = Dm_build_650.Dm_build_828(byte(val.ToBigInt().Int64())) + case SMALLINT: + if err := G2DB.checkSmallint(val); err != nil { + return nil, err + } + ret = Dm_build_650.Dm_build_834(int16(val.ToBigInt().Int64())) + case INT: + if err := G2DB.checkInt(val); err != nil { + return nil, err + } + ret = Dm_build_650.Dm_build_837(int32(val.ToBigInt().Int64())) + case BIGINT: + if err := G2DB.checkBigint(val); err != nil { + return nil, err + } + ret = Dm_build_650.Dm_build_840(int64(val.ToBigInt().Int64())) + case REAL: + if err := G2DB.checkReal(val); err != nil { + return nil, err + } + f, _ := val.ToBigFloat().Float32() + ret = Dm_build_650.Dm_build_843(f) + case DOUBLE: + f, _ := val.ToBigFloat().Float64() + ret = Dm_build_650.Dm_build_846(f) + case DECIMAL: + var err error + ret, err = val.encodeDecimal() + if err != nil { + return nil, err + } + case CHAR, VARCHAR2, VARCHAR, CLOB: + ret = Dm_build_650.Dm_build_866(val.ToBigFloat().Text('f', -1), conn.getServerEncoding(), conn) + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, nil +} + +func (G2DB g2db) fromTime(val time.Time, param parameter, conn *DmConnection) ([]byte, error) { + + switch param.colType { + case DATE, DATETIME, DATETIME_TZ, TIME, TIME_TZ, DATETIME2, DATETIME2_TZ: + return encodeByTime(val, param.column, *conn) + case CHAR, VARCHAR2, VARCHAR, CLOB: + return Dm_build_650.Dm_build_866(val.Format("2006-01-02 15:04:05.999999999 -07:00"), conn.getServerEncoding(), conn), nil + } + + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (G2DB g2db) fromDmIntervalDT(val DmIntervalDT, param parameter, conn *DmConnection) ([]byte, error) { + switch param.colType { + case CHAR, VARCHAR2, VARCHAR, CLOB: + return Dm_build_650.Dm_build_866(val.String(), conn.getServerEncoding(), conn), nil + case INTERVAL_DT: + return val.encode(int(param.scale)) + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } +} + +func (G2DB g2db) fromDmdbIntervalYM(val DmIntervalYM, param parameter, conn *DmConnection) ([]byte, error) { + + switch param.colType { + case CHAR, VARCHAR, VARCHAR2, CLOB: + return Dm_build_650.Dm_build_866(val.String(), conn.getServerEncoding(), conn), nil + case INTERVAL_YM: + return val.encode(int(param.scale)) + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } +} + +func (G2DB g2db) fromBlob(val DmBlob, param parameter, conn *DmConnection) (interface{}, error) { + var ret interface{} + switch param.colType { + case BINARY, VARBINARY: + len, err := val.GetLength() + if err != nil { + return nil, err + } + ret, err = val.getBytes(1, int32(len)) + if err != nil { + return nil, err + } + case BLOB: + var err error + ret, err = G2DB.blob2Blob(val, param, conn) + if err != nil { + return nil, err + } + case ARRAY, CLASS, PLTYPE_RECORD, SARRAY: + + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, nil +} + +func (G2DB g2db) fromClob(val DmClob, param parameter, conn *DmConnection) (interface{}, error) { + var ret interface{} + switch param.colType { + case CHAR, VARCHAR, VARCHAR2: + var len int64 + var s string + var err error + len, err = val.GetLength() + if err != nil { + return nil, err + } + s, err = val.getSubString(1, int32(len)) + if err != nil { + return nil, err + } + ret = []byte(s) + case CLOB: + var err error + ret, err = G2DB.clob2Clob(val, param, conn) + if err != nil { + return nil, err + } + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, nil +} + +func (G2DB g2db) fromReader(val io.Reader, param parameter, conn *DmConnection) (interface{}, error) { + var ret interface{} + switch param.colType { + case CHAR, VARCHAR2, VARCHAR: + var bytesBuf = new(bytes.Buffer) + if _, err := bytesBuf.ReadFrom(val); err != nil { + return nil, err + } + return Dm_build_650.Dm_build_866(string(bytesBuf.Bytes()), conn.getServerEncoding(), conn), nil + case BINARY, VARBINARY: + var bytesBuf = new(bytes.Buffer) + if _, err := bytesBuf.ReadFrom(val); err != nil { + return nil, err + } + return util.StringUtil.HexStringToBytes(string(bytesBuf.Bytes())), nil + case BLOB, CLOB: + var binder = newOffRowReaderBinder(val, conn.getServerEncoding()) + if binder.offRow { + ret = binder + } else { + ret = binder.readAll() + } + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, nil +} + +func (G2DB g2db) string2Clob(val string, param parameter, conn *DmConnection) (interface{}, error) { + return G2DB.changeOffRowData(param, Dm_build_650.Dm_build_866(val, conn.getServerEncoding(), conn), conn.getServerEncoding()) +} + +func (G2DB g2db) bytes2Blob(val []byte, param parameter, conn *DmConnection) (interface{}, error) { + return G2DB.changeOffRowData(param, val, conn.getServerEncoding()) +} + +func (G2DB g2db) clob2Clob(val DmClob, param parameter, conn *DmConnection) (interface{}, error) { + var clobLen int64 + var err error + if clobLen, err = val.GetLength(); err != nil { + return nil, err + } + if G2DB.isOffRow(param.colType, clobLen) { + return newOffRowClobBinder(val, conn.getServerEncoding()), nil + } else { + var length int64 + var str string + if length, err = val.GetLength(); err != nil { + return nil, err + } + if str, err = val.getSubString(1, int32(length)); err != nil { + return nil, err + } + return Dm_build_650.Dm_build_866(str, conn.getServerEncoding(), conn), nil + } +} + +func (G2DB g2db) blob2Blob(val DmBlob, param parameter, conn *DmConnection) (interface{}, error) { + var clobLen int64 + var err error + if clobLen, err = val.GetLength(); err != nil { + return nil, err + } + if G2DB.isOffRow(param.colType, clobLen) { + return newOffRowBlobBinder(val, conn.getServerEncoding()), nil + } else { + var length int64 + if length, err = val.GetLength(); err != nil { + return nil, err + } + return val.getBytes(1, int32(length)) + } +} + +func (G2DB g2db) changeOffRowData(paramDesc parameter, paramData []byte, encoding string) (interface{}, error) { + if G2DB.isOffRow(paramDesc.colType, int64(len(paramData))) { + return newOffRowBytesBinder(paramData, encoding), nil + } else { + return paramData, nil + } +} + +func (G2DB g2db) isOffRow(dtype int32, length int64) bool { + return (dtype == BLOB || dtype == CLOB) && length > Dm_build_124 +} + +func (G2DB g2db) fromObject(mem interface{}, param parameter, conn *DmConnection) ([]byte, error) { + switch v := mem.(type) { + case bool: + return G2DB.fromBool(v, param, conn) + case string: + val, err := G2DB.fromString(v, param, conn) + if err != nil { + return nil, err + } + return val.([]byte), err + case byte: + return G2DB.fromInt64(int64(v), param, conn) + case int: + return G2DB.fromInt64(int64(v), param, conn) + case int16: + return G2DB.fromInt64(int64(v), param, conn) + case int32: + return G2DB.fromInt64(int64(v), param, conn) + case int64: + return G2DB.fromInt64(v, param, conn) + case float32: + return G2DB.fromFloat64(float64(v), param, conn) + case float64: + return G2DB.fromFloat64(v, param, conn) + case time.Time: + return G2DB.fromTime(v, param, conn) + case DmDecimal: + return G2DB.fromDecimal(v, param, conn) + case DmIntervalDT: + return G2DB.fromDmIntervalDT(v, param, conn) + case DmIntervalYM: + return G2DB.fromDmdbIntervalYM(v, param, conn) + case DmBlob: + length, _ := v.GetLength() + return v.getBytes(1, int32(length)) + case DmClob: + length, _ := v.GetLength() + str, err := v.getSubString(1, int32(length)) + if err != nil { + return nil, err + } + return Dm_build_650.Dm_build_866(str, conn.getServerEncoding(), conn), nil + default: + return nil, ECGO_UNSUPPORTED_TYPE.throw() + } + +} + +func (G2DB g2db) toInt32(val int32) []byte { + bytes := make([]byte, 4) + Dm_build_650.Dm_build_666(bytes, 0, val) + return bytes +} + +func (G2DB g2db) toInt64(val int64) []byte { + bytes := make([]byte, 8) + Dm_build_650.Dm_build_671(bytes, 0, val) + return bytes +} + +func (G2DB g2db) toFloat32(val float32) []byte { + bytes := make([]byte, 4) + Dm_build_650.Dm_build_676(bytes, 0, val) + return bytes +} + +func (G2DB g2db) toFloat64(val float64) []byte { + bytes := make([]byte, 8) + Dm_build_650.Dm_build_681(bytes, 0, val) + return bytes +} + +func (G2DB g2db) toDecimal(val string, prec int, scale int) ([]byte, error) { + d, err := decodeDecimal([]byte(val), prec, scale) + if err != nil { + return nil, err + } + return d.encodeDecimal() +} + +func (G2DB g2db) fromArray(x *DmArray, param parameter, connection *DmConnection) (interface{}, error) { + var ret interface{} + var err error + switch param.colType { + case SARRAY: + ret, err = TypeDataSV.sarrayToBytes(x, param.typeDescriptor) + case CLASS, ARRAY: + ret, err = TypeDataSV.arrayToBytes(x, param.typeDescriptor) + case BLOB: + ret, err = TypeDataSV.toBytesFromDmArray(x, param.typeDescriptor) + if err == nil { + ret, err = G2DB.bytes2Blob(ret.([]byte), param, connection) + } + default: + err = ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, err +} + +func (G2DB g2db) fromStruct(x *DmStruct, param parameter, connection *DmConnection) (interface{}, error) { + var ret interface{} + var err error + switch param.colType { + case CLASS: + ret, err = TypeDataSV.structToBytes(x, param.typeDescriptor) + case PLTYPE_RECORD: + ret, err = TypeDataSV.recordToBytes(x, param.typeDescriptor) + case BLOB: + ret, err = TypeDataSV.toBytesFromDmStruct(x, param.typeDescriptor) + if err == nil { + ret, err = G2DB.bytes2Blob(ret.([]byte), param, connection) + } + + default: + err = ECGO_DATA_CONVERTION_ERROR.throw() + } + return ret, err +} + +func isValidBFileStr(s string) bool { + strs := strings.Split(strings.TrimSpace(s), ":") + if len(strs) != 2 { + return false + } + if len(strs[0]) > Dm_build_52 || len(strs[1]) > Dm_build_53 { + return false + } + return true +} diff --git a/vendor/gitee.com/chunanyong/dm/zn.go b/vendor/gitee.com/chunanyong/dm/zn.go new file mode 100644 index 000000000..8bd0f0c66 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zn.go @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +const ( + LOB_FLAG_BYTE = 0 + LOB_FLAG_CHAR = 1 + + LOB_IN_ROW = 0x1 + LOB_OFF_ROW = 0x2 + + NBLOB_HEAD_IN_ROW_FLAG = 0 + NBLOB_HEAD_BLOBID = NBLOB_HEAD_IN_ROW_FLAG + BYTE_SIZE + NBLOB_HEAD_BLOB_LEN = NBLOB_HEAD_BLOBID + DDWORD_SIZE + + NBLOB_HEAD_OUTROW_GROUPID = NBLOB_HEAD_BLOB_LEN + ULINT_SIZE + NBLOB_HEAD_OUTROW_FILEID = NBLOB_HEAD_OUTROW_GROUPID + USINT_SIZE + NBLOB_HEAD_OUTROW_PAGENO = NBLOB_HEAD_OUTROW_FILEID + USINT_SIZE + + NBLOB_EX_HEAD_TABLE_ID = NBLOB_HEAD_OUTROW_PAGENO + ULINT_SIZE + NBLOB_EX_HEAD_COL_ID = NBLOB_EX_HEAD_TABLE_ID + ULINT_SIZE + NBLOB_EX_HEAD_ROW_ID = NBLOB_EX_HEAD_COL_ID + USINT_SIZE + NBLOB_EX_HEAD_FPA_GRPID = NBLOB_EX_HEAD_ROW_ID + LINT64_SIZE + NBLOB_EX_HEAD_FPA_FILEID = NBLOB_EX_HEAD_FPA_GRPID + USINT_SIZE + NBLOB_EX_HEAD_FPA_PAGENO = NBLOB_EX_HEAD_FPA_FILEID + USINT_SIZE + NBLOB_EX_HEAD_SIZE = NBLOB_EX_HEAD_FPA_PAGENO + ULINT_SIZE + + NBLOB_OUTROW_HEAD_SIZE = NBLOB_HEAD_OUTROW_PAGENO + ULINT_SIZE + + NBLOB_INROW_HEAD_SIZE = NBLOB_HEAD_BLOB_LEN + ULINT_SIZE +) + +type lob struct { + blobId int64 + inRow bool + + groupId int16 + fileId int16 + pageNo int32 + tabId int32 + colId int16 + rowId int64 + exGroupId int16 + exFileId int16 + exPageNo int32 + + curFileId int16 + curPageNo int32 + curPageOffset int16 + totalOffset int32 + readOver bool + + connection *DmConnection + local bool + updateable bool + lobFlag int8 + length int64 + compatibleOracle bool + fetchAll bool + freed bool + modify bool + + Valid bool +} + +func (lob *lob) GetLength() (int64, error) { + var err error + if err = lob.checkValid(); err != nil { + return -1, err + } + if err = lob.checkFreed(); err != nil { + return -1, err + } + if lob.length == -1 { + + if lob.length, err = lob.connection.Access.dm_build_1508(lob); err != nil { + return -1, err + } + } + return lob.length, nil +} + +func (lob *lob) resetCurrentInfo() { + lob.curFileId = lob.fileId + lob.curPageNo = lob.pageNo + lob.totalOffset = 0 + lob.curPageOffset = 0 +} + +func (lob *lob) getLengthFromHead(head []byte) int64 { + return int64(Dm_build_650.Dm_build_752(head, NBLOB_HEAD_BLOB_LEN)) +} + +func (lob *lob) canOptimized(connection *DmConnection) bool { + return !(lob.inRow || lob.fetchAll || lob.local || connection != lob.connection) +} + +func (lob *lob) buildCtlData() (bytes []byte) { + if lob.connection.NewLobFlag { + bytes = make([]byte, NBLOB_EX_HEAD_SIZE, NBLOB_EX_HEAD_SIZE) + } else { + bytes = make([]byte, NBLOB_OUTROW_HEAD_SIZE, NBLOB_OUTROW_HEAD_SIZE) + } + Dm_build_650.Dm_build_651(bytes, NBLOB_HEAD_IN_ROW_FLAG, LOB_OFF_ROW) + Dm_build_650.Dm_build_671(bytes, NBLOB_HEAD_BLOBID, lob.blobId) + Dm_build_650.Dm_build_666(bytes, NBLOB_HEAD_BLOB_LEN, -1) + + Dm_build_650.Dm_build_661(bytes, NBLOB_HEAD_OUTROW_GROUPID, lob.groupId) + Dm_build_650.Dm_build_661(bytes, NBLOB_HEAD_OUTROW_FILEID, lob.fileId) + Dm_build_650.Dm_build_666(bytes, NBLOB_HEAD_OUTROW_PAGENO, lob.pageNo) + + if lob.connection.NewLobFlag { + Dm_build_650.Dm_build_666(bytes, NBLOB_EX_HEAD_TABLE_ID, lob.tabId) + Dm_build_650.Dm_build_661(bytes, NBLOB_EX_HEAD_COL_ID, lob.colId) + Dm_build_650.Dm_build_671(bytes, NBLOB_EX_HEAD_ROW_ID, lob.rowId) + Dm_build_650.Dm_build_661(bytes, NBLOB_EX_HEAD_FPA_GRPID, lob.exGroupId) + Dm_build_650.Dm_build_661(bytes, NBLOB_EX_HEAD_FPA_FILEID, lob.exFileId) + Dm_build_650.Dm_build_666(bytes, NBLOB_EX_HEAD_FPA_PAGENO, lob.exPageNo) + } + return +} + +func (lob *lob) checkFreed() (err error) { + if lob.freed { + err = ECGO_LOB_FREED.throw() + } + return +} + +func (lob *lob) checkValid() error { + if !lob.Valid { + return ECGO_IS_NULL.throw() + } + return nil +} diff --git a/vendor/gitee.com/chunanyong/dm/zo.go b/vendor/gitee.com/chunanyong/dm/zo.go new file mode 100644 index 000000000..14e6c07cc --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zo.go @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +const ( + ParamDataEnum_Null = 0 + /** + * 只有大字段才有行内数据、行外数据的概念 + */ + ParamDataEnum_OFF_ROW = 1 +) + +// JDBC中的Data +type lobCtl struct { + value []byte +} + +// lob数据返回信息,自bug610335后,服务器不光返回字节数组,还返回字符数 +type lobRetInfo struct { + charLen int64 // 字符长度 + data []byte //lob数据 +} diff --git a/vendor/gitee.com/chunanyong/dm/zp.go b/vendor/gitee.com/chunanyong/dm/zp.go new file mode 100644 index 000000000..840da3d48 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zp.go @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "fmt" + "os" + "strconv" + "strings" + "time" + + "gitee.com/chunanyong/dm/util" +) + +const ( + MAX_FILE_SIZE = 100 * 1024 * 1024 + FLUSH_SIZE = 32 * 1024 +) + +type goRun interface { + doRun() +} + +type logWriter struct { + flushQueue chan []byte + date string + logFile *os.File + flushFreq int + filePath string + filePrefix string + buffer *Dm_build_931 +} + +func (lw *logWriter) doRun() { + defer func() { + lw.beforeExit() + lw.closeCurrentFile() + }() + + i := 0 + for { + var ibytes []byte + + select { + case ibytes = <-lw.flushQueue: + if LogLevel != LOG_OFF { + if i == LogFlushQueueSize { + lw.doFlush(lw.buffer) + i = 0 + } else { + lw.buffer.Dm_build_957(ibytes, 0, len(ibytes)) + i++ + } + } + case <-time.After(time.Duration(LogFlushFreq) * time.Millisecond): + if LogLevel != LOG_OFF && lw.buffer.Dm_build_936() > 0 { + lw.doFlush(lw.buffer) + i = 0 + } + + } + + } +} + +func (lw *logWriter) doFlush(buffer *Dm_build_931) { + if lw.needCreateNewFile() { + lw.closeCurrentFile() + lw.logFile = lw.createNewFile() + } + if lw.logFile != nil { + buffer.Dm_build_951(lw.logFile, buffer.Dm_build_936()) + } +} +func (lw *logWriter) closeCurrentFile() { + if lw.logFile != nil { + lw.logFile.Close() + lw.logFile = nil + } +} +func (lw *logWriter) createNewFile() *os.File { + lw.date = time.Now().Format("2006-01-02") + fileName := lw.filePrefix + "_" + lw.date + "_" + strconv.Itoa(time.Now().Nanosecond()) + ".log" + lw.filePath = LogDir + if len(lw.filePath) > 0 { + if _, err := os.Stat(lw.filePath); err != nil { + os.MkdirAll(lw.filePath, 0755) + } + if _, err := os.Stat(lw.filePath + fileName); err != nil { + logFile, err := os.Create(lw.filePath + fileName) + if err != nil { + fmt.Println(err) + return nil + } + return logFile + } + } + return nil +} +func (lw *logWriter) needCreateNewFile() bool { + now := time.Now().Format("2006-01-02") + fileInfo, err := lw.logFile.Stat() + return now != lw.date || err != nil || lw.logFile == nil || fileInfo.Size() > int64(MAX_FILE_SIZE) +} +func (lw *logWriter) beforeExit() { + close(lw.flushQueue) + var ibytes []byte + for ibytes = <-lw.flushQueue; ibytes != nil; ibytes = <-lw.flushQueue { + lw.buffer.Dm_build_957(ibytes, 0, len(ibytes)) + if lw.buffer.Dm_build_936() >= LogBufferSize { + lw.doFlush(lw.buffer) + } + } + if lw.buffer.Dm_build_936() > 0 { + lw.doFlush(lw.buffer) + } +} + +func (lw *logWriter) WriteLine(msg string) { + var b = []byte(strings.TrimSpace(msg) + util.LINE_SEPARATOR) + lw.flushQueue <- b +} diff --git a/vendor/gitee.com/chunanyong/dm/zq.go b/vendor/gitee.com/chunanyong/dm/zq.go new file mode 100644 index 000000000..05832cca3 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zq.go @@ -0,0 +1,2949 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "fmt" + "math" + "os" + "strconv" + "strings" + + "gitee.com/chunanyong/dm/util" +) + +const ( + Dm_build_0 = "7.6.0.0" + + Dm_build_1 = "7.0.0.9" + + Dm_build_2 = "8.0.0.73" + + Dm_build_3 = "7.1.2.128" + + Dm_build_4 = "7.1.5.144" + + Dm_build_5 = "7.1.6.123" + + Dm_build_6 = 1 + + Dm_build_7 = 2 + + Dm_build_8 = 3 + + Dm_build_9 = 4 + + Dm_build_10 = 5 + + Dm_build_11 = 6 + + Dm_build_12 = 8 + + Dm_build_13 = Dm_build_12 + + Dm_build_14 = 32768 - 128 + + Dm_build_15 = 0x20000000 + + Dm_build_16 int16 = 1 + + Dm_build_17 int16 = 2 + + Dm_build_18 int16 = 3 + + Dm_build_19 int16 = 4 + + Dm_build_20 int16 = 5 + + Dm_build_21 int16 = 6 + + Dm_build_22 int16 = 7 + + Dm_build_23 int16 = 8 + + Dm_build_24 int16 = 9 + + Dm_build_25 int16 = 13 + + Dm_build_26 int16 = 14 + + Dm_build_27 int16 = 15 + + Dm_build_28 int16 = 17 + + Dm_build_29 int16 = 21 + + Dm_build_30 int16 = 24 + + Dm_build_31 int16 = 27 + + Dm_build_32 int16 = 29 + + Dm_build_33 int16 = 30 + + Dm_build_34 int16 = 31 + + Dm_build_35 int16 = 32 + + Dm_build_36 int16 = 44 + + Dm_build_37 int16 = 52 + + Dm_build_38 int16 = 60 + + Dm_build_39 int16 = 71 + + Dm_build_40 int16 = 90 + + Dm_build_41 int16 = 91 + + Dm_build_42 int16 = 200 + + Dm_build_43 = 64 + + Dm_build_44 = 20 + + Dm_build_45 = 0 + + Dm_build_46 = 4 + + Dm_build_47 = 6 + + Dm_build_48 = 10 + + Dm_build_49 = 14 + + Dm_build_50 = 18 + + Dm_build_51 = 19 + + Dm_build_52 = 128 + + Dm_build_53 = 256 + + Dm_build_54 int32 = 2 + + Dm_build_55 int32 = 5 + + Dm_build_56 = -1 + + Dm_build_57 int32 = 0xFF00 + + Dm_build_58 int32 = 0xFFFE - 3 + + Dm_build_59 int32 = 0xFFFE - 4 + + Dm_build_60 int32 = 0xFFFE + + Dm_build_61 int32 = 0xFFFF + + Dm_build_62 int32 = 0x80 + + Dm_build_63 byte = 0x60 + + Dm_build_64 uint16 = uint16(Dm_build_60) + + Dm_build_65 uint16 = uint16(Dm_build_61) + + Dm_build_66 int16 = 0x00 + + Dm_build_67 int16 = 0x03 + + Dm_build_68 int32 = 0x80 + + Dm_build_69 byte = 0 + + Dm_build_70 byte = 1 + + Dm_build_71 byte = 2 + + Dm_build_72 byte = 3 + + Dm_build_73 byte = 4 + + Dm_build_74 byte = Dm_build_69 + + Dm_build_75 int = 10 + + Dm_build_76 int32 = 32 + + Dm_build_77 int32 = 65536 + + Dm_build_78 byte = 0 + + Dm_build_79 byte = 1 + + Dm_build_80 int32 = 0x00000000 + + Dm_build_81 int32 = 0x00000020 + + Dm_build_82 int32 = 0x00000040 + + Dm_build_83 int32 = 0x00000FFF + + Dm_build_84 int32 = 0 + + Dm_build_85 int32 = 1 + + Dm_build_86 int32 = 2 + + Dm_build_87 int32 = 3 + + Dm_build_88 = 8192 + + Dm_build_89 = 1 + + Dm_build_90 = 2 + + Dm_build_91 = 0 + + Dm_build_92 = 0 + + Dm_build_93 = 1 + + Dm_build_94 = -1 + + Dm_build_95 int16 = 0 + + Dm_build_96 int16 = 1 + + Dm_build_97 int16 = 2 + + Dm_build_98 int16 = 3 + + Dm_build_99 int16 = 4 + + Dm_build_100 int16 = 127 + + Dm_build_101 int16 = Dm_build_100 + 20 + + Dm_build_102 int16 = Dm_build_100 + 21 + + Dm_build_103 int16 = Dm_build_100 + 22 + + Dm_build_104 int16 = Dm_build_100 + 24 + + Dm_build_105 int16 = Dm_build_100 + 25 + + Dm_build_106 int16 = Dm_build_100 + 26 + + Dm_build_107 int16 = Dm_build_100 + 30 + + Dm_build_108 int16 = Dm_build_100 + 31 + + Dm_build_109 int16 = Dm_build_100 + 32 + + Dm_build_110 int16 = Dm_build_100 + 33 + + Dm_build_111 int16 = Dm_build_100 + 35 + + Dm_build_112 int16 = Dm_build_100 + 38 + + Dm_build_113 int16 = Dm_build_100 + 39 + + Dm_build_114 int16 = Dm_build_100 + 51 + + Dm_build_115 int16 = Dm_build_100 + 71 + + Dm_build_116 int16 = Dm_build_100 + 124 + + Dm_build_117 int16 = Dm_build_100 + 125 + + Dm_build_118 int16 = Dm_build_100 + 126 + + Dm_build_119 int16 = Dm_build_100 + 127 + + Dm_build_120 int16 = Dm_build_100 + 128 + + Dm_build_121 int16 = Dm_build_100 + 129 + + Dm_build_122 byte = 0 + + Dm_build_123 byte = 2 + + Dm_build_124 = 2048 + + Dm_build_125 = -1 + + Dm_build_126 = 0 + + Dm_build_127 = 16000 + + Dm_build_128 = 32000 + + Dm_build_129 = 0x00000000 + + Dm_build_130 = 0x00000020 + + Dm_build_131 = 0x00000040 + + Dm_build_132 = 0x00000FFF + + Dm_build_133 = 4 +) + +var Dm_build_134 = [8][256]uint32{ + + {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, + 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, + 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, + 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, + 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, + 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, + 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, + 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, + 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, + 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, + 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, + 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, + 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, + 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, + 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, + 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, + 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, + 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, + 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, + 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, + 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, + 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, + 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, + 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, + 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, + 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, + 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, + 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, + 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, + 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, + 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, + 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, + 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, + 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, + 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d}, + + {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504, 0x7d77f445, 0x565aa786, + 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49, 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, + 0xb5ae7e4d, 0x9e832d8e, 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, + 0x61ef4192, 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859, + 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c, 0xd4413fdf, + 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620, 0xbea97761, 0xf1e8e1a6, + 0xe8f3d0e7, 0xc3de8324, 0xdac5b265, 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, + 0x7670fd69, 0x39316bae, 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, + 0xc65d07b2, 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175, + 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38, 0x73f379ff, + 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05, 0xe9627e44, 0xc24f2d87, + 0xdb541cc6, 0x94158a01, 0x8d0ebb40, 0xa623e883, 0xbf38d9c2, 0x38a0c50d, + 0x21bbf44c, 0x0a96a78f, 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, + 0x77e153ca, 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850, + 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d, 0x4054b5de, + 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da, 0x3d23419b, 0x65fd6ba7, + 0x7ce65ae6, 0x57cb0925, 0x4ed03864, 0x0191aea3, 0x188a9fe2, 0x33a7cc21, + 0x2abcfd60, 0xad24e1af, 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, + 0xd05315ea, 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74, + 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31, 0xe7e6f3fe, + 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa, 0x9a9107bb, 0xb1bc5478, + 0xa8a76539, 0x3b83984b, 0x2298a90a, 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, + 0x46f46c0e, 0x6dd93fcd, 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, + 0xd8774180, 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a, + 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f, 0x271b2d9c, + 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290, 0x92b553d1, 0xddf4c516, + 0xc4eff457, 0xefc2a794, 0xf6d996d5, 0xae07bce9, 0xb71c8da8, 0x9c31de6b, + 0x852aef2a, 0xca6b79ed, 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, + 0x7fc507a0, 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167, + 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b, 0x80a96bbc, + 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0, 0x350715f1, 0x1e2a4632, + 0x07317773, 0x4870e1b4, 0x516bd0f5, 0x7a468336, 0x635db277, 0xcbfad74e, + 0xd2e1e60f, 0xf9ccb5cc, 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, + 0x84bb4189, 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842, + 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e, 0xb30ea79d, + 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299, 0xce7953d8, 0x49e14f17, + 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4, 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, + 0x06a0d9d0, 0x5e7ef3ec, 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, + 0x230907a9, 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66, + 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23, 0x14bce1bd, + 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9, 0x69cb15f8, 0x42e6463b, + 0x5bfd777a, 0xdc656bb5, 0xc57e5af4, 0xee530937, 0xf7483876, 0xb809aeb1, + 0xa1129ff0, 0x8a3fcc33, 0x9324fd72}, + + {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc, 0x06cbc2eb, 0x048d7cb2, + 0x054f1685, 0x0e1351b8, 0x0fd13b8f, 0x0d9785d6, 0x0c55efe1, 0x091af964, + 0x08d89353, 0x0a9e2d0a, 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, + 0x1e601d29, 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8, + 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023, 0x16b88e7a, + 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e, 0x3a0bf8b9, 0x3f44ee3c, + 0x3e86840b, 0x3cc03a52, 0x3d025065, 0x365e1758, 0x379c7d6f, 0x35dac336, + 0x3418a901, 0x3157bf84, 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, + 0x25a98fa7, 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922, + 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71, 0x2d711cf4, + 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0, 0x7158e7f7, 0x731e59ae, + 0x72dc3399, 0x7793251c, 0x76514f2b, 0x7417f172, 0x75d59b45, 0x7e89dc78, + 0x7f4bb64f, 0x7d0d0816, 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, + 0x7bc6cafd, 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c, + 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f, 0x612bab66, + 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba, 0x67e0698d, 0x48d7cb20, + 0x4915a117, 0x4b531f4e, 0x4a917579, 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, + 0x4d98dda5, 0x46c49a98, 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, + 0x400f5873, 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e, + 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5, 0x5ae239e8, + 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134, 0x5c29fb03, 0x5e6f455a, + 0x5fad2f6d, 0xe1351b80, 0xe0f771b7, 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, + 0xe7fed96b, 0xe5b86732, 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, + 0xed60f461, 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0, + 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b, 0xf99ec442, + 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26, 0xf1465711, 0xf4094194, + 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd, 0xd9785d60, 0xd8ba3757, 0xdafc890e, + 0xdb3ee339, 0xde71f5bc, 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, + 0xd6a966ef, 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a, + 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049, 0xc25756cc, + 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8, 0xca8fc59f, 0xc8c97bc6, + 0xc90b11f1, 0xcc440774, 0xcd866d43, 0xcfc0d31a, 0xce02b92d, 0x91af9640, + 0x906dfc77, 0x922b422e, 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, + 0x94e080c5, 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24, + 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07, 0x8e0de15e, + 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982, 0x88c623b5, 0x839a6488, + 0x82580ebf, 0x801eb0e6, 0x81dcdad1, 0x8493cc54, 0x8551a663, 0x8717183a, + 0x86d5720d, 0xa9e2d0a0, 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, + 0xaf29124b, 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576, + 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d, 0xb5c473d0, + 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c, 0xb30fb13b, 0xb1490f62, + 0xb08b6555, 0xbbd72268, 0xba15485f, 0xb853f606, 0xb9919c31, 0xbcde8ab4, + 0xbd1ce083, 0xbf5a5eda, 0xbe9834ed}, + + {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757, 0x37def032, 0x256b5fdc, + 0x9dd738b9, 0xc5b428ef, 0x7d084f8a, 0x6fbde064, 0xd7018701, 0x4ad6bfb8, + 0xf26ad8dd, 0xe0df7733, 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, + 0x42acf871, 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70, + 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42, 0xb0c620ac, + 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5, 0xb28700d0, 0x2f503869, + 0x97ec5f0c, 0x8559f0e2, 0x3de59787, 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, + 0x7733283f, 0xeae41086, 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, + 0x48979fc4, 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d, + 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0, 0xbafd4719, + 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d, 0x23a83f58, 0x311d90b6, + 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f, 0xbe7f07e1, 0x06c36084, 0x5ea070d2, + 0xe61c17b7, 0xf4a9b859, 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, + 0xc377486b, 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5, + 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028, 0xa4b0efc6, + 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891, 0x936e1ff4, 0x3b26f703, + 0x839a9066, 0x912f3f88, 0x299358ed, 0xb4446054, 0x0cf80731, 0x1e4da8df, + 0xa6f1cfba, 0xfe92dfec, 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, + 0xc94c2fde, 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817, + 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825, 0xae8b8873, + 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24, 0x99557841, 0x8be0d7af, + 0x335cb0ca, 0xed59b63b, 0x55e5d15e, 0x47507eb0, 0xffec19d5, 0x623b216c, + 0xda874609, 0xc832e9e7, 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, + 0x3a58313a, 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4, + 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196, 0x982bbe78, + 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0, 0x6a4166a5, 0xf7965e1c, + 0x4f2a3979, 0x5d9f9697, 0xe523f1f2, 0x4d6b1905, 0xf5d77e60, 0xe762d18e, + 0x5fdeb6eb, 0xc2098e52, 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, + 0x3063568f, 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36, + 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174, 0x9210d9cd, + 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675, 0x607a0110, 0x72cfaefe, + 0xca73c99b, 0x57a4f122, 0xef189647, 0xfdad39a9, 0x45115ecc, 0x764dee06, + 0xcef18963, 0xdc44268d, 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, + 0xeb9ad6bf, 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be, + 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc, 0x8c5d7112, + 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645, 0xbb838120, 0xe3e09176, + 0x5b5cf613, 0x49e959fd, 0xf1553e98, 0x6c820621, 0xd43e6144, 0xc68bceaa, + 0x7e37a9cf, 0xd67f4138, 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, + 0xe1a1b10a, 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c, + 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e, 0x866616a7, + 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0, 0xb1b8e695, 0xa30d497b, + 0x1bb12e1e, 0x43d23e48, 0xfb6e592d, 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, + 0x740cce7a, 0x66b96194, 0xde0506f1}, + + {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0, 0xc8e08f70, 0x8f40f5a0, + 0xb220dc10, 0x30704bc1, 0x0d106271, 0x4ab018a1, 0x77d03111, 0xc5f0ed01, + 0xf890c4b1, 0xbf30be61, 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, + 0x2740ed52, 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43, + 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333, 0xdfd029e3, + 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64, 0x866155d4, 0x344189c4, + 0x0921a074, 0x4e81daa4, 0x73e1f314, 0xf1b164c5, 0xccd14d75, 0x8b7137a5, + 0xb6111e15, 0x0431c205, 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, + 0x9c419136, 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26, + 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997, 0x64d15587, + 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849, 0x659371f9, 0x22330b29, + 0x1f532299, 0xad73fe89, 0x9013d739, 0xd7b3ade9, 0xead38459, 0x68831388, + 0x55e33a38, 0x124340e8, 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, + 0xdaa3cf98, 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b, + 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba, 0x72a3d76a, + 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa, 0xba43581a, 0x9932774d, + 0xa4525efd, 0xe3f2242d, 0xde920d9d, 0x6cb2d18d, 0x51d2f83d, 0x167282ed, + 0x2b12ab5d, 0xa9423c8c, 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, + 0x61a2b3fc, 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af, + 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf, 0xc9a2ab0e, + 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce, 0x0142247e, 0x46e25eae, + 0x7b82771e, 0xb1e6b092, 0x8c869922, 0xcb26e3f2, 0xf646ca42, 0x44661652, + 0x79063fe2, 0x3ea64532, 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, + 0xc6368183, 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710, + 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860, 0x5e46d2b0, + 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1, 0xa6d61601, 0x14f6ca11, + 0x2996e3a1, 0x6e369971, 0x5356b0c1, 0x70279f96, 0x4d47b626, 0x0ae7ccf6, + 0x3787e546, 0x85a73956, 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, + 0x7d37fde7, 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7, + 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4, 0xe547aed4, + 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5, 0x1dd76a65, 0x5a7710b5, + 0x67173905, 0xd537e515, 0xe857cca5, 0xaff7b675, 0x92979fc5, 0xe915e8db, + 0xd475c16b, 0x93d5bbbb, 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, + 0x5b3534cb, 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da, + 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9, 0xf3352c39, + 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9, 0x3bd5a349, 0xb9853498, + 0x84e51d28, 0xc34567f8, 0xfe254e48, 0x4c059258, 0x7165bbe8, 0x36c5c138, + 0x0ba5e888, 0x28d4c7df, 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, + 0xe03448af, 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e, + 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e, 0x4834505d, + 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d, 0x80d4df2d, 0xc774a5fd, + 0xfa148c4d, 0x78441b9c, 0x4524322c, 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, + 0xb0a494ec, 0xf704ee3c, 0xca64c78c}, + + {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216, 0x50cd91b3, 0xd659e31d, + 0x1d0530b8, 0xec53826d, 0x270f51c8, 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, + 0xbc9e13de, 0x3a0a6170, 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, + 0x85427035, 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6, + 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145, 0x39dc63eb, + 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d, 0x81387798, 0x9c3d4720, + 0x57619485, 0xd1f5e62b, 0x1aa9358e, 0xebff875b, 0x20a354fe, 0xa6372650, + 0x6d6bf5f5, 0x706ec54d, 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, + 0xcf26d408, 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0, + 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e, 0x73b8c7d6, + 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c, 0xc404d9c9, 0x4290ab67, + 0x89cc78c2, 0x94c9487a, 0x5f959bdf, 0xd901e971, 0x125d3ad4, 0xe30b8801, + 0x28575ba4, 0xaec3290a, 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, + 0xfe0eb8b9, 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1, + 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f, 0xad152b91, + 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987, 0xfdd8ba22, 0x08f40f5a, + 0xc3a8dcff, 0x453cae51, 0x8e607df4, 0x93654d4c, 0x58399ee9, 0xdeadec47, + 0x15f13fe2, 0xe4a78d37, 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, + 0xb46a1c84, 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca, + 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79, 0xe7718fac, + 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba, 0xb7bc1e1f, 0x31286cb1, + 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d, 0x5378b5d3, 0x98246676, 0x852156ce, + 0x4e7d856b, 0xc8e9f7c5, 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, + 0x7477e41b, 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643, + 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0, 0xcb3ff55e, + 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525, 0x77a1e680, 0x6aa4d638, + 0xa1f8059d, 0x276c7733, 0xec30a496, 0x191c11ee, 0xd240c24b, 0x54d4b0e5, + 0x9f886340, 0x828d53f8, 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, + 0x3e134026, 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e, + 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db, 0x815b5163, + 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118, 0x3dc542bd, 0xbb513013, + 0x700de3b6, 0x6d08d30e, 0xa65400ab, 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, + 0xdab4cd11, 0x5c20bfbf, 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, + 0x0ced2e0c, 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf, + 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a, 0x5ff6bd24, + 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32, 0x0f3b2c97, 0xfe6d9e42, + 0x35314de7, 0xb3a53f49, 0x78f9ecec, 0x65fcdc54, 0xaea00ff1, 0x28347d5f, + 0xe368aefa, 0x16441b82, 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, + 0x46898a31, 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4, + 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957, 0x15921919, + 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f, 0x455f88aa, 0xc3cbfa04, + 0x089729a1, 0xf9c19b74, 0x329d48d1, 0xb4093a7f, 0x7f55e9da, 0x6250d962, + 0xa90c0ac7, 0x2f987869, 0xe4c4abcc}, + + {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413, 0x52382fa7, 0x63d0353a, + 0xc5a73e8e, 0x33ef4e67, 0x959845d3, 0xa4705f4e, 0x020754fa, 0xc7a06a74, + 0x61d761c0, 0x503f7b5d, 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, + 0x56368653, 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9, + 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e, 0x37e1e793, + 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5, 0xfe552301, 0x3bf21d8f, + 0x9d85163b, 0xac6d0ca6, 0x0a1a0712, 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, + 0xcdba6d66, 0x081d53e8, 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, + 0x0e14aee6, 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068, + 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8, 0x6fc3cf26, + 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579, 0xe27c7ecd, 0xd3946450, + 0x75e36fe4, 0xb044516a, 0x16335ade, 0x27db4043, 0x81ac4bf7, 0x77e43b1e, + 0xd19330aa, 0xe07b2a37, 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, + 0xb2430590, 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4, + 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64, 0x87a5b6f9, + 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea, 0xd59d995e, 0x8bb64ce5, + 0x2dc14751, 0x1c295dcc, 0xba5e5678, 0x7ff968f6, 0xd98e6342, 0xe86679df, + 0x4e11726b, 0xb8590282, 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, + 0xea612d25, 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102, + 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5, 0xdf879e4c, + 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f, 0x8dbfb1eb, 0xbc57ab76, + 0x1a20a0c2, 0x8816eaf2, 0x2e61e146, 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, + 0xda2ec555, 0xebc6dfc8, 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, + 0x8a11be08, 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c, + 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b, 0x8c184306, + 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972, 0xedcf22c6, 0x28681c48, + 0x8e1f17fc, 0xbff70d61, 0x198006d5, 0x47abd36e, 0xe1dcd8da, 0xd034c247, + 0x7643c9f3, 0xb3e4f77d, 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, + 0xd23396bd, 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833, + 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d, 0xd43a6bb3, + 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7, 0xb5ed0a73, 0x840510ee, + 0x22721b5a, 0xe7d525d4, 0x41a22e60, 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, + 0x6a6a943f, 0x5b828ea2, 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, + 0x09baa105, 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff, + 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1, 0x3c5c126c, + 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f, 0x6e643dcb, 0x982c4d22, + 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf, 0x6c636931, 0xca146285, 0xfbfc7818, + 0x5d8b73ac, 0x03a0a617, 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, + 0x519889b0, 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959, + 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe, 0x647e3ad9, + 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca, 0x3646157e, 0x07ae0fe3, + 0xa1d90457, 0x579174be, 0xf1e67f0a, 0xc00e6597, 0x66796e23, 0xa3de50ad, + 0x05a95b19, 0x34414184, 0x92364a30}, + + {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa, 0x48e00e64, 0xc66f0987, + 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b, 0x91c01cc8, 0x5d6a1c56, 0x57af154f, + 0x9b0515d1, 0x158a1232, 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, + 0xf23436c8, 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e, + 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa, 0x69312319, + 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b, 0x77f965b5, 0x7d3c6cac, + 0xb1966c32, 0x3f196bd1, 0xf3b36b4f, 0x2a9379e3, 0xe639797d, 0x68b67e9e, + 0xa41c7e00, 0xaed97719, 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, + 0x496753e3, 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa, + 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b, 0xd2624632, + 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed, 0xe537c273, 0x6bb8c590, + 0xa712c50e, 0xadd7cc17, 0x617dcc89, 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, + 0x36d2d9c6, 0xb85dde25, 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, + 0xf0bdd041, 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c, + 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed, 0xc4e6ef0e, + 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4, 0x8c06e16a, 0xd0eba0bb, + 0x1c41a025, 0x92cea7c6, 0x5e64a758, 0x54a1ae41, 0x980baedf, 0x1684a93c, + 0xda2ea9a2, 0x030ebb0e, 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, + 0x4beeb56a, 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed, + 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889, 0x7fb58a25, + 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df, 0x37558441, 0xb9da83a2, + 0x7570833c, 0x533b85da, 0x9f918544, 0x111e82a7, 0xddb48239, 0xd7718b20, + 0x1bdb8bbe, 0x95548c5d, 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, + 0x0e51998c, 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1, + 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95, 0xe9efbd76, + 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839, 0x72eaa8a7, 0x782fa1be, + 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d, 0xaa4de78c, 0x66e7e712, 0xe868e0f1, + 0x24c2e06f, 0x2e07e976, 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, + 0xb502fca7, 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be, + 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144, 0x52bcd85d, + 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12, 0xc9b9cd8c, 0x4736ca6f, + 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376, 0xc37cc495, 0x0fd6c40b, 0x7aa64737, + 0xb60c47a9, 0x3883404a, 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, + 0x70634e2e, 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278, + 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682, 0x44387161, + 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b, 0x0cd87f05, 0xd5f86da9, + 0x19526d37, 0x97dd6ad4, 0x5b776a4a, 0x51b26353, 0x9d1863cd, 0x1397642e, + 0xdf3d64b0, 0x83d02561, 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, + 0xcb302b05, 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9, + 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd, 0xff6b144a, + 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0, 0xb78b1a2e, 0x39041dcd, + 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61, 0x6eab0882, 0xa201081c, 0xa8c40105, + 0x646e019b, 0xeae10678, 0x264b06e6}} + +type dm_build_135 interface { + dm_build_136() + dm_build_137() error + dm_build_138() + dm_build_139(imsg dm_build_135) error + dm_build_140() error + dm_build_141() (interface{}, error) + dm_build_142() + dm_build_143(imsg dm_build_135) (interface{}, error) + dm_build_144() + dm_build_145() error + dm_build_146() byte + dm_build_147(buffer *Dm_build_1009, startOff int32, endOff int32) uint32 + dm_build_148() int32 + dm_build_149(length int32) + dm_build_150() int16 +} + +type dm_build_151 struct { + dm_build_152 *dm_build_1345 + + dm_build_153 int16 + + dm_build_154 int32 + + dm_build_155 *DmStatement +} + +func (dm_build_157 *dm_build_151) dm_build_156(dm_build_158 *dm_build_1345, dm_build_159 int16) *dm_build_151 { + dm_build_157.dm_build_152 = dm_build_158 + dm_build_157.dm_build_153 = dm_build_159 + return dm_build_157 +} + +func (dm_build_161 *dm_build_151) dm_build_160(dm_build_162 *dm_build_1345, dm_build_163 int16, dm_build_164 *DmStatement) *dm_build_151 { + dm_build_161.dm_build_156(dm_build_162, dm_build_163).dm_build_155 = dm_build_164 + return dm_build_161 +} + +func dm_build_165(dm_build_166 *dm_build_1345, dm_build_167 int16) *dm_build_151 { + return new(dm_build_151).dm_build_156(dm_build_166, dm_build_167) +} + +func dm_build_168(dm_build_169 *dm_build_1345, dm_build_170 int16, dm_build_171 *DmStatement) *dm_build_151 { + return new(dm_build_151).dm_build_160(dm_build_169, dm_build_170, dm_build_171) +} + +func (dm_build_173 *dm_build_151) dm_build_136() { + dm_build_173.dm_build_152.dm_build_1348.Dm_build_1023(0) + dm_build_173.dm_build_152.dm_build_1348.Dm_build_1034(Dm_build_43, true, true) +} + +func (dm_build_175 *dm_build_151) dm_build_137() error { + return nil +} + +func (dm_build_177 *dm_build_151) dm_build_138() { + if dm_build_177.dm_build_155 == nil { + dm_build_177.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_45, 0) + } else { + dm_build_177.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_45, dm_build_177.dm_build_155.id) + } + + dm_build_177.dm_build_152.dm_build_1348.Dm_build_1200(Dm_build_46, dm_build_177.dm_build_153) + dm_build_177.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_47, int32(dm_build_177.dm_build_152.dm_build_1348.Dm_build_1021()-Dm_build_43)) +} + +func (dm_build_179 *dm_build_151) dm_build_140() error { + dm_build_179.dm_build_152.dm_build_1348.Dm_build_1026(0) + dm_build_179.dm_build_152.dm_build_1348.Dm_build_1034(Dm_build_43, false, true) + return dm_build_179.dm_build_184() +} + +func (dm_build_181 *dm_build_151) dm_build_141() (interface{}, error) { + return nil, nil +} + +func (dm_build_183 *dm_build_151) dm_build_142() { +} + +func (dm_build_185 *dm_build_151) dm_build_184() error { + dm_build_185.dm_build_154 = dm_build_185.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_48) + if dm_build_185.dm_build_154 < 0 && dm_build_185.dm_build_154 != EC_RN_EXCEED_ROWSET_SIZE.ErrCode { + return (&DmError{dm_build_185.dm_build_154, dm_build_185.dm_build_186(), nil, ""}).throw() + } else if dm_build_185.dm_build_154 > 0 { + + } else if dm_build_185.dm_build_153 == Dm_build_42 || dm_build_185.dm_build_153 == Dm_build_16 { + dm_build_185.dm_build_186() + } + + return nil +} + +func (dm_build_187 *dm_build_151) dm_build_186() string { + + dm_build_188 := dm_build_187.dm_build_152.dm_build_1349.getServerEncoding() + + if Locale != LANGUAGE_EN && dm_build_188 == ENCODING_EUCKR { + dm_build_188 = ENCODING_GB18030 + } + + if Locale == LANGUAGE_CNT_HK && dm_build_188 != ENCODING_UTF8 { + dm_build_188 = ENCODING_BIG5 + } + + dm_build_187.dm_build_152.dm_build_1348.Dm_build_1034(int(dm_build_187.dm_build_152.dm_build_1348.Dm_build_1138()), false, true) + + dm_build_187.dm_build_152.dm_build_1348.Dm_build_1034(int(dm_build_187.dm_build_152.dm_build_1348.Dm_build_1138()), false, true) + + dm_build_187.dm_build_152.dm_build_1348.Dm_build_1034(int(dm_build_187.dm_build_152.dm_build_1348.Dm_build_1138()), false, true) + + return dm_build_187.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_188, dm_build_187.dm_build_152.dm_build_1349) +} + +func (dm_build_190 *dm_build_151) dm_build_139(dm_build_191 dm_build_135) (dm_build_192 error) { + dm_build_191.dm_build_136() + if dm_build_192 = dm_build_191.dm_build_137(); dm_build_192 != nil { + return dm_build_192 + } + dm_build_191.dm_build_138() + return nil +} + +func (dm_build_194 *dm_build_151) dm_build_143(dm_build_195 dm_build_135) (dm_build_196 interface{}, dm_build_197 error) { + dm_build_197 = dm_build_195.dm_build_140() + if dm_build_197 != nil { + return nil, dm_build_197 + } + dm_build_196, dm_build_197 = dm_build_195.dm_build_141() + if dm_build_197 != nil { + return nil, dm_build_197 + } + dm_build_195.dm_build_142() + return dm_build_196, nil +} + +func (dm_build_199 *dm_build_151) dm_build_144() { + if dm_build_199.dm_build_152.dm_build_1354 { + + var orgLen = dm_build_199.dm_build_148() + + dm_build_199.dm_build_149(orgLen + Dm_build_133) + var crc = dm_build_199.dm_build_147(dm_build_199.dm_build_152.dm_build_1348, 0, Dm_build_43+orgLen) + dm_build_199.dm_build_152.dm_build_1348.Dm_build_1076(crc) + } else { + dm_build_199.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_51, dm_build_199.dm_build_146()) + } +} + +func (dm_build_201 *dm_build_151) dm_build_145() error { + if dm_build_201.dm_build_152.dm_build_1354 { + + var bodyLen = dm_build_201.dm_build_148() - Dm_build_133 + var msgLen = Dm_build_43 + bodyLen + var recv = dm_build_201.dm_build_152.dm_build_1348.Dm_build_1300(int(msgLen)) + var calc = dm_build_201.dm_build_147(dm_build_201.dm_build_152.dm_build_1348, 0, msgLen) + if recv != calc { + return ECGO_MSG_CHECK_ERROR.throw() + } + + dm_build_201.dm_build_149(bodyLen) + dm_build_201.dm_build_152.dm_build_1348.Dm_build_1023(int(msgLen)) + return nil + } else { + var recv = dm_build_201.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_51) + var calc = dm_build_201.dm_build_146() + if recv != calc { + return ECGO_MSG_CHECK_ERROR.throw() + } + return nil + } +} + +func (dm_build_203 *dm_build_151) dm_build_146() byte { + dm_build_204 := dm_build_203.dm_build_152.dm_build_1348.Dm_build_1276(0) + + for i := 1; i < Dm_build_51; i++ { + dm_build_204 ^= dm_build_203.dm_build_152.dm_build_1348.Dm_build_1276(i) + } + + return dm_build_204 +} + +func (dm_build_206 *dm_build_151) dm_build_147(dm_build_207 *Dm_build_1009, dm_build_208 int32, dm_build_209 int32) uint32 { + + var dm_build_210 uint32 = 0xFFFFFFFF + var dm_build_211 = dm_build_208 + var dm_build_212 = dm_build_209 - dm_build_208 + var dm_build_213, dm_build_214 uint32 + + for dm_build_212 >= 8 { + dm_build_213 = dm_build_207.Dm_build_1300(int(dm_build_211)) ^ dm_build_210 + dm_build_211 += ULINT_SIZE + + dm_build_214 = dm_build_207.Dm_build_1300(int(dm_build_211)) + dm_build_211 += ULINT_SIZE + + dm_build_210 = Dm_build_134[7][dm_build_213&0xFF] ^ Dm_build_134[6][(dm_build_213>>8)&0xFF] ^ + Dm_build_134[5][(dm_build_213>>16)&0xFF] ^ Dm_build_134[4][(dm_build_213>>24)&0xFF] ^ + Dm_build_134[3][dm_build_214&0xFF] ^ Dm_build_134[2][(dm_build_214>>8)&0xFF] ^ + Dm_build_134[1][(dm_build_214>>16)&0xFF] ^ Dm_build_134[0][(dm_build_214>>24)&0xFF] + dm_build_212 -= 8 + } + + for dm_build_212 > 0 { + dm_build_210 = ((dm_build_210 >> 8) & 0x00FFFFFF) ^ Dm_build_134[0][(dm_build_210&0xFF)^uint32(dm_build_207.Dm_build_1294(int(dm_build_211)))] + dm_build_211++ + dm_build_212-- + } + return ^dm_build_210 +} + +func (dm_build_216 *dm_build_151) dm_build_148() int32 { + return dm_build_216.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_47) +} + +func (dm_build_218 *dm_build_151) dm_build_149(dm_build_219 int32) { + dm_build_218.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_47, dm_build_219) +} + +func (dm_build_221 *dm_build_151) dm_build_150() int16 { + return dm_build_221.dm_build_153 +} + +type dm_build_222 struct { + dm_build_151 +} + +func dm_build_223(dm_build_224 *dm_build_1345) *dm_build_222 { + dm_build_225 := new(dm_build_222) + dm_build_225.dm_build_156(dm_build_224, Dm_build_23) + return dm_build_225 +} + +type dm_build_226 struct { + dm_build_151 + dm_build_227 string +} + +func dm_build_228(dm_build_229 *dm_build_1345, dm_build_230 *DmStatement, dm_build_231 string) *dm_build_226 { + dm_build_232 := new(dm_build_226) + dm_build_232.dm_build_160(dm_build_229, Dm_build_31, dm_build_230) + dm_build_232.dm_build_227 = dm_build_231 + dm_build_232.dm_build_155.cursorName = dm_build_231 + return dm_build_232 +} + +func (dm_build_234 *dm_build_226) dm_build_137() error { + dm_build_234.dm_build_152.dm_build_1348.Dm_build_1126(dm_build_234.dm_build_227, dm_build_234.dm_build_152.dm_build_1349.getServerEncoding(), dm_build_234.dm_build_152.dm_build_1349) + dm_build_234.dm_build_152.dm_build_1348.Dm_build_1064(1) + return nil +} + +const Dm_build_235 = 62 + +type Dm_build_236 struct { + dm_build_259 + dm_build_237 []OptParameter +} + +func dm_build_238(dm_build_239 *dm_build_1345, dm_build_240 *DmStatement, dm_build_241 []OptParameter) *Dm_build_236 { + dm_build_242 := new(Dm_build_236) + dm_build_242.dm_build_160(dm_build_239, Dm_build_41, dm_build_240) + dm_build_242.dm_build_237 = dm_build_241 + return dm_build_242 +} + +func (dm_build_244 *Dm_build_236) dm_build_137() error { + dm_build_245 := len(dm_build_244.dm_build_237) + + if err := dm_build_244.dm_build_275(int32(dm_build_245), 1); err != nil { + return err + } + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_235, 0) + + if dm_build_244.dm_build_152.dm_build_1349.MsgVersion >= Dm_build_8 { + dm_build_244.dm_build_290() + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_257, byte(dm_build_244.dm_build_262)) + } + + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1126(dm_build_244.dm_build_155.nativeSql, dm_build_244.dm_build_155.dmConn.getServerEncoding(), dm_build_244.dm_build_155.dmConn) + + for _, param := range dm_build_244.dm_build_237 { + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1052(param.ioType) + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1064(int32(param.tp)) + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1064(int32(param.prec)) + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1064(int32(param.scale)) + } + + for _, param := range dm_build_244.dm_build_237 { + if param.bytes == nil { + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1072(uint16(Dm_build_60)) + } else { + var dataBytes = param.bytes[:len(param.bytes)] + if len(dataBytes) > int(Dm_build_57) { + if dm_build_244.dm_build_152.dm_build_1349.MsgVersion >= Dm_build_11 && len(dataBytes) < 0xffffffff && + isComplexType(param.tp, param.scale) { + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1072(uint16(Dm_build_61)) + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1096(dataBytes) + continue + } + return ECGO_DATA_TOO_LONG.throw() + } + dm_build_244.dm_build_152.dm_build_1348.Dm_build_1102(dataBytes) + } + } + return nil +} + +func (dm_build_247 *Dm_build_236) dm_build_141() (interface{}, error) { + return dm_build_247.dm_build_259.dm_build_141() +} + +const ( + Dm_build_248 int = 0x01 + + Dm_build_249 int = 0x02 + + Dm_build_250 int = 0x04 + + Dm_build_251 int = 0x08 + + Dm_build_252 int = 0x0100 + + Dm_build_253 int32 = 0x00 + + Dm_build_254 int32 = 0x01 + + Dm_build_255 int32 = 0x02 + + Dm_build_256 int32 = 0x03 + + Dm_build_257 = 48 + + Dm_build_258 = 59 +) + +type dm_build_259 struct { + dm_build_151 + dm_build_260 [][]interface{} + dm_build_261 []parameter + + dm_build_262 int32 + dm_build_263 int32 + dm_build_264 int32 +} + +func dm_build_265(dm_build_266 *dm_build_1345, dm_build_267 int16, dm_build_268 *DmStatement) *dm_build_259 { + dm_build_269 := new(dm_build_259) + dm_build_269.dm_build_160(dm_build_266, dm_build_267, dm_build_268) + + return dm_build_269 +} + +func dm_build_270(dm_build_271 *dm_build_1345, dm_build_272 *DmStatement, dm_build_273 [][]interface{}) *dm_build_259 { + dm_build_274 := new(dm_build_259) + + if dm_build_271.dm_build_1349.Execute2 { + dm_build_274.dm_build_160(dm_build_271, Dm_build_25, dm_build_272) + } else { + dm_build_274.dm_build_160(dm_build_271, Dm_build_21, dm_build_272) + } + + dm_build_274.dm_build_261 = dm_build_272.bindParams + dm_build_274.dm_build_260 = dm_build_273 + + return dm_build_274 +} + +func (dm_build_276 *dm_build_259) dm_build_275(dm_build_277 int32, dm_build_278 int64) error { + + dm_build_279 := Dm_build_44 + + if dm_build_276.dm_build_152.dm_build_1349.autoCommit { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 1) + } else { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 0) + } + + if dm_build_277 > PARAM_COUNT_LIMIT { + return ECGO_PARAM_COUNT_LIMIT.throw() + } + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1224(dm_build_279, uint16(dm_build_277)) + + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 1) + + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1208(dm_build_279, dm_build_278) + + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1208(dm_build_279, dm_build_276.dm_build_155.cursorUpdateRow) + + if dm_build_276.dm_build_155.maxRows <= 0 || dm_build_276.dm_build_155.dmConn.dmConnector.enRsCache { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1208(dm_build_279, INT64_MAX) + } else { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1208(dm_build_279, dm_build_276.dm_build_155.maxRows) + } + + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 1) + + if dm_build_276.dm_build_152.dm_build_1349.dmConnector.continueBatchOnError { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 1) + } else { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 0) + } + + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 0) + + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 0) + + if dm_build_276.dm_build_155.queryTimeout == 0 { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1204(dm_build_279, -1) + } else { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1204(dm_build_279, dm_build_276.dm_build_155.queryTimeout) + } + + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1204(dm_build_279, dm_build_276.dm_build_152.dm_build_1349.dmConnector.batchAllowMaxErrors) + + if dm_build_276.dm_build_155.innerExec { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 1) + } else { + dm_build_279 += dm_build_276.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_279, 0) + } + return nil +} + +func (dm_build_281 *dm_build_259) dm_build_137() error { + var dm_build_282 int32 + var dm_build_283 int64 + + if dm_build_281.dm_build_261 != nil { + dm_build_282 = int32(len(dm_build_281.dm_build_261)) + } else { + dm_build_282 = 0 + } + + if dm_build_281.dm_build_260 != nil { + dm_build_283 = int64(len(dm_build_281.dm_build_260)) + } else { + dm_build_283 = 0 + } + + if err := dm_build_281.dm_build_275(dm_build_282, dm_build_283); err != nil { + return err + } + + if dm_build_281.dm_build_152.dm_build_1349.MsgVersion >= Dm_build_8 { + dm_build_281.dm_build_290() + dm_build_281.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_257, byte(dm_build_281.dm_build_262)) + } + + if dm_build_282 > 0 { + err := dm_build_281.dm_build_284(dm_build_281.dm_build_261) + if err != nil { + return err + } + if dm_build_281.dm_build_260 != nil && len(dm_build_281.dm_build_260) > 0 { + for _, paramObject := range dm_build_281.dm_build_260 { + if err := dm_build_281.dm_build_287(paramObject); err != nil { + return err + } + } + } + } + + return nil +} + +func (dm_build_285 *dm_build_259) dm_build_284(dm_build_286 []parameter) error { + for _, param := range dm_build_286 { + if param.mask == MASK_ORACLE_DATE { + + param.scale = param.scale | ORACLE_DATE_SCALE_MASK + } else if param.mask == MASK_LOCAL_DATETIME { + + param.scale = param.scale | LOCAL_DATETIME_SCALE_MASK + } else if param.mask == MASK_ORACLE_FLOAT { + + param.prec = int32(math.Round(float64(param.prec) * 3.32193)) + param.scale = ORACLE_FLOAT_SCALE_MASK + } + + if param.colType == CURSOR && param.ioType == IO_TYPE_OUT { + dm_build_285.dm_build_152.dm_build_1348.Dm_build_1056(IO_TYPE_INOUT) + } else { + dm_build_285.dm_build_152.dm_build_1348.Dm_build_1056(param.ioType) + } + + dm_build_285.dm_build_152.dm_build_1348.Dm_build_1064(param.colType) + + lprec := param.prec + lscale := param.scale + typeDesc := param.typeDescriptor + switch param.colType { + case ARRAY, SARRAY: + tmp, err := getPackArraySize(typeDesc) + if err != nil { + return err + } + lprec = int32(tmp) + case PLTYPE_RECORD: + tmp, err := getPackRecordSize(typeDesc) + if err != nil { + return err + } + lprec = int32(tmp) + case CLASS: + tmp, err := getPackClassSize(typeDesc) + if err != nil { + return err + } + lprec = int32(tmp) + case BLOB: + if isComplexType(int(param.colType), int(param.scale)) { + lprec = int32(typeDesc.getObjId()) + if lprec == 4 { + lprec = int32(typeDesc.getOuterId()) + } + } + } + + dm_build_285.dm_build_152.dm_build_1348.Dm_build_1064(lprec) + + dm_build_285.dm_build_152.dm_build_1348.Dm_build_1064(lscale) + + switch param.colType { + case ARRAY, SARRAY: + err := packArray(typeDesc, dm_build_285.dm_build_152.dm_build_1348) + if err != nil { + return err + } + + case PLTYPE_RECORD: + err := packRecord(typeDesc, dm_build_285.dm_build_152.dm_build_1348) + if err != nil { + return err + } + + case CLASS: + err := packClass(typeDesc, dm_build_285.dm_build_152.dm_build_1348) + if err != nil { + return err + } + + } + } + + return nil +} + +func (dm_build_288 *dm_build_259) dm_build_287(dm_build_289 []interface{}) error { + for i := 0; i < len(dm_build_288.dm_build_261); i++ { + + if dm_build_288.dm_build_261[i].colType == CURSOR { + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1060(ULINT_SIZE) + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_288.dm_build_261[i].cursorStmt.id) + continue + } + + if dm_build_288.dm_build_261[i].ioType == IO_TYPE_OUT { + continue + } + + if dm_build_289[i] == nil { + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1072(uint16(Dm_build_60)) + } else { + switch dm_build_289[i].(type) { + case []byte: + if dataBytes, ok := dm_build_289[i].([]byte); ok { + if len(dataBytes) > int(Dm_build_57) { + if dm_build_288.dm_build_152.dm_build_1349.MsgVersion >= Dm_build_11 && len(dataBytes) < 0xffffffff && + isComplexType(int(dm_build_288.dm_build_261[i].colType), int(dm_build_288.dm_build_261[i].scale)) { + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1072(uint16(Dm_build_61)) + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1096(dataBytes) + continue + } + return ECGO_DATA_TOO_LONG.throw() + } + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1102(dataBytes) + } + case int: + if dm_build_289[i] == ParamDataEnum_Null { + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1072(uint16(Dm_build_60)) + } else if dm_build_289[i] == ParamDataEnum_OFF_ROW { + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1060(0) + } + case lobCtl: + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1072(uint16(Dm_build_58)) + dm_build_288.dm_build_152.dm_build_1348.Dm_build_1092(dm_build_289[i].(lobCtl).value) + default: + return fmt.Errorf("Bind param data failed by invalid param data type: ") + } + } + } + + return nil +} + +func (dm_build_291 *dm_build_259) dm_build_290() int32 { + dm_build_291.dm_build_262 = Dm_build_254 + dm_build_291.dm_build_263 = 1 + return dm_build_291.dm_build_262 +} + +func (dm_build_293 *dm_build_259) dm_build_141() (interface{}, error) { + dm_build_294 := execRetInfo{} + dm_build_295 := dm_build_293.dm_build_155.dmConn + + dm_build_296 := Dm_build_44 + + dm_build_294.retSqlType = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1279(dm_build_296) + dm_build_296 += USINT_SIZE + + dm_build_297 := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1279(dm_build_296) + dm_build_296 += USINT_SIZE + + dm_build_294.updateCount = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1285(dm_build_296) + dm_build_296 += DDWORD_SIZE + + dm_build_298 := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1297(dm_build_296) + dm_build_296 += USINT_SIZE + + dm_build_294.rsUpdatable = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1276(dm_build_296) != 0 + dm_build_296 += BYTE_SIZE + + dm_build_299 := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1279(dm_build_296) + dm_build_296 += ULINT_SIZE + + dm_build_294.printLen = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1282(dm_build_296) + dm_build_296 += ULINT_SIZE + + var dm_build_300 int16 = -1 + if dm_build_294.retSqlType == Dm_build_110 || dm_build_294.retSqlType == Dm_build_111 { + dm_build_294.rowid = 0 + + dm_build_294.rsBdta = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1276(dm_build_296) == Dm_build_123 + dm_build_296 += BYTE_SIZE + + dm_build_300 = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1279(dm_build_296) + dm_build_296 += USINT_SIZE + dm_build_296 += 5 + } else { + dm_build_294.rowid = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1285(dm_build_296) + dm_build_296 += DDWORD_SIZE + } + + dm_build_294.execId = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1282(dm_build_296) + dm_build_296 += ULINT_SIZE + + dm_build_294.rsCacheOffset = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1282(dm_build_296) + dm_build_296 += ULINT_SIZE + + dm_build_301 := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1276(dm_build_296) + dm_build_296 += BYTE_SIZE + dm_build_302 := (dm_build_301 & 0x01) == 0x01 + + dm_build_295.TrxStatus = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1282(dm_build_296) + dm_build_295.setTrxFinish(dm_build_295.TrxStatus) + dm_build_296 += ULINT_SIZE + + if dm_build_294.printLen > 0 { + bytes := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1159(int(dm_build_294.printLen)) + dm_build_294.printMsg = Dm_build_650.Dm_build_807(bytes, 0, len(bytes), dm_build_295.getServerEncoding(), dm_build_295) + } + + if dm_build_298 > 0 { + dm_build_294.outParamDatas = dm_build_293.dm_build_303(int(dm_build_298)) + } + + switch dm_build_294.retSqlType { + case Dm_build_112: + dm_build_295.dmConnector.localTimezone = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1135() + case Dm_build_110: + dm_build_294.hasResultSet = true + if dm_build_297 > 0 { + dm_build_293.dm_build_155.columns = dm_build_293.dm_build_312(int(dm_build_297), dm_build_294.rsBdta) + } + dm_build_293.dm_build_322(&dm_build_294, len(dm_build_293.dm_build_155.columns), int(dm_build_299), int(dm_build_300)) + case Dm_build_111: + if dm_build_297 > 0 || dm_build_299 > 0 { + dm_build_294.hasResultSet = true + } + if dm_build_297 > 0 { + dm_build_293.dm_build_155.columns = dm_build_293.dm_build_312(int(dm_build_297), dm_build_294.rsBdta) + } + dm_build_293.dm_build_322(&dm_build_294, len(dm_build_293.dm_build_155.columns), int(dm_build_299), int(dm_build_300)) + case Dm_build_113: + dm_build_295.IsoLevel = int32(dm_build_293.dm_build_152.dm_build_1348.Dm_build_1135()) + dm_build_295.ReadOnly = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1132() == 1 + case Dm_build_106: + dm_build_295.Schema = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_295.getServerEncoding(), dm_build_295) + case Dm_build_103: + dm_build_294.explain = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_295.getServerEncoding(), dm_build_295) + + case Dm_build_107, Dm_build_109, Dm_build_108: + if dm_build_302 { + + counts := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1138() + rowCounts := make([]int64, counts) + for i := 0; i < int(counts); i++ { + rowCounts[i] = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1141() + } + dm_build_294.updateCounts = rowCounts + } + + dm_build_293.dm_build_334(&dm_build_294) + + if dm_build_293.dm_build_154 == EC_BP_WITH_ERROR.ErrCode { + dm_build_293.dm_build_328(dm_build_294.updateCounts) + } + case Dm_build_116: + len := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1150() + dm_build_295.FormatDate = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1175(int(len), dm_build_295.getServerEncoding(), dm_build_295) + case Dm_build_118: + + len := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1150() + dm_build_295.FormatTimestamp = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1175(int(len), dm_build_295.getServerEncoding(), dm_build_295) + case Dm_build_119: + + len := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1150() + dm_build_295.FormatTimestampTZ = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1175(int(len), dm_build_295.getServerEncoding(), dm_build_295) + case Dm_build_117: + len := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1150() + dm_build_295.FormatTime = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1175(int(len), dm_build_295.getServerEncoding(), dm_build_295) + case Dm_build_120: + len := dm_build_293.dm_build_152.dm_build_1348.Dm_build_1150() + dm_build_295.FormatTimeTZ = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1175(int(len), dm_build_295.getServerEncoding(), dm_build_295) + case Dm_build_121: + dm_build_295.OracleDateLanguage = dm_build_293.dm_build_152.dm_build_1348.Dm_build_1150() + } + + return &dm_build_294, nil +} + +func (dm_build_304 *dm_build_259) dm_build_303(dm_build_305 int) [][]byte { + dm_build_306 := make([]int, dm_build_305) + + dm_build_307 := 0 + for i := 0; i < len(dm_build_304.dm_build_261); i++ { + if dm_build_304.dm_build_261[i].ioType == IO_TYPE_INOUT || dm_build_304.dm_build_261[i].ioType == IO_TYPE_OUT { + dm_build_306[dm_build_307] = i + dm_build_307++ + } + } + + dm_build_308 := make([][]byte, len(dm_build_304.dm_build_261)) + var dm_build_309 int32 + var dm_build_310 bool + var dm_build_311 []byte = nil + for i := 0; i < dm_build_305; i++ { + dm_build_310 = false + dm_build_309 = int32(dm_build_304.dm_build_152.dm_build_1348.Dm_build_1153()) + + if dm_build_309 == int32(Dm_build_60) { + dm_build_309 = 0 + dm_build_310 = true + } else if dm_build_309 == int32(Dm_build_61) { + dm_build_309 = dm_build_304.dm_build_152.dm_build_1348.Dm_build_1138() + } + + if dm_build_310 { + dm_build_308[dm_build_306[i]] = nil + } else { + dm_build_311 = dm_build_304.dm_build_152.dm_build_1348.Dm_build_1159(int(dm_build_309)) + dm_build_308[dm_build_306[i]] = dm_build_311 + } + } + + return dm_build_308 +} + +func (dm_build_313 *dm_build_259) dm_build_312(dm_build_314 int, dm_build_315 bool) []column { + dm_build_316 := dm_build_313.dm_build_152.dm_build_1349.getServerEncoding() + var dm_build_317, dm_build_318, dm_build_319, dm_build_320 int16 + dm_build_321 := make([]column, dm_build_314) + for i := 0; i < dm_build_314; i++ { + dm_build_321[i].InitColumn() + + dm_build_321[i].colType = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_321[i].prec = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_321[i].scale = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_321[i].nullable = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1138() != 0 + + itemFlag := dm_build_313.dm_build_152.dm_build_1348.Dm_build_1135() + dm_build_321[i].lob = int(itemFlag)&Dm_build_249 != 0 + dm_build_321[i].identity = int(itemFlag)&Dm_build_248 != 0 + dm_build_321[i].readonly = int(itemFlag)&Dm_build_250 != 0 + + dm_build_313.dm_build_152.dm_build_1348.Dm_build_1034(4, false, true) + + dm_build_313.dm_build_152.dm_build_1348.Dm_build_1034(2, false, true) + + dm_build_317 = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1135() + + dm_build_318 = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1135() + + dm_build_319 = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1135() + + dm_build_320 = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1135() + dm_build_321[i].name = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_317), dm_build_316, dm_build_313.dm_build_152.dm_build_1349) + dm_build_321[i].typeName = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_318), dm_build_316, dm_build_313.dm_build_152.dm_build_1349) + dm_build_321[i].tableName = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_319), dm_build_316, dm_build_313.dm_build_152.dm_build_1349) + dm_build_321[i].schemaName = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_320), dm_build_316, dm_build_313.dm_build_152.dm_build_1349) + + if dm_build_313.dm_build_155.readBaseColName { + dm_build_321[i].baseName = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1188(dm_build_316, dm_build_313.dm_build_152.dm_build_1349) + } + + if dm_build_321[i].lob { + dm_build_321[i].lobTabId = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_321[i].lobColId = dm_build_313.dm_build_152.dm_build_1348.Dm_build_1135() + } + + if dm_build_321[i].colType == DATETIME || dm_build_321[i].colType == DATETIME2 { + if (dm_build_321[i].scale & LOCAL_DATETIME_SCALE_MASK) != 0 { + + dm_build_321[i].scale = dm_build_321[i].scale & ^LOCAL_DATETIME_SCALE_MASK + dm_build_321[i].mask = MASK_LOCAL_DATETIME + } else if (dm_build_321[i].scale & ORACLE_DATE_SCALE_MASK) != 0 { + + dm_build_321[i].scale = dm_build_321[i].scale & ^ORACLE_DATE_SCALE_MASK + dm_build_321[i].mask = MASK_ORACLE_DATE + } + } + + if dm_build_321[i].colType == DECIMAL && dm_build_321[i].scale == ORACLE_FLOAT_SCALE_MASK { + dm_build_321[i].prec = int32(math.Round(float64(dm_build_321[i].prec)*0.30103) + 1) + dm_build_321[i].scale = -1 + dm_build_321[i].mask = MASK_ORACLE_FLOAT + } + + if dm_build_321[i].colType == VARCHAR && dm_build_321[i].prec == BFILE_PREC && dm_build_321[i].scale == BFILE_SCALE { + dm_build_321[i].mask = MASK_BFILE + } + } + + for i := 0; i < dm_build_314; i++ { + + if isComplexType(int(dm_build_321[i].colType), int(dm_build_321[i].scale)) { + strDesc := newTypeDescriptor(dm_build_313.dm_build_152.dm_build_1349) + strDesc.unpack(dm_build_313.dm_build_152.dm_build_1348) + dm_build_321[i].typeDescriptor = strDesc + } + } + + return dm_build_321 +} + +func (dm_build_323 *dm_build_259) dm_build_322(dm_build_324 *execRetInfo, dm_build_325 int, dm_build_326 int, dm_build_327 int) { + if dm_build_326 > 0 { + startOffset := dm_build_323.dm_build_152.dm_build_1348.Dm_build_1029() + if dm_build_324.rsBdta { + dm_build_324.rsDatas = dm_build_323.dm_build_347(dm_build_323.dm_build_155.columns, dm_build_327) + } else { + datas := make([][][]byte, dm_build_326) + + for i := 0; i < dm_build_326; i++ { + + datas[i] = make([][]byte, dm_build_325+1) + + dm_build_323.dm_build_152.dm_build_1348.Dm_build_1034(2, false, true) + + datas[i][0] = dm_build_323.dm_build_152.dm_build_1348.Dm_build_1159(LINT64_SIZE) + + dm_build_323.dm_build_152.dm_build_1348.Dm_build_1034(2*dm_build_325, false, true) + + for j := 1; j < dm_build_325+1; j++ { + + colLen := dm_build_323.dm_build_152.dm_build_1348.Dm_build_1153() + if colLen == Dm_build_64 { + datas[i][j] = nil + } else if colLen != Dm_build_65 { + datas[i][j] = dm_build_323.dm_build_152.dm_build_1348.Dm_build_1159(int(colLen)) + } else { + datas[i][j] = dm_build_323.dm_build_152.dm_build_1348.Dm_build_1163() + } + } + } + + dm_build_324.rsDatas = datas + } + dm_build_324.rsSizeof = dm_build_323.dm_build_152.dm_build_1348.Dm_build_1029() - startOffset + } + + if dm_build_324.rsCacheOffset > 0 { + tbCount := dm_build_323.dm_build_152.dm_build_1348.Dm_build_1135() + + ids := make([]int32, tbCount) + tss := make([]int64, tbCount) + + for i := 0; i < int(tbCount); i++ { + ids[i] = dm_build_323.dm_build_152.dm_build_1348.Dm_build_1138() + tss[i] = dm_build_323.dm_build_152.dm_build_1348.Dm_build_1141() + } + + dm_build_324.tbIds = ids[:] + dm_build_324.tbTss = tss[:] + } +} + +func (dm_build_329 *dm_build_259) dm_build_328(dm_build_330 []int64) error { + + dm_build_329.dm_build_152.dm_build_1348.Dm_build_1034(4, false, true) + + dm_build_331 := dm_build_329.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_332 := dm_build_329.dm_build_152.dm_build_1349.getServerEncoding() + + if Locale != LANGUAGE_EN && dm_build_332 == ENCODING_EUCKR { + dm_build_332 = ENCODING_GB18030 + } + + if Locale == LANGUAGE_CNT_HK && dm_build_332 != ENCODING_UTF8 { + dm_build_332 = ENCODING_BIG5 + } + + dm_build_333 := make([]string, 0, 8) + for i := 0; i < int(dm_build_331); i++ { + irow := dm_build_329.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_330[irow] = -3 + + code := dm_build_329.dm_build_152.dm_build_1348.Dm_build_1138() + + errStr := dm_build_329.dm_build_152.dm_build_1348.Dm_build_1188(dm_build_332, dm_build_329.dm_build_152.dm_build_1349) + + dm_build_333 = append(dm_build_333, "row["+strconv.Itoa(int(irow))+"]:"+strconv.Itoa(int(code))+", "+errStr) + } + + if len(dm_build_333) > 0 { + builder := &strings.Builder{} + for _, str := range dm_build_333 { + builder.WriteString(util.LINE_SEPARATOR) + builder.WriteString(str) + } + EC_BP_WITH_ERROR.ErrText += builder.String() + return EC_BP_WITH_ERROR.throw() + } + return nil +} + +func (dm_build_335 *dm_build_259) dm_build_334(dm_build_336 *execRetInfo) error { + dm_build_337 := dm_build_335.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_258) + dm_build_338 := (dm_build_337 & 0x02) == 0x02 + if !dm_build_338 { + + if dm_build_336.updateCount == 1 { + + dm_build_336.lastInsertId = dm_build_336.rowid + } + return nil + } + + if dm_build_335.dm_build_152.dm_build_1349.MsgVersion < Dm_build_8 || dm_build_335.dm_build_262 == Dm_build_254 { + + rows := dm_build_335.dm_build_152.dm_build_1348.Dm_build_1138() + var lastInsertId int64 + for i := 0; i < int(rows); i++ { + lastInsertId = dm_build_335.dm_build_152.dm_build_1348.Dm_build_1141() + } + dm_build_336.lastInsertId = lastInsertId + } else { + + } + + return nil +} + +const ( + Dm_build_339 = 0 + + Dm_build_340 = Dm_build_339 + ULINT_SIZE + + Dm_build_341 = Dm_build_340 + USINT_SIZE + + Dm_build_342 = Dm_build_341 + ULINT_SIZE + + Dm_build_343 = Dm_build_342 + ULINT_SIZE + + Dm_build_344 = Dm_build_343 + BYTE_SIZE + + Dm_build_345 = -2 + + Dm_build_346 = -3 +) + +func (dm_build_348 *dm_build_259) dm_build_347(dm_build_349 []column, dm_build_350 int) [][][]byte { + + dm_build_351 := dm_build_348.dm_build_152.dm_build_1348.Dm_build_1156() + + dm_build_352 := dm_build_348.dm_build_152.dm_build_1348.Dm_build_1153() + + var dm_build_353 bool + + if dm_build_350 >= 0 && int(dm_build_352) == len(dm_build_349)+1 { + dm_build_353 = true + } else { + dm_build_353 = false + } + + dm_build_348.dm_build_152.dm_build_1348.Dm_build_1034(ULINT_SIZE, false, true) + + dm_build_348.dm_build_152.dm_build_1348.Dm_build_1034(ULINT_SIZE, false, true) + + dm_build_348.dm_build_152.dm_build_1348.Dm_build_1034(BYTE_SIZE, false, true) + + dm_build_354 := make([]uint16, dm_build_352) + for icol := 0; icol < int(dm_build_352); icol++ { + dm_build_354[icol] = dm_build_348.dm_build_152.dm_build_1348.Dm_build_1153() + } + + dm_build_355 := make([]uint32, dm_build_352) + dm_build_356 := make([][][]byte, dm_build_351) + + for i := uint32(0); i < dm_build_351; i++ { + dm_build_356[i] = make([][]byte, len(dm_build_349)+1) + } + + for icol := 0; icol < int(dm_build_352); icol++ { + dm_build_355[icol] = dm_build_348.dm_build_152.dm_build_1348.Dm_build_1156() + } + + for icol := 0; icol < int(dm_build_352); icol++ { + + dataCol := icol + 1 + if dm_build_353 && icol == dm_build_350 { + dataCol = 0 + } else if dm_build_353 && icol > dm_build_350 { + dataCol = icol + } + + allNotNull := dm_build_348.dm_build_152.dm_build_1348.Dm_build_1138() == 1 + var isNull []bool = nil + if !allNotNull { + isNull = make([]bool, dm_build_351) + for irow := uint32(0); irow < dm_build_351; irow++ { + isNull[irow] = dm_build_348.dm_build_152.dm_build_1348.Dm_build_1132() == 0 + } + } + + for irow := uint32(0); irow < dm_build_351; irow++ { + if allNotNull || !isNull[irow] { + dm_build_356[irow][dataCol] = dm_build_348.dm_build_357(int(dm_build_354[icol])) + } + } + } + + if !dm_build_353 && dm_build_350 >= 0 { + for irow := uint32(0); irow < dm_build_351; irow++ { + dm_build_356[irow][0] = dm_build_356[irow][dm_build_350+1] + } + } + + return dm_build_356 +} + +func (dm_build_358 *dm_build_259) dm_build_357(dm_build_359 int) []byte { + + dm_build_360 := dm_build_358.dm_build_363(dm_build_359) + + dm_build_361 := int32(0) + if dm_build_360 == Dm_build_345 { + dm_build_361 = dm_build_358.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_360 = int(dm_build_358.dm_build_152.dm_build_1348.Dm_build_1138()) + } else if dm_build_360 == Dm_build_346 { + dm_build_360 = int(dm_build_358.dm_build_152.dm_build_1348.Dm_build_1138()) + } + + dm_build_362 := dm_build_358.dm_build_152.dm_build_1348.Dm_build_1159(dm_build_360 + int(dm_build_361)) + if dm_build_361 == 0 { + return dm_build_362 + } + + for i := dm_build_360; i < len(dm_build_362); i++ { + dm_build_362[i] = ' ' + } + return dm_build_362 +} + +func (dm_build_364 *dm_build_259) dm_build_363(dm_build_365 int) int { + + dm_build_366 := 0 + switch dm_build_365 { + case INT, BIT, TINYINT, SMALLINT, BOOLEAN, NULL: + dm_build_366 = 4 + + case BIGINT: + + dm_build_366 = 8 + + case CHAR, VARCHAR2, VARCHAR, BINARY, VARBINARY, BLOB, CLOB: + dm_build_366 = Dm_build_345 + + case DECIMAL: + dm_build_366 = Dm_build_346 + + case REAL: + dm_build_366 = 4 + + case DOUBLE: + dm_build_366 = 8 + + case DATE, TIME, DATETIME, TIME_TZ, DATETIME_TZ: + dm_build_366 = 12 + + case DATETIME2, DATETIME2_TZ: + dm_build_366 = 13 + + case INTERVAL_YM: + dm_build_366 = 12 + + case INTERVAL_DT: + dm_build_366 = 24 + + default: + dm_build_366 = 0 + } + return dm_build_366 +} + +const ( + Dm_build_367 = Dm_build_44 + + Dm_build_368 = Dm_build_367 + DDWORD_SIZE + + Dm_build_369 = Dm_build_368 + LINT64_SIZE + + Dm_build_370 = Dm_build_369 + USINT_SIZE + + Dm_build_371 = Dm_build_44 + + Dm_build_372 = Dm_build_371 + DDWORD_SIZE +) + +type dm_build_373 struct { + dm_build_259 + dm_build_374 *innerRows + dm_build_375 int64 + dm_build_376 int64 +} + +func dm_build_377(dm_build_378 *dm_build_1345, dm_build_379 *innerRows, dm_build_380 int64, dm_build_381 int64) *dm_build_373 { + dm_build_382 := new(dm_build_373) + dm_build_382.dm_build_160(dm_build_378, Dm_build_22, dm_build_379.dmStmt) + dm_build_382.dm_build_374 = dm_build_379 + dm_build_382.dm_build_375 = dm_build_380 + dm_build_382.dm_build_376 = dm_build_381 + return dm_build_382 +} + +func (dm_build_384 *dm_build_373) dm_build_137() error { + + dm_build_384.dm_build_152.dm_build_1348.Dm_build_1208(Dm_build_367, dm_build_384.dm_build_375) + + dm_build_384.dm_build_152.dm_build_1348.Dm_build_1208(Dm_build_368, dm_build_384.dm_build_376) + + dm_build_384.dm_build_152.dm_build_1348.Dm_build_1200(Dm_build_369, dm_build_384.dm_build_374.id) + + dm_build_385 := dm_build_384.dm_build_374.dmStmt.dmConn.dmConnector.bufPrefetch + var dm_build_386 int32 + if dm_build_384.dm_build_374.sizeOfRow != 0 && dm_build_384.dm_build_374.fetchSize != 0 { + if dm_build_384.dm_build_374.sizeOfRow*dm_build_384.dm_build_374.fetchSize > int(INT32_MAX) { + dm_build_386 = INT32_MAX + } else { + dm_build_386 = int32(dm_build_384.dm_build_374.sizeOfRow * dm_build_384.dm_build_374.fetchSize) + } + + if dm_build_386 < Dm_build_76 { + dm_build_385 = int(Dm_build_76) + } else if dm_build_386 > Dm_build_77 { + dm_build_385 = int(Dm_build_77) + } else { + dm_build_385 = int(dm_build_386) + } + + dm_build_384.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_370, int32(dm_build_385)) + } + + return nil +} + +func (dm_build_388 *dm_build_373) dm_build_141() (interface{}, error) { + dm_build_389 := execRetInfo{} + dm_build_389.rsBdta = dm_build_388.dm_build_374.isBdta + + dm_build_389.updateCount = dm_build_388.dm_build_152.dm_build_1348.Dm_build_1285(Dm_build_371) + dm_build_390 := dm_build_388.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_372) + + dm_build_388.dm_build_322(&dm_build_389, len(dm_build_388.dm_build_374.columns), int(dm_build_390), -1) + + return &dm_build_389, nil +} + +type dm_build_391 struct { + dm_build_151 + dm_build_392 *lob + dm_build_393 int + dm_build_394 int +} + +func dm_build_395(dm_build_396 *dm_build_1345, dm_build_397 *lob, dm_build_398 int, dm_build_399 int) *dm_build_391 { + dm_build_400 := new(dm_build_391) + dm_build_400.dm_build_156(dm_build_396, Dm_build_35) + dm_build_400.dm_build_392 = dm_build_397 + dm_build_400.dm_build_393 = dm_build_398 + dm_build_400.dm_build_394 = dm_build_399 + return dm_build_400 +} + +func (dm_build_402 *dm_build_391) dm_build_137() error { + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1052(byte(dm_build_402.dm_build_392.lobFlag)) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_402.dm_build_392.tabId) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_402.dm_build_392.colId) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_402.dm_build_392.blobId)) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_402.dm_build_392.groupId) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_402.dm_build_392.fileId) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_402.dm_build_392.pageNo) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_402.dm_build_392.curFileId) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_402.dm_build_392.curPageNo) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_402.dm_build_392.totalOffset) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1064(int32(dm_build_402.dm_build_393)) + + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1064(int32(dm_build_402.dm_build_394)) + + if dm_build_402.dm_build_152.dm_build_1349.NewLobFlag { + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_402.dm_build_392.rowId)) + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_402.dm_build_392.exGroupId) + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_402.dm_build_392.exFileId) + dm_build_402.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_402.dm_build_392.exPageNo) + } + + return nil +} + +func (dm_build_404 *dm_build_391) dm_build_141() (interface{}, error) { + + dm_build_404.dm_build_392.readOver = dm_build_404.dm_build_152.dm_build_1348.Dm_build_1132() == 1 + var dm_build_405 = dm_build_404.dm_build_152.dm_build_1348.Dm_build_1156() + if dm_build_405 <= 0 { + return &lobRetInfo{0, []byte{}}, nil + } + dm_build_404.dm_build_392.curFileId = dm_build_404.dm_build_152.dm_build_1348.Dm_build_1135() + dm_build_404.dm_build_392.curPageNo = dm_build_404.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_404.dm_build_392.totalOffset = dm_build_404.dm_build_152.dm_build_1348.Dm_build_1138() + + var dm_build_406 = dm_build_404.dm_build_152.dm_build_1348.Dm_build_1169(int(dm_build_405)) + var dm_build_407 int64 = -1 + if dm_build_404.dm_build_152.dm_build_1348.Dm_build_1031(false) > 0 { + dm_build_407 = int64(dm_build_404.dm_build_152.dm_build_1348.Dm_build_1156()) + } + return &lobRetInfo{dm_build_407, dm_build_406}, nil +} + +type dm_build_408 struct { + dm_build_151 + dm_build_409 *lob +} + +func dm_build_410(dm_build_411 *dm_build_1345, dm_build_412 *lob) *dm_build_408 { + dm_build_413 := new(dm_build_408) + dm_build_413.dm_build_156(dm_build_411, Dm_build_32) + dm_build_413.dm_build_409 = dm_build_412 + return dm_build_413 +} + +func (dm_build_415 *dm_build_408) dm_build_137() error { + + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1052(byte(dm_build_415.dm_build_409.lobFlag)) + + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_415.dm_build_409.blobId)) + + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_415.dm_build_409.groupId) + + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_415.dm_build_409.fileId) + + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_415.dm_build_409.pageNo) + + if dm_build_415.dm_build_152.dm_build_1349.NewLobFlag { + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_415.dm_build_409.tabId) + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_415.dm_build_409.colId) + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_415.dm_build_409.rowId)) + + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_415.dm_build_409.exGroupId) + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_415.dm_build_409.exFileId) + dm_build_415.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_415.dm_build_409.exPageNo) + } + + return nil +} + +func (dm_build_417 *dm_build_408) dm_build_141() (interface{}, error) { + + if dm_build_417.dm_build_152.dm_build_1348.Dm_build_1031(false) == 8 { + return dm_build_417.dm_build_152.dm_build_1348.Dm_build_1141(), nil + } else { + return int64(dm_build_417.dm_build_152.dm_build_1348.Dm_build_1156()), nil + } +} + +type dm_build_418 struct { + dm_build_151 + dm_build_419 *lob + dm_build_420 int +} + +func dm_build_421(dm_build_422 *dm_build_1345, dm_build_423 *lob, dm_build_424 int) *dm_build_418 { + dm_build_425 := new(dm_build_418) + dm_build_425.dm_build_156(dm_build_422, Dm_build_34) + dm_build_425.dm_build_419 = dm_build_423 + dm_build_425.dm_build_420 = dm_build_424 + return dm_build_425 +} + +func (dm_build_427 *dm_build_418) dm_build_137() error { + + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1052(byte(dm_build_427.dm_build_419.lobFlag)) + + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_427.dm_build_419.blobId)) + + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_427.dm_build_419.groupId) + + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_427.dm_build_419.fileId) + + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_427.dm_build_419.pageNo) + + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_427.dm_build_419.tabId) + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_427.dm_build_419.colId) + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_427.dm_build_419.rowId)) + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1092(Dm_build_650.Dm_build_855(uint32(dm_build_427.dm_build_420))) + + if dm_build_427.dm_build_152.dm_build_1349.NewLobFlag { + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_427.dm_build_419.exGroupId) + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_427.dm_build_419.exFileId) + dm_build_427.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_427.dm_build_419.exPageNo) + } + return nil +} + +func (dm_build_429 *dm_build_418) dm_build_141() (interface{}, error) { + + dm_build_430 := dm_build_429.dm_build_152.dm_build_1348.Dm_build_1156() + dm_build_429.dm_build_419.blobId = dm_build_429.dm_build_152.dm_build_1348.Dm_build_1141() + dm_build_429.dm_build_419.resetCurrentInfo() + return int64(dm_build_430), nil +} + +const ( + Dm_build_431 = Dm_build_44 + + Dm_build_432 = Dm_build_431 + ULINT_SIZE + + Dm_build_433 = Dm_build_432 + ULINT_SIZE + + Dm_build_434 = Dm_build_433 + ULINT_SIZE + + Dm_build_435 = Dm_build_434 + BYTE_SIZE + + Dm_build_436 = Dm_build_435 + USINT_SIZE + + Dm_build_437 = Dm_build_436 + ULINT_SIZE + + Dm_build_438 = Dm_build_437 + BYTE_SIZE + + Dm_build_439 = Dm_build_438 + BYTE_SIZE + + Dm_build_440 = Dm_build_439 + BYTE_SIZE + + Dm_build_441 = Dm_build_44 + + Dm_build_442 = Dm_build_441 + ULINT_SIZE + + Dm_build_443 = Dm_build_442 + ULINT_SIZE + + Dm_build_444 = Dm_build_443 + BYTE_SIZE + + Dm_build_445 = Dm_build_444 + ULINT_SIZE + + Dm_build_446 = Dm_build_445 + BYTE_SIZE + + Dm_build_447 = Dm_build_446 + BYTE_SIZE + + Dm_build_448 = Dm_build_447 + USINT_SIZE + + Dm_build_449 = Dm_build_448 + USINT_SIZE + + Dm_build_450 = Dm_build_449 + BYTE_SIZE + + Dm_build_451 = Dm_build_450 + USINT_SIZE + + Dm_build_452 = Dm_build_451 + BYTE_SIZE + + Dm_build_453 = Dm_build_452 + BYTE_SIZE + + Dm_build_454 = Dm_build_453 + ULINT_SIZE + + Dm_build_455 = Dm_build_454 + USINT_SIZE +) + +type dm_build_456 struct { + dm_build_151 + + dm_build_457 *DmConnection + + dm_build_458 bool +} + +func dm_build_459(dm_build_460 *dm_build_1345) *dm_build_456 { + dm_build_461 := new(dm_build_456) + dm_build_461.dm_build_156(dm_build_460, Dm_build_16) + dm_build_461.dm_build_457 = dm_build_460.dm_build_1349 + return dm_build_461 +} + +func (dm_build_463 *dm_build_456) dm_build_137() error { + + if dm_build_463.dm_build_457.dmConnector.newClientType { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_431, Dm_build_55) + } else { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_431, Dm_build_54) + } + + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_432, g2dbIsoLevel(dm_build_463.dm_build_457.IsoLevel)) + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_433, int32(Locale)) + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1200(Dm_build_435, dm_build_463.dm_build_457.dmConnector.localTimezone) + + if dm_build_463.dm_build_457.ReadOnly { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_434, Dm_build_79) + } else { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_434, Dm_build_78) + } + + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_436, int32(dm_build_463.dm_build_457.dmConnector.sessionTimeout)) + + if dm_build_463.dm_build_457.dmConnector.mppLocal { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_437, 1) + } else { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_437, 0) + } + + if dm_build_463.dm_build_457.dmConnector.rwSeparate { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_438, 1) + } else { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_438, 0) + } + + if dm_build_463.dm_build_457.NewLobFlag { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_439, 1) + } else { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_439, 0) + } + + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_440, dm_build_463.dm_build_457.dmConnector.osAuthType) + + dm_build_464 := dm_build_463.dm_build_457.getServerEncoding() + + if dm_build_463.dm_build_152.dm_build_1355 != "" { + + } + + dm_build_465 := Dm_build_650.Dm_build_866(dm_build_463.dm_build_457.dmConnector.user, dm_build_464, dm_build_463.dm_build_152.dm_build_1349) + dm_build_466 := Dm_build_650.Dm_build_866(dm_build_463.dm_build_457.dmConnector.password, dm_build_464, dm_build_463.dm_build_152.dm_build_1349) + if len(dm_build_465) > Dm_build_52 { + return ECGO_USERNAME_TOO_LONG.throw() + } + if len(dm_build_466) > Dm_build_52 { + return ECGO_PASSWORD_TOO_LONG.throw() + } + + if dm_build_463.dm_build_152.dm_build_1351 && dm_build_463.dm_build_457.dmConnector.loginCertificate != "" { + + } else if dm_build_463.dm_build_152.dm_build_1351 { + dm_build_465 = dm_build_463.dm_build_152.dm_build_1350.Encrypt(dm_build_465, false) + dm_build_466 = dm_build_463.dm_build_152.dm_build_1350.Encrypt(dm_build_466, false) + } + + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1096(dm_build_465) + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1096(dm_build_466) + + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1108(dm_build_463.dm_build_457.dmConnector.appName, dm_build_464, dm_build_463.dm_build_152.dm_build_1349) + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1108(dm_build_463.dm_build_457.dmConnector.osName, dm_build_464, dm_build_463.dm_build_152.dm_build_1349) + + if hostName, err := os.Hostname(); err != nil { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1108(hostName, dm_build_464, dm_build_463.dm_build_152.dm_build_1349) + } else { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1108("", dm_build_464, dm_build_463.dm_build_152.dm_build_1349) + } + + if dm_build_463.dm_build_457.dmConnector.rwStandby { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1052(1) + } else { + dm_build_463.dm_build_152.dm_build_1348.Dm_build_1052(0) + } + + return nil +} + +func (dm_build_468 *dm_build_456) dm_build_141() (interface{}, error) { + + dm_build_468.dm_build_457.MaxRowSize = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_441) + dm_build_468.dm_build_457.DDLAutoCommit = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_443) == 1 + dm_build_468.dm_build_457.IsoLevel = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_444) + dm_build_468.dm_build_457.dmConnector.caseSensitive = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_445) == 1 + dm_build_468.dm_build_457.BackslashEscape = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_446) == 1 + dm_build_468.dm_build_457.SvrStat = int32(dm_build_468.dm_build_152.dm_build_1348.Dm_build_1279(Dm_build_448)) + dm_build_468.dm_build_457.SvrMode = int32(dm_build_468.dm_build_152.dm_build_1348.Dm_build_1279(Dm_build_447)) + dm_build_468.dm_build_457.ConstParaOpt = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_449) == 1 + dm_build_468.dm_build_457.DbTimezone = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1279(Dm_build_450) + dm_build_468.dm_build_457.NewLobFlag = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_452) == 1 + + if dm_build_468.dm_build_457.dmConnector.bufPrefetch == 0 { + dm_build_468.dm_build_457.dmConnector.bufPrefetch = int(dm_build_468.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_453)) + } + + dm_build_468.dm_build_457.LifeTimeRemainder = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1279(Dm_build_454) + dm_build_468.dm_build_457.dscControl = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_455) == 1 + + dm_build_469 := dm_build_468.dm_build_457.getServerEncoding() + + dm_build_468.dm_build_457.InstanceName = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + + var dm_build_470 = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1138() + if dm_build_470 == 0 && dm_build_468.dm_build_457.MsgVersion > 0 { + dm_build_468.dm_build_457.Schema = strings.ToUpper(dm_build_468.dm_build_457.dmConnector.user) + } else { + dm_build_468.dm_build_457.Schema = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_470), dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + } + + dm_build_468.dm_build_457.LastLoginIP = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + dm_build_468.dm_build_457.LastLoginTime = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + dm_build_468.dm_build_457.FailedAttempts = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_468.dm_build_457.LoginWarningID = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_468.dm_build_457.GraceTimeRemainder = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_468.dm_build_457.Guid = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + dm_build_468.dm_build_457.DbName = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + + if dm_build_468.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_451) == 1 { + dm_build_468.dm_build_457.StandbyHost = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + dm_build_468.dm_build_457.StandbyPort = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_468.dm_build_457.StandbyCount = int32(dm_build_468.dm_build_152.dm_build_1348.Dm_build_1153()) + } + + if dm_build_468.dm_build_152.dm_build_1348.Dm_build_1031(false) > 0 { + dm_build_468.dm_build_457.SessionID = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1141() + } + + if dm_build_468.dm_build_152.dm_build_1348.Dm_build_1031(false) > 0 { + if dm_build_468.dm_build_152.dm_build_1348.Dm_build_1132() == 1 { + + dm_build_468.dm_build_457.FormatDate = "DD-MON-YY" + + dm_build_468.dm_build_457.FormatTime = "HH12.MI.SS.FF6 AM" + + dm_build_468.dm_build_457.FormatTimestamp = "DD-MON-YY HH12.MI.SS.FF6 AM" + + dm_build_468.dm_build_457.FormatTimestampTZ = "DD-MON-YY HH12.MI.SS.FF6 AM +TZH:TZM" + + dm_build_468.dm_build_457.FormatTimeTZ = "HH12.MI.SS.FF6 AM +TZH:TZM" + } + } + + if dm_build_468.dm_build_152.dm_build_1348.Dm_build_1031(false) > 0 { + + format := dm_build_468.dm_build_152.dm_build_1348.Dm_build_1184(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + if format != "" { + dm_build_468.dm_build_457.FormatDate = format + } + format = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1184(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + if format != "" { + dm_build_468.dm_build_457.FormatTime = format + } + format = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1184(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + if format != "" { + dm_build_468.dm_build_457.FormatTimestamp = format + } + format = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1184(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + if format != "" { + dm_build_468.dm_build_457.FormatTimestampTZ = format + } + format = dm_build_468.dm_build_152.dm_build_1348.Dm_build_1184(dm_build_469, dm_build_468.dm_build_152.dm_build_1349) + if format != "" { + dm_build_468.dm_build_457.FormatTimeTZ = format + } + } + + return nil, nil +} + +const ( + Dm_build_471 = Dm_build_44 +) + +type dm_build_472 struct { + dm_build_259 + dm_build_473 int16 +} + +func dm_build_474(dm_build_475 *dm_build_1345, dm_build_476 *DmStatement, dm_build_477 int16) *dm_build_472 { + dm_build_478 := new(dm_build_472) + dm_build_478.dm_build_160(dm_build_475, Dm_build_36, dm_build_476) + dm_build_478.dm_build_473 = dm_build_477 + return dm_build_478 +} + +func (dm_build_480 *dm_build_472) dm_build_137() error { + dm_build_480.dm_build_152.dm_build_1348.Dm_build_1200(Dm_build_471, dm_build_480.dm_build_473) + return nil +} + +func (dm_build_482 *dm_build_472) dm_build_141() (interface{}, error) { + return dm_build_482.dm_build_259.dm_build_141() +} + +const ( + Dm_build_483 = Dm_build_44 + Dm_build_484 = Dm_build_483 + USINT_SIZE +) + +type dm_build_485 struct { + dm_build_495 + dm_build_486 []parameter +} + +func dm_build_487(dm_build_488 *dm_build_1345, dm_build_489 *DmStatement, dm_build_490 []parameter) *dm_build_485 { + dm_build_491 := new(dm_build_485) + dm_build_491.dm_build_160(dm_build_488, Dm_build_40, dm_build_489) + dm_build_491.dm_build_486 = dm_build_490 + return dm_build_491 +} + +func (dm_build_493 *dm_build_485) dm_build_137() error { + + if dm_build_493.dm_build_486 == nil { + dm_build_493.dm_build_152.dm_build_1348.Dm_build_1200(Dm_build_483, 0) + } else { + dm_build_493.dm_build_152.dm_build_1348.Dm_build_1200(Dm_build_483, int16(len(dm_build_493.dm_build_486))) + } + + dm_build_493.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_484, 0) + + return dm_build_493.dm_build_284(dm_build_493.dm_build_486) +} + +const Dm_build_494 = 38 + +type dm_build_495 struct { + dm_build_259 + dm_build_496 bool + dm_build_497 int16 +} + +func dm_build_498(dm_build_499 *dm_build_1345, dm_build_500 *DmStatement, dm_build_501 bool, dm_build_502 int16) *dm_build_495 { + dm_build_503 := new(dm_build_495) + dm_build_503.dm_build_160(dm_build_499, Dm_build_20, dm_build_500) + dm_build_503.dm_build_496 = dm_build_501 + dm_build_503.dm_build_497 = dm_build_502 + return dm_build_503 +} + +func (dm_build_505 *dm_build_495) dm_build_137() error { + + dm_build_506 := Dm_build_44 + + if dm_build_505.dm_build_152.dm_build_1349.autoCommit { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 1) + } else { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 0) + } + + if dm_build_505.dm_build_496 { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 1) + } else { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 0) + } + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 0) + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 1) + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 0) + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1200(dm_build_506, Dm_build_95) + + if dm_build_505.dm_build_155.maxRows <= 0 || dm_build_505.dm_build_152.dm_build_1349.dmConnector.enRsCache { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1208(dm_build_506, INT64_MAX) + } else { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1208(dm_build_506, dm_build_505.dm_build_155.maxRows) + } + + if dm_build_505.dm_build_152.dm_build_1349.dmConnector.isBdtaRS { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, Dm_build_123) + } else { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, Dm_build_122) + } + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1200(dm_build_506, 0) + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 1) + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 0) + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 0) + + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1204(dm_build_506, dm_build_505.dm_build_155.queryTimeout) + + if dm_build_505.dm_build_155.innerExec { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 1) + } else { + dm_build_506 += dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(dm_build_506, 0) + } + + if dm_build_505.dm_build_152.dm_build_1349.MsgVersion >= Dm_build_8 { + if dm_build_505.dm_build_496 { + dm_build_505.dm_build_262 = dm_build_505.dm_build_290() + } else { + dm_build_505.dm_build_262 = Dm_build_253 + } + dm_build_505.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_494, byte(dm_build_505.dm_build_262)) + } + + dm_build_505.dm_build_152.dm_build_1348.Dm_build_1126(dm_build_505.dm_build_155.nativeSql, dm_build_505.dm_build_152.dm_build_1349.getServerEncoding(), dm_build_505.dm_build_152.dm_build_1349) + + return nil +} + +func (dm_build_508 *dm_build_495) dm_build_141() (interface{}, error) { + + if dm_build_508.dm_build_496 { + return dm_build_508.dm_build_259.dm_build_141() + } + + dm_build_509 := NewExceInfo() + dm_build_510 := Dm_build_44 + + dm_build_509.retSqlType = dm_build_508.dm_build_152.dm_build_1348.Dm_build_1279(dm_build_510) + dm_build_510 += USINT_SIZE + + dm_build_511 := dm_build_508.dm_build_152.dm_build_1348.Dm_build_1297(dm_build_510) + dm_build_510 += USINT_SIZE + + dm_build_512 := dm_build_508.dm_build_152.dm_build_1348.Dm_build_1279(dm_build_510) + dm_build_510 += USINT_SIZE + + dm_build_508.dm_build_152.dm_build_1348.Dm_build_1285(dm_build_510) + dm_build_510 += DDWORD_SIZE + + dm_build_508.dm_build_152.dm_build_1349.TrxStatus = dm_build_508.dm_build_152.dm_build_1348.Dm_build_1282(dm_build_510) + dm_build_510 += ULINT_SIZE + + if dm_build_511 > 0 { + dm_build_508.dm_build_155.serverParams = dm_build_508.dm_build_513(int(dm_build_511)) + dm_build_508.dm_build_155.bindParams = make([]parameter, dm_build_511) + for i := 0; i < int(dm_build_511); i++ { + dm_build_508.dm_build_155.bindParams[i].InitParameter() + dm_build_508.dm_build_155.bindParams[i].colType = dm_build_508.dm_build_155.serverParams[i].colType + dm_build_508.dm_build_155.bindParams[i].prec = dm_build_508.dm_build_155.serverParams[i].prec + dm_build_508.dm_build_155.bindParams[i].scale = dm_build_508.dm_build_155.serverParams[i].scale + dm_build_508.dm_build_155.bindParams[i].nullable = dm_build_508.dm_build_155.serverParams[i].nullable + dm_build_508.dm_build_155.bindParams[i].hasDefault = dm_build_508.dm_build_155.serverParams[i].hasDefault + dm_build_508.dm_build_155.bindParams[i].typeFlag = dm_build_508.dm_build_155.serverParams[i].typeFlag + dm_build_508.dm_build_155.bindParams[i].lob = dm_build_508.dm_build_155.serverParams[i].lob + dm_build_508.dm_build_155.bindParams[i].ioType = dm_build_508.dm_build_155.serverParams[i].ioType + dm_build_508.dm_build_155.bindParams[i].name = dm_build_508.dm_build_155.serverParams[i].name + dm_build_508.dm_build_155.bindParams[i].typeName = dm_build_508.dm_build_155.serverParams[i].typeName + dm_build_508.dm_build_155.bindParams[i].tableName = dm_build_508.dm_build_155.serverParams[i].tableName + dm_build_508.dm_build_155.bindParams[i].schemaName = dm_build_508.dm_build_155.serverParams[i].schemaName + dm_build_508.dm_build_155.bindParams[i].lobTabId = dm_build_508.dm_build_155.serverParams[i].lobTabId + dm_build_508.dm_build_155.bindParams[i].lobColId = dm_build_508.dm_build_155.serverParams[i].lobColId + dm_build_508.dm_build_155.bindParams[i].mask = dm_build_508.dm_build_155.serverParams[i].mask + dm_build_508.dm_build_155.bindParams[i].typeDescriptor = dm_build_508.dm_build_155.serverParams[i].typeDescriptor + } + + dm_build_508.dm_build_155.paramCount = int32(dm_build_511) + } else { + dm_build_508.dm_build_155.serverParams = make([]parameter, 0) + dm_build_508.dm_build_155.bindParams = make([]parameter, 0) + dm_build_508.dm_build_155.paramCount = 0 + } + + if dm_build_512 > 0 { + dm_build_508.dm_build_155.columns = dm_build_508.dm_build_312(int(dm_build_512), dm_build_509.rsBdta) + } else { + dm_build_508.dm_build_155.columns = make([]column, 0) + } + + return dm_build_509, nil +} + +func (dm_build_514 *dm_build_495) dm_build_513(dm_build_515 int) []parameter { + + var dm_build_516, dm_build_517, dm_build_518, dm_build_519 int16 + + dm_build_520 := make([]parameter, dm_build_515) + for i := 0; i < dm_build_515; i++ { + + dm_build_520[i].InitParameter() + + dm_build_520[i].colType = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_520[i].prec = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_520[i].scale = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_520[i].nullable = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1138() != 0 + + itemFlag := dm_build_514.dm_build_152.dm_build_1348.Dm_build_1135() + + dm_build_520[i].hasDefault = int(itemFlag)&Dm_build_252 != 0 + + if int(itemFlag)&Dm_build_251 != 0 { + dm_build_520[i].typeFlag = TYPE_FLAG_RECOMMEND + } else { + dm_build_520[i].typeFlag = TYPE_FLAG_EXACT + } + + dm_build_520[i].lob = int(itemFlag)&Dm_build_249 != 0 + + dm_build_514.dm_build_152.dm_build_1348.Dm_build_1138() + + dm_build_520[i].ioType = int8(dm_build_514.dm_build_152.dm_build_1348.Dm_build_1135()) + + dm_build_516 = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1135() + + dm_build_517 = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1135() + + dm_build_518 = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1135() + + dm_build_519 = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1135() + dm_build_520[i].name = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_516), dm_build_514.dm_build_152.dm_build_1349.getServerEncoding(), dm_build_514.dm_build_152.dm_build_1349) + dm_build_520[i].typeName = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_517), dm_build_514.dm_build_152.dm_build_1349.getServerEncoding(), dm_build_514.dm_build_152.dm_build_1349) + dm_build_520[i].tableName = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_518), dm_build_514.dm_build_152.dm_build_1349.getServerEncoding(), dm_build_514.dm_build_152.dm_build_1349) + dm_build_520[i].schemaName = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1175(int(dm_build_519), dm_build_514.dm_build_152.dm_build_1349.getServerEncoding(), dm_build_514.dm_build_152.dm_build_1349) + + if dm_build_520[i].lob { + dm_build_520[i].lobTabId = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_520[i].lobColId = dm_build_514.dm_build_152.dm_build_1348.Dm_build_1135() + } + + if dm_build_520[i].colType == DATETIME || dm_build_520[i].colType == DATETIME2 { + if (dm_build_520[i].scale & LOCAL_DATETIME_SCALE_MASK) != 0 { + + dm_build_520[i].scale = dm_build_520[i].scale & ^LOCAL_DATETIME_SCALE_MASK + dm_build_520[i].mask = MASK_LOCAL_DATETIME + } else if (dm_build_520[i].scale & ORACLE_DATE_SCALE_MASK) != 0 { + + dm_build_520[i].scale = dm_build_520[i].scale & ^ORACLE_DATE_SCALE_MASK + dm_build_520[i].mask = MASK_ORACLE_DATE + } + } + + if dm_build_520[i].colType == DECIMAL && dm_build_520[i].scale == ORACLE_FLOAT_SCALE_MASK { + dm_build_520[i].prec = int32(math.Round(float64(dm_build_520[i].prec)*0.30103) + 1) + dm_build_520[i].scale = -1 + dm_build_520[i].mask = MASK_ORACLE_FLOAT + } + + if dm_build_520[i].colType == VARCHAR && dm_build_520[i].prec == BFILE_PREC && dm_build_520[i].scale == BFILE_SCALE { + dm_build_520[i].mask = MASK_BFILE + } + } + + for i := 0; i < dm_build_515; i++ { + + if isComplexType(int(dm_build_520[i].colType), int(dm_build_520[i].scale)) { + + strDesc := newTypeDescriptor(dm_build_514.dm_build_152.dm_build_1349) + strDesc.unpack(dm_build_514.dm_build_152.dm_build_1348) + dm_build_520[i].typeDescriptor = strDesc + } + } + + return dm_build_520 +} + +const ( + Dm_build_521 = Dm_build_44 +) + +type dm_build_522 struct { + dm_build_151 + dm_build_523 int16 + dm_build_524 *Dm_build_931 + dm_build_525 int32 +} + +func dm_build_526(dm_build_527 *dm_build_1345, dm_build_528 *DmStatement, dm_build_529 int16, dm_build_530 *Dm_build_931, dm_build_531 int32) *dm_build_522 { + dm_build_532 := new(dm_build_522) + dm_build_532.dm_build_160(dm_build_527, Dm_build_26, dm_build_528) + dm_build_532.dm_build_523 = dm_build_529 + dm_build_532.dm_build_524 = dm_build_530 + dm_build_532.dm_build_525 = dm_build_531 + return dm_build_532 +} + +func (dm_build_534 *dm_build_522) dm_build_137() error { + dm_build_534.dm_build_152.dm_build_1348.Dm_build_1200(Dm_build_521, dm_build_534.dm_build_523) + + dm_build_534.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_534.dm_build_525) + + if dm_build_534.dm_build_152.dm_build_1349.NewLobFlag { + dm_build_534.dm_build_152.dm_build_1348.Dm_build_1064(-1) + } + dm_build_534.dm_build_524.Dm_build_938(dm_build_534.dm_build_152.dm_build_1348, int(dm_build_534.dm_build_525)) + return nil +} + +type dm_build_535 struct { + dm_build_151 +} + +func dm_build_536(dm_build_537 *dm_build_1345) *dm_build_535 { + dm_build_538 := new(dm_build_535) + dm_build_538.dm_build_156(dm_build_537, Dm_build_24) + return dm_build_538 +} + +type dm_build_539 struct { + dm_build_151 + dm_build_540 int32 +} + +func dm_build_541(dm_build_542 *dm_build_1345, dm_build_543 int32) *dm_build_539 { + dm_build_544 := new(dm_build_539) + dm_build_544.dm_build_156(dm_build_542, Dm_build_37) + dm_build_544.dm_build_540 = dm_build_543 + return dm_build_544 +} + +func (dm_build_546 *dm_build_539) dm_build_137() error { + + dm_build_547 := Dm_build_44 + dm_build_547 += dm_build_546.dm_build_152.dm_build_1348.Dm_build_1204(dm_build_547, g2dbIsoLevel(dm_build_546.dm_build_540)) + return nil +} + +type dm_build_548 struct { + dm_build_151 + dm_build_549 *lob + dm_build_550 byte + dm_build_551 int + dm_build_552 []byte + dm_build_553 int + dm_build_554 int +} + +func dm_build_555(dm_build_556 *dm_build_1345, dm_build_557 *lob, dm_build_558 byte, dm_build_559 int, dm_build_560 []byte, + dm_build_561 int, dm_build_562 int) *dm_build_548 { + dm_build_563 := new(dm_build_548) + dm_build_563.dm_build_156(dm_build_556, Dm_build_33) + dm_build_563.dm_build_549 = dm_build_557 + dm_build_563.dm_build_550 = dm_build_558 + dm_build_563.dm_build_551 = dm_build_559 + dm_build_563.dm_build_552 = dm_build_560 + dm_build_563.dm_build_553 = dm_build_561 + dm_build_563.dm_build_554 = dm_build_562 + return dm_build_563 +} + +func (dm_build_565 *dm_build_548) dm_build_137() error { + + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1052(byte(dm_build_565.dm_build_549.lobFlag)) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1052(dm_build_565.dm_build_550) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_565.dm_build_549.blobId)) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_565.dm_build_549.groupId) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_565.dm_build_549.fileId) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_565.dm_build_549.pageNo) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_565.dm_build_549.curFileId) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_565.dm_build_549.curPageNo) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_565.dm_build_549.totalOffset) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_565.dm_build_549.tabId) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_565.dm_build_549.colId) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1080(uint64(dm_build_565.dm_build_549.rowId)) + + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1064(int32(dm_build_565.dm_build_551)) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1064(int32(dm_build_565.dm_build_554)) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1092(dm_build_565.dm_build_552) + + if dm_build_565.dm_build_152.dm_build_1349.NewLobFlag { + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_565.dm_build_549.exGroupId) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1060(dm_build_565.dm_build_549.exFileId) + dm_build_565.dm_build_152.dm_build_1348.Dm_build_1064(dm_build_565.dm_build_549.exPageNo) + } + return nil +} + +func (dm_build_567 *dm_build_548) dm_build_141() (interface{}, error) { + + var dm_build_568 = dm_build_567.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_567.dm_build_549.blobId = dm_build_567.dm_build_152.dm_build_1348.Dm_build_1141() + dm_build_567.dm_build_549.fileId = dm_build_567.dm_build_152.dm_build_1348.Dm_build_1135() + dm_build_567.dm_build_549.pageNo = dm_build_567.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_567.dm_build_549.curFileId = dm_build_567.dm_build_152.dm_build_1348.Dm_build_1135() + dm_build_567.dm_build_549.curPageNo = dm_build_567.dm_build_152.dm_build_1348.Dm_build_1138() + dm_build_567.dm_build_549.totalOffset = dm_build_567.dm_build_152.dm_build_1348.Dm_build_1138() + return dm_build_568, nil +} + +const ( + Dm_build_569 = Dm_build_44 + + Dm_build_570 = Dm_build_569 + ULINT_SIZE + + Dm_build_571 = Dm_build_570 + ULINT_SIZE + + Dm_build_572 = Dm_build_571 + BYTE_SIZE + + Dm_build_573 = Dm_build_572 + BYTE_SIZE + + Dm_build_574 = Dm_build_573 + BYTE_SIZE + + Dm_build_575 = Dm_build_574 + BYTE_SIZE + + Dm_build_576 = Dm_build_575 + BYTE_SIZE + + Dm_build_577 = Dm_build_576 + BYTE_SIZE + + Dm_build_578 = Dm_build_577 + BYTE_SIZE + + Dm_build_579 = Dm_build_44 + + Dm_build_580 = Dm_build_579 + ULINT_SIZE + + Dm_build_581 = Dm_build_580 + ULINT_SIZE + + Dm_build_582 = Dm_build_581 + ULINT_SIZE + + Dm_build_583 = Dm_build_582 + ULINT_SIZE + + Dm_build_584 = Dm_build_583 + ULINT_SIZE + + Dm_build_585 = Dm_build_584 + BYTE_SIZE + + Dm_build_586 = Dm_build_585 + BYTE_SIZE + + Dm_build_587 = Dm_build_586 + BYTE_SIZE + + Dm_build_588 = Dm_build_587 + BYTE_SIZE + + Dm_build_589 = Dm_build_588 + BYTE_SIZE + + Dm_build_590 = Dm_build_589 + USINT_SIZE + + Dm_build_591 = Dm_build_590 + BYTE_SIZE +) + +type dm_build_592 struct { + dm_build_151 + dm_build_593 *DmConnection + dm_build_594 int + Dm_build_595 int32 + Dm_build_596 []byte + dm_build_597 byte +} + +func dm_build_598(dm_build_599 *dm_build_1345) *dm_build_592 { + dm_build_600 := new(dm_build_592) + dm_build_600.dm_build_156(dm_build_599, Dm_build_42) + dm_build_600.dm_build_593 = dm_build_599.dm_build_1349 + return dm_build_600 +} + +func dm_build_601(dm_build_602 string, dm_build_603 string) int { + dm_build_604 := strings.Split(dm_build_602, ".") + dm_build_605 := strings.Split(dm_build_603, ".") + + for i, serStr := range dm_build_604 { + ser, _ := strconv.ParseInt(serStr, 10, 32) + global, _ := strconv.ParseInt(dm_build_605[i], 10, 32) + if ser < global { + return -1 + } else if ser == global { + continue + } else { + return 1 + } + } + + return 0 +} + +func (dm_build_607 *dm_build_592) dm_build_137() error { + + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_569, int32(0)) + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_570, int32(dm_build_607.dm_build_593.dmConnector.compress)) + + if dm_build_607.dm_build_593.dmConnector.loginEncrypt { + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_572, 2) + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_571, 1) + } else { + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_572, 0) + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_571, 0) + } + + if dm_build_607.dm_build_593.dmConnector.isBdtaRS { + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_573, Dm_build_123) + } else { + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_573, Dm_build_122) + } + + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_574, byte(dm_build_607.dm_build_593.dmConnector.compressID)) + + if dm_build_607.dm_build_593.dmConnector.loginCertificate != "" { + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_575, 1) + } else { + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_575, 0) + } + + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_576, 0) + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_577, 1) + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1224(Dm_build_578, uint16(dm_build_607.dm_build_593.MsgVersion)) + + dm_build_608 := dm_build_607.dm_build_593.getServerEncoding() + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1108(Dm_build_0, dm_build_608, dm_build_607.dm_build_152.dm_build_1349) + + var dm_build_609 byte + if dm_build_607.dm_build_593.dmConnector.uKeyName != "" { + dm_build_609 = 1 + } else { + dm_build_609 = 0 + } + + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1052(0) + + if dm_build_609 == 1 { + + } + + if dm_build_607.dm_build_593.dmConnector.loginEncrypt { + clientPubKey, err := dm_build_607.dm_build_152.dm_build_1596() + if err != nil { + return err + } + dm_build_607.dm_build_152.dm_build_1348.Dm_build_1096(clientPubKey) + } + + return nil +} + +func (dm_build_611 *dm_build_592) dm_build_140() error { + dm_build_611.dm_build_152.dm_build_1348.Dm_build_1026(0) + dm_build_611.dm_build_152.dm_build_1348.Dm_build_1034(Dm_build_43, false, true) + return nil +} + +func (dm_build_613 *dm_build_592) dm_build_141() (interface{}, error) { + + dm_build_613.dm_build_593.sslEncrypt = int(dm_build_613.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_579)) + dm_build_613.dm_build_593.GlobalServerSeries = int(dm_build_613.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_580)) + + switch dm_build_613.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_581) { + case 1: + dm_build_613.dm_build_593.serverEncoding = ENCODING_UTF8 + case 2: + dm_build_613.dm_build_593.serverEncoding = ENCODING_EUCKR + default: + dm_build_613.dm_build_593.serverEncoding = ENCODING_GB18030 + } + + dm_build_613.dm_build_593.dmConnector.compress = int(dm_build_613.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_582)) + dm_build_614 := dm_build_613.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_584) + dm_build_615 := dm_build_613.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_585) + dm_build_613.dm_build_593.dmConnector.isBdtaRS = dm_build_613.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_586) > 0 + dm_build_613.dm_build_593.dmConnector.compressID = int8(dm_build_613.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_587)) + + dm_build_613.dm_build_152.dm_build_1354 = dm_build_613.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_589) == 1 + dm_build_613.dm_build_593.dmConnector.newClientType = dm_build_613.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_590) == 1 + dm_build_613.dm_build_593.MsgVersion = int32(dm_build_613.dm_build_152.dm_build_1348.Dm_build_1297(Dm_build_591)) + + dm_build_616 := dm_build_613.dm_build_184() + if dm_build_616 != nil { + return nil, dm_build_616 + } + + dm_build_617 := dm_build_613.dm_build_152.dm_build_1348.Dm_build_1180(dm_build_613.dm_build_593.getServerEncoding(), dm_build_613.dm_build_152.dm_build_1349) + if dm_build_601(dm_build_617, Dm_build_1) < 0 { + return nil, ECGO_ERROR_SERVER_VERSION.throw() + } + + dm_build_613.dm_build_593.ServerVersion = dm_build_617 + dm_build_613.dm_build_593.Malini2 = dm_build_601(dm_build_617, Dm_build_2) > 0 + dm_build_613.dm_build_593.Execute2 = dm_build_601(dm_build_617, Dm_build_3) > 0 + dm_build_613.dm_build_593.LobEmptyCompOrcl = dm_build_601(dm_build_617, Dm_build_4) > 0 + + if dm_build_613.dm_build_152.dm_build_1349.dmConnector.uKeyName != "" { + dm_build_613.dm_build_597 = 1 + } else { + dm_build_613.dm_build_597 = 0 + } + + if dm_build_613.dm_build_597 == 1 { + dm_build_613.dm_build_152.dm_build_1355 = dm_build_613.dm_build_152.dm_build_1348.Dm_build_1175(16, dm_build_613.dm_build_593.getServerEncoding(), dm_build_613.dm_build_152.dm_build_1349) + } + + dm_build_613.dm_build_594 = -1 + dm_build_618 := false + dm_build_619 := false + dm_build_613.Dm_build_595 = -1 + if dm_build_615 > 0 { + dm_build_613.dm_build_594 = int(dm_build_613.dm_build_152.dm_build_1348.Dm_build_1138()) + } + + if dm_build_614 > 0 { + + if dm_build_613.dm_build_594 == -1 { + dm_build_618 = true + } else { + dm_build_619 = true + } + + dm_build_613.Dm_build_596 = dm_build_613.dm_build_152.dm_build_1348.Dm_build_1163() + } + + if dm_build_615 == 2 { + dm_build_613.Dm_build_595 = dm_build_613.dm_build_152.dm_build_1348.Dm_build_1138() + } + dm_build_613.dm_build_152.dm_build_1351 = dm_build_618 + dm_build_613.dm_build_152.dm_build_1352 = dm_build_619 + + return nil, nil +} + +type dm_build_620 struct { + dm_build_151 +} + +func dm_build_621(dm_build_622 *dm_build_1345, dm_build_623 *DmStatement) *dm_build_620 { + dm_build_624 := new(dm_build_620) + dm_build_624.dm_build_160(dm_build_622, Dm_build_18, dm_build_623) + return dm_build_624 +} + +func (dm_build_626 *dm_build_620) dm_build_137() error { + + dm_build_626.dm_build_152.dm_build_1348.Dm_build_1196(Dm_build_44, 1) + return nil +} + +func (dm_build_628 *dm_build_620) dm_build_141() (interface{}, error) { + + dm_build_628.dm_build_155.id = dm_build_628.dm_build_152.dm_build_1348.Dm_build_1282(Dm_build_45) + + dm_build_628.dm_build_155.readBaseColName = dm_build_628.dm_build_152.dm_build_1348.Dm_build_1276(Dm_build_44) == 1 + return nil, nil +} + +type dm_build_629 struct { + dm_build_151 + dm_build_630 int32 +} + +func dm_build_631(dm_build_632 *dm_build_1345, dm_build_633 int32) *dm_build_629 { + dm_build_634 := new(dm_build_629) + dm_build_634.dm_build_156(dm_build_632, Dm_build_19) + dm_build_634.dm_build_630 = dm_build_633 + return dm_build_634 +} + +func (dm_build_636 *dm_build_629) dm_build_138() { + dm_build_636.dm_build_151.dm_build_138() + dm_build_636.dm_build_152.dm_build_1348.Dm_build_1204(Dm_build_45, dm_build_636.dm_build_630) +} + +type dm_build_637 struct { + dm_build_151 + dm_build_638 []uint32 +} + +func dm_build_639(dm_build_640 *dm_build_1345, dm_build_641 []uint32) *dm_build_637 { + dm_build_642 := new(dm_build_637) + dm_build_642.dm_build_156(dm_build_640, Dm_build_39) + dm_build_642.dm_build_638 = dm_build_641 + return dm_build_642 +} + +func (dm_build_644 *dm_build_637) dm_build_137() error { + + dm_build_644.dm_build_152.dm_build_1348.Dm_build_1224(Dm_build_44, uint16(len(dm_build_644.dm_build_638))) + + for _, tableID := range dm_build_644.dm_build_638 { + dm_build_644.dm_build_152.dm_build_1348.Dm_build_1076(uint32(tableID)) + } + + return nil +} + +func (dm_build_646 *dm_build_637) dm_build_141() (interface{}, error) { + dm_build_647 := dm_build_646.dm_build_152.dm_build_1348.Dm_build_1297(Dm_build_44) + if dm_build_647 <= 0 { + return nil, nil + } + + dm_build_648 := make([]int64, dm_build_647) + for i := 0; i < int(dm_build_647); i++ { + dm_build_648[i] = dm_build_646.dm_build_152.dm_build_1348.Dm_build_1141() + } + + return dm_build_648, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/zr.go b/vendor/gitee.com/chunanyong/dm/zr.go new file mode 100644 index 000000000..9db4559a2 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zr.go @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "io" +) + +const ( + READ_LEN = Dm_build_127 +) + +type iOffRowBinder interface { + read(buf *Dm_build_931) + isReadOver() bool + getObj() interface{} +} + +type offRowBinder struct { + obj interface{} + encoding string + readOver bool + buffer *Dm_build_931 + position int32 + offRow bool + targetLength int64 +} + +func newOffRowBinder(obj interface{}, encoding string, targetLength int64) *offRowBinder { + return &offRowBinder{ + obj: obj, + encoding: encoding, + targetLength: targetLength, + readOver: false, + buffer: Dm_build_935(), + position: 0, + } +} + +type offRowBytesBinder struct { + *offRowBinder +} + +func newOffRowBytesBinder(obj []byte, encoding string) *offRowBytesBinder { + var binder = &offRowBytesBinder{ + newOffRowBinder(obj, encoding, int64(IGNORE_TARGET_LENGTH)), + } + binder.read(binder.buffer) + binder.offRow = binder.buffer.Dm_build_936() > Dm_build_124 + return binder +} + +func (b *offRowBytesBinder) read(buf *Dm_build_931) { + if b.buffer.Dm_build_936() > 0 { + buf.Dm_build_968(b.buffer) + } else if !b.readOver { + var obj = b.obj.([]byte) + buf.Dm_build_957(obj, 0, len(obj)) + b.readOver = true + } +} + +func (b *offRowBytesBinder) isReadOver() bool { + return b.readOver +} + +func (b *offRowBytesBinder) getObj() interface{} { + return b.obj +} + +type offRowBlobBinder struct { + *offRowBinder +} + +func newOffRowBlobBinder(blob DmBlob, encoding string) *offRowBlobBinder { + var binder = &offRowBlobBinder{ + newOffRowBinder(blob, encoding, int64(IGNORE_TARGET_LENGTH)), + } + binder.read(binder.buffer) + binder.offRow = binder.buffer.Dm_build_936() > Dm_build_124 + return binder +} + +func (b *offRowBlobBinder) read(buf *Dm_build_931) { + if b.buffer.Dm_build_936() > 0 { + buf.Dm_build_968(b.buffer) + } else if !b.readOver { + var obj = b.obj.(DmBlob) + var totalLen, _ = obj.GetLength() + var leaveLen = totalLen - int64(b.position) + var readLen = int32(leaveLen) + if leaveLen > READ_LEN { + readLen = READ_LEN + } + var bytes, _ = obj.getBytes(int64(b.position)+1, readLen) + b.position += readLen + if b.position == int32(totalLen) { + b.readOver = true + } + buf.Dm_build_957(bytes, 0, len(bytes)) + } +} + +func (b *offRowBlobBinder) isReadOver() bool { + return b.readOver +} + +func (b *offRowBlobBinder) getObj() interface{} { + return b.obj +} + +type offRowClobBinder struct { + *offRowBinder +} + +func newOffRowClobBinder(clob DmClob, encoding string) *offRowClobBinder { + var binder = &offRowClobBinder{ + newOffRowBinder(clob, encoding, int64(IGNORE_TARGET_LENGTH)), + } + binder.read(binder.buffer) + binder.offRow = binder.buffer.Dm_build_936() > Dm_build_124 + return binder +} + +func (b *offRowClobBinder) read(buf *Dm_build_931) { + if b.buffer.Dm_build_936() > 0 { + buf.Dm_build_968(b.buffer) + } else if !b.readOver { + var obj = b.obj.(DmClob) + var totalLen, _ = obj.GetLength() + var leaveLen = totalLen - int64(b.position) + var readLen = int32(leaveLen) + if leaveLen > READ_LEN { + readLen = READ_LEN + } + var str, _ = obj.getSubString(int64(b.position)+1, readLen) + var bytes = Dm_build_650.Dm_build_866(str, b.encoding, nil) + b.position += readLen + if b.position == int32(totalLen) { + b.readOver = true + } + buf.Dm_build_957(bytes, 0, len(bytes)) + } +} + +func (b *offRowClobBinder) isReadOver() bool { + return b.readOver +} + +func (b *offRowClobBinder) getObj() interface{} { + return b.obj +} + +type offRowReaderBinder struct { + *offRowBinder +} + +func newOffRowReaderBinder(reader io.Reader, encoding string) *offRowReaderBinder { + var binder = &offRowReaderBinder{ + newOffRowBinder(reader, encoding, int64(IGNORE_TARGET_LENGTH)), + } + binder.read(binder.buffer) + binder.offRow = binder.buffer.Dm_build_936() > Dm_build_124 + return binder +} + +func (b *offRowReaderBinder) read(buf *Dm_build_931) { + if b.buffer.Dm_build_936() > 0 { + buf.Dm_build_968(b.buffer) + } else if !b.readOver { + var err error + var readLen = READ_LEN + var reader = b.obj.(io.Reader) + var bytes = make([]byte, readLen) + readLen, err = reader.Read(bytes) + if err == io.EOF { + b.readOver = true + return + } + b.position += int32(readLen) + if readLen < len(bytes) || b.targetLength != int64(IGNORE_TARGET_LENGTH) && int64(b.position) == b.targetLength { + b.readOver = true + } + buf.Dm_build_957(bytes[0:readLen], 0, readLen) + } +} + +func (b *offRowReaderBinder) readAll() []byte { + var byteArray = Dm_build_935() + b.read(byteArray) + for !b.readOver { + b.read(byteArray) + } + return byteArray.Dm_build_978() +} + +func (b *offRowReaderBinder) isReadOver() bool { + return b.readOver +} + +func (b *offRowReaderBinder) getObj() interface{} { + return b.obj +} diff --git a/vendor/gitee.com/chunanyong/dm/zs.go b/vendor/gitee.com/chunanyong/dm/zs.go new file mode 100644 index 000000000..316b43101 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zs.go @@ -0,0 +1,882 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "fmt" + "math" + "strconv" + "strings" + "time" + "unicode" + "unicode/utf8" + + "gitee.com/chunanyong/dm/util" +) + +type oracleDateFormat struct { + PM bool + TZNegative bool + pattern string + language int + scale int32 + FormatElementList []interface{} + YearElement yearElement + MonthElement monthElement + MonElement monElement + MMElement mmElement + DDElement ddElement + HH24Element hh24Element + HH12Element hh12Element + MIElement miElement + SSElement ssElement + FElement fElement + TZHElement tzhElement + TZMElement tzmElement + AMElement amElement +} + +type element interface { + /** + * 从字符串中解析出对应的值, + * @param str 完整的字符串 + * @param offset 当前偏移 + * @return 解析后的offset + */ + parse(str string, offset int, dt []int) (int, error) + + /** + * 将时间值value格式化成字符串 + */ + format(dt []int) string +} + +type yearElement struct { + OracleDateFormat *oracleDateFormat + len int +} + +func (YearElement yearElement) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + for i := offset; i < offset+YearElement.len && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + if YearElement.len < 4 { + today := strconv.FormatInt(int64(dt[OFFSET_YEAR]), 10) + i, err := strconv.ParseInt(today[:4-YearElement.len]+str, 10, 32) + if err != nil { + return 0, err + } + dt[OFFSET_YEAR] = int(i) + } else { + i, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return 0, err + } + dt[OFFSET_YEAR] = int(i) + } + + return offset + strLen, nil +} + +func (YearElement yearElement) format(dt []int) string { + return YearElement.OracleDateFormat.formatInt(dt[OFFSET_YEAR], YearElement.len) +} + +type monthElement struct { + OracleDateFormat *oracleDateFormat + upperCase bool + lowerCase bool +} + +var monthNameList = []string{"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"} + +func (MonthElement monthElement) parse(str string, offset int, dt []int) (int, error) { + + if MonthElement.OracleDateFormat.language == LANGUAGE_CN { + index := strings.IndexRune(str[offset:], '月') + if index == -1 { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + index += offset + + mon, err := strconv.ParseInt(str[offset:index], 10, 32) + if err != nil { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + + if mon > 12 || mon < 1 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_MONTH] = int(mon) + return index + utf8.RuneLen('月'), nil + } else { + str = str[offset:] + mon := 0 + for i := 1; i < len(monthNameList); i++ { + if util.StringUtil.StartWithIgnoreCase(str, monthNameList[i]) { + mon = i + break + } + } + if mon == 0 { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + dt[OFFSET_MONTH] = mon + return offset + len(monthNameList[mon]), nil + } +} + +func (MonthElement monthElement) format(dt []int) string { + value := dt[OFFSET_MONTH] + + if MonthElement.OracleDateFormat.language == LANGUAGE_CN { + return strconv.FormatInt(int64(value), 10) + "月" + } + + if MonthElement.upperCase { + return strings.ToUpper(monthNameList[value]) + } else if MonthElement.lowerCase { + return strings.ToLower(monthNameList[value]) + } else { + return monthNameList[value] + } + +} + +type monElement struct { + OracleDateFormat *oracleDateFormat + upperCase bool + lowerCase bool +} + +var monNameList []string = []string{"", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} + +func (MonElement monElement) parse(str string, offset int, dt []int) (int, error) { + + if MonElement.OracleDateFormat.language == LANGUAGE_CN { + index := strings.IndexRune(str[offset:], '月') + offset + if index == -1+offset { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + + mon, err := strconv.ParseInt(str[offset:index], 10, 32) + if err != nil { + return -1, err + } + + if mon > 12 || mon < 1 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_MONTH] = int(mon) + return index + utf8.RuneLen('月'), nil + } else { + str = str[offset : offset+3] + mon := 0 + for i := 1; i < len(monNameList); i++ { + if util.StringUtil.EqualsIgnoreCase(str, monNameList[i]) { + mon = i + break + } + } + if mon == 0 { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + dt[OFFSET_MONTH] = mon + return offset + 3, nil + } + +} + +func (MonElement monElement) format(dt []int) string { + value := dt[OFFSET_MONTH] + language := int(0) + if language == LANGUAGE_CN { + return strconv.FormatInt(int64(value), 10) + "月" + } + + if MonElement.upperCase { + return strings.ToUpper(monNameList[value]) + } else if MonElement.lowerCase { + return strings.ToLower(monNameList[value]) + } else { + return monNameList[value] + } +} + +type mmElement struct { + OracleDateFormat *oracleDateFormat +} + +func (MMElement mmElement) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + month, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, ECGO_INVALID_DATETIME_FORMAT.throw() + } + + if month > 12 || month < 1 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_MONTH] = int(month) + return offset + strLen, nil +} + +func (MMElement mmElement) format(dt []int) string { + return MMElement.OracleDateFormat.formatInt(dt[OFFSET_MONTH], 2) +} + +type ddElement struct { + OracleDateFormat *oracleDateFormat +} + +func (DDElement ddElement) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + day, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + + if day > 31 || day < 1 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_DAY] = int(day) + return offset + strLen, nil +} + +func (DDElement ddElement) format(dt []int) string { + return DDElement.OracleDateFormat.formatInt(dt[OFFSET_DAY], 2) +} + +type hh24Element struct { + OracleDateFormat *oracleDateFormat +} + +func (HH24Element hh24Element) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + hour, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + + if hour > 23 || hour < 0 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_HOUR] = int(hour) // 0-23 + return offset + strLen, nil +} + +func (HH24Element hh24Element) format(dt []int) string { + return HH24Element.OracleDateFormat.formatInt(dt[OFFSET_HOUR], 2) // 0-23 +} + +type hh12Element struct { + OracleDateFormat *oracleDateFormat +} + +func (HH12Element hh12Element) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + hour, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + + if hour > 12 || hour < 1 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_HOUR] = int(hour) + return offset + strLen, nil +} + +func (HH12Element hh12Element) format(dt []int) string { + var ret string + value := dt[OFFSET_HOUR] + if value > 12 || value == 0 { + ret = HH12Element.OracleDateFormat.formatInt(int(math.Abs(float64(value-12))), 2) // 1-12 + } else { + ret = HH12Element.OracleDateFormat.formatInt(value, 2) + } + return ret +} + +type miElement struct { + OracleDateFormat *oracleDateFormat +} + +func (MIElement miElement) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + minute, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + + if minute > 59 || minute < 0 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_MINUTE] = int(minute) // 0-59 + return offset + strLen, nil +} + +func (MIElement miElement) format(dt []int) string { + return MIElement.OracleDateFormat.formatInt(dt[OFFSET_MINUTE], 2) // 0-59 +} + +type ssElement struct { + OracleDateFormat *oracleDateFormat +} + +func (SSElement ssElement) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + second, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + + if second > 59 || second < 0 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + dt[OFFSET_SECOND] = int(second) // 0-59 + return offset + strLen, nil +} + +func (SSElement ssElement) format(dt []int) string { + return SSElement.OracleDateFormat.formatInt(dt[OFFSET_SECOND], 2) // 0-59 +} + +type fElement struct { + OracleDateFormat *oracleDateFormat + len int +} + +func (FElement fElement) parse(str string, offset int, dt []int) (int, error) { + strLen := 0 + maxLen := 0 + if FElement.len > 0 { + maxLen = FElement.len + } else { + maxLen = NANOSECOND_DIGITS + } + for i := offset; i < offset+maxLen && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + ms, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + + if strLen < NANOSECOND_DIGITS { + ms *= int64(math.Pow10(NANOSECOND_DIGITS - strLen)) + } else { + ms /= int64(math.Pow10(strLen - NANOSECOND_DIGITS)) + } + + dt[OFFSET_NANOSECOND] = int(ms) + return offset + strLen, nil +} + +func (FElement fElement) format(dt []int) string { + msgLen := 0 + if FElement.len > 0 { + msgLen = FElement.len + } else { + msgLen = int(FElement.OracleDateFormat.scale) + } + return FElement.OracleDateFormat.formatMilliSecond(dt[OFFSET_NANOSECOND], msgLen) +} + +type tzhElement struct { + OracleDateFormat *oracleDateFormat +} + +func (TZHElement tzhElement) parse(str string, offset int, dt []int) (int, error) { + if str[offset] == '+' { + offset += 1 + } else if str[offset] == '-' { + offset += 1 + TZHElement.OracleDateFormat.TZNegative = true + } + + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + + tzh, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + + if tzh > 23 || tzh < 0 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + + tzh *= 60 + if dt[OFFSET_TIMEZONE] == int(INVALID_VALUE) { + dt[OFFSET_TIMEZONE] = int(tzh) + } else { + dt[OFFSET_TIMEZONE] += int(tzh) + } + + return offset + strLen, nil +} + +func (TZHElement tzhElement) format(dt []int) string { + var value int + if dt[OFFSET_TIMEZONE] != int(INVALID_VALUE) { + value = int(math.Abs(float64(dt[OFFSET_TIMEZONE]))) / 60 + } else { + value = 0 + } + + return TZHElement.OracleDateFormat.formatInt(value, 2) +} + +type tzmElement struct { + OracleDateFormat *oracleDateFormat +} + +func (TZMElement tzmElement) parse(str string, offset int, dt []int) (int, error) { + if str[offset] == '+' { + offset += 1 + } else if str[offset] == '-' { + offset += 1 + TZMElement.OracleDateFormat.TZNegative = true + } + + strLen := 0 + for i := offset; i < offset+2 && i < len(str); i++ { + if !unicode.IsLetter(rune(str[i])) && !unicode.IsDigit(rune(str[i])) { + break + } + strLen++ + } + str = str[offset : offset+strLen] + + tzm, err := strconv.ParseInt(str, 10, 32) + if err != nil { + return -1, err + } + if tzm > 59 || tzm < 0 { + return -1, ECGO_INVALID_DATETIME_VALUE.throw() + } + + if dt[OFFSET_TIMEZONE] == INVALID_VALUE { + dt[OFFSET_TIMEZONE] = int(tzm) + } else { + dt[OFFSET_TIMEZONE] += int(tzm) + } + return offset + strLen, nil +} + +func (TZMElement tzmElement) format(dt []int) string { + var value int + if dt[OFFSET_TIMEZONE] != int(INVALID_VALUE) { + value = int(math.Abs(float64(dt[OFFSET_TIMEZONE]))) % 60 + } else { + value = 0 + } + + return TZMElement.OracleDateFormat.formatInt(value, 2) +} + +type amElement struct { + OracleDateFormat *oracleDateFormat +} + +func (AMElement amElement) parse(str string, offset int, dt []int) (int, error) { + runeStr := ([]rune(str))[offset : offset+2] + + if AMElement.OracleDateFormat.language == LANGUAGE_CN { + if util.StringUtil.EqualsIgnoreCase("下午", string(runeStr)) { + AMElement.OracleDateFormat.PM = true + return offset + utf8.RuneLen('下') + utf8.RuneLen('午'), nil + } else { + AMElement.OracleDateFormat.PM = false + return offset + utf8.RuneLen('上') + utf8.RuneLen('午'), nil + } + + } else if util.StringUtil.EqualsIgnoreCase("PM", string(runeStr)) { + AMElement.OracleDateFormat.PM = true + } else { + AMElement.OracleDateFormat.PM = false + } + + return offset + 2, nil +} + +func (AMElement amElement) format(dt []int) string { + hour := dt[OFFSET_HOUR] + language := int(0) + if language == LANGUAGE_CN { + if hour > 12 { + return "下午" + } else { + return "上午" + } + } + + if hour > 12 { + return "PM" + } else { + return "AM" + } +} + +/** + * 将int值格式化成指定长度,长度不足前面补0,长度超过的取末尾指定长度 + */ +func (OracleDateFormat *oracleDateFormat) formatInt(value int, len int) string { + pow := int(math.Pow10(len)) + if value >= pow { + value %= pow + } + value += pow + return strconv.FormatInt(int64(value), 10)[1:] +} + +/** + * 格式化毫秒值 + * @param ms + * @param len <= 6 + */ +func (OracleDateFormat *oracleDateFormat) formatMilliSecond(ms int, len int) string { + var ret string + if ms < 10 { + ret = "00000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 100 { + ret = "0000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 1000 { + ret = "000" + strconv.FormatInt(int64(ms), 10) + } else if ms < 10000 { + ret = "00" + strconv.FormatInt(int64(ms), 10) + } else if ms < 100000 { + ret = "0" + strconv.FormatInt(int64(ms), 10) + } else { + ret = strconv.FormatInt(int64(ms), 10) + } + + if len < 6 { + ret = ret[:len] + } + return ret +} + +func getFormat() *oracleDateFormat { + format := new(oracleDateFormat) + format.PM = false + format.TZNegative = false + format.YearElement = yearElement{format, 4} + format.MonthElement = monthElement{format, false, false} + format.MonElement = monElement{format, false, false} + format.MMElement = mmElement{format} + format.DDElement = ddElement{format} + format.HH24Element = hh24Element{format} + format.HH12Element = hh12Element{format} + format.MIElement = miElement{format} + format.SSElement = ssElement{format} + format.FElement = fElement{format, -1} + format.TZHElement = tzhElement{format} + format.TZMElement = tzmElement{format} + format.AMElement = amElement{format} + + return format +} + +func (OracleDateFormat *oracleDateFormat) parse(str string) (ret []int, err error) { + defer func() { + if p := recover(); p != nil { + err = ECGO_INVALID_DATETIME_FORMAT.throw() + } + }() + OracleDateFormat.TZNegative = false + OracleDateFormat.PM = false + dt := make([]int, DT_LEN) + // oracle默认年月日为 当前时间 + today := time.Now() + dt[OFFSET_YEAR] = today.Year() + dt[OFFSET_MONTH] = int(today.Month()) + dt[OFFSET_DAY] = today.Day() + dt[OFFSET_TIMEZONE] = INVALID_VALUE + offset := 0 + str = strings.TrimSpace(str) + for _, obj := range OracleDateFormat.FormatElementList { + // 跳过空格 + for str[offset] == ' ' && fmt.Sprintf("%+v", obj) != " " { + offset++ + } + if e, ok := obj.(element); ok { + offset, err = e.parse(str, offset, dt) + if err != nil { + return nil, err + } + } else { + offset += len(obj.(string)) + } + } + if offset < len(str) { + //[6103]:文字与格式字符串不匹配. + return nil, ECGO_INVALID_DATETIME_VALUE.throw() + } + + // 12小时制时间转换 + if OracleDateFormat.PM { + dt[OFFSET_HOUR] = (dt[OFFSET_HOUR] + 12) % 24 + } + + // 时区符号保留 + if OracleDateFormat.TZNegative { + dt[OFFSET_TIMEZONE] = -dt[OFFSET_TIMEZONE] + } + + // check day + if dt[OFFSET_DAY] > getDaysOfMonth(dt[OFFSET_YEAR], dt[OFFSET_MONTH]) || dt[OFFSET_DAY] < 1 { + return nil, ECGO_INVALID_DATETIME_VALUE.throw() + } + // check timezone 兼容oracle + if dt[OFFSET_TIMEZONE] != INVALID_VALUE && (dt[OFFSET_TIMEZONE] > 14*60 || dt[OFFSET_TIMEZONE] <= -13*60) { + return nil, ECGO_INVALID_DATETIME_VALUE.throw() + } + return dt, nil +} + +func parse(str string, pattern string, language int) ([]int, error) { + f := getFormat() + f.setPattern(pattern) + f.language = language + return f.parse(str) +} + +func (OracleDateFormat *oracleDateFormat) setPattern(pattern string) { + if pattern != OracleDateFormat.pattern { + OracleDateFormat.pattern = pattern + OracleDateFormat.FormatElementList = OracleDateFormat.FormatElementList[:0] + OracleDateFormat.analysePattern(pattern) + } +} + +func format(dt []int, pattern string, scale int32, language int) string { + f := getFormat() + f.setPattern(pattern) + f.language = language + f.scale = scale + ret := f.format(dt) + return ret +} + +func (OracleDateFormat *oracleDateFormat) format(dt []int) string { + sf := strings.Builder{} + tzStart := false + for _, obj := range OracleDateFormat.FormatElementList { + _, ok1 := obj.(tzhElement) + _, ok2 := obj.(tzmElement) + if !tzStart && (ok1 || ok2) { + tzStart = true + if dt[OFFSET_TIMEZONE] < 0 { + sf.WriteString("-") + } else { + sf.WriteString("+") + } + } + + if e, ok := obj.(element); ok { + sf.WriteString(e.format(dt)) + } else { + sf.WriteString(obj.(string)) + } + } + return sf.String() +} + +/** + * 解析格式串 + */ +func (OracleDateFormat *oracleDateFormat) analysePattern(pattern string) ([]interface{}, error) { + + // 按分隔符split + pattern = strings.TrimSpace(pattern) + l := len(pattern) + var splitPatterns []string + starti := 0 + var curChar rune + for i := 0; i < l; i++ { + curChar = rune(pattern[i]) + if !unicode.IsDigit(curChar) && !unicode.IsLetter(curChar) { + if i > starti { + splitPatterns = append(splitPatterns, pattern[starti:i]) + } + + splitPatterns = append(splitPatterns, string(curChar)) + starti = i + 1 + } else if i == l-1 { + splitPatterns = append(splitPatterns, pattern[starti:i+1]) + } + } + + // 每个串按照从完整串,然后依次去掉一个末尾字符 来进行尝试规约 + for _, subPattern := range splitPatterns { + if len(subPattern) != 1 || unicode.IsDigit(rune(subPattern[0])) || unicode.IsLetter(rune(subPattern[0])) { + fmtWord := subPattern + for subPattern != "" { + i := len(subPattern) + for ; i > 0; i-- { + fmtWord = subPattern[0:i] + element, err := OracleDateFormat.getFormatElement(fmtWord) + if err != nil { + return nil, err + } + if element != nil { + // 忽略时区前面的+-号 + if element == OracleDateFormat.TZHElement || element == OracleDateFormat.TZMElement { + var lastFormatElement string = OracleDateFormat.FormatElementList[len(OracleDateFormat.FormatElementList)-1].(string) + if util.StringUtil.Equals("+", lastFormatElement) || util.StringUtil.Equals("-", lastFormatElement) { + OracleDateFormat.FormatElementList = OracleDateFormat.FormatElementList[:len(OracleDateFormat.FormatElementList)-2] + } + } + OracleDateFormat.FormatElementList = append(OracleDateFormat.FormatElementList, element) + if i == len(subPattern) { + subPattern = "" + } else { + subPattern = subPattern[i:len(subPattern)] + } + break + } + } + + if i == 0 { + // 非标识符串 + OracleDateFormat.FormatElementList = append(OracleDateFormat.FormatElementList, subPattern) + break + } + } + + } else { + OracleDateFormat.FormatElementList = append(OracleDateFormat.FormatElementList, subPattern) + } + } + return OracleDateFormat.FormatElementList, nil +} + +func (OracleDateFormat *oracleDateFormat) getFormatElement(word string) (element, error) { + if util.StringUtil.EqualsIgnoreCase("HH", word) || util.StringUtil.EqualsIgnoreCase("HH12", word) { + return OracleDateFormat.HH12Element, nil + } else if util.StringUtil.EqualsIgnoreCase("HH24", word) { + return OracleDateFormat.HH24Element, nil + } else if util.StringUtil.EqualsIgnoreCase("MI", word) { + return OracleDateFormat.MIElement, nil + } else if util.StringUtil.EqualsIgnoreCase("SS", word) { + return OracleDateFormat.SSElement, nil + } else if util.StringUtil.EqualsIgnoreCase("AM", word) || util.StringUtil.EqualsIgnoreCase("A.M.", word) || util.StringUtil.EqualsIgnoreCase("PM", word) || util.StringUtil.EqualsIgnoreCase("P.M.", word) { + return OracleDateFormat.AMElement, nil + } else if util.StringUtil.Equals("MONTH", word) { + OracleDateFormat.MonthElement.upperCase = true + OracleDateFormat.MonthElement.lowerCase = false + return OracleDateFormat.MonthElement, nil + } else if util.StringUtil.Equals("month", word) { + OracleDateFormat.MonthElement.upperCase = false + OracleDateFormat.MonthElement.lowerCase = true + return OracleDateFormat.MonthElement, nil + } else if util.StringUtil.EqualsIgnoreCase("Month", word) { + OracleDateFormat.MonthElement.upperCase = false + OracleDateFormat.MonthElement.lowerCase = false + return OracleDateFormat.MonthElement, nil + } else if util.StringUtil.Equals("MON", word) { + OracleDateFormat.MonElement.upperCase = true + OracleDateFormat.MonElement.lowerCase = false + return OracleDateFormat.MonElement, nil + } else if util.StringUtil.Equals("mon", word) { + OracleDateFormat.MonElement.upperCase = false + OracleDateFormat.MonElement.lowerCase = true + return OracleDateFormat.MonElement, nil + } else if util.StringUtil.EqualsIgnoreCase("Mon", word) { + OracleDateFormat.MonElement.upperCase = false + OracleDateFormat.MonElement.lowerCase = false + return OracleDateFormat.MonElement, nil + } else if util.StringUtil.EqualsIgnoreCase("MM", word) { + return OracleDateFormat.MMElement, nil + } else if util.StringUtil.EqualsIgnoreCase("DD", word) { + return OracleDateFormat.DDElement, nil + } else if util.StringUtil.EqualsIgnoreCase("TZH", word) { + return OracleDateFormat.TZHElement, nil + } else if util.StringUtil.EqualsIgnoreCase("TZM", word) { + return OracleDateFormat.TZMElement, nil + } else if strings.Index(word, "Y") == 0 || strings.Index(word, "y") == 0 { + OracleDateFormat.YearElement.len = len(word) + return OracleDateFormat.YearElement, nil + } else if strings.Index(word, "F") == 0 || strings.Index(word, "f") == 0 { + + word = strings.ToUpper(word) + numIndex := strings.LastIndex(word, "F") + 1 + var count int64 + var err error + if numIndex < len(word) { + count, err = strconv.ParseInt(word[numIndex:len(word)], 10, 32) + if err != nil { + return nil, err + } + } else { + count = -1 + } + + OracleDateFormat.FElement.len = int(count) + return OracleDateFormat.FElement, nil + } + + return nil, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/zv.go b/vendor/gitee.com/chunanyong/dm/zv.go new file mode 100644 index 000000000..3029be0a7 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zv.go @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "strconv" + "strings" +) + +type Properties struct { + innerProps map[string]string +} + +func NewProperties() *Properties { + p := Properties{ + innerProps: make(map[string]string, 50), + } + return &p +} + +func (g *Properties) SetProperties(p *Properties) { + if p == nil { + return + } + for k, v := range p.innerProps { + g.Set(strings.ToLower(k), v) + } +} + +func (g *Properties) Len() int { + return len(g.innerProps) +} + +func (g *Properties) IsNil() bool { + return g == nil || g.innerProps == nil +} + +func (g *Properties) GetString(key, def string) string { + v, ok := g.innerProps[strings.ToLower(key)] + + if !ok || v == "" { + return def + } + return v +} + +func (g *Properties) GetInt(key string, def int, min int, max int) int { + value, ok := g.innerProps[strings.ToLower(key)] + if !ok || value == "" { + return def + } + + i, err := strconv.Atoi(value) + if err != nil { + return def + } + + if i > max || i < min { + return def + } + return i +} + +func (g *Properties) GetBool(key string, def bool) bool { + value, ok := g.innerProps[strings.ToLower(key)] + if !ok || value == "" { + return def + } + b, err := strconv.ParseBool(value) + if err != nil { + return def + } + return b +} + +func (g *Properties) GetTrimString(key string, def string) string { + value, ok := g.innerProps[strings.ToLower(key)] + if !ok || value == "" { + return def + } else { + return strings.TrimSpace(value) + } +} + +func (g *Properties) GetStringArray(key string, def []string) []string { + value, ok := g.innerProps[strings.ToLower(key)] + if ok || value != "" { + array := strings.Split(value, ",") + if len(array) > 0 { + return array + } + } + return def +} + +//func (g *Properties) GetBool(key string) bool { +// i, _ := strconv.ParseBool(g.innerProps[key]) +// return i +//} + +func (g *Properties) Set(key, value string) { + g.innerProps[strings.ToLower(key)] = value +} + +func (g *Properties) SetIfNotExist(key, value string) { + if _, ok := g.innerProps[strings.ToLower(key)]; !ok { + g.Set(key, value) + } +} + +// 如果p有g没有的键值对,添加进g中 +func (g *Properties) SetDiffProperties(p *Properties) { + if p == nil { + return + } + for k, v := range p.innerProps { + if _, ok := g.innerProps[strings.ToLower(k)]; !ok { + g.innerProps[strings.ToLower(k)] = v + } + } +} diff --git a/vendor/gitee.com/chunanyong/dm/zw.go b/vendor/gitee.com/chunanyong/dm/zw.go new file mode 100644 index 000000000..d84d81d1a --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zw.go @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "math/rand" + "strconv" + "time" + + "gitee.com/chunanyong/dm/util" +) + +var rwMap = make(map[string]*rwCounter) + +type rwCounter struct { + ntrx_primary int64 + + ntrx_total int64 + + primaryPercent float64 + + standbyPercent float64 + + standbyNTrxMap map[string]int64 + + standbyIdMap map[string]int32 + + standbyCount int32 + + flag []int32 + + increments []int32 +} + +func newRWCounter(primaryPercent int32, standbyCount int32) *rwCounter { + rwc := new(rwCounter) + rwc.standbyNTrxMap = make(map[string]int64) + rwc.standbyIdMap = make(map[string]int32) + rwc.reset(primaryPercent, standbyCount) + return rwc +} + +func (rwc *rwCounter) reset(primaryPercent int32, standbyCount int32) { + rwc.ntrx_primary = 0 + rwc.ntrx_total = 0 + rwc.standbyCount = standbyCount + rwc.increments = make([]int32, standbyCount+1) + rwc.flag = make([]int32, standbyCount+1) + var gcd = util.GCD(primaryPercent*standbyCount, 100-primaryPercent) + rwc.increments[0] = primaryPercent * standbyCount / gcd + for i, tmp := 1, (100-primaryPercent)/gcd; i < len(rwc.increments); i++ { + rwc.increments[i] = tmp + } + copy(rwc.flag, rwc.increments) + + if standbyCount > 0 { + rwc.primaryPercent = float64(primaryPercent) / 100.0 + rwc.standbyPercent = float64(100-primaryPercent) / 100.0 / float64(standbyCount) + } else { + rwc.primaryPercent = 1 + rwc.standbyPercent = 0 + } +} + +// 连接创建成功后调用,需要服务器返回standbyCount +func getRwCounterInstance(conn *DmConnection, standbyCount int32) *rwCounter { + key := conn.dmConnector.host + "_" + strconv.Itoa(int(conn.dmConnector.port)) + "_" + strconv.Itoa(int(conn.dmConnector.rwPercent)) + + rwc, ok := rwMap[key] + if !ok { + rwc = newRWCounter(conn.dmConnector.rwPercent, standbyCount) + rwMap[key] = rwc + } else if rwc.standbyCount != standbyCount { + rwc.reset(conn.dmConnector.rwPercent, standbyCount) + } + return rwc +} + +/** +* @return 主机; + */ +func (rwc *rwCounter) countPrimary() RWSiteEnum { + rwc.adjustNtrx() + rwc.increasePrimaryNtrx() + return PRIMARY +} + +/** +* @param dest 主机; 备机; any; +* @return 主机; 备机 + */ +func (rwc *rwCounter) count(dest RWSiteEnum, standby *DmConnection) RWSiteEnum { + rwc.adjustNtrx() + switch dest { + case ANYSITE: + { + if rwc.primaryPercent == 1 || (rwc.flag[0] > rwc.getStandbyFlag(standby) && rwc.flag[0] > util.Sum(rwc.flag[1:])) { + rwc.increasePrimaryNtrx() + dest = PRIMARY + } else { + rwc.increaseStandbyNtrx(standby) + dest = STANDBY + } + } + case STANDBY: + { + rwc.increaseStandbyNtrx(standby) + } + case PRIMARY: + { + rwc.increasePrimaryNtrx() + } + } + return dest +} + +/** +* 防止ntrx超出有效范围,等比调整 + */ +func (rwc *rwCounter) adjustNtrx() { + if rwc.ntrx_total >= INT64_MAX { + var min int64 + var i = 0 + for _, num := range rwc.standbyNTrxMap { + if i == 0 || num < min { + min = num + } + i++ + } + if rwc.ntrx_primary < min { + min = rwc.ntrx_primary + } + rwc.ntrx_primary /= min + rwc.ntrx_total /= min + for k, v := range rwc.standbyNTrxMap { + rwc.standbyNTrxMap[k] = v / min + } + } + + if rwc.flag[0] <= 0 && util.Sum(rwc.flag[1:]) <= 0 { + // 如果主库事务数以及所有备库事务数的总和 都 <= 0, 重置事务计数,给每个库的事务计数加上初始计数值 + for i := 0; i < len(rwc.flag); i++ { + rwc.flag[i] += rwc.increments[i] + } + } +} + +func (rwc *rwCounter) increasePrimaryNtrx() { + rwc.ntrx_primary++ + rwc.flag[0]-- + rwc.ntrx_total++ +} + +//func (rwc *rwCounter) getStandbyNtrx(standby *DmConnection) int64 { +// key := standby.dmConnector.host + ":" + strconv.Itoa(int(standby.dmConnector.port)) +// ret, ok := rwc.standbyNTrxMap[key] +// if !ok { +// ret = 0 +// } +// +// return ret +//} + +func (rwc *rwCounter) getStandbyId(standby *DmConnection) int32 { + key := standby.dmConnector.host + ":" + strconv.Itoa(int(standby.dmConnector.port)) + sid, ok := rwc.standbyIdMap[key] + if !ok { + sid = int32(len(rwc.standbyIdMap) + 1) // 下标0是primary + if sid > rwc.standbyCount { + // 不在有效备库中 + return -1 + } + rwc.standbyIdMap[key] = sid + } + return sid +} + +func (rwc *rwCounter) getStandbyFlag(standby *DmConnection) int32 { + sid := rwc.getStandbyId(standby) + if sid > 0 && sid < int32(len(rwc.flag)) { + // 保证备库有效 + return rwc.flag[sid] + } + return 0 +} + +func (rwc *rwCounter) increaseStandbyNtrx(standby *DmConnection) { + key := standby.dmConnector.host + ":" + strconv.Itoa(int(standby.dmConnector.port)) + ret, ok := rwc.standbyNTrxMap[key] + if ok { + ret += 1 + } else { + ret = 1 + } + rwc.standbyNTrxMap[key] = ret + sid, ok := rwc.standbyIdMap[key] + if !ok { + sid = int32(len(rwc.standbyIdMap) + 1) // 下标0是primary + rwc.standbyIdMap[key] = sid + } + rwc.flag[sid]-- + rwc.ntrx_total++ +} + +func (rwc *rwCounter) random(rowCount int32) int32 { + rand.Seed(time.Now().UnixNano()) + if rowCount > rwc.standbyCount { + return rand.Int31n(rwc.standbyCount) + } else { + return rand.Int31n(rowCount) + } +} + +func (rwc *rwCounter) String() string { + return "PERCENT(P/S) : " + strconv.FormatFloat(rwc.primaryPercent, 'f', -1, 64) + "/" + strconv.FormatFloat(rwc.standbyPercent, 'f', -1, 64) + "\nNTRX_PRIMARY : " + + strconv.FormatInt(rwc.ntrx_primary, 10) + "\nNTRX_TOTAL : " + strconv.FormatInt(rwc.ntrx_total, 10) + "\nNTRX_STANDBY : " +} diff --git a/vendor/gitee.com/chunanyong/dm/zx.go b/vendor/gitee.com/chunanyong/dm/zx.go new file mode 100644 index 000000000..881118b89 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zx.go @@ -0,0 +1,421 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "context" + "database/sql" + "database/sql/driver" + "errors" + "io" + "regexp" + "strings" + "time" + + "gitee.com/chunanyong/dm/util" +) + +const ( + SQL_SELECT_STANDBY = "select distinct mailIni.inst_name, mailIni.INST_IP, mailIni.INST_PORT, archIni.arch_status " + + "from v$arch_status archIni " + + "left join (select * from V$DM_MAL_INI) mailIni on archIni.arch_dest = mailIni.inst_name " + + "left join V$MAL_LINK_STATUS on CTL_LINK_STATUS = 'CONNECTED' AND DATA_LINK_STATUS = 'CONNECTED' " + + "where archIni.arch_type in ('TIMELY', 'REALTIME') AND archIni.arch_status = 'VALID'" + + SQL_SELECT_STANDBY2 = "select distinct " + + "mailIni.mal_inst_name, mailIni.mal_INST_HOST, mailIni.mal_INST_PORT, archIni.arch_status " + + "from v$arch_status archIni " + "left join (select * from V$DM_MAL_INI) mailIni " + + "on archIni.arch_dest = mailIni.mal_inst_name " + "left join V$MAL_LINK_STATUS " + + "on CTL_LINK_STATUS = 'CONNECTED' AND DATA_LINK_STATUS = 'CONNECTED' " + + "where archIni.arch_type in ('TIMELY', 'REALTIME') AND archIni.arch_status = 'VALID'" +) + +type rwUtil struct { +} + +var RWUtil = rwUtil{} + +func (RWUtil rwUtil) connect(c *DmConnector, ctx context.Context) (*DmConnection, error) { + c.loginMode = LOGIN_MODE_PRIMARY_ONLY + connection, err := c.connect(ctx) + if err != nil { + return nil, err + } + + connection.rwInfo.rwCounter = getRwCounterInstance(connection, connection.StandbyCount) + err = RWUtil.connectStandby(connection) + + return connection, err +} + +func (RWUtil rwUtil) reconnect(connection *DmConnection) error { + if connection.rwInfo == nil { + return nil + } + + RWUtil.removeStandby(connection) + + err := connection.reconnect() + if err != nil { + return err + } + connection.rwInfo.cleanup() + connection.rwInfo.rwCounter = getRwCounterInstance(connection, connection.StandbyCount) + + err = RWUtil.connectStandby(connection) + + return err +} + +func (RWUtil rwUtil) recoverStandby(connection *DmConnection) error { + if connection.closed.IsSet() || RWUtil.isStandbyAlive(connection) { + return nil + } + + ts := time.Now().UnixNano() / 1000000 + + freq := int64(connection.dmConnector.rwStandbyRecoverTime) + if freq <= 0 || ts-connection.rwInfo.tryRecoverTs < freq { + return nil + } + + err := RWUtil.connectStandby(connection) + connection.rwInfo.tryRecoverTs = ts + + return err +} + +func (RWUtil rwUtil) connectStandby(connection *DmConnection) error { + var err error + db, err := RWUtil.chooseValidStandby(connection) + if err != nil { + return err + } + if db == nil { + return nil + } + + standbyConnectorValue := *connection.dmConnector + standbyConnector := &standbyConnectorValue + standbyConnector.host = db.host + standbyConnector.port = db.port + standbyConnector.rwStandby = true + standbyConnector.group = nil + standbyConnector.loginMode = LOGIN_MODE_STANDBY_ONLY + standbyConnector.switchTimes = 0 + connection.rwInfo.connStandby, err = standbyConnector.connectSingle(context.Background()) + if err != nil { + return err + } + + if connection.rwInfo.connStandby.SvrMode != SERVER_MODE_STANDBY || connection.rwInfo.connStandby.SvrStat != SERVER_STATUS_OPEN { + RWUtil.removeStandby(connection) + } + return nil +} + +func (RWUtil rwUtil) chooseValidStandby(connection *DmConnection) (*ep, error) { + stmt, rs, err := connection.driverQuery(SQL_SELECT_STANDBY2) + if err != nil { + stmt, rs, err = connection.driverQuery(SQL_SELECT_STANDBY) + } + defer func() { + if rs != nil { + rs.close() + } + if stmt != nil { + stmt.close() + } + }() + if err == nil { + count := int32(rs.CurrentRows.getRowCount()) + if count > 0 { + connection.rwInfo.rwCounter = getRwCounterInstance(connection, count) + i := int32(0) + rowIndex := connection.rwInfo.rwCounter.random(count) + dest := make([]driver.Value, 3) + for err := rs.next(dest); err != io.EOF; err = rs.next(dest) { + if i == rowIndex { + ep := newEP(dest[1].(string), dest[2].(int32)) + return ep, nil + } + i++ + } + } + } + if err != nil { + return nil, errors.New("choose valid standby error!" + err.Error()) + } + return nil, nil +} + +func (RWUtil rwUtil) afterExceptionOnStandby(connection *DmConnection, e error) { + if e.(*DmError).ErrCode == ECGO_COMMUNITION_ERROR.ErrCode { + RWUtil.removeStandby(connection) + } +} + +func (RWUtil rwUtil) removeStandby(connection *DmConnection) { + if connection.rwInfo.connStandby != nil { + connection.rwInfo.connStandby.close() + connection.rwInfo.connStandby = nil + } +} + +func (RWUtil rwUtil) isCreateStandbyStmt(stmt *DmStatement) bool { + return stmt != nil && stmt.rwInfo.readOnly && RWUtil.isStandbyAlive(stmt.dmConn) +} + +func (RWUtil rwUtil) executeByConn(conn *DmConnection, query string, execute1 func() (interface{}, error), execute2 func(otherConn *DmConnection) (interface{}, error)) (interface{}, error) { + + if err := RWUtil.recoverStandby(conn); err != nil { + return nil, err + } + RWUtil.distributeSqlByConn(conn, query) + + turnToPrimary := false + + ret, err := execute1() + if err != nil { + if conn.rwInfo.connCurrent == conn.rwInfo.connStandby { + + RWUtil.afterExceptionOnStandby(conn, err) + turnToPrimary = true + } else { + + return nil, err + } + } + + curConn := conn.rwInfo.connCurrent + var otherConn *DmConnection + if curConn != conn { + otherConn = conn + } else { + otherConn = conn.rwInfo.connStandby + } + + switch curConn.lastExecInfo.retSqlType { + case Dm_build_101, Dm_build_102, Dm_build_106, Dm_build_113, Dm_build_112, Dm_build_104: + { + + if otherConn != nil { + execute2(otherConn) + } + } + case Dm_build_111: + { + + sqlhead := regexp.MustCompile("[ (]").Split(strings.TrimSpace(query), 2)[0] + if util.StringUtil.EqualsIgnoreCase(sqlhead, "SP_SET_PARA_VALUE") || util.StringUtil.EqualsIgnoreCase(sqlhead, "SP_SET_SESSION_READONLY") { + if otherConn != nil { + execute2(otherConn) + } + } + } + case Dm_build_110: + { + + if conn.dmConnector.rwHA && curConn == conn.rwInfo.connStandby && + (curConn.lastExecInfo.rsDatas == nil || len(curConn.lastExecInfo.rsDatas) == 0) { + turnToPrimary = true + } + } + } + + if turnToPrimary { + conn.rwInfo.toPrimary() + conn.rwInfo.connCurrent = conn + + return execute2(conn) + } + return ret, nil +} + +func (RWUtil rwUtil) executeByStmt(stmt *DmStatement, execute1 func() (interface{}, error), execute2 func(otherStmt *DmStatement) (interface{}, error)) (interface{}, error) { + orgStmt := stmt.rwInfo.stmtCurrent + query := stmt.nativeSql + + if err := RWUtil.recoverStandby(stmt.dmConn); err != nil { + return nil, err + } + RWUtil.distributeSqlByStmt(stmt) + if orgStmt != stmt.rwInfo.stmtCurrent { + RWUtil.copyStatement(orgStmt, stmt.rwInfo.stmtCurrent) + stmt.rwInfo.stmtCurrent.nativeSql = orgStmt.nativeSql + } + + turnToPrimary := false + + ret, err := execute1() + if err != nil { + + if stmt.rwInfo.stmtCurrent == stmt.rwInfo.stmtStandby { + RWUtil.afterExceptionOnStandby(stmt.dmConn, err) + turnToPrimary = true + } else { + return nil, err + } + } + + curStmt := stmt.rwInfo.stmtCurrent + var otherStmt *DmStatement + if curStmt != stmt { + otherStmt = stmt + } else { + otherStmt = stmt.rwInfo.stmtStandby + } + + switch curStmt.execInfo.retSqlType { + case Dm_build_101, Dm_build_102, Dm_build_106, Dm_build_113, Dm_build_112, Dm_build_104: + { + + if otherStmt != nil { + RWUtil.copyStatement(curStmt, otherStmt) + execute2(otherStmt) + } + } + case Dm_build_111: + { + + var tmpsql string + if query != "" { + tmpsql = strings.TrimSpace(query) + } else if stmt.nativeSql != "" { + tmpsql = strings.TrimSpace(stmt.nativeSql) + } else { + tmpsql = "" + } + sqlhead := regexp.MustCompile("[ (]").Split(tmpsql, 2)[0] + if util.StringUtil.EqualsIgnoreCase(sqlhead, "SP_SET_PARA_VALUE") || util.StringUtil.EqualsIgnoreCase(sqlhead, "SP_SET_SESSION_READONLY") { + if otherStmt != nil { + RWUtil.copyStatement(curStmt, otherStmt) + execute2(otherStmt) + } + } + } + case Dm_build_110: + { + + if stmt.dmConn.dmConnector.rwHA && curStmt == stmt.rwInfo.stmtStandby && + (curStmt.execInfo.rsDatas == nil || len(curStmt.execInfo.rsDatas) == 0) { + turnToPrimary = true + } + } + } + + if turnToPrimary { + stmt.dmConn.rwInfo.toPrimary() + stmt.rwInfo.stmtCurrent = stmt + + RWUtil.copyStatement(stmt.rwInfo.stmtStandby, stmt) + + return execute2(stmt) + } + return ret, nil +} + +func (RWUtil rwUtil) checkReadonlyByConn(conn *DmConnection, sql string) bool { + readonly := true + + if sql != "" && !conn.dmConnector.rwIgnoreSql { + tmpsql := strings.TrimSpace(sql) + sqlhead := strings.SplitN(tmpsql, " ", 2)[0] + if util.StringUtil.EqualsIgnoreCase(sqlhead, "INSERT") || + util.StringUtil.EqualsIgnoreCase(sqlhead, "UPDATE") || + util.StringUtil.EqualsIgnoreCase(sqlhead, "DELETE") || + util.StringUtil.EqualsIgnoreCase(sqlhead, "CREATE") || + util.StringUtil.EqualsIgnoreCase(sqlhead, "TRUNCATE") || + util.StringUtil.EqualsIgnoreCase(sqlhead, "DROP") || + util.StringUtil.EqualsIgnoreCase(sqlhead, "ALTER") { + readonly = false + } else { + readonly = true + } + } + return readonly +} + +func (RWUtil rwUtil) checkReadonlyByStmt(stmt *DmStatement) bool { + return RWUtil.checkReadonlyByConn(stmt.dmConn, stmt.nativeSql) +} + +func (RWUtil rwUtil) distributeSqlByConn(conn *DmConnection, query string) RWSiteEnum { + var dest RWSiteEnum + if !RWUtil.isStandbyAlive(conn) { + + dest = conn.rwInfo.toPrimary() + } else if !RWUtil.checkReadonlyByConn(conn, query) { + + dest = conn.rwInfo.toPrimary() + } else if (conn.rwInfo.distribute == PRIMARY && !conn.trxFinish) || + (conn.rwInfo.distribute == STANDBY && !conn.rwInfo.connStandby.trxFinish) { + + dest = conn.rwInfo.distribute + } else if conn.IsoLevel != int32(sql.LevelSerializable) { + + dest = conn.rwInfo.toAny() + } else { + dest = conn.rwInfo.toPrimary() + } + + if dest == PRIMARY { + conn.rwInfo.connCurrent = conn + } else { + conn.rwInfo.connCurrent = conn.rwInfo.connStandby + } + return dest +} + +func (RWUtil rwUtil) distributeSqlByStmt(stmt *DmStatement) RWSiteEnum { + var dest RWSiteEnum + if !RWUtil.isStandbyAlive(stmt.dmConn) { + + dest = stmt.dmConn.rwInfo.toPrimary() + } else if !RWUtil.checkReadonlyByStmt(stmt) { + + dest = stmt.dmConn.rwInfo.toPrimary() + } else if (stmt.dmConn.rwInfo.distribute == PRIMARY && !stmt.dmConn.trxFinish) || + (stmt.dmConn.rwInfo.distribute == STANDBY && !stmt.dmConn.rwInfo.connStandby.trxFinish) { + + dest = stmt.dmConn.rwInfo.distribute + } else if stmt.dmConn.IsoLevel != int32(sql.LevelSerializable) { + + dest = stmt.dmConn.rwInfo.toAny() + } else { + dest = stmt.dmConn.rwInfo.toPrimary() + } + + if dest == STANDBY && !RWUtil.isStandbyStatementValid(stmt) { + + var err error + stmt.rwInfo.stmtStandby, err = stmt.dmConn.rwInfo.connStandby.prepare(stmt.nativeSql) + if err != nil { + dest = stmt.dmConn.rwInfo.toPrimary() + } + } + + if dest == PRIMARY { + stmt.rwInfo.stmtCurrent = stmt + } else { + stmt.rwInfo.stmtCurrent = stmt.rwInfo.stmtStandby + } + return dest +} + +func (RWUtil rwUtil) isStandbyAlive(connection *DmConnection) bool { + return connection.rwInfo.connStandby != nil && !connection.rwInfo.connStandby.closed.IsSet() +} + +func (RWUtil rwUtil) isStandbyStatementValid(statement *DmStatement) bool { + return statement.rwInfo.stmtStandby != nil && !statement.rwInfo.stmtStandby.closed +} + +func (RWUtil rwUtil) copyStatement(srcStmt *DmStatement, destStmt *DmStatement) { + destStmt.nativeSql = srcStmt.nativeSql + destStmt.serverParams = srcStmt.serverParams + destStmt.bindParams = srcStmt.bindParams + destStmt.paramCount = srcStmt.paramCount +} diff --git a/vendor/gitee.com/chunanyong/dm/zzj.go b/vendor/gitee.com/chunanyong/dm/zzj.go new file mode 100644 index 000000000..6a5d85946 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zzj.go @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "database/sql" + "database/sql/driver" +) + +var SQLName sqlName + +type sqlName struct { + m_name string // 描述对象自身名称, + + // 若为内置类型,则表示数据库端定义的名称,与dType相对应 + m_pkgName string // 所在包的名称,适用于包中类型的定义 + + m_schName string // 描述对象所在模式名 + + m_fulName string // 描述对象完全限定名, 记录用户发送的名称信息; + + // 以及接受服务器响应后,拼成的名称信息 + + m_schId int // 保存模式id,模式名无法传出,利用模式id查找 + + m_packId int // 保存包的id,包名无法传出,用于查找包名 + + m_conn *DmConnection +} + +func (SqlName *sqlName) init() { + SqlName.m_name = "" + SqlName.m_pkgName = "" + SqlName.m_schName = "" + SqlName.m_fulName = "" + SqlName.m_schId = -1 + SqlName.m_packId = -1 + SqlName.m_conn = nil +} + +func newSqlNameByFulName(fulName string) *sqlName { + o := new(sqlName) + o.init() + o.m_fulName = fulName + return o +} + +func newSqlNameByConn(conn *DmConnection) *sqlName { + o := new(sqlName) + o.init() + o.m_conn = conn + return o +} + +func (SqlName *sqlName) getFulName() (string, error) { + // 说明非内嵌式数据类型名称描述信息传入或已经获取过描述信息 + if len(SqlName.m_fulName) > 0 { + return SqlName.m_fulName, nil + } + + // 内嵌式数据类型无名称描述信息返回,直接返回null + if SqlName.m_name == "" { + // DBError.throwUnsupportedSQLException(); + return "", nil + } + + // 其他数据名描述信息 + if SqlName.m_packId != 0 || SqlName.m_schId != 0 { + query := "SELECT NAME INTO ? FROM SYS.SYSOBJECTS WHERE ID=?" + + params := make([]driver.Value, 2) + var v string + params[0] = sql.Out{Dest: &v} + if SqlName.m_packId != 0 { + params[1] = SqlName.m_packId + } else { + params[1] = SqlName.m_schId + } + + rs, err := SqlName.m_conn.query(query, params) + if err != nil { + return "", err + } + rs.close() + + // 说明是包中定义的对象 + if SqlName.m_packId != 0 { + // pkg全名 + SqlName.m_pkgName = v + SqlName.m_fulName = SqlName.m_pkgName + "." + SqlName.m_name + } else { + // 非包中定义的对象 + // schema 名称 + SqlName.m_schName = v + SqlName.m_fulName = SqlName.m_schName + "." + SqlName.m_name + } + } + // 将有效值返回 + if len(SqlName.m_fulName) > 0 { + return SqlName.m_fulName, nil + } else { + return SqlName.m_name, nil + } + +} diff --git a/vendor/gitee.com/chunanyong/dm/zzk.go b/vendor/gitee.com/chunanyong/dm/zzk.go new file mode 100644 index 000000000..1dc227987 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zzk.go @@ -0,0 +1,320 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "bytes" + "strconv" + "strings" + + "gitee.com/chunanyong/dm/parser" + + "gitee.com/chunanyong/dm/util" +) + +func (dc *DmConnection) lex(sql string) ([]*parser.LVal, error) { + if dc.lexer == nil { + dc.lexer = parser.NewLexer(strings.NewReader(sql), false) + } else { + dc.lexer.Reset(strings.NewReader(sql)) + } + + lexer := dc.lexer + var lval *parser.LVal + var err error + lvalList := make([]*parser.LVal, 0, 64) + lval, err = lexer.Yylex() + if err != nil { + return nil, err + } + + for lval != nil { + lvalList = append(lvalList, lval) + lval.Position = len(lvalList) + lval, err = lexer.Yylex() + if err != nil { + return nil, err + } + } + + return lvalList, nil +} + +func lexSkipWhitespace(sql string, n int) ([]*parser.LVal, error) { + lexer := parser.NewLexer(strings.NewReader(sql), false) + + var lval *parser.LVal + var err error + lvalList := make([]*parser.LVal, 0, 64) + lval, err = lexer.Yylex() + if err != nil { + return nil, err + } + + for lval != nil && n > 0 { + lval.Position = len(lvalList) + if lval.Tp == parser.WHITESPACE_OR_COMMENT { + continue + } + + lvalList = append(lvalList, lval) + n-- + lval, err = lexer.Yylex() + if err != nil { + return nil, err + } + + } + + return lvalList, nil +} + +func (dc *DmConnection) escape(sql string, keywords []string) (string, error) { + + if (keywords == nil || len(keywords) == 0) && strings.Index(sql, "{") == -1 { + return sql, nil + } + var keywordMap map[string]interface{} + if keywords != nil && len(keywords) > 0 { + keywordMap = make(map[string]interface{}, len(keywords)) + for _, keyword := range keywords { + keywordMap[strings.ToUpper(keyword)] = nil + } + } + nsql := bytes.NewBufferString("") + stack := make([]bool, 0, 64) + lvalList, err := dc.lex(sql) + if err != nil { + return "", err + } + + for i := 0; i < len(lvalList); i++ { + lval0 := lvalList[i] + if lval0.Tp == parser.NORMAL { + if lval0.Value == "{" { + lval1 := next(lvalList, i+1) + if lval1 == nil || lval1.Tp != parser.NORMAL { + stack = append(stack, false) + nsql.WriteString(lval0.Value) + } else if util.StringUtil.EqualsIgnoreCase(lval1.Value, "escape") || util.StringUtil.EqualsIgnoreCase(lval1.Value, "call") { + stack = append(stack, true) + } else if util.StringUtil.EqualsIgnoreCase(lval1.Value, "oj") { + stack = append(stack, true) + lval1.Value = "" + lval1.Tp = parser.WHITESPACE_OR_COMMENT + } else if util.StringUtil.EqualsIgnoreCase(lval1.Value, "d") { + stack = append(stack, true) + lval1.Value = "date" + } else if util.StringUtil.EqualsIgnoreCase(lval1.Value, "t") { + stack = append(stack, true) + lval1.Value = "time" + } else if util.StringUtil.EqualsIgnoreCase(lval1.Value, "ts") { + stack = append(stack, true) + lval1.Value = "datetime" + } else if util.StringUtil.EqualsIgnoreCase(lval1.Value, "fn") { + stack = append(stack, true) + lval1.Value = "" + lval1.Tp = parser.WHITESPACE_OR_COMMENT + lval2 := next(lvalList, lval1.Position+1) + if lval2 != nil && lval2.Tp == parser.NORMAL && util.StringUtil.EqualsIgnoreCase(lval2.Value, "database") { + lval2.Value = "cur_database" + } + } else if util.StringUtil.Equals(lval1.Value, "?") { + lval2 := next(lvalList, lval1.Position+1) + if lval2 != nil && lval2.Tp == parser.NORMAL && util.StringUtil.EqualsIgnoreCase(lval2.Value, "=") { + lval3 := next(lvalList, lval2.Position+1) + if lval3 != nil && lval3.Tp == parser.NORMAL && util.StringUtil.EqualsIgnoreCase(lval3.Value, "call") { + stack = append(stack, true) + lval3.Value = "" + lval3.Tp = parser.WHITESPACE_OR_COMMENT + } else { + stack = append(stack, false) + nsql.WriteString(lval0.Value) + } + } else { + stack = append(stack, false) + nsql.WriteString(lval0.Value) + } + } else { + stack = append(stack, false) + nsql.WriteString(lval0.Value) + } + } else if util.StringUtil.Equals(lval0.Value, "}") { + if len(stack) != 0 && stack[len(stack)-1] { + + } else { + nsql.WriteString(lval0.Value) + } + stack = stack[:len(stack)-1] + } else { + if keywordMap != nil { + _, ok := keywordMap[strings.ToUpper(lval0.Value)] + if ok { + nsql.WriteString("\"" + util.StringUtil.ProcessDoubleQuoteOfName(strings.ToUpper(lval0.Value)) + "\"") + } else { + nsql.WriteString(lval0.Value) + } + } else { + nsql.WriteString(lval0.Value) + } + } + } else if lval0.Tp == parser.STRING { + nsql.WriteString("'" + util.StringUtil.ProcessSingleQuoteOfName(lval0.Value) + "'") + } else { + nsql.WriteString(lval0.Value) + } + } + + return nsql.String(), nil +} + +func next(lvalList []*parser.LVal, start int) *parser.LVal { + var lval *parser.LVal + + size := len(lvalList) + for i := start; i < size; i++ { + lval = lvalList[i] + if lval.Tp != parser.WHITESPACE_OR_COMMENT { + break + } + } + return lval +} + +func (dc *DmConnection) execOpt(sql string, optParamList []OptParameter, serverEncoding string) (string, []OptParameter, error) { + nsql := bytes.NewBufferString("") + + lvalList, err := dc.lex(sql) + if err != nil { + return "", optParamList, err + } + + if nil == lvalList || len(lvalList) == 0 { + return sql, optParamList, nil + } + + firstWord := lvalList[0].Value + if !(util.StringUtil.EqualsIgnoreCase(firstWord, "INSERT") || util.StringUtil.EqualsIgnoreCase(firstWord, "SELECT") || + util.StringUtil.EqualsIgnoreCase(firstWord, "UPDATE") || util.StringUtil.EqualsIgnoreCase(firstWord, "DELETE")) { + return sql, optParamList, nil + } + + breakIndex := 0 + for i := 0; i < len(lvalList); i++ { + lval := lvalList[i] + switch lval.Tp { + case parser.NULL: + { + nsql.WriteString("?") + optParamList = append(optParamList, newOptParameter(nil, NULL, NULL_PREC)) + } + case parser.INT: + { + nsql.WriteString("?") + value, err := strconv.Atoi(lval.Value) + if err != nil { + return "", optParamList, err + } + + if value <= int(INT32_MAX) && value >= int(INT32_MIN) { + optParamList = append(optParamList, newOptParameter(G2DB.toInt32(int32(value)), INT, INT_PREC)) + + } else { + optParamList = append(optParamList, newOptParameter(G2DB.toInt64(int64(value)), BIGINT, BIGINT_PREC)) + } + } + case parser.DOUBLE: + { + nsql.WriteString("?") + f, err := strconv.ParseFloat(lval.Value, 64) + if err != nil { + return "", optParamList, err + } + + optParamList = append(optParamList, newOptParameter(G2DB.toFloat64(f), DOUBLE, DOUBLE_PREC)) + } + case parser.DECIMAL: + { + nsql.WriteString("?") + bytes, err := G2DB.toDecimal(lval.Value, 0, 0) + if err != nil { + return "", optParamList, err + } + optParamList = append(optParamList, newOptParameter(bytes, DECIMAL, 0)) + } + case parser.STRING: + { + + if len(lval.Value) > int(INT16_MAX) { + + nsql.WriteString("'" + util.StringUtil.ProcessSingleQuoteOfName(lval.Value) + "'") + } else { + nsql.WriteString("?") + optParamList = append(optParamList, newOptParameter(Dm_build_650.Dm_build_866(lval.Value, serverEncoding, dc), VARCHAR, VARCHAR_PREC)) + } + } + case parser.HEX_INT: + + nsql.WriteString(lval.Value) + default: + + nsql.WriteString(lval.Value) + } + + if breakIndex > 0 { + break + } + } + + if breakIndex > 0 { + for i := breakIndex + 1; i < len(lvalList); i++ { + nsql.WriteString(lvalList[i].Value) + } + } + + return nsql.String(), optParamList, nil +} + +func (dc *DmConnection) hasConst(sql string) (bool, error) { + lvalList, err := dc.lex(sql) + if err != nil { + return false, err + } + + if nil == lvalList || len(lvalList) == 0 { + return false, nil + } + + for i := 0; i < len(lvalList); i++ { + switch lvalList[i].Tp { + case parser.NULL, parser.INT, parser.DOUBLE, parser.DECIMAL, parser.STRING, parser.HEX_INT: + return true, nil + } + } + return false, nil +} + +type OptParameter struct { + bytes []byte + ioType byte + tp int + prec int + scale int +} + +func newOptParameter(bytes []byte, tp int, prec int) OptParameter { + o := new(OptParameter) + o.bytes = bytes + o.tp = tp + o.prec = prec + return *o +} + +func (parameter *OptParameter) String() string { + if parameter.bytes == nil { + return "" + } + return string(parameter.bytes) +} diff --git a/vendor/gitee.com/chunanyong/dm/zzl.go b/vendor/gitee.com/chunanyong/dm/zzl.go new file mode 100644 index 000000000..e28795b4d --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zzl.go @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +type StructDescriptor struct { + m_typeDesc *TypeDescriptor +} + +func newStructDescriptor(fulName string, conn *DmConnection) (*StructDescriptor, error) { + sd := new(StructDescriptor) + if fulName == "" { + return nil, ECGO_INVALID_COMPLEX_TYPE_NAME.throw() + } + + sd.m_typeDesc = newTypeDescriptorWithFulName(fulName, conn) + + err := sd.m_typeDesc.parseDescByName() + if err != nil { + return nil, err + } + + return sd, nil +} + +func newStructDescriptorByTypeDescriptor(desc *TypeDescriptor) *StructDescriptor { + sd := new(StructDescriptor) + sd.m_typeDesc = desc + return sd +} + +func (sd *StructDescriptor) getSize() int { + return sd.m_typeDesc.m_size +} + +func (sd *StructDescriptor) getObjId() int { + return sd.m_typeDesc.m_objId +} + +func (sd *StructDescriptor) getItemsDesc() []TypeDescriptor { + return sd.m_typeDesc.m_fieldsObj +} diff --git a/vendor/gitee.com/chunanyong/dm/zzm.go b/vendor/gitee.com/chunanyong/dm/zzm.go new file mode 100644 index 000000000..c745ff330 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zzm.go @@ -0,0 +1,459 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ + +package dm + +import ( + "bufio" + "io" + "os" + "runtime" + "strconv" + "strings" + + "gitee.com/chunanyong/dm/util" +) + +var LogDirDef, _ = os.Getwd() + +var StatDirDef, _ = os.Getwd() + +const ( + DEFAULT_PORT int32 = 5236 + + //log level + LOG_OFF int = 0 + + LOG_ERROR int = 1 + + LOG_WARN int = 2 + + LOG_SQL int = 3 + + LOG_INFO int = 4 + + LOG_DEBUG int = 5 + + LOG_ALL int = 9 + + //stat + STAT_SQL_REMOVE_LATEST int = 0 + + STAT_SQL_REMOVE_OLDEST int = 1 + + // 编码字符集 + ENCODING_UTF8 string = "UTF-8" + + ENCODING_EUCKR string = "EUC-KR" + + ENCODING_GB18030 string = "GB18030" + + ENCODING_BIG5 string = "BIG5" + + DbAliveCheckFreqDef = 0 + + LocaleDef = LANGUAGE_CN + + // log + LogLevelDef = LOG_OFF // 日志级别:off, error, warn, sql, info, all + + LogFlushFreqDef = 10 // 日志刷盘时间s (>=0) + + LogFlushQueueSizeDef = 100 //日志队列大小 + + LogBufferSizeDef = 32 * 1024 // 日志缓冲区大小 (>0) + + // stat + StatEnableDef = false // + + StatFlushFreqDef = 3 // 日志刷盘时间s (>=0) + + StatSlowSqlCountDef = 100 // 慢sql top行数,(0-1000) + + StatHighFreqSqlCountDef = 100 // 高频sql top行数, (0-1000) + + StatSqlMaxCountDef = 100000 // sql 统计最大值(0-100000) + + StatSqlRemoveModeDef = STAT_SQL_REMOVE_LATEST // 记录sql数超过最大值时,sql淘汰方式 +) + +var ( + DbAliveCheckFreq = DbAliveCheckFreqDef + + Locale = LocaleDef // 0:简体中文 1:英文 2:繁体中文 + + // log + LogLevel = LogLevelDef // 日志级别:off, error, warn, sql, info, all + + LogDir = LogDirDef + + LogFlushFreq = LogFlushFreqDef // 日志刷盘时间s (>=0) + + LogFlushQueueSize = LogFlushQueueSizeDef + + LogBufferSize = LogBufferSizeDef // 日志缓冲区大小 (>0) + + // stat + StatEnable = StatEnableDef // + + StatDir = StatDirDef // jdbc工作目录,所有生成的文件都在该目录下 + + StatFlushFreq = StatFlushFreqDef // 日志刷盘时间s (>=0) + + StatSlowSqlCount = StatSlowSqlCountDef // 慢sql top行数,(0-1000) + + StatHighFreqSqlCount = StatHighFreqSqlCountDef // 高频sql top行数, (0-1000) + + StatSqlMaxCount = StatSqlMaxCountDef // sql 统计最大值(0-100000) + + StatSqlRemoveMode = StatSqlRemoveModeDef // 记录sql数超过最大值时,sql淘汰方式 + + /*---------------------------------------------------------------*/ + ServerGroupMap = make(map[string]*epGroup) + + GlobalProperties = NewProperties() +) + +// filePath: dm_svc.conf 文件路径 +func load(filePath string) { + if filePath == "" { + switch runtime.GOOS { + case "windows": + filePath = os.Getenv("SystemRoot") + "\\system32\\dm_svc.conf" + case "linux": + filePath = "/etc/dm_svc.conf" + default: + return + } + } + file, err := os.Open(filePath) + defer file.Close() + if err != nil { + return + } + fileReader := bufio.NewReader(file) + + // GlobalProperties = NewProperties() + var groupProps *Properties + var line string //dm_svc.conf读取到的一行 + + for line, err = fileReader.ReadString('\n'); line != "" && (err == nil || err == io.EOF); line, err = fileReader.ReadString('\n') { + // 去除#标记的注释 + if notesIndex := strings.IndexByte(line, '#'); notesIndex != -1 { + line = line[:notesIndex] + } + // 去除前后多余的空格 + line = strings.TrimSpace(line) + if line == "" { + continue + } + + if strings.HasPrefix(line, "[") && strings.HasSuffix(line, "]") { + groupName := strings.ToLower(line[1 : len(line)-1]) + dbGroup, ok := ServerGroupMap[groupName] + if groupName == "" || !ok { + continue + } + groupProps = dbGroup.props + if groupProps.IsNil() { + groupProps = NewProperties() + groupProps.SetProperties(GlobalProperties) + dbGroup.props = groupProps + } + + } else { + cfgInfo := strings.Split(line, "=") + if len(cfgInfo) < 2 { + continue + } + key := strings.TrimSpace(cfgInfo[0]) + value := strings.TrimSpace(cfgInfo[1]) + if strings.HasPrefix(value, "(") && strings.HasSuffix(value, ")") { + value = strings.TrimSpace(value[1 : len(value)-1]) + } + if key == "" || value == "" { + continue + } + // 区分属性是全局的还是组的 + var success bool + if groupProps.IsNil() { + success = SetServerGroupProperties(GlobalProperties, key, value) + } else { + success = SetServerGroupProperties(groupProps, key, value) + } + if !success { + var serverGroup = parseServerName(key, value) + if serverGroup != nil { + serverGroup.props = NewProperties() + serverGroup.props.SetProperties(GlobalProperties) + ServerGroupMap[strings.ToLower(key)] = serverGroup + } + } + } + } +} + +func SetServerGroupProperties(props *Properties, key string, value string) bool { + key = strings.ToUpper(key) + if key == "ADDRESS_REMAP" { + tmp := props.GetString(AddressRemapKey, "") + props.Set(AddressRemapKey, tmp+"("+value+")") + } else if key == "ALWAYS_ALLOW_COMMIT" { + props.Set(AlwayseAllowCommitKey, value) + } else if key == "APP_NAME" { + props.Set(AppNameKey, value) + } else if key == "AUTO_COMMIT" { + props.Set(AutoCommitKey, value) + } else if key == "BATCH_ALLOW_MAX_ERRORS" { + props.Set(BatchAllowMaxErrorsKey, value) + } else if key == "BATCH_CONTINUE_ON_ERROR" || + key == "CONTINUE_BATCH_ON_ERROR" { + props.Set(ContinueBatchOnErrorKey, value) + } else if key == "BATCH_NOT_ON_CALL" { + props.Set(BatchNotOnCallKey, value) + } else if key == "BATCH_TYPE" { + props.Set(BatchTypeKey, value) + } else if key == "BUF_PREFETCH" { + props.Set(BufPrefetchKey, value) + } else if key == "CIPHER_PATH" { + props.Set(CipherPathKey, value) + } else if key == "CLUSTER" { + props.Set(ClusterKey, value) + } else if key == "COLUMN_NAME_UPPER_CASE" { + props.Set(ColumnNameUpperCaseKey, value) + } else if key == "COLUMN_NAME_CASE" { + props.Set(ColumnNameCaseKey, value) + } else if key == "COMPATIBLE_MODE" { + props.Set(CompatibleModeKey, value) + } else if key == "COMPRESS" || + key == "COMPRESS_MSG" { + props.Set(CompressKey, value) + } else if key == "COMPRESS_ID" { + props.Set(CompressIdKey, value) + } else if key == "CONNECT_TIMEOUT" { + props.Set(ConnectTimeoutKey, value) + } else if key == "DO_SWITCH" || + key == "AUTO_RECONNECT" { + props.Set(DoSwitchKey, value) + } else if key == "ENABLE_RS_CACHE" { + props.Set(EnRsCacheKey, value) + } else if key == "EP_SELECTION" { + props.Set(EpSelectorKey, value) + } else if key == "ESCAPE_PROCESS" { + props.Set(EscapeProcessKey, value) + } else if key == "IS_BDTA_RS" { + props.Set(IsBdtaRSKey, value) + } else if key == "KEY_WORDS" || + key == "KEYWORDS" { + props.Set(KeywordsKey, value) + } else if key == "LANGUAGE" { + props.Set(LanguageKey, value) + } else if key == "LOB_MODE" { + props.Set(LobModeKey, value) + } else if key == "LOG_BUFFER_SIZE" { + props.Set(LogBufferSizeKey, value) + } else if key == "LOG_DIR" { + props.Set(LogDirKey, value) + } else if key == "LOG_FLUSH_FREQ" { + props.Set(LogFlushFreqKey, value) + } else if key == "LOG_FLUSHER_QUEUESIZE" { + props.Set(LogFlusherQueueSizeKey, value) + } else if key == "LOG_LEVEL" { + props.Set(LogLevelKey, value) + } else if key == "LOGIN_DSC_CTRL" { + props.Set(LoginDscCtrlKey, value) + } else if key == "LOGIN_ENCRYPT" { + props.Set(LoginEncryptKey, value) + } else if key == "LOGIN_MODE" { + props.Set(LoginModeKey, value) + } else if key == "LOGIN_STATUS" { + props.Set(LoginStatusKey, value) + } else if key == "MAX_ROWS" { + props.Set(MaxRowsKey, value) + } else if key == "MPP_LOCAL" { + props.Set(MppLocalKey, value) + } else if key == "OS_NAME" { + props.Set(OsNameKey, value) + } else if key == "RS_CACHE_SIZE" { + props.Set(RsCacheSizeKey, value) + } else if key == "RS_REFRESH_FREQ" { + props.Set(RsRefreshFreqKey, value) + } else if key == "RW_HA" { + props.Set(RwHAKey, value) + } else if key == "RW_IGNORE_SQL" { + props.Set(RwIgnoreSqlKey, value) + } else if key == "RW_PERCENT" { + props.Set(RwPercentKey, value) + } else if key == "RW_SEPARATE" { + props.Set(RwSeparateKey, value) + } else if key == "RW_STANDBY_RECOVER_TIME" { + props.Set(RwStandbyRecoverTimeKey, value) + } else if key == "SCHEMA" { + props.Set(SchemaKey, value) + } else if key == "SESS_ENCODE" { + if IsSupportedCharset(value) { + props.Set("sessEncode", value) + } + } else if key == "SESSION_TIMEOUT" { + props.Set(SessionTimeoutKey, value) + } else if key == "SOCKET_TIMEOUT" { + props.Set(SocketTimeoutKey, value) + } else if key == "SSL_CERT_PATH" { + props.Set(SslCertPathKey, value) + } else if key == "SSL_FILES_PATH" { + props.Set(SslFilesPathKey, value) + } else if key == "SSL_KEY_PATH" { + props.Set(SslKeyPathKey, value) + } else if key == "STAT_DIR" { + props.Set(StatDirKey, value) + } else if key == "STAT_ENABLE" { + props.Set(StatEnableKey, value) + } else if key == "STAT_FLUSH_FREQ" { + props.Set(StatFlushFreqKey, value) + } else if key == "STAT_HIGH_FREQ_SQL_COUNT" { + props.Set(StatHighFreqSqlCountKey, value) + } else if key == "STAT_SLOW_SQL_COUNT" { + props.Set(StatSlowSqlCountKey, value) + } else if key == "STAT_SQL_MAX_COUNT" { + props.Set(StatSqlMaxCountKey, value) + } else if key == "STAT_SQL_REMOVE_MODE" { + props.Set(StatSqlRemoveModeKey, value) + } else if key == "SWITCH_INTERVAL" { + props.Set(SwitchIntervalKey, value) + } else if key == "SWITCH_TIME" || + key == "SWITCH_TIMES" { + props.Set(SwitchTimesKey, value) + } else if key == "TIME_ZONE" { + props.Set(TimeZoneKey, value) + props.Set("localTimezone", value) + } else if key == "USER_REMAP" { + tmp := props.GetString(UserRemapKey, "") + props.Set(UserRemapKey, tmp+"("+value+")") + } else { + return false + } + return true +} + +func parseServerName(name string, value string) *epGroup { + values := strings.Split(value, ",") + + var tmpVals []string + var tmpName string + var tmpPort int + var svrList = make([]*ep, 0, len(values)) + + for _, v := range values { + + var tmp *ep + // 先查找IPV6,以[]包括 + begin := strings.IndexByte(v, '[') + end := -1 + if begin != -1 { + end = strings.IndexByte(v[begin:], ']') + } + if end != -1 { + tmpName = v[begin+1 : end] + + // port + if portIndex := strings.IndexByte(v[end:], ':'); portIndex != -1 { + tmpPort, _ = strconv.Atoi(strings.TrimSpace(v[portIndex+1:])) + } else { + tmpPort = int(DEFAULT_PORT) + } + tmp = newEP(tmpName, int32(tmpPort)) + svrList = append(svrList, tmp) + continue + } + // IPV4 + tmpVals = strings.Split(v, ":") + tmpName = strings.TrimSpace(tmpVals[0]) + if len(tmpVals) >= 2 { + tmpPort, _ = strconv.Atoi(tmpVals[1]) + } else { + tmpPort = int(DEFAULT_PORT) + } + tmp = newEP(tmpName, int32(tmpPort)) + svrList = append(svrList, tmp) + } + + if len(svrList) == 0 { + return nil + } + return newEPGroup(name, svrList) +} + +func setDriverAttributes(props *Properties) { + if props == nil || props.Len() == 0 { + return + } + + parseLanguage(props.GetString(LanguageKey, "cn")) + DbAliveCheckFreq = props.GetInt(DbAliveCheckFreqKey, DbAliveCheckFreqDef, 1, int(INT32_MAX)) + + //// log + //LogLevel = ParseLogLevel(props) + //LogDir = util.StringUtil.FormatDir(props.GetTrimString(LogDirKey, LogDirDef)) + //LogBufferSize = props.GetInt(LogBufferSizeKey, LogBufferSizeDef, 1, int(INT32_MAX)) + //LogFlushFreq = props.GetInt(LogFlushFreqKey, LogFlushFreqDef, 1, int(INT32_MAX)) + //LogFlushQueueSize = props.GetInt(LogFlusherQueueSizeKey, LogFlushQueueSizeDef, 1, int(INT32_MAX)) + // + //// stat + //StatEnable = props.GetBool(StatEnableKey, StatEnableDef) + //StatDir = util.StringUtil.FormatDir(props.GetTrimString(StatDirKey, StatDirDef)) + //StatFlushFreq = props.GetInt(StatFlushFreqKey, StatFlushFreqDef, 1, int(INT32_MAX)) + //StatHighFreqSqlCount = props.GetInt(StatHighFreqSqlCountKey, StatHighFreqSqlCountDef, 0, 1000) + //StatSlowSqlCount = props.GetInt(StatSlowSqlCountKey, StatSlowSqlCountDef, 0, 1000) + //StatSqlMaxCount = props.GetInt(StatSqlMaxCountKey, StatSqlMaxCountDef, 0, 100000) + //parseStatSqlRemoveMode(props) +} + +func parseLanguage(value string) { + if util.StringUtil.EqualsIgnoreCase("cn", value) { + Locale = 0 + } else if util.StringUtil.EqualsIgnoreCase("en", value) { + Locale = 1 + } else if util.StringUtil.EqualsIgnoreCase("cnt_hk", value) || + util.StringUtil.EqualsIgnoreCase("hk", value) || + util.StringUtil.EqualsIgnoreCase("tw", value) { + Locale = 2 + } +} + +func IsSupportedCharset(charset string) bool { + if util.StringUtil.EqualsIgnoreCase(ENCODING_UTF8, charset) || + util.StringUtil.EqualsIgnoreCase(ENCODING_GB18030, charset) || + util.StringUtil.EqualsIgnoreCase(ENCODING_EUCKR, charset) || + util.StringUtil.EqualsIgnoreCase(ENCODING_BIG5, charset) { + return true + } + return false +} + +func ParseLogLevel(props *Properties) int { + logLevel := LOG_OFF + value := props.GetString(LogLevelKey, "") + if value != "" && !util.StringUtil.IsDigit(value) { + if util.StringUtil.EqualsIgnoreCase("debug", value) { + logLevel = LOG_DEBUG + } else if util.StringUtil.EqualsIgnoreCase("info", value) { + logLevel = LOG_INFO + } else if util.StringUtil.EqualsIgnoreCase("sql", value) { + logLevel = LOG_SQL + } else if util.StringUtil.EqualsIgnoreCase("warn", value) { + logLevel = LOG_WARN + } else if util.StringUtil.EqualsIgnoreCase("error", value) { + logLevel = LOG_ERROR + } else if util.StringUtil.EqualsIgnoreCase("off", value) { + logLevel = LOG_OFF + } else if util.StringUtil.EqualsIgnoreCase("all", value) { + logLevel = LOG_ALL + } + } else { + logLevel = props.GetInt(LogLevelKey, logLevel, LOG_OFF, LOG_INFO) + } + + return logLevel +} diff --git a/vendor/gitee.com/chunanyong/dm/zzn.go b/vendor/gitee.com/chunanyong/dm/zzn.go new file mode 100644 index 000000000..c9c41e23c --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zzn.go @@ -0,0 +1,442 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql" + "database/sql/driver" + "math" + "reflect" + "strings" + "time" +) + +const ( + INT8_MAX int8 = math.MaxInt8 + + INT8_MIN int8 = math.MinInt8 + + BYTE_MAX byte = math.MaxUint8 + + BYTE_MIN byte = 0 + + INT16_MAX int16 = math.MaxInt16 + + INT16_MIN int16 = math.MinInt16 + + UINT16_MAX uint16 = math.MaxUint16 + + UINT16_MIN uint16 = 0 + + INT32_MAX int32 = math.MaxInt32 + + INT32_MIN int32 = math.MinInt32 + + UINT32_MAX uint32 = math.MaxUint32 + + UINT32_MIN uint32 = 0 + + INT64_MAX int64 = math.MaxInt64 + + INT64_MIN int64 = math.MinInt64 + + UINT64_MAX uint64 = math.MaxUint64 + + UINT64_MIN uint64 = 0 + + FLOAT32_MAX float32 = 3.4e+38 + + FLOAT32_MIN float32 = -3.4e+38 + + BYTE_SIZE = 1 + + USINT_SIZE = 2 + + ULINT_SIZE = 4 + + DDWORD_SIZE = 8 + + LINT64_SIZE = 8 + + CHAR = 0 + + VARCHAR2 = 1 + + VARCHAR = 2 + + BIT = 3 + + TINYINT = 5 + + SMALLINT = 6 + + INT = 7 + + BIGINT = 8 + + DECIMAL = 9 + + REAL = 10 + + DOUBLE = 11 + + BLOB = 12 + + BOOLEAN = 13 + + DATE = 14 + + TIME = 15 + + DATETIME = 16 + + BINARY = 17 + + VARBINARY = 18 + + CLOB = 19 + + INTERVAL_YM = 20 + + INTERVAL_DT = 21 + + TIME_TZ = 22 + + DATETIME_TZ = 23 + + XDEC_INT32 = 24 + + XDEC_INT64 = 25 + + DATETIME2 = 26 + + DATETIME2_TZ = 27 + + NULL = 28 + + ANY = 31 + + STAR_ALL = 32 + + STAR = 33 + + RECORD = 40 + + TYPE = 41 + + TYPE_REF = 42 + + UNKNOWN = 54 + + ARRAY = 117 + + CLASS = 119 + + CURSOR = 120 + + PLTYPE_RECORD = 121 + + SARRAY = 122 + + CURSOR_ORACLE = -10 + + BIT_PREC = BYTE_SIZE + + TINYINT_PREC = BYTE_SIZE + + SMALLINT_PREC = USINT_SIZE + + INT_PREC = ULINT_SIZE + + BIGINT_PREC = LINT64_SIZE + + REAL_PREC = 4 + + DOUBLE_PREC = 8 + + DATE_PREC = 3 + + TIME_PREC = 5 + + DATETIME_PREC = 8 + + DATETIME2_PREC = 9 + + TIME_TZ_PREC = TIME_PREC + 2 + + DATETIME_TZ_PREC = DATETIME_PREC + 2 + + DATETIME2_TZ_PREC = DATETIME2_PREC + 2 + + INTERVAL_YM_PREC = 3 * ULINT_SIZE + + INTERVAL_DT_PREC = 6 * ULINT_SIZE + + VARCHAR_PREC = 8188 + + VARBINARY_PREC = 8188 + + BLOB_PREC int32 = INT32_MAX + + CLOB_PREC int32 = INT32_MAX + + NULL_PREC = 0 + + LOCAL_TIME_ZONE_SCALE_MASK = 0x00001000 + + BFILE_PREC = 512 + + BFILE_SCALE = 6 + + COMPLEX_SCALE = 5 + + CURRENCY_PREC = 19 + + CURRENCY_SCALE = 4 + + LOCAL_DATETIME_SCALE_MASK int32 = 0x00001000 + + ORACLE_FLOAT_SCALE_MASK int32 = 0x81 + + ORACLE_DATE_SCALE_MASK int32 = 0x00002000 +) + +func isComplexType(colType int, scale int) bool { + return (colType == BLOB && scale == COMPLEX_SCALE) || colType == ARRAY || colType == SARRAY || colType == CLASS || colType == PLTYPE_RECORD +} + +func isLocalTimeZone(colType int, scale int) bool { + return (colType == DATETIME || colType == DATETIME2) && (scale&LOCAL_TIME_ZONE_SCALE_MASK) != 0 +} + +func getLocalTimeZoneScale(colType int, scale int) int { + return scale & (^LOCAL_TIME_ZONE_SCALE_MASK) +} + +func isFloat(colType int, scale int) bool { + return colType == DECIMAL && scale == int(ORACLE_FLOAT_SCALE_MASK) +} + +func getFloatPrec(prec int) int { + return int(math.Round(float64(prec)*0.30103)) + 1 +} + +func getFloatScale(scale int) int { + return scale & (^int(ORACLE_FLOAT_SCALE_MASK)) +} + +var ( + scanTypeFloat32 = reflect.TypeOf(float32(0)) + scanTypeFloat64 = reflect.TypeOf(float64(0)) + scanTypeBool = reflect.TypeOf(false) + scanTypeInt8 = reflect.TypeOf(int8(0)) + scanTypeInt16 = reflect.TypeOf(int16(0)) + scanTypeInt32 = reflect.TypeOf(int32(0)) + scanTypeInt64 = reflect.TypeOf(int64(0)) + scanTypeNullBool = reflect.TypeOf(sql.NullBool{}) + scanTypeNullFloat = reflect.TypeOf(sql.NullFloat64{}) + scanTypeNullInt = reflect.TypeOf(sql.NullInt64{}) + scanTypeNullString = reflect.TypeOf(sql.NullString{}) + scanTypeNullTime = reflect.TypeOf(sql.NullTime{}) + scanTypeRawBytes = reflect.TypeOf(sql.RawBytes{}) + scanTypeString = reflect.TypeOf("") + scanTypeTime = reflect.TypeOf(time.Now()) + scanTypeUnknown = reflect.TypeOf(new(interface{})) +) + +func (column *column) ScanType() reflect.Type { + + switch column.colType { + case BOOLEAN: + if column.nullable { + return scanTypeNullBool + } + + return scanTypeBool + + case BIT: + if strings.ToLower(column.typeName) == "boolean" { + + if column.nullable { + return scanTypeNullBool + } + + return scanTypeBool + } else { + + if column.nullable { + return scanTypeNullInt + } + return scanTypeInt8 + } + + case TINYINT: + if column.nullable { + return scanTypeNullInt + } + return scanTypeInt8 + + case SMALLINT: + if column.nullable { + return scanTypeNullInt + } + return scanTypeInt16 + + case INT: + if column.nullable { + return scanTypeNullInt + } + + return scanTypeInt32 + + case BIGINT: + if column.nullable { + return scanTypeNullInt + } + return scanTypeInt64 + + case REAL: + if column.nullable { + return scanTypeNullFloat + } + + return scanTypeFloat32 + + case DOUBLE: + + if strings.ToLower(column.typeName) == "float" { + if column.nullable { + return scanTypeNullFloat + } + + return scanTypeFloat32 + } + + if column.nullable { + return scanTypeNullFloat + } + + return scanTypeFloat64 + case DATE, TIME, TIME_TZ, DATETIME, DATETIME_TZ, DATETIME2, DATETIME2_TZ: + if column.nullable { + return scanTypeNullTime + } + + return scanTypeTime + + case DECIMAL, BINARY, VARBINARY, BLOB: + return scanTypeRawBytes + + case CHAR, VARCHAR2, VARCHAR, CLOB: + if column.nullable { + return scanTypeNullString + } + return scanTypeString + } + + return scanTypeUnknown +} + +func (column *column) Length() (length int64, ok bool) { + switch column.colType { + case BINARY, VARBINARY, BLOB, CHAR, VARCHAR2, VARCHAR, CLOB: + return int64(column.prec), true + } + + return int64(0), false +} + +func (column *column) PrecisionScale() (precision, scale int64, ok bool) { + switch column.colType { + case DECIMAL: + if column.prec == 0 { + return 38, int64(column.scale), true + } else { + return int64(column.prec), int64(column.scale), true + } + } + + return int64(0), int64(0), false +} + +func (column *column) getColumnData(bytes []byte, conn *DmConnection) (driver.Value, error) { + if bytes == nil { + return nil, nil + } + + switch column.colType { + case BOOLEAN: + return bytes[0] != 0, nil + case BIT: + if strings.ToLower(column.typeName) == "boolean" { + return bytes[0] != 0, nil + } + + return int8(bytes[0]), nil + case TINYINT: + return int8(bytes[0]), nil + case SMALLINT: + return Dm_build_650.Dm_build_747(bytes, 0), nil + case INT: + return Dm_build_650.Dm_build_752(bytes, 0), nil + case BIGINT: + return Dm_build_650.Dm_build_757(bytes, 0), nil + case REAL: + return Dm_build_650.Dm_build_762(bytes, 0), nil + case DOUBLE: + + return Dm_build_650.Dm_build_766(bytes, 0), nil + case DATE, TIME, DATETIME, TIME_TZ, DATETIME_TZ, DATETIME2, DATETIME2_TZ: + return DB2G.toTime(bytes, column, conn) + case INTERVAL_DT: + return newDmIntervalDTByBytes(bytes).String(), nil + case INTERVAL_YM: + return newDmIntervalYMByBytes(bytes).String(), nil + case DECIMAL: + tmp, err := DB2G.toDmDecimal(bytes, column, conn) + if err != nil { + return nil, err + } + return tmp.String(), nil + + case BINARY, VARBINARY: + return bytes, nil + case BLOB: + if isComplexType(int(column.colType), int(column.scale)) { + return DB2G.toComplexType(bytes, column, conn) + } + blob := DB2G.toDmBlob(bytes, column, conn) + + l, err := blob.GetLength() + if err != nil { + return nil, err + } + return blob.getBytes(1, int32(l)) + + case CHAR, VARCHAR2, VARCHAR: + return Dm_build_650.Dm_build_807(bytes, 0, len(bytes), conn.getServerEncoding(), conn), nil + case CLOB: + clob := DB2G.toDmClob(bytes, conn, column) + + l, err := clob.GetLength() + if err != nil { + return nil, err + } + return clob.getSubString(1, int32(l)) + + } + + return string(bytes), nil +} + +func emptyStringToNil(t int32) bool { + switch t { + case BOOLEAN, BIT, TINYINT, SMALLINT, INT, BIGINT, REAL, DOUBLE, DECIMAL, DATE, TIME, + DATETIME, INTERVAL_DT, INTERVAL_YM, TIME_TZ, DATETIME_TZ, DATETIME2, DATETIME2_TZ: + return true + default: + return false + } +} diff --git a/vendor/gitee.com/chunanyong/dm/zzo.go b/vendor/gitee.com/chunanyong/dm/zzo.go new file mode 100644 index 000000000..9f3abea82 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zzo.go @@ -0,0 +1,1389 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "strconv" + + "gitee.com/chunanyong/dm/util" +) + +const ( + ARRAY_TYPE_SHORT = 1 + + ARRAY_TYPE_INTEGER = 2 + + ARRAY_TYPE_LONG = 3 + + ARRAY_TYPE_FLOAT = 4 + + ARRAY_TYPE_DOUBLE = 5 +) + +var TypeDataSV TypeData + +type InterfaceTypeData interface { + toBytes(x *TypeData, typeDesc *TypeDescriptor) ([]byte, error) +} + +type TypeData struct { + m_dumyData interface{} + + m_offset int + + m_bufLen int + + m_dataBuf []byte + + m_objBlobDescBuf []byte + + m_isFromBlob bool + + m_packid int + + m_objRefArr []interface{} +} + +func newTypeData(val interface{}, dataBuf []byte) *TypeData { + td := new(TypeData).initTypeData() + td.m_dumyData = val + td.m_offset = 0 + td.m_bufLen = 0 + td.m_dataBuf = dataBuf + return td +} + +func (td *TypeData) initTypeData() *TypeData { + td.m_dumyData = nil + + td.m_offset = 0 + + td.m_bufLen = 0 + + td.m_dataBuf = nil + + td.m_objBlobDescBuf = nil + + td.m_isFromBlob = false + + td.m_packid = -1 + + td.m_objRefArr = make([]interface{}, 0) + + return td +} + +func (sv TypeData) toStruct(objArr []interface{}, desc *TypeDescriptor) ([]TypeData, error) { + size := desc.getStrctMemSize() + retData := make([]TypeData, size) + + for i := 0; i < size; i++ { + + if objArr[i] == nil { + retData[i] = *newTypeData(objArr[i], nil) + continue + } + + switch objArr[i].(type) { + case DmStruct, DmArray: + retData[i] = *newTypeData(objArr[i], nil) + default: + switch desc.m_fieldsObj[i].getDType() { + case CLASS, PLTYPE_RECORD: + tdArr, err := sv.toStruct(objArr[i].([]interface{}), &desc.m_fieldsObj[i]) + if err != nil { + return nil, err + } + + retData[i] = *newTypeData(newDmStructByTypeData(tdArr, &desc.m_fieldsObj[i]), nil) + case ARRAY, SARRAY: + tdArr, err := sv.toArray(objArr[i].([]interface{}), &desc.m_fieldsObj[i]) + if err != nil { + return nil, err + } + + retData[i] = *newTypeData(newDmArrayByTypeData(tdArr, &desc.m_fieldsObj[i]), nil) + default: + tdArr, err := sv.toMemberObj(objArr[i], &desc.m_fieldsObj[i]) + if err != nil { + return nil, err + } + retData[i] = *tdArr + } + + } + } + return retData, nil +} + +func (sv TypeData) toArray(objArr []interface{}, desc *TypeDescriptor) ([]TypeData, error) { + size := len(objArr) + retData := make([]TypeData, size) + for i := 0; i < size; i++ { + if objArr[i] == nil { + retData[i] = *newTypeData(objArr[i], nil) + continue + } + + switch objArr[i].(type) { + case DmStruct, DmArray: + retData[i] = *newTypeData(objArr[i], nil) + default: + switch desc.m_arrObj.getDType() { + case CLASS, PLTYPE_RECORD: + tdArr, err := sv.toStruct(objArr[i].([]interface{}), desc.m_arrObj) + if err != nil { + return nil, err + } + retData[i] = *newTypeData(newDmStructByTypeData(tdArr, desc.m_arrObj), nil) + case ARRAY, SARRAY: + + tmp, ok := objArr[i].([]interface{}) + + if !ok && desc.m_arrObj.m_arrObj != nil { + obj, err := sv.makeupObjToArr(tmp[i], desc.m_arrObj) + if err != nil { + return nil, err + } + objArr[i] = obj + } + + tdArr, err := sv.toArray(objArr[i].([]interface{}), desc.m_arrObj) + if err != nil { + return nil, err + } + + retData[i] = *newTypeData(newDmArrayByTypeData(tdArr, desc.m_arrObj), nil) + default: + tdArr, err := sv.toMemberObj(objArr[i], desc.m_arrObj) + if err != nil { + return nil, err + } + retData[i] = *tdArr + } + } + } + + return retData, nil +} + +func (sv TypeData) makeupObjToArr(obj interface{}, objDesc *TypeDescriptor) ([]interface{}, error) { + arrType := objDesc.getDType() + dynamic := true + arrLen := 0 + if arrType == SARRAY { + dynamic = false + arrLen = objDesc.m_length + } + + subType := objDesc.m_arrObj.getDType() + if subType == BINARY || subType == VARBINARY || subType == BIT { + + strRet := "" + switch v := obj.(type) { + case int: + strRet = strconv.FormatInt(int64(v), 2) + case int32: + strRet = strconv.FormatInt(int64(v), 2) + case int64: + strRet = strconv.FormatInt(v, 2) + case string: + strRet = v + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + var prec int + if dynamic { + prec = len(strRet) + } else { + prec = arrLen + } + + ret := make([]interface{}, prec) + rs := Dm_build_650.Dm_build_866(strRet, objDesc.getServerEncoding(), objDesc.m_conn) + for i := 0; i < prec; i++ { + ret[i] = rs[i] + } + + return ret, nil + } + + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (sv TypeData) toMemberObj(mem interface{}, desc *TypeDescriptor) (*TypeData, error) { + var bs []byte + scale := desc.getScale() + prec := desc.getPrec() + dtype := desc.getDType() + if mem == nil { + return newTypeData(nil, nil), nil + } + + param := new(parameter).InitParameter() + param.colType = int32(dtype) + param.prec = int32(prec) + param.scale = int32(scale) + + var err error + bs, err = G2DB.fromObject(mem, *param, desc.m_conn) + if err != nil { + return nil, err + } + + return newTypeData(mem, bs), nil +} + +func (sv TypeData) typeDataToBytes(data *TypeData, desc *TypeDescriptor) ([]byte, error) { + dType := desc.getDType() + var innerData []byte + var err error + if nil == data.m_dumyData { + innerData = sv.realocBuffer(nil, 0, 2) + Dm_build_650.Dm_build_651(innerData, 0, byte(0)) + Dm_build_650.Dm_build_651(innerData, 1, byte(0)) + return innerData, nil + } + + var result []byte + var offset int + switch dType { + case ARRAY: + + innerData, err = sv.arrayToBytes(data.m_dumyData.(*DmArray), desc) + if err != nil { + return nil, err + } + + result = sv.realocBuffer(nil, 0, len(innerData)+BYTE_SIZE+BYTE_SIZE) + + Dm_build_650.Dm_build_651(result, 0, byte(0)) + offset = 1 + + Dm_build_650.Dm_build_651(result, offset, byte(1)) + offset += 1 + copy(result[offset:offset+len(innerData)], innerData[:len(innerData)]) + return result, nil + + case SARRAY: + + innerData, err = sv.sarrayToBytes(data.m_dumyData.(*DmArray), desc) + if err != nil { + return nil, err + } + result = sv.realocBuffer(nil, 0, len(innerData)+BYTE_SIZE+BYTE_SIZE) + + Dm_build_650.Dm_build_651(result, 0, byte(0)) + offset = 1 + + Dm_build_650.Dm_build_651(result, offset, byte(1)) + offset += 1 + + copy(result[offset:offset+len(innerData)], innerData[:len(innerData)]) + return result, nil + + case CLASS: + + innerData, err = sv.objToBytes(data.m_dumyData, desc) + if err != nil { + return nil, err + } + result = sv.realocBuffer(nil, 0, len(innerData)+BYTE_SIZE+BYTE_SIZE) + + Dm_build_650.Dm_build_651(result, 0, byte(0)) + offset = 1 + + Dm_build_650.Dm_build_651(result, offset, byte(1)) + offset += 1 + copy(result[offset:offset+len(innerData)], innerData[:len(innerData)]) + return result, nil + + case PLTYPE_RECORD: + + innerData, err = sv.recordToBytes(data.m_dumyData.(*DmStruct), desc) + if err != nil { + return nil, err + } + result = sv.realocBuffer(nil, 0, len(innerData)+BYTE_SIZE+BYTE_SIZE) + + Dm_build_650.Dm_build_651(result, 0, byte(0)) + offset = 1 + + Dm_build_650.Dm_build_651(result, offset, byte(1)) + offset += 1 + + copy(result[offset:offset+len(innerData)], innerData[:len(innerData)]) + return result, nil + + case BLOB, CLOB: + innerData, err = sv.convertLobToBytes(data.m_dumyData, int(desc.column.colType), desc.getServerEncoding()) + + result = sv.realocBuffer(nil, 0, len(innerData)+BYTE_SIZE+BYTE_SIZE) + + Dm_build_650.Dm_build_651(result, 0, byte(0)) + offset = 1 + + Dm_build_650.Dm_build_651(result, offset, byte(1)) + offset += 1 + copy(result[offset:offset+len(innerData)], innerData[:len(innerData)]) + return result, nil + + case BOOLEAN: + innerData = sv.realocBuffer(nil, 0, 2) + Dm_build_650.Dm_build_651(innerData, 0, byte(0)) + if data.m_dataBuf != nil && len(data.m_dataBuf) > 0 { + Dm_build_650.Dm_build_651(innerData, 1, data.m_dataBuf[0]) + } else { + Dm_build_650.Dm_build_651(innerData, 1, byte(0)) + } + return innerData, nil + + default: + + innerData = data.m_dataBuf + result = sv.realocBuffer(nil, 0, len(innerData)+BYTE_SIZE+BYTE_SIZE+USINT_SIZE) + + Dm_build_650.Dm_build_651(result, 0, byte(0)) + offset = 1 + + Dm_build_650.Dm_build_651(result, offset, byte(1)) + offset += 1 + + Dm_build_650.Dm_build_661(result, offset, int16(len(innerData))) + offset += 2 + + copy(result[offset:offset+len(innerData)], innerData[:len(innerData)]) + + return result, nil + } +} + +func (sv TypeData) convertLobToBytes(value interface{}, dtype int, serverEncoding string) ([]byte, error) { + var tmp []byte + var ret []byte + if dtype == BLOB { + lob, ok := value.(DmBlob) + if ok { + l, err := lob.GetLength() + if err != nil { + return nil, err + } + tmp, err = lob.getBytes(1, int32(l)) + if err != nil { + return nil, err + } + + ret = make([]byte, l+ULINT_SIZE) + Dm_build_650.Dm_build_666(ret, 0, int32(l)) + copy(ret[:ULINT_SIZE:ULINT_SIZE+l], tmp[:l]) + return ret, nil + } + + } + + if dtype == CLOB { + lob, ok := value.(DmClob) + if ok { + l, err := lob.GetLength() + if err != nil { + return nil, err + } + + subString, err := lob.getSubString(1, int32(l)) + if err != nil { + return nil, err + } + + tmp = Dm_build_650.Dm_build_866(subString, serverEncoding, nil) + ret = make([]byte, len(tmp)+ULINT_SIZE) + Dm_build_650.Dm_build_666(ret, 0, int32(l)) + copy(ret[:ULINT_SIZE:ULINT_SIZE+l], tmp[:l]) + } + return ret, nil + } + + return nil, ECGO_DATA_CONVERTION_ERROR.throw() +} + +func (sv TypeData) sarrayToBytes(data *DmArray, desc *TypeDescriptor) ([]byte, error) { + realLen := len(data.m_arrData) + results := make([][]byte, realLen) + var rdata []byte + var err error + + if desc.getObjId() == 4 { + return sv.ctlnToBytes(data, desc) + } + + totalLen := 0 + for i := 0; i < realLen; i++ { + results[i], err = sv.typeDataToBytes(&data.m_arrData[i], desc.m_arrObj) + if err != nil { + return nil, err + } + totalLen += len(results[i]) + } + + totalLen += (ULINT_SIZE + ULINT_SIZE) + rdata = sv.realocBuffer(nil, 0, totalLen) + off := 0 + + Dm_build_650.Dm_build_666(rdata, off, int32(totalLen)) + off += ULINT_SIZE + + Dm_build_650.Dm_build_666(rdata, off, int32(data.m_arrDesc.getLength())) + off += ULINT_SIZE + + for i := 0; i < realLen; i++ { + copy(rdata[off:off+len(results[i])], results[i][:len(results[i])]) + off += len(results[i]) + } + + return rdata, nil +} + +func (sv TypeData) ctlnToBytes(data *DmArray, desc *TypeDescriptor) ([]byte, error) { + results := make([][]byte, len(data.m_arrData)) + var rdata []byte + var err error + + var totalLen int + totalLen = BYTE_SIZE + ULINT_SIZE + + totalLen += USINT_SIZE + USINT_SIZE + ULINT_SIZE + + for i := 0; i < len(data.m_arrData); i++ { + results[i], err = sv.typeDataToBytes(&data.m_arrData[i], desc.m_arrObj) + if err != nil { + return nil, err + } + totalLen += len(results[i]) + } + + rdata = sv.realocBuffer(nil, 0, totalLen) + + offset := 0 + + Dm_build_650.Dm_build_651(rdata, offset, byte(0)) + offset += BYTE_SIZE + + offset += ULINT_SIZE + + Dm_build_650.Dm_build_661(rdata, offset, int16(desc.getCltnType())) + offset += USINT_SIZE + + Dm_build_650.Dm_build_661(rdata, offset, int16(desc.m_arrObj.getDType())) + offset += USINT_SIZE + + Dm_build_650.Dm_build_666(rdata, offset, int32(len(data.m_arrData))) + offset += ULINT_SIZE + + for i := 0; i < len(data.m_arrData); i++ { + copy(rdata[offset:offset+len(results[i])], results[i][:len(results[i])]) + offset += len(results[i]) + } + + Dm_build_650.Dm_build_666(rdata, BYTE_SIZE, int32(offset)) + + return rdata, nil +} + +func (sv TypeData) arrayToBytes(data *DmArray, desc *TypeDescriptor) ([]byte, error) { + results := make([][]byte, len(data.m_arrData)) + var rdata []byte + var err error + if desc.getObjId() == 4 { + return sv.ctlnToBytes(data, desc) + } + + totalLen := 0 + for i := 0; i < len(data.m_arrData); i++ { + results[i], err = sv.typeDataToBytes(&data.m_arrData[i], desc.m_arrObj) + if err != nil { + return nil, err + } + totalLen += len(results[i]) + } + + totalLen += (ULINT_SIZE + ULINT_SIZE + ULINT_SIZE + ULINT_SIZE + ULINT_SIZE) + + total := data.m_objCount + data.m_strCount + if total > 0 { + totalLen += USINT_SIZE * total + } + + rdata = sv.realocBuffer(nil, 0, totalLen) + + Dm_build_650.Dm_build_666(rdata, 0, int32(totalLen)) + offset := ULINT_SIZE + + Dm_build_650.Dm_build_666(rdata, offset, int32(len(data.m_arrData))) + offset += ULINT_SIZE + + Dm_build_650.Dm_build_666(rdata, offset, 0) + offset += ULINT_SIZE + + Dm_build_650.Dm_build_666(rdata, offset, int32(data.m_objCount)) + offset += ULINT_SIZE + + Dm_build_650.Dm_build_666(rdata, offset, int32(data.m_strCount)) + offset += ULINT_SIZE + + for i := 0; i < total; i++ { + Dm_build_650.Dm_build_666(rdata, offset, int32(data.m_objStrOffs[i])) + offset += ULINT_SIZE + } + + for i := 0; i < len(data.m_arrData); i++ { + copy(rdata[offset:offset+len(results[i])], results[i][:len(results[i])]) + offset += len(results[i]) + } + + return rdata, nil +} + +func (sv TypeData) objToBytes(data interface{}, desc *TypeDescriptor) ([]byte, error) { + + switch data.(type) { + case *DmArray: + return sv.arrayToBytes(data.(*DmArray), desc) + default: + return sv.structToBytes(data.(*DmStruct), desc) + } +} + +func (sv TypeData) structToBytes(data *DmStruct, desc *TypeDescriptor) ([]byte, error) { + size := desc.getStrctMemSize() + results := make([][]byte, size) + var rdata []byte + var err error + + totalLen := 0 + for i := 0; i < size; i++ { + results[i], err = sv.typeDataToBytes(&data.m_attribs[i], &desc.m_fieldsObj[i]) + if err != nil { + return nil, err + } + totalLen += len(results[i]) + } + + totalLen += (BYTE_SIZE + ULINT_SIZE) + + rdata = sv.realocBuffer(nil, 0, totalLen) + offset := 0 + + Dm_build_650.Dm_build_651(rdata, offset, byte(0)) + offset += BYTE_SIZE + + Dm_build_650.Dm_build_666(rdata, offset, int32(totalLen)) + offset += ULINT_SIZE + + for i := 0; i < size; i++ { + copy(rdata[offset:offset+len(results[i])], results[i][:len(results[i])]) + offset += len(results[i]) + } + + return rdata, nil +} + +func (sv TypeData) recordToBytes(data *DmStruct, desc *TypeDescriptor) ([]byte, error) { + size := desc.getStrctMemSize() + results := make([][]byte, size) + var rdata []byte + var err error + + totalLen := 0 + for i := 0; i < size; i++ { + results[i], err = sv.typeDataToBytes(&data.m_attribs[i], &desc.m_fieldsObj[i]) + if err != nil { + return nil, err + } + totalLen += len(results[i]) + } + + totalLen += ULINT_SIZE + rdata = sv.realocBuffer(nil, 0, totalLen) + Dm_build_650.Dm_build_666(rdata, 0, int32(totalLen)) + + offset := ULINT_SIZE + for i := 0; i < desc.getStrctMemSize(); i++ { + copy(rdata[offset:offset+len(results[i])], results[i][:len(results[i])]) + offset += len(results[i]) + } + + return rdata, nil +} + +func (sv TypeData) bytesToBlob(val []byte, out *TypeData, desc *TypeDescriptor) (*TypeData, error) { + offset := out.m_offset + l := Dm_build_650.Dm_build_752(val, offset) + offset += ULINT_SIZE + + tmp := Dm_build_650.Dm_build_801(val, offset, int(l)) + offset += int(l) + out.m_offset = offset + + return newTypeData(newBlobOfLocal(tmp, desc.m_conn), tmp), nil +} + +func (sv TypeData) bytesToClob(val []byte, out *TypeData, desc *TypeDescriptor, serverEncoding string) (*TypeData, error) { + offset := out.m_offset + l := Dm_build_650.Dm_build_752(val, offset) + offset += ULINT_SIZE + + tmp := Dm_build_650.Dm_build_801(val, offset, int(l)) + offset += int(l) + out.m_offset = offset + + return newTypeData(newClobOfLocal(Dm_build_650.Dm_build_807(tmp, 0, len(tmp), serverEncoding, desc.m_conn), desc.m_conn), tmp), nil +} + +func (sv TypeData) bytesToTypeData(val []byte, out *TypeData, desc *TypeDescriptor) (*TypeData, error) { + offset := out.m_offset + + offset += 1 + + null_flag := Dm_build_650.Dm_build_743(val, offset) + offset += 1 + + out.m_offset = offset + + if desc.getDType() == BOOLEAN { + b := false + if null_flag != byte(0) { + b = true + } + + tmp := Dm_build_650.Dm_build_801(val, offset-1, 1) + return newTypeData(b, tmp), nil + } + + var retObj interface{} + var err error + var retDataBuf []byte + switch desc.getDType() { + case CLASS: + if null_flag&byte(1) != byte(0) { + retObj, err = sv.bytesToObj(val, out, desc) + if err != nil { + return nil, err + } + + if out.m_offset > offset { + retDataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + } + + return newTypeData(retObj, retDataBuf), nil + } else { + return newTypeData(nil, nil), nil + } + + case ARRAY: + if (null_flag & byte(1)) != byte(0) { + retObj, err = sv.bytesToArray(val, out, desc) + if err != nil { + return nil, err + } + + if out.m_offset > offset { + retDataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + } + + return newTypeData(retObj, retDataBuf), nil + } else { + return newTypeData(nil, nil), nil + } + + case PLTYPE_RECORD: + if (null_flag & byte(1)) != byte(0) { + retObj, err = sv.bytesToRecord(val, out, desc) + if err != nil { + return nil, err + } + + if out.m_offset > offset { + retDataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + } + + return newTypeData(retObj, retDataBuf), nil + } else { + return newTypeData(nil, nil), nil + } + + case SARRAY: + if (null_flag & byte(1)) != byte(0) { + retObj, err = sv.bytesToSArray(val, out, desc) + if err != nil { + return nil, err + } + + if out.m_offset > offset { + retDataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + } + + return newTypeData(retObj, retDataBuf), nil + } else { + return newTypeData(nil, nil), nil + } + + case BLOB: + if null_flag&byte(1) != byte(0) { + return sv.bytesToBlob(val, out, desc) + } else { + return newTypeData(nil, nil), nil + } + + case CLOB: + if null_flag&byte(1) != byte(0) { + return sv.bytesToClob(val, out, desc, desc.getServerEncoding()) + } else { + return newTypeData(nil, nil), nil + } + + default: + if null_flag&byte(1) != byte(0) { + return sv.convertBytes2BaseData(val, out, desc) + } else { + return newTypeData(nil, nil), nil + } + + } +} + +func (sv TypeData) checkObjExist(val []byte, out *TypeData) bool { + offset := out.m_offset + exist_flag := Dm_build_650.Dm_build_743(val, offset) + offset += 1 + + out.m_offset = offset + + if exist_flag == byte(1) { + return true + } + + out.m_offset += ULINT_SIZE + return false +} + +func (sv TypeData) findObjByPackId(val []byte, out *TypeData) (*DmStruct, error) { + offset := out.m_offset + + pack_id := int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + out.m_offset = offset + + if pack_id < 0 || pack_id > out.m_packid { + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + + return out.m_objRefArr[pack_id].(*DmStruct), nil +} + +func (sv TypeData) addObjToRefArr(out *TypeData, objToAdd interface{}) { + out.m_objRefArr = append(out.m_objRefArr, objToAdd) + out.m_packid++ +} + +func (sv TypeData) checkObjClnt(desc *TypeDescriptor) bool { + return desc.m_objId == 4 +} + +func (sv TypeData) bytesToObj_EXACT(val []byte, out *TypeData, desc *TypeDescriptor) (*DmStruct, error) { + strOut := newDmStructByTypeData(nil, desc) + var sub_desc *TypeDescriptor + offset := out.m_offset + + size := desc.getStrctMemSize() + + out.m_offset = offset + + strOut.m_attribs = make([]TypeData, size) + for i := 0; i < size; i++ { + sub_desc = &desc.m_fieldsObj[i] + tmp, err := sv.bytesToTypeData(val, out, sub_desc) + if err != nil { + return nil, err + } + strOut.m_attribs[i] = *tmp + } + + strOut.m_dataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + + return strOut, nil +} + +func (sv TypeData) bytesToNestTab(val []byte, out *TypeData, desc *TypeDescriptor) (*DmArray, error) { + offset := out.m_offset + + offset += USINT_SIZE + + count := Dm_build_650.Dm_build_752(val, offset) + offset += ULINT_SIZE + + out.m_offset = offset + + arrOut := newDmArrayByTypeData(nil, desc) + arrOut.m_itemCount = int(count) + arrOut.m_arrData = make([]TypeData, count) + for i := 0; i < int(count); i++ { + tmp, err := sv.bytesToTypeData(val, out, desc.m_arrObj) + if err != nil { + return nil, err + } + arrOut.m_arrData[i] = *tmp + } + + arrOut.m_dataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + + return arrOut, nil +} + +func (sv TypeData) bytesToClnt(val []byte, out *TypeData, desc *TypeDescriptor) (*DmArray, error) { + var array *DmArray + + offset := out.m_offset + + cltn_type := Dm_build_650.Dm_build_747(val, offset) + offset += USINT_SIZE + + out.m_offset = offset + switch cltn_type { + case CLTN_TYPE_IND_TABLE: + return nil, ECGO_UNSUPPORTED_TYPE.throw() + + case CLTN_TYPE_NST_TABLE, CLTN_TYPE_VARRAY: + return sv.bytesToNestTab(val, out, desc) + } + + return array, nil +} + +func (sv TypeData) bytesToObj(val []byte, out *TypeData, desc *TypeDescriptor) (interface{}, error) { + var retObj interface{} + var err error + if out == nil { + out = newTypeData(nil, nil) + } + + if sv.checkObjExist(val, out) { + retObj, err = sv.findObjByPackId(val, out) + if err != nil { + return nil, err + } + } else { + sv.addObjToRefArr(out, retObj) + } + + if sv.checkObjClnt(desc) { + retObj, err = sv.bytesToClnt(val, out, desc) + if err != nil { + return nil, err + } + } else { + retObj, err = sv.bytesToObj_EXACT(val, out, desc) + if err != nil { + return nil, err + } + } + + return retObj, nil +} + +func (sv TypeData) bytesToArray(val []byte, out *TypeData, desc *TypeDescriptor) (*DmArray, error) { + arrOut := newDmArrayByTypeData(nil, desc) + if out == nil { + out = newTypeData(nil, nil) + } + + offset := out.m_offset + + arrOut.m_bufLen = int(Dm_build_650.Dm_build_752(val, offset)) + offset += 4 + + arrOut.m_itemCount = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + arrOut.m_itemSize = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + arrOut.m_objCount = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + arrOut.m_strCount = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + total := arrOut.m_objCount + arrOut.m_strCount + arrOut.m_objStrOffs = make([]int, total) + for i := 0; i < total; i++ { + arrOut.m_objStrOffs[i] = int(Dm_build_650.Dm_build_752(val, offset)) + offset += 4 + } + + out.m_offset = offset + + arrOut.m_arrData = make([]TypeData, arrOut.m_itemCount) + for i := 0; i < arrOut.m_itemCount; i++ { + tmp, err := sv.bytesToTypeData(val, out, desc.m_arrObj) + if err != nil { + return nil, err + } + arrOut.m_arrData[i] = *tmp + } + + arrOut.m_dataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + + return arrOut, nil +} + +func (sv TypeData) bytesToSArray(val []byte, out *TypeData, desc *TypeDescriptor) (*DmArray, error) { + if out == nil { + out = newTypeData(nil, nil) + } + + offset := out.m_offset + + arrOut := newDmArrayByTypeData(nil, desc) + arrOut.m_bufLen = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + arrOut.m_itemCount = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + out.m_offset = offset + + arrOut.m_arrData = make([]TypeData, arrOut.m_itemCount) + for i := 0; i < arrOut.m_itemCount; i++ { + tmp, err := sv.bytesToTypeData(val, out, desc.m_arrObj) + if err != nil { + return nil, err + } + arrOut.m_arrData[i] = *tmp + } + + arrOut.m_dataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + + return arrOut, nil +} + +func (sv TypeData) bytesToRecord(val []byte, out *TypeData, desc *TypeDescriptor) (*DmStruct, error) { + if out == nil { + out = newTypeData(nil, nil) + } + + offset := out.m_offset + + strOut := newDmStructByTypeData(nil, desc) + strOut.m_bufLen = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + + out.m_offset = offset + + strOut.m_attribs = make([]TypeData, desc.getStrctMemSize()) + for i := 0; i < desc.getStrctMemSize(); i++ { + tmp, err := sv.bytesToTypeData(val, out, &desc.m_fieldsObj[i]) + if err != nil { + return nil, err + } + strOut.m_attribs[i] = *tmp + } + + strOut.m_dataBuf = Dm_build_650.Dm_build_801(val, offset, out.m_offset-offset) + + return strOut, nil +} + +func (sv TypeData) objBlob_GetChkBuf(buf []byte, typeData *TypeData) { + + offset := 4 + + l := int(Dm_build_650.Dm_build_752(buf, offset)) + offset += ULINT_SIZE + + typeData.m_objBlobDescBuf = Dm_build_650.Dm_build_801(buf, offset, l) + offset += l + + typeData.m_isFromBlob = true + + typeData.m_offset = offset +} + +func (sv TypeData) objBlobToObj(lob *DmBlob, desc *TypeDescriptor) (interface{}, error) { + typeData := newTypeData(nil, nil) + loblen, err := lob.GetLength() + if err != nil { + return nil, err + } + + buf, err := lob.getBytes(1, int32(loblen)) + if err != nil { + return nil, err + } + + sv.objBlob_GetChkBuf(buf, typeData) + + return sv.bytesToObj(buf, typeData, desc) +} + +func (sv TypeData) objBlobToBytes(lobBuf []byte, desc *TypeDescriptor) ([]byte, error) { + l := len(lobBuf) + offset := 0 + + magic := Dm_build_650.Dm_build_752(lobBuf, offset) + offset += ULINT_SIZE + + if OBJ_BLOB_MAGIC != magic { + return nil, ECGO_INVALID_OBJ_BLOB.throw() + } + + descLen := int(Dm_build_650.Dm_build_752(lobBuf, offset)) + offset += ULINT_SIZE + descBuf := Dm_build_650.Dm_build_801(lobBuf, offset, descLen) + tmp, err := desc.getClassDescChkInfo() + if err != nil { + return nil, err + } + if !util.SliceEquals(descBuf, tmp) { + return nil, ECGO_INVALID_OBJ_BLOB.throw() + } + offset += descLen + + ret := make([]byte, l-offset) + copy(ret[:len(ret)], lobBuf[offset:offset+len(ret)]) + return ret, nil +} + +func (sv TypeData) realocBuffer(oldBuf []byte, offset int, needLen int) []byte { + var retBuf []byte + + if oldBuf == nil { + return make([]byte, needLen) + } else if needLen+offset > len(oldBuf) { + retBuf = make([]byte, len(oldBuf)+needLen) + copy(retBuf[:offset], oldBuf[:offset]) + } else { + retBuf = oldBuf + } + + return retBuf +} + +func (sv TypeData) convertBytes2BaseData(val []byte, out *TypeData, desc *TypeDescriptor) (*TypeData, error) { + offset := out.m_offset + isNull := false + valueLen := int(Dm_build_650.Dm_build_774(val, offset)) + offset += USINT_SIZE + + if valueLen == int(Dm_build_60) { + valueLen = 0 + isNull = true + } + + if -1 == valueLen { + valueLen = int(Dm_build_650.Dm_build_752(val, offset)) + offset += ULINT_SIZE + } + + if isNull { + out.m_offset = offset + return newTypeData(nil, nil), nil + } + + var tmpObj interface{} + var err error + temp := Dm_build_650.Dm_build_801(val, offset, valueLen) + offset += valueLen + out.m_offset = offset + + tmpObj, err = DB2G.toObject(temp, desc.column, desc.m_conn) + if err != nil { + return nil, err + } + return newTypeData(tmpObj, temp), nil +} + +func (td *TypeData) toJavaArray(arr *DmArray, index int64, l int, dType int) (interface{}, error) { + if arr.m_objArray != nil { + return arr.m_objArray, nil + } + + var nr = make([]interface{}, l) + var tempData *TypeData + switch dType { + case CHAR, VARCHAR, VARCHAR2: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + case BIT, TINYINT: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } else { + nr[i] = nil + } + } + + case BINARY, VARBINARY: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + + case BOOLEAN: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } else { + nr[i] = nil + } + } + + case SMALLINT: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } else { + nr[i] = nil + } + } + + case INT: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } else { + nr[i] = nil + } + } + + case BIGINT: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } else { + nr[i] = nil + } + } + + case DECIMAL: + + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + case REAL: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } else { + nr[i] = nil + } + } + + case DOUBLE: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } else { + nr[i] = nil + } + } + + case DATE, TIME, DATETIME, TIME_TZ, DATETIME_TZ, DATETIME2, DATETIME2_TZ: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + + case INTERVAL_YM: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + + case INTERVAL_DT: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + + case PLTYPE_RECORD, CLASS, ARRAY, SARRAY: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil { + nr[i] = tempData.m_dumyData + } + } + + case BLOB: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + + case CLOB: + for i := 0; i < l; i++ { + tempData = &arr.m_arrData[index+int64(i)] + if tempData != nil && tempData.m_dumyData != nil { + nr[i] = tempData.m_dumyData + } + } + + default: + return nil, ECGO_UNSUPPORTED_TYPE.throw() + } + + return nr, nil +} + +func (td *TypeData) toNumericArray(arr *DmArray, index int64, l int, flag int) (interface{}, error) { + if nil == arr.m_objArray { + return nil, nil + } + + var retObj interface{} + switch arr.m_objArray.(type) { + case []int16: + if flag == ARRAY_TYPE_SHORT { + ret := make([]int16, l) + copy(ret[:l], arr.m_objArray.([]int16)[index:index+int64(l)]) + retObj = ret + } + case []int: + if flag == ARRAY_TYPE_INTEGER { + ret := make([]int, l) + copy(ret[:l], arr.m_objArray.([]int)[index:index+int64(l)]) + retObj = ret + } + case []int64: + if flag == ARRAY_TYPE_LONG { + ret := make([]int64, l) + copy(ret[:l], arr.m_objArray.([]int64)[index:index+int64(l)]) + retObj = ret + } + case []float32: + if flag == ARRAY_TYPE_FLOAT { + ret := make([]float32, l) + copy(ret[:l], arr.m_objArray.([]float32)[index:index+int64(l)]) + retObj = ret + } + case []float64: + if flag == ARRAY_TYPE_DOUBLE { + ret := make([]float64, l) + copy(ret[:l], arr.m_objArray.([]float64)[index:index+int64(l)]) + retObj = ret + } + default: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + } + + return retObj, nil +} + +func (td *TypeData) toJavaArrayByDmStruct(st *DmStruct) ([]interface{}, error) { + attrsData := st.getAttribsTypeData() + if nil == st.getAttribsTypeData() || len(st.getAttribsTypeData()) <= 0 { + return nil, nil + } + + fields := st.m_strctDesc.getItemsDesc() + if len(attrsData) != len(fields) { + return nil, ECGO_STRUCT_MEM_NOT_MATCH.throw() + } + + out := make([]interface{}, len(fields)) + for i := 0; i < len(fields); i++ { + out[i] = attrsData[i].m_dumyData + } + + return out, nil +} + +func (td *TypeData) toBytesFromDmArray(x *DmArray, typeDesc *TypeDescriptor) ([]byte, error) { + var err error + desc, err := typeDesc.getClassDescChkInfo() + if err != nil { + return nil, err + } + var data []byte + switch typeDesc.getDType() { + case ARRAY: + data, err = TypeDataSV.arrayToBytes(x, typeDesc) + if err != nil { + return nil, err + } + case SARRAY: + data, err = TypeDataSV.sarrayToBytes(x, typeDesc) + if err != nil { + return nil, err + } + case PLTYPE_RECORD: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + case CLASS: + data, err = TypeDataSV.objToBytes(x, typeDesc) + if err != nil { + return nil, err + } + } + ret := make([]byte, ULINT_SIZE+ULINT_SIZE+len(desc)+len(data)) + Dm_build_650.Dm_build_666(ret, 0, OBJ_BLOB_MAGIC) + Dm_build_650.Dm_build_666(ret, ULINT_SIZE, int32(len(desc))) + copy(ret[ULINT_SIZE+ULINT_SIZE:ULINT_SIZE+ULINT_SIZE+len(desc)], desc[:len(desc)]) + copy(ret[ULINT_SIZE+ULINT_SIZE+len(desc):ULINT_SIZE+ULINT_SIZE+len(desc)+len(data)], data[:len(data)]) + return ret, nil +} + +func (td *TypeData) toBytesFromDmStruct(x *DmStruct, typeDesc *TypeDescriptor) ([]byte, error) { + var err error + desc, err := typeDesc.getClassDescChkInfo() + if err != nil { + return nil, err + } + var data []byte + switch typeDesc.getDType() { + case ARRAY: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + case SARRAY: + return nil, ECGO_DATA_CONVERTION_ERROR.throw() + case PLTYPE_RECORD: + data, err = TypeDataSV.recordToBytes(x, typeDesc) + if err != nil { + return nil, err + } + case CLASS: + data, err = TypeDataSV.objToBytes(x, typeDesc) + if err != nil { + return nil, err + } + } + ret := make([]byte, ULINT_SIZE+ULINT_SIZE+len(desc)+len(data)) + Dm_build_650.Dm_build_666(ret, 0, OBJ_BLOB_MAGIC) + Dm_build_650.Dm_build_666(ret, ULINT_SIZE, int32(len(desc))) + copy(ret[ULINT_SIZE+ULINT_SIZE:ULINT_SIZE+ULINT_SIZE+len(desc)], desc[:len(desc)]) + copy(ret[ULINT_SIZE+ULINT_SIZE+len(desc):ULINT_SIZE+ULINT_SIZE+len(desc)+len(data)], data[:len(data)]) + return ret, nil +} diff --git a/vendor/gitee.com/chunanyong/dm/zzp.go b/vendor/gitee.com/chunanyong/dm/zzp.go new file mode 100644 index 000000000..449e30824 --- /dev/null +++ b/vendor/gitee.com/chunanyong/dm/zzp.go @@ -0,0 +1,763 @@ +/* + * Copyright (c) 2000-2018, 达梦数据库有限公司. + * All rights reserved. + */ +package dm + +import ( + "database/sql/driver" +) + +const ( + OBJ_BLOB_MAGIC = 78111999 + + CLTN_TYPE_IND_TABLE = 3 + + CLTN_TYPE_NST_TABLE = 2 + + CLTN_TYPE_VARRAY = 1 +) + +type TypeDescriptor struct { + column *column + + m_sqlName *sqlName + + m_objId int + + m_objVersion int + + m_outerId int + + m_outerVer int + + m_subId int + + m_cltnType int + + m_maxCnt int + + m_length int + + m_size int + + m_conn *DmConnection + + m_serverEncoding string + + m_arrObj *TypeDescriptor + + m_fieldsObj []TypeDescriptor + + m_descBuf []byte +} + +func newTypeDescriptorWithFulName(fulName string, conn *DmConnection) *TypeDescriptor { + td := new(TypeDescriptor) + td.init() + td.m_sqlName = newSqlNameByFulName(fulName) + td.m_conn = conn + return td +} + +func newTypeDescriptor(conn *DmConnection) *TypeDescriptor { + td := new(TypeDescriptor) + td.init() + td.m_sqlName = newSqlNameByConn(conn) + td.m_conn = conn + return td +} + +func (typeDescriptor *TypeDescriptor) init() { + typeDescriptor.column = new(column).InitColumn() + + typeDescriptor.m_sqlName = nil + + typeDescriptor.m_objId = -1 + + typeDescriptor.m_objVersion = -1 + + typeDescriptor.m_outerId = 0 + + typeDescriptor.m_outerVer = 0 + + typeDescriptor.m_subId = 0 + + typeDescriptor.m_cltnType = 0 + + typeDescriptor.m_maxCnt = 0 + + typeDescriptor.m_length = 0 + + typeDescriptor.m_size = 0 + + typeDescriptor.m_conn = nil + + typeDescriptor.m_serverEncoding = "" + + typeDescriptor.m_arrObj = nil + + typeDescriptor.m_fieldsObj = nil + + typeDescriptor.m_descBuf = nil +} + +func (typeDescriptor *TypeDescriptor) parseDescByName() error { + sql := "BEGIN ? = SF_DESCRIBE_TYPE(?); END;" + + params := make([]driver.Value, 2) + params[1] = typeDescriptor.m_sqlName.m_fulName + + rs, err := typeDescriptor.m_conn.query(sql, params) + if err != nil { + return err + } + rs.close() + l, err := params[0].(*DmBlob).GetLength() + if err != nil { + return err + } + + buf, err := params[0].(*DmBlob).getBytes(1, int32(l)) + if err != nil { + return err + } + typeDescriptor.m_serverEncoding = typeDescriptor.m_conn.getServerEncoding() + err = typeDescriptor.unpack(Dm_build_1014(buf)) + if err != nil { + return err + } + return nil +} + +func (typeDescriptor *TypeDescriptor) getFulName() (string, error) { + return typeDescriptor.m_sqlName.getFulName() +} + +func (typeDescriptor *TypeDescriptor) getDType() int { + return int(typeDescriptor.column.colType) +} + +func (typeDescriptor *TypeDescriptor) getPrec() int { + return int(typeDescriptor.column.prec) +} + +func (typeDescriptor *TypeDescriptor) getScale() int { + return int(typeDescriptor.column.scale) +} + +func (typeDescriptor *TypeDescriptor) getServerEncoding() string { + if typeDescriptor.m_serverEncoding == "" { + return typeDescriptor.m_conn.getServerEncoding() + } else { + return typeDescriptor.m_serverEncoding + } +} + +func (typeDescriptor *TypeDescriptor) getObjId() int { + return typeDescriptor.m_objId +} + +func (typeDescriptor *TypeDescriptor) getStaticArrayLength() int { + return typeDescriptor.m_length +} + +func (typeDescriptor *TypeDescriptor) getStrctMemSize() int { + return typeDescriptor.m_size +} + +func (typeDescriptor *TypeDescriptor) getOuterId() int { + return typeDescriptor.m_outerId +} + +func (typeDescriptor *TypeDescriptor) getCltnType() int { + return typeDescriptor.m_cltnType +} + +func (typeDescriptor *TypeDescriptor) getMaxCnt() int { + return typeDescriptor.m_maxCnt +} + +func getPackSize(typeDesc *TypeDescriptor) (int, error) { + len := 0 + + switch typeDesc.column.colType { + case ARRAY, SARRAY: + return getPackArraySize(typeDesc) + + case CLASS: + return getPackClassSize(typeDesc) + + case PLTYPE_RECORD: + return getPackRecordSize(typeDesc) + } + + len += ULINT_SIZE + + len += ULINT_SIZE + + len += ULINT_SIZE + + return len, nil +} + +func pack(typeDesc *TypeDescriptor, msg *Dm_build_1009) error { + switch typeDesc.column.colType { + case ARRAY, SARRAY: + return packArray(typeDesc, msg) + case CLASS: + return packClass(typeDesc, msg) + case PLTYPE_RECORD: + return packRecord(typeDesc, msg) + } + + msg.Dm_build_1064(typeDesc.column.colType) + + msg.Dm_build_1064(typeDesc.column.prec) + + msg.Dm_build_1064(typeDesc.column.scale) + return nil +} + +func getPackArraySize(arrDesc *TypeDescriptor) (int, error) { + l := 0 + + l += ULINT_SIZE + + name := arrDesc.m_sqlName.m_name + l += USINT_SIZE + + serverEncoding := arrDesc.getServerEncoding() + ret := Dm_build_650.Dm_build_866(name, serverEncoding, arrDesc.m_conn) + l += len(ret) + + l += ULINT_SIZE + + l += ULINT_SIZE + + l += ULINT_SIZE + + i, err := getPackSize(arrDesc.m_arrObj) + if err != nil { + return 0, err + } + + l += i + + return l, nil +} + +func packArray(arrDesc *TypeDescriptor, msg *Dm_build_1009) error { + + msg.Dm_build_1064(arrDesc.column.colType) + + msg.Dm_build_1120(arrDesc.m_sqlName.m_name, arrDesc.getServerEncoding(), arrDesc.m_conn) + + msg.Dm_build_1064(int32(arrDesc.m_objId)) + + msg.Dm_build_1064(int32(arrDesc.m_objVersion)) + + msg.Dm_build_1064(int32(arrDesc.m_length)) + + return pack(arrDesc.m_arrObj, msg) +} + +func packRecord(strctDesc *TypeDescriptor, msg *Dm_build_1009) error { + + msg.Dm_build_1064(strctDesc.column.colType) + + msg.Dm_build_1120(strctDesc.m_sqlName.m_name, strctDesc.getServerEncoding(), strctDesc.m_conn) + + msg.Dm_build_1064(int32(strctDesc.m_objId)) + + msg.Dm_build_1064(int32(strctDesc.m_objVersion)) + + msg.Dm_build_1060(int16(strctDesc.m_size)) + + for i := 0; i < strctDesc.m_size; i++ { + err := pack(&strctDesc.m_fieldsObj[i], msg) + if err != nil { + return err + } + } + return nil +} + +func getPackRecordSize(strctDesc *TypeDescriptor) (int, error) { + l := 0 + + l += ULINT_SIZE + + name := strctDesc.m_sqlName.m_name + l += USINT_SIZE + + serverEncoding := strctDesc.getServerEncoding() + ret := Dm_build_650.Dm_build_866(name, serverEncoding, strctDesc.m_conn) + l += len(ret) + + l += ULINT_SIZE + + l += ULINT_SIZE + + l += USINT_SIZE + + for i := 0; i < strctDesc.m_size; i++ { + i, err := getPackSize(&strctDesc.m_fieldsObj[i]) + if err != nil { + return 0, err + } + l += i + } + + return l, nil +} + +func getPackClassSize(strctDesc *TypeDescriptor) (int, error) { + l := 0 + + l += ULINT_SIZE + + name := strctDesc.m_sqlName.m_name + l += USINT_SIZE + + serverEncoding := strctDesc.getServerEncoding() + ret := Dm_build_650.Dm_build_866(name, serverEncoding, strctDesc.m_conn) + l += len(ret) + + l += ULINT_SIZE + + l += ULINT_SIZE + + if strctDesc.m_objId == 4 { + + l += ULINT_SIZE + + l += ULINT_SIZE + + l += USINT_SIZE + } + + return l, nil +} + +func packClass(strctDesc *TypeDescriptor, msg *Dm_build_1009) error { + + msg.Dm_build_1064(strctDesc.column.colType) + + msg.Dm_build_1120(strctDesc.m_sqlName.m_name, strctDesc.getServerEncoding(), strctDesc.m_conn) + + msg.Dm_build_1064(int32(strctDesc.m_objId)) + + msg.Dm_build_1064(int32(strctDesc.m_objVersion)) + + if strctDesc.m_objId == 4 { + + msg.Dm_build_1064(int32(strctDesc.m_outerId)) + + msg.Dm_build_1064(int32(strctDesc.m_outerVer)) + + msg.Dm_build_1064(int32(strctDesc.m_subId)) + + } + + return nil +} + +func (typeDescriptor *TypeDescriptor) unpack(buffer *Dm_build_1009) error { + + typeDescriptor.column.colType = buffer.Dm_build_1138() + + switch typeDescriptor.column.colType { + case ARRAY, SARRAY: + return typeDescriptor.unpackArray(buffer) + case CLASS: + return typeDescriptor.unpackClass(buffer) + case PLTYPE_RECORD: + return typeDescriptor.unpackRecord(buffer) + } + + typeDescriptor.column.prec = buffer.Dm_build_1138() + + typeDescriptor.column.scale = buffer.Dm_build_1138() + return nil +} + +func (typeDescriptor *TypeDescriptor) unpackArray(buffer *Dm_build_1009) error { + + typeDescriptor.m_sqlName.m_name = buffer.Dm_build_1188(typeDescriptor.getServerEncoding(), typeDescriptor.m_conn) + + typeDescriptor.m_sqlName.m_schId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_sqlName.m_packId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_objId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_objVersion = int(buffer.Dm_build_1138()) + + typeDescriptor.m_length = int(buffer.Dm_build_1138()) + if typeDescriptor.column.colType == ARRAY { + typeDescriptor.m_length = 0 + } + + typeDescriptor.m_arrObj = newTypeDescriptor(typeDescriptor.m_conn) + return typeDescriptor.m_arrObj.unpack(buffer) +} + +func (typeDescriptor *TypeDescriptor) unpackRecord(buffer *Dm_build_1009) error { + + typeDescriptor.m_sqlName.m_name = buffer.Dm_build_1188(typeDescriptor.getServerEncoding(), typeDescriptor.m_conn) + + typeDescriptor.m_sqlName.m_schId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_sqlName.m_packId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_objId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_objVersion = int(buffer.Dm_build_1138()) + + typeDescriptor.m_size = int(buffer.Dm_build_1153()) + + typeDescriptor.m_fieldsObj = make([]TypeDescriptor, typeDescriptor.m_size) + for i := 0; i < typeDescriptor.m_size; i++ { + typeDescriptor.m_fieldsObj[i] = *newTypeDescriptor(typeDescriptor.m_conn) + typeDescriptor.m_fieldsObj[i].unpack(buffer) + } + + return nil +} + +func (typeDescriptor *TypeDescriptor) unpackClnt_nestTab(buffer *Dm_build_1009) error { + + typeDescriptor.m_maxCnt = int(buffer.Dm_build_1138()) + + typeDescriptor.m_arrObj = newTypeDescriptor(typeDescriptor.m_conn) + + typeDescriptor.m_arrObj.unpack(buffer) + + return nil +} + +func (typeDescriptor *TypeDescriptor) unpackClnt(buffer *Dm_build_1009) error { + + typeDescriptor.m_outerId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_outerVer = int(buffer.Dm_build_1138()) + + typeDescriptor.m_subId = int(buffer.Dm_build_1153()) + + typeDescriptor.m_cltnType = int(buffer.Dm_build_1153()) + + switch typeDescriptor.m_cltnType { + case CLTN_TYPE_IND_TABLE: + return ECGO_UNSUPPORTED_TYPE.throw() + + case CLTN_TYPE_NST_TABLE, CLTN_TYPE_VARRAY: + return typeDescriptor.unpackClnt_nestTab(buffer) + + } + return nil +} + +func (typeDescriptor *TypeDescriptor) unpackClass(buffer *Dm_build_1009) error { + + typeDescriptor.m_sqlName.m_name = buffer.Dm_build_1188(typeDescriptor.getServerEncoding(), typeDescriptor.m_conn) + + typeDescriptor.m_sqlName.m_schId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_sqlName.m_packId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_objId = int(buffer.Dm_build_1138()) + + typeDescriptor.m_objVersion = int(buffer.Dm_build_1138()) + + if typeDescriptor.m_objId == 4 { + return typeDescriptor.unpackClnt(buffer) + } else { + + typeDescriptor.m_size = int(buffer.Dm_build_1153()) + + typeDescriptor.m_fieldsObj = make([]TypeDescriptor, typeDescriptor.m_size) + for i := 0; i < typeDescriptor.m_size; i++ { + typeDescriptor.m_fieldsObj[i] = *newTypeDescriptor(typeDescriptor.m_conn) + err := typeDescriptor.m_fieldsObj[i].unpack(buffer) + if err != nil { + return err + } + } + return nil + } + +} + +func calcChkDescLen_array(desc *TypeDescriptor) (int, error) { + offset := 0 + + offset += USINT_SIZE + + offset += ULINT_SIZE + + tmp, err := calcChkDescLen(desc) + if err != nil { + return 0, err + } + + offset += tmp + + return offset, nil +} + +func calcChkDescLen_record(desc *TypeDescriptor) (int, error) { + offset := 0 + + offset += USINT_SIZE + + offset += USINT_SIZE + + for i := 0; i < desc.m_size; i++ { + tmp, err := calcChkDescLen(&desc.m_fieldsObj[i]) + if err != nil { + return 0, err + } + offset += tmp + } + + return offset, nil +} + +func calcChkDescLen_class_normal(desc *TypeDescriptor) (int, error) { + offset := 0 + + offset += USINT_SIZE + + for i := 0; i < desc.m_size; i++ { + tmp, err := calcChkDescLen(&desc.m_fieldsObj[i]) + if err != nil { + return 0, err + } + offset += tmp + } + + return offset, nil +} + +func calcChkDescLen_class_cnlt(desc *TypeDescriptor) (int, error) { + offset := 0 + + offset += USINT_SIZE + + offset += ULINT_SIZE + + switch desc.getCltnType() { + case CLTN_TYPE_IND_TABLE: + return 0, ECGO_UNSUPPORTED_TYPE.throw() + + case CLTN_TYPE_VARRAY, CLTN_TYPE_NST_TABLE: + + i, err := calcChkDescLen(desc.m_arrObj) + if err != nil { + return 0, err + } + + offset += i + } + + return offset, nil +} + +func calcChkDescLen_class(desc *TypeDescriptor) (int, error) { + offset := 0 + + offset += USINT_SIZE + + offset += BYTE_SIZE + + if desc.m_objId == 4 { + i, err := calcChkDescLen_class_cnlt(desc) + if err != nil { + return 0, err + } + offset += i + } else { + i, err := calcChkDescLen_class_normal(desc) + if err != nil { + return 0, err + } + offset += i + } + + return offset, nil +} + +func calcChkDescLen_buildin() int { + offset := 0 + + offset += USINT_SIZE + + offset += USINT_SIZE + + offset += USINT_SIZE + + return offset +} + +func calcChkDescLen(desc *TypeDescriptor) (int, error) { + + switch desc.getDType() { + case ARRAY, SARRAY: + return calcChkDescLen_array(desc) + + case PLTYPE_RECORD: + return calcChkDescLen_record(desc) + + case CLASS: + return calcChkDescLen_class(desc) + + default: + return calcChkDescLen_buildin(), nil + } + +} + +func (typeDescriptor *TypeDescriptor) makeChkDesc_array(offset int, desc *TypeDescriptor) (int, error) { + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, ARRAY) + offset += USINT_SIZE + + Dm_build_650.Dm_build_666(typeDescriptor.m_descBuf, offset, int32(desc.m_length)) + offset += ULINT_SIZE + + return typeDescriptor.makeChkDesc(offset, desc) +} + +func (typeDescriptor *TypeDescriptor) makeChkDesc_record(offset int, desc *TypeDescriptor) (int, error) { + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, PLTYPE_RECORD) + offset += USINT_SIZE + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, int16(desc.m_size)) + offset += USINT_SIZE + var err error + for i := 0; i < desc.m_size; i++ { + offset, err = typeDescriptor.makeChkDesc(offset, &desc.m_fieldsObj[i]) + if err != nil { + return 0, err + } + } + + return offset, nil +} + +func (typeDescriptor *TypeDescriptor) makeChkDesc_buildin(offset int, desc *TypeDescriptor) int { + dtype := int16(desc.getDType()) + prec := 0 + scale := 0 + + if dtype != BLOB { + prec = desc.getPrec() + scale = desc.getScale() + } + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, dtype) + offset += USINT_SIZE + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, int16(prec)) + offset += USINT_SIZE + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, int16(scale)) + offset += USINT_SIZE + + return offset +} + +func (typeDescriptor *TypeDescriptor) makeChkDesc_class_normal(offset int, desc *TypeDescriptor) (int, error) { + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, int16(desc.m_size)) + offset += USINT_SIZE + var err error + + for i := 0; i < desc.m_size; i++ { + offset, err = typeDescriptor.makeChkDesc(offset, &desc.m_fieldsObj[i]) + if err != nil { + return 0, err + } + } + + return offset, nil +} + +func (typeDescriptor *TypeDescriptor) makeChkDesc_class_clnt(offset int, desc *TypeDescriptor) (int, error) { + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, int16(desc.m_cltnType)) + offset += USINT_SIZE + + Dm_build_650.Dm_build_666(typeDescriptor.m_descBuf, offset, int32(desc.getMaxCnt())) + offset += ULINT_SIZE + + switch desc.m_cltnType { + case CLTN_TYPE_IND_TABLE: + return 0, ECGO_UNSUPPORTED_TYPE.throw() + + case CLTN_TYPE_NST_TABLE, CLTN_TYPE_VARRAY: + + return typeDescriptor.makeChkDesc(offset, desc.m_arrObj) + } + + return offset, nil +} + +func (typeDescriptor *TypeDescriptor) makeChkDesc_class(offset int, desc *TypeDescriptor) (int, error) { + + Dm_build_650.Dm_build_661(typeDescriptor.m_descBuf, offset, CLASS) + offset += USINT_SIZE + + isClnt := false + if desc.m_objId == 4 { + isClnt = true + } + + if isClnt { + Dm_build_650.Dm_build_651(typeDescriptor.m_descBuf, offset, byte(1)) + } else { + Dm_build_650.Dm_build_651(typeDescriptor.m_descBuf, offset, byte(0)) + } + + offset += BYTE_SIZE + + if isClnt { + return typeDescriptor.makeChkDesc_class_clnt(offset, desc) + } else { + return typeDescriptor.makeChkDesc_class_normal(offset, desc) + } +} + +func (typeDescriptor *TypeDescriptor) makeChkDesc(offset int, subDesc *TypeDescriptor) (int, error) { + switch subDesc.getDType() { + case ARRAY, SARRAY: + return typeDescriptor.makeChkDesc_array(offset, subDesc) + + case PLTYPE_RECORD: + return typeDescriptor.makeChkDesc_record(offset, subDesc) + + case CLASS: + return typeDescriptor.makeChkDesc_class(offset, subDesc) + + default: + return typeDescriptor.makeChkDesc_buildin(offset, subDesc), nil + } + +} + +func (typeDescriptor *TypeDescriptor) getClassDescChkInfo() ([]byte, error) { + if typeDescriptor.m_descBuf != nil { + return typeDescriptor.m_descBuf, nil + } + + l, err := calcChkDescLen(typeDescriptor) + if err != nil { + return nil, err + } + typeDescriptor.m_descBuf = make([]byte, l) + + typeDescriptor.makeChkDesc(0, typeDescriptor) + return typeDescriptor.m_descBuf, nil +} diff --git a/vendor/github.com/golang/snappy/.gitignore b/vendor/github.com/golang/snappy/.gitignore new file mode 100644 index 000000000..042091d9b --- /dev/null +++ b/vendor/github.com/golang/snappy/.gitignore @@ -0,0 +1,16 @@ +cmd/snappytool/snappytool +testdata/bench + +# These explicitly listed benchmark data files are for an obsolete version of +# snappy_test.go. +testdata/alice29.txt +testdata/asyoulik.txt +testdata/fireworks.jpeg +testdata/geo.protodata +testdata/html +testdata/html_x_4 +testdata/kppkn.gtb +testdata/lcet10.txt +testdata/paper-100k.pdf +testdata/plrabn12.txt +testdata/urls.10K diff --git a/vendor/github.com/golang/snappy/AUTHORS b/vendor/github.com/golang/snappy/AUTHORS new file mode 100644 index 000000000..203e84eba --- /dev/null +++ b/vendor/github.com/golang/snappy/AUTHORS @@ -0,0 +1,17 @@ +# This is the official list of Snappy-Go authors for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as +# Name or Organization +# The email address is not required for organizations. + +# Please keep the list sorted. + +Amazon.com, Inc +Damian Gryski +Google Inc. +Jan Mercl <0xjnml@gmail.com> +Klaus Post +Rodolfo Carvalho +Sebastien Binet diff --git a/vendor/github.com/golang/snappy/CONTRIBUTORS b/vendor/github.com/golang/snappy/CONTRIBUTORS new file mode 100644 index 000000000..d9914732b --- /dev/null +++ b/vendor/github.com/golang/snappy/CONTRIBUTORS @@ -0,0 +1,39 @@ +# This is the official list of people who can contribute +# (and typically have contributed) code to the Snappy-Go repository. +# The AUTHORS file lists the copyright holders; this file +# lists people. For example, Google employees are listed here +# but not in AUTHORS, because Google holds the copyright. +# +# The submission process automatically checks to make sure +# that people submitting code are listed in this file (by email address). +# +# Names should be added to this file only after verifying that +# the individual or the individual's organization has agreed to +# the appropriate Contributor License Agreement, found here: +# +# http://code.google.com/legal/individual-cla-v1.0.html +# http://code.google.com/legal/corporate-cla-v1.0.html +# +# The agreement for individuals can be filled out on the web. +# +# When adding J Random Contributor's name to this file, +# either J's name or J's organization's name should be +# added to the AUTHORS file, depending on whether the +# individual or corporate CLA was used. + +# Names should be added to this file like so: +# Name + +# Please keep the list sorted. + +Damian Gryski +Jan Mercl <0xjnml@gmail.com> +Jonathan Swinney +Kai Backman +Klaus Post +Marc-Antoine Ruel +Nigel Tao +Rob Pike +Rodolfo Carvalho +Russ Cox +Sebastien Binet diff --git a/vendor/github.com/golang/snappy/LICENSE b/vendor/github.com/golang/snappy/LICENSE new file mode 100644 index 000000000..6050c10f4 --- /dev/null +++ b/vendor/github.com/golang/snappy/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2011 The Snappy-Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/golang/snappy/README b/vendor/github.com/golang/snappy/README new file mode 100644 index 000000000..cea12879a --- /dev/null +++ b/vendor/github.com/golang/snappy/README @@ -0,0 +1,107 @@ +The Snappy compression format in the Go programming language. + +To download and install from source: +$ go get github.com/golang/snappy + +Unless otherwise noted, the Snappy-Go source files are distributed +under the BSD-style license found in the LICENSE file. + + + +Benchmarks. + +The golang/snappy benchmarks include compressing (Z) and decompressing (U) ten +or so files, the same set used by the C++ Snappy code (github.com/google/snappy +and note the "google", not "golang"). On an "Intel(R) Core(TM) i7-3770 CPU @ +3.40GHz", Go's GOARCH=amd64 numbers as of 2016-05-29: + +"go test -test.bench=." + +_UFlat0-8 2.19GB/s ± 0% html +_UFlat1-8 1.41GB/s ± 0% urls +_UFlat2-8 23.5GB/s ± 2% jpg +_UFlat3-8 1.91GB/s ± 0% jpg_200 +_UFlat4-8 14.0GB/s ± 1% pdf +_UFlat5-8 1.97GB/s ± 0% html4 +_UFlat6-8 814MB/s ± 0% txt1 +_UFlat7-8 785MB/s ± 0% txt2 +_UFlat8-8 857MB/s ± 0% txt3 +_UFlat9-8 719MB/s ± 1% txt4 +_UFlat10-8 2.84GB/s ± 0% pb +_UFlat11-8 1.05GB/s ± 0% gaviota + +_ZFlat0-8 1.04GB/s ± 0% html +_ZFlat1-8 534MB/s ± 0% urls +_ZFlat2-8 15.7GB/s ± 1% jpg +_ZFlat3-8 740MB/s ± 3% jpg_200 +_ZFlat4-8 9.20GB/s ± 1% pdf +_ZFlat5-8 991MB/s ± 0% html4 +_ZFlat6-8 379MB/s ± 0% txt1 +_ZFlat7-8 352MB/s ± 0% txt2 +_ZFlat8-8 396MB/s ± 1% txt3 +_ZFlat9-8 327MB/s ± 1% txt4 +_ZFlat10-8 1.33GB/s ± 1% pb +_ZFlat11-8 605MB/s ± 1% gaviota + + + +"go test -test.bench=. -tags=noasm" + +_UFlat0-8 621MB/s ± 2% html +_UFlat1-8 494MB/s ± 1% urls +_UFlat2-8 23.2GB/s ± 1% jpg +_UFlat3-8 1.12GB/s ± 1% jpg_200 +_UFlat4-8 4.35GB/s ± 1% pdf +_UFlat5-8 609MB/s ± 0% html4 +_UFlat6-8 296MB/s ± 0% txt1 +_UFlat7-8 288MB/s ± 0% txt2 +_UFlat8-8 309MB/s ± 1% txt3 +_UFlat9-8 280MB/s ± 1% txt4 +_UFlat10-8 753MB/s ± 0% pb +_UFlat11-8 400MB/s ± 0% gaviota + +_ZFlat0-8 409MB/s ± 1% html +_ZFlat1-8 250MB/s ± 1% urls +_ZFlat2-8 12.3GB/s ± 1% jpg +_ZFlat3-8 132MB/s ± 0% jpg_200 +_ZFlat4-8 2.92GB/s ± 0% pdf +_ZFlat5-8 405MB/s ± 1% html4 +_ZFlat6-8 179MB/s ± 1% txt1 +_ZFlat7-8 170MB/s ± 1% txt2 +_ZFlat8-8 189MB/s ± 1% txt3 +_ZFlat9-8 164MB/s ± 1% txt4 +_ZFlat10-8 479MB/s ± 1% pb +_ZFlat11-8 270MB/s ± 1% gaviota + + + +For comparison (Go's encoded output is byte-for-byte identical to C++'s), here +are the numbers from C++ Snappy's + +make CXXFLAGS="-O2 -DNDEBUG -g" clean snappy_unittest.log && cat snappy_unittest.log + +BM_UFlat/0 2.4GB/s html +BM_UFlat/1 1.4GB/s urls +BM_UFlat/2 21.8GB/s jpg +BM_UFlat/3 1.5GB/s jpg_200 +BM_UFlat/4 13.3GB/s pdf +BM_UFlat/5 2.1GB/s html4 +BM_UFlat/6 1.0GB/s txt1 +BM_UFlat/7 959.4MB/s txt2 +BM_UFlat/8 1.0GB/s txt3 +BM_UFlat/9 864.5MB/s txt4 +BM_UFlat/10 2.9GB/s pb +BM_UFlat/11 1.2GB/s gaviota + +BM_ZFlat/0 944.3MB/s html (22.31 %) +BM_ZFlat/1 501.6MB/s urls (47.78 %) +BM_ZFlat/2 14.3GB/s jpg (99.95 %) +BM_ZFlat/3 538.3MB/s jpg_200 (73.00 %) +BM_ZFlat/4 8.3GB/s pdf (83.30 %) +BM_ZFlat/5 903.5MB/s html4 (22.52 %) +BM_ZFlat/6 336.0MB/s txt1 (57.88 %) +BM_ZFlat/7 312.3MB/s txt2 (61.91 %) +BM_ZFlat/8 353.1MB/s txt3 (54.99 %) +BM_ZFlat/9 289.9MB/s txt4 (66.26 %) +BM_ZFlat/10 1.2GB/s pb (19.68 %) +BM_ZFlat/11 527.4MB/s gaviota (37.72 %) diff --git a/vendor/github.com/golang/snappy/decode.go b/vendor/github.com/golang/snappy/decode.go new file mode 100644 index 000000000..f1e04b172 --- /dev/null +++ b/vendor/github.com/golang/snappy/decode.go @@ -0,0 +1,241 @@ +// Copyright 2011 The Snappy-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 snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +var ( + // ErrCorrupt reports that the input is invalid. + ErrCorrupt = errors.New("snappy: corrupt input") + // ErrTooLarge reports that the uncompressed length is too large. + ErrTooLarge = errors.New("snappy: decoded block is too large") + // ErrUnsupported reports that the input isn't supported. + ErrUnsupported = errors.New("snappy: unsupported input") + + errUnsupportedLiteralLength = errors.New("snappy: unsupported literal length") +) + +// DecodedLen returns the length of the decoded block. +func DecodedLen(src []byte) (int, error) { + v, _, err := decodedLen(src) + return v, err +} + +// decodedLen returns the length of the decoded block and the number of bytes +// that the length header occupied. +func decodedLen(src []byte) (blockLen, headerLen int, err error) { + v, n := binary.Uvarint(src) + if n <= 0 || v > 0xffffffff { + return 0, 0, ErrCorrupt + } + + const wordSize = 32 << (^uint(0) >> 32 & 1) + if wordSize == 32 && v > 0x7fffffff { + return 0, 0, ErrTooLarge + } + return int(v), n, nil +} + +const ( + decodeErrCodeCorrupt = 1 + decodeErrCodeUnsupportedLiteralLength = 2 +) + +// Decode returns the decoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire decoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Decode handles the Snappy block format, not the Snappy stream format. +func Decode(dst, src []byte) ([]byte, error) { + dLen, s, err := decodedLen(src) + if err != nil { + return nil, err + } + if dLen <= len(dst) { + dst = dst[:dLen] + } else { + dst = make([]byte, dLen) + } + switch decode(dst, src[s:]) { + case 0: + return dst, nil + case decodeErrCodeUnsupportedLiteralLength: + return nil, errUnsupportedLiteralLength + } + return nil, ErrCorrupt +} + +// NewReader returns a new Reader that decompresses from r, using the framing +// format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +func NewReader(r io.Reader) *Reader { + return &Reader{ + r: r, + decoded: make([]byte, maxBlockSize), + buf: make([]byte, maxEncodedLenOfMaxBlockSize+checksumSize), + } +} + +// Reader is an io.Reader that can read Snappy-compressed bytes. +// +// Reader handles the Snappy stream format, not the Snappy block format. +type Reader struct { + r io.Reader + err error + decoded []byte + buf []byte + // decoded[i:j] contains decoded bytes that have not yet been passed on. + i, j int + readHeader bool +} + +// Reset discards any buffered data, resets all state, and switches the Snappy +// reader to read from r. This permits reusing a Reader rather than allocating +// a new one. +func (r *Reader) Reset(reader io.Reader) { + r.r = reader + r.err = nil + r.i = 0 + r.j = 0 + r.readHeader = false +} + +func (r *Reader) readFull(p []byte, allowEOF bool) (ok bool) { + if _, r.err = io.ReadFull(r.r, p); r.err != nil { + if r.err == io.ErrUnexpectedEOF || (r.err == io.EOF && !allowEOF) { + r.err = ErrCorrupt + } + return false + } + return true +} + +// Read satisfies the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + if r.err != nil { + return 0, r.err + } + for { + if r.i < r.j { + n := copy(p, r.decoded[r.i:r.j]) + r.i += n + return n, nil + } + if !r.readFull(r.buf[:4], true) { + return 0, r.err + } + chunkType := r.buf[0] + if !r.readHeader { + if chunkType != chunkTypeStreamIdentifier { + r.err = ErrCorrupt + return 0, r.err + } + r.readHeader = true + } + chunkLen := int(r.buf[1]) | int(r.buf[2])<<8 | int(r.buf[3])<<16 + if chunkLen > len(r.buf) { + r.err = ErrUnsupported + return 0, r.err + } + + // The chunk types are specified at + // https://github.com/google/snappy/blob/master/framing_format.txt + switch chunkType { + case chunkTypeCompressedData: + // Section 4.2. Compressed data (chunk type 0x00). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return 0, r.err + } + buf := r.buf[:chunkLen] + if !r.readFull(buf, false) { + return 0, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + buf = buf[checksumSize:] + + n, err := DecodedLen(buf) + if err != nil { + r.err = err + return 0, r.err + } + if n > len(r.decoded) { + r.err = ErrCorrupt + return 0, r.err + } + if _, err := Decode(r.decoded, buf); err != nil { + r.err = err + return 0, r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return 0, r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeUncompressedData: + // Section 4.3. Uncompressed data (chunk type 0x01). + if chunkLen < checksumSize { + r.err = ErrCorrupt + return 0, r.err + } + buf := r.buf[:checksumSize] + if !r.readFull(buf, false) { + return 0, r.err + } + checksum := uint32(buf[0]) | uint32(buf[1])<<8 | uint32(buf[2])<<16 | uint32(buf[3])<<24 + // Read directly into r.decoded instead of via r.buf. + n := chunkLen - checksumSize + if n > len(r.decoded) { + r.err = ErrCorrupt + return 0, r.err + } + if !r.readFull(r.decoded[:n], false) { + return 0, r.err + } + if crc(r.decoded[:n]) != checksum { + r.err = ErrCorrupt + return 0, r.err + } + r.i, r.j = 0, n + continue + + case chunkTypeStreamIdentifier: + // Section 4.1. Stream identifier (chunk type 0xff). + if chunkLen != len(magicBody) { + r.err = ErrCorrupt + return 0, r.err + } + if !r.readFull(r.buf[:len(magicBody)], false) { + return 0, r.err + } + for i := 0; i < len(magicBody); i++ { + if r.buf[i] != magicBody[i] { + r.err = ErrCorrupt + return 0, r.err + } + } + continue + } + + if chunkType <= 0x7f { + // Section 4.5. Reserved unskippable chunks (chunk types 0x02-0x7f). + r.err = ErrUnsupported + return 0, r.err + } + // Section 4.4 Padding (chunk type 0xfe). + // Section 4.6. Reserved skippable chunks (chunk types 0x80-0xfd). + if !r.readFull(r.buf[:chunkLen], false) { + return 0, r.err + } + } +} diff --git a/vendor/github.com/golang/snappy/decode_amd64.s b/vendor/github.com/golang/snappy/decode_amd64.s new file mode 100644 index 000000000..e6179f65e --- /dev/null +++ b/vendor/github.com/golang/snappy/decode_amd64.s @@ -0,0 +1,490 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - AX scratch +// - BX scratch +// - CX length or x +// - DX offset +// - SI &src[s] +// - DI &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly DI - R8, and len(dst)-d is R10 - DI. +// The s variable is implicitly SI - R11, and len(src)-s is R13 - SI. +TEXT ·decode(SB), NOSPLIT, $48-56 + // Initialize SI, DI and R8-R13. + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, DI + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, SI + MOVQ R11, R13 + ADDQ R12, R13 + +loop: + // for s < len(src) + CMPQ SI, R13 + JEQ end + + // CX = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBLZX (SI), CX + MOVL CX, BX + ANDL $3, BX + CMPL BX, $1 + JAE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + SHRL $2, CX + CMPL CX, $60 + JAE tagLit60Plus + + // case x < 60: + // s++ + INCQ SI + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that CX == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // CX can hold 64 bits, so the increment cannot overflow. + INCQ CX + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // AX = len(dst) - d + // BX = len(src) - s + MOVQ R10, AX + SUBQ DI, AX + MOVQ R13, BX + SUBQ SI, BX + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMPQ CX, $16 + JGT callMemmove + CMPQ AX, $16 + JLT callMemmove + CMPQ BX, $16 + JLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(SI), X0 + MOVOU X0, 0(DI) + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMPQ CX, AX + JGT errCorrupt + CMPQ CX, BX + JGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // DI, SI and CX as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVQ DI, 0(SP) + MOVQ SI, 8(SP) + MOVQ CX, 16(SP) + MOVQ DI, 24(SP) + MOVQ SI, 32(SP) + MOVQ CX, 40(SP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVQ 24(SP), DI + MOVQ 32(SP), SI + MOVQ 40(SP), CX + MOVQ dst_base+0(FP), R8 + MOVQ dst_len+8(FP), R9 + MOVQ R8, R10 + ADDQ R9, R10 + MOVQ src_base+24(FP), R11 + MOVQ src_len+32(FP), R12 + MOVQ R11, R13 + ADDQ R12, R13 + + // d += length + // s += length + ADDQ CX, DI + ADDQ CX, SI + JMP loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADDQ CX, SI + SUBQ $58, SI + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // case x == 60: + CMPL CX, $61 + JEQ tagLit61 + JA tagLit62Plus + + // x = uint32(src[s-1]) + MOVBLZX -1(SI), CX + JMP doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVWLZX -2(SI), CX + JMP doLit + +tagLit62Plus: + CMPL CX, $62 + JA tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVWLZX -3(SI), CX + MOVBLZX -1(SI), BX + SHLL $16, BX + ORL BX, CX + JMP doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVL -4(SI), CX + JMP doLit + +// The code above handles literal tags. +// ---------------------------------------- +// The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADDQ $5, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-5])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVLQZX -4(SI), DX + JMP doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADDQ $3, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // length = 1 + int(src[s-3])>>2 + SHRQ $2, CX + INCQ CX + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVWQZX -2(SI), DX + JMP doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - BX == src[s] & 0x03 + // - CX == src[s] + CMPQ BX, $2 + JEQ tagCopy2 + JA tagCopy4 + + // case tagCopy1: + // s += 2 + ADDQ $2, SI + + // if uint(s) > uint(len(src)) { etc } + MOVQ SI, BX + SUBQ R11, BX + CMPQ BX, R12 + JA errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVQ CX, DX + ANDQ $0xe0, DX + SHLQ $3, DX + MOVBQZX -1(SI), BX + ORQ BX, DX + + // length = 4 + int(src[s-2])>>2&0x7 + SHRQ $2, CX + ANDQ $7, CX + ADDQ $4, CX + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - CX == length && CX > 0 + // - DX == offset + + // if offset <= 0 { etc } + CMPQ DX, $0 + JLE errCorrupt + + // if d < offset { etc } + MOVQ DI, BX + SUBQ R8, BX + CMPQ BX, DX + JLT errCorrupt + + // if length > len(dst)-d { etc } + MOVQ R10, BX + SUBQ DI, BX + CMPQ CX, BX + JGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVQ R10, R14 + SUBQ DI, R14 + MOVQ DI, R15 + SUBQ DX, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMPQ CX, $16 + JGT slowForwardCopy + CMPQ DX, $8 + JLT slowForwardCopy + CMPQ R14, $16 + JLT slowForwardCopy + MOVQ 0(R15), AX + MOVQ AX, 0(DI) + MOVQ 8(R15), BX + MOVQ BX, 8(DI) + ADDQ CX, DI + JMP loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUBQ $10, R14 + CMPQ CX, R14 + JGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMPQ DX, $8 + JGE fixUpSlowForwardCopy + MOVQ (R15), BX + MOVQ BX, (DI) + SUBQ DX, CX + ADDQ DX, DI + ADDQ DX, DX + JMP makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by DI being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save DI to AX so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVQ DI, AX + ADDQ CX, DI + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + CMPQ CX, $0 + JLE loop + MOVQ (R15), BX + MOVQ BX, (AX) + ADDQ $8, R15 + ADDQ $8, AX + SUBQ $8, CX + JMP finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), BX + MOVB BX, (DI) + INCQ R15 + INCQ DI + DECQ CX + JNZ verySlowForwardCopy + JMP loop + +// The code above handles copy tags. +// ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMPQ DI, R10 + JNE errCorrupt + + // return 0 + MOVQ $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVQ $1, ret+48(FP) + RET diff --git a/vendor/github.com/golang/snappy/decode_arm64.s b/vendor/github.com/golang/snappy/decode_arm64.s new file mode 100644 index 000000000..7a3ead17e --- /dev/null +++ b/vendor/github.com/golang/snappy/decode_arm64.s @@ -0,0 +1,494 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in decode_other.go, except +// where marked with a "!!!". + +// func decode(dst, src []byte) int +// +// All local variables fit into registers. The non-zero stack size is only to +// spill registers and push args when issuing a CALL. The register allocation: +// - R2 scratch +// - R3 scratch +// - R4 length or x +// - R5 offset +// - R6 &src[s] +// - R7 &dst[d] +// + R8 dst_base +// + R9 dst_len +// + R10 dst_base + dst_len +// + R11 src_base +// + R12 src_len +// + R13 src_base + src_len +// - R14 used by doCopy +// - R15 used by doCopy +// +// The registers R8-R13 (marked with a "+") are set at the start of the +// function, and after a CALL returns, and are not otherwise modified. +// +// The d variable is implicitly R7 - R8, and len(dst)-d is R10 - R7. +// The s variable is implicitly R6 - R11, and len(src)-s is R13 - R6. +TEXT ·decode(SB), NOSPLIT, $56-56 + // Initialize R6, R7 and R8-R13. + MOVD dst_base+0(FP), R8 + MOVD dst_len+8(FP), R9 + MOVD R8, R7 + MOVD R8, R10 + ADD R9, R10, R10 + MOVD src_base+24(FP), R11 + MOVD src_len+32(FP), R12 + MOVD R11, R6 + MOVD R11, R13 + ADD R12, R13, R13 + +loop: + // for s < len(src) + CMP R13, R6 + BEQ end + + // R4 = uint32(src[s]) + // + // switch src[s] & 0x03 + MOVBU (R6), R4 + MOVW R4, R3 + ANDW $3, R3 + MOVW $1, R1 + CMPW R1, R3 + BGE tagCopy + + // ---------------------------------------- + // The code below handles literal tags. + + // case tagLiteral: + // x := uint32(src[s] >> 2) + // switch + MOVW $60, R1 + LSRW $2, R4, R4 + CMPW R4, R1 + BLS tagLit60Plus + + // case x < 60: + // s++ + ADD $1, R6, R6 + +doLit: + // This is the end of the inner "switch", when we have a literal tag. + // + // We assume that R4 == x and x fits in a uint32, where x is the variable + // used in the pure Go decode_other.go code. + + // length = int(x) + 1 + // + // Unlike the pure Go code, we don't need to check if length <= 0 because + // R4 can hold 64 bits, so the increment cannot overflow. + ADD $1, R4, R4 + + // Prepare to check if copying length bytes will run past the end of dst or + // src. + // + // R2 = len(dst) - d + // R3 = len(src) - s + MOVD R10, R2 + SUB R7, R2, R2 + MOVD R13, R3 + SUB R6, R3, R3 + + // !!! Try a faster technique for short (16 or fewer bytes) copies. + // + // if length > 16 || len(dst)-d < 16 || len(src)-s < 16 { + // goto callMemmove // Fall back on calling runtime·memmove. + // } + // + // The C++ snappy code calls this TryFastAppend. It also checks len(src)-s + // against 21 instead of 16, because it cannot assume that all of its input + // is contiguous in memory and so it needs to leave enough source bytes to + // read the next tag without refilling buffers, but Go's Decode assumes + // contiguousness (the src argument is a []byte). + CMP $16, R4 + BGT callMemmove + CMP $16, R2 + BLT callMemmove + CMP $16, R3 + BLT callMemmove + + // !!! Implement the copy from src to dst as a 16-byte load and store. + // (Decode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only length bytes, but that's + // OK. If the input is a valid Snappy encoding then subsequent iterations + // will fix up the overrun. Otherwise, Decode returns a nil []byte (and a + // non-nil error), so the overrun will be ignored. + // + // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + LDP 0(R6), (R14, R15) + STP (R14, R15), 0(R7) + + // d += length + // s += length + ADD R4, R7, R7 + ADD R4, R6, R6 + B loop + +callMemmove: + // if length > len(dst)-d || length > len(src)-s { etc } + CMP R2, R4 + BGT errCorrupt + CMP R3, R4 + BGT errCorrupt + + // copy(dst[d:], src[s:s+length]) + // + // This means calling runtime·memmove(&dst[d], &src[s], length), so we push + // R7, R6 and R4 as arguments. Coincidentally, we also need to spill those + // three registers to the stack, to save local variables across the CALL. + MOVD R7, 8(RSP) + MOVD R6, 16(RSP) + MOVD R4, 24(RSP) + MOVD R7, 32(RSP) + MOVD R6, 40(RSP) + MOVD R4, 48(RSP) + CALL runtime·memmove(SB) + + // Restore local variables: unspill registers from the stack and + // re-calculate R8-R13. + MOVD 32(RSP), R7 + MOVD 40(RSP), R6 + MOVD 48(RSP), R4 + MOVD dst_base+0(FP), R8 + MOVD dst_len+8(FP), R9 + MOVD R8, R10 + ADD R9, R10, R10 + MOVD src_base+24(FP), R11 + MOVD src_len+32(FP), R12 + MOVD R11, R13 + ADD R12, R13, R13 + + // d += length + // s += length + ADD R4, R7, R7 + ADD R4, R6, R6 + B loop + +tagLit60Plus: + // !!! This fragment does the + // + // s += x - 58; if uint(s) > uint(len(src)) { etc } + // + // checks. In the asm version, we code it once instead of once per switch case. + ADD R4, R6, R6 + SUB $58, R6, R6 + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // case x == 60: + MOVW $61, R1 + CMPW R1, R4 + BEQ tagLit61 + BGT tagLit62Plus + + // x = uint32(src[s-1]) + MOVBU -1(R6), R4 + B doLit + +tagLit61: + // case x == 61: + // x = uint32(src[s-2]) | uint32(src[s-1])<<8 + MOVHU -2(R6), R4 + B doLit + +tagLit62Plus: + CMPW $62, R4 + BHI tagLit63 + + // case x == 62: + // x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + MOVHU -3(R6), R4 + MOVBU -1(R6), R3 + ORR R3<<16, R4 + B doLit + +tagLit63: + // case x == 63: + // x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + MOVWU -4(R6), R4 + B doLit + + // The code above handles literal tags. + // ---------------------------------------- + // The code below handles copy tags. + +tagCopy4: + // case tagCopy4: + // s += 5 + ADD $5, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // length = 1 + int(src[s-5])>>2 + MOVD $1, R1 + ADD R4>>2, R1, R4 + + // offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + MOVWU -4(R6), R5 + B doCopy + +tagCopy2: + // case tagCopy2: + // s += 3 + ADD $3, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // length = 1 + int(src[s-3])>>2 + MOVD $1, R1 + ADD R4>>2, R1, R4 + + // offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + MOVHU -2(R6), R5 + B doCopy + +tagCopy: + // We have a copy tag. We assume that: + // - R3 == src[s] & 0x03 + // - R4 == src[s] + CMP $2, R3 + BEQ tagCopy2 + BGT tagCopy4 + + // case tagCopy1: + // s += 2 + ADD $2, R6, R6 + + // if uint(s) > uint(len(src)) { etc } + MOVD R6, R3 + SUB R11, R3, R3 + CMP R12, R3 + BGT errCorrupt + + // offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + MOVD R4, R5 + AND $0xe0, R5 + MOVBU -1(R6), R3 + ORR R5<<3, R3, R5 + + // length = 4 + int(src[s-2])>>2&0x7 + MOVD $7, R1 + AND R4>>2, R1, R4 + ADD $4, R4, R4 + +doCopy: + // This is the end of the outer "switch", when we have a copy tag. + // + // We assume that: + // - R4 == length && R4 > 0 + // - R5 == offset + + // if offset <= 0 { etc } + MOVD $0, R1 + CMP R1, R5 + BLE errCorrupt + + // if d < offset { etc } + MOVD R7, R3 + SUB R8, R3, R3 + CMP R5, R3 + BLT errCorrupt + + // if length > len(dst)-d { etc } + MOVD R10, R3 + SUB R7, R3, R3 + CMP R3, R4 + BGT errCorrupt + + // forwardCopy(dst[d:d+length], dst[d-offset:]); d += length + // + // Set: + // - R14 = len(dst)-d + // - R15 = &dst[d-offset] + MOVD R10, R14 + SUB R7, R14, R14 + MOVD R7, R15 + SUB R5, R15, R15 + + // !!! Try a faster technique for short (16 or fewer bytes) forward copies. + // + // First, try using two 8-byte load/stores, similar to the doLit technique + // above. Even if dst[d:d+length] and dst[d-offset:] can overlap, this is + // still OK if offset >= 8. Note that this has to be two 8-byte load/stores + // and not one 16-byte load/store, and the first store has to be before the + // second load, due to the overlap if offset is in the range [8, 16). + // + // if length > 16 || offset < 8 || len(dst)-d < 16 { + // goto slowForwardCopy + // } + // copy 16 bytes + // d += length + CMP $16, R4 + BGT slowForwardCopy + CMP $8, R5 + BLT slowForwardCopy + CMP $16, R14 + BLT slowForwardCopy + MOVD 0(R15), R2 + MOVD R2, 0(R7) + MOVD 8(R15), R3 + MOVD R3, 8(R7) + ADD R4, R7, R7 + B loop + +slowForwardCopy: + // !!! If the forward copy is longer than 16 bytes, or if offset < 8, we + // can still try 8-byte load stores, provided we can overrun up to 10 extra + // bytes. As above, the overrun will be fixed up by subsequent iterations + // of the outermost loop. + // + // The C++ snappy code calls this technique IncrementalCopyFastPath. Its + // commentary says: + // + // ---- + // + // The main part of this loop is a simple copy of eight bytes at a time + // until we've copied (at least) the requested amount of bytes. However, + // if d and d-offset are less than eight bytes apart (indicating a + // repeating pattern of length < 8), we first need to expand the pattern in + // order to get the correct results. For instance, if the buffer looks like + // this, with the eight-byte and patterns marked as + // intervals: + // + // abxxxxxxxxxxxx + // [------] d-offset + // [------] d + // + // a single eight-byte copy from to will repeat the pattern + // once, after which we can move two bytes without moving : + // + // ababxxxxxxxxxx + // [------] d-offset + // [------] d + // + // and repeat the exercise until the two no longer overlap. + // + // This allows us to do very well in the special case of one single byte + // repeated many times, without taking a big hit for more general cases. + // + // The worst case of extra writing past the end of the match occurs when + // offset == 1 and length == 1; the last copy will read from byte positions + // [0..7] and write to [4..11], whereas it was only supposed to write to + // position 1. Thus, ten excess bytes. + // + // ---- + // + // That "10 byte overrun" worst case is confirmed by Go's + // TestSlowForwardCopyOverrun, which also tests the fixUpSlowForwardCopy + // and finishSlowForwardCopy algorithm. + // + // if length > len(dst)-d-10 { + // goto verySlowForwardCopy + // } + SUB $10, R14, R14 + CMP R14, R4 + BGT verySlowForwardCopy + +makeOffsetAtLeast8: + // !!! As above, expand the pattern so that offset >= 8 and we can use + // 8-byte load/stores. + // + // for offset < 8 { + // copy 8 bytes from dst[d-offset:] to dst[d:] + // length -= offset + // d += offset + // offset += offset + // // The two previous lines together means that d-offset, and therefore + // // R15, is unchanged. + // } + CMP $8, R5 + BGE fixUpSlowForwardCopy + MOVD (R15), R3 + MOVD R3, (R7) + SUB R5, R4, R4 + ADD R5, R7, R7 + ADD R5, R5, R5 + B makeOffsetAtLeast8 + +fixUpSlowForwardCopy: + // !!! Add length (which might be negative now) to d (implied by R7 being + // &dst[d]) so that d ends up at the right place when we jump back to the + // top of the loop. Before we do that, though, we save R7 to R2 so that, if + // length is positive, copying the remaining length bytes will write to the + // right place. + MOVD R7, R2 + ADD R4, R7, R7 + +finishSlowForwardCopy: + // !!! Repeat 8-byte load/stores until length <= 0. Ending with a negative + // length means that we overrun, but as above, that will be fixed up by + // subsequent iterations of the outermost loop. + MOVD $0, R1 + CMP R1, R4 + BLE loop + MOVD (R15), R3 + MOVD R3, (R2) + ADD $8, R15, R15 + ADD $8, R2, R2 + SUB $8, R4, R4 + B finishSlowForwardCopy + +verySlowForwardCopy: + // verySlowForwardCopy is a simple implementation of forward copy. In C + // parlance, this is a do/while loop instead of a while loop, since we know + // that length > 0. In Go syntax: + // + // for { + // dst[d] = dst[d - offset] + // d++ + // length-- + // if length == 0 { + // break + // } + // } + MOVB (R15), R3 + MOVB R3, (R7) + ADD $1, R15, R15 + ADD $1, R7, R7 + SUB $1, R4, R4 + CBNZ R4, verySlowForwardCopy + B loop + + // The code above handles copy tags. + // ---------------------------------------- + +end: + // This is the end of the "for s < len(src)". + // + // if d != len(dst) { etc } + CMP R10, R7 + BNE errCorrupt + + // return 0 + MOVD $0, ret+48(FP) + RET + +errCorrupt: + // return decodeErrCodeCorrupt + MOVD $1, R2 + MOVD R2, ret+48(FP) + RET diff --git a/vendor/github.com/golang/snappy/decode_asm.go b/vendor/github.com/golang/snappy/decode_asm.go new file mode 100644 index 000000000..7082b3491 --- /dev/null +++ b/vendor/github.com/golang/snappy/decode_asm.go @@ -0,0 +1,15 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm +// +build amd64 arm64 + +package snappy + +// decode has the same semantics as in decode_other.go. +// +//go:noescape +func decode(dst, src []byte) int diff --git a/vendor/github.com/golang/snappy/decode_other.go b/vendor/github.com/golang/snappy/decode_other.go new file mode 100644 index 000000000..2f672be55 --- /dev/null +++ b/vendor/github.com/golang/snappy/decode_other.go @@ -0,0 +1,115 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!arm64 appengine !gc noasm + +package snappy + +// decode writes the decoding of src to dst. It assumes that the varint-encoded +// length of the decompressed bytes has already been read, and that len(dst) +// equals that length. +// +// It returns 0 on success or a decodeErrCodeXxx error code on failure. +func decode(dst, src []byte) int { + var d, s, offset, length int + for s < len(src) { + switch src[s] & 0x03 { + case tagLiteral: + x := uint32(src[s] >> 2) + switch { + case x < 60: + s++ + case x == 60: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-1]) + case x == 61: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-2]) | uint32(src[s-1])<<8 + case x == 62: + s += 4 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-3]) | uint32(src[s-2])<<8 | uint32(src[s-1])<<16 + case x == 63: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + x = uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24 + } + length = int(x) + 1 + if length <= 0 { + return decodeErrCodeUnsupportedLiteralLength + } + if length > len(dst)-d || length > len(src)-s { + return decodeErrCodeCorrupt + } + copy(dst[d:], src[s:s+length]) + d += length + s += length + continue + + case tagCopy1: + s += 2 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 4 + int(src[s-2])>>2&0x7 + offset = int(uint32(src[s-2])&0xe0<<3 | uint32(src[s-1])) + + case tagCopy2: + s += 3 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-3])>>2 + offset = int(uint32(src[s-2]) | uint32(src[s-1])<<8) + + case tagCopy4: + s += 5 + if uint(s) > uint(len(src)) { // The uint conversions catch overflow from the previous line. + return decodeErrCodeCorrupt + } + length = 1 + int(src[s-5])>>2 + offset = int(uint32(src[s-4]) | uint32(src[s-3])<<8 | uint32(src[s-2])<<16 | uint32(src[s-1])<<24) + } + + if offset <= 0 || d < offset || length > len(dst)-d { + return decodeErrCodeCorrupt + } + // Copy from an earlier sub-slice of dst to a later sub-slice. + // If no overlap, use the built-in copy: + if offset >= length { + copy(dst[d:d+length], dst[d-offset:]) + d += length + continue + } + + // Unlike the built-in copy function, this byte-by-byte copy always runs + // forwards, even if the slices overlap. Conceptually, this is: + // + // d += forwardCopy(dst[d:d+length], dst[d-offset:]) + // + // We align the slices into a and b and show the compiler they are the same size. + // This allows the loop to run without bounds checks. + a := dst[d : d+length] + b := dst[d-offset:] + b = b[:len(a)] + for i := range a { + a[i] = b[i] + } + d += length + } + if d != len(dst) { + return decodeErrCodeCorrupt + } + return 0 +} diff --git a/vendor/github.com/golang/snappy/encode.go b/vendor/github.com/golang/snappy/encode.go new file mode 100644 index 000000000..7f2365707 --- /dev/null +++ b/vendor/github.com/golang/snappy/encode.go @@ -0,0 +1,289 @@ +// Copyright 2011 The Snappy-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 snappy + +import ( + "encoding/binary" + "errors" + "io" +) + +// Encode returns the encoded form of src. The returned slice may be a sub- +// slice of dst if dst was large enough to hold the entire encoded block. +// Otherwise, a newly allocated slice will be returned. +// +// The dst and src must not overlap. It is valid to pass a nil dst. +// +// Encode handles the Snappy block format, not the Snappy stream format. +func Encode(dst, src []byte) []byte { + if n := MaxEncodedLen(len(src)); n < 0 { + panic(ErrTooLarge) + } else if len(dst) < n { + dst = make([]byte, n) + } + + // The block starts with the varint-encoded length of the decompressed bytes. + d := binary.PutUvarint(dst, uint64(len(src))) + + for len(src) > 0 { + p := src + src = nil + if len(p) > maxBlockSize { + p, src = p[:maxBlockSize], p[maxBlockSize:] + } + if len(p) < minNonLiteralBlockSize { + d += emitLiteral(dst[d:], p) + } else { + d += encodeBlock(dst[d:], p) + } + } + return dst[:d] +} + +// inputMargin is the minimum number of extra input bytes to keep, inside +// encodeBlock's inner loop. On some architectures, this margin lets us +// implement a fast path for emitLiteral, where the copy of short (<= 16 byte) +// literals can be implemented as a single load to and store from a 16-byte +// register. That literal's actual length can be as short as 1 byte, so this +// can copy up to 15 bytes too much, but that's OK as subsequent iterations of +// the encoding loop will fix up the copy overrun, and this inputMargin ensures +// that we don't overrun the dst and src buffers. +const inputMargin = 16 - 1 + +// minNonLiteralBlockSize is the minimum size of the input to encodeBlock that +// could be encoded with a copy tag. This is the minimum with respect to the +// algorithm used by encodeBlock, not a minimum enforced by the file format. +// +// The encoded output must start with at least a 1 byte literal, as there are +// no previous bytes to copy. A minimal (1 byte) copy after that, generated +// from an emitCopy call in encodeBlock's main loop, would require at least +// another inputMargin bytes, for the reason above: we want any emitLiteral +// calls inside encodeBlock's main loop to use the fast path if possible, which +// requires being able to overrun by inputMargin bytes. Thus, +// minNonLiteralBlockSize equals 1 + 1 + inputMargin. +// +// The C++ code doesn't use this exact threshold, but it could, as discussed at +// https://groups.google.com/d/topic/snappy-compression/oGbhsdIJSJ8/discussion +// The difference between Go (2+inputMargin) and C++ (inputMargin) is purely an +// optimization. It should not affect the encoded form. This is tested by +// TestSameEncodingAsCppShortCopies. +const minNonLiteralBlockSize = 1 + 1 + inputMargin + +// MaxEncodedLen returns the maximum length of a snappy block, given its +// uncompressed length. +// +// It will return a negative value if srcLen is too large to encode. +func MaxEncodedLen(srcLen int) int { + n := uint64(srcLen) + if n > 0xffffffff { + return -1 + } + // Compressed data can be defined as: + // compressed := item* literal* + // item := literal* copy + // + // The trailing literal sequence has a space blowup of at most 62/60 + // since a literal of length 60 needs one tag byte + one extra byte + // for length information. + // + // Item blowup is trickier to measure. Suppose the "copy" op copies + // 4 bytes of data. Because of a special check in the encoding code, + // we produce a 4-byte copy only if the offset is < 65536. Therefore + // the copy op takes 3 bytes to encode, and this type of item leads + // to at most the 62/60 blowup for representing literals. + // + // Suppose the "copy" op copies 5 bytes of data. If the offset is big + // enough, it will take 5 bytes to encode the copy op. Therefore the + // worst case here is a one-byte literal followed by a five-byte copy. + // That is, 6 bytes of input turn into 7 bytes of "compressed" data. + // + // This last factor dominates the blowup, so the final estimate is: + n = 32 + n + n/6 + if n > 0xffffffff { + return -1 + } + return int(n) +} + +var errClosed = errors.New("snappy: Writer is closed") + +// NewWriter returns a new Writer that compresses to w. +// +// The Writer returned does not buffer writes. There is no need to Flush or +// Close such a Writer. +// +// Deprecated: the Writer returned is not suitable for many small writes, only +// for few large writes. Use NewBufferedWriter instead, which is efficient +// regardless of the frequency and shape of the writes, and remember to Close +// that Writer when done. +func NewWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + obuf: make([]byte, obufLen), + } +} + +// NewBufferedWriter returns a new Writer that compresses to w, using the +// framing format described at +// https://github.com/google/snappy/blob/master/framing_format.txt +// +// The Writer returned buffers writes. Users must call Close to guarantee all +// data has been forwarded to the underlying io.Writer. They may also call +// Flush zero or more times before calling Close. +func NewBufferedWriter(w io.Writer) *Writer { + return &Writer{ + w: w, + ibuf: make([]byte, 0, maxBlockSize), + obuf: make([]byte, obufLen), + } +} + +// Writer is an io.Writer that can write Snappy-compressed bytes. +// +// Writer handles the Snappy stream format, not the Snappy block format. +type Writer struct { + w io.Writer + err error + + // ibuf is a buffer for the incoming (uncompressed) bytes. + // + // Its use is optional. For backwards compatibility, Writers created by the + // NewWriter function have ibuf == nil, do not buffer incoming bytes, and + // therefore do not need to be Flush'ed or Close'd. + ibuf []byte + + // obuf is a buffer for the outgoing (compressed) bytes. + obuf []byte + + // wroteStreamHeader is whether we have written the stream header. + wroteStreamHeader bool +} + +// Reset discards the writer's state and switches the Snappy writer to write to +// w. This permits reusing a Writer rather than allocating a new one. +func (w *Writer) Reset(writer io.Writer) { + w.w = writer + w.err = nil + if w.ibuf != nil { + w.ibuf = w.ibuf[:0] + } + w.wroteStreamHeader = false +} + +// Write satisfies the io.Writer interface. +func (w *Writer) Write(p []byte) (nRet int, errRet error) { + if w.ibuf == nil { + // Do not buffer incoming bytes. This does not perform or compress well + // if the caller of Writer.Write writes many small slices. This + // behavior is therefore deprecated, but still supported for backwards + // compatibility with code that doesn't explicitly Flush or Close. + return w.write(p) + } + + // The remainder of this method is based on bufio.Writer.Write from the + // standard library. + + for len(p) > (cap(w.ibuf)-len(w.ibuf)) && w.err == nil { + var n int + if len(w.ibuf) == 0 { + // Large write, empty buffer. + // Write directly from p to avoid copy. + n, _ = w.write(p) + } else { + n = copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + w.Flush() + } + nRet += n + p = p[n:] + } + if w.err != nil { + return nRet, w.err + } + n := copy(w.ibuf[len(w.ibuf):cap(w.ibuf)], p) + w.ibuf = w.ibuf[:len(w.ibuf)+n] + nRet += n + return nRet, nil +} + +func (w *Writer) write(p []byte) (nRet int, errRet error) { + if w.err != nil { + return 0, w.err + } + for len(p) > 0 { + obufStart := len(magicChunk) + if !w.wroteStreamHeader { + w.wroteStreamHeader = true + copy(w.obuf, magicChunk) + obufStart = 0 + } + + var uncompressed []byte + if len(p) > maxBlockSize { + uncompressed, p = p[:maxBlockSize], p[maxBlockSize:] + } else { + uncompressed, p = p, nil + } + checksum := crc(uncompressed) + + // Compress the buffer, discarding the result if the improvement + // isn't at least 12.5%. + compressed := Encode(w.obuf[obufHeaderLen:], uncompressed) + chunkType := uint8(chunkTypeCompressedData) + chunkLen := 4 + len(compressed) + obufEnd := obufHeaderLen + len(compressed) + if len(compressed) >= len(uncompressed)-len(uncompressed)/8 { + chunkType = chunkTypeUncompressedData + chunkLen = 4 + len(uncompressed) + obufEnd = obufHeaderLen + } + + // Fill in the per-chunk header that comes before the body. + w.obuf[len(magicChunk)+0] = chunkType + w.obuf[len(magicChunk)+1] = uint8(chunkLen >> 0) + w.obuf[len(magicChunk)+2] = uint8(chunkLen >> 8) + w.obuf[len(magicChunk)+3] = uint8(chunkLen >> 16) + w.obuf[len(magicChunk)+4] = uint8(checksum >> 0) + w.obuf[len(magicChunk)+5] = uint8(checksum >> 8) + w.obuf[len(magicChunk)+6] = uint8(checksum >> 16) + w.obuf[len(magicChunk)+7] = uint8(checksum >> 24) + + if _, err := w.w.Write(w.obuf[obufStart:obufEnd]); err != nil { + w.err = err + return nRet, err + } + if chunkType == chunkTypeUncompressedData { + if _, err := w.w.Write(uncompressed); err != nil { + w.err = err + return nRet, err + } + } + nRet += len(uncompressed) + } + return nRet, nil +} + +// Flush flushes the Writer to its underlying io.Writer. +func (w *Writer) Flush() error { + if w.err != nil { + return w.err + } + if len(w.ibuf) == 0 { + return nil + } + w.write(w.ibuf) + w.ibuf = w.ibuf[:0] + return w.err +} + +// Close calls Flush and then closes the Writer. +func (w *Writer) Close() error { + w.Flush() + ret := w.err + if w.err == nil { + w.err = errClosed + } + return ret +} diff --git a/vendor/github.com/golang/snappy/encode_amd64.s b/vendor/github.com/golang/snappy/encode_amd64.s new file mode 100644 index 000000000..adfd979fe --- /dev/null +++ b/vendor/github.com/golang/snappy/encode_amd64.s @@ -0,0 +1,730 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The XXX lines assemble on Go 1.4, 1.5 and 1.7, but not 1.6, due to a +// Go toolchain regression. See https://github.com/golang/go/issues/15426 and +// https://github.com/golang/snappy/issues/29 +// +// As a workaround, the package was built with a known good assembler, and +// those instructions were disassembled by "objdump -d" to yield the +// 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 +// style comments, in AT&T asm syntax. Note that rsp here is a physical +// register, not Go/asm's SP pseudo-register (see https://golang.org/doc/asm). +// The instructions were then encoded as "BYTE $0x.." sequences, which assemble +// fine on Go 1.6. + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - AX len(lit) +// - BX n +// - DX return value +// - DI &dst[i] +// - R10 &lit[0] +// +// The 24 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $24-56 + MOVQ dst_base+0(FP), DI + MOVQ lit_base+24(FP), R10 + MOVQ lit_len+32(FP), AX + MOVQ AX, DX + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT oneByte + CMPL BX, $256 + JLT twoBytes + +threeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + ADDQ $3, DX + JMP memmove + +twoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + ADDQ $2, DX + JMP memmove + +oneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + ADDQ $1, DX + +memmove: + MOVQ DX, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - AX length +// - SI &dst[0] +// - DI &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVQ dst_base+0(FP), DI + MOVQ DI, SI + MOVQ offset+24(FP), R11 + MOVQ length+32(FP), AX + +loop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP loop0 + +step1: + // if length > 64 { etc } + CMPL AX, $64 + JLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMPL AX, $12 + JGE step3 + CMPL R11, $2048 + JGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + + // Return the number of bytes written. + SUBQ SI, DI + MOVQ DI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - DX &src[0] +// - SI &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVQ src_base+0(FP), DX + MOVQ src_len+8(FP), R14 + MOVQ i+24(FP), R15 + MOVQ j+32(FP), SI + ADDQ DX, R14 + ADDQ DX, R15 + ADDQ DX, SI + MOVQ R14, R13 + SUBQ $8, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA cmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE bsf + ADDQ $8, R15 + ADDQ $8, SI + JMP cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE extendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE extendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUBQ DX, SI + MOVQ SI, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - AX . . +// - BX . . +// - CX 56 shift (note that amd64 shifts by non-immediates must use CX). +// - DX 64 &src[0], tableSize +// - SI 72 &src[s] +// - DI 80 &dst[d] +// - R9 88 sLimit +// - R10 . &src[nextEmit] +// - R11 96 prevHash, currHash, nextHash, offset +// - R12 104 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 112 candidate +// +// The second column (56, 64, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 56 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 56 + 64 = 32888. +TEXT ·encodeBlock(SB), 0, $32888-56 + MOVQ dst_base+0(FP), DI + MOVQ src_base+24(FP), SI + MOVQ src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVQ $24, CX + MOVQ $256, DX + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + CMPQ DX, $16384 + JGE varTable + CMPQ DX, R14 + JGE varTable + SUBQ $1, CX + SHLQ $1, DX + JMP calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each MOVOU + // writes 16 bytes, so we can do only tableSize/8 writes instead of the + // 2048 writes that would zero-initialize all of table's 32768 bytes. + SHRQ $3, DX + LEAQ table-32768(SP), BX + PXOR X0, X0 + +memclr: + MOVOU X0, 0(BX) + ADDQ $16, BX + SUBQ $1, DX + JNZ memclr + + // !!! DX = &src[0] + MOVQ SI, DX + + // sLimit := len(src) - inputMargin + MOVQ R14, R9 + SUBQ $15, R9 + + // !!! Pre-emptively spill CX, DX and R9 to the stack. Their values don't + // change for the rest of the function. + MOVQ CX, 56(SP) + MOVQ DX, 64(SP) + MOVQ R9, 88(SP) + + // nextEmit := 0 + MOVQ DX, R10 + + // s := 1 + ADDQ $1, SI + + // nextHash := hash(load32(src, s), shift) + MOVL 0(SI), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + +outer: + // for { etc } + + // skip := 32 + MOVQ $32, R12 + + // nextS := s + MOVQ SI, R13 + + // candidate := 0 + MOVQ $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVQ R13, SI + + // bytesBetweenHashLookups := skip >> 5 + MOVQ R12, R14 + SHRQ $5, R14 + + // nextS = s + bytesBetweenHashLookups + ADDQ R14, R13 + + // skip += bytesBetweenHashLookups + ADDQ R14, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVQ R13, AX + SUBQ DX, AX + CMPQ AX, R9 + JA emitRemainder + + // candidate = int(table[nextHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[nextHash] = uint16(s) + MOVQ SI, AX + SUBQ DX, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // nextHash = hash(load32(src, nextS), shift) + MOVL 0(R13), R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVL 0(SI), AX + MOVL (DX)(R15*1), BX + CMPL AX, BX + JNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVQ SI, AX + SUBQ R10, AX + CMPQ AX, $16 + JLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVL AX, BX + SUBL $1, BX + + CMPL BX, $60 + JLT inlineEmitLiteralOneByte + CMPL BX, $256 + JLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVB $0xf4, 0(DI) + MOVW BX, 1(DI) + ADDQ $3, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVB $0xf0, 0(DI) + MOVB BX, 1(DI) + ADDQ $2, DI + JMP inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + SHLB $2, BX + MOVB BX, 0(DI) + ADDQ $1, DI + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // DI, R10 and AX as arguments. + MOVQ DI, 0(SP) + MOVQ R10, 8(SP) + MOVQ AX, 16(SP) + ADDQ AX, DI // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVQ SI, 72(SP) + MOVQ DI, 80(SP) + MOVQ R15, 112(SP) + CALL runtime·memmove(SB) + MOVQ 56(SP), CX + MOVQ 64(SP), DX + MOVQ 72(SP), SI + MOVQ 80(SP), DI + MOVQ 88(SP), R9 + MOVQ 112(SP), R15 + JMP inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB AX, BX + SUBB $1, BX + SHLB $2, BX + MOVB BX, (DI) + ADDQ $1, DI + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on amd64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + MOVOU 0(R10), X0 + MOVOU X0, 0(DI) + ADDQ AX, DI + +inner1: + // for { etc } + + // base := s + MOVQ SI, R12 + + // !!! offset := base - candidate + MOVQ R12, R11 + SUBQ R15, R11 + SUBQ DX, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVQ src_len+32(FP), R14 + ADDQ DX, R14 + + // !!! R13 = &src[len(src) - 8] + MOVQ R14, R13 + SUBQ $8, R13 + + // !!! R15 = &src[candidate + 4] + ADDQ $4, R15 + ADDQ DX, R15 + + // !!! s += 4 + ADDQ $4, SI + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMPQ SI, R13 + JA inlineExtendMatchCmp1 + MOVQ (R15), AX + MOVQ (SI), BX + CMPQ AX, BX + JNE inlineExtendMatchBSF + ADDQ $8, R15 + ADDQ $8, SI + JMP inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. The BSF instruction finds the + // least significant 1 bit, the amd64 architecture is little-endian, and + // the shift by 3 converts a bit index to a byte index. + XORQ AX, BX + BSFQ BX, BX + SHRQ $3, BX + ADDQ BX, SI + JMP inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMPQ SI, R14 + JAE inlineExtendMatchEnd + MOVB (R15), AX + MOVB (SI), BX + CMPB AX, BX + JNE inlineExtendMatchEnd + ADDQ $1, R15 + ADDQ $1, SI + JMP inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVQ SI, AX + SUBQ R12, AX + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + CMPL AX, $68 + JLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVB $0xfe, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $64, AX + JMP inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + CMPL AX, $64 + JLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVB $0xee, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + SUBL $60, AX + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + CMPL AX, $12 + JGE inlineEmitCopyStep3 + CMPL R11, $2048 + JGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(DI) + SHRL $8, R11 + SHLB $5, R11 + SUBB $4, AX + SHLB $2, AX + ORB AX, R11 + ORB $1, R11 + MOVB R11, 0(DI) + ADDQ $2, DI + JMP inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBL $1, AX + SHLB $2, AX + ORB $2, AX + MOVB AX, 0(DI) + MOVW R11, 1(DI) + ADDQ $3, DI + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVQ SI, R10 + + // if s >= sLimit { goto emitRemainder } + MOVQ SI, AX + SUBQ DX, AX + CMPQ AX, R9 + JAE emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVQ -1(SI), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // table[prevHash] = uint16(s-1) + MOVQ SI, AX + SUBQ DX, AX + SUBQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // currHash := hash(uint32(x>>8), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // candidate = int(table[currHash]) + // XXX: MOVWQZX table-32768(SP)(R11*2), R15 + // XXX: 4e 0f b7 7c 5c 78 movzwq 0x78(%rsp,%r11,2),%r15 + BYTE $0x4e + BYTE $0x0f + BYTE $0xb7 + BYTE $0x7c + BYTE $0x5c + BYTE $0x78 + + // table[currHash] = uint16(s) + ADDQ $1, AX + + // XXX: MOVW AX, table-32768(SP)(R11*2) + // XXX: 66 42 89 44 5c 78 mov %ax,0x78(%rsp,%r11,2) + BYTE $0x66 + BYTE $0x42 + BYTE $0x89 + BYTE $0x44 + BYTE $0x5c + BYTE $0x78 + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVL (DX)(R15*1), BX + CMPL R14, BX + JEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + SHRQ $8, R14 + MOVL R14, R11 + IMULL $0x1e35a7bd, R11 + SHRL CX, R11 + + // s++ + ADDQ $1, SI + + // break out of the inner1 for loop, i.e. continue the outer loop. + JMP outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVQ src_len+32(FP), AX + ADDQ DX, AX + CMPQ R10, AX + JEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVQ DI, 0(SP) + MOVQ $0, 8(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ $0, 16(SP) // Unnecessary, as the callee ignores it, but conservative. + MOVQ R10, 24(SP) + SUBQ R10, AX + MOVQ AX, 32(SP) + MOVQ AX, 40(SP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVQ DI, 80(SP) + CALL ·emitLiteral(SB) + MOVQ 80(SP), DI + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADDQ 48(SP), DI + +encodeBlockEnd: + MOVQ dst_base+0(FP), AX + SUBQ AX, DI + MOVQ DI, d+48(FP) + RET diff --git a/vendor/github.com/golang/snappy/encode_arm64.s b/vendor/github.com/golang/snappy/encode_arm64.s new file mode 100644 index 000000000..bf83667d7 --- /dev/null +++ b/vendor/github.com/golang/snappy/encode_arm64.s @@ -0,0 +1,722 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm + +#include "textflag.h" + +// The asm code generally follows the pure Go code in encode_other.go, except +// where marked with a "!!!". + +// ---------------------------------------------------------------------------- + +// func emitLiteral(dst, lit []byte) int +// +// All local variables fit into registers. The register allocation: +// - R3 len(lit) +// - R4 n +// - R6 return value +// - R8 &dst[i] +// - R10 &lit[0] +// +// The 32 bytes of stack space is to call runtime·memmove. +// +// The unusual register allocation of local variables, such as R10 for the +// source pointer, matches the allocation used at the call site in encodeBlock, +// which makes it easier to manually inline this function. +TEXT ·emitLiteral(SB), NOSPLIT, $32-56 + MOVD dst_base+0(FP), R8 + MOVD lit_base+24(FP), R10 + MOVD lit_len+32(FP), R3 + MOVD R3, R6 + MOVW R3, R4 + SUBW $1, R4, R4 + + CMPW $60, R4 + BLT oneByte + CMPW $256, R4 + BLT twoBytes + +threeBytes: + MOVD $0xf4, R2 + MOVB R2, 0(R8) + MOVW R4, 1(R8) + ADD $3, R8, R8 + ADD $3, R6, R6 + B memmove + +twoBytes: + MOVD $0xf0, R2 + MOVB R2, 0(R8) + MOVB R4, 1(R8) + ADD $2, R8, R8 + ADD $2, R6, R6 + B memmove + +oneByte: + LSLW $2, R4, R4 + MOVB R4, 0(R8) + ADD $1, R8, R8 + ADD $1, R6, R6 + +memmove: + MOVD R6, ret+48(FP) + + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // R8, R10 and R3 as arguments. + MOVD R8, 8(RSP) + MOVD R10, 16(RSP) + MOVD R3, 24(RSP) + CALL runtime·memmove(SB) + RET + +// ---------------------------------------------------------------------------- + +// func emitCopy(dst []byte, offset, length int) int +// +// All local variables fit into registers. The register allocation: +// - R3 length +// - R7 &dst[0] +// - R8 &dst[i] +// - R11 offset +// +// The unusual register allocation of local variables, such as R11 for the +// offset, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·emitCopy(SB), NOSPLIT, $0-48 + MOVD dst_base+0(FP), R8 + MOVD R8, R7 + MOVD offset+24(FP), R11 + MOVD length+32(FP), R3 + +loop0: + // for length >= 68 { etc } + CMPW $68, R3 + BLT step1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVD $0xfe, R2 + MOVB R2, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUB $64, R3, R3 + B loop0 + +step1: + // if length > 64 { etc } + CMP $64, R3 + BLE step2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVD $0xee, R2 + MOVB R2, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUB $60, R3, R3 + +step2: + // if length >= 12 || offset >= 2048 { goto step3 } + CMP $12, R3 + BGE step3 + CMPW $2048, R11 + BGE step3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(R8) + LSRW $3, R11, R11 + AND $0xe0, R11, R11 + SUB $4, R3, R3 + LSLW $2, R3 + AND $0xff, R3, R3 + ORRW R3, R11, R11 + ORRW $1, R11, R11 + MOVB R11, 0(R8) + ADD $2, R8, R8 + + // Return the number of bytes written. + SUB R7, R8, R8 + MOVD R8, ret+40(FP) + RET + +step3: + // Emit the remaining copy, encoded as 3 bytes. + SUB $1, R3, R3 + AND $0xff, R3, R3 + LSLW $2, R3, R3 + ORRW $2, R3, R3 + MOVB R3, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + + // Return the number of bytes written. + SUB R7, R8, R8 + MOVD R8, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func extendMatch(src []byte, i, j int) int +// +// All local variables fit into registers. The register allocation: +// - R6 &src[0] +// - R7 &src[j] +// - R13 &src[len(src) - 8] +// - R14 &src[len(src)] +// - R15 &src[i] +// +// The unusual register allocation of local variables, such as R15 for a source +// pointer, matches the allocation used at the call site in encodeBlock, which +// makes it easier to manually inline this function. +TEXT ·extendMatch(SB), NOSPLIT, $0-48 + MOVD src_base+0(FP), R6 + MOVD src_len+8(FP), R14 + MOVD i+24(FP), R15 + MOVD j+32(FP), R7 + ADD R6, R14, R14 + ADD R6, R15, R15 + ADD R6, R7, R7 + MOVD R14, R13 + SUB $8, R13, R13 + +cmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMP R13, R7 + BHI cmp1 + MOVD (R15), R3 + MOVD (R7), R4 + CMP R4, R3 + BNE bsf + ADD $8, R15, R15 + ADD $8, R7, R7 + B cmp8 + +bsf: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. + // RBIT reverses the bit order, then CLZ counts the leading zeros, the + // combination of which finds the least significant bit which is set. + // The arm64 architecture is little-endian, and the shift by 3 converts + // a bit index to a byte index. + EOR R3, R4, R4 + RBIT R4, R4 + CLZ R4, R4 + ADD R4>>3, R7, R7 + + // Convert from &src[ret] to ret. + SUB R6, R7, R7 + MOVD R7, ret+40(FP) + RET + +cmp1: + // In src's tail, compare 1 byte at a time. + CMP R7, R14 + BLS extendMatchEnd + MOVB (R15), R3 + MOVB (R7), R4 + CMP R4, R3 + BNE extendMatchEnd + ADD $1, R15, R15 + ADD $1, R7, R7 + B cmp1 + +extendMatchEnd: + // Convert from &src[ret] to ret. + SUB R6, R7, R7 + MOVD R7, ret+40(FP) + RET + +// ---------------------------------------------------------------------------- + +// func encodeBlock(dst, src []byte) (d int) +// +// All local variables fit into registers, other than "var table". The register +// allocation: +// - R3 . . +// - R4 . . +// - R5 64 shift +// - R6 72 &src[0], tableSize +// - R7 80 &src[s] +// - R8 88 &dst[d] +// - R9 96 sLimit +// - R10 . &src[nextEmit] +// - R11 104 prevHash, currHash, nextHash, offset +// - R12 112 &src[base], skip +// - R13 . &src[nextS], &src[len(src) - 8] +// - R14 . len(src), bytesBetweenHashLookups, &src[len(src)], x +// - R15 120 candidate +// - R16 . hash constant, 0x1e35a7bd +// - R17 . &table +// - . 128 table +// +// The second column (64, 72, etc) is the stack offset to spill the registers +// when calling other functions. We could pack this slightly tighter, but it's +// simpler to have a dedicated spill map independent of the function called. +// +// "var table [maxTableSize]uint16" takes up 32768 bytes of stack space. An +// extra 64 bytes, to call other functions, and an extra 64 bytes, to spill +// local variables (registers) during calls gives 32768 + 64 + 64 = 32896. +TEXT ·encodeBlock(SB), 0, $32896-56 + MOVD dst_base+0(FP), R8 + MOVD src_base+24(FP), R7 + MOVD src_len+32(FP), R14 + + // shift, tableSize := uint32(32-8), 1<<8 + MOVD $24, R5 + MOVD $256, R6 + MOVW $0xa7bd, R16 + MOVKW $(0x1e35<<16), R16 + +calcShift: + // for ; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + // shift-- + // } + MOVD $16384, R2 + CMP R2, R6 + BGE varTable + CMP R14, R6 + BGE varTable + SUB $1, R5, R5 + LSL $1, R6, R6 + B calcShift + +varTable: + // var table [maxTableSize]uint16 + // + // In the asm code, unlike the Go code, we can zero-initialize only the + // first tableSize elements. Each uint16 element is 2 bytes and each + // iterations writes 64 bytes, so we can do only tableSize/32 writes + // instead of the 2048 writes that would zero-initialize all of table's + // 32768 bytes. This clear could overrun the first tableSize elements, but + // it won't overrun the allocated stack size. + ADD $128, RSP, R17 + MOVD R17, R4 + + // !!! R6 = &src[tableSize] + ADD R6<<1, R17, R6 + +memclr: + STP.P (ZR, ZR), 64(R4) + STP (ZR, ZR), -48(R4) + STP (ZR, ZR), -32(R4) + STP (ZR, ZR), -16(R4) + CMP R4, R6 + BHI memclr + + // !!! R6 = &src[0] + MOVD R7, R6 + + // sLimit := len(src) - inputMargin + MOVD R14, R9 + SUB $15, R9, R9 + + // !!! Pre-emptively spill R5, R6 and R9 to the stack. Their values don't + // change for the rest of the function. + MOVD R5, 64(RSP) + MOVD R6, 72(RSP) + MOVD R9, 96(RSP) + + // nextEmit := 0 + MOVD R6, R10 + + // s := 1 + ADD $1, R7, R7 + + // nextHash := hash(load32(src, s), shift) + MOVW 0(R7), R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + +outer: + // for { etc } + + // skip := 32 + MOVD $32, R12 + + // nextS := s + MOVD R7, R13 + + // candidate := 0 + MOVD $0, R15 + +inner0: + // for { etc } + + // s := nextS + MOVD R13, R7 + + // bytesBetweenHashLookups := skip >> 5 + MOVD R12, R14 + LSR $5, R14, R14 + + // nextS = s + bytesBetweenHashLookups + ADD R14, R13, R13 + + // skip += bytesBetweenHashLookups + ADD R14, R12, R12 + + // if nextS > sLimit { goto emitRemainder } + MOVD R13, R3 + SUB R6, R3, R3 + CMP R9, R3 + BHI emitRemainder + + // candidate = int(table[nextHash]) + MOVHU 0(R17)(R11<<1), R15 + + // table[nextHash] = uint16(s) + MOVD R7, R3 + SUB R6, R3, R3 + + MOVH R3, 0(R17)(R11<<1) + + // nextHash = hash(load32(src, nextS), shift) + MOVW 0(R13), R11 + MULW R16, R11 + LSRW R5, R11, R11 + + // if load32(src, s) != load32(src, candidate) { continue } break + MOVW 0(R7), R3 + MOVW (R6)(R15*1), R4 + CMPW R4, R3 + BNE inner0 + +fourByteMatch: + // As per the encode_other.go code: + // + // A 4-byte match has been found. We'll later see etc. + + // !!! Jump to a fast path for short (<= 16 byte) literals. See the comment + // on inputMargin in encode.go. + MOVD R7, R3 + SUB R10, R3, R3 + CMP $16, R3 + BLE emitLiteralFastPath + + // ---------------------------------------- + // Begin inline of the emitLiteral call. + // + // d += emitLiteral(dst[d:], src[nextEmit:s]) + + MOVW R3, R4 + SUBW $1, R4, R4 + + MOVW $60, R2 + CMPW R2, R4 + BLT inlineEmitLiteralOneByte + MOVW $256, R2 + CMPW R2, R4 + BLT inlineEmitLiteralTwoBytes + +inlineEmitLiteralThreeBytes: + MOVD $0xf4, R1 + MOVB R1, 0(R8) + MOVW R4, 1(R8) + ADD $3, R8, R8 + B inlineEmitLiteralMemmove + +inlineEmitLiteralTwoBytes: + MOVD $0xf0, R1 + MOVB R1, 0(R8) + MOVB R4, 1(R8) + ADD $2, R8, R8 + B inlineEmitLiteralMemmove + +inlineEmitLiteralOneByte: + LSLW $2, R4, R4 + MOVB R4, 0(R8) + ADD $1, R8, R8 + +inlineEmitLiteralMemmove: + // Spill local variables (registers) onto the stack; call; unspill. + // + // copy(dst[i:], lit) + // + // This means calling runtime·memmove(&dst[i], &lit[0], len(lit)), so we push + // R8, R10 and R3 as arguments. + MOVD R8, 8(RSP) + MOVD R10, 16(RSP) + MOVD R3, 24(RSP) + + // Finish the "d +=" part of "d += emitLiteral(etc)". + ADD R3, R8, R8 + MOVD R7, 80(RSP) + MOVD R8, 88(RSP) + MOVD R15, 120(RSP) + CALL runtime·memmove(SB) + MOVD 64(RSP), R5 + MOVD 72(RSP), R6 + MOVD 80(RSP), R7 + MOVD 88(RSP), R8 + MOVD 96(RSP), R9 + MOVD 120(RSP), R15 + ADD $128, RSP, R17 + MOVW $0xa7bd, R16 + MOVKW $(0x1e35<<16), R16 + B inner1 + +inlineEmitLiteralEnd: + // End inline of the emitLiteral call. + // ---------------------------------------- + +emitLiteralFastPath: + // !!! Emit the 1-byte encoding "uint8(len(lit)-1)<<2". + MOVB R3, R4 + SUBW $1, R4, R4 + AND $0xff, R4, R4 + LSLW $2, R4, R4 + MOVB R4, (R8) + ADD $1, R8, R8 + + // !!! Implement the copy from lit to dst as a 16-byte load and store. + // (Encode's documentation says that dst and src must not overlap.) + // + // This always copies 16 bytes, instead of only len(lit) bytes, but that's + // OK. Subsequent iterations will fix up the overrun. + // + // Note that on arm64, it is legal and cheap to issue unaligned 8-byte or + // 16-byte loads and stores. This technique probably wouldn't be as + // effective on architectures that are fussier about alignment. + LDP 0(R10), (R0, R1) + STP (R0, R1), 0(R8) + ADD R3, R8, R8 + +inner1: + // for { etc } + + // base := s + MOVD R7, R12 + + // !!! offset := base - candidate + MOVD R12, R11 + SUB R15, R11, R11 + SUB R6, R11, R11 + + // ---------------------------------------- + // Begin inline of the extendMatch call. + // + // s = extendMatch(src, candidate+4, s+4) + + // !!! R14 = &src[len(src)] + MOVD src_len+32(FP), R14 + ADD R6, R14, R14 + + // !!! R13 = &src[len(src) - 8] + MOVD R14, R13 + SUB $8, R13, R13 + + // !!! R15 = &src[candidate + 4] + ADD $4, R15, R15 + ADD R6, R15, R15 + + // !!! s += 4 + ADD $4, R7, R7 + +inlineExtendMatchCmp8: + // As long as we are 8 or more bytes before the end of src, we can load and + // compare 8 bytes at a time. If those 8 bytes are equal, repeat. + CMP R13, R7 + BHI inlineExtendMatchCmp1 + MOVD (R15), R3 + MOVD (R7), R4 + CMP R4, R3 + BNE inlineExtendMatchBSF + ADD $8, R15, R15 + ADD $8, R7, R7 + B inlineExtendMatchCmp8 + +inlineExtendMatchBSF: + // If those 8 bytes were not equal, XOR the two 8 byte values, and return + // the index of the first byte that differs. + // RBIT reverses the bit order, then CLZ counts the leading zeros, the + // combination of which finds the least significant bit which is set. + // The arm64 architecture is little-endian, and the shift by 3 converts + // a bit index to a byte index. + EOR R3, R4, R4 + RBIT R4, R4 + CLZ R4, R4 + ADD R4>>3, R7, R7 + B inlineExtendMatchEnd + +inlineExtendMatchCmp1: + // In src's tail, compare 1 byte at a time. + CMP R7, R14 + BLS inlineExtendMatchEnd + MOVB (R15), R3 + MOVB (R7), R4 + CMP R4, R3 + BNE inlineExtendMatchEnd + ADD $1, R15, R15 + ADD $1, R7, R7 + B inlineExtendMatchCmp1 + +inlineExtendMatchEnd: + // End inline of the extendMatch call. + // ---------------------------------------- + + // ---------------------------------------- + // Begin inline of the emitCopy call. + // + // d += emitCopy(dst[d:], base-candidate, s-base) + + // !!! length := s - base + MOVD R7, R3 + SUB R12, R3, R3 + +inlineEmitCopyLoop0: + // for length >= 68 { etc } + MOVW $68, R2 + CMPW R2, R3 + BLT inlineEmitCopyStep1 + + // Emit a length 64 copy, encoded as 3 bytes. + MOVD $0xfe, R1 + MOVB R1, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUBW $64, R3, R3 + B inlineEmitCopyLoop0 + +inlineEmitCopyStep1: + // if length > 64 { etc } + MOVW $64, R2 + CMPW R2, R3 + BLE inlineEmitCopyStep2 + + // Emit a length 60 copy, encoded as 3 bytes. + MOVD $0xee, R1 + MOVB R1, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + SUBW $60, R3, R3 + +inlineEmitCopyStep2: + // if length >= 12 || offset >= 2048 { goto inlineEmitCopyStep3 } + MOVW $12, R2 + CMPW R2, R3 + BGE inlineEmitCopyStep3 + MOVW $2048, R2 + CMPW R2, R11 + BGE inlineEmitCopyStep3 + + // Emit the remaining copy, encoded as 2 bytes. + MOVB R11, 1(R8) + LSRW $8, R11, R11 + LSLW $5, R11, R11 + SUBW $4, R3, R3 + AND $0xff, R3, R3 + LSLW $2, R3, R3 + ORRW R3, R11, R11 + ORRW $1, R11, R11 + MOVB R11, 0(R8) + ADD $2, R8, R8 + B inlineEmitCopyEnd + +inlineEmitCopyStep3: + // Emit the remaining copy, encoded as 3 bytes. + SUBW $1, R3, R3 + LSLW $2, R3, R3 + ORRW $2, R3, R3 + MOVB R3, 0(R8) + MOVW R11, 1(R8) + ADD $3, R8, R8 + +inlineEmitCopyEnd: + // End inline of the emitCopy call. + // ---------------------------------------- + + // nextEmit = s + MOVD R7, R10 + + // if s >= sLimit { goto emitRemainder } + MOVD R7, R3 + SUB R6, R3, R3 + CMP R3, R9 + BLS emitRemainder + + // As per the encode_other.go code: + // + // We could immediately etc. + + // x := load64(src, s-1) + MOVD -1(R7), R14 + + // prevHash := hash(uint32(x>>0), shift) + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // table[prevHash] = uint16(s-1) + MOVD R7, R3 + SUB R6, R3, R3 + SUB $1, R3, R3 + + MOVHU R3, 0(R17)(R11<<1) + + // currHash := hash(uint32(x>>8), shift) + LSR $8, R14, R14 + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // candidate = int(table[currHash]) + MOVHU 0(R17)(R11<<1), R15 + + // table[currHash] = uint16(s) + ADD $1, R3, R3 + MOVHU R3, 0(R17)(R11<<1) + + // if uint32(x>>8) == load32(src, candidate) { continue } + MOVW (R6)(R15*1), R4 + CMPW R4, R14 + BEQ inner1 + + // nextHash = hash(uint32(x>>16), shift) + LSR $8, R14, R14 + MOVW R14, R11 + MULW R16, R11, R11 + LSRW R5, R11, R11 + + // s++ + ADD $1, R7, R7 + + // break out of the inner1 for loop, i.e. continue the outer loop. + B outer + +emitRemainder: + // if nextEmit < len(src) { etc } + MOVD src_len+32(FP), R3 + ADD R6, R3, R3 + CMP R3, R10 + BEQ encodeBlockEnd + + // d += emitLiteral(dst[d:], src[nextEmit:]) + // + // Push args. + MOVD R8, 8(RSP) + MOVD $0, 16(RSP) // Unnecessary, as the callee ignores it, but conservative. + MOVD $0, 24(RSP) // Unnecessary, as the callee ignores it, but conservative. + MOVD R10, 32(RSP) + SUB R10, R3, R3 + MOVD R3, 40(RSP) + MOVD R3, 48(RSP) // Unnecessary, as the callee ignores it, but conservative. + + // Spill local variables (registers) onto the stack; call; unspill. + MOVD R8, 88(RSP) + CALL ·emitLiteral(SB) + MOVD 88(RSP), R8 + + // Finish the "d +=" part of "d += emitLiteral(etc)". + MOVD 56(RSP), R1 + ADD R1, R8, R8 + +encodeBlockEnd: + MOVD dst_base+0(FP), R3 + SUB R3, R8, R8 + MOVD R8, d+48(FP) + RET diff --git a/vendor/github.com/golang/snappy/encode_asm.go b/vendor/github.com/golang/snappy/encode_asm.go new file mode 100644 index 000000000..107c1e714 --- /dev/null +++ b/vendor/github.com/golang/snappy/encode_asm.go @@ -0,0 +1,30 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine +// +build gc +// +build !noasm +// +build amd64 arm64 + +package snappy + +// emitLiteral has the same semantics as in encode_other.go. +// +//go:noescape +func emitLiteral(dst, lit []byte) int + +// emitCopy has the same semantics as in encode_other.go. +// +//go:noescape +func emitCopy(dst []byte, offset, length int) int + +// extendMatch has the same semantics as in encode_other.go. +// +//go:noescape +func extendMatch(src []byte, i, j int) int + +// encodeBlock has the same semantics as in encode_other.go. +// +//go:noescape +func encodeBlock(dst, src []byte) (d int) diff --git a/vendor/github.com/golang/snappy/encode_other.go b/vendor/github.com/golang/snappy/encode_other.go new file mode 100644 index 000000000..296d7f0be --- /dev/null +++ b/vendor/github.com/golang/snappy/encode_other.go @@ -0,0 +1,238 @@ +// Copyright 2016 The Snappy-Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!arm64 appengine !gc noasm + +package snappy + +func load32(b []byte, i int) uint32 { + b = b[i : i+4 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func load64(b []byte, i int) uint64 { + b = b[i : i+8 : len(b)] // Help the compiler eliminate bounds checks on the next line. + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +// emitLiteral writes a literal chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= len(lit) && len(lit) <= 65536 +func emitLiteral(dst, lit []byte) int { + i, n := 0, uint(len(lit)-1) + switch { + case n < 60: + dst[0] = uint8(n)<<2 | tagLiteral + i = 1 + case n < 1<<8: + dst[0] = 60<<2 | tagLiteral + dst[1] = uint8(n) + i = 2 + default: + dst[0] = 61<<2 | tagLiteral + dst[1] = uint8(n) + dst[2] = uint8(n >> 8) + i = 3 + } + return i + copy(dst[i:], lit) +} + +// emitCopy writes a copy chunk and returns the number of bytes written. +// +// It assumes that: +// dst is long enough to hold the encoded bytes +// 1 <= offset && offset <= 65535 +// 4 <= length && length <= 65535 +func emitCopy(dst []byte, offset, length int) int { + i := 0 + // The maximum length for a single tagCopy1 or tagCopy2 op is 64 bytes. The + // threshold for this loop is a little higher (at 68 = 64 + 4), and the + // length emitted down below is is a little lower (at 60 = 64 - 4), because + // it's shorter to encode a length 67 copy as a length 60 tagCopy2 followed + // by a length 7 tagCopy1 (which encodes as 3+2 bytes) than to encode it as + // a length 64 tagCopy2 followed by a length 3 tagCopy2 (which encodes as + // 3+3 bytes). The magic 4 in the 64±4 is because the minimum length for a + // tagCopy1 op is 4 bytes, which is why a length 3 copy has to be an + // encodes-as-3-bytes tagCopy2 instead of an encodes-as-2-bytes tagCopy1. + for length >= 68 { + // Emit a length 64 copy, encoded as 3 bytes. + dst[i+0] = 63<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 64 + } + if length > 64 { + // Emit a length 60 copy, encoded as 3 bytes. + dst[i+0] = 59<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + i += 3 + length -= 60 + } + if length >= 12 || offset >= 2048 { + // Emit the remaining copy, encoded as 3 bytes. + dst[i+0] = uint8(length-1)<<2 | tagCopy2 + dst[i+1] = uint8(offset) + dst[i+2] = uint8(offset >> 8) + return i + 3 + } + // Emit the remaining copy, encoded as 2 bytes. + dst[i+0] = uint8(offset>>8)<<5 | uint8(length-4)<<2 | tagCopy1 + dst[i+1] = uint8(offset) + return i + 2 +} + +// extendMatch returns the largest k such that k <= len(src) and that +// src[i:i+k-j] and src[j:k] have the same contents. +// +// It assumes that: +// 0 <= i && i < j && j <= len(src) +func extendMatch(src []byte, i, j int) int { + for ; j < len(src) && src[i] == src[j]; i, j = i+1, j+1 { + } + return j +} + +func hash(u, shift uint32) uint32 { + return (u * 0x1e35a7bd) >> shift +} + +// encodeBlock encodes a non-empty src to a guaranteed-large-enough dst. It +// assumes that the varint-encoded length of the decompressed bytes has already +// been written. +// +// It also assumes that: +// len(dst) >= MaxEncodedLen(len(src)) && +// minNonLiteralBlockSize <= len(src) && len(src) <= maxBlockSize +func encodeBlock(dst, src []byte) (d int) { + // Initialize the hash table. Its size ranges from 1<<8 to 1<<14 inclusive. + // The table element type is uint16, as s < sLimit and sLimit < len(src) + // and len(src) <= maxBlockSize and maxBlockSize == 65536. + const ( + maxTableSize = 1 << 14 + // tableMask is redundant, but helps the compiler eliminate bounds + // checks. + tableMask = maxTableSize - 1 + ) + shift := uint32(32 - 8) + for tableSize := 1 << 8; tableSize < maxTableSize && tableSize < len(src); tableSize *= 2 { + shift-- + } + // In Go, all array elements are zero-initialized, so there is no advantage + // to a smaller tableSize per se. However, it matches the C++ algorithm, + // and in the asm versions of this code, we can get away with zeroing only + // the first tableSize elements. + var table [maxTableSize]uint16 + + // sLimit is when to stop looking for offset/length copies. The inputMargin + // lets us use a fast path for emitLiteral in the main loop, while we are + // looking for copies. + sLimit := len(src) - inputMargin + + // nextEmit is where in src the next emitLiteral should start from. + nextEmit := 0 + + // The encoded form must start with a literal, as there are no previous + // bytes to copy, so we start looking for hash matches at s == 1. + s := 1 + nextHash := hash(load32(src, s), shift) + + for { + // Copied from the C++ snappy implementation: + // + // Heuristic match skipping: If 32 bytes are scanned with no matches + // found, start looking only at every other byte. If 32 more bytes are + // scanned (or skipped), look at every third byte, etc.. When a match + // is found, immediately go back to looking at every byte. This is a + // small loss (~5% performance, ~0.1% density) for compressible data + // due to more bookkeeping, but for non-compressible data (such as + // JPEG) it's a huge win since the compressor quickly "realizes" the + // data is incompressible and doesn't bother looking for matches + // everywhere. + // + // The "skip" variable keeps track of how many bytes there are since + // the last match; dividing it by 32 (ie. right-shifting by five) gives + // the number of bytes to move ahead for each iteration. + skip := 32 + + nextS := s + candidate := 0 + for { + s = nextS + bytesBetweenHashLookups := skip >> 5 + nextS = s + bytesBetweenHashLookups + skip += bytesBetweenHashLookups + if nextS > sLimit { + goto emitRemainder + } + candidate = int(table[nextHash&tableMask]) + table[nextHash&tableMask] = uint16(s) + nextHash = hash(load32(src, nextS), shift) + if load32(src, s) == load32(src, candidate) { + break + } + } + + // A 4-byte match has been found. We'll later see if more than 4 bytes + // match. But, prior to the match, src[nextEmit:s] are unmatched. Emit + // them as literal bytes. + d += emitLiteral(dst[d:], src[nextEmit:s]) + + // Call emitCopy, and then see if another emitCopy could be our next + // move. Repeat until we find no match for the input immediately after + // what was consumed by the last emitCopy call. + // + // If we exit this loop normally then we need to call emitLiteral next, + // though we don't yet know how big the literal will be. We handle that + // by proceeding to the next iteration of the main loop. We also can + // exit this loop via goto if we get close to exhausting the input. + for { + // Invariant: we have a 4-byte match at s, and no need to emit any + // literal bytes prior to s. + base := s + + // Extend the 4-byte match as long as possible. + // + // This is an inlined version of: + // s = extendMatch(src, candidate+4, s+4) + s += 4 + for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 { + } + + d += emitCopy(dst[d:], base-candidate, s-base) + nextEmit = s + if s >= sLimit { + goto emitRemainder + } + + // We could immediately start working at s now, but to improve + // compression we first update the hash table at s-1 and at s. If + // another emitCopy is not our next move, also calculate nextHash + // at s+1. At least on GOARCH=amd64, these three hash calculations + // are faster as one load64 call (with some shifts) instead of + // three load32 calls. + x := load64(src, s-1) + prevHash := hash(uint32(x>>0), shift) + table[prevHash&tableMask] = uint16(s - 1) + currHash := hash(uint32(x>>8), shift) + candidate = int(table[currHash&tableMask]) + table[currHash&tableMask] = uint16(s) + if uint32(x>>8) != load32(src, candidate) { + nextHash = hash(uint32(x>>16), shift) + s++ + break + } + } + } + +emitRemainder: + if nextEmit < len(src) { + d += emitLiteral(dst[d:], src[nextEmit:]) + } + return d +} diff --git a/vendor/github.com/golang/snappy/snappy.go b/vendor/github.com/golang/snappy/snappy.go new file mode 100644 index 000000000..ece692ea4 --- /dev/null +++ b/vendor/github.com/golang/snappy/snappy.go @@ -0,0 +1,98 @@ +// Copyright 2011 The Snappy-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 snappy implements the Snappy compression format. It aims for very +// high speeds and reasonable compression. +// +// There are actually two Snappy formats: block and stream. They are related, +// but different: trying to decompress block-compressed data as a Snappy stream +// will fail, and vice versa. The block format is the Decode and Encode +// functions and the stream format is the Reader and Writer types. +// +// The block format, the more common case, is used when the complete size (the +// number of bytes) of the original data is known upfront, at the time +// compression starts. The stream format, also known as the framing format, is +// for when that isn't always true. +// +// The canonical, C++ implementation is at https://github.com/google/snappy and +// it only implements the block format. +package snappy // import "github.com/golang/snappy" + +import ( + "hash/crc32" +) + +/* +Each encoded block begins with the varint-encoded length of the decoded data, +followed by a sequence of chunks. Chunks begin and end on byte boundaries. The +first byte of each chunk is broken into its 2 least and 6 most significant bits +called l and m: l ranges in [0, 4) and m ranges in [0, 64). l is the chunk tag. +Zero means a literal tag. All other values mean a copy tag. + +For literal tags: + - If m < 60, the next 1 + m bytes are literal bytes. + - Otherwise, let n be the little-endian unsigned integer denoted by the next + m - 59 bytes. The next 1 + n bytes after that are literal bytes. + +For copy tags, length bytes are copied from offset bytes ago, in the style of +Lempel-Ziv compression algorithms. In particular: + - For l == 1, the offset ranges in [0, 1<<11) and the length in [4, 12). + The length is 4 + the low 3 bits of m. The high 3 bits of m form bits 8-10 + of the offset. The next byte is bits 0-7 of the offset. + - For l == 2, the offset ranges in [0, 1<<16) and the length in [1, 65). + The length is 1 + m. The offset is the little-endian unsigned integer + denoted by the next 2 bytes. + - For l == 3, this tag is a legacy format that is no longer issued by most + encoders. Nonetheless, the offset ranges in [0, 1<<32) and the length in + [1, 65). The length is 1 + m. The offset is the little-endian unsigned + integer denoted by the next 4 bytes. +*/ +const ( + tagLiteral = 0x00 + tagCopy1 = 0x01 + tagCopy2 = 0x02 + tagCopy4 = 0x03 +) + +const ( + checksumSize = 4 + chunkHeaderSize = 4 + magicChunk = "\xff\x06\x00\x00" + magicBody + magicBody = "sNaPpY" + + // maxBlockSize is the maximum size of the input to encodeBlock. It is not + // part of the wire format per se, but some parts of the encoder assume + // that an offset fits into a uint16. + // + // Also, for the framing format (Writer type instead of Encode function), + // https://github.com/google/snappy/blob/master/framing_format.txt says + // that "the uncompressed data in a chunk must be no longer than 65536 + // bytes". + maxBlockSize = 65536 + + // maxEncodedLenOfMaxBlockSize equals MaxEncodedLen(maxBlockSize), but is + // hard coded to be a const instead of a variable, so that obufLen can also + // be a const. Their equivalence is confirmed by + // TestMaxEncodedLenOfMaxBlockSize. + maxEncodedLenOfMaxBlockSize = 76490 + + obufHeaderLen = len(magicChunk) + checksumSize + chunkHeaderSize + obufLen = obufHeaderLen + maxEncodedLenOfMaxBlockSize +) + +const ( + chunkTypeCompressedData = 0x00 + chunkTypeUncompressedData = 0x01 + chunkTypePadding = 0xfe + chunkTypeStreamIdentifier = 0xff +) + +var crcTable = crc32.MakeTable(crc32.Castagnoli) + +// crc implements the checksum specified in section 3 of +// https://github.com/google/snappy/blob/master/framing_format.txt +func crc(b []byte) uint32 { + c := crc32.Update(0, crcTable, b) + return uint32(c>>15|c<<17) + 0xa282ead8 +} diff --git a/vendor/golang.org/x/text/encoding/charmap/charmap.go b/vendor/golang.org/x/text/encoding/charmap/charmap.go new file mode 100644 index 000000000..e89ff0734 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/charmap/charmap.go @@ -0,0 +1,249 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run maketables.go + +// Package charmap provides simple character encodings such as IBM Code Page 437 +// and Windows 1252. +package charmap // import "golang.org/x/text/encoding/charmap" + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// These encodings vary only in the way clients should interpret them. Their +// coded character set is identical and a single implementation can be shared. +var ( + // ISO8859_6E is the ISO 8859-6E encoding. + ISO8859_6E encoding.Encoding = &iso8859_6E + + // ISO8859_6I is the ISO 8859-6I encoding. + ISO8859_6I encoding.Encoding = &iso8859_6I + + // ISO8859_8E is the ISO 8859-8E encoding. + ISO8859_8E encoding.Encoding = &iso8859_8E + + // ISO8859_8I is the ISO 8859-8I encoding. + ISO8859_8I encoding.Encoding = &iso8859_8I + + iso8859_6E = internal.Encoding{ + Encoding: ISO8859_6, + Name: "ISO-8859-6E", + MIB: identifier.ISO88596E, + } + + iso8859_6I = internal.Encoding{ + Encoding: ISO8859_6, + Name: "ISO-8859-6I", + MIB: identifier.ISO88596I, + } + + iso8859_8E = internal.Encoding{ + Encoding: ISO8859_8, + Name: "ISO-8859-8E", + MIB: identifier.ISO88598E, + } + + iso8859_8I = internal.Encoding{ + Encoding: ISO8859_8, + Name: "ISO-8859-8I", + MIB: identifier.ISO88598I, + } +) + +// All is a list of all defined encodings in this package. +var All []encoding.Encoding = listAll + +// TODO: implement these encodings, in order of importance. +// ASCII, ISO8859_1: Rather common. Close to Windows 1252. +// ISO8859_9: Close to Windows 1254. + +// utf8Enc holds a rune's UTF-8 encoding in data[:len]. +type utf8Enc struct { + len uint8 + data [3]byte +} + +// Charmap is an 8-bit character set encoding. +type Charmap struct { + // name is the encoding's name. + name string + // mib is the encoding type of this encoder. + mib identifier.MIB + // asciiSuperset states whether the encoding is a superset of ASCII. + asciiSuperset bool + // low is the lower bound of the encoded byte for a non-ASCII rune. If + // Charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00. + low uint8 + // replacement is the encoded replacement character. + replacement byte + // decode is the map from encoded byte to UTF-8. + decode [256]utf8Enc + // encoding is the map from runes to encoded bytes. Each entry is a + // uint32: the high 8 bits are the encoded byte and the low 24 bits are + // the rune. The table entries are sorted by ascending rune. + encode [256]uint32 +} + +// NewDecoder implements the encoding.Encoding interface. +func (m *Charmap) NewDecoder() *encoding.Decoder { + return &encoding.Decoder{Transformer: charmapDecoder{charmap: m}} +} + +// NewEncoder implements the encoding.Encoding interface. +func (m *Charmap) NewEncoder() *encoding.Encoder { + return &encoding.Encoder{Transformer: charmapEncoder{charmap: m}} +} + +// String returns the Charmap's name. +func (m *Charmap) String() string { + return m.name +} + +// ID implements an internal interface. +func (m *Charmap) ID() (mib identifier.MIB, other string) { + return m.mib, "" +} + +// charmapDecoder implements transform.Transformer by decoding to UTF-8. +type charmapDecoder struct { + transform.NopResetter + charmap *Charmap +} + +func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for i, c := range src { + if m.charmap.asciiSuperset && c < utf8.RuneSelf { + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = c + nDst++ + nSrc = i + 1 + continue + } + + decode := &m.charmap.decode[c] + n := int(decode.len) + if nDst+n > len(dst) { + err = transform.ErrShortDst + break + } + // It's 15% faster to avoid calling copy for these tiny slices. + for j := 0; j < n; j++ { + dst[nDst] = decode.data[j] + nDst++ + } + nSrc = i + 1 + } + return nDst, nSrc, err +} + +// DecodeByte returns the Charmap's rune decoding of the byte b. +func (m *Charmap) DecodeByte(b byte) rune { + switch x := &m.decode[b]; x.len { + case 1: + return rune(x.data[0]) + case 2: + return rune(x.data[0]&0x1f)<<6 | rune(x.data[1]&0x3f) + default: + return rune(x.data[0]&0x0f)<<12 | rune(x.data[1]&0x3f)<<6 | rune(x.data[2]&0x3f) + } +} + +// charmapEncoder implements transform.Transformer by encoding from UTF-8. +type charmapEncoder struct { + transform.NopResetter + charmap *Charmap +} + +func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for nSrc < len(src) { + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + if m.charmap.asciiSuperset { + nSrc++ + dst[nDst] = uint8(r) + nDst++ + continue + } + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + } else { + err = internal.RepertoireError(m.charmap.replacement) + } + break + } + } + + // Binary search in [low, high) for that rune in the m.charmap.encode table. + for low, high := int(m.charmap.low), 0x100; ; { + if low >= high { + err = internal.RepertoireError(m.charmap.replacement) + break loop + } + mid := (low + high) / 2 + got := m.charmap.encode[mid] + gotRune := rune(got & (1<<24 - 1)) + if gotRune < r { + low = mid + 1 + } else if gotRune > r { + high = mid + } else { + dst[nDst] = byte(got >> 24) + nDst++ + break + } + } + nSrc += size + } + return nDst, nSrc, err +} + +// EncodeRune returns the Charmap's byte encoding of the rune r. ok is whether +// r is in the Charmap's repertoire. If not, b is set to the Charmap's +// replacement byte. This is often the ASCII substitute character '\x1a'. +func (m *Charmap) EncodeRune(r rune) (b byte, ok bool) { + if r < utf8.RuneSelf && m.asciiSuperset { + return byte(r), true + } + for low, high := int(m.low), 0x100; ; { + if low >= high { + return m.replacement, false + } + mid := (low + high) / 2 + got := m.encode[mid] + gotRune := rune(got & (1<<24 - 1)) + if gotRune < r { + low = mid + 1 + } else if gotRune > r { + high = mid + } else { + return byte(got >> 24), true + } + } +} diff --git a/vendor/golang.org/x/text/encoding/charmap/tables.go b/vendor/golang.org/x/text/encoding/charmap/tables.go new file mode 100644 index 000000000..cf7281e9e --- /dev/null +++ b/vendor/golang.org/x/text/encoding/charmap/tables.go @@ -0,0 +1,7410 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package charmap + +import ( + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal/identifier" +) + +// CodePage037 is the IBM Code Page 037 encoding. +var CodePage037 *Charmap = &codePage037 + +var codePage037 = Charmap{ + name: "IBM Code Page 037", + mib: identifier.IBM037, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, + 0xbd0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, + 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, + 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, + 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, + 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, + 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, + 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, + 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, + 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, + 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, + 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, + }, +} + +// CodePage437 is the IBM Code Page 437 encoding. +var CodePage437 *Charmap = &codePage437 + +var codePage437 = Charmap{ + name: "IBM Code Page 437", + mib: identifier.PC8CodePage437, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, + 0xab0000bd, 0xa80000bf, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, + 0x990000d6, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, + 0x910000e6, 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, + 0x8c0000ee, 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, + 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage850 is the IBM Code Page 850 encoding. +var CodePage850 *Charmap = &codePage850 + +var codePage850 = Charmap{ + name: "IBM Code Page 850", + mib: identifier.PC850Multilingual, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, + {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7, + 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7, + 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf, + 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, + 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf, + 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7, + 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df, + 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7, + 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef, + 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7, + 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff, + 0xd5000131, 0x9f000192, 0xf2002017, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage852 is the IBM Code Page 852 encoding. +var CodePage852 *Charmap = &codePage852 + +var codePage852 = Charmap{ + name: "IBM Code Page 852", + mib: identifier.PCp852, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc5, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, + {2, [3]byte{0xc4, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}}, + {2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, + {2, [3]byte{0xc5, 0xa5, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbe, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xc4, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}}, + {2, [3]byte{0xc4, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x8f, 0x00}}, {2, [3]byte{0xc5, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc4, 0x9b, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc5, 0xa2, 0x00}}, + {2, [3]byte{0xc5, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x84, 0x00}}, {2, [3]byte{0xc5, 0x88, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, + {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, + {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x99, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xcf0000a4, 0xf50000a7, 0xf90000a8, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xf80000b0, + 0xef0000b4, 0xf70000b8, 0xaf0000bb, 0xb50000c1, 0xb60000c2, 0x8e0000c4, 0x800000c7, 0x900000c9, + 0xd30000cb, 0xd60000cd, 0xd70000ce, 0xe00000d3, 0xe20000d4, 0x990000d6, 0x9e0000d7, 0xe90000da, + 0x9a0000dc, 0xed0000dd, 0xe10000df, 0xa00000e1, 0x830000e2, 0x840000e4, 0x870000e7, 0x820000e9, + 0x890000eb, 0xa10000ed, 0x8c0000ee, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0xa30000fa, + 0x810000fc, 0xec0000fd, 0xc6000102, 0xc7000103, 0xa4000104, 0xa5000105, 0x8f000106, 0x86000107, + 0xac00010c, 0x9f00010d, 0xd200010e, 0xd400010f, 0xd1000110, 0xd0000111, 0xa8000118, 0xa9000119, + 0xb700011a, 0xd800011b, 0x91000139, 0x9200013a, 0x9500013d, 0x9600013e, 0x9d000141, 0x88000142, + 0xe3000143, 0xe4000144, 0xd5000147, 0xe5000148, 0x8a000150, 0x8b000151, 0xe8000154, 0xea000155, + 0xfc000158, 0xfd000159, 0x9700015a, 0x9800015b, 0xb800015e, 0xad00015f, 0xe6000160, 0xe7000161, + 0xdd000162, 0xee000163, 0x9b000164, 0x9c000165, 0xde00016e, 0x8500016f, 0xeb000170, 0xfb000171, + 0x8d000179, 0xab00017a, 0xbd00017b, 0xbe00017c, 0xa600017d, 0xa700017e, 0xf30002c7, 0xf40002d8, + 0xfa0002d9, 0xf20002db, 0xf10002dd, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage855 is the IBM Code Page 855 encoding. +var CodePage855 *Charmap = &codePage855 + +var codePage855 = Charmap{ + name: "IBM Code Page 855", + mib: identifier.IBM855, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x82, 0x00}}, + {2, [3]byte{0xd1, 0x93, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x84, 0x00}}, + {2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}}, + {2, [3]byte{0xd1, 0x97, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, + {2, [3]byte{0xd1, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x8a, 0x00}}, + {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}}, + {2, [3]byte{0xd1, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xae, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0x94, 0x00}}, + {2, [3]byte{0xd0, 0xb5, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xa4, 0x00}}, + {2, [3]byte{0xd0, 0xb3, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, + {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd1, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xd0, 0xaf, 0x00}}, {2, [3]byte{0xd1, 0x80, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd0, 0xa1, 0x00}}, {2, [3]byte{0xd1, 0x82, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0xa3, 0x00}}, {2, [3]byte{0xd0, 0xb6, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x8c, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0xab, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd0, 0xa9, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xcf0000a4, 0xfd0000a7, 0xae0000ab, 0xf00000ad, 0xaf0000bb, 0x85000401, 0x81000402, + 0x83000403, 0x87000404, 0x89000405, 0x8b000406, 0x8d000407, 0x8f000408, 0x91000409, 0x9300040a, + 0x9500040b, 0x9700040c, 0x9900040e, 0x9b00040f, 0xa1000410, 0xa3000411, 0xec000412, 0xad000413, + 0xa7000414, 0xa9000415, 0xea000416, 0xf4000417, 0xb8000418, 0xbe000419, 0xc700041a, 0xd100041b, + 0xd300041c, 0xd500041d, 0xd700041e, 0xdd00041f, 0xe2000420, 0xe4000421, 0xe6000422, 0xe8000423, + 0xab000424, 0xb6000425, 0xa5000426, 0xfc000427, 0xf6000428, 0xfa000429, 0x9f00042a, 0xf200042b, + 0xee00042c, 0xf800042d, 0x9d00042e, 0xe000042f, 0xa0000430, 0xa2000431, 0xeb000432, 0xac000433, + 0xa6000434, 0xa8000435, 0xe9000436, 0xf3000437, 0xb7000438, 0xbd000439, 0xc600043a, 0xd000043b, + 0xd200043c, 0xd400043d, 0xd600043e, 0xd800043f, 0xe1000440, 0xe3000441, 0xe5000442, 0xe7000443, + 0xaa000444, 0xb5000445, 0xa4000446, 0xfb000447, 0xf5000448, 0xf9000449, 0x9e00044a, 0xf100044b, + 0xed00044c, 0xf700044d, 0x9c00044e, 0xde00044f, 0x84000451, 0x80000452, 0x82000453, 0x86000454, + 0x88000455, 0x8a000456, 0x8c000457, 0x8e000458, 0x90000459, 0x9200045a, 0x9400045b, 0x9600045c, + 0x9800045e, 0x9a00045f, 0xef002116, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage858 is the Windows Code Page 858 encoding. +var CodePage858 *Charmap = &codePage858 + +var codePage858 = Charmap{ + name: "Windows Code Page 858", + mib: identifier.IBM00858, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0x8f, 0x00}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {2, [3]byte{0xc2, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xbe, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9a, 0x00}}, + {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x97}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0xbd0000a2, 0x9c0000a3, 0xcf0000a4, 0xbe0000a5, 0xdd0000a6, 0xf50000a7, + 0xf90000a8, 0xb80000a9, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf00000ad, 0xa90000ae, 0xee0000af, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xfc0000b3, 0xef0000b4, 0xe60000b5, 0xf40000b6, 0xfa0000b7, + 0xf70000b8, 0xfb0000b9, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xf30000be, 0xa80000bf, + 0xb70000c0, 0xb50000c1, 0xb60000c2, 0xc70000c3, 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, + 0xd40000c8, 0x900000c9, 0xd20000ca, 0xd30000cb, 0xde0000cc, 0xd60000cd, 0xd70000ce, 0xd80000cf, + 0xd10000d0, 0xa50000d1, 0xe30000d2, 0xe00000d3, 0xe20000d4, 0xe50000d5, 0x990000d6, 0x9e0000d7, + 0x9d0000d8, 0xeb0000d9, 0xe90000da, 0xea0000db, 0x9a0000dc, 0xed0000dd, 0xe80000de, 0xe10000df, + 0x850000e0, 0xa00000e1, 0x830000e2, 0xc60000e3, 0x840000e4, 0x860000e5, 0x910000e6, 0x870000e7, + 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, 0x8b0000ef, + 0xd00000f0, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0xe40000f5, 0x940000f6, 0xf60000f7, + 0x9b0000f8, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0xec0000fd, 0xe70000fe, 0x980000ff, + 0x9f000192, 0xf2002017, 0xd50020ac, 0xc4002500, 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, + 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, + 0xc9002554, 0xbb002557, 0xc800255a, 0xbc00255d, 0xcc002560, 0xb9002563, 0xcb002566, 0xca002569, + 0xce00256c, 0xdf002580, 0xdc002584, 0xdb002588, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage860 is the IBM Code Page 860 encoding. +var CodePage860 *Charmap = &codePage860 + +var codePage860 = Charmap{ + name: "IBM Code Page 860", + mib: identifier.IBM860, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x8a, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, + 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, 0xab0000bd, + 0xa80000bf, 0x910000c0, 0x860000c1, 0x8f0000c2, 0x8e0000c3, 0x800000c7, 0x920000c8, 0x900000c9, + 0x890000ca, 0x980000cc, 0x8b0000cd, 0xa50000d1, 0xa90000d2, 0x9f0000d3, 0x8c0000d4, 0x990000d5, + 0x9d0000d9, 0x960000da, 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e3, + 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x8d0000ec, 0xa10000ed, 0xa40000f1, 0x950000f2, + 0xa20000f3, 0x930000f4, 0x940000f5, 0xf60000f7, 0x970000f9, 0xa30000fa, 0x810000fc, 0xe2000393, + 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, + 0xe50003c3, 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, + 0xef002229, 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage862 is the IBM Code Page 862 encoding. +var CodePage862 *Charmap = &codePage862 + +var codePage862 = Charmap{ + name: "IBM Code Page 862", + mib: identifier.PC862LatinHebrew, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, + {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, + {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, + {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, + {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, + {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, + {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, + {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, + {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, + {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, + {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, + {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, + {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, + {2, [3]byte{0xd7, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9b0000a2, 0x9c0000a3, 0x9d0000a5, 0xa60000aa, 0xae0000ab, 0xaa0000ac, + 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xaf0000bb, 0xac0000bc, + 0xab0000bd, 0xa80000bf, 0xa50000d1, 0xe10000df, 0xa00000e1, 0xa10000ed, 0xa40000f1, 0xa20000f3, + 0xf60000f7, 0xa30000fa, 0x9f000192, 0xe2000393, 0xe9000398, 0xe40003a3, 0xe80003a6, 0xea0003a9, + 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, 0xe70003c4, 0xed0003c6, 0x800005d0, + 0x810005d1, 0x820005d2, 0x830005d3, 0x840005d4, 0x850005d5, 0x860005d6, 0x870005d7, 0x880005d8, + 0x890005d9, 0x8a0005da, 0x8b0005db, 0x8c0005dc, 0x8d0005dd, 0x8e0005de, 0x8f0005df, 0x900005e0, + 0x910005e1, 0x920005e2, 0x930005e3, 0x940005e4, 0x950005e5, 0x960005e6, 0x970005e7, 0x980005e8, + 0x990005e9, 0x9a0005ea, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage863 is the IBM Code Page 863 encoding. +var CodePage863 *Charmap = &codePage863 + +var codePage863 = Charmap{ + name: "IBM Code Page 863", + mib: identifier.IBM863, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x97}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa2, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9b, 0x00}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0x9b0000a2, 0x9c0000a3, 0x980000a4, 0xa00000a6, 0x8f0000a7, 0xa40000a8, 0xae0000ab, + 0xaa0000ac, 0xa70000af, 0xf80000b0, 0xf10000b1, 0xfd0000b2, 0xa60000b3, 0xa10000b4, 0xe60000b5, + 0x860000b6, 0xfa0000b7, 0xa50000b8, 0xaf0000bb, 0xac0000bc, 0xab0000bd, 0xad0000be, 0x8e0000c0, + 0x840000c2, 0x800000c7, 0x910000c8, 0x900000c9, 0x920000ca, 0x940000cb, 0xa80000ce, 0x950000cf, + 0x990000d4, 0x9d0000d9, 0x9e0000db, 0x9a0000dc, 0xe10000df, 0x850000e0, 0x830000e2, 0x870000e7, + 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8c0000ee, 0x8b0000ef, 0xa20000f3, 0x930000f4, + 0xf60000f7, 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0x8d002017, 0xfc00207f, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage865 is the IBM Code Page 865 encoding. +var CodePage865 *Charmap = &codePage865 + +var codePage865 = Charmap{ + name: "IBM Code Page 865", + mib: identifier.IBM865, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xa7}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0xa1, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0x90}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xce, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0x93, 0x00}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {2, [3]byte{0xce, 0xa3, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {2, [3]byte{0xcf, 0x84, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0x98, 0x00}}, + {2, [3]byte{0xce, 0xa9, 0x00}}, {2, [3]byte{0xce, 0xb4, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xcf, 0x86, 0x00}}, + {2, [3]byte{0xce, 0xb5, 0x00}}, {3, [3]byte{0xe2, 0x88, 0xa9}}, + {3, [3]byte{0xe2, 0x89, 0xa1}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa5}}, {3, [3]byte{0xe2, 0x89, 0xa4}}, + {3, [3]byte{0xe2, 0x8c, 0xa0}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x81, 0xbf}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xad0000a1, 0x9c0000a3, 0xaf0000a4, 0xa60000aa, 0xae0000ab, 0xaa0000ac, 0xf80000b0, + 0xf10000b1, 0xfd0000b2, 0xe60000b5, 0xfa0000b7, 0xa70000ba, 0xac0000bc, 0xab0000bd, 0xa80000bf, + 0x8e0000c4, 0x8f0000c5, 0x920000c6, 0x800000c7, 0x900000c9, 0xa50000d1, 0x990000d6, 0x9d0000d8, + 0x9a0000dc, 0xe10000df, 0x850000e0, 0xa00000e1, 0x830000e2, 0x840000e4, 0x860000e5, 0x910000e6, + 0x870000e7, 0x8a0000e8, 0x820000e9, 0x880000ea, 0x890000eb, 0x8d0000ec, 0xa10000ed, 0x8c0000ee, + 0x8b0000ef, 0xa40000f1, 0x950000f2, 0xa20000f3, 0x930000f4, 0x940000f6, 0xf60000f7, 0x9b0000f8, + 0x970000f9, 0xa30000fa, 0x960000fb, 0x810000fc, 0x980000ff, 0x9f000192, 0xe2000393, 0xe9000398, + 0xe40003a3, 0xe80003a6, 0xea0003a9, 0xe00003b1, 0xeb0003b4, 0xee0003b5, 0xe30003c0, 0xe50003c3, + 0xe70003c4, 0xed0003c6, 0xfc00207f, 0x9e0020a7, 0xf9002219, 0xfb00221a, 0xec00221e, 0xef002229, + 0xf7002248, 0xf0002261, 0xf3002264, 0xf2002265, 0xa9002310, 0xf4002320, 0xf5002321, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage866 is the IBM Code Page 866 encoding. +var CodePage866 *Charmap = &codePage866 + +var codePage866 = Charmap{ + name: "IBM Code Page 866", + mib: identifier.IBM866, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa1}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0x91}}, {3, [3]byte{0xe2, 0x95, 0x97}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0x9c}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0xbc}}, + {3, [3]byte{0xe2, 0x95, 0x9e}}, {3, [3]byte{0xe2, 0x95, 0x9f}}, + {3, [3]byte{0xe2, 0x95, 0x9a}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0xa9}}, {3, [3]byte{0xe2, 0x95, 0xa6}}, + {3, [3]byte{0xe2, 0x95, 0xa0}}, {3, [3]byte{0xe2, 0x95, 0x90}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa4}}, + {3, [3]byte{0xe2, 0x95, 0xa5}}, {3, [3]byte{0xe2, 0x95, 0x99}}, + {3, [3]byte{0xe2, 0x95, 0x98}}, {3, [3]byte{0xe2, 0x95, 0x92}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x8c}}, + {3, [3]byte{0xe2, 0x96, 0x90}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, + {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xff0000a0, 0xfd0000a4, 0xf80000b0, 0xfa0000b7, 0xf0000401, 0xf2000404, 0xf4000407, 0xf600040e, + 0x80000410, 0x81000411, 0x82000412, 0x83000413, 0x84000414, 0x85000415, 0x86000416, 0x87000417, + 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, + 0x90000420, 0x91000421, 0x92000422, 0x93000423, 0x94000424, 0x95000425, 0x96000426, 0x97000427, + 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, + 0xa0000430, 0xa1000431, 0xa2000432, 0xa3000433, 0xa4000434, 0xa5000435, 0xa6000436, 0xa7000437, + 0xa8000438, 0xa9000439, 0xaa00043a, 0xab00043b, 0xac00043c, 0xad00043d, 0xae00043e, 0xaf00043f, + 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, 0xe7000447, + 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, 0xef00044f, + 0xf1000451, 0xf3000454, 0xf5000457, 0xf700045e, 0xfc002116, 0xf9002219, 0xfb00221a, 0xc4002500, + 0xb3002502, 0xda00250c, 0xbf002510, 0xc0002514, 0xd9002518, 0xc300251c, 0xb4002524, 0xc200252c, + 0xc1002534, 0xc500253c, 0xcd002550, 0xba002551, 0xd5002552, 0xd6002553, 0xc9002554, 0xb8002555, + 0xb7002556, 0xbb002557, 0xd4002558, 0xd3002559, 0xc800255a, 0xbe00255b, 0xbd00255c, 0xbc00255d, + 0xc600255e, 0xc700255f, 0xcc002560, 0xb5002561, 0xb6002562, 0xb9002563, 0xd1002564, 0xd2002565, + 0xcb002566, 0xcf002567, 0xd0002568, 0xca002569, 0xd800256a, 0xd700256b, 0xce00256c, 0xdf002580, + 0xdc002584, 0xdb002588, 0xdd00258c, 0xde002590, 0xb0002591, 0xb1002592, 0xb2002593, 0xfe0025a0, + }, +} + +// CodePage1047 is the IBM Code Page 1047 encoding. +var CodePage1047 *Charmap = &codePage1047 + +var codePage1047 = Charmap{ + name: "IBM Code Page 1047", + mib: identifier.IBM1047, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {1, [3]byte{0x5e, 0x00, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {2, [3]byte{0xc3, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xad00005b, 0xe000005c, 0xbd00005d, 0x5f00005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7, + 0xbb0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0xb00000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, + 0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, + 0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, + 0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, + 0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, + 0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, + 0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xba0000dd, 0xae0000de, 0x590000df, + 0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, + 0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, + 0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, + 0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, + }, +} + +// CodePage1140 is the IBM Code Page 1140 encoding. +var CodePage1140 *Charmap = &codePage1140 + +var codePage1140 = Charmap{ + name: "IBM Code Page 1140", + mib: identifier.IBM01140, + asciiSuperset: false, + low: 0x00, + replacement: 0x3f, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}}, + {1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}}, + {1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}}, + {1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}}, + {1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}}, + {1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}}, + {1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}}, + {1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}}, + {1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + {2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}}, + {1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}}, + {1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}}, + {1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}}, + {1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}}, + {2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}}, + {1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}}, + {1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}}, + {1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}}, + {1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}}, + {1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}}, + {1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}}, + {1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}}, + {1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007, + 0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017, + 0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027, + 0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f, + 0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037, + 0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f, + 0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047, + 0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f, + 0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057, + 0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f, + 0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067, + 0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f, + 0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077, + 0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f, + 0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087, + 0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f, + 0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097, + 0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f, + 0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0xb20000a5, 0x6a0000a6, 0xb50000a7, 0xbd0000a8, + 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, 0x900000b0, + 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, 0x9d0000b8, + 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, 0x640000c0, + 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, 0x740000c8, + 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, 0xac0000d0, + 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, 0x800000d8, + 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, 0x440000e0, + 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, 0x540000e8, + 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, 0x8c0000f0, + 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, 0x700000f8, + 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, 0x9f0020ac, + }, +} + +// ISO8859_1 is the ISO 8859-1 encoding. +var ISO8859_1 *Charmap = &iso8859_1 + +var iso8859_1 = Charmap{ + name: "ISO 8859-1", + mib: identifier.ISOLatin1, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087, + 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f, + 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097, + 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, + 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, + 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, + 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, + 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, + }, +} + +// ISO8859_2 is the ISO 8859-2 encoding. +var ISO8859_2 *Charmap = &iso8859_2 + +var iso8859_2 = Charmap{ + name: "ISO 8859-2", + mib: identifier.ISOLatin2, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xbe, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, + {2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb40000b4, 0xb80000b8, + 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, + 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc, 0xdd0000dd, 0xdf0000df, + 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, + 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc, 0xfd0000fd, 0xc3000102, + 0xe3000103, 0xa1000104, 0xb1000105, 0xc6000106, 0xe6000107, 0xc800010c, 0xe800010d, 0xcf00010e, + 0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a, 0xec00011b, 0xc5000139, + 0xe500013a, 0xa500013d, 0xb500013e, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144, 0xd2000147, + 0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158, 0xf8000159, 0xa600015a, + 0xb600015b, 0xaa00015e, 0xba00015f, 0xa9000160, 0xb9000161, 0xde000162, 0xfe000163, 0xab000164, + 0xbb000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0xac000179, 0xbc00017a, 0xaf00017b, + 0xbf00017c, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xa20002d8, 0xff0002d9, 0xb20002db, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, 0xbd0002dd, + }, +} + +// ISO8859_3 is the ISO 8859-3 encoding. +var ISO8859_3 *Charmap = &iso8859_3 + +var iso8859_3 = Charmap{ + name: "ISO 8859-3", + mib: identifier.ISOLatin3, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa6, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc4, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc4, 0x9e, 0x00}}, + {2, [3]byte{0xc4, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc4, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc4, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0xb5, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x8a, 0x00}}, + {2, [3]byte{0xc4, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc4, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc4, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xac, 0x00}}, + {2, [3]byte{0xc5, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x89, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0x9d, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0x9d, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xb00000b0, 0xb20000b2, + 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb70000b7, 0xb80000b8, 0xbd0000bd, 0xc00000c0, 0xc10000c1, + 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, + 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6, + 0xd70000d7, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, + 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, + 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf60000f6, + 0xf70000f7, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc6000108, 0xe6000109, 0xc500010a, + 0xe500010b, 0xd800011c, 0xf800011d, 0xab00011e, 0xbb00011f, 0xd5000120, 0xf5000121, 0xa6000124, + 0xb6000125, 0xa1000126, 0xb1000127, 0xa9000130, 0xb9000131, 0xac000134, 0xbc000135, 0xde00015c, + 0xfe00015d, 0xaa00015e, 0xba00015f, 0xdd00016c, 0xfd00016d, 0xaf00017b, 0xbf00017c, 0xa20002d8, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, 0xff0002d9, + }, +} + +// ISO8859_4 is the ISO 8859-4 encoding. +var ISO8859_4 *Charmap = &iso8859_4 + +var iso8859_4 = Charmap{ + name: "ISO 8859-4", + mib: identifier.ISOLatin4, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc4, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0x96, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}}, + {2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc5, 0xa0, 0x00}}, + {2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}}, + {2, [3]byte{0xc5, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x97, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xa1, 0x00}}, + {2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}}, + {2, [3]byte{0xc5, 0xa7, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0xaa, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}}, + {2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa70000a7, 0xa80000a8, 0xad0000ad, 0xaf0000af, 0xb00000b0, 0xb40000b4, + 0xb80000b8, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9, + 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, + 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, + 0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xf40000f4, 0xf50000f5, + 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xc0000100, 0xe0000101, + 0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d, 0xd0000110, 0xf0000111, 0xaa000112, 0xba000113, + 0xcc000116, 0xec000117, 0xca000118, 0xea000119, 0xab000122, 0xbb000123, 0xa5000128, 0xb5000129, + 0xcf00012a, 0xef00012b, 0xc700012e, 0xe700012f, 0xd3000136, 0xf3000137, 0xa2000138, 0xa600013b, + 0xb600013c, 0xd1000145, 0xf1000146, 0xbd00014a, 0xbf00014b, 0xd200014c, 0xf200014d, 0xa3000156, + 0xb3000157, 0xa9000160, 0xb9000161, 0xac000166, 0xbc000167, 0xdd000168, 0xfd000169, 0xde00016a, + 0xfe00016b, 0xd9000172, 0xf9000173, 0xae00017d, 0xbe00017e, 0xb70002c7, 0xff0002d9, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, 0xb20002db, + }, +} + +// ISO8859_5 is the ISO 8859-5 encoding. +var ISO8859_5 *Charmap = &iso8859_5 + +var iso8859_5 = Charmap{ + name: "ISO 8859-5", + mib: identifier.ISOLatinCyrillic, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {2, [3]byte{0xd0, 0x88, 0x00}}, {2, [3]byte{0xd0, 0x89, 0x00}}, + {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}}, + {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9b, 0x00}}, + {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xfd0000a7, 0xad0000ad, 0xa1000401, 0xa2000402, 0xa3000403, 0xa4000404, 0xa5000405, + 0xa6000406, 0xa7000407, 0xa8000408, 0xa9000409, 0xaa00040a, 0xab00040b, 0xac00040c, 0xae00040e, + 0xaf00040f, 0xb0000410, 0xb1000411, 0xb2000412, 0xb3000413, 0xb4000414, 0xb5000415, 0xb6000416, + 0xb7000417, 0xb8000418, 0xb9000419, 0xba00041a, 0xbb00041b, 0xbc00041c, 0xbd00041d, 0xbe00041e, + 0xbf00041f, 0xc0000420, 0xc1000421, 0xc2000422, 0xc3000423, 0xc4000424, 0xc5000425, 0xc6000426, + 0xc7000427, 0xc8000428, 0xc9000429, 0xca00042a, 0xcb00042b, 0xcc00042c, 0xcd00042d, 0xce00042e, + 0xcf00042f, 0xd0000430, 0xd1000431, 0xd2000432, 0xd3000433, 0xd4000434, 0xd5000435, 0xd6000436, + 0xd7000437, 0xd8000438, 0xd9000439, 0xda00043a, 0xdb00043b, 0xdc00043c, 0xdd00043d, 0xde00043e, + 0xdf00043f, 0xe0000440, 0xe1000441, 0xe2000442, 0xe3000443, 0xe4000444, 0xe5000445, 0xe6000446, + 0xe7000447, 0xe8000448, 0xe9000449, 0xea00044a, 0xeb00044b, 0xec00044c, 0xed00044d, 0xee00044e, + 0xef00044f, 0xf1000451, 0xf2000452, 0xf3000453, 0xf4000454, 0xf5000455, 0xf6000456, 0xf7000457, + 0xf8000458, 0xf9000459, 0xfa00045a, 0xfb00045b, 0xfc00045c, 0xfe00045e, 0xff00045f, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, 0xf0002116, + }, +} + +// ISO8859_6 is the ISO 8859-6 encoding. +var ISO8859_6 *Charmap = &iso8859_6 + +var iso8859_6 = Charmap{ + name: "ISO 8859-6", + mib: identifier.ISOLatinArabic, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xd8, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9b, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0x9f, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd8, 0xa1, 0x00}}, + {2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}}, + {2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}}, + {2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}}, + {2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}}, + {2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}}, + {2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}}, + {2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}}, + {2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}}, + {2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}}, + {2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}}, + {2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xd8, 0xb7, 0x00}}, + {2, [3]byte{0xd8, 0xb8, 0x00}}, {2, [3]byte{0xd8, 0xb9, 0x00}}, + {2, [3]byte{0xd8, 0xba, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}}, + {2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}}, + {2, [3]byte{0xd9, 0x84, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}}, + {2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}}, + {2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xd9, 0x89, 0x00}}, + {2, [3]byte{0xd9, 0x8a, 0x00}}, {2, [3]byte{0xd9, 0x8b, 0x00}}, + {2, [3]byte{0xd9, 0x8c, 0x00}}, {2, [3]byte{0xd9, 0x8d, 0x00}}, + {2, [3]byte{0xd9, 0x8e, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}}, + {2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xd9, 0x91, 0x00}}, + {2, [3]byte{0xd9, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xad0000ad, 0xac00060c, 0xbb00061b, 0xbf00061f, 0xc1000621, 0xc2000622, + 0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626, 0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a, + 0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e, 0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632, + 0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, 0xd7000637, 0xd8000638, 0xd9000639, 0xda00063a, + 0xe0000640, 0xe1000641, 0xe2000642, 0xe3000643, 0xe4000644, 0xe5000645, 0xe6000646, 0xe7000647, + 0xe8000648, 0xe9000649, 0xea00064a, 0xeb00064b, 0xec00064c, 0xed00064d, 0xee00064e, 0xef00064f, + 0xf0000650, 0xf1000651, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, 0xf2000652, + }, +} + +// ISO8859_7 is the ISO 8859-7 encoding. +var ISO8859_7 *Charmap = &iso8859_7 + +var iso8859_7 = Charmap{ + name: "ISO 8859-7", + mib: identifier.ISOLatinGreek, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x82, 0xaf}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xcd, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x95}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}}, + {2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}}, + {2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}}, + {2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}}, + {2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}}, + {2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}}, + {2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}}, + {2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}}, + {2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}}, + {2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}}, + {2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}}, + {2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}}, + {2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, + {2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}}, + {2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}}, + {2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}}, + {2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}}, + {2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}}, + {2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}}, + {2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}}, + {2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}}, + {2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}}, + {2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}}, + {2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}}, + {2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}}, + {2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}}, + {2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac, + 0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb70000b7, 0xbb0000bb, 0xbd0000bd, + 0xaa00037a, 0xb4000384, 0xb5000385, 0xb6000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c, + 0xbe00038e, 0xbf00038f, 0xc0000390, 0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395, + 0xc6000396, 0xc7000397, 0xc8000398, 0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d, + 0xce00039e, 0xcf00039f, 0xd00003a0, 0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6, + 0xd70003a7, 0xd80003a8, 0xd90003a9, 0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae, + 0xdf0003af, 0xe00003b0, 0xe10003b1, 0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6, + 0xe70003b7, 0xe80003b8, 0xe90003b9, 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be, + 0xef0003bf, 0xf00003c0, 0xf10003c1, 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, + 0xf70003c7, 0xf80003c8, 0xf90003c9, 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, + 0xaf002015, 0xa1002018, 0xa2002019, 0xa40020ac, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, 0xa50020af, + }, +} + +// ISO8859_8 is the ISO 8859-8 encoding. +var ISO8859_8 *Charmap = &iso8859_8 + +var iso8859_8 = Charmap{ + name: "ISO 8859-8", + mib: identifier.ISOLatinHebrew, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x97}}, + {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, + {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, + {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, + {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, + {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, + {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, + {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, + {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, + {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, + {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, + {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, + {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, + {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, + {2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, + {3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, + 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, + 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, + 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xaa0000d7, 0xba0000f7, 0xe00005d0, 0xe10005d1, + 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, + 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, + 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, + 0xfa0005ea, 0xfd00200e, 0xfe00200f, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, 0xdf002017, + }, +} + +// ISO8859_9 is the ISO 8859-9 encoding. +var ISO8859_9 *Charmap = &iso8859_9 + +var iso8859_9 = Charmap{ + name: "ISO 8859-9", + mib: identifier.ISOLatin5, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}}, + {2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}}, + {2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}}, + {2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}}, + {2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}}, + {2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}}, + {2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}}, + {2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}}, + {2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}}, + {2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}}, + {2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}}, + {2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}}, + {2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}}, + {2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087, + 0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f, + 0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097, + 0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, + 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, + 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, + 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, + 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, + 0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0xde00015e, 0xfe00015f, + }, +} + +// ISO8859_10 is the ISO 8859-10 encoding. +var ISO8859_10 *Charmap = &iso8859_10 + +var iso8859_10 = Charmap{ + name: "ISO 8859-10", + mib: identifier.ISOLatin6, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc4, 0x92, 0x00}}, {2, [3]byte{0xc4, 0xa2, 0x00}}, + {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xa8, 0x00}}, + {2, [3]byte{0xc4, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc4, 0xbb, 0x00}}, {2, [3]byte{0xc4, 0x90, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0xa6, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xaa, 0x00}}, {2, [3]byte{0xc5, 0x8a, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xc4, 0x93, 0x00}}, {2, [3]byte{0xc4, 0xa3, 0x00}}, + {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x91, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}}, + {2, [3]byte{0xc5, 0xab, 0x00}}, {2, [3]byte{0xc5, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0xa8, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xb2, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x97, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc5, 0x86, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0xb8, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa70000a7, 0xad0000ad, 0xb00000b0, 0xb70000b7, 0xc10000c1, 0xc20000c2, 0xc30000c3, + 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc90000c9, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xda0000da, 0xdb0000db, + 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, + 0xe50000e5, 0xe60000e6, 0xe90000e9, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf00000f0, + 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf80000f8, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, + 0xfd0000fd, 0xfe0000fe, 0xc0000100, 0xe0000101, 0xa1000104, 0xb1000105, 0xc800010c, 0xe800010d, + 0xa9000110, 0xb9000111, 0xa2000112, 0xb2000113, 0xcc000116, 0xec000117, 0xca000118, 0xea000119, + 0xa3000122, 0xb3000123, 0xa5000128, 0xb5000129, 0xa400012a, 0xb400012b, 0xc700012e, 0xe700012f, + 0xa6000136, 0xb6000137, 0xff000138, 0xa800013b, 0xb800013c, 0xd1000145, 0xf1000146, 0xaf00014a, + 0xbf00014b, 0xd200014c, 0xf200014d, 0xaa000160, 0xba000161, 0xab000166, 0xbb000167, 0xd7000168, + 0xf7000169, 0xae00016a, 0xbe00016b, 0xd9000172, 0xf9000173, 0xac00017d, 0xbc00017e, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, 0xbd002015, + }, +} + +// ISO8859_13 is the ISO 8859-13 encoding. +var ISO8859_13 *Charmap = &iso8859_13 + +var iso8859_13 = Charmap{ + name: "ISO 8859-13", + mib: identifier.ISO885913, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9c}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}}, + {2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, + {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}}, + {2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x99}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab, + 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb50000b5, + 0xb60000b6, 0xb70000b7, 0xb90000b9, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4, + 0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8, + 0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5, 0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5, + 0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc, 0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105, + 0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d, 0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117, + 0xc6000118, 0xe6000119, 0xcc000122, 0xec000123, 0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f, + 0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c, 0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144, + 0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b, + 0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, + 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, 0xff002019, 0xb400201c, 0xa100201d, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, 0xa500201e, + }, +} + +// ISO8859_14 is the ISO 8859-14 encoding. +var ISO8859_14 *Charmap = &iso8859_14 + +var iso8859_14 = Charmap{ + name: "ISO 8859-14", + mib: identifier.ISO885914, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe1, 0xb8, 0x82}}, + {3, [3]byte{0xe1, 0xb8, 0x83}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc4, 0x8a, 0x00}}, {2, [3]byte{0xc4, 0x8b, 0x00}}, + {3, [3]byte{0xe1, 0xb8, 0x8a}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {3, [3]byte{0xe1, 0xba, 0x80}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xe1, 0xba, 0x82}}, {3, [3]byte{0xe1, 0xb8, 0x8b}}, + {3, [3]byte{0xe1, 0xbb, 0xb2}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {3, [3]byte{0xe1, 0xb8, 0x9e}}, {3, [3]byte{0xe1, 0xb8, 0x9f}}, + {2, [3]byte{0xc4, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0xa1, 0x00}}, + {3, [3]byte{0xe1, 0xb9, 0x80}}, {3, [3]byte{0xe1, 0xb9, 0x81}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0x96}}, + {3, [3]byte{0xe1, 0xba, 0x81}}, {3, [3]byte{0xe1, 0xb9, 0x97}}, + {3, [3]byte{0xe1, 0xba, 0x83}}, {3, [3]byte{0xe1, 0xb9, 0xa0}}, + {3, [3]byte{0xe1, 0xbb, 0xb3}}, {3, [3]byte{0xe1, 0xba, 0x84}}, + {3, [3]byte{0xe1, 0xba, 0x85}}, {3, [3]byte{0xe1, 0xb9, 0xa1}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc5, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xaa}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc5, 0xb5, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {3, [3]byte{0xe1, 0xb9, 0xab}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa70000a7, 0xa90000a9, 0xad0000ad, 0xae0000ae, 0xb60000b6, 0xc00000c0, + 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8, + 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, + 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd80000d8, 0xd90000d9, 0xda0000da, + 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, + 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, + 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, + 0xf50000f5, 0xf60000f6, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, + 0xff0000ff, 0xa400010a, 0xa500010b, 0xb2000120, 0xb3000121, 0xd0000174, 0xf0000175, 0xde000176, + 0xfe000177, 0xaf000178, 0xa1001e02, 0xa2001e03, 0xa6001e0a, 0xab001e0b, 0xb0001e1e, 0xb1001e1f, + 0xb4001e40, 0xb5001e41, 0xb7001e56, 0xb9001e57, 0xbb001e60, 0xbf001e61, 0xd7001e6a, 0xf7001e6b, + 0xa8001e80, 0xb8001e81, 0xaa001e82, 0xba001e83, 0xbd001e84, 0xbe001e85, 0xac001ef2, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, 0xbc001ef3, + }, +} + +// ISO8859_15 is the ISO 8859-15 encoding. +var ISO8859_15 *Charmap = &iso8859_15 + +var iso8859_15 = Charmap{ + name: "ISO 8859-15", + mib: identifier.ISO885915, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa70000a7, 0xa90000a9, 0xaa0000aa, + 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2, + 0xb30000b3, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, + 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, + 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, + 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, + 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, + 0xbc000152, 0xbd000153, 0xa6000160, 0xa8000161, 0xbe000178, 0xb400017d, 0xb800017e, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + }, +} + +// ISO8859_16 is the ISO 8859-16 encoding. +var ISO8859_16 *Charmap = &iso8859_16 + +var iso8859_16 = Charmap{ + name: "ISO 8859-16", + mib: identifier.ISO885916, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc8, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc4, 0x8d, 0x00}}, + {2, [3]byte{0xc8, 0x99, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0xb8, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc5, 0x9a, 0x00}}, + {2, [3]byte{0xc5, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0x98, 0x00}}, + {2, [3]byte{0xc8, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc5, 0x9b, 0x00}}, + {2, [3]byte{0xc5, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0x99, 0x00}}, + {2, [3]byte{0xc8, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xad0000ad, 0xb00000b0, 0xb10000b1, 0xb60000b6, + 0xb70000b7, 0xbb0000bb, 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, + 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe60000e6, 0xe70000e7, 0xe80000e8, + 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf20000f2, + 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xff0000ff, + 0xc3000102, 0xe3000103, 0xa1000104, 0xa2000105, 0xc5000106, 0xe5000107, 0xb200010c, 0xb900010d, + 0xd0000110, 0xf0000111, 0xdd000118, 0xfd000119, 0xa3000141, 0xb3000142, 0xd1000143, 0xf1000144, + 0xd5000150, 0xf5000151, 0xbc000152, 0xbd000153, 0xd700015a, 0xf700015b, 0xa6000160, 0xa8000161, + 0xd8000170, 0xf8000171, 0xbe000178, 0xac000179, 0xae00017a, 0xaf00017b, 0xbf00017c, 0xb400017d, + 0xb800017e, 0xaa000218, 0xba000219, 0xde00021a, 0xfe00021b, 0xb500201d, 0xa500201e, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, 0xa40020ac, + }, +} + +// KOI8R is the KOI8-R encoding. +var KOI8R *Charmap = &koi8R + +var koi8R = Charmap{ + name: "KOI8-R", + mib: identifier.KOI8R, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}}, + {3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x93}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {3, [3]byte{0xe2, 0x95, 0x95}}, {3, [3]byte{0xe2, 0x95, 0x96}}, + {3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}}, + {3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {3, [3]byte{0xe2, 0x95, 0x9c}}, + {3, [3]byte{0xe2, 0x95, 0x9d}}, {3, [3]byte{0xe2, 0x95, 0x9e}}, + {3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}}, + {3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0xa2}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {3, [3]byte{0xe2, 0x95, 0xa4}}, {3, [3]byte{0xe2, 0x95, 0xa5}}, + {3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {3, [3]byte{0xe2, 0x95, 0xab}}, + {3, [3]byte{0xe2, 0x95, 0xac}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}}, + {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, + {2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}}, + {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}}, + {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}}, + {2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, + {2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}}, + {2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, + {2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, + {2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}}, + {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xe1000410, + 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, + 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, + 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, + 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, + 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, + 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, + 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, + 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, + 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, 0x9b002321, 0x80002500, + 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, 0x87002524, 0x8800252c, + 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa4002553, 0xa5002554, 0xa6002555, + 0xa7002556, 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xad00255c, 0xae00255d, + 0xaf00255e, 0xb000255f, 0xb1002560, 0xb2002561, 0xb4002562, 0xb5002563, 0xb6002564, 0xb7002565, + 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0xbd00256b, 0xbe00256c, 0x8b002580, + 0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0, + }, +} + +// KOI8U is the KOI8-U encoding. +var KOI8U *Charmap = &koi8U + +var koi8U = Charmap{ + name: "KOI8-U", + mib: identifier.KOI8U, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x94, 0x80}}, {3, [3]byte{0xe2, 0x94, 0x82}}, + {3, [3]byte{0xe2, 0x94, 0x8c}}, {3, [3]byte{0xe2, 0x94, 0x90}}, + {3, [3]byte{0xe2, 0x94, 0x94}}, {3, [3]byte{0xe2, 0x94, 0x98}}, + {3, [3]byte{0xe2, 0x94, 0x9c}}, {3, [3]byte{0xe2, 0x94, 0xa4}}, + {3, [3]byte{0xe2, 0x94, 0xac}}, {3, [3]byte{0xe2, 0x94, 0xb4}}, + {3, [3]byte{0xe2, 0x94, 0xbc}}, {3, [3]byte{0xe2, 0x96, 0x80}}, + {3, [3]byte{0xe2, 0x96, 0x84}}, {3, [3]byte{0xe2, 0x96, 0x88}}, + {3, [3]byte{0xe2, 0x96, 0x8c}}, {3, [3]byte{0xe2, 0x96, 0x90}}, + {3, [3]byte{0xe2, 0x96, 0x91}}, {3, [3]byte{0xe2, 0x96, 0x92}}, + {3, [3]byte{0xe2, 0x96, 0x93}}, {3, [3]byte{0xe2, 0x8c, 0xa0}}, + {3, [3]byte{0xe2, 0x96, 0xa0}}, {3, [3]byte{0xe2, 0x88, 0x99}}, + {3, [3]byte{0xe2, 0x88, 0x9a}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x8c, 0xa1}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb2, 0x00}}, + {2, [3]byte{0xc2, 0xb7, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x90}}, {3, [3]byte{0xe2, 0x95, 0x91}}, + {3, [3]byte{0xe2, 0x95, 0x92}}, {2, [3]byte{0xd1, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x94}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0x97}}, {3, [3]byte{0xe2, 0x95, 0x98}}, + {3, [3]byte{0xe2, 0x95, 0x99}}, {3, [3]byte{0xe2, 0x95, 0x9a}}, + {3, [3]byte{0xe2, 0x95, 0x9b}}, {2, [3]byte{0xd2, 0x91, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {3, [3]byte{0xe2, 0x95, 0x9e}}, + {3, [3]byte{0xe2, 0x95, 0x9f}}, {3, [3]byte{0xe2, 0x95, 0xa0}}, + {3, [3]byte{0xe2, 0x95, 0xa1}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {3, [3]byte{0xe2, 0x95, 0xa3}}, + {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {3, [3]byte{0xe2, 0x95, 0xa6}}, {3, [3]byte{0xe2, 0x95, 0xa7}}, + {3, [3]byte{0xe2, 0x95, 0xa8}}, {3, [3]byte{0xe2, 0x95, 0xa9}}, + {3, [3]byte{0xe2, 0x95, 0xaa}}, {2, [3]byte{0xd2, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd0, 0xb0, 0x00}}, + {2, [3]byte{0xd0, 0xb1, 0x00}}, {2, [3]byte{0xd1, 0x86, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd1, 0x85, 0x00}}, {2, [3]byte{0xd0, 0xb8, 0x00}}, + {2, [3]byte{0xd0, 0xb9, 0x00}}, {2, [3]byte{0xd0, 0xba, 0x00}}, + {2, [3]byte{0xd0, 0xbb, 0x00}}, {2, [3]byte{0xd0, 0xbc, 0x00}}, + {2, [3]byte{0xd0, 0xbd, 0x00}}, {2, [3]byte{0xd0, 0xbe, 0x00}}, + {2, [3]byte{0xd0, 0xbf, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb2, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd0, 0xb7, 0x00}}, {2, [3]byte{0xd1, 0x88, 0x00}}, + {2, [3]byte{0xd1, 0x8d, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x8a, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x90, 0x00}}, + {2, [3]byte{0xd0, 0x91, 0x00}}, {2, [3]byte{0xd0, 0xa6, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0xa5, 0x00}}, {2, [3]byte{0xd0, 0x98, 0x00}}, + {2, [3]byte{0xd0, 0x99, 0x00}}, {2, [3]byte{0xd0, 0x9a, 0x00}}, + {2, [3]byte{0xd0, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x9c, 0x00}}, + {2, [3]byte{0xd0, 0x9d, 0x00}}, {2, [3]byte{0xd0, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0x9f, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x92, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0x97, 0x00}}, {2, [3]byte{0xd0, 0xa8, 0x00}}, + {2, [3]byte{0xd0, 0xad, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xa7, 0x00}}, {2, [3]byte{0xd0, 0xaa, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x9a0000a0, 0xbf0000a9, 0x9c0000b0, 0x9d0000b2, 0x9e0000b7, 0x9f0000f7, 0xb3000401, 0xb4000404, + 0xb6000406, 0xb7000407, 0xbe00040e, 0xe1000410, 0xe2000411, 0xf7000412, 0xe7000413, 0xe4000414, + 0xe5000415, 0xf6000416, 0xfa000417, 0xe9000418, 0xea000419, 0xeb00041a, 0xec00041b, 0xed00041c, + 0xee00041d, 0xef00041e, 0xf000041f, 0xf2000420, 0xf3000421, 0xf4000422, 0xf5000423, 0xe6000424, + 0xe8000425, 0xe3000426, 0xfe000427, 0xfb000428, 0xfd000429, 0xff00042a, 0xf900042b, 0xf800042c, + 0xfc00042d, 0xe000042e, 0xf100042f, 0xc1000430, 0xc2000431, 0xd7000432, 0xc7000433, 0xc4000434, + 0xc5000435, 0xd6000436, 0xda000437, 0xc9000438, 0xca000439, 0xcb00043a, 0xcc00043b, 0xcd00043c, + 0xce00043d, 0xcf00043e, 0xd000043f, 0xd2000440, 0xd3000441, 0xd4000442, 0xd5000443, 0xc6000444, + 0xc8000445, 0xc3000446, 0xde000447, 0xdb000448, 0xdd000449, 0xdf00044a, 0xd900044b, 0xd800044c, + 0xdc00044d, 0xc000044e, 0xd100044f, 0xa3000451, 0xa4000454, 0xa6000456, 0xa7000457, 0xae00045e, + 0xbd000490, 0xad000491, 0x95002219, 0x9600221a, 0x97002248, 0x98002264, 0x99002265, 0x93002320, + 0x9b002321, 0x80002500, 0x81002502, 0x8200250c, 0x83002510, 0x84002514, 0x85002518, 0x8600251c, + 0x87002524, 0x8800252c, 0x89002534, 0x8a00253c, 0xa0002550, 0xa1002551, 0xa2002552, 0xa5002554, + 0xa8002557, 0xa9002558, 0xaa002559, 0xab00255a, 0xac00255b, 0xaf00255e, 0xb000255f, 0xb1002560, + 0xb2002561, 0xb5002563, 0xb8002566, 0xb9002567, 0xba002568, 0xbb002569, 0xbc00256a, 0x8b002580, + 0x8c002584, 0x8d002588, 0x8e00258c, 0x8f002590, 0x90002591, 0x91002592, 0x92002593, 0x940025a0, + }, +} + +// Macintosh is the Macintosh encoding. +var Macintosh *Charmap = &macintosh + +var macintosh = Charmap{ + name: "Macintosh", + mib: identifier.Macintosh, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x91, 0x00}}, {2, [3]byte{0xc3, 0x96, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa2, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa5, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa9, 0x00}}, {2, [3]byte{0xc3, 0xa8, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xac, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb1, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xbb, 0x00}}, {2, [3]byte{0xc3, 0xbc, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xc2, 0xb4, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x98, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x82}}, {3, [3]byte{0xe2, 0x88, 0x91}}, + {3, [3]byte{0xe2, 0x88, 0x8f}}, {2, [3]byte{0xcf, 0x80, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0xab}}, {2, [3]byte{0xc2, 0xaa, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xbf, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0x80, 0x00}}, + {2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xc5, 0x93, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x97, 0x8a}}, + {2, [3]byte{0xc3, 0xbf, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {3, [3]byte{0xe2, 0x81, 0x84}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + {3, [3]byte{0xe2, 0x80, 0xb9}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xac, 0x81}}, {3, [3]byte{0xef, 0xac, 0x82}}, + {3, [3]byte{0xe2, 0x80, 0xa1}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {3, [3]byte{0xe2, 0x80, 0xb0}}, {2, [3]byte{0xc3, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x8b, 0x00}}, {2, [3]byte{0xc3, 0x88, 0x00}}, + {2, [3]byte{0xc3, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0x8f, 0x00}}, {2, [3]byte{0xc3, 0x8c, 0x00}}, + {2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}}, + {3, [3]byte{0xef, 0xa3, 0xbf}}, {2, [3]byte{0xc3, 0x92, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x99, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {2, [3]byte{0xcb, 0x9c, 0x00}}, + {2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xcb, 0x98, 0x00}}, + {2, [3]byte{0xcb, 0x99, 0x00}}, {2, [3]byte{0xcb, 0x9a, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xca0000a0, 0xc10000a1, 0xa20000a2, 0xa30000a3, 0xb40000a5, 0xa40000a7, 0xac0000a8, 0xa90000a9, + 0xbb0000aa, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xf80000af, 0xa10000b0, 0xb10000b1, 0xab0000b4, + 0xb50000b5, 0xa60000b6, 0xe10000b7, 0xfc0000b8, 0xbc0000ba, 0xc80000bb, 0xc00000bf, 0xcb0000c0, + 0xe70000c1, 0xe50000c2, 0xcc0000c3, 0x800000c4, 0x810000c5, 0xae0000c6, 0x820000c7, 0xe90000c8, + 0x830000c9, 0xe60000ca, 0xe80000cb, 0xed0000cc, 0xea0000cd, 0xeb0000ce, 0xec0000cf, 0x840000d1, + 0xf10000d2, 0xee0000d3, 0xef0000d4, 0xcd0000d5, 0x850000d6, 0xaf0000d8, 0xf40000d9, 0xf20000da, + 0xf30000db, 0x860000dc, 0xa70000df, 0x880000e0, 0x870000e1, 0x890000e2, 0x8b0000e3, 0x8a0000e4, + 0x8c0000e5, 0xbe0000e6, 0x8d0000e7, 0x8f0000e8, 0x8e0000e9, 0x900000ea, 0x910000eb, 0x930000ec, + 0x920000ed, 0x940000ee, 0x950000ef, 0x960000f1, 0x980000f2, 0x970000f3, 0x990000f4, 0x9b0000f5, + 0x9a0000f6, 0xd60000f7, 0xbf0000f8, 0x9d0000f9, 0x9c0000fa, 0x9e0000fb, 0x9f0000fc, 0xd80000ff, + 0xf5000131, 0xce000152, 0xcf000153, 0xd9000178, 0xc4000192, 0xf60002c6, 0xff0002c7, 0xf90002d8, + 0xfa0002d9, 0xfb0002da, 0xfe0002db, 0xf70002dc, 0xfd0002dd, 0xbd0003a9, 0xb90003c0, 0xd0002013, + 0xd1002014, 0xd4002018, 0xd5002019, 0xe200201a, 0xd200201c, 0xd300201d, 0xe300201e, 0xa0002020, + 0xe0002021, 0xa5002022, 0xc9002026, 0xe4002030, 0xdc002039, 0xdd00203a, 0xda002044, 0xdb0020ac, + 0xaa002122, 0xb6002202, 0xc6002206, 0xb800220f, 0xb7002211, 0xc300221a, 0xb000221e, 0xba00222b, + 0xc5002248, 0xad002260, 0xb2002264, 0xb3002265, 0xd70025ca, 0xf000f8ff, 0xde00fb01, 0xdf00fb02, + }, +} + +// MacintoshCyrillic is the Macintosh Cyrillic encoding. +var MacintoshCyrillic *Charmap = &macintoshCyrillic + +var macintoshCyrillic = Charmap{ + name: "Macintosh Cyrillic", + mib: identifier.MacintoshCyrillic, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {2, [3]byte{0xc2, 0xb0, 0x00}}, + {2, [3]byte{0xd2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0x86, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0xa2}}, {2, [3]byte{0xd0, 0x82, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0xa0}}, + {2, [3]byte{0xd0, 0x83, 0x00}}, {2, [3]byte{0xd1, 0x93, 0x00}}, + {3, [3]byte{0xe2, 0x88, 0x9e}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {3, [3]byte{0xe2, 0x89, 0xa4}}, {3, [3]byte{0xe2, 0x89, 0xa5}}, + {2, [3]byte{0xd1, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x94, 0x00}}, + {2, [3]byte{0xd0, 0x87, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x89, 0x00}}, {2, [3]byte{0xd1, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x9a, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {3, [3]byte{0xe2, 0x88, 0x9a}}, + {2, [3]byte{0xc6, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x89, 0x88}}, + {3, [3]byte{0xe2, 0x88, 0x86}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xbb, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, + {2, [3]byte{0xd1, 0x9c, 0x00}}, {2, [3]byte{0xd1, 0x95, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xe2, 0x80, 0x9c}}, {3, [3]byte{0xe2, 0x80, 0x9d}}, + {3, [3]byte{0xe2, 0x80, 0x98}}, {3, [3]byte{0xe2, 0x80, 0x99}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x9e}}, + {2, [3]byte{0xd0, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x9e, 0x00}}, + {2, [3]byte{0xd0, 0x8f, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, + {3, [3]byte{0xe2, 0x84, 0x96}}, {2, [3]byte{0xd0, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x91, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xca0000a0, 0xa30000a3, 0xa40000a7, 0xa90000a9, 0xc70000ab, 0xc20000ac, 0xa80000ae, 0xa10000b0, + 0xb10000b1, 0xb50000b5, 0xa60000b6, 0xc80000bb, 0xd60000f7, 0xc4000192, 0xdd000401, 0xab000402, + 0xae000403, 0xb8000404, 0xc1000405, 0xa7000406, 0xba000407, 0xb7000408, 0xbc000409, 0xbe00040a, + 0xcb00040b, 0xcd00040c, 0xd800040e, 0xda00040f, 0x80000410, 0x81000411, 0x82000412, 0x83000413, + 0x84000414, 0x85000415, 0x86000416, 0x87000417, 0x88000418, 0x89000419, 0x8a00041a, 0x8b00041b, + 0x8c00041c, 0x8d00041d, 0x8e00041e, 0x8f00041f, 0x90000420, 0x91000421, 0x92000422, 0x93000423, + 0x94000424, 0x95000425, 0x96000426, 0x97000427, 0x98000428, 0x99000429, 0x9a00042a, 0x9b00042b, + 0x9c00042c, 0x9d00042d, 0x9e00042e, 0x9f00042f, 0xe0000430, 0xe1000431, 0xe2000432, 0xe3000433, + 0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a, 0xeb00043b, + 0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442, 0xf3000443, + 0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a, 0xfb00044b, + 0xfc00044c, 0xfd00044d, 0xfe00044e, 0xdf00044f, 0xde000451, 0xac000452, 0xaf000453, 0xb9000454, + 0xcf000455, 0xb4000456, 0xbb000457, 0xc0000458, 0xbd000459, 0xbf00045a, 0xcc00045b, 0xce00045c, + 0xd900045e, 0xdb00045f, 0xa2000490, 0xb6000491, 0xd0002013, 0xd1002014, 0xd4002018, 0xd5002019, + 0xd200201c, 0xd300201d, 0xd700201e, 0xa0002020, 0xa5002022, 0xc9002026, 0xff0020ac, 0xdc002116, + 0xaa002122, 0xc6002206, 0xc300221a, 0xb000221e, 0xc5002248, 0xad002260, 0xb2002264, 0xb3002265, + }, +} + +// Windows874 is the Windows 874 encoding. +var Windows874 *Charmap = &windows874 + +var windows874 = Charmap{ + name: "Windows 874", + mib: identifier.Windows874, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xe0, 0xb8, 0x81}}, + {3, [3]byte{0xe0, 0xb8, 0x82}}, {3, [3]byte{0xe0, 0xb8, 0x83}}, + {3, [3]byte{0xe0, 0xb8, 0x84}}, {3, [3]byte{0xe0, 0xb8, 0x85}}, + {3, [3]byte{0xe0, 0xb8, 0x86}}, {3, [3]byte{0xe0, 0xb8, 0x87}}, + {3, [3]byte{0xe0, 0xb8, 0x88}}, {3, [3]byte{0xe0, 0xb8, 0x89}}, + {3, [3]byte{0xe0, 0xb8, 0x8a}}, {3, [3]byte{0xe0, 0xb8, 0x8b}}, + {3, [3]byte{0xe0, 0xb8, 0x8c}}, {3, [3]byte{0xe0, 0xb8, 0x8d}}, + {3, [3]byte{0xe0, 0xb8, 0x8e}}, {3, [3]byte{0xe0, 0xb8, 0x8f}}, + {3, [3]byte{0xe0, 0xb8, 0x90}}, {3, [3]byte{0xe0, 0xb8, 0x91}}, + {3, [3]byte{0xe0, 0xb8, 0x92}}, {3, [3]byte{0xe0, 0xb8, 0x93}}, + {3, [3]byte{0xe0, 0xb8, 0x94}}, {3, [3]byte{0xe0, 0xb8, 0x95}}, + {3, [3]byte{0xe0, 0xb8, 0x96}}, {3, [3]byte{0xe0, 0xb8, 0x97}}, + {3, [3]byte{0xe0, 0xb8, 0x98}}, {3, [3]byte{0xe0, 0xb8, 0x99}}, + {3, [3]byte{0xe0, 0xb8, 0x9a}}, {3, [3]byte{0xe0, 0xb8, 0x9b}}, + {3, [3]byte{0xe0, 0xb8, 0x9c}}, {3, [3]byte{0xe0, 0xb8, 0x9d}}, + {3, [3]byte{0xe0, 0xb8, 0x9e}}, {3, [3]byte{0xe0, 0xb8, 0x9f}}, + {3, [3]byte{0xe0, 0xb8, 0xa0}}, {3, [3]byte{0xe0, 0xb8, 0xa1}}, + {3, [3]byte{0xe0, 0xb8, 0xa2}}, {3, [3]byte{0xe0, 0xb8, 0xa3}}, + {3, [3]byte{0xe0, 0xb8, 0xa4}}, {3, [3]byte{0xe0, 0xb8, 0xa5}}, + {3, [3]byte{0xe0, 0xb8, 0xa6}}, {3, [3]byte{0xe0, 0xb8, 0xa7}}, + {3, [3]byte{0xe0, 0xb8, 0xa8}}, {3, [3]byte{0xe0, 0xb8, 0xa9}}, + {3, [3]byte{0xe0, 0xb8, 0xaa}}, {3, [3]byte{0xe0, 0xb8, 0xab}}, + {3, [3]byte{0xe0, 0xb8, 0xac}}, {3, [3]byte{0xe0, 0xb8, 0xad}}, + {3, [3]byte{0xe0, 0xb8, 0xae}}, {3, [3]byte{0xe0, 0xb8, 0xaf}}, + {3, [3]byte{0xe0, 0xb8, 0xb0}}, {3, [3]byte{0xe0, 0xb8, 0xb1}}, + {3, [3]byte{0xe0, 0xb8, 0xb2}}, {3, [3]byte{0xe0, 0xb8, 0xb3}}, + {3, [3]byte{0xe0, 0xb8, 0xb4}}, {3, [3]byte{0xe0, 0xb8, 0xb5}}, + {3, [3]byte{0xe0, 0xb8, 0xb6}}, {3, [3]byte{0xe0, 0xb8, 0xb7}}, + {3, [3]byte{0xe0, 0xb8, 0xb8}}, {3, [3]byte{0xe0, 0xb8, 0xb9}}, + {3, [3]byte{0xe0, 0xb8, 0xba}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe0, 0xb8, 0xbf}}, + {3, [3]byte{0xe0, 0xb9, 0x80}}, {3, [3]byte{0xe0, 0xb9, 0x81}}, + {3, [3]byte{0xe0, 0xb9, 0x82}}, {3, [3]byte{0xe0, 0xb9, 0x83}}, + {3, [3]byte{0xe0, 0xb9, 0x84}}, {3, [3]byte{0xe0, 0xb9, 0x85}}, + {3, [3]byte{0xe0, 0xb9, 0x86}}, {3, [3]byte{0xe0, 0xb9, 0x87}}, + {3, [3]byte{0xe0, 0xb9, 0x88}}, {3, [3]byte{0xe0, 0xb9, 0x89}}, + {3, [3]byte{0xe0, 0xb9, 0x8a}}, {3, [3]byte{0xe0, 0xb9, 0x8b}}, + {3, [3]byte{0xe0, 0xb9, 0x8c}}, {3, [3]byte{0xe0, 0xb9, 0x8d}}, + {3, [3]byte{0xe0, 0xb9, 0x8e}}, {3, [3]byte{0xe0, 0xb9, 0x8f}}, + {3, [3]byte{0xe0, 0xb9, 0x90}}, {3, [3]byte{0xe0, 0xb9, 0x91}}, + {3, [3]byte{0xe0, 0xb9, 0x92}}, {3, [3]byte{0xe0, 0xb9, 0x93}}, + {3, [3]byte{0xe0, 0xb9, 0x94}}, {3, [3]byte{0xe0, 0xb9, 0x95}}, + {3, [3]byte{0xe0, 0xb9, 0x96}}, {3, [3]byte{0xe0, 0xb9, 0x97}}, + {3, [3]byte{0xe0, 0xb9, 0x98}}, {3, [3]byte{0xe0, 0xb9, 0x99}}, + {3, [3]byte{0xe0, 0xb9, 0x9a}}, {3, [3]byte{0xe0, 0xb9, 0x9b}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa1000e01, 0xa2000e02, 0xa3000e03, 0xa4000e04, 0xa5000e05, 0xa6000e06, 0xa7000e07, + 0xa8000e08, 0xa9000e09, 0xaa000e0a, 0xab000e0b, 0xac000e0c, 0xad000e0d, 0xae000e0e, 0xaf000e0f, + 0xb0000e10, 0xb1000e11, 0xb2000e12, 0xb3000e13, 0xb4000e14, 0xb5000e15, 0xb6000e16, 0xb7000e17, + 0xb8000e18, 0xb9000e19, 0xba000e1a, 0xbb000e1b, 0xbc000e1c, 0xbd000e1d, 0xbe000e1e, 0xbf000e1f, + 0xc0000e20, 0xc1000e21, 0xc2000e22, 0xc3000e23, 0xc4000e24, 0xc5000e25, 0xc6000e26, 0xc7000e27, + 0xc8000e28, 0xc9000e29, 0xca000e2a, 0xcb000e2b, 0xcc000e2c, 0xcd000e2d, 0xce000e2e, 0xcf000e2f, + 0xd0000e30, 0xd1000e31, 0xd2000e32, 0xd3000e33, 0xd4000e34, 0xd5000e35, 0xd6000e36, 0xd7000e37, + 0xd8000e38, 0xd9000e39, 0xda000e3a, 0xdf000e3f, 0xe0000e40, 0xe1000e41, 0xe2000e42, 0xe3000e43, + 0xe4000e44, 0xe5000e45, 0xe6000e46, 0xe7000e47, 0xe8000e48, 0xe9000e49, 0xea000e4a, 0xeb000e4b, + 0xec000e4c, 0xed000e4d, 0xee000e4e, 0xef000e4f, 0xf0000e50, 0xf1000e51, 0xf2000e52, 0xf3000e53, + 0xf4000e54, 0xf5000e55, 0xf6000e56, 0xf7000e57, 0xf8000e58, 0xf9000e59, 0xfa000e5a, 0xfb000e5b, + 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x9300201c, 0x9400201d, 0x95002022, 0x85002026, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, 0x800020ac, + }, +} + +// Windows1250 is the Windows 1250 encoding. +var Windows1250 *Charmap = &windows1250 + +var windows1250 = Charmap{ + name: "Windows 1250", + mib: identifier.Windows1250, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xa4, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc5, 0xb9, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xa5, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xcb, 0x87, 0x00}}, + {2, [3]byte{0xcb, 0x98, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0x84, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc4, 0x85, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc4, 0xbd, 0x00}}, {2, [3]byte{0xcb, 0x9d, 0x00}}, + {2, [3]byte{0xc4, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xb9, 0x00}}, + {2, [3]byte{0xc4, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc4, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc4, 0x8e, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc5, 0x90, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0x98, 0x00}}, {2, [3]byte{0xc5, 0xae, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xb0, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc5, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc5, 0x95, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc4, 0xba, 0x00}}, + {2, [3]byte{0xc4, 0x87, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc4, 0x9b, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc4, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc5, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0x99, 0x00}}, {2, [3]byte{0xc5, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc5, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc5, 0xa3, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, 0xab0000ab, 0xac0000ac, + 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xbb0000bb, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc70000c7, 0xc90000c9, 0xcb0000cb, + 0xcd0000cd, 0xce0000ce, 0xd30000d3, 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xda0000da, 0xdc0000dc, + 0xdd0000dd, 0xdf0000df, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe70000e7, 0xe90000e9, 0xeb0000eb, + 0xed0000ed, 0xee0000ee, 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xfa0000fa, 0xfc0000fc, + 0xfd0000fd, 0xc3000102, 0xe3000103, 0xa5000104, 0xb9000105, 0xc6000106, 0xe6000107, 0xc800010c, + 0xe800010d, 0xcf00010e, 0xef00010f, 0xd0000110, 0xf0000111, 0xca000118, 0xea000119, 0xcc00011a, + 0xec00011b, 0xc5000139, 0xe500013a, 0xbc00013d, 0xbe00013e, 0xa3000141, 0xb3000142, 0xd1000143, + 0xf1000144, 0xd2000147, 0xf2000148, 0xd5000150, 0xf5000151, 0xc0000154, 0xe0000155, 0xd8000158, + 0xf8000159, 0x8c00015a, 0x9c00015b, 0xaa00015e, 0xba00015f, 0x8a000160, 0x9a000161, 0xde000162, + 0xfe000163, 0x8d000164, 0x9d000165, 0xd900016e, 0xf900016f, 0xdb000170, 0xfb000171, 0x8f000179, + 0x9f00017a, 0xaf00017b, 0xbf00017c, 0x8e00017d, 0x9e00017e, 0xa10002c7, 0xa20002d8, 0xff0002d9, + 0xb20002db, 0xbd0002dd, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, + 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, + 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1251 is the Windows 1251 encoding. +var Windows1251 *Charmap = &windows1251 + +var windows1251 = Charmap{ + name: "Windows 1251", + mib: identifier.Windows1251, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {2, [3]byte{0xd0, 0x82, 0x00}}, {2, [3]byte{0xd0, 0x83, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xd1, 0x93, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xd0, 0x89, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xd0, 0x8a, 0x00}}, {2, [3]byte{0xd0, 0x8c, 0x00}}, + {2, [3]byte{0xd0, 0x8b, 0x00}}, {2, [3]byte{0xd0, 0x8f, 0x00}}, + {2, [3]byte{0xd1, 0x92, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xd1, 0x99, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xd1, 0x9a, 0x00}}, {2, [3]byte{0xd1, 0x9c, 0x00}}, + {2, [3]byte{0xd1, 0x9b, 0x00}}, {2, [3]byte{0xd1, 0x9f, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0x8e, 0x00}}, + {2, [3]byte{0xd1, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x88, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xd2, 0x90, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0x81, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xd0, 0x87, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x96, 0x00}}, + {2, [3]byte{0xd2, 0x91, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xd1, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x84, 0x96}}, + {2, [3]byte{0xd1, 0x94, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xd1, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x95, 0x00}}, {2, [3]byte{0xd1, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x90, 0x00}}, {2, [3]byte{0xd0, 0x91, 0x00}}, + {2, [3]byte{0xd0, 0x92, 0x00}}, {2, [3]byte{0xd0, 0x93, 0x00}}, + {2, [3]byte{0xd0, 0x94, 0x00}}, {2, [3]byte{0xd0, 0x95, 0x00}}, + {2, [3]byte{0xd0, 0x96, 0x00}}, {2, [3]byte{0xd0, 0x97, 0x00}}, + {2, [3]byte{0xd0, 0x98, 0x00}}, {2, [3]byte{0xd0, 0x99, 0x00}}, + {2, [3]byte{0xd0, 0x9a, 0x00}}, {2, [3]byte{0xd0, 0x9b, 0x00}}, + {2, [3]byte{0xd0, 0x9c, 0x00}}, {2, [3]byte{0xd0, 0x9d, 0x00}}, + {2, [3]byte{0xd0, 0x9e, 0x00}}, {2, [3]byte{0xd0, 0x9f, 0x00}}, + {2, [3]byte{0xd0, 0xa0, 0x00}}, {2, [3]byte{0xd0, 0xa1, 0x00}}, + {2, [3]byte{0xd0, 0xa2, 0x00}}, {2, [3]byte{0xd0, 0xa3, 0x00}}, + {2, [3]byte{0xd0, 0xa4, 0x00}}, {2, [3]byte{0xd0, 0xa5, 0x00}}, + {2, [3]byte{0xd0, 0xa6, 0x00}}, {2, [3]byte{0xd0, 0xa7, 0x00}}, + {2, [3]byte{0xd0, 0xa8, 0x00}}, {2, [3]byte{0xd0, 0xa9, 0x00}}, + {2, [3]byte{0xd0, 0xaa, 0x00}}, {2, [3]byte{0xd0, 0xab, 0x00}}, + {2, [3]byte{0xd0, 0xac, 0x00}}, {2, [3]byte{0xd0, 0xad, 0x00}}, + {2, [3]byte{0xd0, 0xae, 0x00}}, {2, [3]byte{0xd0, 0xaf, 0x00}}, + {2, [3]byte{0xd0, 0xb0, 0x00}}, {2, [3]byte{0xd0, 0xb1, 0x00}}, + {2, [3]byte{0xd0, 0xb2, 0x00}}, {2, [3]byte{0xd0, 0xb3, 0x00}}, + {2, [3]byte{0xd0, 0xb4, 0x00}}, {2, [3]byte{0xd0, 0xb5, 0x00}}, + {2, [3]byte{0xd0, 0xb6, 0x00}}, {2, [3]byte{0xd0, 0xb7, 0x00}}, + {2, [3]byte{0xd0, 0xb8, 0x00}}, {2, [3]byte{0xd0, 0xb9, 0x00}}, + {2, [3]byte{0xd0, 0xba, 0x00}}, {2, [3]byte{0xd0, 0xbb, 0x00}}, + {2, [3]byte{0xd0, 0xbc, 0x00}}, {2, [3]byte{0xd0, 0xbd, 0x00}}, + {2, [3]byte{0xd0, 0xbe, 0x00}}, {2, [3]byte{0xd0, 0xbf, 0x00}}, + {2, [3]byte{0xd1, 0x80, 0x00}}, {2, [3]byte{0xd1, 0x81, 0x00}}, + {2, [3]byte{0xd1, 0x82, 0x00}}, {2, [3]byte{0xd1, 0x83, 0x00}}, + {2, [3]byte{0xd1, 0x84, 0x00}}, {2, [3]byte{0xd1, 0x85, 0x00}}, + {2, [3]byte{0xd1, 0x86, 0x00}}, {2, [3]byte{0xd1, 0x87, 0x00}}, + {2, [3]byte{0xd1, 0x88, 0x00}}, {2, [3]byte{0xd1, 0x89, 0x00}}, + {2, [3]byte{0xd1, 0x8a, 0x00}}, {2, [3]byte{0xd1, 0x8b, 0x00}}, + {2, [3]byte{0xd1, 0x8c, 0x00}}, {2, [3]byte{0xd1, 0x8d, 0x00}}, + {2, [3]byte{0xd1, 0x8e, 0x00}}, {2, [3]byte{0xd1, 0x8f, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, + 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xa8000401, + 0x80000402, 0x81000403, 0xaa000404, 0xbd000405, 0xb2000406, 0xaf000407, 0xa3000408, 0x8a000409, + 0x8c00040a, 0x8e00040b, 0x8d00040c, 0xa100040e, 0x8f00040f, 0xc0000410, 0xc1000411, 0xc2000412, + 0xc3000413, 0xc4000414, 0xc5000415, 0xc6000416, 0xc7000417, 0xc8000418, 0xc9000419, 0xca00041a, + 0xcb00041b, 0xcc00041c, 0xcd00041d, 0xce00041e, 0xcf00041f, 0xd0000420, 0xd1000421, 0xd2000422, + 0xd3000423, 0xd4000424, 0xd5000425, 0xd6000426, 0xd7000427, 0xd8000428, 0xd9000429, 0xda00042a, + 0xdb00042b, 0xdc00042c, 0xdd00042d, 0xde00042e, 0xdf00042f, 0xe0000430, 0xe1000431, 0xe2000432, + 0xe3000433, 0xe4000434, 0xe5000435, 0xe6000436, 0xe7000437, 0xe8000438, 0xe9000439, 0xea00043a, + 0xeb00043b, 0xec00043c, 0xed00043d, 0xee00043e, 0xef00043f, 0xf0000440, 0xf1000441, 0xf2000442, + 0xf3000443, 0xf4000444, 0xf5000445, 0xf6000446, 0xf7000447, 0xf8000448, 0xf9000449, 0xfa00044a, + 0xfb00044b, 0xfc00044c, 0xfd00044d, 0xfe00044e, 0xff00044f, 0xb8000451, 0x90000452, 0x83000453, + 0xba000454, 0xbe000455, 0xb3000456, 0xbf000457, 0xbc000458, 0x9a000459, 0x9c00045a, 0x9e00045b, + 0x9d00045c, 0xa200045e, 0x9f00045f, 0xa5000490, 0xb4000491, 0x96002013, 0x97002014, 0x91002018, + 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, + 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x880020ac, 0xb9002116, 0x99002122, 0x99002122, + }, +} + +// Windows1252 is the Windows 1252 encoding. +var Windows1252 *Charmap = &windows1252 + +var windows1252 = Charmap{ + name: "Windows 1252", + mib: identifier.Windows1252, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}}, + {2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}}, + {2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd00000d0, 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, + 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdd0000dd, 0xde0000de, 0xdf0000df, + 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, + 0xf00000f0, 0xf10000f1, 0xf20000f2, 0xf30000f3, 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, + 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, 0xfc0000fc, 0xfd0000fd, 0xfe0000fe, 0xff0000ff, + 0x8c000152, 0x9c000153, 0x8a000160, 0x9a000161, 0x9f000178, 0x8e00017d, 0x9e00017e, 0x83000192, + 0x880002c6, 0x980002dc, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, + 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, + 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1253 is the Windows 1253 encoding. +var Windows1253 *Charmap = &windows1253 + +var windows1253 = Charmap{ + name: "Windows 1253", + mib: identifier.Windows1253, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xce, 0x85, 0x00}}, + {2, [3]byte{0xce, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x95}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0x84, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0x88, 0x00}}, {2, [3]byte{0xce, 0x89, 0x00}}, + {2, [3]byte{0xce, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0x8e, 0x00}}, {2, [3]byte{0xce, 0x8f, 0x00}}, + {2, [3]byte{0xce, 0x90, 0x00}}, {2, [3]byte{0xce, 0x91, 0x00}}, + {2, [3]byte{0xce, 0x92, 0x00}}, {2, [3]byte{0xce, 0x93, 0x00}}, + {2, [3]byte{0xce, 0x94, 0x00}}, {2, [3]byte{0xce, 0x95, 0x00}}, + {2, [3]byte{0xce, 0x96, 0x00}}, {2, [3]byte{0xce, 0x97, 0x00}}, + {2, [3]byte{0xce, 0x98, 0x00}}, {2, [3]byte{0xce, 0x99, 0x00}}, + {2, [3]byte{0xce, 0x9a, 0x00}}, {2, [3]byte{0xce, 0x9b, 0x00}}, + {2, [3]byte{0xce, 0x9c, 0x00}}, {2, [3]byte{0xce, 0x9d, 0x00}}, + {2, [3]byte{0xce, 0x9e, 0x00}}, {2, [3]byte{0xce, 0x9f, 0x00}}, + {2, [3]byte{0xce, 0xa0, 0x00}}, {2, [3]byte{0xce, 0xa1, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xce, 0xa3, 0x00}}, + {2, [3]byte{0xce, 0xa4, 0x00}}, {2, [3]byte{0xce, 0xa5, 0x00}}, + {2, [3]byte{0xce, 0xa6, 0x00}}, {2, [3]byte{0xce, 0xa7, 0x00}}, + {2, [3]byte{0xce, 0xa8, 0x00}}, {2, [3]byte{0xce, 0xa9, 0x00}}, + {2, [3]byte{0xce, 0xaa, 0x00}}, {2, [3]byte{0xce, 0xab, 0x00}}, + {2, [3]byte{0xce, 0xac, 0x00}}, {2, [3]byte{0xce, 0xad, 0x00}}, + {2, [3]byte{0xce, 0xae, 0x00}}, {2, [3]byte{0xce, 0xaf, 0x00}}, + {2, [3]byte{0xce, 0xb0, 0x00}}, {2, [3]byte{0xce, 0xb1, 0x00}}, + {2, [3]byte{0xce, 0xb2, 0x00}}, {2, [3]byte{0xce, 0xb3, 0x00}}, + {2, [3]byte{0xce, 0xb4, 0x00}}, {2, [3]byte{0xce, 0xb5, 0x00}}, + {2, [3]byte{0xce, 0xb6, 0x00}}, {2, [3]byte{0xce, 0xb7, 0x00}}, + {2, [3]byte{0xce, 0xb8, 0x00}}, {2, [3]byte{0xce, 0xb9, 0x00}}, + {2, [3]byte{0xce, 0xba, 0x00}}, {2, [3]byte{0xce, 0xbb, 0x00}}, + {2, [3]byte{0xce, 0xbc, 0x00}}, {2, [3]byte{0xce, 0xbd, 0x00}}, + {2, [3]byte{0xce, 0xbe, 0x00}}, {2, [3]byte{0xce, 0xbf, 0x00}}, + {2, [3]byte{0xcf, 0x80, 0x00}}, {2, [3]byte{0xcf, 0x81, 0x00}}, + {2, [3]byte{0xcf, 0x82, 0x00}}, {2, [3]byte{0xcf, 0x83, 0x00}}, + {2, [3]byte{0xcf, 0x84, 0x00}}, {2, [3]byte{0xcf, 0x85, 0x00}}, + {2, [3]byte{0xcf, 0x86, 0x00}}, {2, [3]byte{0xcf, 0x87, 0x00}}, + {2, [3]byte{0xcf, 0x88, 0x00}}, {2, [3]byte{0xcf, 0x89, 0x00}}, + {2, [3]byte{0xcf, 0x8a, 0x00}}, {2, [3]byte{0xcf, 0x8b, 0x00}}, + {2, [3]byte{0xcf, 0x8c, 0x00}}, {2, [3]byte{0xcf, 0x8d, 0x00}}, + {2, [3]byte{0xcf, 0x8e, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, 0xa90000a9, + 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, + 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xbb0000bb, 0xbd0000bd, 0x83000192, 0xb4000384, 0xa1000385, + 0xa2000386, 0xb8000388, 0xb9000389, 0xba00038a, 0xbc00038c, 0xbe00038e, 0xbf00038f, 0xc0000390, + 0xc1000391, 0xc2000392, 0xc3000393, 0xc4000394, 0xc5000395, 0xc6000396, 0xc7000397, 0xc8000398, + 0xc9000399, 0xca00039a, 0xcb00039b, 0xcc00039c, 0xcd00039d, 0xce00039e, 0xcf00039f, 0xd00003a0, + 0xd10003a1, 0xd30003a3, 0xd40003a4, 0xd50003a5, 0xd60003a6, 0xd70003a7, 0xd80003a8, 0xd90003a9, + 0xda0003aa, 0xdb0003ab, 0xdc0003ac, 0xdd0003ad, 0xde0003ae, 0xdf0003af, 0xe00003b0, 0xe10003b1, + 0xe20003b2, 0xe30003b3, 0xe40003b4, 0xe50003b5, 0xe60003b6, 0xe70003b7, 0xe80003b8, 0xe90003b9, + 0xea0003ba, 0xeb0003bb, 0xec0003bc, 0xed0003bd, 0xee0003be, 0xef0003bf, 0xf00003c0, 0xf10003c1, + 0xf20003c2, 0xf30003c3, 0xf40003c4, 0xf50003c5, 0xf60003c6, 0xf70003c7, 0xf80003c8, 0xf90003c9, + 0xfa0003ca, 0xfb0003cb, 0xfc0003cc, 0xfd0003cd, 0xfe0003ce, 0x96002013, 0x97002014, 0xaf002015, + 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, + 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1254 is the Windows 1254 encoding. +var Windows1254 *Charmap = &windows1254 + +var windows1254 = Charmap{ + name: "Windows 1254", + mib: identifier.Windows1254, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}}, + {2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}}, + {2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, + 0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, + 0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8, + 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, + 0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea, + 0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3, + 0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, + 0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0x8c000152, 0x9c000153, + 0xde00015e, 0xfe00015f, 0x8a000160, 0x9a000161, 0x9f000178, 0x83000192, 0x880002c6, 0x980002dc, + 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, + 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1255 is the Windows 1255 encoding. +var Windows1255 *Charmap = &windows1255 + +var windows1255 = Charmap{ + name: "Windows 1255", + mib: identifier.Windows1255, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xaa}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xb7, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xd6, 0xb0, 0x00}}, {2, [3]byte{0xd6, 0xb1, 0x00}}, + {2, [3]byte{0xd6, 0xb2, 0x00}}, {2, [3]byte{0xd6, 0xb3, 0x00}}, + {2, [3]byte{0xd6, 0xb4, 0x00}}, {2, [3]byte{0xd6, 0xb5, 0x00}}, + {2, [3]byte{0xd6, 0xb6, 0x00}}, {2, [3]byte{0xd6, 0xb7, 0x00}}, + {2, [3]byte{0xd6, 0xb8, 0x00}}, {2, [3]byte{0xd6, 0xb9, 0x00}}, + {2, [3]byte{0xd6, 0xba, 0x00}}, {2, [3]byte{0xd6, 0xbb, 0x00}}, + {2, [3]byte{0xd6, 0xbc, 0x00}}, {2, [3]byte{0xd6, 0xbd, 0x00}}, + {2, [3]byte{0xd6, 0xbe, 0x00}}, {2, [3]byte{0xd6, 0xbf, 0x00}}, + {2, [3]byte{0xd7, 0x80, 0x00}}, {2, [3]byte{0xd7, 0x81, 0x00}}, + {2, [3]byte{0xd7, 0x82, 0x00}}, {2, [3]byte{0xd7, 0x83, 0x00}}, + {2, [3]byte{0xd7, 0xb0, 0x00}}, {2, [3]byte{0xd7, 0xb1, 0x00}}, + {2, [3]byte{0xd7, 0xb2, 0x00}}, {2, [3]byte{0xd7, 0xb3, 0x00}}, + {2, [3]byte{0xd7, 0xb4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xd7, 0x90, 0x00}}, {2, [3]byte{0xd7, 0x91, 0x00}}, + {2, [3]byte{0xd7, 0x92, 0x00}}, {2, [3]byte{0xd7, 0x93, 0x00}}, + {2, [3]byte{0xd7, 0x94, 0x00}}, {2, [3]byte{0xd7, 0x95, 0x00}}, + {2, [3]byte{0xd7, 0x96, 0x00}}, {2, [3]byte{0xd7, 0x97, 0x00}}, + {2, [3]byte{0xd7, 0x98, 0x00}}, {2, [3]byte{0xd7, 0x99, 0x00}}, + {2, [3]byte{0xd7, 0x9a, 0x00}}, {2, [3]byte{0xd7, 0x9b, 0x00}}, + {2, [3]byte{0xd7, 0x9c, 0x00}}, {2, [3]byte{0xd7, 0x9d, 0x00}}, + {2, [3]byte{0xd7, 0x9e, 0x00}}, {2, [3]byte{0xd7, 0x9f, 0x00}}, + {2, [3]byte{0xd7, 0xa0, 0x00}}, {2, [3]byte{0xd7, 0xa1, 0x00}}, + {2, [3]byte{0xd7, 0xa2, 0x00}}, {2, [3]byte{0xd7, 0xa3, 0x00}}, + {2, [3]byte{0xd7, 0xa4, 0x00}}, {2, [3]byte{0xd7, 0xa5, 0x00}}, + {2, [3]byte{0xd7, 0xa6, 0x00}}, {2, [3]byte{0xd7, 0xa7, 0x00}}, + {2, [3]byte{0xd7, 0xa8, 0x00}}, {2, [3]byte{0xd7, 0xa9, 0x00}}, + {2, [3]byte{0xd7, 0xaa, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, + {3, [3]byte{0xe2, 0x80, 0x8f}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, + 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, + 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, + 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, 0xaa0000d7, 0xba0000f7, 0x83000192, + 0x880002c6, 0x980002dc, 0xc00005b0, 0xc10005b1, 0xc20005b2, 0xc30005b3, 0xc40005b4, 0xc50005b5, + 0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xca0005ba, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd, + 0xce0005be, 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1, + 0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, + 0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, + 0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, + 0xfa0005ea, 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, + 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, + 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, + 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1256 is the Windows 1256 encoding. +var Windows1256 *Charmap = &windows1256 + +var windows1256 = Charmap{ + name: "Windows 1256", + mib: identifier.Windows1256, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {2, [3]byte{0xd9, 0xbe, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {2, [3]byte{0xd9, 0xb9, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {2, [3]byte{0xda, 0x86, 0x00}}, + {2, [3]byte{0xda, 0x98, 0x00}}, {2, [3]byte{0xda, 0x88, 0x00}}, + {2, [3]byte{0xda, 0xaf, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xda, 0xa9, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {2, [3]byte{0xda, 0x91, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8c}}, + {3, [3]byte{0xe2, 0x80, 0x8d}}, {2, [3]byte{0xda, 0xba, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xd8, 0x8c, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xda, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xd8, 0x9b, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xd8, 0x9f, 0x00}}, + {2, [3]byte{0xdb, 0x81, 0x00}}, {2, [3]byte{0xd8, 0xa1, 0x00}}, + {2, [3]byte{0xd8, 0xa2, 0x00}}, {2, [3]byte{0xd8, 0xa3, 0x00}}, + {2, [3]byte{0xd8, 0xa4, 0x00}}, {2, [3]byte{0xd8, 0xa5, 0x00}}, + {2, [3]byte{0xd8, 0xa6, 0x00}}, {2, [3]byte{0xd8, 0xa7, 0x00}}, + {2, [3]byte{0xd8, 0xa8, 0x00}}, {2, [3]byte{0xd8, 0xa9, 0x00}}, + {2, [3]byte{0xd8, 0xaa, 0x00}}, {2, [3]byte{0xd8, 0xab, 0x00}}, + {2, [3]byte{0xd8, 0xac, 0x00}}, {2, [3]byte{0xd8, 0xad, 0x00}}, + {2, [3]byte{0xd8, 0xae, 0x00}}, {2, [3]byte{0xd8, 0xaf, 0x00}}, + {2, [3]byte{0xd8, 0xb0, 0x00}}, {2, [3]byte{0xd8, 0xb1, 0x00}}, + {2, [3]byte{0xd8, 0xb2, 0x00}}, {2, [3]byte{0xd8, 0xb3, 0x00}}, + {2, [3]byte{0xd8, 0xb4, 0x00}}, {2, [3]byte{0xd8, 0xb5, 0x00}}, + {2, [3]byte{0xd8, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xd8, 0xb7, 0x00}}, {2, [3]byte{0xd8, 0xb8, 0x00}}, + {2, [3]byte{0xd8, 0xb9, 0x00}}, {2, [3]byte{0xd8, 0xba, 0x00}}, + {2, [3]byte{0xd9, 0x80, 0x00}}, {2, [3]byte{0xd9, 0x81, 0x00}}, + {2, [3]byte{0xd9, 0x82, 0x00}}, {2, [3]byte{0xd9, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xd9, 0x84, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xd9, 0x85, 0x00}}, + {2, [3]byte{0xd9, 0x86, 0x00}}, {2, [3]byte{0xd9, 0x87, 0x00}}, + {2, [3]byte{0xd9, 0x88, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xd9, 0x89, 0x00}}, {2, [3]byte{0xd9, 0x8a, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xd9, 0x8b, 0x00}}, {2, [3]byte{0xd9, 0x8c, 0x00}}, + {2, [3]byte{0xd9, 0x8d, 0x00}}, {2, [3]byte{0xd9, 0x8e, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xd9, 0x8f, 0x00}}, + {2, [3]byte{0xd9, 0x90, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xd9, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xd9, 0x92, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {3, [3]byte{0xe2, 0x80, 0x8e}}, + {3, [3]byte{0xe2, 0x80, 0x8f}}, {2, [3]byte{0xdb, 0x92, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, 0xa80000a8, + 0xa90000a9, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, 0xb00000b0, 0xb10000b1, + 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9, + 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xd70000d7, 0xe00000e0, 0xe20000e2, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xee0000ee, 0xef0000ef, 0xf40000f4, 0xf70000f7, + 0xf90000f9, 0xfb0000fb, 0xfc0000fc, 0x8c000152, 0x9c000153, 0x83000192, 0x880002c6, 0xa100060c, + 0xba00061b, 0xbf00061f, 0xc1000621, 0xc2000622, 0xc3000623, 0xc4000624, 0xc5000625, 0xc6000626, + 0xc7000627, 0xc8000628, 0xc9000629, 0xca00062a, 0xcb00062b, 0xcc00062c, 0xcd00062d, 0xce00062e, + 0xcf00062f, 0xd0000630, 0xd1000631, 0xd2000632, 0xd3000633, 0xd4000634, 0xd5000635, 0xd6000636, + 0xd8000637, 0xd9000638, 0xda000639, 0xdb00063a, 0xdc000640, 0xdd000641, 0xde000642, 0xdf000643, + 0xe1000644, 0xe3000645, 0xe4000646, 0xe5000647, 0xe6000648, 0xec000649, 0xed00064a, 0xf000064b, + 0xf100064c, 0xf200064d, 0xf300064e, 0xf500064f, 0xf6000650, 0xf8000651, 0xfa000652, 0x8a000679, + 0x8100067e, 0x8d000686, 0x8f000688, 0x9a000691, 0x8e000698, 0x980006a9, 0x900006af, 0x9f0006ba, + 0xaa0006be, 0xc00006c1, 0xff0006d2, 0x9d00200c, 0x9e00200d, 0xfd00200e, 0xfe00200f, 0x96002013, + 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, + 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, + }, +} + +// Windows1257 is the Windows 1257 encoding. +var Windows1257 *Charmap = &windows1257 + +var windows1257 = Charmap{ + name: "Windows 1257", + mib: identifier.Windows1257, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xa8, 0x00}}, + {2, [3]byte{0xcb, 0x87, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xcb, 0x9b, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0x96, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc3, 0x86, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc5, 0x97, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc3, 0xa6, 0x00}}, + {2, [3]byte{0xc4, 0x84, 0x00}}, {2, [3]byte{0xc4, 0xae, 0x00}}, + {2, [3]byte{0xc4, 0x80, 0x00}}, {2, [3]byte{0xc4, 0x86, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc4, 0x98, 0x00}}, {2, [3]byte{0xc4, 0x92, 0x00}}, + {2, [3]byte{0xc4, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc5, 0xb9, 0x00}}, {2, [3]byte{0xc4, 0x96, 0x00}}, + {2, [3]byte{0xc4, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0xb6, 0x00}}, + {2, [3]byte{0xc4, 0xaa, 0x00}}, {2, [3]byte{0xc4, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xa0, 0x00}}, {2, [3]byte{0xc5, 0x83, 0x00}}, + {2, [3]byte{0xc5, 0x85, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc5, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc5, 0xb2, 0x00}}, {2, [3]byte{0xc5, 0x81, 0x00}}, + {2, [3]byte{0xc5, 0x9a, 0x00}}, {2, [3]byte{0xc5, 0xaa, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc5, 0xbb, 0x00}}, + {2, [3]byte{0xc5, 0xbd, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc4, 0x85, 0x00}}, {2, [3]byte{0xc4, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x81, 0x00}}, {2, [3]byte{0xc4, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc4, 0x99, 0x00}}, {2, [3]byte{0xc4, 0x93, 0x00}}, + {2, [3]byte{0xc4, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc5, 0xba, 0x00}}, {2, [3]byte{0xc4, 0x97, 0x00}}, + {2, [3]byte{0xc4, 0xa3, 0x00}}, {2, [3]byte{0xc4, 0xb7, 0x00}}, + {2, [3]byte{0xc4, 0xab, 0x00}}, {2, [3]byte{0xc4, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xa1, 0x00}}, {2, [3]byte{0xc5, 0x84, 0x00}}, + {2, [3]byte{0xc5, 0x86, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc5, 0x8d, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc5, 0xb3, 0x00}}, {2, [3]byte{0xc5, 0x82, 0x00}}, + {2, [3]byte{0xc5, 0x9b, 0x00}}, {2, [3]byte{0xc5, 0xab, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc5, 0xbc, 0x00}}, + {2, [3]byte{0xc5, 0xbe, 0x00}}, {2, [3]byte{0xcb, 0x99, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa60000a6, 0xa70000a7, 0x8d0000a8, 0xa90000a9, + 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0x9d0000af, 0xb00000b0, 0xb10000b1, 0xb20000b2, + 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0x8f0000b8, 0xb90000b9, 0xbb0000bb, + 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xc40000c4, 0xc50000c5, 0xaf0000c6, 0xc90000c9, 0xd30000d3, + 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xa80000d8, 0xdc0000dc, 0xdf0000df, 0xe40000e4, 0xe50000e5, + 0xbf0000e6, 0xe90000e9, 0xf30000f3, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xb80000f8, 0xfc0000fc, + 0xc2000100, 0xe2000101, 0xc0000104, 0xe0000105, 0xc3000106, 0xe3000107, 0xc800010c, 0xe800010d, + 0xc7000112, 0xe7000113, 0xcb000116, 0xeb000117, 0xc6000118, 0xe6000119, 0xcc000122, 0xec000123, + 0xce00012a, 0xee00012b, 0xc100012e, 0xe100012f, 0xcd000136, 0xed000137, 0xcf00013b, 0xef00013c, + 0xd9000141, 0xf9000142, 0xd1000143, 0xf1000144, 0xd2000145, 0xf2000146, 0xd400014c, 0xf400014d, + 0xaa000156, 0xba000157, 0xda00015a, 0xfa00015b, 0xd0000160, 0xf0000161, 0xdb00016a, 0xfb00016b, + 0xd8000172, 0xf8000173, 0xca000179, 0xea00017a, 0xdd00017b, 0xfd00017c, 0xde00017d, 0xfe00017e, + 0x8e0002c7, 0xff0002d9, 0x9e0002db, 0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, + 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, + 0x8b002039, 0x9b00203a, 0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// Windows1258 is the Windows 1258 encoding. +var Windows1258 *Charmap = &windows1258 + +var windows1258 = Charmap{ + name: "Windows 1258", + mib: identifier.Windows1258, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xac}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xe2, 0x80, 0x9a}}, {2, [3]byte{0xc6, 0x92, 0x00}}, + {3, [3]byte{0xe2, 0x80, 0x9e}}, {3, [3]byte{0xe2, 0x80, 0xa6}}, + {3, [3]byte{0xe2, 0x80, 0xa0}}, {3, [3]byte{0xe2, 0x80, 0xa1}}, + {2, [3]byte{0xcb, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x80, 0xb0}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xb9}}, + {2, [3]byte{0xc5, 0x92, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0x98}}, + {3, [3]byte{0xe2, 0x80, 0x99}}, {3, [3]byte{0xe2, 0x80, 0x9c}}, + {3, [3]byte{0xe2, 0x80, 0x9d}}, {3, [3]byte{0xe2, 0x80, 0xa2}}, + {3, [3]byte{0xe2, 0x80, 0x93}}, {3, [3]byte{0xe2, 0x80, 0x94}}, + {2, [3]byte{0xcb, 0x9c, 0x00}}, {3, [3]byte{0xe2, 0x84, 0xa2}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {3, [3]byte{0xe2, 0x80, 0xba}}, + {2, [3]byte{0xc5, 0x93, 0x00}}, {3, [3]byte{0xef, 0xbf, 0xbd}}, + {3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xc5, 0xb8, 0x00}}, + {2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}}, + {2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}}, + {2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}}, + {2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}}, + {2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}}, + {2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}}, + {2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}}, + {2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}}, + {2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}}, + {2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}}, + {2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}}, + {2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}}, + {2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}}, + {2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}}, + {2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}}, + {2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}}, + {2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}}, + {2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc4, 0x82, 0x00}}, + {2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}}, + {2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}}, + {2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}}, + {2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}}, + {2, [3]byte{0xcc, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}}, + {2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}}, + {2, [3]byte{0xc4, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}}, + {2, [3]byte{0xcc, 0x89, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}}, + {2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc6, 0xa0, 0x00}}, + {2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}}, + {2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}}, + {2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}}, + {2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc6, 0xaf, 0x00}}, + {2, [3]byte{0xcc, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}}, + {2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc4, 0x83, 0x00}}, + {2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}}, + {2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}}, + {2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}}, + {2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}}, + {2, [3]byte{0xcc, 0x81, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}}, + {2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}}, + {2, [3]byte{0xc4, 0x91, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}}, + {2, [3]byte{0xcc, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}}, + {2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc6, 0xa1, 0x00}}, + {2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}}, + {2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}}, + {2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}}, + {2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc6, 0xb0, 0x00}}, + {3, [3]byte{0xe2, 0x82, 0xab}}, {2, [3]byte{0xc3, 0xbf, 0x00}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7, + 0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af, + 0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, + 0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, + 0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7, 0xc80000c8, + 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcd0000cd, 0xce0000ce, 0xcf0000cf, 0xd10000d1, 0xd30000d3, + 0xd40000d4, 0xd60000d6, 0xd70000d7, 0xd80000d8, 0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, + 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, + 0xe80000e8, 0xe90000e9, 0xea0000ea, 0xeb0000eb, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, + 0xf30000f3, 0xf40000f4, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb, + 0xfc0000fc, 0xff0000ff, 0xc3000102, 0xe3000103, 0xd0000110, 0xf0000111, 0x8c000152, 0x9c000153, + 0x9f000178, 0x83000192, 0xd50001a0, 0xf50001a1, 0xdd0001af, 0xfd0001b0, 0x880002c6, 0x980002dc, + 0xcc000300, 0xec000301, 0xde000303, 0xd2000309, 0xf2000323, 0x96002013, 0x97002014, 0x91002018, + 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020, 0x87002021, 0x95002022, + 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xfe0020ab, 0x800020ac, 0x99002122, 0x99002122, + 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, + }, +} + +// XUserDefined is the X-User-Defined encoding. +// +// It is defined at http://encoding.spec.whatwg.org/#x-user-defined +var XUserDefined *Charmap = &xUserDefined + +var xUserDefined = Charmap{ + name: "X-User-Defined", + mib: identifier.XUserDefined, + asciiSuperset: true, + low: 0x80, + replacement: 0x1a, + decode: [256]utf8Enc{ + {1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}}, + {1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}}, + {1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}}, + {1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}}, + {1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}}, + {1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}}, + {1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}}, + {1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}}, + {1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}}, + {1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}}, + {1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}}, + {1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}}, + {1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}}, + {1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}}, + {1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}}, + {1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}}, + {1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}}, + {1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}}, + {1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}}, + {1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}}, + {1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}}, + {1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}}, + {1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}}, + {1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}}, + {1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}}, + {1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}}, + {1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}}, + {1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}}, + {1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}}, + {1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}}, + {1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}}, + {1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}}, + {1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}}, + {1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}}, + {1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}}, + {1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}}, + {1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}}, + {1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}}, + {1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}}, + {1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}}, + {1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}}, + {1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}}, + {1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}}, + {1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}}, + {1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}}, + {1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}}, + {1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}}, + {1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}}, + {1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}}, + {1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}}, + {1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}}, + {1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}}, + {1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}}, + {1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}}, + {1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}}, + {1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}}, + {1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}}, + {1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}}, + {1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}}, + {1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}}, + {1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}}, + {1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}}, + {1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}}, + {1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}}, + {3, [3]byte{0xef, 0x9e, 0x80}}, {3, [3]byte{0xef, 0x9e, 0x81}}, + {3, [3]byte{0xef, 0x9e, 0x82}}, {3, [3]byte{0xef, 0x9e, 0x83}}, + {3, [3]byte{0xef, 0x9e, 0x84}}, {3, [3]byte{0xef, 0x9e, 0x85}}, + {3, [3]byte{0xef, 0x9e, 0x86}}, {3, [3]byte{0xef, 0x9e, 0x87}}, + {3, [3]byte{0xef, 0x9e, 0x88}}, {3, [3]byte{0xef, 0x9e, 0x89}}, + {3, [3]byte{0xef, 0x9e, 0x8a}}, {3, [3]byte{0xef, 0x9e, 0x8b}}, + {3, [3]byte{0xef, 0x9e, 0x8c}}, {3, [3]byte{0xef, 0x9e, 0x8d}}, + {3, [3]byte{0xef, 0x9e, 0x8e}}, {3, [3]byte{0xef, 0x9e, 0x8f}}, + {3, [3]byte{0xef, 0x9e, 0x90}}, {3, [3]byte{0xef, 0x9e, 0x91}}, + {3, [3]byte{0xef, 0x9e, 0x92}}, {3, [3]byte{0xef, 0x9e, 0x93}}, + {3, [3]byte{0xef, 0x9e, 0x94}}, {3, [3]byte{0xef, 0x9e, 0x95}}, + {3, [3]byte{0xef, 0x9e, 0x96}}, {3, [3]byte{0xef, 0x9e, 0x97}}, + {3, [3]byte{0xef, 0x9e, 0x98}}, {3, [3]byte{0xef, 0x9e, 0x99}}, + {3, [3]byte{0xef, 0x9e, 0x9a}}, {3, [3]byte{0xef, 0x9e, 0x9b}}, + {3, [3]byte{0xef, 0x9e, 0x9c}}, {3, [3]byte{0xef, 0x9e, 0x9d}}, + {3, [3]byte{0xef, 0x9e, 0x9e}}, {3, [3]byte{0xef, 0x9e, 0x9f}}, + {3, [3]byte{0xef, 0x9e, 0xa0}}, {3, [3]byte{0xef, 0x9e, 0xa1}}, + {3, [3]byte{0xef, 0x9e, 0xa2}}, {3, [3]byte{0xef, 0x9e, 0xa3}}, + {3, [3]byte{0xef, 0x9e, 0xa4}}, {3, [3]byte{0xef, 0x9e, 0xa5}}, + {3, [3]byte{0xef, 0x9e, 0xa6}}, {3, [3]byte{0xef, 0x9e, 0xa7}}, + {3, [3]byte{0xef, 0x9e, 0xa8}}, {3, [3]byte{0xef, 0x9e, 0xa9}}, + {3, [3]byte{0xef, 0x9e, 0xaa}}, {3, [3]byte{0xef, 0x9e, 0xab}}, + {3, [3]byte{0xef, 0x9e, 0xac}}, {3, [3]byte{0xef, 0x9e, 0xad}}, + {3, [3]byte{0xef, 0x9e, 0xae}}, {3, [3]byte{0xef, 0x9e, 0xaf}}, + {3, [3]byte{0xef, 0x9e, 0xb0}}, {3, [3]byte{0xef, 0x9e, 0xb1}}, + {3, [3]byte{0xef, 0x9e, 0xb2}}, {3, [3]byte{0xef, 0x9e, 0xb3}}, + {3, [3]byte{0xef, 0x9e, 0xb4}}, {3, [3]byte{0xef, 0x9e, 0xb5}}, + {3, [3]byte{0xef, 0x9e, 0xb6}}, {3, [3]byte{0xef, 0x9e, 0xb7}}, + {3, [3]byte{0xef, 0x9e, 0xb8}}, {3, [3]byte{0xef, 0x9e, 0xb9}}, + {3, [3]byte{0xef, 0x9e, 0xba}}, {3, [3]byte{0xef, 0x9e, 0xbb}}, + {3, [3]byte{0xef, 0x9e, 0xbc}}, {3, [3]byte{0xef, 0x9e, 0xbd}}, + {3, [3]byte{0xef, 0x9e, 0xbe}}, {3, [3]byte{0xef, 0x9e, 0xbf}}, + {3, [3]byte{0xef, 0x9f, 0x80}}, {3, [3]byte{0xef, 0x9f, 0x81}}, + {3, [3]byte{0xef, 0x9f, 0x82}}, {3, [3]byte{0xef, 0x9f, 0x83}}, + {3, [3]byte{0xef, 0x9f, 0x84}}, {3, [3]byte{0xef, 0x9f, 0x85}}, + {3, [3]byte{0xef, 0x9f, 0x86}}, {3, [3]byte{0xef, 0x9f, 0x87}}, + {3, [3]byte{0xef, 0x9f, 0x88}}, {3, [3]byte{0xef, 0x9f, 0x89}}, + {3, [3]byte{0xef, 0x9f, 0x8a}}, {3, [3]byte{0xef, 0x9f, 0x8b}}, + {3, [3]byte{0xef, 0x9f, 0x8c}}, {3, [3]byte{0xef, 0x9f, 0x8d}}, + {3, [3]byte{0xef, 0x9f, 0x8e}}, {3, [3]byte{0xef, 0x9f, 0x8f}}, + {3, [3]byte{0xef, 0x9f, 0x90}}, {3, [3]byte{0xef, 0x9f, 0x91}}, + {3, [3]byte{0xef, 0x9f, 0x92}}, {3, [3]byte{0xef, 0x9f, 0x93}}, + {3, [3]byte{0xef, 0x9f, 0x94}}, {3, [3]byte{0xef, 0x9f, 0x95}}, + {3, [3]byte{0xef, 0x9f, 0x96}}, {3, [3]byte{0xef, 0x9f, 0x97}}, + {3, [3]byte{0xef, 0x9f, 0x98}}, {3, [3]byte{0xef, 0x9f, 0x99}}, + {3, [3]byte{0xef, 0x9f, 0x9a}}, {3, [3]byte{0xef, 0x9f, 0x9b}}, + {3, [3]byte{0xef, 0x9f, 0x9c}}, {3, [3]byte{0xef, 0x9f, 0x9d}}, + {3, [3]byte{0xef, 0x9f, 0x9e}}, {3, [3]byte{0xef, 0x9f, 0x9f}}, + {3, [3]byte{0xef, 0x9f, 0xa0}}, {3, [3]byte{0xef, 0x9f, 0xa1}}, + {3, [3]byte{0xef, 0x9f, 0xa2}}, {3, [3]byte{0xef, 0x9f, 0xa3}}, + {3, [3]byte{0xef, 0x9f, 0xa4}}, {3, [3]byte{0xef, 0x9f, 0xa5}}, + {3, [3]byte{0xef, 0x9f, 0xa6}}, {3, [3]byte{0xef, 0x9f, 0xa7}}, + {3, [3]byte{0xef, 0x9f, 0xa8}}, {3, [3]byte{0xef, 0x9f, 0xa9}}, + {3, [3]byte{0xef, 0x9f, 0xaa}}, {3, [3]byte{0xef, 0x9f, 0xab}}, + {3, [3]byte{0xef, 0x9f, 0xac}}, {3, [3]byte{0xef, 0x9f, 0xad}}, + {3, [3]byte{0xef, 0x9f, 0xae}}, {3, [3]byte{0xef, 0x9f, 0xaf}}, + {3, [3]byte{0xef, 0x9f, 0xb0}}, {3, [3]byte{0xef, 0x9f, 0xb1}}, + {3, [3]byte{0xef, 0x9f, 0xb2}}, {3, [3]byte{0xef, 0x9f, 0xb3}}, + {3, [3]byte{0xef, 0x9f, 0xb4}}, {3, [3]byte{0xef, 0x9f, 0xb5}}, + {3, [3]byte{0xef, 0x9f, 0xb6}}, {3, [3]byte{0xef, 0x9f, 0xb7}}, + {3, [3]byte{0xef, 0x9f, 0xb8}}, {3, [3]byte{0xef, 0x9f, 0xb9}}, + {3, [3]byte{0xef, 0x9f, 0xba}}, {3, [3]byte{0xef, 0x9f, 0xbb}}, + {3, [3]byte{0xef, 0x9f, 0xbc}}, {3, [3]byte{0xef, 0x9f, 0xbd}}, + {3, [3]byte{0xef, 0x9f, 0xbe}}, {3, [3]byte{0xef, 0x9f, 0xbf}}, + }, + encode: [256]uint32{ + 0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007, + 0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f, + 0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017, + 0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f, + 0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027, + 0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f, + 0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037, + 0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f, + 0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047, + 0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f, + 0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057, + 0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f, + 0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067, + 0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f, + 0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077, + 0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f, + 0x8000f780, 0x8100f781, 0x8200f782, 0x8300f783, 0x8400f784, 0x8500f785, 0x8600f786, 0x8700f787, + 0x8800f788, 0x8900f789, 0x8a00f78a, 0x8b00f78b, 0x8c00f78c, 0x8d00f78d, 0x8e00f78e, 0x8f00f78f, + 0x9000f790, 0x9100f791, 0x9200f792, 0x9300f793, 0x9400f794, 0x9500f795, 0x9600f796, 0x9700f797, + 0x9800f798, 0x9900f799, 0x9a00f79a, 0x9b00f79b, 0x9c00f79c, 0x9d00f79d, 0x9e00f79e, 0x9f00f79f, + 0xa000f7a0, 0xa100f7a1, 0xa200f7a2, 0xa300f7a3, 0xa400f7a4, 0xa500f7a5, 0xa600f7a6, 0xa700f7a7, + 0xa800f7a8, 0xa900f7a9, 0xaa00f7aa, 0xab00f7ab, 0xac00f7ac, 0xad00f7ad, 0xae00f7ae, 0xaf00f7af, + 0xb000f7b0, 0xb100f7b1, 0xb200f7b2, 0xb300f7b3, 0xb400f7b4, 0xb500f7b5, 0xb600f7b6, 0xb700f7b7, + 0xb800f7b8, 0xb900f7b9, 0xba00f7ba, 0xbb00f7bb, 0xbc00f7bc, 0xbd00f7bd, 0xbe00f7be, 0xbf00f7bf, + 0xc000f7c0, 0xc100f7c1, 0xc200f7c2, 0xc300f7c3, 0xc400f7c4, 0xc500f7c5, 0xc600f7c6, 0xc700f7c7, + 0xc800f7c8, 0xc900f7c9, 0xca00f7ca, 0xcb00f7cb, 0xcc00f7cc, 0xcd00f7cd, 0xce00f7ce, 0xcf00f7cf, + 0xd000f7d0, 0xd100f7d1, 0xd200f7d2, 0xd300f7d3, 0xd400f7d4, 0xd500f7d5, 0xd600f7d6, 0xd700f7d7, + 0xd800f7d8, 0xd900f7d9, 0xda00f7da, 0xdb00f7db, 0xdc00f7dc, 0xdd00f7dd, 0xde00f7de, 0xdf00f7df, + 0xe000f7e0, 0xe100f7e1, 0xe200f7e2, 0xe300f7e3, 0xe400f7e4, 0xe500f7e5, 0xe600f7e6, 0xe700f7e7, + 0xe800f7e8, 0xe900f7e9, 0xea00f7ea, 0xeb00f7eb, 0xec00f7ec, 0xed00f7ed, 0xee00f7ee, 0xef00f7ef, + 0xf000f7f0, 0xf100f7f1, 0xf200f7f2, 0xf300f7f3, 0xf400f7f4, 0xf500f7f5, 0xf600f7f6, 0xf700f7f7, + 0xf800f7f8, 0xf900f7f9, 0xfa00f7fa, 0xfb00f7fb, 0xfc00f7fc, 0xfd00f7fd, 0xfe00f7fe, 0xff00f7ff, + }, +} +var listAll = []encoding.Encoding{ + CodePage037, + CodePage437, + CodePage850, + CodePage852, + CodePage855, + CodePage858, + CodePage860, + CodePage862, + CodePage863, + CodePage865, + CodePage866, + CodePage1047, + CodePage1140, + ISO8859_1, + ISO8859_2, + ISO8859_3, + ISO8859_4, + ISO8859_5, + ISO8859_6, + ISO8859_6E, + ISO8859_6I, + ISO8859_7, + ISO8859_8, + ISO8859_8E, + ISO8859_8I, + ISO8859_9, + ISO8859_10, + ISO8859_13, + ISO8859_14, + ISO8859_15, + ISO8859_16, + KOI8R, + KOI8U, + Macintosh, + MacintoshCyrillic, + Windows874, + Windows1250, + Windows1251, + Windows1252, + Windows1253, + Windows1254, + Windows1255, + Windows1256, + Windows1257, + Windows1258, + XUserDefined, +} + +// Total table size 87024 bytes (84KiB); checksum: 811C9DC5 diff --git a/vendor/golang.org/x/text/encoding/ianaindex/ascii.go b/vendor/golang.org/x/text/encoding/ianaindex/ascii.go new file mode 100644 index 000000000..2b9824f82 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/ianaindex/ascii.go @@ -0,0 +1,74 @@ +// Copyright 2019 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 ianaindex + +import ( + "unicode" + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +type asciiDecoder struct { + transform.NopResetter +} + +func (d asciiDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for _, c := range src { + if c > unicode.MaxASCII { + r := unicode.ReplacementChar + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break + } + nDst += utf8.EncodeRune(dst[nDst:], r) + nSrc++ + continue + } + + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = c + nDst++ + nSrc++ + } + return nDst, nSrc, err +} + +type asciiEncoder struct { + transform.NopResetter +} + +func (d asciiEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for _, c := range src { + if c > unicode.MaxASCII { + err = internal.RepertoireError(encoding.ASCIISub) + break + } + + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = c + nDst++ + nSrc++ + } + return nDst, nSrc, err +} + +var asciiEnc = &internal.Encoding{ + Encoding: &internal.SimpleEncoding{ + asciiDecoder{}, + asciiEncoder{}, + }, + Name: "US-ASCII", + MIB: identifier.ASCII, +} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go new file mode 100644 index 000000000..f4b18875c --- /dev/null +++ b/vendor/golang.org/x/text/encoding/ianaindex/ianaindex.go @@ -0,0 +1,214 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:generate go run gen.go + +// Package ianaindex maps names to Encodings as specified by the IANA registry. +// This includes both the MIME and IANA names. +// +// See http://www.iana.org/assignments/character-sets/character-sets.xhtml for +// more details. +package ianaindex + +import ( + "errors" + "sort" + "strings" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/charmap" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/encoding/japanese" + "golang.org/x/text/encoding/korean" + "golang.org/x/text/encoding/simplifiedchinese" + "golang.org/x/text/encoding/traditionalchinese" + "golang.org/x/text/encoding/unicode" +) + +// TODO: remove the "Status... incomplete" in the package doc comment. +// TODO: allow users to specify their own aliases? +// TODO: allow users to specify their own indexes? +// TODO: allow canonicalizing names + +// NOTE: only use these top-level variables if we can get the linker to drop +// the indexes when they are not used. Make them a function or perhaps only +// support MIME otherwise. + +var ( + // MIME is an index to map MIME names. + MIME *Index = mime + + // IANA is an index that supports all names and aliases using IANA names as + // the canonical identifier. + IANA *Index = iana + + // MIB is an index that associates the MIB display name with an Encoding. + MIB *Index = mib + + mime = &Index{mimeName, ianaToMIB, ianaAliases, encodings[:]} + iana = &Index{ianaName, ianaToMIB, ianaAliases, encodings[:]} + mib = &Index{mibName, ianaToMIB, ianaAliases, encodings[:]} +) + +// Index maps names registered by IANA to Encodings. +// Currently different Indexes only differ in the names they return for +// encodings. In the future they may also differ in supported aliases. +type Index struct { + names func(i int) string + toMIB []identifier.MIB // Sorted slice of supported MIBs + alias map[string]int + enc []encoding.Encoding +} + +var ( + errInvalidName = errors.New("ianaindex: invalid encoding name") + errUnknown = errors.New("ianaindex: unknown Encoding") + errUnsupported = errors.New("ianaindex: unsupported Encoding") +) + +// Encoding returns an Encoding for IANA-registered names. Matching is +// case-insensitive. +// +// If the provided name doesn't match a IANA-registered charset, an error is +// returned. If the name matches a IANA-registered charset but isn't supported, +// a nil encoding and a nil error are returned. +func (x *Index) Encoding(name string) (encoding.Encoding, error) { + name = strings.TrimSpace(name) + // First try without lowercasing (possibly creating an allocation). + i, ok := x.alias[name] + if !ok { + i, ok = x.alias[strings.ToLower(name)] + if !ok { + return nil, errInvalidName + } + } + return x.enc[i], nil +} + +// Name reports the canonical name of the given Encoding. It will return an +// error if the e is not associated with a known encoding scheme. +func (x *Index) Name(e encoding.Encoding) (string, error) { + id, ok := e.(identifier.Interface) + if !ok { + return "", errUnknown + } + mib, _ := id.ID() + if mib == 0 { + return "", errUnknown + } + v := findMIB(x.toMIB, mib) + if v == -1 { + return "", errUnsupported + } + return x.names(v), nil +} + +// TODO: the coverage of this index is rather spotty. Allowing users to set +// encodings would allow: +// - users to increase coverage +// - allow a partially loaded set of encodings in case the user doesn't need to +// them all. +// - write an OS-specific wrapper for supported encodings and set them. +// The exact definition of Set depends a bit on if and how we want to let users +// write their own Encoding implementations. Also, it is not possible yet to +// only partially load the encodings without doing some refactoring. Until this +// is solved, we might as well not support Set. +// // Set sets the e to be used for the encoding scheme identified by name. Only +// // canonical names may be used. An empty name assigns e to its internally +// // associated encoding scheme. +// func (x *Index) Set(name string, e encoding.Encoding) error { +// panic("TODO: implement") +// } + +func findMIB(x []identifier.MIB, mib identifier.MIB) int { + i := sort.Search(len(x), func(i int) bool { return x[i] >= mib }) + if i < len(x) && x[i] == mib { + return i + } + return -1 +} + +const maxMIMENameLen = '0' - 1 // officially 40, but we leave some buffer. + +func mimeName(x int) string { + n := ianaNames[x] + // See gen.go for a description of the encoding. + if n[0] <= maxMIMENameLen { + return n[1:n[0]] + } + return n +} + +func ianaName(x int) string { + n := ianaNames[x] + // See gen.go for a description of the encoding. + if n[0] <= maxMIMENameLen { + return n[n[0]:] + } + return n +} + +func mibName(x int) string { + return mibNames[x] +} + +var encodings = [numIANA]encoding.Encoding{ + enc3: asciiEnc, + enc106: unicode.UTF8, + enc1015: unicode.UTF16(unicode.BigEndian, unicode.UseBOM), + enc1013: unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM), + enc1014: unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM), + enc2028: charmap.CodePage037, + enc2011: charmap.CodePage437, + enc2009: charmap.CodePage850, + enc2010: charmap.CodePage852, + enc2046: charmap.CodePage855, + enc2089: charmap.CodePage858, + enc2048: charmap.CodePage860, + enc2013: charmap.CodePage862, + enc2050: charmap.CodePage863, + enc2052: charmap.CodePage865, + enc2086: charmap.CodePage866, + enc2102: charmap.CodePage1047, + enc2091: charmap.CodePage1140, + enc4: charmap.ISO8859_1, + enc5: charmap.ISO8859_2, + enc6: charmap.ISO8859_3, + enc7: charmap.ISO8859_4, + enc8: charmap.ISO8859_5, + enc9: charmap.ISO8859_6, + enc81: charmap.ISO8859_6E, + enc82: charmap.ISO8859_6I, + enc10: charmap.ISO8859_7, + enc11: charmap.ISO8859_8, + enc84: charmap.ISO8859_8E, + enc85: charmap.ISO8859_8I, + enc12: charmap.ISO8859_9, + enc13: charmap.ISO8859_10, + enc109: charmap.ISO8859_13, + enc110: charmap.ISO8859_14, + enc111: charmap.ISO8859_15, + enc112: charmap.ISO8859_16, + enc2084: charmap.KOI8R, + enc2088: charmap.KOI8U, + enc2027: charmap.Macintosh, + enc2109: charmap.Windows874, + enc2250: charmap.Windows1250, + enc2251: charmap.Windows1251, + enc2252: charmap.Windows1252, + enc2253: charmap.Windows1253, + enc2254: charmap.Windows1254, + enc2255: charmap.Windows1255, + enc2256: charmap.Windows1256, + enc2257: charmap.Windows1257, + enc2258: charmap.Windows1258, + enc18: japanese.EUCJP, + enc39: japanese.ISO2022JP, + enc17: japanese.ShiftJIS, + enc38: korean.EUCKR, + enc114: simplifiedchinese.GB18030, + enc113: simplifiedchinese.GBK, + enc2085: simplifiedchinese.HZGB2312, + enc2026: traditionalchinese.Big5, +} diff --git a/vendor/golang.org/x/text/encoding/ianaindex/tables.go b/vendor/golang.org/x/text/encoding/ianaindex/tables.go new file mode 100644 index 000000000..921bb3b4b --- /dev/null +++ b/vendor/golang.org/x/text/encoding/ianaindex/tables.go @@ -0,0 +1,2355 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +package ianaindex + +import "golang.org/x/text/encoding/internal/identifier" + +const ( + enc3 = iota + enc4 + enc5 + enc6 + enc7 + enc8 + enc9 + enc10 + enc11 + enc12 + enc13 + enc14 + enc15 + enc16 + enc17 + enc18 + enc19 + enc20 + enc21 + enc22 + enc23 + enc24 + enc25 + enc26 + enc27 + enc28 + enc29 + enc30 + enc31 + enc32 + enc33 + enc34 + enc35 + enc36 + enc37 + enc38 + enc39 + enc40 + enc41 + enc42 + enc43 + enc44 + enc45 + enc46 + enc47 + enc48 + enc49 + enc50 + enc51 + enc52 + enc53 + enc54 + enc55 + enc56 + enc57 + enc58 + enc59 + enc60 + enc61 + enc62 + enc63 + enc64 + enc65 + enc66 + enc67 + enc68 + enc69 + enc70 + enc71 + enc72 + enc73 + enc74 + enc75 + enc76 + enc77 + enc78 + enc79 + enc80 + enc81 + enc82 + enc83 + enc84 + enc85 + enc86 + enc87 + enc88 + enc89 + enc90 + enc91 + enc92 + enc93 + enc94 + enc95 + enc96 + enc97 + enc98 + enc99 + enc100 + enc101 + enc102 + enc103 + enc104 + enc105 + enc106 + enc109 + enc110 + enc111 + enc112 + enc113 + enc114 + enc115 + enc116 + enc117 + enc118 + enc119 + enc1000 + enc1001 + enc1002 + enc1003 + enc1004 + enc1005 + enc1006 + enc1007 + enc1008 + enc1009 + enc1010 + enc1011 + enc1012 + enc1013 + enc1014 + enc1015 + enc1016 + enc1017 + enc1018 + enc1019 + enc1020 + enc1021 + enc2000 + enc2001 + enc2002 + enc2003 + enc2004 + enc2005 + enc2006 + enc2007 + enc2008 + enc2009 + enc2010 + enc2011 + enc2012 + enc2013 + enc2014 + enc2015 + enc2016 + enc2017 + enc2018 + enc2019 + enc2020 + enc2021 + enc2022 + enc2023 + enc2024 + enc2025 + enc2026 + enc2027 + enc2028 + enc2029 + enc2030 + enc2031 + enc2032 + enc2033 + enc2034 + enc2035 + enc2036 + enc2037 + enc2038 + enc2039 + enc2040 + enc2041 + enc2042 + enc2043 + enc2044 + enc2045 + enc2046 + enc2047 + enc2048 + enc2049 + enc2050 + enc2051 + enc2052 + enc2053 + enc2054 + enc2055 + enc2056 + enc2057 + enc2058 + enc2059 + enc2060 + enc2061 + enc2062 + enc2063 + enc2064 + enc2065 + enc2066 + enc2067 + enc2068 + enc2069 + enc2070 + enc2071 + enc2072 + enc2073 + enc2074 + enc2075 + enc2076 + enc2077 + enc2078 + enc2079 + enc2080 + enc2081 + enc2082 + enc2083 + enc2084 + enc2085 + enc2086 + enc2087 + enc2088 + enc2089 + enc2090 + enc2091 + enc2092 + enc2093 + enc2094 + enc2095 + enc2096 + enc2097 + enc2098 + enc2099 + enc2100 + enc2101 + enc2102 + enc2103 + enc2104 + enc2105 + enc2106 + enc2107 + enc2108 + enc2109 + enc2250 + enc2251 + enc2252 + enc2253 + enc2254 + enc2255 + enc2256 + enc2257 + enc2258 + enc2259 + enc2260 + numIANA +) + +var ianaToMIB = []identifier.MIB{ // 258 elements + // Entry 0 - 3F + 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, + 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, + 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, + 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, + 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, + 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, + 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, + 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, + // Entry 40 - 7F + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, + 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, + 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, + 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, + 0x0075, 0x0076, 0x0077, 0x03e8, 0x03e9, 0x03ea, 0x03eb, 0x03ec, + 0x03ed, 0x03ee, 0x03ef, 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03f4, + // Entry 80 - BF + 0x03f5, 0x03f6, 0x03f7, 0x03f8, 0x03f9, 0x03fa, 0x03fb, 0x03fc, + 0x03fd, 0x07d0, 0x07d1, 0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x07d6, + 0x07d7, 0x07d8, 0x07d9, 0x07da, 0x07db, 0x07dc, 0x07dd, 0x07de, + 0x07df, 0x07e0, 0x07e1, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, + 0x07e7, 0x07e8, 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, + 0x07ef, 0x07f0, 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, + 0x07f7, 0x07f8, 0x07f9, 0x07fa, 0x07fb, 0x07fc, 0x07fd, 0x07fe, + 0x07ff, 0x0800, 0x0801, 0x0802, 0x0803, 0x0804, 0x0805, 0x0806, + // Entry C0 - FF + 0x0807, 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e, + 0x080f, 0x0810, 0x0811, 0x0812, 0x0813, 0x0814, 0x0815, 0x0816, + 0x0817, 0x0818, 0x0819, 0x081a, 0x081b, 0x081c, 0x081d, 0x081e, + 0x081f, 0x0820, 0x0821, 0x0822, 0x0823, 0x0824, 0x0825, 0x0826, + 0x0827, 0x0828, 0x0829, 0x082a, 0x082b, 0x082c, 0x082d, 0x082e, + 0x082f, 0x0830, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0836, + 0x0837, 0x0838, 0x0839, 0x083a, 0x083b, 0x083c, 0x083d, 0x08ca, + 0x08cb, 0x08cc, 0x08cd, 0x08ce, 0x08cf, 0x08d0, 0x08d1, 0x08d2, + // Entry 100 - 13F + 0x08d3, 0x08d4, +} // Size: 540 bytes + +var ianaNames = []string{ // 258 elements + "US-ASCII", + "\vISO-8859-1ISO_8859-1:1987", + "\vISO-8859-2ISO_8859-2:1987", + "\vISO-8859-3ISO_8859-3:1988", + "\vISO-8859-4ISO_8859-4:1988", + "\vISO-8859-5ISO_8859-5:1988", + "\vISO-8859-6ISO_8859-6:1987", + "\vISO-8859-7ISO_8859-7:1987", + "\vISO-8859-8ISO_8859-8:1988", + "\vISO-8859-9ISO_8859-9:1989", + "ISO-8859-10", + "ISO_6937-2-add", + "JIS_X0201", + "JIS_Encoding", + "Shift_JIS", + "\x07EUC-JPExtended_UNIX_Code_Packed_Format_for_Japanese", + "Extended_UNIX_Code_Fixed_Width_for_Japanese", + "BS_4730", + "SEN_850200_C", + "IT", + "ES", + "DIN_66003", + "NS_4551-1", + "NF_Z_62-010", + "ISO-10646-UTF-1", + "ISO_646.basic:1983", + "INVARIANT", + "ISO_646.irv:1983", + "NATS-SEFI", + "NATS-SEFI-ADD", + "NATS-DANO", + "NATS-DANO-ADD", + "SEN_850200_B", + "KS_C_5601-1987", + "ISO-2022-KR", + "EUC-KR", + "ISO-2022-JP", + "ISO-2022-JP-2", + "JIS_C6220-1969-jp", + "JIS_C6220-1969-ro", + "PT", + "greek7-old", + "latin-greek", + "NF_Z_62-010_(1973)", + "Latin-greek-1", + "ISO_5427", + "JIS_C6226-1978", + "BS_viewdata", + "INIS", + "INIS-8", + "INIS-cyrillic", + "ISO_5427:1981", + "ISO_5428:1980", + "GB_1988-80", + "GB_2312-80", + "NS_4551-2", + "videotex-suppl", + "PT2", + "ES2", + "MSZ_7795.3", + "JIS_C6226-1983", + "greek7", + "ASMO_449", + "iso-ir-90", + "JIS_C6229-1984-a", + "JIS_C6229-1984-b", + "JIS_C6229-1984-b-add", + "JIS_C6229-1984-hand", + "JIS_C6229-1984-hand-add", + "JIS_C6229-1984-kana", + "ISO_2033-1983", + "ANSI_X3.110-1983", + "T.61-7bit", + "T.61-8bit", + "ECMA-cyrillic", + "CSA_Z243.4-1985-1", + "CSA_Z243.4-1985-2", + "CSA_Z243.4-1985-gr", + "\rISO-8859-6-EISO_8859-6-E", + "\rISO-8859-6-IISO_8859-6-I", + "T.101-G2", + "\rISO-8859-8-EISO_8859-8-E", + "\rISO-8859-8-IISO_8859-8-I", + "CSN_369103", + "JUS_I.B1.002", + "IEC_P27-1", + "JUS_I.B1.003-serb", + "JUS_I.B1.003-mac", + "greek-ccitt", + "NC_NC00-10:81", + "ISO_6937-2-25", + "GOST_19768-74", + "ISO_8859-supp", + "ISO_10367-box", + "latin-lap", + "JIS_X0212-1990", + "DS_2089", + "us-dk", + "dk-us", + "KSC5636", + "UNICODE-1-1-UTF-7", + "ISO-2022-CN", + "ISO-2022-CN-EXT", + "UTF-8", + "ISO-8859-13", + "ISO-8859-14", + "ISO-8859-15", + "ISO-8859-16", + "GBK", + "GB18030", + "OSD_EBCDIC_DF04_15", + "OSD_EBCDIC_DF03_IRV", + "OSD_EBCDIC_DF04_1", + "ISO-11548-1", + "KZ-1048", + "ISO-10646-UCS-2", + "ISO-10646-UCS-4", + "ISO-10646-UCS-Basic", + "ISO-10646-Unicode-Latin1", + "ISO-10646-J-1", + "ISO-Unicode-IBM-1261", + "ISO-Unicode-IBM-1268", + "ISO-Unicode-IBM-1276", + "ISO-Unicode-IBM-1264", + "ISO-Unicode-IBM-1265", + "UNICODE-1-1", + "SCSU", + "UTF-7", + "UTF-16BE", + "UTF-16LE", + "UTF-16", + "CESU-8", + "UTF-32", + "UTF-32BE", + "UTF-32LE", + "BOCU-1", + "UTF-7-IMAP", + "ISO-8859-1-Windows-3.0-Latin-1", + "ISO-8859-1-Windows-3.1-Latin-1", + "ISO-8859-2-Windows-Latin-2", + "ISO-8859-9-Windows-Latin-5", + "hp-roman8", + "Adobe-Standard-Encoding", + "Ventura-US", + "Ventura-International", + "DEC-MCS", + "IBM850", + "IBM852", + "IBM437", + "PC8-Danish-Norwegian", + "IBM862", + "PC8-Turkish", + "IBM-Symbols", + "IBM-Thai", + "HP-Legal", + "HP-Pi-font", + "HP-Math8", + "Adobe-Symbol-Encoding", + "HP-DeskTop", + "Ventura-Math", + "Microsoft-Publishing", + "Windows-31J", + "GB2312", + "Big5", + "macintosh", + "IBM037", + "IBM038", + "IBM273", + "IBM274", + "IBM275", + "IBM277", + "IBM278", + "IBM280", + "IBM281", + "IBM284", + "IBM285", + "IBM290", + "IBM297", + "IBM420", + "IBM423", + "IBM424", + "IBM500", + "IBM851", + "IBM855", + "IBM857", + "IBM860", + "IBM861", + "IBM863", + "IBM864", + "IBM865", + "IBM868", + "IBM869", + "IBM870", + "IBM871", + "IBM880", + "IBM891", + "IBM903", + "IBM904", + "IBM905", + "IBM918", + "IBM1026", + "EBCDIC-AT-DE", + "EBCDIC-AT-DE-A", + "EBCDIC-CA-FR", + "EBCDIC-DK-NO", + "EBCDIC-DK-NO-A", + "EBCDIC-FI-SE", + "EBCDIC-FI-SE-A", + "EBCDIC-FR", + "EBCDIC-IT", + "EBCDIC-PT", + "EBCDIC-ES", + "EBCDIC-ES-A", + "EBCDIC-ES-S", + "EBCDIC-UK", + "EBCDIC-US", + "UNKNOWN-8BIT", + "MNEMONIC", + "MNEM", + "VISCII", + "VIQR", + "KOI8-R", + "HZ-GB-2312", + "IBM866", + "IBM775", + "KOI8-U", + "IBM00858", + "IBM00924", + "IBM01140", + "IBM01141", + "IBM01142", + "IBM01143", + "IBM01144", + "IBM01145", + "IBM01146", + "IBM01147", + "IBM01148", + "IBM01149", + "Big5-HKSCS", + "IBM1047", + "PTCP154", + "Amiga-1251", + "KOI7-switched", + "BRF", + "TSCII", + "CP51932", + "windows-874", + "windows-1250", + "windows-1251", + "windows-1252", + "windows-1253", + "windows-1254", + "windows-1255", + "windows-1256", + "windows-1257", + "windows-1258", + "TIS-620", + "CP50220", +} // Size: 7114 bytes + +var mibNames = []string{ // 258 elements + "ASCII", + "ISOLatin1", + "ISOLatin2", + "ISOLatin3", + "ISOLatin4", + "ISOLatinCyrillic", + "ISOLatinArabic", + "ISOLatinGreek", + "ISOLatinHebrew", + "ISOLatin5", + "ISOLatin6", + "ISOTextComm", + "HalfWidthKatakana", + "JISEncoding", + "ShiftJIS", + "EUCPkdFmtJapanese", + "EUCFixWidJapanese", + "ISO4UnitedKingdom", + "ISO11SwedishForNames", + "ISO15Italian", + "ISO17Spanish", + "ISO21German", + "ISO60Norwegian1", + "ISO69French", + "ISO10646UTF1", + "ISO646basic1983", + "INVARIANT", + "ISO2IntlRefVersion", + "NATSSEFI", + "NATSSEFIADD", + "NATSDANO", + "NATSDANOADD", + "ISO10Swedish", + "KSC56011987", + "ISO2022KR", + "EUCKR", + "ISO2022JP", + "ISO2022JP2", + "ISO13JISC6220jp", + "ISO14JISC6220ro", + "ISO16Portuguese", + "ISO18Greek7Old", + "ISO19LatinGreek", + "ISO25French", + "ISO27LatinGreek1", + "ISO5427Cyrillic", + "ISO42JISC62261978", + "ISO47BSViewdata", + "ISO49INIS", + "ISO50INIS8", + "ISO51INISCyrillic", + "ISO54271981", + "ISO5428Greek", + "ISO57GB1988", + "ISO58GB231280", + "ISO61Norwegian2", + "ISO70VideotexSupp1", + "ISO84Portuguese2", + "ISO85Spanish2", + "ISO86Hungarian", + "ISO87JISX0208", + "ISO88Greek7", + "ISO89ASMO449", + "ISO90", + "ISO91JISC62291984a", + "ISO92JISC62991984b", + "ISO93JIS62291984badd", + "ISO94JIS62291984hand", + "ISO95JIS62291984handadd", + "ISO96JISC62291984kana", + "ISO2033", + "ISO99NAPLPS", + "ISO102T617bit", + "ISO103T618bit", + "ISO111ECMACyrillic", + "ISO121Canadian1", + "ISO122Canadian2", + "ISO123CSAZ24341985gr", + "ISO88596E", + "ISO88596I", + "ISO128T101G2", + "ISO88598E", + "ISO88598I", + "ISO139CSN369103", + "ISO141JUSIB1002", + "ISO143IECP271", + "ISO146Serbian", + "ISO147Macedonian", + "ISO150GreekCCITT", + "ISO151Cuba", + "ISO6937Add", + "ISO153GOST1976874", + "ISO8859Supp", + "ISO10367Box", + "ISO158Lap", + "ISO159JISX02121990", + "ISO646Danish", + "USDK", + "DKUS", + "KSC5636", + "Unicode11UTF7", + "ISO2022CN", + "ISO2022CNEXT", + "UTF8", + "ISO885913", + "ISO885914", + "ISO885915", + "ISO885916", + "GBK", + "GB18030", + "OSDEBCDICDF0415", + "OSDEBCDICDF03IRV", + "OSDEBCDICDF041", + "ISO115481", + "KZ1048", + "Unicode", + "UCS4", + "UnicodeASCII", + "UnicodeLatin1", + "UnicodeJapanese", + "UnicodeIBM1261", + "UnicodeIBM1268", + "UnicodeIBM1276", + "UnicodeIBM1264", + "UnicodeIBM1265", + "Unicode11", + "SCSU", + "UTF7", + "UTF16BE", + "UTF16LE", + "UTF16", + "CESU-8", + "UTF32", + "UTF32BE", + "UTF32LE", + "BOCU-1", + "UTF7IMAP", + "Windows30Latin1", + "Windows31Latin1", + "Windows31Latin2", + "Windows31Latin5", + "HPRoman8", + "AdobeStandardEncoding", + "VenturaUS", + "VenturaInternational", + "DECMCS", + "PC850Multilingual", + "PCp852", + "PC8CodePage437", + "PC8DanishNorwegian", + "PC862LatinHebrew", + "PC8Turkish", + "IBMSymbols", + "IBMThai", + "HPLegal", + "HPPiFont", + "HPMath8", + "HPPSMath", + "HPDesktop", + "VenturaMath", + "MicrosoftPublishing", + "Windows31J", + "GB2312", + "Big5", + "Macintosh", + "IBM037", + "IBM038", + "IBM273", + "IBM274", + "IBM275", + "IBM277", + "IBM278", + "IBM280", + "IBM281", + "IBM284", + "IBM285", + "IBM290", + "IBM297", + "IBM420", + "IBM423", + "IBM424", + "IBM500", + "IBM851", + "IBM855", + "IBM857", + "IBM860", + "IBM861", + "IBM863", + "IBM864", + "IBM865", + "IBM868", + "IBM869", + "IBM870", + "IBM871", + "IBM880", + "IBM891", + "IBM903", + "IBBM904", + "IBM905", + "IBM918", + "IBM1026", + "IBMEBCDICATDE", + "EBCDICATDEA", + "EBCDICCAFR", + "EBCDICDKNO", + "EBCDICDKNOA", + "EBCDICFISE", + "EBCDICFISEA", + "EBCDICFR", + "EBCDICIT", + "EBCDICPT", + "EBCDICES", + "EBCDICESA", + "EBCDICESS", + "EBCDICUK", + "EBCDICUS", + "Unknown8BiT", + "Mnemonic", + "Mnem", + "VISCII", + "VIQR", + "KOI8R", + "HZ-GB-2312", + "IBM866", + "PC775Baltic", + "KOI8U", + "IBM00858", + "IBM00924", + "IBM01140", + "IBM01141", + "IBM01142", + "IBM01143", + "IBM01144", + "IBM01145", + "IBM01146", + "IBM01147", + "IBM01148", + "IBM01149", + "Big5HKSCS", + "IBM1047", + "PTCP154", + "Amiga1251\n(Aliases", + "KOI7switched", + "BRF", + "TSCII", + "CP51932", + "windows874", + "windows1250", + "windows1251", + "windows1252", + "windows1253", + "windows1254", + "windows1255", + "windows1256", + "windows1257", + "windows1258", + "TIS620", + "CP50220", +} // Size: 6800 bytes + +// TODO: Instead of using a map, we could use binary search strings doing +// on-the fly lower-casing per character. This allows to always avoid +// allocation and will be considerably more compact. +var ianaAliases = map[string]int{ + "US-ASCII": enc3, + "us-ascii": enc3, + "iso-ir-6": enc3, + "ANSI_X3.4-1968": enc3, + "ansi_x3.4-1968": enc3, + "ANSI_X3.4-1986": enc3, + "ansi_x3.4-1986": enc3, + "ISO_646.irv:1991": enc3, + "iso_646.irv:1991": enc3, + "ISO646-US": enc3, + "iso646-us": enc3, + "us": enc3, + "IBM367": enc3, + "ibm367": enc3, + "cp367": enc3, + "csASCII": enc3, + "csascii": enc3, + "ISO_8859-1:1987": enc4, + "iso_8859-1:1987": enc4, + "iso-ir-100": enc4, + "ISO_8859-1": enc4, + "iso_8859-1": enc4, + "ISO-8859-1": enc4, + "iso-8859-1": enc4, + "latin1": enc4, + "l1": enc4, + "IBM819": enc4, + "ibm819": enc4, + "CP819": enc4, + "cp819": enc4, + "csISOLatin1": enc4, + "csisolatin1": enc4, + "ISO_8859-2:1987": enc5, + "iso_8859-2:1987": enc5, + "iso-ir-101": enc5, + "ISO_8859-2": enc5, + "iso_8859-2": enc5, + "ISO-8859-2": enc5, + "iso-8859-2": enc5, + "latin2": enc5, + "l2": enc5, + "csISOLatin2": enc5, + "csisolatin2": enc5, + "ISO_8859-3:1988": enc6, + "iso_8859-3:1988": enc6, + "iso-ir-109": enc6, + "ISO_8859-3": enc6, + "iso_8859-3": enc6, + "ISO-8859-3": enc6, + "iso-8859-3": enc6, + "latin3": enc6, + "l3": enc6, + "csISOLatin3": enc6, + "csisolatin3": enc6, + "ISO_8859-4:1988": enc7, + "iso_8859-4:1988": enc7, + "iso-ir-110": enc7, + "ISO_8859-4": enc7, + "iso_8859-4": enc7, + "ISO-8859-4": enc7, + "iso-8859-4": enc7, + "latin4": enc7, + "l4": enc7, + "csISOLatin4": enc7, + "csisolatin4": enc7, + "ISO_8859-5:1988": enc8, + "iso_8859-5:1988": enc8, + "iso-ir-144": enc8, + "ISO_8859-5": enc8, + "iso_8859-5": enc8, + "ISO-8859-5": enc8, + "iso-8859-5": enc8, + "cyrillic": enc8, + "csISOLatinCyrillic": enc8, + "csisolatincyrillic": enc8, + "ISO_8859-6:1987": enc9, + "iso_8859-6:1987": enc9, + "iso-ir-127": enc9, + "ISO_8859-6": enc9, + "iso_8859-6": enc9, + "ISO-8859-6": enc9, + "iso-8859-6": enc9, + "ECMA-114": enc9, + "ecma-114": enc9, + "ASMO-708": enc9, + "asmo-708": enc9, + "arabic": enc9, + "csISOLatinArabic": enc9, + "csisolatinarabic": enc9, + "ISO_8859-7:1987": enc10, + "iso_8859-7:1987": enc10, + "iso-ir-126": enc10, + "ISO_8859-7": enc10, + "iso_8859-7": enc10, + "ISO-8859-7": enc10, + "iso-8859-7": enc10, + "ELOT_928": enc10, + "elot_928": enc10, + "ECMA-118": enc10, + "ecma-118": enc10, + "greek": enc10, + "greek8": enc10, + "csISOLatinGreek": enc10, + "csisolatingreek": enc10, + "ISO_8859-8:1988": enc11, + "iso_8859-8:1988": enc11, + "iso-ir-138": enc11, + "ISO_8859-8": enc11, + "iso_8859-8": enc11, + "ISO-8859-8": enc11, + "iso-8859-8": enc11, + "hebrew": enc11, + "csISOLatinHebrew": enc11, + "csisolatinhebrew": enc11, + "ISO_8859-9:1989": enc12, + "iso_8859-9:1989": enc12, + "iso-ir-148": enc12, + "ISO_8859-9": enc12, + "iso_8859-9": enc12, + "ISO-8859-9": enc12, + "iso-8859-9": enc12, + "latin5": enc12, + "l5": enc12, + "csISOLatin5": enc12, + "csisolatin5": enc12, + "ISO-8859-10": enc13, + "iso-8859-10": enc13, + "iso-ir-157": enc13, + "l6": enc13, + "ISO_8859-10:1992": enc13, + "iso_8859-10:1992": enc13, + "csISOLatin6": enc13, + "csisolatin6": enc13, + "latin6": enc13, + "ISO_6937-2-add": enc14, + "iso_6937-2-add": enc14, + "iso-ir-142": enc14, + "csISOTextComm": enc14, + "csisotextcomm": enc14, + "JIS_X0201": enc15, + "jis_x0201": enc15, + "X0201": enc15, + "x0201": enc15, + "csHalfWidthKatakana": enc15, + "cshalfwidthkatakana": enc15, + "JIS_Encoding": enc16, + "jis_encoding": enc16, + "csJISEncoding": enc16, + "csjisencoding": enc16, + "Shift_JIS": enc17, + "shift_jis": enc17, + "MS_Kanji": enc17, + "ms_kanji": enc17, + "csShiftJIS": enc17, + "csshiftjis": enc17, + "Extended_UNIX_Code_Packed_Format_for_Japanese": enc18, + "extended_unix_code_packed_format_for_japanese": enc18, + "csEUCPkdFmtJapanese": enc18, + "cseucpkdfmtjapanese": enc18, + "EUC-JP": enc18, + "euc-jp": enc18, + "Extended_UNIX_Code_Fixed_Width_for_Japanese": enc19, + "extended_unix_code_fixed_width_for_japanese": enc19, + "csEUCFixWidJapanese": enc19, + "cseucfixwidjapanese": enc19, + "BS_4730": enc20, + "bs_4730": enc20, + "iso-ir-4": enc20, + "ISO646-GB": enc20, + "iso646-gb": enc20, + "gb": enc20, + "uk": enc20, + "csISO4UnitedKingdom": enc20, + "csiso4unitedkingdom": enc20, + "SEN_850200_C": enc21, + "sen_850200_c": enc21, + "iso-ir-11": enc21, + "ISO646-SE2": enc21, + "iso646-se2": enc21, + "se2": enc21, + "csISO11SwedishForNames": enc21, + "csiso11swedishfornames": enc21, + "IT": enc22, + "it": enc22, + "iso-ir-15": enc22, + "ISO646-IT": enc22, + "iso646-it": enc22, + "csISO15Italian": enc22, + "csiso15italian": enc22, + "ES": enc23, + "es": enc23, + "iso-ir-17": enc23, + "ISO646-ES": enc23, + "iso646-es": enc23, + "csISO17Spanish": enc23, + "csiso17spanish": enc23, + "DIN_66003": enc24, + "din_66003": enc24, + "iso-ir-21": enc24, + "de": enc24, + "ISO646-DE": enc24, + "iso646-de": enc24, + "csISO21German": enc24, + "csiso21german": enc24, + "NS_4551-1": enc25, + "ns_4551-1": enc25, + "iso-ir-60": enc25, + "ISO646-NO": enc25, + "iso646-no": enc25, + "no": enc25, + "csISO60DanishNorwegian": enc25, + "csiso60danishnorwegian": enc25, + "csISO60Norwegian1": enc25, + "csiso60norwegian1": enc25, + "NF_Z_62-010": enc26, + "nf_z_62-010": enc26, + "iso-ir-69": enc26, + "ISO646-FR": enc26, + "iso646-fr": enc26, + "fr": enc26, + "csISO69French": enc26, + "csiso69french": enc26, + "ISO-10646-UTF-1": enc27, + "iso-10646-utf-1": enc27, + "csISO10646UTF1": enc27, + "csiso10646utf1": enc27, + "ISO_646.basic:1983": enc28, + "iso_646.basic:1983": enc28, + "ref": enc28, + "csISO646basic1983": enc28, + "csiso646basic1983": enc28, + "INVARIANT": enc29, + "invariant": enc29, + "csINVARIANT": enc29, + "csinvariant": enc29, + "ISO_646.irv:1983": enc30, + "iso_646.irv:1983": enc30, + "iso-ir-2": enc30, + "irv": enc30, + "csISO2IntlRefVersion": enc30, + "csiso2intlrefversion": enc30, + "NATS-SEFI": enc31, + "nats-sefi": enc31, + "iso-ir-8-1": enc31, + "csNATSSEFI": enc31, + "csnatssefi": enc31, + "NATS-SEFI-ADD": enc32, + "nats-sefi-add": enc32, + "iso-ir-8-2": enc32, + "csNATSSEFIADD": enc32, + "csnatssefiadd": enc32, + "NATS-DANO": enc33, + "nats-dano": enc33, + "iso-ir-9-1": enc33, + "csNATSDANO": enc33, + "csnatsdano": enc33, + "NATS-DANO-ADD": enc34, + "nats-dano-add": enc34, + "iso-ir-9-2": enc34, + "csNATSDANOADD": enc34, + "csnatsdanoadd": enc34, + "SEN_850200_B": enc35, + "sen_850200_b": enc35, + "iso-ir-10": enc35, + "FI": enc35, + "fi": enc35, + "ISO646-FI": enc35, + "iso646-fi": enc35, + "ISO646-SE": enc35, + "iso646-se": enc35, + "se": enc35, + "csISO10Swedish": enc35, + "csiso10swedish": enc35, + "KS_C_5601-1987": enc36, + "ks_c_5601-1987": enc36, + "iso-ir-149": enc36, + "KS_C_5601-1989": enc36, + "ks_c_5601-1989": enc36, + "KSC_5601": enc36, + "ksc_5601": enc36, + "korean": enc36, + "csKSC56011987": enc36, + "csksc56011987": enc36, + "ISO-2022-KR": enc37, + "iso-2022-kr": enc37, + "csISO2022KR": enc37, + "csiso2022kr": enc37, + "EUC-KR": enc38, + "euc-kr": enc38, + "csEUCKR": enc38, + "cseuckr": enc38, + "ISO-2022-JP": enc39, + "iso-2022-jp": enc39, + "csISO2022JP": enc39, + "csiso2022jp": enc39, + "ISO-2022-JP-2": enc40, + "iso-2022-jp-2": enc40, + "csISO2022JP2": enc40, + "csiso2022jp2": enc40, + "JIS_C6220-1969-jp": enc41, + "jis_c6220-1969-jp": enc41, + "JIS_C6220-1969": enc41, + "jis_c6220-1969": enc41, + "iso-ir-13": enc41, + "katakana": enc41, + "x0201-7": enc41, + "csISO13JISC6220jp": enc41, + "csiso13jisc6220jp": enc41, + "JIS_C6220-1969-ro": enc42, + "jis_c6220-1969-ro": enc42, + "iso-ir-14": enc42, + "jp": enc42, + "ISO646-JP": enc42, + "iso646-jp": enc42, + "csISO14JISC6220ro": enc42, + "csiso14jisc6220ro": enc42, + "PT": enc43, + "pt": enc43, + "iso-ir-16": enc43, + "ISO646-PT": enc43, + "iso646-pt": enc43, + "csISO16Portuguese": enc43, + "csiso16portuguese": enc43, + "greek7-old": enc44, + "iso-ir-18": enc44, + "csISO18Greek7Old": enc44, + "csiso18greek7old": enc44, + "latin-greek": enc45, + "iso-ir-19": enc45, + "csISO19LatinGreek": enc45, + "csiso19latingreek": enc45, + "NF_Z_62-010_(1973)": enc46, + "nf_z_62-010_(1973)": enc46, + "iso-ir-25": enc46, + "ISO646-FR1": enc46, + "iso646-fr1": enc46, + "csISO25French": enc46, + "csiso25french": enc46, + "Latin-greek-1": enc47, + "latin-greek-1": enc47, + "iso-ir-27": enc47, + "csISO27LatinGreek1": enc47, + "csiso27latingreek1": enc47, + "ISO_5427": enc48, + "iso_5427": enc48, + "iso-ir-37": enc48, + "csISO5427Cyrillic": enc48, + "csiso5427cyrillic": enc48, + "JIS_C6226-1978": enc49, + "jis_c6226-1978": enc49, + "iso-ir-42": enc49, + "csISO42JISC62261978": enc49, + "csiso42jisc62261978": enc49, + "BS_viewdata": enc50, + "bs_viewdata": enc50, + "iso-ir-47": enc50, + "csISO47BSViewdata": enc50, + "csiso47bsviewdata": enc50, + "INIS": enc51, + "inis": enc51, + "iso-ir-49": enc51, + "csISO49INIS": enc51, + "csiso49inis": enc51, + "INIS-8": enc52, + "inis-8": enc52, + "iso-ir-50": enc52, + "csISO50INIS8": enc52, + "csiso50inis8": enc52, + "INIS-cyrillic": enc53, + "inis-cyrillic": enc53, + "iso-ir-51": enc53, + "csISO51INISCyrillic": enc53, + "csiso51iniscyrillic": enc53, + "ISO_5427:1981": enc54, + "iso_5427:1981": enc54, + "iso-ir-54": enc54, + "ISO5427Cyrillic1981": enc54, + "iso5427cyrillic1981": enc54, + "csISO54271981": enc54, + "csiso54271981": enc54, + "ISO_5428:1980": enc55, + "iso_5428:1980": enc55, + "iso-ir-55": enc55, + "csISO5428Greek": enc55, + "csiso5428greek": enc55, + "GB_1988-80": enc56, + "gb_1988-80": enc56, + "iso-ir-57": enc56, + "cn": enc56, + "ISO646-CN": enc56, + "iso646-cn": enc56, + "csISO57GB1988": enc56, + "csiso57gb1988": enc56, + "GB_2312-80": enc57, + "gb_2312-80": enc57, + "iso-ir-58": enc57, + "chinese": enc57, + "csISO58GB231280": enc57, + "csiso58gb231280": enc57, + "NS_4551-2": enc58, + "ns_4551-2": enc58, + "ISO646-NO2": enc58, + "iso646-no2": enc58, + "iso-ir-61": enc58, + "no2": enc58, + "csISO61Norwegian2": enc58, + "csiso61norwegian2": enc58, + "videotex-suppl": enc59, + "iso-ir-70": enc59, + "csISO70VideotexSupp1": enc59, + "csiso70videotexsupp1": enc59, + "PT2": enc60, + "pt2": enc60, + "iso-ir-84": enc60, + "ISO646-PT2": enc60, + "iso646-pt2": enc60, + "csISO84Portuguese2": enc60, + "csiso84portuguese2": enc60, + "ES2": enc61, + "es2": enc61, + "iso-ir-85": enc61, + "ISO646-ES2": enc61, + "iso646-es2": enc61, + "csISO85Spanish2": enc61, + "csiso85spanish2": enc61, + "MSZ_7795.3": enc62, + "msz_7795.3": enc62, + "iso-ir-86": enc62, + "ISO646-HU": enc62, + "iso646-hu": enc62, + "hu": enc62, + "csISO86Hungarian": enc62, + "csiso86hungarian": enc62, + "JIS_C6226-1983": enc63, + "jis_c6226-1983": enc63, + "iso-ir-87": enc63, + "x0208": enc63, + "JIS_X0208-1983": enc63, + "jis_x0208-1983": enc63, + "csISO87JISX0208": enc63, + "csiso87jisx0208": enc63, + "greek7": enc64, + "iso-ir-88": enc64, + "csISO88Greek7": enc64, + "csiso88greek7": enc64, + "ASMO_449": enc65, + "asmo_449": enc65, + "ISO_9036": enc65, + "iso_9036": enc65, + "arabic7": enc65, + "iso-ir-89": enc65, + "csISO89ASMO449": enc65, + "csiso89asmo449": enc65, + "iso-ir-90": enc66, + "csISO90": enc66, + "csiso90": enc66, + "JIS_C6229-1984-a": enc67, + "jis_c6229-1984-a": enc67, + "iso-ir-91": enc67, + "jp-ocr-a": enc67, + "csISO91JISC62291984a": enc67, + "csiso91jisc62291984a": enc67, + "JIS_C6229-1984-b": enc68, + "jis_c6229-1984-b": enc68, + "iso-ir-92": enc68, + "ISO646-JP-OCR-B": enc68, + "iso646-jp-ocr-b": enc68, + "jp-ocr-b": enc68, + "csISO92JISC62991984b": enc68, + "csiso92jisc62991984b": enc68, + "JIS_C6229-1984-b-add": enc69, + "jis_c6229-1984-b-add": enc69, + "iso-ir-93": enc69, + "jp-ocr-b-add": enc69, + "csISO93JIS62291984badd": enc69, + "csiso93jis62291984badd": enc69, + "JIS_C6229-1984-hand": enc70, + "jis_c6229-1984-hand": enc70, + "iso-ir-94": enc70, + "jp-ocr-hand": enc70, + "csISO94JIS62291984hand": enc70, + "csiso94jis62291984hand": enc70, + "JIS_C6229-1984-hand-add": enc71, + "jis_c6229-1984-hand-add": enc71, + "iso-ir-95": enc71, + "jp-ocr-hand-add": enc71, + "csISO95JIS62291984handadd": enc71, + "csiso95jis62291984handadd": enc71, + "JIS_C6229-1984-kana": enc72, + "jis_c6229-1984-kana": enc72, + "iso-ir-96": enc72, + "csISO96JISC62291984kana": enc72, + "csiso96jisc62291984kana": enc72, + "ISO_2033-1983": enc73, + "iso_2033-1983": enc73, + "iso-ir-98": enc73, + "e13b": enc73, + "csISO2033": enc73, + "csiso2033": enc73, + "ANSI_X3.110-1983": enc74, + "ansi_x3.110-1983": enc74, + "iso-ir-99": enc74, + "CSA_T500-1983": enc74, + "csa_t500-1983": enc74, + "NAPLPS": enc74, + "naplps": enc74, + "csISO99NAPLPS": enc74, + "csiso99naplps": enc74, + "T.61-7bit": enc75, + "t.61-7bit": enc75, + "iso-ir-102": enc75, + "csISO102T617bit": enc75, + "csiso102t617bit": enc75, + "T.61-8bit": enc76, + "t.61-8bit": enc76, + "T.61": enc76, + "t.61": enc76, + "iso-ir-103": enc76, + "csISO103T618bit": enc76, + "csiso103t618bit": enc76, + "ECMA-cyrillic": enc77, + "ecma-cyrillic": enc77, + "iso-ir-111": enc77, + "KOI8-E": enc77, + "koi8-e": enc77, + "csISO111ECMACyrillic": enc77, + "csiso111ecmacyrillic": enc77, + "CSA_Z243.4-1985-1": enc78, + "csa_z243.4-1985-1": enc78, + "iso-ir-121": enc78, + "ISO646-CA": enc78, + "iso646-ca": enc78, + "csa7-1": enc78, + "csa71": enc78, + "ca": enc78, + "csISO121Canadian1": enc78, + "csiso121canadian1": enc78, + "CSA_Z243.4-1985-2": enc79, + "csa_z243.4-1985-2": enc79, + "iso-ir-122": enc79, + "ISO646-CA2": enc79, + "iso646-ca2": enc79, + "csa7-2": enc79, + "csa72": enc79, + "csISO122Canadian2": enc79, + "csiso122canadian2": enc79, + "CSA_Z243.4-1985-gr": enc80, + "csa_z243.4-1985-gr": enc80, + "iso-ir-123": enc80, + "csISO123CSAZ24341985gr": enc80, + "csiso123csaz24341985gr": enc80, + "ISO_8859-6-E": enc81, + "iso_8859-6-e": enc81, + "csISO88596E": enc81, + "csiso88596e": enc81, + "ISO-8859-6-E": enc81, + "iso-8859-6-e": enc81, + "ISO_8859-6-I": enc82, + "iso_8859-6-i": enc82, + "csISO88596I": enc82, + "csiso88596i": enc82, + "ISO-8859-6-I": enc82, + "iso-8859-6-i": enc82, + "T.101-G2": enc83, + "t.101-g2": enc83, + "iso-ir-128": enc83, + "csISO128T101G2": enc83, + "csiso128t101g2": enc83, + "ISO_8859-8-E": enc84, + "iso_8859-8-e": enc84, + "csISO88598E": enc84, + "csiso88598e": enc84, + "ISO-8859-8-E": enc84, + "iso-8859-8-e": enc84, + "ISO_8859-8-I": enc85, + "iso_8859-8-i": enc85, + "csISO88598I": enc85, + "csiso88598i": enc85, + "ISO-8859-8-I": enc85, + "iso-8859-8-i": enc85, + "CSN_369103": enc86, + "csn_369103": enc86, + "iso-ir-139": enc86, + "csISO139CSN369103": enc86, + "csiso139csn369103": enc86, + "JUS_I.B1.002": enc87, + "jus_i.b1.002": enc87, + "iso-ir-141": enc87, + "ISO646-YU": enc87, + "iso646-yu": enc87, + "js": enc87, + "yu": enc87, + "csISO141JUSIB1002": enc87, + "csiso141jusib1002": enc87, + "IEC_P27-1": enc88, + "iec_p27-1": enc88, + "iso-ir-143": enc88, + "csISO143IECP271": enc88, + "csiso143iecp271": enc88, + "JUS_I.B1.003-serb": enc89, + "jus_i.b1.003-serb": enc89, + "iso-ir-146": enc89, + "serbian": enc89, + "csISO146Serbian": enc89, + "csiso146serbian": enc89, + "JUS_I.B1.003-mac": enc90, + "jus_i.b1.003-mac": enc90, + "macedonian": enc90, + "iso-ir-147": enc90, + "csISO147Macedonian": enc90, + "csiso147macedonian": enc90, + "greek-ccitt": enc91, + "iso-ir-150": enc91, + "csISO150": enc91, + "csiso150": enc91, + "csISO150GreekCCITT": enc91, + "csiso150greekccitt": enc91, + "NC_NC00-10:81": enc92, + "nc_nc00-10:81": enc92, + "cuba": enc92, + "iso-ir-151": enc92, + "ISO646-CU": enc92, + "iso646-cu": enc92, + "csISO151Cuba": enc92, + "csiso151cuba": enc92, + "ISO_6937-2-25": enc93, + "iso_6937-2-25": enc93, + "iso-ir-152": enc93, + "csISO6937Add": enc93, + "csiso6937add": enc93, + "GOST_19768-74": enc94, + "gost_19768-74": enc94, + "ST_SEV_358-88": enc94, + "st_sev_358-88": enc94, + "iso-ir-153": enc94, + "csISO153GOST1976874": enc94, + "csiso153gost1976874": enc94, + "ISO_8859-supp": enc95, + "iso_8859-supp": enc95, + "iso-ir-154": enc95, + "latin1-2-5": enc95, + "csISO8859Supp": enc95, + "csiso8859supp": enc95, + "ISO_10367-box": enc96, + "iso_10367-box": enc96, + "iso-ir-155": enc96, + "csISO10367Box": enc96, + "csiso10367box": enc96, + "latin-lap": enc97, + "lap": enc97, + "iso-ir-158": enc97, + "csISO158Lap": enc97, + "csiso158lap": enc97, + "JIS_X0212-1990": enc98, + "jis_x0212-1990": enc98, + "x0212": enc98, + "iso-ir-159": enc98, + "csISO159JISX02121990": enc98, + "csiso159jisx02121990": enc98, + "DS_2089": enc99, + "ds_2089": enc99, + "DS2089": enc99, + "ds2089": enc99, + "ISO646-DK": enc99, + "iso646-dk": enc99, + "dk": enc99, + "csISO646Danish": enc99, + "csiso646danish": enc99, + "us-dk": enc100, + "csUSDK": enc100, + "csusdk": enc100, + "dk-us": enc101, + "csDKUS": enc101, + "csdkus": enc101, + "KSC5636": enc102, + "ksc5636": enc102, + "ISO646-KR": enc102, + "iso646-kr": enc102, + "csKSC5636": enc102, + "csksc5636": enc102, + "UNICODE-1-1-UTF-7": enc103, + "unicode-1-1-utf-7": enc103, + "csUnicode11UTF7": enc103, + "csunicode11utf7": enc103, + "ISO-2022-CN": enc104, + "iso-2022-cn": enc104, + "csISO2022CN": enc104, + "csiso2022cn": enc104, + "ISO-2022-CN-EXT": enc105, + "iso-2022-cn-ext": enc105, + "csISO2022CNEXT": enc105, + "csiso2022cnext": enc105, + "UTF-8": enc106, + "utf-8": enc106, + "csUTF8": enc106, + "csutf8": enc106, + "ISO-8859-13": enc109, + "iso-8859-13": enc109, + "csISO885913": enc109, + "csiso885913": enc109, + "ISO-8859-14": enc110, + "iso-8859-14": enc110, + "iso-ir-199": enc110, + "ISO_8859-14:1998": enc110, + "iso_8859-14:1998": enc110, + "ISO_8859-14": enc110, + "iso_8859-14": enc110, + "latin8": enc110, + "iso-celtic": enc110, + "l8": enc110, + "csISO885914": enc110, + "csiso885914": enc110, + "ISO-8859-15": enc111, + "iso-8859-15": enc111, + "ISO_8859-15": enc111, + "iso_8859-15": enc111, + "Latin-9": enc111, + "latin-9": enc111, + "csISO885915": enc111, + "csiso885915": enc111, + "ISO-8859-16": enc112, + "iso-8859-16": enc112, + "iso-ir-226": enc112, + "ISO_8859-16:2001": enc112, + "iso_8859-16:2001": enc112, + "ISO_8859-16": enc112, + "iso_8859-16": enc112, + "latin10": enc112, + "l10": enc112, + "csISO885916": enc112, + "csiso885916": enc112, + "GBK": enc113, + "gbk": enc113, + "CP936": enc113, + "cp936": enc113, + "MS936": enc113, + "ms936": enc113, + "windows-936": enc113, + "csGBK": enc113, + "csgbk": enc113, + "GB18030": enc114, + "gb18030": enc114, + "csGB18030": enc114, + "csgb18030": enc114, + "OSD_EBCDIC_DF04_15": enc115, + "osd_ebcdic_df04_15": enc115, + "csOSDEBCDICDF0415": enc115, + "csosdebcdicdf0415": enc115, + "OSD_EBCDIC_DF03_IRV": enc116, + "osd_ebcdic_df03_irv": enc116, + "csOSDEBCDICDF03IRV": enc116, + "csosdebcdicdf03irv": enc116, + "OSD_EBCDIC_DF04_1": enc117, + "osd_ebcdic_df04_1": enc117, + "csOSDEBCDICDF041": enc117, + "csosdebcdicdf041": enc117, + "ISO-11548-1": enc118, + "iso-11548-1": enc118, + "ISO_11548-1": enc118, + "iso_11548-1": enc118, + "ISO_TR_11548-1": enc118, + "iso_tr_11548-1": enc118, + "csISO115481": enc118, + "csiso115481": enc118, + "KZ-1048": enc119, + "kz-1048": enc119, + "STRK1048-2002": enc119, + "strk1048-2002": enc119, + "RK1048": enc119, + "rk1048": enc119, + "csKZ1048": enc119, + "cskz1048": enc119, + "ISO-10646-UCS-2": enc1000, + "iso-10646-ucs-2": enc1000, + "csUnicode": enc1000, + "csunicode": enc1000, + "ISO-10646-UCS-4": enc1001, + "iso-10646-ucs-4": enc1001, + "csUCS4": enc1001, + "csucs4": enc1001, + "ISO-10646-UCS-Basic": enc1002, + "iso-10646-ucs-basic": enc1002, + "csUnicodeASCII": enc1002, + "csunicodeascii": enc1002, + "ISO-10646-Unicode-Latin1": enc1003, + "iso-10646-unicode-latin1": enc1003, + "csUnicodeLatin1": enc1003, + "csunicodelatin1": enc1003, + "ISO-10646": enc1003, + "iso-10646": enc1003, + "ISO-10646-J-1": enc1004, + "iso-10646-j-1": enc1004, + "csUnicodeJapanese": enc1004, + "csunicodejapanese": enc1004, + "ISO-Unicode-IBM-1261": enc1005, + "iso-unicode-ibm-1261": enc1005, + "csUnicodeIBM1261": enc1005, + "csunicodeibm1261": enc1005, + "ISO-Unicode-IBM-1268": enc1006, + "iso-unicode-ibm-1268": enc1006, + "csUnicodeIBM1268": enc1006, + "csunicodeibm1268": enc1006, + "ISO-Unicode-IBM-1276": enc1007, + "iso-unicode-ibm-1276": enc1007, + "csUnicodeIBM1276": enc1007, + "csunicodeibm1276": enc1007, + "ISO-Unicode-IBM-1264": enc1008, + "iso-unicode-ibm-1264": enc1008, + "csUnicodeIBM1264": enc1008, + "csunicodeibm1264": enc1008, + "ISO-Unicode-IBM-1265": enc1009, + "iso-unicode-ibm-1265": enc1009, + "csUnicodeIBM1265": enc1009, + "csunicodeibm1265": enc1009, + "UNICODE-1-1": enc1010, + "unicode-1-1": enc1010, + "csUnicode11": enc1010, + "csunicode11": enc1010, + "SCSU": enc1011, + "scsu": enc1011, + "csSCSU": enc1011, + "csscsu": enc1011, + "UTF-7": enc1012, + "utf-7": enc1012, + "csUTF7": enc1012, + "csutf7": enc1012, + "UTF-16BE": enc1013, + "utf-16be": enc1013, + "csUTF16BE": enc1013, + "csutf16be": enc1013, + "UTF-16LE": enc1014, + "utf-16le": enc1014, + "csUTF16LE": enc1014, + "csutf16le": enc1014, + "UTF-16": enc1015, + "utf-16": enc1015, + "csUTF16": enc1015, + "csutf16": enc1015, + "CESU-8": enc1016, + "cesu-8": enc1016, + "csCESU8": enc1016, + "cscesu8": enc1016, + "csCESU-8": enc1016, + "cscesu-8": enc1016, + "UTF-32": enc1017, + "utf-32": enc1017, + "csUTF32": enc1017, + "csutf32": enc1017, + "UTF-32BE": enc1018, + "utf-32be": enc1018, + "csUTF32BE": enc1018, + "csutf32be": enc1018, + "UTF-32LE": enc1019, + "utf-32le": enc1019, + "csUTF32LE": enc1019, + "csutf32le": enc1019, + "BOCU-1": enc1020, + "bocu-1": enc1020, + "csBOCU1": enc1020, + "csbocu1": enc1020, + "csBOCU-1": enc1020, + "csbocu-1": enc1020, + "UTF-7-IMAP": enc1021, + "utf-7-imap": enc1021, + "csUTF7IMAP": enc1021, + "csutf7imap": enc1021, + "ISO-8859-1-Windows-3.0-Latin-1": enc2000, + "iso-8859-1-windows-3.0-latin-1": enc2000, + "csWindows30Latin1": enc2000, + "cswindows30latin1": enc2000, + "ISO-8859-1-Windows-3.1-Latin-1": enc2001, + "iso-8859-1-windows-3.1-latin-1": enc2001, + "csWindows31Latin1": enc2001, + "cswindows31latin1": enc2001, + "ISO-8859-2-Windows-Latin-2": enc2002, + "iso-8859-2-windows-latin-2": enc2002, + "csWindows31Latin2": enc2002, + "cswindows31latin2": enc2002, + "ISO-8859-9-Windows-Latin-5": enc2003, + "iso-8859-9-windows-latin-5": enc2003, + "csWindows31Latin5": enc2003, + "cswindows31latin5": enc2003, + "hp-roman8": enc2004, + "roman8": enc2004, + "r8": enc2004, + "csHPRoman8": enc2004, + "cshproman8": enc2004, + "Adobe-Standard-Encoding": enc2005, + "adobe-standard-encoding": enc2005, + "csAdobeStandardEncoding": enc2005, + "csadobestandardencoding": enc2005, + "Ventura-US": enc2006, + "ventura-us": enc2006, + "csVenturaUS": enc2006, + "csventuraus": enc2006, + "Ventura-International": enc2007, + "ventura-international": enc2007, + "csVenturaInternational": enc2007, + "csventurainternational": enc2007, + "DEC-MCS": enc2008, + "dec-mcs": enc2008, + "dec": enc2008, + "csDECMCS": enc2008, + "csdecmcs": enc2008, + "IBM850": enc2009, + "ibm850": enc2009, + "cp850": enc2009, + "850": enc2009, + "csPC850Multilingual": enc2009, + "cspc850multilingual": enc2009, + "PC8-Danish-Norwegian": enc2012, + "pc8-danish-norwegian": enc2012, + "csPC8DanishNorwegian": enc2012, + "cspc8danishnorwegian": enc2012, + "IBM862": enc2013, + "ibm862": enc2013, + "cp862": enc2013, + "862": enc2013, + "csPC862LatinHebrew": enc2013, + "cspc862latinhebrew": enc2013, + "PC8-Turkish": enc2014, + "pc8-turkish": enc2014, + "csPC8Turkish": enc2014, + "cspc8turkish": enc2014, + "IBM-Symbols": enc2015, + "ibm-symbols": enc2015, + "csIBMSymbols": enc2015, + "csibmsymbols": enc2015, + "IBM-Thai": enc2016, + "ibm-thai": enc2016, + "csIBMThai": enc2016, + "csibmthai": enc2016, + "HP-Legal": enc2017, + "hp-legal": enc2017, + "csHPLegal": enc2017, + "cshplegal": enc2017, + "HP-Pi-font": enc2018, + "hp-pi-font": enc2018, + "csHPPiFont": enc2018, + "cshppifont": enc2018, + "HP-Math8": enc2019, + "hp-math8": enc2019, + "csHPMath8": enc2019, + "cshpmath8": enc2019, + "Adobe-Symbol-Encoding": enc2020, + "adobe-symbol-encoding": enc2020, + "csHPPSMath": enc2020, + "cshppsmath": enc2020, + "HP-DeskTop": enc2021, + "hp-desktop": enc2021, + "csHPDesktop": enc2021, + "cshpdesktop": enc2021, + "Ventura-Math": enc2022, + "ventura-math": enc2022, + "csVenturaMath": enc2022, + "csventuramath": enc2022, + "Microsoft-Publishing": enc2023, + "microsoft-publishing": enc2023, + "csMicrosoftPublishing": enc2023, + "csmicrosoftpublishing": enc2023, + "Windows-31J": enc2024, + "windows-31j": enc2024, + "csWindows31J": enc2024, + "cswindows31j": enc2024, + "GB2312": enc2025, + "gb2312": enc2025, + "csGB2312": enc2025, + "csgb2312": enc2025, + "Big5": enc2026, + "big5": enc2026, + "csBig5": enc2026, + "csbig5": enc2026, + "macintosh": enc2027, + "mac": enc2027, + "csMacintosh": enc2027, + "csmacintosh": enc2027, + "IBM037": enc2028, + "ibm037": enc2028, + "cp037": enc2028, + "ebcdic-cp-us": enc2028, + "ebcdic-cp-ca": enc2028, + "ebcdic-cp-wt": enc2028, + "ebcdic-cp-nl": enc2028, + "csIBM037": enc2028, + "csibm037": enc2028, + "IBM038": enc2029, + "ibm038": enc2029, + "EBCDIC-INT": enc2029, + "ebcdic-int": enc2029, + "cp038": enc2029, + "csIBM038": enc2029, + "csibm038": enc2029, + "IBM273": enc2030, + "ibm273": enc2030, + "CP273": enc2030, + "cp273": enc2030, + "csIBM273": enc2030, + "csibm273": enc2030, + "IBM274": enc2031, + "ibm274": enc2031, + "EBCDIC-BE": enc2031, + "ebcdic-be": enc2031, + "CP274": enc2031, + "cp274": enc2031, + "csIBM274": enc2031, + "csibm274": enc2031, + "IBM275": enc2032, + "ibm275": enc2032, + "EBCDIC-BR": enc2032, + "ebcdic-br": enc2032, + "cp275": enc2032, + "csIBM275": enc2032, + "csibm275": enc2032, + "IBM277": enc2033, + "ibm277": enc2033, + "EBCDIC-CP-DK": enc2033, + "ebcdic-cp-dk": enc2033, + "EBCDIC-CP-NO": enc2033, + "ebcdic-cp-no": enc2033, + "csIBM277": enc2033, + "csibm277": enc2033, + "IBM278": enc2034, + "ibm278": enc2034, + "CP278": enc2034, + "cp278": enc2034, + "ebcdic-cp-fi": enc2034, + "ebcdic-cp-se": enc2034, + "csIBM278": enc2034, + "csibm278": enc2034, + "IBM280": enc2035, + "ibm280": enc2035, + "CP280": enc2035, + "cp280": enc2035, + "ebcdic-cp-it": enc2035, + "csIBM280": enc2035, + "csibm280": enc2035, + "IBM281": enc2036, + "ibm281": enc2036, + "EBCDIC-JP-E": enc2036, + "ebcdic-jp-e": enc2036, + "cp281": enc2036, + "csIBM281": enc2036, + "csibm281": enc2036, + "IBM284": enc2037, + "ibm284": enc2037, + "CP284": enc2037, + "cp284": enc2037, + "ebcdic-cp-es": enc2037, + "csIBM284": enc2037, + "csibm284": enc2037, + "IBM285": enc2038, + "ibm285": enc2038, + "CP285": enc2038, + "cp285": enc2038, + "ebcdic-cp-gb": enc2038, + "csIBM285": enc2038, + "csibm285": enc2038, + "IBM290": enc2039, + "ibm290": enc2039, + "cp290": enc2039, + "EBCDIC-JP-kana": enc2039, + "ebcdic-jp-kana": enc2039, + "csIBM290": enc2039, + "csibm290": enc2039, + "IBM297": enc2040, + "ibm297": enc2040, + "cp297": enc2040, + "ebcdic-cp-fr": enc2040, + "csIBM297": enc2040, + "csibm297": enc2040, + "IBM420": enc2041, + "ibm420": enc2041, + "cp420": enc2041, + "ebcdic-cp-ar1": enc2041, + "csIBM420": enc2041, + "csibm420": enc2041, + "IBM423": enc2042, + "ibm423": enc2042, + "cp423": enc2042, + "ebcdic-cp-gr": enc2042, + "csIBM423": enc2042, + "csibm423": enc2042, + "IBM424": enc2043, + "ibm424": enc2043, + "cp424": enc2043, + "ebcdic-cp-he": enc2043, + "csIBM424": enc2043, + "csibm424": enc2043, + "IBM437": enc2011, + "ibm437": enc2011, + "cp437": enc2011, + "437": enc2011, + "csPC8CodePage437": enc2011, + "cspc8codepage437": enc2011, + "IBM500": enc2044, + "ibm500": enc2044, + "CP500": enc2044, + "cp500": enc2044, + "ebcdic-cp-be": enc2044, + "ebcdic-cp-ch": enc2044, + "csIBM500": enc2044, + "csibm500": enc2044, + "IBM851": enc2045, + "ibm851": enc2045, + "cp851": enc2045, + "851": enc2045, + "csIBM851": enc2045, + "csibm851": enc2045, + "IBM852": enc2010, + "ibm852": enc2010, + "cp852": enc2010, + "852": enc2010, + "csPCp852": enc2010, + "cspcp852": enc2010, + "IBM855": enc2046, + "ibm855": enc2046, + "cp855": enc2046, + "855": enc2046, + "csIBM855": enc2046, + "csibm855": enc2046, + "IBM857": enc2047, + "ibm857": enc2047, + "cp857": enc2047, + "857": enc2047, + "csIBM857": enc2047, + "csibm857": enc2047, + "IBM860": enc2048, + "ibm860": enc2048, + "cp860": enc2048, + "860": enc2048, + "csIBM860": enc2048, + "csibm860": enc2048, + "IBM861": enc2049, + "ibm861": enc2049, + "cp861": enc2049, + "861": enc2049, + "cp-is": enc2049, + "csIBM861": enc2049, + "csibm861": enc2049, + "IBM863": enc2050, + "ibm863": enc2050, + "cp863": enc2050, + "863": enc2050, + "csIBM863": enc2050, + "csibm863": enc2050, + "IBM864": enc2051, + "ibm864": enc2051, + "cp864": enc2051, + "csIBM864": enc2051, + "csibm864": enc2051, + "IBM865": enc2052, + "ibm865": enc2052, + "cp865": enc2052, + "865": enc2052, + "csIBM865": enc2052, + "csibm865": enc2052, + "IBM868": enc2053, + "ibm868": enc2053, + "CP868": enc2053, + "cp868": enc2053, + "cp-ar": enc2053, + "csIBM868": enc2053, + "csibm868": enc2053, + "IBM869": enc2054, + "ibm869": enc2054, + "cp869": enc2054, + "869": enc2054, + "cp-gr": enc2054, + "csIBM869": enc2054, + "csibm869": enc2054, + "IBM870": enc2055, + "ibm870": enc2055, + "CP870": enc2055, + "cp870": enc2055, + "ebcdic-cp-roece": enc2055, + "ebcdic-cp-yu": enc2055, + "csIBM870": enc2055, + "csibm870": enc2055, + "IBM871": enc2056, + "ibm871": enc2056, + "CP871": enc2056, + "cp871": enc2056, + "ebcdic-cp-is": enc2056, + "csIBM871": enc2056, + "csibm871": enc2056, + "IBM880": enc2057, + "ibm880": enc2057, + "cp880": enc2057, + "EBCDIC-Cyrillic": enc2057, + "ebcdic-cyrillic": enc2057, + "csIBM880": enc2057, + "csibm880": enc2057, + "IBM891": enc2058, + "ibm891": enc2058, + "cp891": enc2058, + "csIBM891": enc2058, + "csibm891": enc2058, + "IBM903": enc2059, + "ibm903": enc2059, + "cp903": enc2059, + "csIBM903": enc2059, + "csibm903": enc2059, + "IBM904": enc2060, + "ibm904": enc2060, + "cp904": enc2060, + "904": enc2060, + "csIBBM904": enc2060, + "csibbm904": enc2060, + "IBM905": enc2061, + "ibm905": enc2061, + "CP905": enc2061, + "cp905": enc2061, + "ebcdic-cp-tr": enc2061, + "csIBM905": enc2061, + "csibm905": enc2061, + "IBM918": enc2062, + "ibm918": enc2062, + "CP918": enc2062, + "cp918": enc2062, + "ebcdic-cp-ar2": enc2062, + "csIBM918": enc2062, + "csibm918": enc2062, + "IBM1026": enc2063, + "ibm1026": enc2063, + "CP1026": enc2063, + "cp1026": enc2063, + "csIBM1026": enc2063, + "csibm1026": enc2063, + "EBCDIC-AT-DE": enc2064, + "ebcdic-at-de": enc2064, + "csIBMEBCDICATDE": enc2064, + "csibmebcdicatde": enc2064, + "EBCDIC-AT-DE-A": enc2065, + "ebcdic-at-de-a": enc2065, + "csEBCDICATDEA": enc2065, + "csebcdicatdea": enc2065, + "EBCDIC-CA-FR": enc2066, + "ebcdic-ca-fr": enc2066, + "csEBCDICCAFR": enc2066, + "csebcdiccafr": enc2066, + "EBCDIC-DK-NO": enc2067, + "ebcdic-dk-no": enc2067, + "csEBCDICDKNO": enc2067, + "csebcdicdkno": enc2067, + "EBCDIC-DK-NO-A": enc2068, + "ebcdic-dk-no-a": enc2068, + "csEBCDICDKNOA": enc2068, + "csebcdicdknoa": enc2068, + "EBCDIC-FI-SE": enc2069, + "ebcdic-fi-se": enc2069, + "csEBCDICFISE": enc2069, + "csebcdicfise": enc2069, + "EBCDIC-FI-SE-A": enc2070, + "ebcdic-fi-se-a": enc2070, + "csEBCDICFISEA": enc2070, + "csebcdicfisea": enc2070, + "EBCDIC-FR": enc2071, + "ebcdic-fr": enc2071, + "csEBCDICFR": enc2071, + "csebcdicfr": enc2071, + "EBCDIC-IT": enc2072, + "ebcdic-it": enc2072, + "csEBCDICIT": enc2072, + "csebcdicit": enc2072, + "EBCDIC-PT": enc2073, + "ebcdic-pt": enc2073, + "csEBCDICPT": enc2073, + "csebcdicpt": enc2073, + "EBCDIC-ES": enc2074, + "ebcdic-es": enc2074, + "csEBCDICES": enc2074, + "csebcdices": enc2074, + "EBCDIC-ES-A": enc2075, + "ebcdic-es-a": enc2075, + "csEBCDICESA": enc2075, + "csebcdicesa": enc2075, + "EBCDIC-ES-S": enc2076, + "ebcdic-es-s": enc2076, + "csEBCDICESS": enc2076, + "csebcdicess": enc2076, + "EBCDIC-UK": enc2077, + "ebcdic-uk": enc2077, + "csEBCDICUK": enc2077, + "csebcdicuk": enc2077, + "EBCDIC-US": enc2078, + "ebcdic-us": enc2078, + "csEBCDICUS": enc2078, + "csebcdicus": enc2078, + "UNKNOWN-8BIT": enc2079, + "unknown-8bit": enc2079, + "csUnknown8BiT": enc2079, + "csunknown8bit": enc2079, + "MNEMONIC": enc2080, + "mnemonic": enc2080, + "csMnemonic": enc2080, + "csmnemonic": enc2080, + "MNEM": enc2081, + "mnem": enc2081, + "csMnem": enc2081, + "csmnem": enc2081, + "VISCII": enc2082, + "viscii": enc2082, + "csVISCII": enc2082, + "csviscii": enc2082, + "VIQR": enc2083, + "viqr": enc2083, + "csVIQR": enc2083, + "csviqr": enc2083, + "KOI8-R": enc2084, + "koi8-r": enc2084, + "csKOI8R": enc2084, + "cskoi8r": enc2084, + "HZ-GB-2312": enc2085, + "hz-gb-2312": enc2085, + "IBM866": enc2086, + "ibm866": enc2086, + "cp866": enc2086, + "866": enc2086, + "csIBM866": enc2086, + "csibm866": enc2086, + "IBM775": enc2087, + "ibm775": enc2087, + "cp775": enc2087, + "csPC775Baltic": enc2087, + "cspc775baltic": enc2087, + "KOI8-U": enc2088, + "koi8-u": enc2088, + "csKOI8U": enc2088, + "cskoi8u": enc2088, + "IBM00858": enc2089, + "ibm00858": enc2089, + "CCSID00858": enc2089, + "ccsid00858": enc2089, + "CP00858": enc2089, + "cp00858": enc2089, + "PC-Multilingual-850+euro": enc2089, + "pc-multilingual-850+euro": enc2089, + "csIBM00858": enc2089, + "csibm00858": enc2089, + "IBM00924": enc2090, + "ibm00924": enc2090, + "CCSID00924": enc2090, + "ccsid00924": enc2090, + "CP00924": enc2090, + "cp00924": enc2090, + "ebcdic-Latin9--euro": enc2090, + "ebcdic-latin9--euro": enc2090, + "csIBM00924": enc2090, + "csibm00924": enc2090, + "IBM01140": enc2091, + "ibm01140": enc2091, + "CCSID01140": enc2091, + "ccsid01140": enc2091, + "CP01140": enc2091, + "cp01140": enc2091, + "ebcdic-us-37+euro": enc2091, + "csIBM01140": enc2091, + "csibm01140": enc2091, + "IBM01141": enc2092, + "ibm01141": enc2092, + "CCSID01141": enc2092, + "ccsid01141": enc2092, + "CP01141": enc2092, + "cp01141": enc2092, + "ebcdic-de-273+euro": enc2092, + "csIBM01141": enc2092, + "csibm01141": enc2092, + "IBM01142": enc2093, + "ibm01142": enc2093, + "CCSID01142": enc2093, + "ccsid01142": enc2093, + "CP01142": enc2093, + "cp01142": enc2093, + "ebcdic-dk-277+euro": enc2093, + "ebcdic-no-277+euro": enc2093, + "csIBM01142": enc2093, + "csibm01142": enc2093, + "IBM01143": enc2094, + "ibm01143": enc2094, + "CCSID01143": enc2094, + "ccsid01143": enc2094, + "CP01143": enc2094, + "cp01143": enc2094, + "ebcdic-fi-278+euro": enc2094, + "ebcdic-se-278+euro": enc2094, + "csIBM01143": enc2094, + "csibm01143": enc2094, + "IBM01144": enc2095, + "ibm01144": enc2095, + "CCSID01144": enc2095, + "ccsid01144": enc2095, + "CP01144": enc2095, + "cp01144": enc2095, + "ebcdic-it-280+euro": enc2095, + "csIBM01144": enc2095, + "csibm01144": enc2095, + "IBM01145": enc2096, + "ibm01145": enc2096, + "CCSID01145": enc2096, + "ccsid01145": enc2096, + "CP01145": enc2096, + "cp01145": enc2096, + "ebcdic-es-284+euro": enc2096, + "csIBM01145": enc2096, + "csibm01145": enc2096, + "IBM01146": enc2097, + "ibm01146": enc2097, + "CCSID01146": enc2097, + "ccsid01146": enc2097, + "CP01146": enc2097, + "cp01146": enc2097, + "ebcdic-gb-285+euro": enc2097, + "csIBM01146": enc2097, + "csibm01146": enc2097, + "IBM01147": enc2098, + "ibm01147": enc2098, + "CCSID01147": enc2098, + "ccsid01147": enc2098, + "CP01147": enc2098, + "cp01147": enc2098, + "ebcdic-fr-297+euro": enc2098, + "csIBM01147": enc2098, + "csibm01147": enc2098, + "IBM01148": enc2099, + "ibm01148": enc2099, + "CCSID01148": enc2099, + "ccsid01148": enc2099, + "CP01148": enc2099, + "cp01148": enc2099, + "ebcdic-international-500+euro": enc2099, + "csIBM01148": enc2099, + "csibm01148": enc2099, + "IBM01149": enc2100, + "ibm01149": enc2100, + "CCSID01149": enc2100, + "ccsid01149": enc2100, + "CP01149": enc2100, + "cp01149": enc2100, + "ebcdic-is-871+euro": enc2100, + "csIBM01149": enc2100, + "csibm01149": enc2100, + "Big5-HKSCS": enc2101, + "big5-hkscs": enc2101, + "csBig5HKSCS": enc2101, + "csbig5hkscs": enc2101, + "IBM1047": enc2102, + "ibm1047": enc2102, + "IBM-1047": enc2102, + "ibm-1047": enc2102, + "csIBM1047": enc2102, + "csibm1047": enc2102, + "PTCP154": enc2103, + "ptcp154": enc2103, + "csPTCP154": enc2103, + "csptcp154": enc2103, + "PT154": enc2103, + "pt154": enc2103, + "CP154": enc2103, + "cp154": enc2103, + "Cyrillic-Asian": enc2103, + "cyrillic-asian": enc2103, + "Amiga-1251": enc2104, + "amiga-1251": enc2104, + "Ami1251": enc2104, + "ami1251": enc2104, + "Amiga1251": enc2104, + "amiga1251": enc2104, + "Ami-1251": enc2104, + "ami-1251": enc2104, + "csAmiga1251\n(Aliases": enc2104, + "csamiga1251\n(aliases": enc2104, + "KOI7-switched": enc2105, + "koi7-switched": enc2105, + "csKOI7switched": enc2105, + "cskoi7switched": enc2105, + "BRF": enc2106, + "brf": enc2106, + "csBRF": enc2106, + "csbrf": enc2106, + "TSCII": enc2107, + "tscii": enc2107, + "csTSCII": enc2107, + "cstscii": enc2107, + "CP51932": enc2108, + "cp51932": enc2108, + "csCP51932": enc2108, + "cscp51932": enc2108, + "windows-874": enc2109, + "cswindows874": enc2109, + "windows-1250": enc2250, + "cswindows1250": enc2250, + "windows-1251": enc2251, + "cswindows1251": enc2251, + "windows-1252": enc2252, + "cswindows1252": enc2252, + "windows-1253": enc2253, + "cswindows1253": enc2253, + "windows-1254": enc2254, + "cswindows1254": enc2254, + "windows-1255": enc2255, + "cswindows1255": enc2255, + "windows-1256": enc2256, + "cswindows1256": enc2256, + "windows-1257": enc2257, + "cswindows1257": enc2257, + "windows-1258": enc2258, + "cswindows1258": enc2258, + "TIS-620": enc2259, + "tis-620": enc2259, + "csTIS620": enc2259, + "cstis620": enc2259, + "ISO-8859-11": enc2259, + "iso-8859-11": enc2259, + "CP50220": enc2260, + "cp50220": enc2260, + "csCP50220": enc2260, + "cscp50220": enc2260, +} + +// Total table size 14454 bytes (14KiB); checksum: 9095144D diff --git a/vendor/golang.org/x/text/encoding/japanese/all.go b/vendor/golang.org/x/text/encoding/japanese/all.go new file mode 100644 index 000000000..6cfa8de45 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/japanese/all.go @@ -0,0 +1,12 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "golang.org/x/text/encoding" +) + +// All is a list of all defined encodings in this package. +var All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS} diff --git a/vendor/golang.org/x/text/encoding/japanese/eucjp.go b/vendor/golang.org/x/text/encoding/japanese/eucjp.go new file mode 100644 index 000000000..79313fa58 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/japanese/eucjp.go @@ -0,0 +1,225 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// EUCJP is the EUC-JP encoding. +var EUCJP encoding.Encoding = &eucJP + +var eucJP = internal.Encoding{ + &internal.SimpleEncoding{eucJPDecoder{}, eucJPEncoder{}}, + "EUC-JP", + identifier.EUCPkdFmtJapanese, +} + +type eucJPDecoder struct{ transform.NopResetter } + +// See https://encoding.spec.whatwg.org/#euc-jp-decoder. +func (eucJPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case c0 == 0x8e: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break + } + c1 := src[nSrc+1] + switch { + case c1 < 0xa1: + r, size = utf8.RuneError, 1 + case c1 > 0xdf: + r, size = utf8.RuneError, 2 + if c1 == 0xff { + size = 1 + } + default: + r, size = rune(c1)+(0xff61-0xa1), 2 + } + case c0 == 0x8f: + if nSrc+2 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + if p := nSrc + 1; p < len(src) && 0xa1 <= src[p] && src[p] < 0xfe { + size = 2 + } + break + } + c1 := src[nSrc+1] + if c1 < 0xa1 || 0xfe < c1 { + r, size = utf8.RuneError, 1 + break + } + c2 := src[nSrc+2] + if c2 < 0xa1 || 0xfe < c2 { + r, size = utf8.RuneError, 2 + break + } + r, size = utf8.RuneError, 3 + if i := int(c1-0xa1)*94 + int(c2-0xa1); i < len(jis0212Decode) { + r = rune(jis0212Decode[i]) + if r == 0 { + r = utf8.RuneError + } + } + + case 0xa1 <= c0 && c0 <= 0xfe: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break + } + c1 := src[nSrc+1] + if c1 < 0xa1 || 0xfe < c1 { + r, size = utf8.RuneError, 1 + break + } + r, size = utf8.RuneError, 2 + if i := int(c0-0xa1)*94 + int(c1-0xa1); i < len(jis0208Decode) { + r = rune(jis0208Decode[i]) + if r == 0 { + r = utf8.RuneError + } + } + + default: + r, size = utf8.RuneError, 1 + } + + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type eucJPEncoder struct{ transform.NopResetter } + +func (eucJPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r != 0 { + goto write2or3 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r != 0 { + goto write2or3 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r != 0 { + goto write2or3 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r != 0 { + goto write2or3 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r != 0 { + goto write2or3 + } + case encode5Low <= r && r < encode5High: + if 0xff61 <= r && r < 0xffa0 { + goto write2 + } + if r = rune(encode5[r-encode5Low]); r != 0 { + goto write2or3 + } + } + err = internal.ErrASCIIReplacement + break + } + + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + write2or3: + if r>>tableShift == jis0208 { + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + } else { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = 0x8f + nDst++ + } + dst[nDst+0] = 0xa1 + uint8(r>>codeShift)&codeMask + dst[nDst+1] = 0xa1 + uint8(r)&codeMask + nDst += 2 + continue + + write2: + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = 0x8e + dst[nDst+1] = uint8(r - (0xff61 - 0xa1)) + nDst += 2 + continue + } + return nDst, nSrc, err +} + +func init() { + // Check that the hard-coded encode switch covers all tables. + if numEncodeTables != 6 { + panic("bad numEncodeTables") + } +} diff --git a/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go b/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go new file mode 100644 index 000000000..613226df5 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go @@ -0,0 +1,299 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// ISO2022JP is the ISO-2022-JP encoding. +var ISO2022JP encoding.Encoding = &iso2022JP + +var iso2022JP = internal.Encoding{ + internal.FuncEncoding{iso2022JPNewDecoder, iso2022JPNewEncoder}, + "ISO-2022-JP", + identifier.ISO2022JP, +} + +func iso2022JPNewDecoder() transform.Transformer { + return new(iso2022JPDecoder) +} + +func iso2022JPNewEncoder() transform.Transformer { + return new(iso2022JPEncoder) +} + +const ( + asciiState = iota + katakanaState + jis0208State + jis0212State +) + +const asciiEsc = 0x1b + +type iso2022JPDecoder int + +func (d *iso2022JPDecoder) Reset() { + *d = asciiState +} + +func (d *iso2022JPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + c0 := src[nSrc] + if c0 >= utf8.RuneSelf { + r, size = '\ufffd', 1 + goto write + } + + if c0 == asciiEsc { + if nSrc+2 >= len(src) { + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + // TODO: is it correct to only skip 1?? + r, size = '\ufffd', 1 + goto write + } + size = 3 + c1 := src[nSrc+1] + c2 := src[nSrc+2] + switch { + case c1 == '$' && (c2 == '@' || c2 == 'B'): // 0x24 {0x40, 0x42} + *d = jis0208State + continue + case c1 == '$' && c2 == '(': // 0x24 0x28 + if nSrc+3 >= len(src) { + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + r, size = '\ufffd', 1 + goto write + } + size = 4 + if src[nSrc+3] == 'D' { + *d = jis0212State + continue + } + case c1 == '(' && (c2 == 'B' || c2 == 'J'): // 0x28 {0x42, 0x4A} + *d = asciiState + continue + case c1 == '(' && c2 == 'I': // 0x28 0x49 + *d = katakanaState + continue + } + r, size = '\ufffd', 1 + goto write + } + + switch *d { + case asciiState: + r, size = rune(c0), 1 + + case katakanaState: + if c0 < 0x21 || 0x60 <= c0 { + r, size = '\ufffd', 1 + goto write + } + r, size = rune(c0)+(0xff61-0x21), 1 + + default: + if c0 == 0x0a { + *d = asciiState + r, size = rune(c0), 1 + goto write + } + if nSrc+1 >= len(src) { + if !atEOF { + return nDst, nSrc, transform.ErrShortSrc + } + r, size = '\ufffd', 1 + goto write + } + size = 2 + c1 := src[nSrc+1] + i := int(c0-0x21)*94 + int(c1-0x21) + if *d == jis0208State && i < len(jis0208Decode) { + r = rune(jis0208Decode[i]) + } else if *d == jis0212State && i < len(jis0212Decode) { + r = rune(jis0212Decode[i]) + } else { + r = '\ufffd' + goto write + } + if r == 0 { + r = '\ufffd' + } + } + + write: + if nDst+utf8.RuneLen(r) > len(dst) { + return nDst, nSrc, transform.ErrShortDst + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type iso2022JPEncoder int + +func (e *iso2022JPEncoder) Reset() { + *e = asciiState +} + +func (e *iso2022JPEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + // + // http://encoding.spec.whatwg.org/#iso-2022-jp says that "the index jis0212 + // is not used by the iso-2022-jp encoder due to lack of widespread support". + // + // TODO: do we have to special-case U+00A5 and U+203E, as per + // http://encoding.spec.whatwg.org/#iso-2022-jp + // Doing so would mean that "\u00a5" would not be preserved + // after an encode-decode round trip. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 { + goto writeJIS + } + case encode5Low <= r && r < encode5High: + if 0xff61 <= r && r < 0xffa0 { + goto writeKatakana + } + if r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 { + goto writeJIS + } + } + + // Switch back to ASCII state in case of error so that an ASCII + // replacement character can be written in the correct state. + if *e != asciiState { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + break + } + *e = asciiState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'B' + nDst += 3 + } + err = internal.ErrASCIIReplacement + break + } + + if *e != asciiState { + if nDst+4 > len(dst) { + err = transform.ErrShortDst + break + } + *e = asciiState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'B' + nDst += 3 + } else if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + writeJIS: + if *e != jis0208State { + if nDst+5 > len(dst) { + err = transform.ErrShortDst + break + } + *e = jis0208State + dst[nDst+0] = asciiEsc + dst[nDst+1] = '$' + dst[nDst+2] = 'B' + nDst += 3 + } else if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = 0x21 + uint8(r>>codeShift)&codeMask + dst[nDst+1] = 0x21 + uint8(r)&codeMask + nDst += 2 + continue + + writeKatakana: + if *e != katakanaState { + if nDst+4 > len(dst) { + err = transform.ErrShortDst + break + } + *e = katakanaState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'I' + nDst += 3 + } else if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r - (0xff61 - 0x21)) + nDst++ + continue + } + if atEOF && err == nil && *e != asciiState { + if nDst+3 > len(dst) { + err = transform.ErrShortDst + } else { + *e = asciiState + dst[nDst+0] = asciiEsc + dst[nDst+1] = '(' + dst[nDst+2] = 'B' + nDst += 3 + } + } + return nDst, nSrc, err +} diff --git a/vendor/golang.org/x/text/encoding/japanese/shiftjis.go b/vendor/golang.org/x/text/encoding/japanese/shiftjis.go new file mode 100644 index 000000000..16fd8a6e3 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/japanese/shiftjis.go @@ -0,0 +1,189 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package japanese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// ShiftJIS is the Shift JIS encoding, also known as Code Page 932 and +// Windows-31J. +var ShiftJIS encoding.Encoding = &shiftJIS + +var shiftJIS = internal.Encoding{ + &internal.SimpleEncoding{shiftJISDecoder{}, shiftJISEncoder{}}, + "Shift JIS", + identifier.ShiftJIS, +} + +type shiftJISDecoder struct{ transform.NopResetter } + +func (shiftJISDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case 0xa1 <= c0 && c0 < 0xe0: + r, size = rune(c0)+(0xff61-0xa1), 1 + + case (0x81 <= c0 && c0 < 0xa0) || (0xe0 <= c0 && c0 < 0xfd): + if c0 <= 0x9f { + c0 -= 0x70 + } else { + c0 -= 0xb0 + } + c0 = 2*c0 - 0x21 + + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = '\ufffd', 1 + goto write + } + c1 := src[nSrc+1] + switch { + case c1 < 0x40: + r, size = '\ufffd', 1 // c1 is ASCII so output on next round + goto write + case c1 < 0x7f: + c0-- + c1 -= 0x40 + case c1 == 0x7f: + r, size = '\ufffd', 1 // c1 is ASCII so output on next round + goto write + case c1 < 0x9f: + c0-- + c1 -= 0x41 + case c1 < 0xfd: + c1 -= 0x9f + default: + r, size = '\ufffd', 2 + goto write + } + r, size = '\ufffd', 2 + if i := int(c0)*94 + int(c1); i < len(jis0208Decode) { + r = rune(jis0208Decode[i]) + if r == 0 { + r = '\ufffd' + } + } + + case c0 == 0x80: + r, size = 0x80, 1 + + default: + r, size = '\ufffd', 1 + } + write: + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type shiftJISEncoder struct{ transform.NopResetter } + +func (shiftJISEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break loop + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r>>tableShift == jis0208 { + goto write2 + } + case encode5Low <= r && r < encode5High: + if 0xff61 <= r && r < 0xffa0 { + r -= 0xff61 - 0xa1 + goto write1 + } + if r = rune(encode5[r-encode5Low]); r>>tableShift == jis0208 { + goto write2 + } + } + err = internal.ErrASCIIReplacement + break + } + + write1: + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + write2: + j1 := uint8(r>>codeShift) & codeMask + j2 := uint8(r) & codeMask + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break loop + } + if j1 <= 61 { + dst[nDst+0] = 129 + j1/2 + } else { + dst[nDst+0] = 193 + j1/2 + } + if j1&1 == 0 { + dst[nDst+1] = j2 + j2/63 + 64 + } else { + dst[nDst+1] = j2 + 159 + } + nDst += 2 + continue + } + return nDst, nSrc, err +} diff --git a/vendor/golang.org/x/text/encoding/japanese/tables.go b/vendor/golang.org/x/text/encoding/japanese/tables.go new file mode 100644 index 000000000..8717b79ae --- /dev/null +++ b/vendor/golang.org/x/text/encoding/japanese/tables.go @@ -0,0 +1,26971 @@ +// generated by go run maketables.go; DO NOT EDIT + +// Package japanese provides Japanese encodings such as EUC-JP and Shift JIS. +package japanese // import "golang.org/x/text/encoding/japanese" + +// jis0208Decode is the decoding table from JIS 0208 code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-jis0208.txt +var jis0208Decode = [...]uint16{ + 0: 0x3000, + 1: 0x3001, + 2: 0x3002, + 3: 0xFF0C, + 4: 0xFF0E, + 5: 0x30FB, + 6: 0xFF1A, + 7: 0xFF1B, + 8: 0xFF1F, + 9: 0xFF01, + 10: 0x309B, + 11: 0x309C, + 12: 0x00B4, + 13: 0xFF40, + 14: 0x00A8, + 15: 0xFF3E, + 16: 0xFFE3, + 17: 0xFF3F, + 18: 0x30FD, + 19: 0x30FE, + 20: 0x309D, + 21: 0x309E, + 22: 0x3003, + 23: 0x4EDD, + 24: 0x3005, + 25: 0x3006, + 26: 0x3007, + 27: 0x30FC, + 28: 0x2015, + 29: 0x2010, + 30: 0xFF0F, + 31: 0xFF3C, + 32: 0xFF5E, + 33: 0x2225, + 34: 0xFF5C, + 35: 0x2026, + 36: 0x2025, + 37: 0x2018, + 38: 0x2019, + 39: 0x201C, + 40: 0x201D, + 41: 0xFF08, + 42: 0xFF09, + 43: 0x3014, + 44: 0x3015, + 45: 0xFF3B, + 46: 0xFF3D, + 47: 0xFF5B, + 48: 0xFF5D, + 49: 0x3008, + 50: 0x3009, + 51: 0x300A, + 52: 0x300B, + 53: 0x300C, + 54: 0x300D, + 55: 0x300E, + 56: 0x300F, + 57: 0x3010, + 58: 0x3011, + 59: 0xFF0B, + 60: 0xFF0D, + 61: 0x00B1, + 62: 0x00D7, + 63: 0x00F7, + 64: 0xFF1D, + 65: 0x2260, + 66: 0xFF1C, + 67: 0xFF1E, + 68: 0x2266, + 69: 0x2267, + 70: 0x221E, + 71: 0x2234, + 72: 0x2642, + 73: 0x2640, + 74: 0x00B0, + 75: 0x2032, + 76: 0x2033, + 77: 0x2103, + 78: 0xFFE5, + 79: 0xFF04, + 80: 0xFFE0, + 81: 0xFFE1, + 82: 0xFF05, + 83: 0xFF03, + 84: 0xFF06, + 85: 0xFF0A, + 86: 0xFF20, + 87: 0x00A7, + 88: 0x2606, + 89: 0x2605, + 90: 0x25CB, + 91: 0x25CF, + 92: 0x25CE, + 93: 0x25C7, + 94: 0x25C6, + 95: 0x25A1, + 96: 0x25A0, + 97: 0x25B3, + 98: 0x25B2, + 99: 0x25BD, + 100: 0x25BC, + 101: 0x203B, + 102: 0x3012, + 103: 0x2192, + 104: 0x2190, + 105: 0x2191, + 106: 0x2193, + 107: 0x3013, + 119: 0x2208, + 120: 0x220B, + 121: 0x2286, + 122: 0x2287, + 123: 0x2282, + 124: 0x2283, + 125: 0x222A, + 126: 0x2229, + 135: 0x2227, + 136: 0x2228, + 137: 0xFFE2, + 138: 0x21D2, + 139: 0x21D4, + 140: 0x2200, + 141: 0x2203, + 153: 0x2220, + 154: 0x22A5, + 155: 0x2312, + 156: 0x2202, + 157: 0x2207, + 158: 0x2261, + 159: 0x2252, + 160: 0x226A, + 161: 0x226B, + 162: 0x221A, + 163: 0x223D, + 164: 0x221D, + 165: 0x2235, + 166: 0x222B, + 167: 0x222C, + 175: 0x212B, + 176: 0x2030, + 177: 0x266F, + 178: 0x266D, + 179: 0x266A, + 180: 0x2020, + 181: 0x2021, + 182: 0x00B6, + 187: 0x25EF, + 203: 0xFF10, + 204: 0xFF11, + 205: 0xFF12, + 206: 0xFF13, + 207: 0xFF14, + 208: 0xFF15, + 209: 0xFF16, + 210: 0xFF17, + 211: 0xFF18, + 212: 0xFF19, + 220: 0xFF21, + 221: 0xFF22, + 222: 0xFF23, + 223: 0xFF24, + 224: 0xFF25, + 225: 0xFF26, + 226: 0xFF27, + 227: 0xFF28, + 228: 0xFF29, + 229: 0xFF2A, + 230: 0xFF2B, + 231: 0xFF2C, + 232: 0xFF2D, + 233: 0xFF2E, + 234: 0xFF2F, + 235: 0xFF30, + 236: 0xFF31, + 237: 0xFF32, + 238: 0xFF33, + 239: 0xFF34, + 240: 0xFF35, + 241: 0xFF36, + 242: 0xFF37, + 243: 0xFF38, + 244: 0xFF39, + 245: 0xFF3A, + 252: 0xFF41, + 253: 0xFF42, + 254: 0xFF43, + 255: 0xFF44, + 256: 0xFF45, + 257: 0xFF46, + 258: 0xFF47, + 259: 0xFF48, + 260: 0xFF49, + 261: 0xFF4A, + 262: 0xFF4B, + 263: 0xFF4C, + 264: 0xFF4D, + 265: 0xFF4E, + 266: 0xFF4F, + 267: 0xFF50, + 268: 0xFF51, + 269: 0xFF52, + 270: 0xFF53, + 271: 0xFF54, + 272: 0xFF55, + 273: 0xFF56, + 274: 0xFF57, + 275: 0xFF58, + 276: 0xFF59, + 277: 0xFF5A, + 282: 0x3041, + 283: 0x3042, + 284: 0x3043, + 285: 0x3044, + 286: 0x3045, + 287: 0x3046, + 288: 0x3047, + 289: 0x3048, + 290: 0x3049, + 291: 0x304A, + 292: 0x304B, + 293: 0x304C, + 294: 0x304D, + 295: 0x304E, + 296: 0x304F, + 297: 0x3050, + 298: 0x3051, + 299: 0x3052, + 300: 0x3053, + 301: 0x3054, + 302: 0x3055, + 303: 0x3056, + 304: 0x3057, + 305: 0x3058, + 306: 0x3059, + 307: 0x305A, + 308: 0x305B, + 309: 0x305C, + 310: 0x305D, + 311: 0x305E, + 312: 0x305F, + 313: 0x3060, + 314: 0x3061, + 315: 0x3062, + 316: 0x3063, + 317: 0x3064, + 318: 0x3065, + 319: 0x3066, + 320: 0x3067, + 321: 0x3068, + 322: 0x3069, + 323: 0x306A, + 324: 0x306B, + 325: 0x306C, + 326: 0x306D, + 327: 0x306E, + 328: 0x306F, + 329: 0x3070, + 330: 0x3071, + 331: 0x3072, + 332: 0x3073, + 333: 0x3074, + 334: 0x3075, + 335: 0x3076, + 336: 0x3077, + 337: 0x3078, + 338: 0x3079, + 339: 0x307A, + 340: 0x307B, + 341: 0x307C, + 342: 0x307D, + 343: 0x307E, + 344: 0x307F, + 345: 0x3080, + 346: 0x3081, + 347: 0x3082, + 348: 0x3083, + 349: 0x3084, + 350: 0x3085, + 351: 0x3086, + 352: 0x3087, + 353: 0x3088, + 354: 0x3089, + 355: 0x308A, + 356: 0x308B, + 357: 0x308C, + 358: 0x308D, + 359: 0x308E, + 360: 0x308F, + 361: 0x3090, + 362: 0x3091, + 363: 0x3092, + 364: 0x3093, + 376: 0x30A1, + 377: 0x30A2, + 378: 0x30A3, + 379: 0x30A4, + 380: 0x30A5, + 381: 0x30A6, + 382: 0x30A7, + 383: 0x30A8, + 384: 0x30A9, + 385: 0x30AA, + 386: 0x30AB, + 387: 0x30AC, + 388: 0x30AD, + 389: 0x30AE, + 390: 0x30AF, + 391: 0x30B0, + 392: 0x30B1, + 393: 0x30B2, + 394: 0x30B3, + 395: 0x30B4, + 396: 0x30B5, + 397: 0x30B6, + 398: 0x30B7, + 399: 0x30B8, + 400: 0x30B9, + 401: 0x30BA, + 402: 0x30BB, + 403: 0x30BC, + 404: 0x30BD, + 405: 0x30BE, + 406: 0x30BF, + 407: 0x30C0, + 408: 0x30C1, + 409: 0x30C2, + 410: 0x30C3, + 411: 0x30C4, + 412: 0x30C5, + 413: 0x30C6, + 414: 0x30C7, + 415: 0x30C8, + 416: 0x30C9, + 417: 0x30CA, + 418: 0x30CB, + 419: 0x30CC, + 420: 0x30CD, + 421: 0x30CE, + 422: 0x30CF, + 423: 0x30D0, + 424: 0x30D1, + 425: 0x30D2, + 426: 0x30D3, + 427: 0x30D4, + 428: 0x30D5, + 429: 0x30D6, + 430: 0x30D7, + 431: 0x30D8, + 432: 0x30D9, + 433: 0x30DA, + 434: 0x30DB, + 435: 0x30DC, + 436: 0x30DD, + 437: 0x30DE, + 438: 0x30DF, + 439: 0x30E0, + 440: 0x30E1, + 441: 0x30E2, + 442: 0x30E3, + 443: 0x30E4, + 444: 0x30E5, + 445: 0x30E6, + 446: 0x30E7, + 447: 0x30E8, + 448: 0x30E9, + 449: 0x30EA, + 450: 0x30EB, + 451: 0x30EC, + 452: 0x30ED, + 453: 0x30EE, + 454: 0x30EF, + 455: 0x30F0, + 456: 0x30F1, + 457: 0x30F2, + 458: 0x30F3, + 459: 0x30F4, + 460: 0x30F5, + 461: 0x30F6, + 470: 0x0391, + 471: 0x0392, + 472: 0x0393, + 473: 0x0394, + 474: 0x0395, + 475: 0x0396, + 476: 0x0397, + 477: 0x0398, + 478: 0x0399, + 479: 0x039A, + 480: 0x039B, + 481: 0x039C, + 482: 0x039D, + 483: 0x039E, + 484: 0x039F, + 485: 0x03A0, + 486: 0x03A1, + 487: 0x03A3, + 488: 0x03A4, + 489: 0x03A5, + 490: 0x03A6, + 491: 0x03A7, + 492: 0x03A8, + 493: 0x03A9, + 502: 0x03B1, + 503: 0x03B2, + 504: 0x03B3, + 505: 0x03B4, + 506: 0x03B5, + 507: 0x03B6, + 508: 0x03B7, + 509: 0x03B8, + 510: 0x03B9, + 511: 0x03BA, + 512: 0x03BB, + 513: 0x03BC, + 514: 0x03BD, + 515: 0x03BE, + 516: 0x03BF, + 517: 0x03C0, + 518: 0x03C1, + 519: 0x03C3, + 520: 0x03C4, + 521: 0x03C5, + 522: 0x03C6, + 523: 0x03C7, + 524: 0x03C8, + 525: 0x03C9, + 564: 0x0410, + 565: 0x0411, + 566: 0x0412, + 567: 0x0413, + 568: 0x0414, + 569: 0x0415, + 570: 0x0401, + 571: 0x0416, + 572: 0x0417, + 573: 0x0418, + 574: 0x0419, + 575: 0x041A, + 576: 0x041B, + 577: 0x041C, + 578: 0x041D, + 579: 0x041E, + 580: 0x041F, + 581: 0x0420, + 582: 0x0421, + 583: 0x0422, + 584: 0x0423, + 585: 0x0424, + 586: 0x0425, + 587: 0x0426, + 588: 0x0427, + 589: 0x0428, + 590: 0x0429, + 591: 0x042A, + 592: 0x042B, + 593: 0x042C, + 594: 0x042D, + 595: 0x042E, + 596: 0x042F, + 612: 0x0430, + 613: 0x0431, + 614: 0x0432, + 615: 0x0433, + 616: 0x0434, + 617: 0x0435, + 618: 0x0451, + 619: 0x0436, + 620: 0x0437, + 621: 0x0438, + 622: 0x0439, + 623: 0x043A, + 624: 0x043B, + 625: 0x043C, + 626: 0x043D, + 627: 0x043E, + 628: 0x043F, + 629: 0x0440, + 630: 0x0441, + 631: 0x0442, + 632: 0x0443, + 633: 0x0444, + 634: 0x0445, + 635: 0x0446, + 636: 0x0447, + 637: 0x0448, + 638: 0x0449, + 639: 0x044A, + 640: 0x044B, + 641: 0x044C, + 642: 0x044D, + 643: 0x044E, + 644: 0x044F, + 658: 0x2500, + 659: 0x2502, + 660: 0x250C, + 661: 0x2510, + 662: 0x2518, + 663: 0x2514, + 664: 0x251C, + 665: 0x252C, + 666: 0x2524, + 667: 0x2534, + 668: 0x253C, + 669: 0x2501, + 670: 0x2503, + 671: 0x250F, + 672: 0x2513, + 673: 0x251B, + 674: 0x2517, + 675: 0x2523, + 676: 0x2533, + 677: 0x252B, + 678: 0x253B, + 679: 0x254B, + 680: 0x2520, + 681: 0x252F, + 682: 0x2528, + 683: 0x2537, + 684: 0x253F, + 685: 0x251D, + 686: 0x2530, + 687: 0x2525, + 688: 0x2538, + 689: 0x2542, + 1128: 0x2460, + 1129: 0x2461, + 1130: 0x2462, + 1131: 0x2463, + 1132: 0x2464, + 1133: 0x2465, + 1134: 0x2466, + 1135: 0x2467, + 1136: 0x2468, + 1137: 0x2469, + 1138: 0x246A, + 1139: 0x246B, + 1140: 0x246C, + 1141: 0x246D, + 1142: 0x246E, + 1143: 0x246F, + 1144: 0x2470, + 1145: 0x2471, + 1146: 0x2472, + 1147: 0x2473, + 1148: 0x2160, + 1149: 0x2161, + 1150: 0x2162, + 1151: 0x2163, + 1152: 0x2164, + 1153: 0x2165, + 1154: 0x2166, + 1155: 0x2167, + 1156: 0x2168, + 1157: 0x2169, + 1159: 0x3349, + 1160: 0x3314, + 1161: 0x3322, + 1162: 0x334D, + 1163: 0x3318, + 1164: 0x3327, + 1165: 0x3303, + 1166: 0x3336, + 1167: 0x3351, + 1168: 0x3357, + 1169: 0x330D, + 1170: 0x3326, + 1171: 0x3323, + 1172: 0x332B, + 1173: 0x334A, + 1174: 0x333B, + 1175: 0x339C, + 1176: 0x339D, + 1177: 0x339E, + 1178: 0x338E, + 1179: 0x338F, + 1180: 0x33C4, + 1181: 0x33A1, + 1190: 0x337B, + 1191: 0x301D, + 1192: 0x301F, + 1193: 0x2116, + 1194: 0x33CD, + 1195: 0x2121, + 1196: 0x32A4, + 1197: 0x32A5, + 1198: 0x32A6, + 1199: 0x32A7, + 1200: 0x32A8, + 1201: 0x3231, + 1202: 0x3232, + 1203: 0x3239, + 1204: 0x337E, + 1205: 0x337D, + 1206: 0x337C, + 1207: 0x2252, + 1208: 0x2261, + 1209: 0x222B, + 1210: 0x222E, + 1211: 0x2211, + 1212: 0x221A, + 1213: 0x22A5, + 1214: 0x2220, + 1215: 0x221F, + 1216: 0x22BF, + 1217: 0x2235, + 1218: 0x2229, + 1219: 0x222A, + 1410: 0x4E9C, + 1411: 0x5516, + 1412: 0x5A03, + 1413: 0x963F, + 1414: 0x54C0, + 1415: 0x611B, + 1416: 0x6328, + 1417: 0x59F6, + 1418: 0x9022, + 1419: 0x8475, + 1420: 0x831C, + 1421: 0x7A50, + 1422: 0x60AA, + 1423: 0x63E1, + 1424: 0x6E25, + 1425: 0x65ED, + 1426: 0x8466, + 1427: 0x82A6, + 1428: 0x9BF5, + 1429: 0x6893, + 1430: 0x5727, + 1431: 0x65A1, + 1432: 0x6271, + 1433: 0x5B9B, + 1434: 0x59D0, + 1435: 0x867B, + 1436: 0x98F4, + 1437: 0x7D62, + 1438: 0x7DBE, + 1439: 0x9B8E, + 1440: 0x6216, + 1441: 0x7C9F, + 1442: 0x88B7, + 1443: 0x5B89, + 1444: 0x5EB5, + 1445: 0x6309, + 1446: 0x6697, + 1447: 0x6848, + 1448: 0x95C7, + 1449: 0x978D, + 1450: 0x674F, + 1451: 0x4EE5, + 1452: 0x4F0A, + 1453: 0x4F4D, + 1454: 0x4F9D, + 1455: 0x5049, + 1456: 0x56F2, + 1457: 0x5937, + 1458: 0x59D4, + 1459: 0x5A01, + 1460: 0x5C09, + 1461: 0x60DF, + 1462: 0x610F, + 1463: 0x6170, + 1464: 0x6613, + 1465: 0x6905, + 1466: 0x70BA, + 1467: 0x754F, + 1468: 0x7570, + 1469: 0x79FB, + 1470: 0x7DAD, + 1471: 0x7DEF, + 1472: 0x80C3, + 1473: 0x840E, + 1474: 0x8863, + 1475: 0x8B02, + 1476: 0x9055, + 1477: 0x907A, + 1478: 0x533B, + 1479: 0x4E95, + 1480: 0x4EA5, + 1481: 0x57DF, + 1482: 0x80B2, + 1483: 0x90C1, + 1484: 0x78EF, + 1485: 0x4E00, + 1486: 0x58F1, + 1487: 0x6EA2, + 1488: 0x9038, + 1489: 0x7A32, + 1490: 0x8328, + 1491: 0x828B, + 1492: 0x9C2F, + 1493: 0x5141, + 1494: 0x5370, + 1495: 0x54BD, + 1496: 0x54E1, + 1497: 0x56E0, + 1498: 0x59FB, + 1499: 0x5F15, + 1500: 0x98F2, + 1501: 0x6DEB, + 1502: 0x80E4, + 1503: 0x852D, + 1504: 0x9662, + 1505: 0x9670, + 1506: 0x96A0, + 1507: 0x97FB, + 1508: 0x540B, + 1509: 0x53F3, + 1510: 0x5B87, + 1511: 0x70CF, + 1512: 0x7FBD, + 1513: 0x8FC2, + 1514: 0x96E8, + 1515: 0x536F, + 1516: 0x9D5C, + 1517: 0x7ABA, + 1518: 0x4E11, + 1519: 0x7893, + 1520: 0x81FC, + 1521: 0x6E26, + 1522: 0x5618, + 1523: 0x5504, + 1524: 0x6B1D, + 1525: 0x851A, + 1526: 0x9C3B, + 1527: 0x59E5, + 1528: 0x53A9, + 1529: 0x6D66, + 1530: 0x74DC, + 1531: 0x958F, + 1532: 0x5642, + 1533: 0x4E91, + 1534: 0x904B, + 1535: 0x96F2, + 1536: 0x834F, + 1537: 0x990C, + 1538: 0x53E1, + 1539: 0x55B6, + 1540: 0x5B30, + 1541: 0x5F71, + 1542: 0x6620, + 1543: 0x66F3, + 1544: 0x6804, + 1545: 0x6C38, + 1546: 0x6CF3, + 1547: 0x6D29, + 1548: 0x745B, + 1549: 0x76C8, + 1550: 0x7A4E, + 1551: 0x9834, + 1552: 0x82F1, + 1553: 0x885B, + 1554: 0x8A60, + 1555: 0x92ED, + 1556: 0x6DB2, + 1557: 0x75AB, + 1558: 0x76CA, + 1559: 0x99C5, + 1560: 0x60A6, + 1561: 0x8B01, + 1562: 0x8D8A, + 1563: 0x95B2, + 1564: 0x698E, + 1565: 0x53AD, + 1566: 0x5186, + 1567: 0x5712, + 1568: 0x5830, + 1569: 0x5944, + 1570: 0x5BB4, + 1571: 0x5EF6, + 1572: 0x6028, + 1573: 0x63A9, + 1574: 0x63F4, + 1575: 0x6CBF, + 1576: 0x6F14, + 1577: 0x708E, + 1578: 0x7114, + 1579: 0x7159, + 1580: 0x71D5, + 1581: 0x733F, + 1582: 0x7E01, + 1583: 0x8276, + 1584: 0x82D1, + 1585: 0x8597, + 1586: 0x9060, + 1587: 0x925B, + 1588: 0x9D1B, + 1589: 0x5869, + 1590: 0x65BC, + 1591: 0x6C5A, + 1592: 0x7525, + 1593: 0x51F9, + 1594: 0x592E, + 1595: 0x5965, + 1596: 0x5F80, + 1597: 0x5FDC, + 1598: 0x62BC, + 1599: 0x65FA, + 1600: 0x6A2A, + 1601: 0x6B27, + 1602: 0x6BB4, + 1603: 0x738B, + 1604: 0x7FC1, + 1605: 0x8956, + 1606: 0x9D2C, + 1607: 0x9D0E, + 1608: 0x9EC4, + 1609: 0x5CA1, + 1610: 0x6C96, + 1611: 0x837B, + 1612: 0x5104, + 1613: 0x5C4B, + 1614: 0x61B6, + 1615: 0x81C6, + 1616: 0x6876, + 1617: 0x7261, + 1618: 0x4E59, + 1619: 0x4FFA, + 1620: 0x5378, + 1621: 0x6069, + 1622: 0x6E29, + 1623: 0x7A4F, + 1624: 0x97F3, + 1625: 0x4E0B, + 1626: 0x5316, + 1627: 0x4EEE, + 1628: 0x4F55, + 1629: 0x4F3D, + 1630: 0x4FA1, + 1631: 0x4F73, + 1632: 0x52A0, + 1633: 0x53EF, + 1634: 0x5609, + 1635: 0x590F, + 1636: 0x5AC1, + 1637: 0x5BB6, + 1638: 0x5BE1, + 1639: 0x79D1, + 1640: 0x6687, + 1641: 0x679C, + 1642: 0x67B6, + 1643: 0x6B4C, + 1644: 0x6CB3, + 1645: 0x706B, + 1646: 0x73C2, + 1647: 0x798D, + 1648: 0x79BE, + 1649: 0x7A3C, + 1650: 0x7B87, + 1651: 0x82B1, + 1652: 0x82DB, + 1653: 0x8304, + 1654: 0x8377, + 1655: 0x83EF, + 1656: 0x83D3, + 1657: 0x8766, + 1658: 0x8AB2, + 1659: 0x5629, + 1660: 0x8CA8, + 1661: 0x8FE6, + 1662: 0x904E, + 1663: 0x971E, + 1664: 0x868A, + 1665: 0x4FC4, + 1666: 0x5CE8, + 1667: 0x6211, + 1668: 0x7259, + 1669: 0x753B, + 1670: 0x81E5, + 1671: 0x82BD, + 1672: 0x86FE, + 1673: 0x8CC0, + 1674: 0x96C5, + 1675: 0x9913, + 1676: 0x99D5, + 1677: 0x4ECB, + 1678: 0x4F1A, + 1679: 0x89E3, + 1680: 0x56DE, + 1681: 0x584A, + 1682: 0x58CA, + 1683: 0x5EFB, + 1684: 0x5FEB, + 1685: 0x602A, + 1686: 0x6094, + 1687: 0x6062, + 1688: 0x61D0, + 1689: 0x6212, + 1690: 0x62D0, + 1691: 0x6539, + 1692: 0x9B41, + 1693: 0x6666, + 1694: 0x68B0, + 1695: 0x6D77, + 1696: 0x7070, + 1697: 0x754C, + 1698: 0x7686, + 1699: 0x7D75, + 1700: 0x82A5, + 1701: 0x87F9, + 1702: 0x958B, + 1703: 0x968E, + 1704: 0x8C9D, + 1705: 0x51F1, + 1706: 0x52BE, + 1707: 0x5916, + 1708: 0x54B3, + 1709: 0x5BB3, + 1710: 0x5D16, + 1711: 0x6168, + 1712: 0x6982, + 1713: 0x6DAF, + 1714: 0x788D, + 1715: 0x84CB, + 1716: 0x8857, + 1717: 0x8A72, + 1718: 0x93A7, + 1719: 0x9AB8, + 1720: 0x6D6C, + 1721: 0x99A8, + 1722: 0x86D9, + 1723: 0x57A3, + 1724: 0x67FF, + 1725: 0x86CE, + 1726: 0x920E, + 1727: 0x5283, + 1728: 0x5687, + 1729: 0x5404, + 1730: 0x5ED3, + 1731: 0x62E1, + 1732: 0x64B9, + 1733: 0x683C, + 1734: 0x6838, + 1735: 0x6BBB, + 1736: 0x7372, + 1737: 0x78BA, + 1738: 0x7A6B, + 1739: 0x899A, + 1740: 0x89D2, + 1741: 0x8D6B, + 1742: 0x8F03, + 1743: 0x90ED, + 1744: 0x95A3, + 1745: 0x9694, + 1746: 0x9769, + 1747: 0x5B66, + 1748: 0x5CB3, + 1749: 0x697D, + 1750: 0x984D, + 1751: 0x984E, + 1752: 0x639B, + 1753: 0x7B20, + 1754: 0x6A2B, + 1755: 0x6A7F, + 1756: 0x68B6, + 1757: 0x9C0D, + 1758: 0x6F5F, + 1759: 0x5272, + 1760: 0x559D, + 1761: 0x6070, + 1762: 0x62EC, + 1763: 0x6D3B, + 1764: 0x6E07, + 1765: 0x6ED1, + 1766: 0x845B, + 1767: 0x8910, + 1768: 0x8F44, + 1769: 0x4E14, + 1770: 0x9C39, + 1771: 0x53F6, + 1772: 0x691B, + 1773: 0x6A3A, + 1774: 0x9784, + 1775: 0x682A, + 1776: 0x515C, + 1777: 0x7AC3, + 1778: 0x84B2, + 1779: 0x91DC, + 1780: 0x938C, + 1781: 0x565B, + 1782: 0x9D28, + 1783: 0x6822, + 1784: 0x8305, + 1785: 0x8431, + 1786: 0x7CA5, + 1787: 0x5208, + 1788: 0x82C5, + 1789: 0x74E6, + 1790: 0x4E7E, + 1791: 0x4F83, + 1792: 0x51A0, + 1793: 0x5BD2, + 1794: 0x520A, + 1795: 0x52D8, + 1796: 0x52E7, + 1797: 0x5DFB, + 1798: 0x559A, + 1799: 0x582A, + 1800: 0x59E6, + 1801: 0x5B8C, + 1802: 0x5B98, + 1803: 0x5BDB, + 1804: 0x5E72, + 1805: 0x5E79, + 1806: 0x60A3, + 1807: 0x611F, + 1808: 0x6163, + 1809: 0x61BE, + 1810: 0x63DB, + 1811: 0x6562, + 1812: 0x67D1, + 1813: 0x6853, + 1814: 0x68FA, + 1815: 0x6B3E, + 1816: 0x6B53, + 1817: 0x6C57, + 1818: 0x6F22, + 1819: 0x6F97, + 1820: 0x6F45, + 1821: 0x74B0, + 1822: 0x7518, + 1823: 0x76E3, + 1824: 0x770B, + 1825: 0x7AFF, + 1826: 0x7BA1, + 1827: 0x7C21, + 1828: 0x7DE9, + 1829: 0x7F36, + 1830: 0x7FF0, + 1831: 0x809D, + 1832: 0x8266, + 1833: 0x839E, + 1834: 0x89B3, + 1835: 0x8ACC, + 1836: 0x8CAB, + 1837: 0x9084, + 1838: 0x9451, + 1839: 0x9593, + 1840: 0x9591, + 1841: 0x95A2, + 1842: 0x9665, + 1843: 0x97D3, + 1844: 0x9928, + 1845: 0x8218, + 1846: 0x4E38, + 1847: 0x542B, + 1848: 0x5CB8, + 1849: 0x5DCC, + 1850: 0x73A9, + 1851: 0x764C, + 1852: 0x773C, + 1853: 0x5CA9, + 1854: 0x7FEB, + 1855: 0x8D0B, + 1856: 0x96C1, + 1857: 0x9811, + 1858: 0x9854, + 1859: 0x9858, + 1860: 0x4F01, + 1861: 0x4F0E, + 1862: 0x5371, + 1863: 0x559C, + 1864: 0x5668, + 1865: 0x57FA, + 1866: 0x5947, + 1867: 0x5B09, + 1868: 0x5BC4, + 1869: 0x5C90, + 1870: 0x5E0C, + 1871: 0x5E7E, + 1872: 0x5FCC, + 1873: 0x63EE, + 1874: 0x673A, + 1875: 0x65D7, + 1876: 0x65E2, + 1877: 0x671F, + 1878: 0x68CB, + 1879: 0x68C4, + 1880: 0x6A5F, + 1881: 0x5E30, + 1882: 0x6BC5, + 1883: 0x6C17, + 1884: 0x6C7D, + 1885: 0x757F, + 1886: 0x7948, + 1887: 0x5B63, + 1888: 0x7A00, + 1889: 0x7D00, + 1890: 0x5FBD, + 1891: 0x898F, + 1892: 0x8A18, + 1893: 0x8CB4, + 1894: 0x8D77, + 1895: 0x8ECC, + 1896: 0x8F1D, + 1897: 0x98E2, + 1898: 0x9A0E, + 1899: 0x9B3C, + 1900: 0x4E80, + 1901: 0x507D, + 1902: 0x5100, + 1903: 0x5993, + 1904: 0x5B9C, + 1905: 0x622F, + 1906: 0x6280, + 1907: 0x64EC, + 1908: 0x6B3A, + 1909: 0x72A0, + 1910: 0x7591, + 1911: 0x7947, + 1912: 0x7FA9, + 1913: 0x87FB, + 1914: 0x8ABC, + 1915: 0x8B70, + 1916: 0x63AC, + 1917: 0x83CA, + 1918: 0x97A0, + 1919: 0x5409, + 1920: 0x5403, + 1921: 0x55AB, + 1922: 0x6854, + 1923: 0x6A58, + 1924: 0x8A70, + 1925: 0x7827, + 1926: 0x6775, + 1927: 0x9ECD, + 1928: 0x5374, + 1929: 0x5BA2, + 1930: 0x811A, + 1931: 0x8650, + 1932: 0x9006, + 1933: 0x4E18, + 1934: 0x4E45, + 1935: 0x4EC7, + 1936: 0x4F11, + 1937: 0x53CA, + 1938: 0x5438, + 1939: 0x5BAE, + 1940: 0x5F13, + 1941: 0x6025, + 1942: 0x6551, + 1943: 0x673D, + 1944: 0x6C42, + 1945: 0x6C72, + 1946: 0x6CE3, + 1947: 0x7078, + 1948: 0x7403, + 1949: 0x7A76, + 1950: 0x7AAE, + 1951: 0x7B08, + 1952: 0x7D1A, + 1953: 0x7CFE, + 1954: 0x7D66, + 1955: 0x65E7, + 1956: 0x725B, + 1957: 0x53BB, + 1958: 0x5C45, + 1959: 0x5DE8, + 1960: 0x62D2, + 1961: 0x62E0, + 1962: 0x6319, + 1963: 0x6E20, + 1964: 0x865A, + 1965: 0x8A31, + 1966: 0x8DDD, + 1967: 0x92F8, + 1968: 0x6F01, + 1969: 0x79A6, + 1970: 0x9B5A, + 1971: 0x4EA8, + 1972: 0x4EAB, + 1973: 0x4EAC, + 1974: 0x4F9B, + 1975: 0x4FA0, + 1976: 0x50D1, + 1977: 0x5147, + 1978: 0x7AF6, + 1979: 0x5171, + 1980: 0x51F6, + 1981: 0x5354, + 1982: 0x5321, + 1983: 0x537F, + 1984: 0x53EB, + 1985: 0x55AC, + 1986: 0x5883, + 1987: 0x5CE1, + 1988: 0x5F37, + 1989: 0x5F4A, + 1990: 0x602F, + 1991: 0x6050, + 1992: 0x606D, + 1993: 0x631F, + 1994: 0x6559, + 1995: 0x6A4B, + 1996: 0x6CC1, + 1997: 0x72C2, + 1998: 0x72ED, + 1999: 0x77EF, + 2000: 0x80F8, + 2001: 0x8105, + 2002: 0x8208, + 2003: 0x854E, + 2004: 0x90F7, + 2005: 0x93E1, + 2006: 0x97FF, + 2007: 0x9957, + 2008: 0x9A5A, + 2009: 0x4EF0, + 2010: 0x51DD, + 2011: 0x5C2D, + 2012: 0x6681, + 2013: 0x696D, + 2014: 0x5C40, + 2015: 0x66F2, + 2016: 0x6975, + 2017: 0x7389, + 2018: 0x6850, + 2019: 0x7C81, + 2020: 0x50C5, + 2021: 0x52E4, + 2022: 0x5747, + 2023: 0x5DFE, + 2024: 0x9326, + 2025: 0x65A4, + 2026: 0x6B23, + 2027: 0x6B3D, + 2028: 0x7434, + 2029: 0x7981, + 2030: 0x79BD, + 2031: 0x7B4B, + 2032: 0x7DCA, + 2033: 0x82B9, + 2034: 0x83CC, + 2035: 0x887F, + 2036: 0x895F, + 2037: 0x8B39, + 2038: 0x8FD1, + 2039: 0x91D1, + 2040: 0x541F, + 2041: 0x9280, + 2042: 0x4E5D, + 2043: 0x5036, + 2044: 0x53E5, + 2045: 0x533A, + 2046: 0x72D7, + 2047: 0x7396, + 2048: 0x77E9, + 2049: 0x82E6, + 2050: 0x8EAF, + 2051: 0x99C6, + 2052: 0x99C8, + 2053: 0x99D2, + 2054: 0x5177, + 2055: 0x611A, + 2056: 0x865E, + 2057: 0x55B0, + 2058: 0x7A7A, + 2059: 0x5076, + 2060: 0x5BD3, + 2061: 0x9047, + 2062: 0x9685, + 2063: 0x4E32, + 2064: 0x6ADB, + 2065: 0x91E7, + 2066: 0x5C51, + 2067: 0x5C48, + 2068: 0x6398, + 2069: 0x7A9F, + 2070: 0x6C93, + 2071: 0x9774, + 2072: 0x8F61, + 2073: 0x7AAA, + 2074: 0x718A, + 2075: 0x9688, + 2076: 0x7C82, + 2077: 0x6817, + 2078: 0x7E70, + 2079: 0x6851, + 2080: 0x936C, + 2081: 0x52F2, + 2082: 0x541B, + 2083: 0x85AB, + 2084: 0x8A13, + 2085: 0x7FA4, + 2086: 0x8ECD, + 2087: 0x90E1, + 2088: 0x5366, + 2089: 0x8888, + 2090: 0x7941, + 2091: 0x4FC2, + 2092: 0x50BE, + 2093: 0x5211, + 2094: 0x5144, + 2095: 0x5553, + 2096: 0x572D, + 2097: 0x73EA, + 2098: 0x578B, + 2099: 0x5951, + 2100: 0x5F62, + 2101: 0x5F84, + 2102: 0x6075, + 2103: 0x6176, + 2104: 0x6167, + 2105: 0x61A9, + 2106: 0x63B2, + 2107: 0x643A, + 2108: 0x656C, + 2109: 0x666F, + 2110: 0x6842, + 2111: 0x6E13, + 2112: 0x7566, + 2113: 0x7A3D, + 2114: 0x7CFB, + 2115: 0x7D4C, + 2116: 0x7D99, + 2117: 0x7E4B, + 2118: 0x7F6B, + 2119: 0x830E, + 2120: 0x834A, + 2121: 0x86CD, + 2122: 0x8A08, + 2123: 0x8A63, + 2124: 0x8B66, + 2125: 0x8EFD, + 2126: 0x981A, + 2127: 0x9D8F, + 2128: 0x82B8, + 2129: 0x8FCE, + 2130: 0x9BE8, + 2131: 0x5287, + 2132: 0x621F, + 2133: 0x6483, + 2134: 0x6FC0, + 2135: 0x9699, + 2136: 0x6841, + 2137: 0x5091, + 2138: 0x6B20, + 2139: 0x6C7A, + 2140: 0x6F54, + 2141: 0x7A74, + 2142: 0x7D50, + 2143: 0x8840, + 2144: 0x8A23, + 2145: 0x6708, + 2146: 0x4EF6, + 2147: 0x5039, + 2148: 0x5026, + 2149: 0x5065, + 2150: 0x517C, + 2151: 0x5238, + 2152: 0x5263, + 2153: 0x55A7, + 2154: 0x570F, + 2155: 0x5805, + 2156: 0x5ACC, + 2157: 0x5EFA, + 2158: 0x61B2, + 2159: 0x61F8, + 2160: 0x62F3, + 2161: 0x6372, + 2162: 0x691C, + 2163: 0x6A29, + 2164: 0x727D, + 2165: 0x72AC, + 2166: 0x732E, + 2167: 0x7814, + 2168: 0x786F, + 2169: 0x7D79, + 2170: 0x770C, + 2171: 0x80A9, + 2172: 0x898B, + 2173: 0x8B19, + 2174: 0x8CE2, + 2175: 0x8ED2, + 2176: 0x9063, + 2177: 0x9375, + 2178: 0x967A, + 2179: 0x9855, + 2180: 0x9A13, + 2181: 0x9E78, + 2182: 0x5143, + 2183: 0x539F, + 2184: 0x53B3, + 2185: 0x5E7B, + 2186: 0x5F26, + 2187: 0x6E1B, + 2188: 0x6E90, + 2189: 0x7384, + 2190: 0x73FE, + 2191: 0x7D43, + 2192: 0x8237, + 2193: 0x8A00, + 2194: 0x8AFA, + 2195: 0x9650, + 2196: 0x4E4E, + 2197: 0x500B, + 2198: 0x53E4, + 2199: 0x547C, + 2200: 0x56FA, + 2201: 0x59D1, + 2202: 0x5B64, + 2203: 0x5DF1, + 2204: 0x5EAB, + 2205: 0x5F27, + 2206: 0x6238, + 2207: 0x6545, + 2208: 0x67AF, + 2209: 0x6E56, + 2210: 0x72D0, + 2211: 0x7CCA, + 2212: 0x88B4, + 2213: 0x80A1, + 2214: 0x80E1, + 2215: 0x83F0, + 2216: 0x864E, + 2217: 0x8A87, + 2218: 0x8DE8, + 2219: 0x9237, + 2220: 0x96C7, + 2221: 0x9867, + 2222: 0x9F13, + 2223: 0x4E94, + 2224: 0x4E92, + 2225: 0x4F0D, + 2226: 0x5348, + 2227: 0x5449, + 2228: 0x543E, + 2229: 0x5A2F, + 2230: 0x5F8C, + 2231: 0x5FA1, + 2232: 0x609F, + 2233: 0x68A7, + 2234: 0x6A8E, + 2235: 0x745A, + 2236: 0x7881, + 2237: 0x8A9E, + 2238: 0x8AA4, + 2239: 0x8B77, + 2240: 0x9190, + 2241: 0x4E5E, + 2242: 0x9BC9, + 2243: 0x4EA4, + 2244: 0x4F7C, + 2245: 0x4FAF, + 2246: 0x5019, + 2247: 0x5016, + 2248: 0x5149, + 2249: 0x516C, + 2250: 0x529F, + 2251: 0x52B9, + 2252: 0x52FE, + 2253: 0x539A, + 2254: 0x53E3, + 2255: 0x5411, + 2256: 0x540E, + 2257: 0x5589, + 2258: 0x5751, + 2259: 0x57A2, + 2260: 0x597D, + 2261: 0x5B54, + 2262: 0x5B5D, + 2263: 0x5B8F, + 2264: 0x5DE5, + 2265: 0x5DE7, + 2266: 0x5DF7, + 2267: 0x5E78, + 2268: 0x5E83, + 2269: 0x5E9A, + 2270: 0x5EB7, + 2271: 0x5F18, + 2272: 0x6052, + 2273: 0x614C, + 2274: 0x6297, + 2275: 0x62D8, + 2276: 0x63A7, + 2277: 0x653B, + 2278: 0x6602, + 2279: 0x6643, + 2280: 0x66F4, + 2281: 0x676D, + 2282: 0x6821, + 2283: 0x6897, + 2284: 0x69CB, + 2285: 0x6C5F, + 2286: 0x6D2A, + 2287: 0x6D69, + 2288: 0x6E2F, + 2289: 0x6E9D, + 2290: 0x7532, + 2291: 0x7687, + 2292: 0x786C, + 2293: 0x7A3F, + 2294: 0x7CE0, + 2295: 0x7D05, + 2296: 0x7D18, + 2297: 0x7D5E, + 2298: 0x7DB1, + 2299: 0x8015, + 2300: 0x8003, + 2301: 0x80AF, + 2302: 0x80B1, + 2303: 0x8154, + 2304: 0x818F, + 2305: 0x822A, + 2306: 0x8352, + 2307: 0x884C, + 2308: 0x8861, + 2309: 0x8B1B, + 2310: 0x8CA2, + 2311: 0x8CFC, + 2312: 0x90CA, + 2313: 0x9175, + 2314: 0x9271, + 2315: 0x783F, + 2316: 0x92FC, + 2317: 0x95A4, + 2318: 0x964D, + 2319: 0x9805, + 2320: 0x9999, + 2321: 0x9AD8, + 2322: 0x9D3B, + 2323: 0x525B, + 2324: 0x52AB, + 2325: 0x53F7, + 2326: 0x5408, + 2327: 0x58D5, + 2328: 0x62F7, + 2329: 0x6FE0, + 2330: 0x8C6A, + 2331: 0x8F5F, + 2332: 0x9EB9, + 2333: 0x514B, + 2334: 0x523B, + 2335: 0x544A, + 2336: 0x56FD, + 2337: 0x7A40, + 2338: 0x9177, + 2339: 0x9D60, + 2340: 0x9ED2, + 2341: 0x7344, + 2342: 0x6F09, + 2343: 0x8170, + 2344: 0x7511, + 2345: 0x5FFD, + 2346: 0x60DA, + 2347: 0x9AA8, + 2348: 0x72DB, + 2349: 0x8FBC, + 2350: 0x6B64, + 2351: 0x9803, + 2352: 0x4ECA, + 2353: 0x56F0, + 2354: 0x5764, + 2355: 0x58BE, + 2356: 0x5A5A, + 2357: 0x6068, + 2358: 0x61C7, + 2359: 0x660F, + 2360: 0x6606, + 2361: 0x6839, + 2362: 0x68B1, + 2363: 0x6DF7, + 2364: 0x75D5, + 2365: 0x7D3A, + 2366: 0x826E, + 2367: 0x9B42, + 2368: 0x4E9B, + 2369: 0x4F50, + 2370: 0x53C9, + 2371: 0x5506, + 2372: 0x5D6F, + 2373: 0x5DE6, + 2374: 0x5DEE, + 2375: 0x67FB, + 2376: 0x6C99, + 2377: 0x7473, + 2378: 0x7802, + 2379: 0x8A50, + 2380: 0x9396, + 2381: 0x88DF, + 2382: 0x5750, + 2383: 0x5EA7, + 2384: 0x632B, + 2385: 0x50B5, + 2386: 0x50AC, + 2387: 0x518D, + 2388: 0x6700, + 2389: 0x54C9, + 2390: 0x585E, + 2391: 0x59BB, + 2392: 0x5BB0, + 2393: 0x5F69, + 2394: 0x624D, + 2395: 0x63A1, + 2396: 0x683D, + 2397: 0x6B73, + 2398: 0x6E08, + 2399: 0x707D, + 2400: 0x91C7, + 2401: 0x7280, + 2402: 0x7815, + 2403: 0x7826, + 2404: 0x796D, + 2405: 0x658E, + 2406: 0x7D30, + 2407: 0x83DC, + 2408: 0x88C1, + 2409: 0x8F09, + 2410: 0x969B, + 2411: 0x5264, + 2412: 0x5728, + 2413: 0x6750, + 2414: 0x7F6A, + 2415: 0x8CA1, + 2416: 0x51B4, + 2417: 0x5742, + 2418: 0x962A, + 2419: 0x583A, + 2420: 0x698A, + 2421: 0x80B4, + 2422: 0x54B2, + 2423: 0x5D0E, + 2424: 0x57FC, + 2425: 0x7895, + 2426: 0x9DFA, + 2427: 0x4F5C, + 2428: 0x524A, + 2429: 0x548B, + 2430: 0x643E, + 2431: 0x6628, + 2432: 0x6714, + 2433: 0x67F5, + 2434: 0x7A84, + 2435: 0x7B56, + 2436: 0x7D22, + 2437: 0x932F, + 2438: 0x685C, + 2439: 0x9BAD, + 2440: 0x7B39, + 2441: 0x5319, + 2442: 0x518A, + 2443: 0x5237, + 2444: 0x5BDF, + 2445: 0x62F6, + 2446: 0x64AE, + 2447: 0x64E6, + 2448: 0x672D, + 2449: 0x6BBA, + 2450: 0x85A9, + 2451: 0x96D1, + 2452: 0x7690, + 2453: 0x9BD6, + 2454: 0x634C, + 2455: 0x9306, + 2456: 0x9BAB, + 2457: 0x76BF, + 2458: 0x6652, + 2459: 0x4E09, + 2460: 0x5098, + 2461: 0x53C2, + 2462: 0x5C71, + 2463: 0x60E8, + 2464: 0x6492, + 2465: 0x6563, + 2466: 0x685F, + 2467: 0x71E6, + 2468: 0x73CA, + 2469: 0x7523, + 2470: 0x7B97, + 2471: 0x7E82, + 2472: 0x8695, + 2473: 0x8B83, + 2474: 0x8CDB, + 2475: 0x9178, + 2476: 0x9910, + 2477: 0x65AC, + 2478: 0x66AB, + 2479: 0x6B8B, + 2480: 0x4ED5, + 2481: 0x4ED4, + 2482: 0x4F3A, + 2483: 0x4F7F, + 2484: 0x523A, + 2485: 0x53F8, + 2486: 0x53F2, + 2487: 0x55E3, + 2488: 0x56DB, + 2489: 0x58EB, + 2490: 0x59CB, + 2491: 0x59C9, + 2492: 0x59FF, + 2493: 0x5B50, + 2494: 0x5C4D, + 2495: 0x5E02, + 2496: 0x5E2B, + 2497: 0x5FD7, + 2498: 0x601D, + 2499: 0x6307, + 2500: 0x652F, + 2501: 0x5B5C, + 2502: 0x65AF, + 2503: 0x65BD, + 2504: 0x65E8, + 2505: 0x679D, + 2506: 0x6B62, + 2507: 0x6B7B, + 2508: 0x6C0F, + 2509: 0x7345, + 2510: 0x7949, + 2511: 0x79C1, + 2512: 0x7CF8, + 2513: 0x7D19, + 2514: 0x7D2B, + 2515: 0x80A2, + 2516: 0x8102, + 2517: 0x81F3, + 2518: 0x8996, + 2519: 0x8A5E, + 2520: 0x8A69, + 2521: 0x8A66, + 2522: 0x8A8C, + 2523: 0x8AEE, + 2524: 0x8CC7, + 2525: 0x8CDC, + 2526: 0x96CC, + 2527: 0x98FC, + 2528: 0x6B6F, + 2529: 0x4E8B, + 2530: 0x4F3C, + 2531: 0x4F8D, + 2532: 0x5150, + 2533: 0x5B57, + 2534: 0x5BFA, + 2535: 0x6148, + 2536: 0x6301, + 2537: 0x6642, + 2538: 0x6B21, + 2539: 0x6ECB, + 2540: 0x6CBB, + 2541: 0x723E, + 2542: 0x74BD, + 2543: 0x75D4, + 2544: 0x78C1, + 2545: 0x793A, + 2546: 0x800C, + 2547: 0x8033, + 2548: 0x81EA, + 2549: 0x8494, + 2550: 0x8F9E, + 2551: 0x6C50, + 2552: 0x9E7F, + 2553: 0x5F0F, + 2554: 0x8B58, + 2555: 0x9D2B, + 2556: 0x7AFA, + 2557: 0x8EF8, + 2558: 0x5B8D, + 2559: 0x96EB, + 2560: 0x4E03, + 2561: 0x53F1, + 2562: 0x57F7, + 2563: 0x5931, + 2564: 0x5AC9, + 2565: 0x5BA4, + 2566: 0x6089, + 2567: 0x6E7F, + 2568: 0x6F06, + 2569: 0x75BE, + 2570: 0x8CEA, + 2571: 0x5B9F, + 2572: 0x8500, + 2573: 0x7BE0, + 2574: 0x5072, + 2575: 0x67F4, + 2576: 0x829D, + 2577: 0x5C61, + 2578: 0x854A, + 2579: 0x7E1E, + 2580: 0x820E, + 2581: 0x5199, + 2582: 0x5C04, + 2583: 0x6368, + 2584: 0x8D66, + 2585: 0x659C, + 2586: 0x716E, + 2587: 0x793E, + 2588: 0x7D17, + 2589: 0x8005, + 2590: 0x8B1D, + 2591: 0x8ECA, + 2592: 0x906E, + 2593: 0x86C7, + 2594: 0x90AA, + 2595: 0x501F, + 2596: 0x52FA, + 2597: 0x5C3A, + 2598: 0x6753, + 2599: 0x707C, + 2600: 0x7235, + 2601: 0x914C, + 2602: 0x91C8, + 2603: 0x932B, + 2604: 0x82E5, + 2605: 0x5BC2, + 2606: 0x5F31, + 2607: 0x60F9, + 2608: 0x4E3B, + 2609: 0x53D6, + 2610: 0x5B88, + 2611: 0x624B, + 2612: 0x6731, + 2613: 0x6B8A, + 2614: 0x72E9, + 2615: 0x73E0, + 2616: 0x7A2E, + 2617: 0x816B, + 2618: 0x8DA3, + 2619: 0x9152, + 2620: 0x9996, + 2621: 0x5112, + 2622: 0x53D7, + 2623: 0x546A, + 2624: 0x5BFF, + 2625: 0x6388, + 2626: 0x6A39, + 2627: 0x7DAC, + 2628: 0x9700, + 2629: 0x56DA, + 2630: 0x53CE, + 2631: 0x5468, + 2632: 0x5B97, + 2633: 0x5C31, + 2634: 0x5DDE, + 2635: 0x4FEE, + 2636: 0x6101, + 2637: 0x62FE, + 2638: 0x6D32, + 2639: 0x79C0, + 2640: 0x79CB, + 2641: 0x7D42, + 2642: 0x7E4D, + 2643: 0x7FD2, + 2644: 0x81ED, + 2645: 0x821F, + 2646: 0x8490, + 2647: 0x8846, + 2648: 0x8972, + 2649: 0x8B90, + 2650: 0x8E74, + 2651: 0x8F2F, + 2652: 0x9031, + 2653: 0x914B, + 2654: 0x916C, + 2655: 0x96C6, + 2656: 0x919C, + 2657: 0x4EC0, + 2658: 0x4F4F, + 2659: 0x5145, + 2660: 0x5341, + 2661: 0x5F93, + 2662: 0x620E, + 2663: 0x67D4, + 2664: 0x6C41, + 2665: 0x6E0B, + 2666: 0x7363, + 2667: 0x7E26, + 2668: 0x91CD, + 2669: 0x9283, + 2670: 0x53D4, + 2671: 0x5919, + 2672: 0x5BBF, + 2673: 0x6DD1, + 2674: 0x795D, + 2675: 0x7E2E, + 2676: 0x7C9B, + 2677: 0x587E, + 2678: 0x719F, + 2679: 0x51FA, + 2680: 0x8853, + 2681: 0x8FF0, + 2682: 0x4FCA, + 2683: 0x5CFB, + 2684: 0x6625, + 2685: 0x77AC, + 2686: 0x7AE3, + 2687: 0x821C, + 2688: 0x99FF, + 2689: 0x51C6, + 2690: 0x5FAA, + 2691: 0x65EC, + 2692: 0x696F, + 2693: 0x6B89, + 2694: 0x6DF3, + 2695: 0x6E96, + 2696: 0x6F64, + 2697: 0x76FE, + 2698: 0x7D14, + 2699: 0x5DE1, + 2700: 0x9075, + 2701: 0x9187, + 2702: 0x9806, + 2703: 0x51E6, + 2704: 0x521D, + 2705: 0x6240, + 2706: 0x6691, + 2707: 0x66D9, + 2708: 0x6E1A, + 2709: 0x5EB6, + 2710: 0x7DD2, + 2711: 0x7F72, + 2712: 0x66F8, + 2713: 0x85AF, + 2714: 0x85F7, + 2715: 0x8AF8, + 2716: 0x52A9, + 2717: 0x53D9, + 2718: 0x5973, + 2719: 0x5E8F, + 2720: 0x5F90, + 2721: 0x6055, + 2722: 0x92E4, + 2723: 0x9664, + 2724: 0x50B7, + 2725: 0x511F, + 2726: 0x52DD, + 2727: 0x5320, + 2728: 0x5347, + 2729: 0x53EC, + 2730: 0x54E8, + 2731: 0x5546, + 2732: 0x5531, + 2733: 0x5617, + 2734: 0x5968, + 2735: 0x59BE, + 2736: 0x5A3C, + 2737: 0x5BB5, + 2738: 0x5C06, + 2739: 0x5C0F, + 2740: 0x5C11, + 2741: 0x5C1A, + 2742: 0x5E84, + 2743: 0x5E8A, + 2744: 0x5EE0, + 2745: 0x5F70, + 2746: 0x627F, + 2747: 0x6284, + 2748: 0x62DB, + 2749: 0x638C, + 2750: 0x6377, + 2751: 0x6607, + 2752: 0x660C, + 2753: 0x662D, + 2754: 0x6676, + 2755: 0x677E, + 2756: 0x68A2, + 2757: 0x6A1F, + 2758: 0x6A35, + 2759: 0x6CBC, + 2760: 0x6D88, + 2761: 0x6E09, + 2762: 0x6E58, + 2763: 0x713C, + 2764: 0x7126, + 2765: 0x7167, + 2766: 0x75C7, + 2767: 0x7701, + 2768: 0x785D, + 2769: 0x7901, + 2770: 0x7965, + 2771: 0x79F0, + 2772: 0x7AE0, + 2773: 0x7B11, + 2774: 0x7CA7, + 2775: 0x7D39, + 2776: 0x8096, + 2777: 0x83D6, + 2778: 0x848B, + 2779: 0x8549, + 2780: 0x885D, + 2781: 0x88F3, + 2782: 0x8A1F, + 2783: 0x8A3C, + 2784: 0x8A54, + 2785: 0x8A73, + 2786: 0x8C61, + 2787: 0x8CDE, + 2788: 0x91A4, + 2789: 0x9266, + 2790: 0x937E, + 2791: 0x9418, + 2792: 0x969C, + 2793: 0x9798, + 2794: 0x4E0A, + 2795: 0x4E08, + 2796: 0x4E1E, + 2797: 0x4E57, + 2798: 0x5197, + 2799: 0x5270, + 2800: 0x57CE, + 2801: 0x5834, + 2802: 0x58CC, + 2803: 0x5B22, + 2804: 0x5E38, + 2805: 0x60C5, + 2806: 0x64FE, + 2807: 0x6761, + 2808: 0x6756, + 2809: 0x6D44, + 2810: 0x72B6, + 2811: 0x7573, + 2812: 0x7A63, + 2813: 0x84B8, + 2814: 0x8B72, + 2815: 0x91B8, + 2816: 0x9320, + 2817: 0x5631, + 2818: 0x57F4, + 2819: 0x98FE, + 2820: 0x62ED, + 2821: 0x690D, + 2822: 0x6B96, + 2823: 0x71ED, + 2824: 0x7E54, + 2825: 0x8077, + 2826: 0x8272, + 2827: 0x89E6, + 2828: 0x98DF, + 2829: 0x8755, + 2830: 0x8FB1, + 2831: 0x5C3B, + 2832: 0x4F38, + 2833: 0x4FE1, + 2834: 0x4FB5, + 2835: 0x5507, + 2836: 0x5A20, + 2837: 0x5BDD, + 2838: 0x5BE9, + 2839: 0x5FC3, + 2840: 0x614E, + 2841: 0x632F, + 2842: 0x65B0, + 2843: 0x664B, + 2844: 0x68EE, + 2845: 0x699B, + 2846: 0x6D78, + 2847: 0x6DF1, + 2848: 0x7533, + 2849: 0x75B9, + 2850: 0x771F, + 2851: 0x795E, + 2852: 0x79E6, + 2853: 0x7D33, + 2854: 0x81E3, + 2855: 0x82AF, + 2856: 0x85AA, + 2857: 0x89AA, + 2858: 0x8A3A, + 2859: 0x8EAB, + 2860: 0x8F9B, + 2861: 0x9032, + 2862: 0x91DD, + 2863: 0x9707, + 2864: 0x4EBA, + 2865: 0x4EC1, + 2866: 0x5203, + 2867: 0x5875, + 2868: 0x58EC, + 2869: 0x5C0B, + 2870: 0x751A, + 2871: 0x5C3D, + 2872: 0x814E, + 2873: 0x8A0A, + 2874: 0x8FC5, + 2875: 0x9663, + 2876: 0x976D, + 2877: 0x7B25, + 2878: 0x8ACF, + 2879: 0x9808, + 2880: 0x9162, + 2881: 0x56F3, + 2882: 0x53A8, + 2883: 0x9017, + 2884: 0x5439, + 2885: 0x5782, + 2886: 0x5E25, + 2887: 0x63A8, + 2888: 0x6C34, + 2889: 0x708A, + 2890: 0x7761, + 2891: 0x7C8B, + 2892: 0x7FE0, + 2893: 0x8870, + 2894: 0x9042, + 2895: 0x9154, + 2896: 0x9310, + 2897: 0x9318, + 2898: 0x968F, + 2899: 0x745E, + 2900: 0x9AC4, + 2901: 0x5D07, + 2902: 0x5D69, + 2903: 0x6570, + 2904: 0x67A2, + 2905: 0x8DA8, + 2906: 0x96DB, + 2907: 0x636E, + 2908: 0x6749, + 2909: 0x6919, + 2910: 0x83C5, + 2911: 0x9817, + 2912: 0x96C0, + 2913: 0x88FE, + 2914: 0x6F84, + 2915: 0x647A, + 2916: 0x5BF8, + 2917: 0x4E16, + 2918: 0x702C, + 2919: 0x755D, + 2920: 0x662F, + 2921: 0x51C4, + 2922: 0x5236, + 2923: 0x52E2, + 2924: 0x59D3, + 2925: 0x5F81, + 2926: 0x6027, + 2927: 0x6210, + 2928: 0x653F, + 2929: 0x6574, + 2930: 0x661F, + 2931: 0x6674, + 2932: 0x68F2, + 2933: 0x6816, + 2934: 0x6B63, + 2935: 0x6E05, + 2936: 0x7272, + 2937: 0x751F, + 2938: 0x76DB, + 2939: 0x7CBE, + 2940: 0x8056, + 2941: 0x58F0, + 2942: 0x88FD, + 2943: 0x897F, + 2944: 0x8AA0, + 2945: 0x8A93, + 2946: 0x8ACB, + 2947: 0x901D, + 2948: 0x9192, + 2949: 0x9752, + 2950: 0x9759, + 2951: 0x6589, + 2952: 0x7A0E, + 2953: 0x8106, + 2954: 0x96BB, + 2955: 0x5E2D, + 2956: 0x60DC, + 2957: 0x621A, + 2958: 0x65A5, + 2959: 0x6614, + 2960: 0x6790, + 2961: 0x77F3, + 2962: 0x7A4D, + 2963: 0x7C4D, + 2964: 0x7E3E, + 2965: 0x810A, + 2966: 0x8CAC, + 2967: 0x8D64, + 2968: 0x8DE1, + 2969: 0x8E5F, + 2970: 0x78A9, + 2971: 0x5207, + 2972: 0x62D9, + 2973: 0x63A5, + 2974: 0x6442, + 2975: 0x6298, + 2976: 0x8A2D, + 2977: 0x7A83, + 2978: 0x7BC0, + 2979: 0x8AAC, + 2980: 0x96EA, + 2981: 0x7D76, + 2982: 0x820C, + 2983: 0x8749, + 2984: 0x4ED9, + 2985: 0x5148, + 2986: 0x5343, + 2987: 0x5360, + 2988: 0x5BA3, + 2989: 0x5C02, + 2990: 0x5C16, + 2991: 0x5DDD, + 2992: 0x6226, + 2993: 0x6247, + 2994: 0x64B0, + 2995: 0x6813, + 2996: 0x6834, + 2997: 0x6CC9, + 2998: 0x6D45, + 2999: 0x6D17, + 3000: 0x67D3, + 3001: 0x6F5C, + 3002: 0x714E, + 3003: 0x717D, + 3004: 0x65CB, + 3005: 0x7A7F, + 3006: 0x7BAD, + 3007: 0x7DDA, + 3008: 0x7E4A, + 3009: 0x7FA8, + 3010: 0x817A, + 3011: 0x821B, + 3012: 0x8239, + 3013: 0x85A6, + 3014: 0x8A6E, + 3015: 0x8CCE, + 3016: 0x8DF5, + 3017: 0x9078, + 3018: 0x9077, + 3019: 0x92AD, + 3020: 0x9291, + 3021: 0x9583, + 3022: 0x9BAE, + 3023: 0x524D, + 3024: 0x5584, + 3025: 0x6F38, + 3026: 0x7136, + 3027: 0x5168, + 3028: 0x7985, + 3029: 0x7E55, + 3030: 0x81B3, + 3031: 0x7CCE, + 3032: 0x564C, + 3033: 0x5851, + 3034: 0x5CA8, + 3035: 0x63AA, + 3036: 0x66FE, + 3037: 0x66FD, + 3038: 0x695A, + 3039: 0x72D9, + 3040: 0x758F, + 3041: 0x758E, + 3042: 0x790E, + 3043: 0x7956, + 3044: 0x79DF, + 3045: 0x7C97, + 3046: 0x7D20, + 3047: 0x7D44, + 3048: 0x8607, + 3049: 0x8A34, + 3050: 0x963B, + 3051: 0x9061, + 3052: 0x9F20, + 3053: 0x50E7, + 3054: 0x5275, + 3055: 0x53CC, + 3056: 0x53E2, + 3057: 0x5009, + 3058: 0x55AA, + 3059: 0x58EE, + 3060: 0x594F, + 3061: 0x723D, + 3062: 0x5B8B, + 3063: 0x5C64, + 3064: 0x531D, + 3065: 0x60E3, + 3066: 0x60F3, + 3067: 0x635C, + 3068: 0x6383, + 3069: 0x633F, + 3070: 0x63BB, + 3071: 0x64CD, + 3072: 0x65E9, + 3073: 0x66F9, + 3074: 0x5DE3, + 3075: 0x69CD, + 3076: 0x69FD, + 3077: 0x6F15, + 3078: 0x71E5, + 3079: 0x4E89, + 3080: 0x75E9, + 3081: 0x76F8, + 3082: 0x7A93, + 3083: 0x7CDF, + 3084: 0x7DCF, + 3085: 0x7D9C, + 3086: 0x8061, + 3087: 0x8349, + 3088: 0x8358, + 3089: 0x846C, + 3090: 0x84BC, + 3091: 0x85FB, + 3092: 0x88C5, + 3093: 0x8D70, + 3094: 0x9001, + 3095: 0x906D, + 3096: 0x9397, + 3097: 0x971C, + 3098: 0x9A12, + 3099: 0x50CF, + 3100: 0x5897, + 3101: 0x618E, + 3102: 0x81D3, + 3103: 0x8535, + 3104: 0x8D08, + 3105: 0x9020, + 3106: 0x4FC3, + 3107: 0x5074, + 3108: 0x5247, + 3109: 0x5373, + 3110: 0x606F, + 3111: 0x6349, + 3112: 0x675F, + 3113: 0x6E2C, + 3114: 0x8DB3, + 3115: 0x901F, + 3116: 0x4FD7, + 3117: 0x5C5E, + 3118: 0x8CCA, + 3119: 0x65CF, + 3120: 0x7D9A, + 3121: 0x5352, + 3122: 0x8896, + 3123: 0x5176, + 3124: 0x63C3, + 3125: 0x5B58, + 3126: 0x5B6B, + 3127: 0x5C0A, + 3128: 0x640D, + 3129: 0x6751, + 3130: 0x905C, + 3131: 0x4ED6, + 3132: 0x591A, + 3133: 0x592A, + 3134: 0x6C70, + 3135: 0x8A51, + 3136: 0x553E, + 3137: 0x5815, + 3138: 0x59A5, + 3139: 0x60F0, + 3140: 0x6253, + 3141: 0x67C1, + 3142: 0x8235, + 3143: 0x6955, + 3144: 0x9640, + 3145: 0x99C4, + 3146: 0x9A28, + 3147: 0x4F53, + 3148: 0x5806, + 3149: 0x5BFE, + 3150: 0x8010, + 3151: 0x5CB1, + 3152: 0x5E2F, + 3153: 0x5F85, + 3154: 0x6020, + 3155: 0x614B, + 3156: 0x6234, + 3157: 0x66FF, + 3158: 0x6CF0, + 3159: 0x6EDE, + 3160: 0x80CE, + 3161: 0x817F, + 3162: 0x82D4, + 3163: 0x888B, + 3164: 0x8CB8, + 3165: 0x9000, + 3166: 0x902E, + 3167: 0x968A, + 3168: 0x9EDB, + 3169: 0x9BDB, + 3170: 0x4EE3, + 3171: 0x53F0, + 3172: 0x5927, + 3173: 0x7B2C, + 3174: 0x918D, + 3175: 0x984C, + 3176: 0x9DF9, + 3177: 0x6EDD, + 3178: 0x7027, + 3179: 0x5353, + 3180: 0x5544, + 3181: 0x5B85, + 3182: 0x6258, + 3183: 0x629E, + 3184: 0x62D3, + 3185: 0x6CA2, + 3186: 0x6FEF, + 3187: 0x7422, + 3188: 0x8A17, + 3189: 0x9438, + 3190: 0x6FC1, + 3191: 0x8AFE, + 3192: 0x8338, + 3193: 0x51E7, + 3194: 0x86F8, + 3195: 0x53EA, + 3196: 0x53E9, + 3197: 0x4F46, + 3198: 0x9054, + 3199: 0x8FB0, + 3200: 0x596A, + 3201: 0x8131, + 3202: 0x5DFD, + 3203: 0x7AEA, + 3204: 0x8FBF, + 3205: 0x68DA, + 3206: 0x8C37, + 3207: 0x72F8, + 3208: 0x9C48, + 3209: 0x6A3D, + 3210: 0x8AB0, + 3211: 0x4E39, + 3212: 0x5358, + 3213: 0x5606, + 3214: 0x5766, + 3215: 0x62C5, + 3216: 0x63A2, + 3217: 0x65E6, + 3218: 0x6B4E, + 3219: 0x6DE1, + 3220: 0x6E5B, + 3221: 0x70AD, + 3222: 0x77ED, + 3223: 0x7AEF, + 3224: 0x7BAA, + 3225: 0x7DBB, + 3226: 0x803D, + 3227: 0x80C6, + 3228: 0x86CB, + 3229: 0x8A95, + 3230: 0x935B, + 3231: 0x56E3, + 3232: 0x58C7, + 3233: 0x5F3E, + 3234: 0x65AD, + 3235: 0x6696, + 3236: 0x6A80, + 3237: 0x6BB5, + 3238: 0x7537, + 3239: 0x8AC7, + 3240: 0x5024, + 3241: 0x77E5, + 3242: 0x5730, + 3243: 0x5F1B, + 3244: 0x6065, + 3245: 0x667A, + 3246: 0x6C60, + 3247: 0x75F4, + 3248: 0x7A1A, + 3249: 0x7F6E, + 3250: 0x81F4, + 3251: 0x8718, + 3252: 0x9045, + 3253: 0x99B3, + 3254: 0x7BC9, + 3255: 0x755C, + 3256: 0x7AF9, + 3257: 0x7B51, + 3258: 0x84C4, + 3259: 0x9010, + 3260: 0x79E9, + 3261: 0x7A92, + 3262: 0x8336, + 3263: 0x5AE1, + 3264: 0x7740, + 3265: 0x4E2D, + 3266: 0x4EF2, + 3267: 0x5B99, + 3268: 0x5FE0, + 3269: 0x62BD, + 3270: 0x663C, + 3271: 0x67F1, + 3272: 0x6CE8, + 3273: 0x866B, + 3274: 0x8877, + 3275: 0x8A3B, + 3276: 0x914E, + 3277: 0x92F3, + 3278: 0x99D0, + 3279: 0x6A17, + 3280: 0x7026, + 3281: 0x732A, + 3282: 0x82E7, + 3283: 0x8457, + 3284: 0x8CAF, + 3285: 0x4E01, + 3286: 0x5146, + 3287: 0x51CB, + 3288: 0x558B, + 3289: 0x5BF5, + 3290: 0x5E16, + 3291: 0x5E33, + 3292: 0x5E81, + 3293: 0x5F14, + 3294: 0x5F35, + 3295: 0x5F6B, + 3296: 0x5FB4, + 3297: 0x61F2, + 3298: 0x6311, + 3299: 0x66A2, + 3300: 0x671D, + 3301: 0x6F6E, + 3302: 0x7252, + 3303: 0x753A, + 3304: 0x773A, + 3305: 0x8074, + 3306: 0x8139, + 3307: 0x8178, + 3308: 0x8776, + 3309: 0x8ABF, + 3310: 0x8ADC, + 3311: 0x8D85, + 3312: 0x8DF3, + 3313: 0x929A, + 3314: 0x9577, + 3315: 0x9802, + 3316: 0x9CE5, + 3317: 0x52C5, + 3318: 0x6357, + 3319: 0x76F4, + 3320: 0x6715, + 3321: 0x6C88, + 3322: 0x73CD, + 3323: 0x8CC3, + 3324: 0x93AE, + 3325: 0x9673, + 3326: 0x6D25, + 3327: 0x589C, + 3328: 0x690E, + 3329: 0x69CC, + 3330: 0x8FFD, + 3331: 0x939A, + 3332: 0x75DB, + 3333: 0x901A, + 3334: 0x585A, + 3335: 0x6802, + 3336: 0x63B4, + 3337: 0x69FB, + 3338: 0x4F43, + 3339: 0x6F2C, + 3340: 0x67D8, + 3341: 0x8FBB, + 3342: 0x8526, + 3343: 0x7DB4, + 3344: 0x9354, + 3345: 0x693F, + 3346: 0x6F70, + 3347: 0x576A, + 3348: 0x58F7, + 3349: 0x5B2C, + 3350: 0x7D2C, + 3351: 0x722A, + 3352: 0x540A, + 3353: 0x91E3, + 3354: 0x9DB4, + 3355: 0x4EAD, + 3356: 0x4F4E, + 3357: 0x505C, + 3358: 0x5075, + 3359: 0x5243, + 3360: 0x8C9E, + 3361: 0x5448, + 3362: 0x5824, + 3363: 0x5B9A, + 3364: 0x5E1D, + 3365: 0x5E95, + 3366: 0x5EAD, + 3367: 0x5EF7, + 3368: 0x5F1F, + 3369: 0x608C, + 3370: 0x62B5, + 3371: 0x633A, + 3372: 0x63D0, + 3373: 0x68AF, + 3374: 0x6C40, + 3375: 0x7887, + 3376: 0x798E, + 3377: 0x7A0B, + 3378: 0x7DE0, + 3379: 0x8247, + 3380: 0x8A02, + 3381: 0x8AE6, + 3382: 0x8E44, + 3383: 0x9013, + 3384: 0x90B8, + 3385: 0x912D, + 3386: 0x91D8, + 3387: 0x9F0E, + 3388: 0x6CE5, + 3389: 0x6458, + 3390: 0x64E2, + 3391: 0x6575, + 3392: 0x6EF4, + 3393: 0x7684, + 3394: 0x7B1B, + 3395: 0x9069, + 3396: 0x93D1, + 3397: 0x6EBA, + 3398: 0x54F2, + 3399: 0x5FB9, + 3400: 0x64A4, + 3401: 0x8F4D, + 3402: 0x8FED, + 3403: 0x9244, + 3404: 0x5178, + 3405: 0x586B, + 3406: 0x5929, + 3407: 0x5C55, + 3408: 0x5E97, + 3409: 0x6DFB, + 3410: 0x7E8F, + 3411: 0x751C, + 3412: 0x8CBC, + 3413: 0x8EE2, + 3414: 0x985B, + 3415: 0x70B9, + 3416: 0x4F1D, + 3417: 0x6BBF, + 3418: 0x6FB1, + 3419: 0x7530, + 3420: 0x96FB, + 3421: 0x514E, + 3422: 0x5410, + 3423: 0x5835, + 3424: 0x5857, + 3425: 0x59AC, + 3426: 0x5C60, + 3427: 0x5F92, + 3428: 0x6597, + 3429: 0x675C, + 3430: 0x6E21, + 3431: 0x767B, + 3432: 0x83DF, + 3433: 0x8CED, + 3434: 0x9014, + 3435: 0x90FD, + 3436: 0x934D, + 3437: 0x7825, + 3438: 0x783A, + 3439: 0x52AA, + 3440: 0x5EA6, + 3441: 0x571F, + 3442: 0x5974, + 3443: 0x6012, + 3444: 0x5012, + 3445: 0x515A, + 3446: 0x51AC, + 3447: 0x51CD, + 3448: 0x5200, + 3449: 0x5510, + 3450: 0x5854, + 3451: 0x5858, + 3452: 0x5957, + 3453: 0x5B95, + 3454: 0x5CF6, + 3455: 0x5D8B, + 3456: 0x60BC, + 3457: 0x6295, + 3458: 0x642D, + 3459: 0x6771, + 3460: 0x6843, + 3461: 0x68BC, + 3462: 0x68DF, + 3463: 0x76D7, + 3464: 0x6DD8, + 3465: 0x6E6F, + 3466: 0x6D9B, + 3467: 0x706F, + 3468: 0x71C8, + 3469: 0x5F53, + 3470: 0x75D8, + 3471: 0x7977, + 3472: 0x7B49, + 3473: 0x7B54, + 3474: 0x7B52, + 3475: 0x7CD6, + 3476: 0x7D71, + 3477: 0x5230, + 3478: 0x8463, + 3479: 0x8569, + 3480: 0x85E4, + 3481: 0x8A0E, + 3482: 0x8B04, + 3483: 0x8C46, + 3484: 0x8E0F, + 3485: 0x9003, + 3486: 0x900F, + 3487: 0x9419, + 3488: 0x9676, + 3489: 0x982D, + 3490: 0x9A30, + 3491: 0x95D8, + 3492: 0x50CD, + 3493: 0x52D5, + 3494: 0x540C, + 3495: 0x5802, + 3496: 0x5C0E, + 3497: 0x61A7, + 3498: 0x649E, + 3499: 0x6D1E, + 3500: 0x77B3, + 3501: 0x7AE5, + 3502: 0x80F4, + 3503: 0x8404, + 3504: 0x9053, + 3505: 0x9285, + 3506: 0x5CE0, + 3507: 0x9D07, + 3508: 0x533F, + 3509: 0x5F97, + 3510: 0x5FB3, + 3511: 0x6D9C, + 3512: 0x7279, + 3513: 0x7763, + 3514: 0x79BF, + 3515: 0x7BE4, + 3516: 0x6BD2, + 3517: 0x72EC, + 3518: 0x8AAD, + 3519: 0x6803, + 3520: 0x6A61, + 3521: 0x51F8, + 3522: 0x7A81, + 3523: 0x6934, + 3524: 0x5C4A, + 3525: 0x9CF6, + 3526: 0x82EB, + 3527: 0x5BC5, + 3528: 0x9149, + 3529: 0x701E, + 3530: 0x5678, + 3531: 0x5C6F, + 3532: 0x60C7, + 3533: 0x6566, + 3534: 0x6C8C, + 3535: 0x8C5A, + 3536: 0x9041, + 3537: 0x9813, + 3538: 0x5451, + 3539: 0x66C7, + 3540: 0x920D, + 3541: 0x5948, + 3542: 0x90A3, + 3543: 0x5185, + 3544: 0x4E4D, + 3545: 0x51EA, + 3546: 0x8599, + 3547: 0x8B0E, + 3548: 0x7058, + 3549: 0x637A, + 3550: 0x934B, + 3551: 0x6962, + 3552: 0x99B4, + 3553: 0x7E04, + 3554: 0x7577, + 3555: 0x5357, + 3556: 0x6960, + 3557: 0x8EDF, + 3558: 0x96E3, + 3559: 0x6C5D, + 3560: 0x4E8C, + 3561: 0x5C3C, + 3562: 0x5F10, + 3563: 0x8FE9, + 3564: 0x5302, + 3565: 0x8CD1, + 3566: 0x8089, + 3567: 0x8679, + 3568: 0x5EFF, + 3569: 0x65E5, + 3570: 0x4E73, + 3571: 0x5165, + 3572: 0x5982, + 3573: 0x5C3F, + 3574: 0x97EE, + 3575: 0x4EFB, + 3576: 0x598A, + 3577: 0x5FCD, + 3578: 0x8A8D, + 3579: 0x6FE1, + 3580: 0x79B0, + 3581: 0x7962, + 3582: 0x5BE7, + 3583: 0x8471, + 3584: 0x732B, + 3585: 0x71B1, + 3586: 0x5E74, + 3587: 0x5FF5, + 3588: 0x637B, + 3589: 0x649A, + 3590: 0x71C3, + 3591: 0x7C98, + 3592: 0x4E43, + 3593: 0x5EFC, + 3594: 0x4E4B, + 3595: 0x57DC, + 3596: 0x56A2, + 3597: 0x60A9, + 3598: 0x6FC3, + 3599: 0x7D0D, + 3600: 0x80FD, + 3601: 0x8133, + 3602: 0x81BF, + 3603: 0x8FB2, + 3604: 0x8997, + 3605: 0x86A4, + 3606: 0x5DF4, + 3607: 0x628A, + 3608: 0x64AD, + 3609: 0x8987, + 3610: 0x6777, + 3611: 0x6CE2, + 3612: 0x6D3E, + 3613: 0x7436, + 3614: 0x7834, + 3615: 0x5A46, + 3616: 0x7F75, + 3617: 0x82AD, + 3618: 0x99AC, + 3619: 0x4FF3, + 3620: 0x5EC3, + 3621: 0x62DD, + 3622: 0x6392, + 3623: 0x6557, + 3624: 0x676F, + 3625: 0x76C3, + 3626: 0x724C, + 3627: 0x80CC, + 3628: 0x80BA, + 3629: 0x8F29, + 3630: 0x914D, + 3631: 0x500D, + 3632: 0x57F9, + 3633: 0x5A92, + 3634: 0x6885, + 3635: 0x6973, + 3636: 0x7164, + 3637: 0x72FD, + 3638: 0x8CB7, + 3639: 0x58F2, + 3640: 0x8CE0, + 3641: 0x966A, + 3642: 0x9019, + 3643: 0x877F, + 3644: 0x79E4, + 3645: 0x77E7, + 3646: 0x8429, + 3647: 0x4F2F, + 3648: 0x5265, + 3649: 0x535A, + 3650: 0x62CD, + 3651: 0x67CF, + 3652: 0x6CCA, + 3653: 0x767D, + 3654: 0x7B94, + 3655: 0x7C95, + 3656: 0x8236, + 3657: 0x8584, + 3658: 0x8FEB, + 3659: 0x66DD, + 3660: 0x6F20, + 3661: 0x7206, + 3662: 0x7E1B, + 3663: 0x83AB, + 3664: 0x99C1, + 3665: 0x9EA6, + 3666: 0x51FD, + 3667: 0x7BB1, + 3668: 0x7872, + 3669: 0x7BB8, + 3670: 0x8087, + 3671: 0x7B48, + 3672: 0x6AE8, + 3673: 0x5E61, + 3674: 0x808C, + 3675: 0x7551, + 3676: 0x7560, + 3677: 0x516B, + 3678: 0x9262, + 3679: 0x6E8C, + 3680: 0x767A, + 3681: 0x9197, + 3682: 0x9AEA, + 3683: 0x4F10, + 3684: 0x7F70, + 3685: 0x629C, + 3686: 0x7B4F, + 3687: 0x95A5, + 3688: 0x9CE9, + 3689: 0x567A, + 3690: 0x5859, + 3691: 0x86E4, + 3692: 0x96BC, + 3693: 0x4F34, + 3694: 0x5224, + 3695: 0x534A, + 3696: 0x53CD, + 3697: 0x53DB, + 3698: 0x5E06, + 3699: 0x642C, + 3700: 0x6591, + 3701: 0x677F, + 3702: 0x6C3E, + 3703: 0x6C4E, + 3704: 0x7248, + 3705: 0x72AF, + 3706: 0x73ED, + 3707: 0x7554, + 3708: 0x7E41, + 3709: 0x822C, + 3710: 0x85E9, + 3711: 0x8CA9, + 3712: 0x7BC4, + 3713: 0x91C6, + 3714: 0x7169, + 3715: 0x9812, + 3716: 0x98EF, + 3717: 0x633D, + 3718: 0x6669, + 3719: 0x756A, + 3720: 0x76E4, + 3721: 0x78D0, + 3722: 0x8543, + 3723: 0x86EE, + 3724: 0x532A, + 3725: 0x5351, + 3726: 0x5426, + 3727: 0x5983, + 3728: 0x5E87, + 3729: 0x5F7C, + 3730: 0x60B2, + 3731: 0x6249, + 3732: 0x6279, + 3733: 0x62AB, + 3734: 0x6590, + 3735: 0x6BD4, + 3736: 0x6CCC, + 3737: 0x75B2, + 3738: 0x76AE, + 3739: 0x7891, + 3740: 0x79D8, + 3741: 0x7DCB, + 3742: 0x7F77, + 3743: 0x80A5, + 3744: 0x88AB, + 3745: 0x8AB9, + 3746: 0x8CBB, + 3747: 0x907F, + 3748: 0x975E, + 3749: 0x98DB, + 3750: 0x6A0B, + 3751: 0x7C38, + 3752: 0x5099, + 3753: 0x5C3E, + 3754: 0x5FAE, + 3755: 0x6787, + 3756: 0x6BD8, + 3757: 0x7435, + 3758: 0x7709, + 3759: 0x7F8E, + 3760: 0x9F3B, + 3761: 0x67CA, + 3762: 0x7A17, + 3763: 0x5339, + 3764: 0x758B, + 3765: 0x9AED, + 3766: 0x5F66, + 3767: 0x819D, + 3768: 0x83F1, + 3769: 0x8098, + 3770: 0x5F3C, + 3771: 0x5FC5, + 3772: 0x7562, + 3773: 0x7B46, + 3774: 0x903C, + 3775: 0x6867, + 3776: 0x59EB, + 3777: 0x5A9B, + 3778: 0x7D10, + 3779: 0x767E, + 3780: 0x8B2C, + 3781: 0x4FF5, + 3782: 0x5F6A, + 3783: 0x6A19, + 3784: 0x6C37, + 3785: 0x6F02, + 3786: 0x74E2, + 3787: 0x7968, + 3788: 0x8868, + 3789: 0x8A55, + 3790: 0x8C79, + 3791: 0x5EDF, + 3792: 0x63CF, + 3793: 0x75C5, + 3794: 0x79D2, + 3795: 0x82D7, + 3796: 0x9328, + 3797: 0x92F2, + 3798: 0x849C, + 3799: 0x86ED, + 3800: 0x9C2D, + 3801: 0x54C1, + 3802: 0x5F6C, + 3803: 0x658C, + 3804: 0x6D5C, + 3805: 0x7015, + 3806: 0x8CA7, + 3807: 0x8CD3, + 3808: 0x983B, + 3809: 0x654F, + 3810: 0x74F6, + 3811: 0x4E0D, + 3812: 0x4ED8, + 3813: 0x57E0, + 3814: 0x592B, + 3815: 0x5A66, + 3816: 0x5BCC, + 3817: 0x51A8, + 3818: 0x5E03, + 3819: 0x5E9C, + 3820: 0x6016, + 3821: 0x6276, + 3822: 0x6577, + 3823: 0x65A7, + 3824: 0x666E, + 3825: 0x6D6E, + 3826: 0x7236, + 3827: 0x7B26, + 3828: 0x8150, + 3829: 0x819A, + 3830: 0x8299, + 3831: 0x8B5C, + 3832: 0x8CA0, + 3833: 0x8CE6, + 3834: 0x8D74, + 3835: 0x961C, + 3836: 0x9644, + 3837: 0x4FAE, + 3838: 0x64AB, + 3839: 0x6B66, + 3840: 0x821E, + 3841: 0x8461, + 3842: 0x856A, + 3843: 0x90E8, + 3844: 0x5C01, + 3845: 0x6953, + 3846: 0x98A8, + 3847: 0x847A, + 3848: 0x8557, + 3849: 0x4F0F, + 3850: 0x526F, + 3851: 0x5FA9, + 3852: 0x5E45, + 3853: 0x670D, + 3854: 0x798F, + 3855: 0x8179, + 3856: 0x8907, + 3857: 0x8986, + 3858: 0x6DF5, + 3859: 0x5F17, + 3860: 0x6255, + 3861: 0x6CB8, + 3862: 0x4ECF, + 3863: 0x7269, + 3864: 0x9B92, + 3865: 0x5206, + 3866: 0x543B, + 3867: 0x5674, + 3868: 0x58B3, + 3869: 0x61A4, + 3870: 0x626E, + 3871: 0x711A, + 3872: 0x596E, + 3873: 0x7C89, + 3874: 0x7CDE, + 3875: 0x7D1B, + 3876: 0x96F0, + 3877: 0x6587, + 3878: 0x805E, + 3879: 0x4E19, + 3880: 0x4F75, + 3881: 0x5175, + 3882: 0x5840, + 3883: 0x5E63, + 3884: 0x5E73, + 3885: 0x5F0A, + 3886: 0x67C4, + 3887: 0x4E26, + 3888: 0x853D, + 3889: 0x9589, + 3890: 0x965B, + 3891: 0x7C73, + 3892: 0x9801, + 3893: 0x50FB, + 3894: 0x58C1, + 3895: 0x7656, + 3896: 0x78A7, + 3897: 0x5225, + 3898: 0x77A5, + 3899: 0x8511, + 3900: 0x7B86, + 3901: 0x504F, + 3902: 0x5909, + 3903: 0x7247, + 3904: 0x7BC7, + 3905: 0x7DE8, + 3906: 0x8FBA, + 3907: 0x8FD4, + 3908: 0x904D, + 3909: 0x4FBF, + 3910: 0x52C9, + 3911: 0x5A29, + 3912: 0x5F01, + 3913: 0x97AD, + 3914: 0x4FDD, + 3915: 0x8217, + 3916: 0x92EA, + 3917: 0x5703, + 3918: 0x6355, + 3919: 0x6B69, + 3920: 0x752B, + 3921: 0x88DC, + 3922: 0x8F14, + 3923: 0x7A42, + 3924: 0x52DF, + 3925: 0x5893, + 3926: 0x6155, + 3927: 0x620A, + 3928: 0x66AE, + 3929: 0x6BCD, + 3930: 0x7C3F, + 3931: 0x83E9, + 3932: 0x5023, + 3933: 0x4FF8, + 3934: 0x5305, + 3935: 0x5446, + 3936: 0x5831, + 3937: 0x5949, + 3938: 0x5B9D, + 3939: 0x5CF0, + 3940: 0x5CEF, + 3941: 0x5D29, + 3942: 0x5E96, + 3943: 0x62B1, + 3944: 0x6367, + 3945: 0x653E, + 3946: 0x65B9, + 3947: 0x670B, + 3948: 0x6CD5, + 3949: 0x6CE1, + 3950: 0x70F9, + 3951: 0x7832, + 3952: 0x7E2B, + 3953: 0x80DE, + 3954: 0x82B3, + 3955: 0x840C, + 3956: 0x84EC, + 3957: 0x8702, + 3958: 0x8912, + 3959: 0x8A2A, + 3960: 0x8C4A, + 3961: 0x90A6, + 3962: 0x92D2, + 3963: 0x98FD, + 3964: 0x9CF3, + 3965: 0x9D6C, + 3966: 0x4E4F, + 3967: 0x4EA1, + 3968: 0x508D, + 3969: 0x5256, + 3970: 0x574A, + 3971: 0x59A8, + 3972: 0x5E3D, + 3973: 0x5FD8, + 3974: 0x5FD9, + 3975: 0x623F, + 3976: 0x66B4, + 3977: 0x671B, + 3978: 0x67D0, + 3979: 0x68D2, + 3980: 0x5192, + 3981: 0x7D21, + 3982: 0x80AA, + 3983: 0x81A8, + 3984: 0x8B00, + 3985: 0x8C8C, + 3986: 0x8CBF, + 3987: 0x927E, + 3988: 0x9632, + 3989: 0x5420, + 3990: 0x982C, + 3991: 0x5317, + 3992: 0x50D5, + 3993: 0x535C, + 3994: 0x58A8, + 3995: 0x64B2, + 3996: 0x6734, + 3997: 0x7267, + 3998: 0x7766, + 3999: 0x7A46, + 4000: 0x91E6, + 4001: 0x52C3, + 4002: 0x6CA1, + 4003: 0x6B86, + 4004: 0x5800, + 4005: 0x5E4C, + 4006: 0x5954, + 4007: 0x672C, + 4008: 0x7FFB, + 4009: 0x51E1, + 4010: 0x76C6, + 4011: 0x6469, + 4012: 0x78E8, + 4013: 0x9B54, + 4014: 0x9EBB, + 4015: 0x57CB, + 4016: 0x59B9, + 4017: 0x6627, + 4018: 0x679A, + 4019: 0x6BCE, + 4020: 0x54E9, + 4021: 0x69D9, + 4022: 0x5E55, + 4023: 0x819C, + 4024: 0x6795, + 4025: 0x9BAA, + 4026: 0x67FE, + 4027: 0x9C52, + 4028: 0x685D, + 4029: 0x4EA6, + 4030: 0x4FE3, + 4031: 0x53C8, + 4032: 0x62B9, + 4033: 0x672B, + 4034: 0x6CAB, + 4035: 0x8FC4, + 4036: 0x4FAD, + 4037: 0x7E6D, + 4038: 0x9EBF, + 4039: 0x4E07, + 4040: 0x6162, + 4041: 0x6E80, + 4042: 0x6F2B, + 4043: 0x8513, + 4044: 0x5473, + 4045: 0x672A, + 4046: 0x9B45, + 4047: 0x5DF3, + 4048: 0x7B95, + 4049: 0x5CAC, + 4050: 0x5BC6, + 4051: 0x871C, + 4052: 0x6E4A, + 4053: 0x84D1, + 4054: 0x7A14, + 4055: 0x8108, + 4056: 0x5999, + 4057: 0x7C8D, + 4058: 0x6C11, + 4059: 0x7720, + 4060: 0x52D9, + 4061: 0x5922, + 4062: 0x7121, + 4063: 0x725F, + 4064: 0x77DB, + 4065: 0x9727, + 4066: 0x9D61, + 4067: 0x690B, + 4068: 0x5A7F, + 4069: 0x5A18, + 4070: 0x51A5, + 4071: 0x540D, + 4072: 0x547D, + 4073: 0x660E, + 4074: 0x76DF, + 4075: 0x8FF7, + 4076: 0x9298, + 4077: 0x9CF4, + 4078: 0x59EA, + 4079: 0x725D, + 4080: 0x6EC5, + 4081: 0x514D, + 4082: 0x68C9, + 4083: 0x7DBF, + 4084: 0x7DEC, + 4085: 0x9762, + 4086: 0x9EBA, + 4087: 0x6478, + 4088: 0x6A21, + 4089: 0x8302, + 4090: 0x5984, + 4091: 0x5B5F, + 4092: 0x6BDB, + 4093: 0x731B, + 4094: 0x76F2, + 4095: 0x7DB2, + 4096: 0x8017, + 4097: 0x8499, + 4098: 0x5132, + 4099: 0x6728, + 4100: 0x9ED9, + 4101: 0x76EE, + 4102: 0x6762, + 4103: 0x52FF, + 4104: 0x9905, + 4105: 0x5C24, + 4106: 0x623B, + 4107: 0x7C7E, + 4108: 0x8CB0, + 4109: 0x554F, + 4110: 0x60B6, + 4111: 0x7D0B, + 4112: 0x9580, + 4113: 0x5301, + 4114: 0x4E5F, + 4115: 0x51B6, + 4116: 0x591C, + 4117: 0x723A, + 4118: 0x8036, + 4119: 0x91CE, + 4120: 0x5F25, + 4121: 0x77E2, + 4122: 0x5384, + 4123: 0x5F79, + 4124: 0x7D04, + 4125: 0x85AC, + 4126: 0x8A33, + 4127: 0x8E8D, + 4128: 0x9756, + 4129: 0x67F3, + 4130: 0x85AE, + 4131: 0x9453, + 4132: 0x6109, + 4133: 0x6108, + 4134: 0x6CB9, + 4135: 0x7652, + 4136: 0x8AED, + 4137: 0x8F38, + 4138: 0x552F, + 4139: 0x4F51, + 4140: 0x512A, + 4141: 0x52C7, + 4142: 0x53CB, + 4143: 0x5BA5, + 4144: 0x5E7D, + 4145: 0x60A0, + 4146: 0x6182, + 4147: 0x63D6, + 4148: 0x6709, + 4149: 0x67DA, + 4150: 0x6E67, + 4151: 0x6D8C, + 4152: 0x7336, + 4153: 0x7337, + 4154: 0x7531, + 4155: 0x7950, + 4156: 0x88D5, + 4157: 0x8A98, + 4158: 0x904A, + 4159: 0x9091, + 4160: 0x90F5, + 4161: 0x96C4, + 4162: 0x878D, + 4163: 0x5915, + 4164: 0x4E88, + 4165: 0x4F59, + 4166: 0x4E0E, + 4167: 0x8A89, + 4168: 0x8F3F, + 4169: 0x9810, + 4170: 0x50AD, + 4171: 0x5E7C, + 4172: 0x5996, + 4173: 0x5BB9, + 4174: 0x5EB8, + 4175: 0x63DA, + 4176: 0x63FA, + 4177: 0x64C1, + 4178: 0x66DC, + 4179: 0x694A, + 4180: 0x69D8, + 4181: 0x6D0B, + 4182: 0x6EB6, + 4183: 0x7194, + 4184: 0x7528, + 4185: 0x7AAF, + 4186: 0x7F8A, + 4187: 0x8000, + 4188: 0x8449, + 4189: 0x84C9, + 4190: 0x8981, + 4191: 0x8B21, + 4192: 0x8E0A, + 4193: 0x9065, + 4194: 0x967D, + 4195: 0x990A, + 4196: 0x617E, + 4197: 0x6291, + 4198: 0x6B32, + 4199: 0x6C83, + 4200: 0x6D74, + 4201: 0x7FCC, + 4202: 0x7FFC, + 4203: 0x6DC0, + 4204: 0x7F85, + 4205: 0x87BA, + 4206: 0x88F8, + 4207: 0x6765, + 4208: 0x83B1, + 4209: 0x983C, + 4210: 0x96F7, + 4211: 0x6D1B, + 4212: 0x7D61, + 4213: 0x843D, + 4214: 0x916A, + 4215: 0x4E71, + 4216: 0x5375, + 4217: 0x5D50, + 4218: 0x6B04, + 4219: 0x6FEB, + 4220: 0x85CD, + 4221: 0x862D, + 4222: 0x89A7, + 4223: 0x5229, + 4224: 0x540F, + 4225: 0x5C65, + 4226: 0x674E, + 4227: 0x68A8, + 4228: 0x7406, + 4229: 0x7483, + 4230: 0x75E2, + 4231: 0x88CF, + 4232: 0x88E1, + 4233: 0x91CC, + 4234: 0x96E2, + 4235: 0x9678, + 4236: 0x5F8B, + 4237: 0x7387, + 4238: 0x7ACB, + 4239: 0x844E, + 4240: 0x63A0, + 4241: 0x7565, + 4242: 0x5289, + 4243: 0x6D41, + 4244: 0x6E9C, + 4245: 0x7409, + 4246: 0x7559, + 4247: 0x786B, + 4248: 0x7C92, + 4249: 0x9686, + 4250: 0x7ADC, + 4251: 0x9F8D, + 4252: 0x4FB6, + 4253: 0x616E, + 4254: 0x65C5, + 4255: 0x865C, + 4256: 0x4E86, + 4257: 0x4EAE, + 4258: 0x50DA, + 4259: 0x4E21, + 4260: 0x51CC, + 4261: 0x5BEE, + 4262: 0x6599, + 4263: 0x6881, + 4264: 0x6DBC, + 4265: 0x731F, + 4266: 0x7642, + 4267: 0x77AD, + 4268: 0x7A1C, + 4269: 0x7CE7, + 4270: 0x826F, + 4271: 0x8AD2, + 4272: 0x907C, + 4273: 0x91CF, + 4274: 0x9675, + 4275: 0x9818, + 4276: 0x529B, + 4277: 0x7DD1, + 4278: 0x502B, + 4279: 0x5398, + 4280: 0x6797, + 4281: 0x6DCB, + 4282: 0x71D0, + 4283: 0x7433, + 4284: 0x81E8, + 4285: 0x8F2A, + 4286: 0x96A3, + 4287: 0x9C57, + 4288: 0x9E9F, + 4289: 0x7460, + 4290: 0x5841, + 4291: 0x6D99, + 4292: 0x7D2F, + 4293: 0x985E, + 4294: 0x4EE4, + 4295: 0x4F36, + 4296: 0x4F8B, + 4297: 0x51B7, + 4298: 0x52B1, + 4299: 0x5DBA, + 4300: 0x601C, + 4301: 0x73B2, + 4302: 0x793C, + 4303: 0x82D3, + 4304: 0x9234, + 4305: 0x96B7, + 4306: 0x96F6, + 4307: 0x970A, + 4308: 0x9E97, + 4309: 0x9F62, + 4310: 0x66A6, + 4311: 0x6B74, + 4312: 0x5217, + 4313: 0x52A3, + 4314: 0x70C8, + 4315: 0x88C2, + 4316: 0x5EC9, + 4317: 0x604B, + 4318: 0x6190, + 4319: 0x6F23, + 4320: 0x7149, + 4321: 0x7C3E, + 4322: 0x7DF4, + 4323: 0x806F, + 4324: 0x84EE, + 4325: 0x9023, + 4326: 0x932C, + 4327: 0x5442, + 4328: 0x9B6F, + 4329: 0x6AD3, + 4330: 0x7089, + 4331: 0x8CC2, + 4332: 0x8DEF, + 4333: 0x9732, + 4334: 0x52B4, + 4335: 0x5A41, + 4336: 0x5ECA, + 4337: 0x5F04, + 4338: 0x6717, + 4339: 0x697C, + 4340: 0x6994, + 4341: 0x6D6A, + 4342: 0x6F0F, + 4343: 0x7262, + 4344: 0x72FC, + 4345: 0x7BED, + 4346: 0x8001, + 4347: 0x807E, + 4348: 0x874B, + 4349: 0x90CE, + 4350: 0x516D, + 4351: 0x9E93, + 4352: 0x7984, + 4353: 0x808B, + 4354: 0x9332, + 4355: 0x8AD6, + 4356: 0x502D, + 4357: 0x548C, + 4358: 0x8A71, + 4359: 0x6B6A, + 4360: 0x8CC4, + 4361: 0x8107, + 4362: 0x60D1, + 4363: 0x67A0, + 4364: 0x9DF2, + 4365: 0x4E99, + 4366: 0x4E98, + 4367: 0x9C10, + 4368: 0x8A6B, + 4369: 0x85C1, + 4370: 0x8568, + 4371: 0x6900, + 4372: 0x6E7E, + 4373: 0x7897, + 4374: 0x8155, + 4418: 0x5F0C, + 4419: 0x4E10, + 4420: 0x4E15, + 4421: 0x4E2A, + 4422: 0x4E31, + 4423: 0x4E36, + 4424: 0x4E3C, + 4425: 0x4E3F, + 4426: 0x4E42, + 4427: 0x4E56, + 4428: 0x4E58, + 4429: 0x4E82, + 4430: 0x4E85, + 4431: 0x8C6B, + 4432: 0x4E8A, + 4433: 0x8212, + 4434: 0x5F0D, + 4435: 0x4E8E, + 4436: 0x4E9E, + 4437: 0x4E9F, + 4438: 0x4EA0, + 4439: 0x4EA2, + 4440: 0x4EB0, + 4441: 0x4EB3, + 4442: 0x4EB6, + 4443: 0x4ECE, + 4444: 0x4ECD, + 4445: 0x4EC4, + 4446: 0x4EC6, + 4447: 0x4EC2, + 4448: 0x4ED7, + 4449: 0x4EDE, + 4450: 0x4EED, + 4451: 0x4EDF, + 4452: 0x4EF7, + 4453: 0x4F09, + 4454: 0x4F5A, + 4455: 0x4F30, + 4456: 0x4F5B, + 4457: 0x4F5D, + 4458: 0x4F57, + 4459: 0x4F47, + 4460: 0x4F76, + 4461: 0x4F88, + 4462: 0x4F8F, + 4463: 0x4F98, + 4464: 0x4F7B, + 4465: 0x4F69, + 4466: 0x4F70, + 4467: 0x4F91, + 4468: 0x4F6F, + 4469: 0x4F86, + 4470: 0x4F96, + 4471: 0x5118, + 4472: 0x4FD4, + 4473: 0x4FDF, + 4474: 0x4FCE, + 4475: 0x4FD8, + 4476: 0x4FDB, + 4477: 0x4FD1, + 4478: 0x4FDA, + 4479: 0x4FD0, + 4480: 0x4FE4, + 4481: 0x4FE5, + 4482: 0x501A, + 4483: 0x5028, + 4484: 0x5014, + 4485: 0x502A, + 4486: 0x5025, + 4487: 0x5005, + 4488: 0x4F1C, + 4489: 0x4FF6, + 4490: 0x5021, + 4491: 0x5029, + 4492: 0x502C, + 4493: 0x4FFE, + 4494: 0x4FEF, + 4495: 0x5011, + 4496: 0x5006, + 4497: 0x5043, + 4498: 0x5047, + 4499: 0x6703, + 4500: 0x5055, + 4501: 0x5050, + 4502: 0x5048, + 4503: 0x505A, + 4504: 0x5056, + 4505: 0x506C, + 4506: 0x5078, + 4507: 0x5080, + 4508: 0x509A, + 4509: 0x5085, + 4510: 0x50B4, + 4511: 0x50B2, + 4512: 0x50C9, + 4513: 0x50CA, + 4514: 0x50B3, + 4515: 0x50C2, + 4516: 0x50D6, + 4517: 0x50DE, + 4518: 0x50E5, + 4519: 0x50ED, + 4520: 0x50E3, + 4521: 0x50EE, + 4522: 0x50F9, + 4523: 0x50F5, + 4524: 0x5109, + 4525: 0x5101, + 4526: 0x5102, + 4527: 0x5116, + 4528: 0x5115, + 4529: 0x5114, + 4530: 0x511A, + 4531: 0x5121, + 4532: 0x513A, + 4533: 0x5137, + 4534: 0x513C, + 4535: 0x513B, + 4536: 0x513F, + 4537: 0x5140, + 4538: 0x5152, + 4539: 0x514C, + 4540: 0x5154, + 4541: 0x5162, + 4542: 0x7AF8, + 4543: 0x5169, + 4544: 0x516A, + 4545: 0x516E, + 4546: 0x5180, + 4547: 0x5182, + 4548: 0x56D8, + 4549: 0x518C, + 4550: 0x5189, + 4551: 0x518F, + 4552: 0x5191, + 4553: 0x5193, + 4554: 0x5195, + 4555: 0x5196, + 4556: 0x51A4, + 4557: 0x51A6, + 4558: 0x51A2, + 4559: 0x51A9, + 4560: 0x51AA, + 4561: 0x51AB, + 4562: 0x51B3, + 4563: 0x51B1, + 4564: 0x51B2, + 4565: 0x51B0, + 4566: 0x51B5, + 4567: 0x51BD, + 4568: 0x51C5, + 4569: 0x51C9, + 4570: 0x51DB, + 4571: 0x51E0, + 4572: 0x8655, + 4573: 0x51E9, + 4574: 0x51ED, + 4575: 0x51F0, + 4576: 0x51F5, + 4577: 0x51FE, + 4578: 0x5204, + 4579: 0x520B, + 4580: 0x5214, + 4581: 0x520E, + 4582: 0x5227, + 4583: 0x522A, + 4584: 0x522E, + 4585: 0x5233, + 4586: 0x5239, + 4587: 0x524F, + 4588: 0x5244, + 4589: 0x524B, + 4590: 0x524C, + 4591: 0x525E, + 4592: 0x5254, + 4593: 0x526A, + 4594: 0x5274, + 4595: 0x5269, + 4596: 0x5273, + 4597: 0x527F, + 4598: 0x527D, + 4599: 0x528D, + 4600: 0x5294, + 4601: 0x5292, + 4602: 0x5271, + 4603: 0x5288, + 4604: 0x5291, + 4605: 0x8FA8, + 4606: 0x8FA7, + 4607: 0x52AC, + 4608: 0x52AD, + 4609: 0x52BC, + 4610: 0x52B5, + 4611: 0x52C1, + 4612: 0x52CD, + 4613: 0x52D7, + 4614: 0x52DE, + 4615: 0x52E3, + 4616: 0x52E6, + 4617: 0x98ED, + 4618: 0x52E0, + 4619: 0x52F3, + 4620: 0x52F5, + 4621: 0x52F8, + 4622: 0x52F9, + 4623: 0x5306, + 4624: 0x5308, + 4625: 0x7538, + 4626: 0x530D, + 4627: 0x5310, + 4628: 0x530F, + 4629: 0x5315, + 4630: 0x531A, + 4631: 0x5323, + 4632: 0x532F, + 4633: 0x5331, + 4634: 0x5333, + 4635: 0x5338, + 4636: 0x5340, + 4637: 0x5346, + 4638: 0x5345, + 4639: 0x4E17, + 4640: 0x5349, + 4641: 0x534D, + 4642: 0x51D6, + 4643: 0x535E, + 4644: 0x5369, + 4645: 0x536E, + 4646: 0x5918, + 4647: 0x537B, + 4648: 0x5377, + 4649: 0x5382, + 4650: 0x5396, + 4651: 0x53A0, + 4652: 0x53A6, + 4653: 0x53A5, + 4654: 0x53AE, + 4655: 0x53B0, + 4656: 0x53B6, + 4657: 0x53C3, + 4658: 0x7C12, + 4659: 0x96D9, + 4660: 0x53DF, + 4661: 0x66FC, + 4662: 0x71EE, + 4663: 0x53EE, + 4664: 0x53E8, + 4665: 0x53ED, + 4666: 0x53FA, + 4667: 0x5401, + 4668: 0x543D, + 4669: 0x5440, + 4670: 0x542C, + 4671: 0x542D, + 4672: 0x543C, + 4673: 0x542E, + 4674: 0x5436, + 4675: 0x5429, + 4676: 0x541D, + 4677: 0x544E, + 4678: 0x548F, + 4679: 0x5475, + 4680: 0x548E, + 4681: 0x545F, + 4682: 0x5471, + 4683: 0x5477, + 4684: 0x5470, + 4685: 0x5492, + 4686: 0x547B, + 4687: 0x5480, + 4688: 0x5476, + 4689: 0x5484, + 4690: 0x5490, + 4691: 0x5486, + 4692: 0x54C7, + 4693: 0x54A2, + 4694: 0x54B8, + 4695: 0x54A5, + 4696: 0x54AC, + 4697: 0x54C4, + 4698: 0x54C8, + 4699: 0x54A8, + 4700: 0x54AB, + 4701: 0x54C2, + 4702: 0x54A4, + 4703: 0x54BE, + 4704: 0x54BC, + 4705: 0x54D8, + 4706: 0x54E5, + 4707: 0x54E6, + 4708: 0x550F, + 4709: 0x5514, + 4710: 0x54FD, + 4711: 0x54EE, + 4712: 0x54ED, + 4713: 0x54FA, + 4714: 0x54E2, + 4715: 0x5539, + 4716: 0x5540, + 4717: 0x5563, + 4718: 0x554C, + 4719: 0x552E, + 4720: 0x555C, + 4721: 0x5545, + 4722: 0x5556, + 4723: 0x5557, + 4724: 0x5538, + 4725: 0x5533, + 4726: 0x555D, + 4727: 0x5599, + 4728: 0x5580, + 4729: 0x54AF, + 4730: 0x558A, + 4731: 0x559F, + 4732: 0x557B, + 4733: 0x557E, + 4734: 0x5598, + 4735: 0x559E, + 4736: 0x55AE, + 4737: 0x557C, + 4738: 0x5583, + 4739: 0x55A9, + 4740: 0x5587, + 4741: 0x55A8, + 4742: 0x55DA, + 4743: 0x55C5, + 4744: 0x55DF, + 4745: 0x55C4, + 4746: 0x55DC, + 4747: 0x55E4, + 4748: 0x55D4, + 4749: 0x5614, + 4750: 0x55F7, + 4751: 0x5616, + 4752: 0x55FE, + 4753: 0x55FD, + 4754: 0x561B, + 4755: 0x55F9, + 4756: 0x564E, + 4757: 0x5650, + 4758: 0x71DF, + 4759: 0x5634, + 4760: 0x5636, + 4761: 0x5632, + 4762: 0x5638, + 4763: 0x566B, + 4764: 0x5664, + 4765: 0x562F, + 4766: 0x566C, + 4767: 0x566A, + 4768: 0x5686, + 4769: 0x5680, + 4770: 0x568A, + 4771: 0x56A0, + 4772: 0x5694, + 4773: 0x568F, + 4774: 0x56A5, + 4775: 0x56AE, + 4776: 0x56B6, + 4777: 0x56B4, + 4778: 0x56C2, + 4779: 0x56BC, + 4780: 0x56C1, + 4781: 0x56C3, + 4782: 0x56C0, + 4783: 0x56C8, + 4784: 0x56CE, + 4785: 0x56D1, + 4786: 0x56D3, + 4787: 0x56D7, + 4788: 0x56EE, + 4789: 0x56F9, + 4790: 0x5700, + 4791: 0x56FF, + 4792: 0x5704, + 4793: 0x5709, + 4794: 0x5708, + 4795: 0x570B, + 4796: 0x570D, + 4797: 0x5713, + 4798: 0x5718, + 4799: 0x5716, + 4800: 0x55C7, + 4801: 0x571C, + 4802: 0x5726, + 4803: 0x5737, + 4804: 0x5738, + 4805: 0x574E, + 4806: 0x573B, + 4807: 0x5740, + 4808: 0x574F, + 4809: 0x5769, + 4810: 0x57C0, + 4811: 0x5788, + 4812: 0x5761, + 4813: 0x577F, + 4814: 0x5789, + 4815: 0x5793, + 4816: 0x57A0, + 4817: 0x57B3, + 4818: 0x57A4, + 4819: 0x57AA, + 4820: 0x57B0, + 4821: 0x57C3, + 4822: 0x57C6, + 4823: 0x57D4, + 4824: 0x57D2, + 4825: 0x57D3, + 4826: 0x580A, + 4827: 0x57D6, + 4828: 0x57E3, + 4829: 0x580B, + 4830: 0x5819, + 4831: 0x581D, + 4832: 0x5872, + 4833: 0x5821, + 4834: 0x5862, + 4835: 0x584B, + 4836: 0x5870, + 4837: 0x6BC0, + 4838: 0x5852, + 4839: 0x583D, + 4840: 0x5879, + 4841: 0x5885, + 4842: 0x58B9, + 4843: 0x589F, + 4844: 0x58AB, + 4845: 0x58BA, + 4846: 0x58DE, + 4847: 0x58BB, + 4848: 0x58B8, + 4849: 0x58AE, + 4850: 0x58C5, + 4851: 0x58D3, + 4852: 0x58D1, + 4853: 0x58D7, + 4854: 0x58D9, + 4855: 0x58D8, + 4856: 0x58E5, + 4857: 0x58DC, + 4858: 0x58E4, + 4859: 0x58DF, + 4860: 0x58EF, + 4861: 0x58FA, + 4862: 0x58F9, + 4863: 0x58FB, + 4864: 0x58FC, + 4865: 0x58FD, + 4866: 0x5902, + 4867: 0x590A, + 4868: 0x5910, + 4869: 0x591B, + 4870: 0x68A6, + 4871: 0x5925, + 4872: 0x592C, + 4873: 0x592D, + 4874: 0x5932, + 4875: 0x5938, + 4876: 0x593E, + 4877: 0x7AD2, + 4878: 0x5955, + 4879: 0x5950, + 4880: 0x594E, + 4881: 0x595A, + 4882: 0x5958, + 4883: 0x5962, + 4884: 0x5960, + 4885: 0x5967, + 4886: 0x596C, + 4887: 0x5969, + 4888: 0x5978, + 4889: 0x5981, + 4890: 0x599D, + 4891: 0x4F5E, + 4892: 0x4FAB, + 4893: 0x59A3, + 4894: 0x59B2, + 4895: 0x59C6, + 4896: 0x59E8, + 4897: 0x59DC, + 4898: 0x598D, + 4899: 0x59D9, + 4900: 0x59DA, + 4901: 0x5A25, + 4902: 0x5A1F, + 4903: 0x5A11, + 4904: 0x5A1C, + 4905: 0x5A09, + 4906: 0x5A1A, + 4907: 0x5A40, + 4908: 0x5A6C, + 4909: 0x5A49, + 4910: 0x5A35, + 4911: 0x5A36, + 4912: 0x5A62, + 4913: 0x5A6A, + 4914: 0x5A9A, + 4915: 0x5ABC, + 4916: 0x5ABE, + 4917: 0x5ACB, + 4918: 0x5AC2, + 4919: 0x5ABD, + 4920: 0x5AE3, + 4921: 0x5AD7, + 4922: 0x5AE6, + 4923: 0x5AE9, + 4924: 0x5AD6, + 4925: 0x5AFA, + 4926: 0x5AFB, + 4927: 0x5B0C, + 4928: 0x5B0B, + 4929: 0x5B16, + 4930: 0x5B32, + 4931: 0x5AD0, + 4932: 0x5B2A, + 4933: 0x5B36, + 4934: 0x5B3E, + 4935: 0x5B43, + 4936: 0x5B45, + 4937: 0x5B40, + 4938: 0x5B51, + 4939: 0x5B55, + 4940: 0x5B5A, + 4941: 0x5B5B, + 4942: 0x5B65, + 4943: 0x5B69, + 4944: 0x5B70, + 4945: 0x5B73, + 4946: 0x5B75, + 4947: 0x5B78, + 4948: 0x6588, + 4949: 0x5B7A, + 4950: 0x5B80, + 4951: 0x5B83, + 4952: 0x5BA6, + 4953: 0x5BB8, + 4954: 0x5BC3, + 4955: 0x5BC7, + 4956: 0x5BC9, + 4957: 0x5BD4, + 4958: 0x5BD0, + 4959: 0x5BE4, + 4960: 0x5BE6, + 4961: 0x5BE2, + 4962: 0x5BDE, + 4963: 0x5BE5, + 4964: 0x5BEB, + 4965: 0x5BF0, + 4966: 0x5BF6, + 4967: 0x5BF3, + 4968: 0x5C05, + 4969: 0x5C07, + 4970: 0x5C08, + 4971: 0x5C0D, + 4972: 0x5C13, + 4973: 0x5C20, + 4974: 0x5C22, + 4975: 0x5C28, + 4976: 0x5C38, + 4977: 0x5C39, + 4978: 0x5C41, + 4979: 0x5C46, + 4980: 0x5C4E, + 4981: 0x5C53, + 4982: 0x5C50, + 4983: 0x5C4F, + 4984: 0x5B71, + 4985: 0x5C6C, + 4986: 0x5C6E, + 4987: 0x4E62, + 4988: 0x5C76, + 4989: 0x5C79, + 4990: 0x5C8C, + 4991: 0x5C91, + 4992: 0x5C94, + 4993: 0x599B, + 4994: 0x5CAB, + 4995: 0x5CBB, + 4996: 0x5CB6, + 4997: 0x5CBC, + 4998: 0x5CB7, + 4999: 0x5CC5, + 5000: 0x5CBE, + 5001: 0x5CC7, + 5002: 0x5CD9, + 5003: 0x5CE9, + 5004: 0x5CFD, + 5005: 0x5CFA, + 5006: 0x5CED, + 5007: 0x5D8C, + 5008: 0x5CEA, + 5009: 0x5D0B, + 5010: 0x5D15, + 5011: 0x5D17, + 5012: 0x5D5C, + 5013: 0x5D1F, + 5014: 0x5D1B, + 5015: 0x5D11, + 5016: 0x5D14, + 5017: 0x5D22, + 5018: 0x5D1A, + 5019: 0x5D19, + 5020: 0x5D18, + 5021: 0x5D4C, + 5022: 0x5D52, + 5023: 0x5D4E, + 5024: 0x5D4B, + 5025: 0x5D6C, + 5026: 0x5D73, + 5027: 0x5D76, + 5028: 0x5D87, + 5029: 0x5D84, + 5030: 0x5D82, + 5031: 0x5DA2, + 5032: 0x5D9D, + 5033: 0x5DAC, + 5034: 0x5DAE, + 5035: 0x5DBD, + 5036: 0x5D90, + 5037: 0x5DB7, + 5038: 0x5DBC, + 5039: 0x5DC9, + 5040: 0x5DCD, + 5041: 0x5DD3, + 5042: 0x5DD2, + 5043: 0x5DD6, + 5044: 0x5DDB, + 5045: 0x5DEB, + 5046: 0x5DF2, + 5047: 0x5DF5, + 5048: 0x5E0B, + 5049: 0x5E1A, + 5050: 0x5E19, + 5051: 0x5E11, + 5052: 0x5E1B, + 5053: 0x5E36, + 5054: 0x5E37, + 5055: 0x5E44, + 5056: 0x5E43, + 5057: 0x5E40, + 5058: 0x5E4E, + 5059: 0x5E57, + 5060: 0x5E54, + 5061: 0x5E5F, + 5062: 0x5E62, + 5063: 0x5E64, + 5064: 0x5E47, + 5065: 0x5E75, + 5066: 0x5E76, + 5067: 0x5E7A, + 5068: 0x9EBC, + 5069: 0x5E7F, + 5070: 0x5EA0, + 5071: 0x5EC1, + 5072: 0x5EC2, + 5073: 0x5EC8, + 5074: 0x5ED0, + 5075: 0x5ECF, + 5076: 0x5ED6, + 5077: 0x5EE3, + 5078: 0x5EDD, + 5079: 0x5EDA, + 5080: 0x5EDB, + 5081: 0x5EE2, + 5082: 0x5EE1, + 5083: 0x5EE8, + 5084: 0x5EE9, + 5085: 0x5EEC, + 5086: 0x5EF1, + 5087: 0x5EF3, + 5088: 0x5EF0, + 5089: 0x5EF4, + 5090: 0x5EF8, + 5091: 0x5EFE, + 5092: 0x5F03, + 5093: 0x5F09, + 5094: 0x5F5D, + 5095: 0x5F5C, + 5096: 0x5F0B, + 5097: 0x5F11, + 5098: 0x5F16, + 5099: 0x5F29, + 5100: 0x5F2D, + 5101: 0x5F38, + 5102: 0x5F41, + 5103: 0x5F48, + 5104: 0x5F4C, + 5105: 0x5F4E, + 5106: 0x5F2F, + 5107: 0x5F51, + 5108: 0x5F56, + 5109: 0x5F57, + 5110: 0x5F59, + 5111: 0x5F61, + 5112: 0x5F6D, + 5113: 0x5F73, + 5114: 0x5F77, + 5115: 0x5F83, + 5116: 0x5F82, + 5117: 0x5F7F, + 5118: 0x5F8A, + 5119: 0x5F88, + 5120: 0x5F91, + 5121: 0x5F87, + 5122: 0x5F9E, + 5123: 0x5F99, + 5124: 0x5F98, + 5125: 0x5FA0, + 5126: 0x5FA8, + 5127: 0x5FAD, + 5128: 0x5FBC, + 5129: 0x5FD6, + 5130: 0x5FFB, + 5131: 0x5FE4, + 5132: 0x5FF8, + 5133: 0x5FF1, + 5134: 0x5FDD, + 5135: 0x60B3, + 5136: 0x5FFF, + 5137: 0x6021, + 5138: 0x6060, + 5139: 0x6019, + 5140: 0x6010, + 5141: 0x6029, + 5142: 0x600E, + 5143: 0x6031, + 5144: 0x601B, + 5145: 0x6015, + 5146: 0x602B, + 5147: 0x6026, + 5148: 0x600F, + 5149: 0x603A, + 5150: 0x605A, + 5151: 0x6041, + 5152: 0x606A, + 5153: 0x6077, + 5154: 0x605F, + 5155: 0x604A, + 5156: 0x6046, + 5157: 0x604D, + 5158: 0x6063, + 5159: 0x6043, + 5160: 0x6064, + 5161: 0x6042, + 5162: 0x606C, + 5163: 0x606B, + 5164: 0x6059, + 5165: 0x6081, + 5166: 0x608D, + 5167: 0x60E7, + 5168: 0x6083, + 5169: 0x609A, + 5170: 0x6084, + 5171: 0x609B, + 5172: 0x6096, + 5173: 0x6097, + 5174: 0x6092, + 5175: 0x60A7, + 5176: 0x608B, + 5177: 0x60E1, + 5178: 0x60B8, + 5179: 0x60E0, + 5180: 0x60D3, + 5181: 0x60B4, + 5182: 0x5FF0, + 5183: 0x60BD, + 5184: 0x60C6, + 5185: 0x60B5, + 5186: 0x60D8, + 5187: 0x614D, + 5188: 0x6115, + 5189: 0x6106, + 5190: 0x60F6, + 5191: 0x60F7, + 5192: 0x6100, + 5193: 0x60F4, + 5194: 0x60FA, + 5195: 0x6103, + 5196: 0x6121, + 5197: 0x60FB, + 5198: 0x60F1, + 5199: 0x610D, + 5200: 0x610E, + 5201: 0x6147, + 5202: 0x613E, + 5203: 0x6128, + 5204: 0x6127, + 5205: 0x614A, + 5206: 0x613F, + 5207: 0x613C, + 5208: 0x612C, + 5209: 0x6134, + 5210: 0x613D, + 5211: 0x6142, + 5212: 0x6144, + 5213: 0x6173, + 5214: 0x6177, + 5215: 0x6158, + 5216: 0x6159, + 5217: 0x615A, + 5218: 0x616B, + 5219: 0x6174, + 5220: 0x616F, + 5221: 0x6165, + 5222: 0x6171, + 5223: 0x615F, + 5224: 0x615D, + 5225: 0x6153, + 5226: 0x6175, + 5227: 0x6199, + 5228: 0x6196, + 5229: 0x6187, + 5230: 0x61AC, + 5231: 0x6194, + 5232: 0x619A, + 5233: 0x618A, + 5234: 0x6191, + 5235: 0x61AB, + 5236: 0x61AE, + 5237: 0x61CC, + 5238: 0x61CA, + 5239: 0x61C9, + 5240: 0x61F7, + 5241: 0x61C8, + 5242: 0x61C3, + 5243: 0x61C6, + 5244: 0x61BA, + 5245: 0x61CB, + 5246: 0x7F79, + 5247: 0x61CD, + 5248: 0x61E6, + 5249: 0x61E3, + 5250: 0x61F6, + 5251: 0x61FA, + 5252: 0x61F4, + 5253: 0x61FF, + 5254: 0x61FD, + 5255: 0x61FC, + 5256: 0x61FE, + 5257: 0x6200, + 5258: 0x6208, + 5259: 0x6209, + 5260: 0x620D, + 5261: 0x620C, + 5262: 0x6214, + 5263: 0x621B, + 5264: 0x621E, + 5265: 0x6221, + 5266: 0x622A, + 5267: 0x622E, + 5268: 0x6230, + 5269: 0x6232, + 5270: 0x6233, + 5271: 0x6241, + 5272: 0x624E, + 5273: 0x625E, + 5274: 0x6263, + 5275: 0x625B, + 5276: 0x6260, + 5277: 0x6268, + 5278: 0x627C, + 5279: 0x6282, + 5280: 0x6289, + 5281: 0x627E, + 5282: 0x6292, + 5283: 0x6293, + 5284: 0x6296, + 5285: 0x62D4, + 5286: 0x6283, + 5287: 0x6294, + 5288: 0x62D7, + 5289: 0x62D1, + 5290: 0x62BB, + 5291: 0x62CF, + 5292: 0x62FF, + 5293: 0x62C6, + 5294: 0x64D4, + 5295: 0x62C8, + 5296: 0x62DC, + 5297: 0x62CC, + 5298: 0x62CA, + 5299: 0x62C2, + 5300: 0x62C7, + 5301: 0x629B, + 5302: 0x62C9, + 5303: 0x630C, + 5304: 0x62EE, + 5305: 0x62F1, + 5306: 0x6327, + 5307: 0x6302, + 5308: 0x6308, + 5309: 0x62EF, + 5310: 0x62F5, + 5311: 0x6350, + 5312: 0x633E, + 5313: 0x634D, + 5314: 0x641C, + 5315: 0x634F, + 5316: 0x6396, + 5317: 0x638E, + 5318: 0x6380, + 5319: 0x63AB, + 5320: 0x6376, + 5321: 0x63A3, + 5322: 0x638F, + 5323: 0x6389, + 5324: 0x639F, + 5325: 0x63B5, + 5326: 0x636B, + 5327: 0x6369, + 5328: 0x63BE, + 5329: 0x63E9, + 5330: 0x63C0, + 5331: 0x63C6, + 5332: 0x63E3, + 5333: 0x63C9, + 5334: 0x63D2, + 5335: 0x63F6, + 5336: 0x63C4, + 5337: 0x6416, + 5338: 0x6434, + 5339: 0x6406, + 5340: 0x6413, + 5341: 0x6426, + 5342: 0x6436, + 5343: 0x651D, + 5344: 0x6417, + 5345: 0x6428, + 5346: 0x640F, + 5347: 0x6467, + 5348: 0x646F, + 5349: 0x6476, + 5350: 0x644E, + 5351: 0x652A, + 5352: 0x6495, + 5353: 0x6493, + 5354: 0x64A5, + 5355: 0x64A9, + 5356: 0x6488, + 5357: 0x64BC, + 5358: 0x64DA, + 5359: 0x64D2, + 5360: 0x64C5, + 5361: 0x64C7, + 5362: 0x64BB, + 5363: 0x64D8, + 5364: 0x64C2, + 5365: 0x64F1, + 5366: 0x64E7, + 5367: 0x8209, + 5368: 0x64E0, + 5369: 0x64E1, + 5370: 0x62AC, + 5371: 0x64E3, + 5372: 0x64EF, + 5373: 0x652C, + 5374: 0x64F6, + 5375: 0x64F4, + 5376: 0x64F2, + 5377: 0x64FA, + 5378: 0x6500, + 5379: 0x64FD, + 5380: 0x6518, + 5381: 0x651C, + 5382: 0x6505, + 5383: 0x6524, + 5384: 0x6523, + 5385: 0x652B, + 5386: 0x6534, + 5387: 0x6535, + 5388: 0x6537, + 5389: 0x6536, + 5390: 0x6538, + 5391: 0x754B, + 5392: 0x6548, + 5393: 0x6556, + 5394: 0x6555, + 5395: 0x654D, + 5396: 0x6558, + 5397: 0x655E, + 5398: 0x655D, + 5399: 0x6572, + 5400: 0x6578, + 5401: 0x6582, + 5402: 0x6583, + 5403: 0x8B8A, + 5404: 0x659B, + 5405: 0x659F, + 5406: 0x65AB, + 5407: 0x65B7, + 5408: 0x65C3, + 5409: 0x65C6, + 5410: 0x65C1, + 5411: 0x65C4, + 5412: 0x65CC, + 5413: 0x65D2, + 5414: 0x65DB, + 5415: 0x65D9, + 5416: 0x65E0, + 5417: 0x65E1, + 5418: 0x65F1, + 5419: 0x6772, + 5420: 0x660A, + 5421: 0x6603, + 5422: 0x65FB, + 5423: 0x6773, + 5424: 0x6635, + 5425: 0x6636, + 5426: 0x6634, + 5427: 0x661C, + 5428: 0x664F, + 5429: 0x6644, + 5430: 0x6649, + 5431: 0x6641, + 5432: 0x665E, + 5433: 0x665D, + 5434: 0x6664, + 5435: 0x6667, + 5436: 0x6668, + 5437: 0x665F, + 5438: 0x6662, + 5439: 0x6670, + 5440: 0x6683, + 5441: 0x6688, + 5442: 0x668E, + 5443: 0x6689, + 5444: 0x6684, + 5445: 0x6698, + 5446: 0x669D, + 5447: 0x66C1, + 5448: 0x66B9, + 5449: 0x66C9, + 5450: 0x66BE, + 5451: 0x66BC, + 5452: 0x66C4, + 5453: 0x66B8, + 5454: 0x66D6, + 5455: 0x66DA, + 5456: 0x66E0, + 5457: 0x663F, + 5458: 0x66E6, + 5459: 0x66E9, + 5460: 0x66F0, + 5461: 0x66F5, + 5462: 0x66F7, + 5463: 0x670F, + 5464: 0x6716, + 5465: 0x671E, + 5466: 0x6726, + 5467: 0x6727, + 5468: 0x9738, + 5469: 0x672E, + 5470: 0x673F, + 5471: 0x6736, + 5472: 0x6741, + 5473: 0x6738, + 5474: 0x6737, + 5475: 0x6746, + 5476: 0x675E, + 5477: 0x6760, + 5478: 0x6759, + 5479: 0x6763, + 5480: 0x6764, + 5481: 0x6789, + 5482: 0x6770, + 5483: 0x67A9, + 5484: 0x677C, + 5485: 0x676A, + 5486: 0x678C, + 5487: 0x678B, + 5488: 0x67A6, + 5489: 0x67A1, + 5490: 0x6785, + 5491: 0x67B7, + 5492: 0x67EF, + 5493: 0x67B4, + 5494: 0x67EC, + 5495: 0x67B3, + 5496: 0x67E9, + 5497: 0x67B8, + 5498: 0x67E4, + 5499: 0x67DE, + 5500: 0x67DD, + 5501: 0x67E2, + 5502: 0x67EE, + 5503: 0x67B9, + 5504: 0x67CE, + 5505: 0x67C6, + 5506: 0x67E7, + 5507: 0x6A9C, + 5508: 0x681E, + 5509: 0x6846, + 5510: 0x6829, + 5511: 0x6840, + 5512: 0x684D, + 5513: 0x6832, + 5514: 0x684E, + 5515: 0x68B3, + 5516: 0x682B, + 5517: 0x6859, + 5518: 0x6863, + 5519: 0x6877, + 5520: 0x687F, + 5521: 0x689F, + 5522: 0x688F, + 5523: 0x68AD, + 5524: 0x6894, + 5525: 0x689D, + 5526: 0x689B, + 5527: 0x6883, + 5528: 0x6AAE, + 5529: 0x68B9, + 5530: 0x6874, + 5531: 0x68B5, + 5532: 0x68A0, + 5533: 0x68BA, + 5534: 0x690F, + 5535: 0x688D, + 5536: 0x687E, + 5537: 0x6901, + 5538: 0x68CA, + 5539: 0x6908, + 5540: 0x68D8, + 5541: 0x6922, + 5542: 0x6926, + 5543: 0x68E1, + 5544: 0x690C, + 5545: 0x68CD, + 5546: 0x68D4, + 5547: 0x68E7, + 5548: 0x68D5, + 5549: 0x6936, + 5550: 0x6912, + 5551: 0x6904, + 5552: 0x68D7, + 5553: 0x68E3, + 5554: 0x6925, + 5555: 0x68F9, + 5556: 0x68E0, + 5557: 0x68EF, + 5558: 0x6928, + 5559: 0x692A, + 5560: 0x691A, + 5561: 0x6923, + 5562: 0x6921, + 5563: 0x68C6, + 5564: 0x6979, + 5565: 0x6977, + 5566: 0x695C, + 5567: 0x6978, + 5568: 0x696B, + 5569: 0x6954, + 5570: 0x697E, + 5571: 0x696E, + 5572: 0x6939, + 5573: 0x6974, + 5574: 0x693D, + 5575: 0x6959, + 5576: 0x6930, + 5577: 0x6961, + 5578: 0x695E, + 5579: 0x695D, + 5580: 0x6981, + 5581: 0x696A, + 5582: 0x69B2, + 5583: 0x69AE, + 5584: 0x69D0, + 5585: 0x69BF, + 5586: 0x69C1, + 5587: 0x69D3, + 5588: 0x69BE, + 5589: 0x69CE, + 5590: 0x5BE8, + 5591: 0x69CA, + 5592: 0x69DD, + 5593: 0x69BB, + 5594: 0x69C3, + 5595: 0x69A7, + 5596: 0x6A2E, + 5597: 0x6991, + 5598: 0x69A0, + 5599: 0x699C, + 5600: 0x6995, + 5601: 0x69B4, + 5602: 0x69DE, + 5603: 0x69E8, + 5604: 0x6A02, + 5605: 0x6A1B, + 5606: 0x69FF, + 5607: 0x6B0A, + 5608: 0x69F9, + 5609: 0x69F2, + 5610: 0x69E7, + 5611: 0x6A05, + 5612: 0x69B1, + 5613: 0x6A1E, + 5614: 0x69ED, + 5615: 0x6A14, + 5616: 0x69EB, + 5617: 0x6A0A, + 5618: 0x6A12, + 5619: 0x6AC1, + 5620: 0x6A23, + 5621: 0x6A13, + 5622: 0x6A44, + 5623: 0x6A0C, + 5624: 0x6A72, + 5625: 0x6A36, + 5626: 0x6A78, + 5627: 0x6A47, + 5628: 0x6A62, + 5629: 0x6A59, + 5630: 0x6A66, + 5631: 0x6A48, + 5632: 0x6A38, + 5633: 0x6A22, + 5634: 0x6A90, + 5635: 0x6A8D, + 5636: 0x6AA0, + 5637: 0x6A84, + 5638: 0x6AA2, + 5639: 0x6AA3, + 5640: 0x6A97, + 5641: 0x8617, + 5642: 0x6ABB, + 5643: 0x6AC3, + 5644: 0x6AC2, + 5645: 0x6AB8, + 5646: 0x6AB3, + 5647: 0x6AAC, + 5648: 0x6ADE, + 5649: 0x6AD1, + 5650: 0x6ADF, + 5651: 0x6AAA, + 5652: 0x6ADA, + 5653: 0x6AEA, + 5654: 0x6AFB, + 5655: 0x6B05, + 5656: 0x8616, + 5657: 0x6AFA, + 5658: 0x6B12, + 5659: 0x6B16, + 5660: 0x9B31, + 5661: 0x6B1F, + 5662: 0x6B38, + 5663: 0x6B37, + 5664: 0x76DC, + 5665: 0x6B39, + 5666: 0x98EE, + 5667: 0x6B47, + 5668: 0x6B43, + 5669: 0x6B49, + 5670: 0x6B50, + 5671: 0x6B59, + 5672: 0x6B54, + 5673: 0x6B5B, + 5674: 0x6B5F, + 5675: 0x6B61, + 5676: 0x6B78, + 5677: 0x6B79, + 5678: 0x6B7F, + 5679: 0x6B80, + 5680: 0x6B84, + 5681: 0x6B83, + 5682: 0x6B8D, + 5683: 0x6B98, + 5684: 0x6B95, + 5685: 0x6B9E, + 5686: 0x6BA4, + 5687: 0x6BAA, + 5688: 0x6BAB, + 5689: 0x6BAF, + 5690: 0x6BB2, + 5691: 0x6BB1, + 5692: 0x6BB3, + 5693: 0x6BB7, + 5694: 0x6BBC, + 5695: 0x6BC6, + 5696: 0x6BCB, + 5697: 0x6BD3, + 5698: 0x6BDF, + 5699: 0x6BEC, + 5700: 0x6BEB, + 5701: 0x6BF3, + 5702: 0x6BEF, + 5703: 0x9EBE, + 5704: 0x6C08, + 5705: 0x6C13, + 5706: 0x6C14, + 5707: 0x6C1B, + 5708: 0x6C24, + 5709: 0x6C23, + 5710: 0x6C5E, + 5711: 0x6C55, + 5712: 0x6C62, + 5713: 0x6C6A, + 5714: 0x6C82, + 5715: 0x6C8D, + 5716: 0x6C9A, + 5717: 0x6C81, + 5718: 0x6C9B, + 5719: 0x6C7E, + 5720: 0x6C68, + 5721: 0x6C73, + 5722: 0x6C92, + 5723: 0x6C90, + 5724: 0x6CC4, + 5725: 0x6CF1, + 5726: 0x6CD3, + 5727: 0x6CBD, + 5728: 0x6CD7, + 5729: 0x6CC5, + 5730: 0x6CDD, + 5731: 0x6CAE, + 5732: 0x6CB1, + 5733: 0x6CBE, + 5734: 0x6CBA, + 5735: 0x6CDB, + 5736: 0x6CEF, + 5737: 0x6CD9, + 5738: 0x6CEA, + 5739: 0x6D1F, + 5740: 0x884D, + 5741: 0x6D36, + 5742: 0x6D2B, + 5743: 0x6D3D, + 5744: 0x6D38, + 5745: 0x6D19, + 5746: 0x6D35, + 5747: 0x6D33, + 5748: 0x6D12, + 5749: 0x6D0C, + 5750: 0x6D63, + 5751: 0x6D93, + 5752: 0x6D64, + 5753: 0x6D5A, + 5754: 0x6D79, + 5755: 0x6D59, + 5756: 0x6D8E, + 5757: 0x6D95, + 5758: 0x6FE4, + 5759: 0x6D85, + 5760: 0x6DF9, + 5761: 0x6E15, + 5762: 0x6E0A, + 5763: 0x6DB5, + 5764: 0x6DC7, + 5765: 0x6DE6, + 5766: 0x6DB8, + 5767: 0x6DC6, + 5768: 0x6DEC, + 5769: 0x6DDE, + 5770: 0x6DCC, + 5771: 0x6DE8, + 5772: 0x6DD2, + 5773: 0x6DC5, + 5774: 0x6DFA, + 5775: 0x6DD9, + 5776: 0x6DE4, + 5777: 0x6DD5, + 5778: 0x6DEA, + 5779: 0x6DEE, + 5780: 0x6E2D, + 5781: 0x6E6E, + 5782: 0x6E2E, + 5783: 0x6E19, + 5784: 0x6E72, + 5785: 0x6E5F, + 5786: 0x6E3E, + 5787: 0x6E23, + 5788: 0x6E6B, + 5789: 0x6E2B, + 5790: 0x6E76, + 5791: 0x6E4D, + 5792: 0x6E1F, + 5793: 0x6E43, + 5794: 0x6E3A, + 5795: 0x6E4E, + 5796: 0x6E24, + 5797: 0x6EFF, + 5798: 0x6E1D, + 5799: 0x6E38, + 5800: 0x6E82, + 5801: 0x6EAA, + 5802: 0x6E98, + 5803: 0x6EC9, + 5804: 0x6EB7, + 5805: 0x6ED3, + 5806: 0x6EBD, + 5807: 0x6EAF, + 5808: 0x6EC4, + 5809: 0x6EB2, + 5810: 0x6ED4, + 5811: 0x6ED5, + 5812: 0x6E8F, + 5813: 0x6EA5, + 5814: 0x6EC2, + 5815: 0x6E9F, + 5816: 0x6F41, + 5817: 0x6F11, + 5818: 0x704C, + 5819: 0x6EEC, + 5820: 0x6EF8, + 5821: 0x6EFE, + 5822: 0x6F3F, + 5823: 0x6EF2, + 5824: 0x6F31, + 5825: 0x6EEF, + 5826: 0x6F32, + 5827: 0x6ECC, + 5828: 0x6F3E, + 5829: 0x6F13, + 5830: 0x6EF7, + 5831: 0x6F86, + 5832: 0x6F7A, + 5833: 0x6F78, + 5834: 0x6F81, + 5835: 0x6F80, + 5836: 0x6F6F, + 5837: 0x6F5B, + 5838: 0x6FF3, + 5839: 0x6F6D, + 5840: 0x6F82, + 5841: 0x6F7C, + 5842: 0x6F58, + 5843: 0x6F8E, + 5844: 0x6F91, + 5845: 0x6FC2, + 5846: 0x6F66, + 5847: 0x6FB3, + 5848: 0x6FA3, + 5849: 0x6FA1, + 5850: 0x6FA4, + 5851: 0x6FB9, + 5852: 0x6FC6, + 5853: 0x6FAA, + 5854: 0x6FDF, + 5855: 0x6FD5, + 5856: 0x6FEC, + 5857: 0x6FD4, + 5858: 0x6FD8, + 5859: 0x6FF1, + 5860: 0x6FEE, + 5861: 0x6FDB, + 5862: 0x7009, + 5863: 0x700B, + 5864: 0x6FFA, + 5865: 0x7011, + 5866: 0x7001, + 5867: 0x700F, + 5868: 0x6FFE, + 5869: 0x701B, + 5870: 0x701A, + 5871: 0x6F74, + 5872: 0x701D, + 5873: 0x7018, + 5874: 0x701F, + 5875: 0x7030, + 5876: 0x703E, + 5877: 0x7032, + 5878: 0x7051, + 5879: 0x7063, + 5880: 0x7099, + 5881: 0x7092, + 5882: 0x70AF, + 5883: 0x70F1, + 5884: 0x70AC, + 5885: 0x70B8, + 5886: 0x70B3, + 5887: 0x70AE, + 5888: 0x70DF, + 5889: 0x70CB, + 5890: 0x70DD, + 5891: 0x70D9, + 5892: 0x7109, + 5893: 0x70FD, + 5894: 0x711C, + 5895: 0x7119, + 5896: 0x7165, + 5897: 0x7155, + 5898: 0x7188, + 5899: 0x7166, + 5900: 0x7162, + 5901: 0x714C, + 5902: 0x7156, + 5903: 0x716C, + 5904: 0x718F, + 5905: 0x71FB, + 5906: 0x7184, + 5907: 0x7195, + 5908: 0x71A8, + 5909: 0x71AC, + 5910: 0x71D7, + 5911: 0x71B9, + 5912: 0x71BE, + 5913: 0x71D2, + 5914: 0x71C9, + 5915: 0x71D4, + 5916: 0x71CE, + 5917: 0x71E0, + 5918: 0x71EC, + 5919: 0x71E7, + 5920: 0x71F5, + 5921: 0x71FC, + 5922: 0x71F9, + 5923: 0x71FF, + 5924: 0x720D, + 5925: 0x7210, + 5926: 0x721B, + 5927: 0x7228, + 5928: 0x722D, + 5929: 0x722C, + 5930: 0x7230, + 5931: 0x7232, + 5932: 0x723B, + 5933: 0x723C, + 5934: 0x723F, + 5935: 0x7240, + 5936: 0x7246, + 5937: 0x724B, + 5938: 0x7258, + 5939: 0x7274, + 5940: 0x727E, + 5941: 0x7282, + 5942: 0x7281, + 5943: 0x7287, + 5944: 0x7292, + 5945: 0x7296, + 5946: 0x72A2, + 5947: 0x72A7, + 5948: 0x72B9, + 5949: 0x72B2, + 5950: 0x72C3, + 5951: 0x72C6, + 5952: 0x72C4, + 5953: 0x72CE, + 5954: 0x72D2, + 5955: 0x72E2, + 5956: 0x72E0, + 5957: 0x72E1, + 5958: 0x72F9, + 5959: 0x72F7, + 5960: 0x500F, + 5961: 0x7317, + 5962: 0x730A, + 5963: 0x731C, + 5964: 0x7316, + 5965: 0x731D, + 5966: 0x7334, + 5967: 0x732F, + 5968: 0x7329, + 5969: 0x7325, + 5970: 0x733E, + 5971: 0x734E, + 5972: 0x734F, + 5973: 0x9ED8, + 5974: 0x7357, + 5975: 0x736A, + 5976: 0x7368, + 5977: 0x7370, + 5978: 0x7378, + 5979: 0x7375, + 5980: 0x737B, + 5981: 0x737A, + 5982: 0x73C8, + 5983: 0x73B3, + 5984: 0x73CE, + 5985: 0x73BB, + 5986: 0x73C0, + 5987: 0x73E5, + 5988: 0x73EE, + 5989: 0x73DE, + 5990: 0x74A2, + 5991: 0x7405, + 5992: 0x746F, + 5993: 0x7425, + 5994: 0x73F8, + 5995: 0x7432, + 5996: 0x743A, + 5997: 0x7455, + 5998: 0x743F, + 5999: 0x745F, + 6000: 0x7459, + 6001: 0x7441, + 6002: 0x745C, + 6003: 0x7469, + 6004: 0x7470, + 6005: 0x7463, + 6006: 0x746A, + 6007: 0x7476, + 6008: 0x747E, + 6009: 0x748B, + 6010: 0x749E, + 6011: 0x74A7, + 6012: 0x74CA, + 6013: 0x74CF, + 6014: 0x74D4, + 6015: 0x73F1, + 6016: 0x74E0, + 6017: 0x74E3, + 6018: 0x74E7, + 6019: 0x74E9, + 6020: 0x74EE, + 6021: 0x74F2, + 6022: 0x74F0, + 6023: 0x74F1, + 6024: 0x74F8, + 6025: 0x74F7, + 6026: 0x7504, + 6027: 0x7503, + 6028: 0x7505, + 6029: 0x750C, + 6030: 0x750E, + 6031: 0x750D, + 6032: 0x7515, + 6033: 0x7513, + 6034: 0x751E, + 6035: 0x7526, + 6036: 0x752C, + 6037: 0x753C, + 6038: 0x7544, + 6039: 0x754D, + 6040: 0x754A, + 6041: 0x7549, + 6042: 0x755B, + 6043: 0x7546, + 6044: 0x755A, + 6045: 0x7569, + 6046: 0x7564, + 6047: 0x7567, + 6048: 0x756B, + 6049: 0x756D, + 6050: 0x7578, + 6051: 0x7576, + 6052: 0x7586, + 6053: 0x7587, + 6054: 0x7574, + 6055: 0x758A, + 6056: 0x7589, + 6057: 0x7582, + 6058: 0x7594, + 6059: 0x759A, + 6060: 0x759D, + 6061: 0x75A5, + 6062: 0x75A3, + 6063: 0x75C2, + 6064: 0x75B3, + 6065: 0x75C3, + 6066: 0x75B5, + 6067: 0x75BD, + 6068: 0x75B8, + 6069: 0x75BC, + 6070: 0x75B1, + 6071: 0x75CD, + 6072: 0x75CA, + 6073: 0x75D2, + 6074: 0x75D9, + 6075: 0x75E3, + 6076: 0x75DE, + 6077: 0x75FE, + 6078: 0x75FF, + 6079: 0x75FC, + 6080: 0x7601, + 6081: 0x75F0, + 6082: 0x75FA, + 6083: 0x75F2, + 6084: 0x75F3, + 6085: 0x760B, + 6086: 0x760D, + 6087: 0x7609, + 6088: 0x761F, + 6089: 0x7627, + 6090: 0x7620, + 6091: 0x7621, + 6092: 0x7622, + 6093: 0x7624, + 6094: 0x7634, + 6095: 0x7630, + 6096: 0x763B, + 6097: 0x7647, + 6098: 0x7648, + 6099: 0x7646, + 6100: 0x765C, + 6101: 0x7658, + 6102: 0x7661, + 6103: 0x7662, + 6104: 0x7668, + 6105: 0x7669, + 6106: 0x766A, + 6107: 0x7667, + 6108: 0x766C, + 6109: 0x7670, + 6110: 0x7672, + 6111: 0x7676, + 6112: 0x7678, + 6113: 0x767C, + 6114: 0x7680, + 6115: 0x7683, + 6116: 0x7688, + 6117: 0x768B, + 6118: 0x768E, + 6119: 0x7696, + 6120: 0x7693, + 6121: 0x7699, + 6122: 0x769A, + 6123: 0x76B0, + 6124: 0x76B4, + 6125: 0x76B8, + 6126: 0x76B9, + 6127: 0x76BA, + 6128: 0x76C2, + 6129: 0x76CD, + 6130: 0x76D6, + 6131: 0x76D2, + 6132: 0x76DE, + 6133: 0x76E1, + 6134: 0x76E5, + 6135: 0x76E7, + 6136: 0x76EA, + 6137: 0x862F, + 6138: 0x76FB, + 6139: 0x7708, + 6140: 0x7707, + 6141: 0x7704, + 6142: 0x7729, + 6143: 0x7724, + 6144: 0x771E, + 6145: 0x7725, + 6146: 0x7726, + 6147: 0x771B, + 6148: 0x7737, + 6149: 0x7738, + 6150: 0x7747, + 6151: 0x775A, + 6152: 0x7768, + 6153: 0x776B, + 6154: 0x775B, + 6155: 0x7765, + 6156: 0x777F, + 6157: 0x777E, + 6158: 0x7779, + 6159: 0x778E, + 6160: 0x778B, + 6161: 0x7791, + 6162: 0x77A0, + 6163: 0x779E, + 6164: 0x77B0, + 6165: 0x77B6, + 6166: 0x77B9, + 6167: 0x77BF, + 6168: 0x77BC, + 6169: 0x77BD, + 6170: 0x77BB, + 6171: 0x77C7, + 6172: 0x77CD, + 6173: 0x77D7, + 6174: 0x77DA, + 6175: 0x77DC, + 6176: 0x77E3, + 6177: 0x77EE, + 6178: 0x77FC, + 6179: 0x780C, + 6180: 0x7812, + 6181: 0x7926, + 6182: 0x7820, + 6183: 0x792A, + 6184: 0x7845, + 6185: 0x788E, + 6186: 0x7874, + 6187: 0x7886, + 6188: 0x787C, + 6189: 0x789A, + 6190: 0x788C, + 6191: 0x78A3, + 6192: 0x78B5, + 6193: 0x78AA, + 6194: 0x78AF, + 6195: 0x78D1, + 6196: 0x78C6, + 6197: 0x78CB, + 6198: 0x78D4, + 6199: 0x78BE, + 6200: 0x78BC, + 6201: 0x78C5, + 6202: 0x78CA, + 6203: 0x78EC, + 6204: 0x78E7, + 6205: 0x78DA, + 6206: 0x78FD, + 6207: 0x78F4, + 6208: 0x7907, + 6209: 0x7912, + 6210: 0x7911, + 6211: 0x7919, + 6212: 0x792C, + 6213: 0x792B, + 6214: 0x7940, + 6215: 0x7960, + 6216: 0x7957, + 6217: 0x795F, + 6218: 0x795A, + 6219: 0x7955, + 6220: 0x7953, + 6221: 0x797A, + 6222: 0x797F, + 6223: 0x798A, + 6224: 0x799D, + 6225: 0x79A7, + 6226: 0x9F4B, + 6227: 0x79AA, + 6228: 0x79AE, + 6229: 0x79B3, + 6230: 0x79B9, + 6231: 0x79BA, + 6232: 0x79C9, + 6233: 0x79D5, + 6234: 0x79E7, + 6235: 0x79EC, + 6236: 0x79E1, + 6237: 0x79E3, + 6238: 0x7A08, + 6239: 0x7A0D, + 6240: 0x7A18, + 6241: 0x7A19, + 6242: 0x7A20, + 6243: 0x7A1F, + 6244: 0x7980, + 6245: 0x7A31, + 6246: 0x7A3B, + 6247: 0x7A3E, + 6248: 0x7A37, + 6249: 0x7A43, + 6250: 0x7A57, + 6251: 0x7A49, + 6252: 0x7A61, + 6253: 0x7A62, + 6254: 0x7A69, + 6255: 0x9F9D, + 6256: 0x7A70, + 6257: 0x7A79, + 6258: 0x7A7D, + 6259: 0x7A88, + 6260: 0x7A97, + 6261: 0x7A95, + 6262: 0x7A98, + 6263: 0x7A96, + 6264: 0x7AA9, + 6265: 0x7AC8, + 6266: 0x7AB0, + 6267: 0x7AB6, + 6268: 0x7AC5, + 6269: 0x7AC4, + 6270: 0x7ABF, + 6271: 0x9083, + 6272: 0x7AC7, + 6273: 0x7ACA, + 6274: 0x7ACD, + 6275: 0x7ACF, + 6276: 0x7AD5, + 6277: 0x7AD3, + 6278: 0x7AD9, + 6279: 0x7ADA, + 6280: 0x7ADD, + 6281: 0x7AE1, + 6282: 0x7AE2, + 6283: 0x7AE6, + 6284: 0x7AED, + 6285: 0x7AF0, + 6286: 0x7B02, + 6287: 0x7B0F, + 6288: 0x7B0A, + 6289: 0x7B06, + 6290: 0x7B33, + 6291: 0x7B18, + 6292: 0x7B19, + 6293: 0x7B1E, + 6294: 0x7B35, + 6295: 0x7B28, + 6296: 0x7B36, + 6297: 0x7B50, + 6298: 0x7B7A, + 6299: 0x7B04, + 6300: 0x7B4D, + 6301: 0x7B0B, + 6302: 0x7B4C, + 6303: 0x7B45, + 6304: 0x7B75, + 6305: 0x7B65, + 6306: 0x7B74, + 6307: 0x7B67, + 6308: 0x7B70, + 6309: 0x7B71, + 6310: 0x7B6C, + 6311: 0x7B6E, + 6312: 0x7B9D, + 6313: 0x7B98, + 6314: 0x7B9F, + 6315: 0x7B8D, + 6316: 0x7B9C, + 6317: 0x7B9A, + 6318: 0x7B8B, + 6319: 0x7B92, + 6320: 0x7B8F, + 6321: 0x7B5D, + 6322: 0x7B99, + 6323: 0x7BCB, + 6324: 0x7BC1, + 6325: 0x7BCC, + 6326: 0x7BCF, + 6327: 0x7BB4, + 6328: 0x7BC6, + 6329: 0x7BDD, + 6330: 0x7BE9, + 6331: 0x7C11, + 6332: 0x7C14, + 6333: 0x7BE6, + 6334: 0x7BE5, + 6335: 0x7C60, + 6336: 0x7C00, + 6337: 0x7C07, + 6338: 0x7C13, + 6339: 0x7BF3, + 6340: 0x7BF7, + 6341: 0x7C17, + 6342: 0x7C0D, + 6343: 0x7BF6, + 6344: 0x7C23, + 6345: 0x7C27, + 6346: 0x7C2A, + 6347: 0x7C1F, + 6348: 0x7C37, + 6349: 0x7C2B, + 6350: 0x7C3D, + 6351: 0x7C4C, + 6352: 0x7C43, + 6353: 0x7C54, + 6354: 0x7C4F, + 6355: 0x7C40, + 6356: 0x7C50, + 6357: 0x7C58, + 6358: 0x7C5F, + 6359: 0x7C64, + 6360: 0x7C56, + 6361: 0x7C65, + 6362: 0x7C6C, + 6363: 0x7C75, + 6364: 0x7C83, + 6365: 0x7C90, + 6366: 0x7CA4, + 6367: 0x7CAD, + 6368: 0x7CA2, + 6369: 0x7CAB, + 6370: 0x7CA1, + 6371: 0x7CA8, + 6372: 0x7CB3, + 6373: 0x7CB2, + 6374: 0x7CB1, + 6375: 0x7CAE, + 6376: 0x7CB9, + 6377: 0x7CBD, + 6378: 0x7CC0, + 6379: 0x7CC5, + 6380: 0x7CC2, + 6381: 0x7CD8, + 6382: 0x7CD2, + 6383: 0x7CDC, + 6384: 0x7CE2, + 6385: 0x9B3B, + 6386: 0x7CEF, + 6387: 0x7CF2, + 6388: 0x7CF4, + 6389: 0x7CF6, + 6390: 0x7CFA, + 6391: 0x7D06, + 6392: 0x7D02, + 6393: 0x7D1C, + 6394: 0x7D15, + 6395: 0x7D0A, + 6396: 0x7D45, + 6397: 0x7D4B, + 6398: 0x7D2E, + 6399: 0x7D32, + 6400: 0x7D3F, + 6401: 0x7D35, + 6402: 0x7D46, + 6403: 0x7D73, + 6404: 0x7D56, + 6405: 0x7D4E, + 6406: 0x7D72, + 6407: 0x7D68, + 6408: 0x7D6E, + 6409: 0x7D4F, + 6410: 0x7D63, + 6411: 0x7D93, + 6412: 0x7D89, + 6413: 0x7D5B, + 6414: 0x7D8F, + 6415: 0x7D7D, + 6416: 0x7D9B, + 6417: 0x7DBA, + 6418: 0x7DAE, + 6419: 0x7DA3, + 6420: 0x7DB5, + 6421: 0x7DC7, + 6422: 0x7DBD, + 6423: 0x7DAB, + 6424: 0x7E3D, + 6425: 0x7DA2, + 6426: 0x7DAF, + 6427: 0x7DDC, + 6428: 0x7DB8, + 6429: 0x7D9F, + 6430: 0x7DB0, + 6431: 0x7DD8, + 6432: 0x7DDD, + 6433: 0x7DE4, + 6434: 0x7DDE, + 6435: 0x7DFB, + 6436: 0x7DF2, + 6437: 0x7DE1, + 6438: 0x7E05, + 6439: 0x7E0A, + 6440: 0x7E23, + 6441: 0x7E21, + 6442: 0x7E12, + 6443: 0x7E31, + 6444: 0x7E1F, + 6445: 0x7E09, + 6446: 0x7E0B, + 6447: 0x7E22, + 6448: 0x7E46, + 6449: 0x7E66, + 6450: 0x7E3B, + 6451: 0x7E35, + 6452: 0x7E39, + 6453: 0x7E43, + 6454: 0x7E37, + 6455: 0x7E32, + 6456: 0x7E3A, + 6457: 0x7E67, + 6458: 0x7E5D, + 6459: 0x7E56, + 6460: 0x7E5E, + 6461: 0x7E59, + 6462: 0x7E5A, + 6463: 0x7E79, + 6464: 0x7E6A, + 6465: 0x7E69, + 6466: 0x7E7C, + 6467: 0x7E7B, + 6468: 0x7E83, + 6469: 0x7DD5, + 6470: 0x7E7D, + 6471: 0x8FAE, + 6472: 0x7E7F, + 6473: 0x7E88, + 6474: 0x7E89, + 6475: 0x7E8C, + 6476: 0x7E92, + 6477: 0x7E90, + 6478: 0x7E93, + 6479: 0x7E94, + 6480: 0x7E96, + 6481: 0x7E8E, + 6482: 0x7E9B, + 6483: 0x7E9C, + 6484: 0x7F38, + 6485: 0x7F3A, + 6486: 0x7F45, + 6487: 0x7F4C, + 6488: 0x7F4D, + 6489: 0x7F4E, + 6490: 0x7F50, + 6491: 0x7F51, + 6492: 0x7F55, + 6493: 0x7F54, + 6494: 0x7F58, + 6495: 0x7F5F, + 6496: 0x7F60, + 6497: 0x7F68, + 6498: 0x7F69, + 6499: 0x7F67, + 6500: 0x7F78, + 6501: 0x7F82, + 6502: 0x7F86, + 6503: 0x7F83, + 6504: 0x7F88, + 6505: 0x7F87, + 6506: 0x7F8C, + 6507: 0x7F94, + 6508: 0x7F9E, + 6509: 0x7F9D, + 6510: 0x7F9A, + 6511: 0x7FA3, + 6512: 0x7FAF, + 6513: 0x7FB2, + 6514: 0x7FB9, + 6515: 0x7FAE, + 6516: 0x7FB6, + 6517: 0x7FB8, + 6518: 0x8B71, + 6519: 0x7FC5, + 6520: 0x7FC6, + 6521: 0x7FCA, + 6522: 0x7FD5, + 6523: 0x7FD4, + 6524: 0x7FE1, + 6525: 0x7FE6, + 6526: 0x7FE9, + 6527: 0x7FF3, + 6528: 0x7FF9, + 6529: 0x98DC, + 6530: 0x8006, + 6531: 0x8004, + 6532: 0x800B, + 6533: 0x8012, + 6534: 0x8018, + 6535: 0x8019, + 6536: 0x801C, + 6537: 0x8021, + 6538: 0x8028, + 6539: 0x803F, + 6540: 0x803B, + 6541: 0x804A, + 6542: 0x8046, + 6543: 0x8052, + 6544: 0x8058, + 6545: 0x805A, + 6546: 0x805F, + 6547: 0x8062, + 6548: 0x8068, + 6549: 0x8073, + 6550: 0x8072, + 6551: 0x8070, + 6552: 0x8076, + 6553: 0x8079, + 6554: 0x807D, + 6555: 0x807F, + 6556: 0x8084, + 6557: 0x8086, + 6558: 0x8085, + 6559: 0x809B, + 6560: 0x8093, + 6561: 0x809A, + 6562: 0x80AD, + 6563: 0x5190, + 6564: 0x80AC, + 6565: 0x80DB, + 6566: 0x80E5, + 6567: 0x80D9, + 6568: 0x80DD, + 6569: 0x80C4, + 6570: 0x80DA, + 6571: 0x80D6, + 6572: 0x8109, + 6573: 0x80EF, + 6574: 0x80F1, + 6575: 0x811B, + 6576: 0x8129, + 6577: 0x8123, + 6578: 0x812F, + 6579: 0x814B, + 6580: 0x968B, + 6581: 0x8146, + 6582: 0x813E, + 6583: 0x8153, + 6584: 0x8151, + 6585: 0x80FC, + 6586: 0x8171, + 6587: 0x816E, + 6588: 0x8165, + 6589: 0x8166, + 6590: 0x8174, + 6591: 0x8183, + 6592: 0x8188, + 6593: 0x818A, + 6594: 0x8180, + 6595: 0x8182, + 6596: 0x81A0, + 6597: 0x8195, + 6598: 0x81A4, + 6599: 0x81A3, + 6600: 0x815F, + 6601: 0x8193, + 6602: 0x81A9, + 6603: 0x81B0, + 6604: 0x81B5, + 6605: 0x81BE, + 6606: 0x81B8, + 6607: 0x81BD, + 6608: 0x81C0, + 6609: 0x81C2, + 6610: 0x81BA, + 6611: 0x81C9, + 6612: 0x81CD, + 6613: 0x81D1, + 6614: 0x81D9, + 6615: 0x81D8, + 6616: 0x81C8, + 6617: 0x81DA, + 6618: 0x81DF, + 6619: 0x81E0, + 6620: 0x81E7, + 6621: 0x81FA, + 6622: 0x81FB, + 6623: 0x81FE, + 6624: 0x8201, + 6625: 0x8202, + 6626: 0x8205, + 6627: 0x8207, + 6628: 0x820A, + 6629: 0x820D, + 6630: 0x8210, + 6631: 0x8216, + 6632: 0x8229, + 6633: 0x822B, + 6634: 0x8238, + 6635: 0x8233, + 6636: 0x8240, + 6637: 0x8259, + 6638: 0x8258, + 6639: 0x825D, + 6640: 0x825A, + 6641: 0x825F, + 6642: 0x8264, + 6643: 0x8262, + 6644: 0x8268, + 6645: 0x826A, + 6646: 0x826B, + 6647: 0x822E, + 6648: 0x8271, + 6649: 0x8277, + 6650: 0x8278, + 6651: 0x827E, + 6652: 0x828D, + 6653: 0x8292, + 6654: 0x82AB, + 6655: 0x829F, + 6656: 0x82BB, + 6657: 0x82AC, + 6658: 0x82E1, + 6659: 0x82E3, + 6660: 0x82DF, + 6661: 0x82D2, + 6662: 0x82F4, + 6663: 0x82F3, + 6664: 0x82FA, + 6665: 0x8393, + 6666: 0x8303, + 6667: 0x82FB, + 6668: 0x82F9, + 6669: 0x82DE, + 6670: 0x8306, + 6671: 0x82DC, + 6672: 0x8309, + 6673: 0x82D9, + 6674: 0x8335, + 6675: 0x8334, + 6676: 0x8316, + 6677: 0x8332, + 6678: 0x8331, + 6679: 0x8340, + 6680: 0x8339, + 6681: 0x8350, + 6682: 0x8345, + 6683: 0x832F, + 6684: 0x832B, + 6685: 0x8317, + 6686: 0x8318, + 6687: 0x8385, + 6688: 0x839A, + 6689: 0x83AA, + 6690: 0x839F, + 6691: 0x83A2, + 6692: 0x8396, + 6693: 0x8323, + 6694: 0x838E, + 6695: 0x8387, + 6696: 0x838A, + 6697: 0x837C, + 6698: 0x83B5, + 6699: 0x8373, + 6700: 0x8375, + 6701: 0x83A0, + 6702: 0x8389, + 6703: 0x83A8, + 6704: 0x83F4, + 6705: 0x8413, + 6706: 0x83EB, + 6707: 0x83CE, + 6708: 0x83FD, + 6709: 0x8403, + 6710: 0x83D8, + 6711: 0x840B, + 6712: 0x83C1, + 6713: 0x83F7, + 6714: 0x8407, + 6715: 0x83E0, + 6716: 0x83F2, + 6717: 0x840D, + 6718: 0x8422, + 6719: 0x8420, + 6720: 0x83BD, + 6721: 0x8438, + 6722: 0x8506, + 6723: 0x83FB, + 6724: 0x846D, + 6725: 0x842A, + 6726: 0x843C, + 6727: 0x855A, + 6728: 0x8484, + 6729: 0x8477, + 6730: 0x846B, + 6731: 0x84AD, + 6732: 0x846E, + 6733: 0x8482, + 6734: 0x8469, + 6735: 0x8446, + 6736: 0x842C, + 6737: 0x846F, + 6738: 0x8479, + 6739: 0x8435, + 6740: 0x84CA, + 6741: 0x8462, + 6742: 0x84B9, + 6743: 0x84BF, + 6744: 0x849F, + 6745: 0x84D9, + 6746: 0x84CD, + 6747: 0x84BB, + 6748: 0x84DA, + 6749: 0x84D0, + 6750: 0x84C1, + 6751: 0x84C6, + 6752: 0x84D6, + 6753: 0x84A1, + 6754: 0x8521, + 6755: 0x84FF, + 6756: 0x84F4, + 6757: 0x8517, + 6758: 0x8518, + 6759: 0x852C, + 6760: 0x851F, + 6761: 0x8515, + 6762: 0x8514, + 6763: 0x84FC, + 6764: 0x8540, + 6765: 0x8563, + 6766: 0x8558, + 6767: 0x8548, + 6768: 0x8541, + 6769: 0x8602, + 6770: 0x854B, + 6771: 0x8555, + 6772: 0x8580, + 6773: 0x85A4, + 6774: 0x8588, + 6775: 0x8591, + 6776: 0x858A, + 6777: 0x85A8, + 6778: 0x856D, + 6779: 0x8594, + 6780: 0x859B, + 6781: 0x85EA, + 6782: 0x8587, + 6783: 0x859C, + 6784: 0x8577, + 6785: 0x857E, + 6786: 0x8590, + 6787: 0x85C9, + 6788: 0x85BA, + 6789: 0x85CF, + 6790: 0x85B9, + 6791: 0x85D0, + 6792: 0x85D5, + 6793: 0x85DD, + 6794: 0x85E5, + 6795: 0x85DC, + 6796: 0x85F9, + 6797: 0x860A, + 6798: 0x8613, + 6799: 0x860B, + 6800: 0x85FE, + 6801: 0x85FA, + 6802: 0x8606, + 6803: 0x8622, + 6804: 0x861A, + 6805: 0x8630, + 6806: 0x863F, + 6807: 0x864D, + 6808: 0x4E55, + 6809: 0x8654, + 6810: 0x865F, + 6811: 0x8667, + 6812: 0x8671, + 6813: 0x8693, + 6814: 0x86A3, + 6815: 0x86A9, + 6816: 0x86AA, + 6817: 0x868B, + 6818: 0x868C, + 6819: 0x86B6, + 6820: 0x86AF, + 6821: 0x86C4, + 6822: 0x86C6, + 6823: 0x86B0, + 6824: 0x86C9, + 6825: 0x8823, + 6826: 0x86AB, + 6827: 0x86D4, + 6828: 0x86DE, + 6829: 0x86E9, + 6830: 0x86EC, + 6831: 0x86DF, + 6832: 0x86DB, + 6833: 0x86EF, + 6834: 0x8712, + 6835: 0x8706, + 6836: 0x8708, + 6837: 0x8700, + 6838: 0x8703, + 6839: 0x86FB, + 6840: 0x8711, + 6841: 0x8709, + 6842: 0x870D, + 6843: 0x86F9, + 6844: 0x870A, + 6845: 0x8734, + 6846: 0x873F, + 6847: 0x8737, + 6848: 0x873B, + 6849: 0x8725, + 6850: 0x8729, + 6851: 0x871A, + 6852: 0x8760, + 6853: 0x875F, + 6854: 0x8778, + 6855: 0x874C, + 6856: 0x874E, + 6857: 0x8774, + 6858: 0x8757, + 6859: 0x8768, + 6860: 0x876E, + 6861: 0x8759, + 6862: 0x8753, + 6863: 0x8763, + 6864: 0x876A, + 6865: 0x8805, + 6866: 0x87A2, + 6867: 0x879F, + 6868: 0x8782, + 6869: 0x87AF, + 6870: 0x87CB, + 6871: 0x87BD, + 6872: 0x87C0, + 6873: 0x87D0, + 6874: 0x96D6, + 6875: 0x87AB, + 6876: 0x87C4, + 6877: 0x87B3, + 6878: 0x87C7, + 6879: 0x87C6, + 6880: 0x87BB, + 6881: 0x87EF, + 6882: 0x87F2, + 6883: 0x87E0, + 6884: 0x880F, + 6885: 0x880D, + 6886: 0x87FE, + 6887: 0x87F6, + 6888: 0x87F7, + 6889: 0x880E, + 6890: 0x87D2, + 6891: 0x8811, + 6892: 0x8816, + 6893: 0x8815, + 6894: 0x8822, + 6895: 0x8821, + 6896: 0x8831, + 6897: 0x8836, + 6898: 0x8839, + 6899: 0x8827, + 6900: 0x883B, + 6901: 0x8844, + 6902: 0x8842, + 6903: 0x8852, + 6904: 0x8859, + 6905: 0x885E, + 6906: 0x8862, + 6907: 0x886B, + 6908: 0x8881, + 6909: 0x887E, + 6910: 0x889E, + 6911: 0x8875, + 6912: 0x887D, + 6913: 0x88B5, + 6914: 0x8872, + 6915: 0x8882, + 6916: 0x8897, + 6917: 0x8892, + 6918: 0x88AE, + 6919: 0x8899, + 6920: 0x88A2, + 6921: 0x888D, + 6922: 0x88A4, + 6923: 0x88B0, + 6924: 0x88BF, + 6925: 0x88B1, + 6926: 0x88C3, + 6927: 0x88C4, + 6928: 0x88D4, + 6929: 0x88D8, + 6930: 0x88D9, + 6931: 0x88DD, + 6932: 0x88F9, + 6933: 0x8902, + 6934: 0x88FC, + 6935: 0x88F4, + 6936: 0x88E8, + 6937: 0x88F2, + 6938: 0x8904, + 6939: 0x890C, + 6940: 0x890A, + 6941: 0x8913, + 6942: 0x8943, + 6943: 0x891E, + 6944: 0x8925, + 6945: 0x892A, + 6946: 0x892B, + 6947: 0x8941, + 6948: 0x8944, + 6949: 0x893B, + 6950: 0x8936, + 6951: 0x8938, + 6952: 0x894C, + 6953: 0x891D, + 6954: 0x8960, + 6955: 0x895E, + 6956: 0x8966, + 6957: 0x8964, + 6958: 0x896D, + 6959: 0x896A, + 6960: 0x896F, + 6961: 0x8974, + 6962: 0x8977, + 6963: 0x897E, + 6964: 0x8983, + 6965: 0x8988, + 6966: 0x898A, + 6967: 0x8993, + 6968: 0x8998, + 6969: 0x89A1, + 6970: 0x89A9, + 6971: 0x89A6, + 6972: 0x89AC, + 6973: 0x89AF, + 6974: 0x89B2, + 6975: 0x89BA, + 6976: 0x89BD, + 6977: 0x89BF, + 6978: 0x89C0, + 6979: 0x89DA, + 6980: 0x89DC, + 6981: 0x89DD, + 6982: 0x89E7, + 6983: 0x89F4, + 6984: 0x89F8, + 6985: 0x8A03, + 6986: 0x8A16, + 6987: 0x8A10, + 6988: 0x8A0C, + 6989: 0x8A1B, + 6990: 0x8A1D, + 6991: 0x8A25, + 6992: 0x8A36, + 6993: 0x8A41, + 6994: 0x8A5B, + 6995: 0x8A52, + 6996: 0x8A46, + 6997: 0x8A48, + 6998: 0x8A7C, + 6999: 0x8A6D, + 7000: 0x8A6C, + 7001: 0x8A62, + 7002: 0x8A85, + 7003: 0x8A82, + 7004: 0x8A84, + 7005: 0x8AA8, + 7006: 0x8AA1, + 7007: 0x8A91, + 7008: 0x8AA5, + 7009: 0x8AA6, + 7010: 0x8A9A, + 7011: 0x8AA3, + 7012: 0x8AC4, + 7013: 0x8ACD, + 7014: 0x8AC2, + 7015: 0x8ADA, + 7016: 0x8AEB, + 7017: 0x8AF3, + 7018: 0x8AE7, + 7019: 0x8AE4, + 7020: 0x8AF1, + 7021: 0x8B14, + 7022: 0x8AE0, + 7023: 0x8AE2, + 7024: 0x8AF7, + 7025: 0x8ADE, + 7026: 0x8ADB, + 7027: 0x8B0C, + 7028: 0x8B07, + 7029: 0x8B1A, + 7030: 0x8AE1, + 7031: 0x8B16, + 7032: 0x8B10, + 7033: 0x8B17, + 7034: 0x8B20, + 7035: 0x8B33, + 7036: 0x97AB, + 7037: 0x8B26, + 7038: 0x8B2B, + 7039: 0x8B3E, + 7040: 0x8B28, + 7041: 0x8B41, + 7042: 0x8B4C, + 7043: 0x8B4F, + 7044: 0x8B4E, + 7045: 0x8B49, + 7046: 0x8B56, + 7047: 0x8B5B, + 7048: 0x8B5A, + 7049: 0x8B6B, + 7050: 0x8B5F, + 7051: 0x8B6C, + 7052: 0x8B6F, + 7053: 0x8B74, + 7054: 0x8B7D, + 7055: 0x8B80, + 7056: 0x8B8C, + 7057: 0x8B8E, + 7058: 0x8B92, + 7059: 0x8B93, + 7060: 0x8B96, + 7061: 0x8B99, + 7062: 0x8B9A, + 7063: 0x8C3A, + 7064: 0x8C41, + 7065: 0x8C3F, + 7066: 0x8C48, + 7067: 0x8C4C, + 7068: 0x8C4E, + 7069: 0x8C50, + 7070: 0x8C55, + 7071: 0x8C62, + 7072: 0x8C6C, + 7073: 0x8C78, + 7074: 0x8C7A, + 7075: 0x8C82, + 7076: 0x8C89, + 7077: 0x8C85, + 7078: 0x8C8A, + 7079: 0x8C8D, + 7080: 0x8C8E, + 7081: 0x8C94, + 7082: 0x8C7C, + 7083: 0x8C98, + 7084: 0x621D, + 7085: 0x8CAD, + 7086: 0x8CAA, + 7087: 0x8CBD, + 7088: 0x8CB2, + 7089: 0x8CB3, + 7090: 0x8CAE, + 7091: 0x8CB6, + 7092: 0x8CC8, + 7093: 0x8CC1, + 7094: 0x8CE4, + 7095: 0x8CE3, + 7096: 0x8CDA, + 7097: 0x8CFD, + 7098: 0x8CFA, + 7099: 0x8CFB, + 7100: 0x8D04, + 7101: 0x8D05, + 7102: 0x8D0A, + 7103: 0x8D07, + 7104: 0x8D0F, + 7105: 0x8D0D, + 7106: 0x8D10, + 7107: 0x9F4E, + 7108: 0x8D13, + 7109: 0x8CCD, + 7110: 0x8D14, + 7111: 0x8D16, + 7112: 0x8D67, + 7113: 0x8D6D, + 7114: 0x8D71, + 7115: 0x8D73, + 7116: 0x8D81, + 7117: 0x8D99, + 7118: 0x8DC2, + 7119: 0x8DBE, + 7120: 0x8DBA, + 7121: 0x8DCF, + 7122: 0x8DDA, + 7123: 0x8DD6, + 7124: 0x8DCC, + 7125: 0x8DDB, + 7126: 0x8DCB, + 7127: 0x8DEA, + 7128: 0x8DEB, + 7129: 0x8DDF, + 7130: 0x8DE3, + 7131: 0x8DFC, + 7132: 0x8E08, + 7133: 0x8E09, + 7134: 0x8DFF, + 7135: 0x8E1D, + 7136: 0x8E1E, + 7137: 0x8E10, + 7138: 0x8E1F, + 7139: 0x8E42, + 7140: 0x8E35, + 7141: 0x8E30, + 7142: 0x8E34, + 7143: 0x8E4A, + 7144: 0x8E47, + 7145: 0x8E49, + 7146: 0x8E4C, + 7147: 0x8E50, + 7148: 0x8E48, + 7149: 0x8E59, + 7150: 0x8E64, + 7151: 0x8E60, + 7152: 0x8E2A, + 7153: 0x8E63, + 7154: 0x8E55, + 7155: 0x8E76, + 7156: 0x8E72, + 7157: 0x8E7C, + 7158: 0x8E81, + 7159: 0x8E87, + 7160: 0x8E85, + 7161: 0x8E84, + 7162: 0x8E8B, + 7163: 0x8E8A, + 7164: 0x8E93, + 7165: 0x8E91, + 7166: 0x8E94, + 7167: 0x8E99, + 7168: 0x8EAA, + 7169: 0x8EA1, + 7170: 0x8EAC, + 7171: 0x8EB0, + 7172: 0x8EC6, + 7173: 0x8EB1, + 7174: 0x8EBE, + 7175: 0x8EC5, + 7176: 0x8EC8, + 7177: 0x8ECB, + 7178: 0x8EDB, + 7179: 0x8EE3, + 7180: 0x8EFC, + 7181: 0x8EFB, + 7182: 0x8EEB, + 7183: 0x8EFE, + 7184: 0x8F0A, + 7185: 0x8F05, + 7186: 0x8F15, + 7187: 0x8F12, + 7188: 0x8F19, + 7189: 0x8F13, + 7190: 0x8F1C, + 7191: 0x8F1F, + 7192: 0x8F1B, + 7193: 0x8F0C, + 7194: 0x8F26, + 7195: 0x8F33, + 7196: 0x8F3B, + 7197: 0x8F39, + 7198: 0x8F45, + 7199: 0x8F42, + 7200: 0x8F3E, + 7201: 0x8F4C, + 7202: 0x8F49, + 7203: 0x8F46, + 7204: 0x8F4E, + 7205: 0x8F57, + 7206: 0x8F5C, + 7207: 0x8F62, + 7208: 0x8F63, + 7209: 0x8F64, + 7210: 0x8F9C, + 7211: 0x8F9F, + 7212: 0x8FA3, + 7213: 0x8FAD, + 7214: 0x8FAF, + 7215: 0x8FB7, + 7216: 0x8FDA, + 7217: 0x8FE5, + 7218: 0x8FE2, + 7219: 0x8FEA, + 7220: 0x8FEF, + 7221: 0x9087, + 7222: 0x8FF4, + 7223: 0x9005, + 7224: 0x8FF9, + 7225: 0x8FFA, + 7226: 0x9011, + 7227: 0x9015, + 7228: 0x9021, + 7229: 0x900D, + 7230: 0x901E, + 7231: 0x9016, + 7232: 0x900B, + 7233: 0x9027, + 7234: 0x9036, + 7235: 0x9035, + 7236: 0x9039, + 7237: 0x8FF8, + 7238: 0x904F, + 7239: 0x9050, + 7240: 0x9051, + 7241: 0x9052, + 7242: 0x900E, + 7243: 0x9049, + 7244: 0x903E, + 7245: 0x9056, + 7246: 0x9058, + 7247: 0x905E, + 7248: 0x9068, + 7249: 0x906F, + 7250: 0x9076, + 7251: 0x96A8, + 7252: 0x9072, + 7253: 0x9082, + 7254: 0x907D, + 7255: 0x9081, + 7256: 0x9080, + 7257: 0x908A, + 7258: 0x9089, + 7259: 0x908F, + 7260: 0x90A8, + 7261: 0x90AF, + 7262: 0x90B1, + 7263: 0x90B5, + 7264: 0x90E2, + 7265: 0x90E4, + 7266: 0x6248, + 7267: 0x90DB, + 7268: 0x9102, + 7269: 0x9112, + 7270: 0x9119, + 7271: 0x9132, + 7272: 0x9130, + 7273: 0x914A, + 7274: 0x9156, + 7275: 0x9158, + 7276: 0x9163, + 7277: 0x9165, + 7278: 0x9169, + 7279: 0x9173, + 7280: 0x9172, + 7281: 0x918B, + 7282: 0x9189, + 7283: 0x9182, + 7284: 0x91A2, + 7285: 0x91AB, + 7286: 0x91AF, + 7287: 0x91AA, + 7288: 0x91B5, + 7289: 0x91B4, + 7290: 0x91BA, + 7291: 0x91C0, + 7292: 0x91C1, + 7293: 0x91C9, + 7294: 0x91CB, + 7295: 0x91D0, + 7296: 0x91D6, + 7297: 0x91DF, + 7298: 0x91E1, + 7299: 0x91DB, + 7300: 0x91FC, + 7301: 0x91F5, + 7302: 0x91F6, + 7303: 0x921E, + 7304: 0x91FF, + 7305: 0x9214, + 7306: 0x922C, + 7307: 0x9215, + 7308: 0x9211, + 7309: 0x925E, + 7310: 0x9257, + 7311: 0x9245, + 7312: 0x9249, + 7313: 0x9264, + 7314: 0x9248, + 7315: 0x9295, + 7316: 0x923F, + 7317: 0x924B, + 7318: 0x9250, + 7319: 0x929C, + 7320: 0x9296, + 7321: 0x9293, + 7322: 0x929B, + 7323: 0x925A, + 7324: 0x92CF, + 7325: 0x92B9, + 7326: 0x92B7, + 7327: 0x92E9, + 7328: 0x930F, + 7329: 0x92FA, + 7330: 0x9344, + 7331: 0x932E, + 7332: 0x9319, + 7333: 0x9322, + 7334: 0x931A, + 7335: 0x9323, + 7336: 0x933A, + 7337: 0x9335, + 7338: 0x933B, + 7339: 0x935C, + 7340: 0x9360, + 7341: 0x937C, + 7342: 0x936E, + 7343: 0x9356, + 7344: 0x93B0, + 7345: 0x93AC, + 7346: 0x93AD, + 7347: 0x9394, + 7348: 0x93B9, + 7349: 0x93D6, + 7350: 0x93D7, + 7351: 0x93E8, + 7352: 0x93E5, + 7353: 0x93D8, + 7354: 0x93C3, + 7355: 0x93DD, + 7356: 0x93D0, + 7357: 0x93C8, + 7358: 0x93E4, + 7359: 0x941A, + 7360: 0x9414, + 7361: 0x9413, + 7362: 0x9403, + 7363: 0x9407, + 7364: 0x9410, + 7365: 0x9436, + 7366: 0x942B, + 7367: 0x9435, + 7368: 0x9421, + 7369: 0x943A, + 7370: 0x9441, + 7371: 0x9452, + 7372: 0x9444, + 7373: 0x945B, + 7374: 0x9460, + 7375: 0x9462, + 7376: 0x945E, + 7377: 0x946A, + 7378: 0x9229, + 7379: 0x9470, + 7380: 0x9475, + 7381: 0x9477, + 7382: 0x947D, + 7383: 0x945A, + 7384: 0x947C, + 7385: 0x947E, + 7386: 0x9481, + 7387: 0x947F, + 7388: 0x9582, + 7389: 0x9587, + 7390: 0x958A, + 7391: 0x9594, + 7392: 0x9596, + 7393: 0x9598, + 7394: 0x9599, + 7395: 0x95A0, + 7396: 0x95A8, + 7397: 0x95A7, + 7398: 0x95AD, + 7399: 0x95BC, + 7400: 0x95BB, + 7401: 0x95B9, + 7402: 0x95BE, + 7403: 0x95CA, + 7404: 0x6FF6, + 7405: 0x95C3, + 7406: 0x95CD, + 7407: 0x95CC, + 7408: 0x95D5, + 7409: 0x95D4, + 7410: 0x95D6, + 7411: 0x95DC, + 7412: 0x95E1, + 7413: 0x95E5, + 7414: 0x95E2, + 7415: 0x9621, + 7416: 0x9628, + 7417: 0x962E, + 7418: 0x962F, + 7419: 0x9642, + 7420: 0x964C, + 7421: 0x964F, + 7422: 0x964B, + 7423: 0x9677, + 7424: 0x965C, + 7425: 0x965E, + 7426: 0x965D, + 7427: 0x965F, + 7428: 0x9666, + 7429: 0x9672, + 7430: 0x966C, + 7431: 0x968D, + 7432: 0x9698, + 7433: 0x9695, + 7434: 0x9697, + 7435: 0x96AA, + 7436: 0x96A7, + 7437: 0x96B1, + 7438: 0x96B2, + 7439: 0x96B0, + 7440: 0x96B4, + 7441: 0x96B6, + 7442: 0x96B8, + 7443: 0x96B9, + 7444: 0x96CE, + 7445: 0x96CB, + 7446: 0x96C9, + 7447: 0x96CD, + 7448: 0x894D, + 7449: 0x96DC, + 7450: 0x970D, + 7451: 0x96D5, + 7452: 0x96F9, + 7453: 0x9704, + 7454: 0x9706, + 7455: 0x9708, + 7456: 0x9713, + 7457: 0x970E, + 7458: 0x9711, + 7459: 0x970F, + 7460: 0x9716, + 7461: 0x9719, + 7462: 0x9724, + 7463: 0x972A, + 7464: 0x9730, + 7465: 0x9739, + 7466: 0x973D, + 7467: 0x973E, + 7468: 0x9744, + 7469: 0x9746, + 7470: 0x9748, + 7471: 0x9742, + 7472: 0x9749, + 7473: 0x975C, + 7474: 0x9760, + 7475: 0x9764, + 7476: 0x9766, + 7477: 0x9768, + 7478: 0x52D2, + 7479: 0x976B, + 7480: 0x9771, + 7481: 0x9779, + 7482: 0x9785, + 7483: 0x977C, + 7484: 0x9781, + 7485: 0x977A, + 7486: 0x9786, + 7487: 0x978B, + 7488: 0x978F, + 7489: 0x9790, + 7490: 0x979C, + 7491: 0x97A8, + 7492: 0x97A6, + 7493: 0x97A3, + 7494: 0x97B3, + 7495: 0x97B4, + 7496: 0x97C3, + 7497: 0x97C6, + 7498: 0x97C8, + 7499: 0x97CB, + 7500: 0x97DC, + 7501: 0x97ED, + 7502: 0x9F4F, + 7503: 0x97F2, + 7504: 0x7ADF, + 7505: 0x97F6, + 7506: 0x97F5, + 7507: 0x980F, + 7508: 0x980C, + 7509: 0x9838, + 7510: 0x9824, + 7511: 0x9821, + 7512: 0x9837, + 7513: 0x983D, + 7514: 0x9846, + 7515: 0x984F, + 7516: 0x984B, + 7517: 0x986B, + 7518: 0x986F, + 7519: 0x9870, + 7520: 0x9871, + 7521: 0x9874, + 7522: 0x9873, + 7523: 0x98AA, + 7524: 0x98AF, + 7525: 0x98B1, + 7526: 0x98B6, + 7527: 0x98C4, + 7528: 0x98C3, + 7529: 0x98C6, + 7530: 0x98E9, + 7531: 0x98EB, + 7532: 0x9903, + 7533: 0x9909, + 7534: 0x9912, + 7535: 0x9914, + 7536: 0x9918, + 7537: 0x9921, + 7538: 0x991D, + 7539: 0x991E, + 7540: 0x9924, + 7541: 0x9920, + 7542: 0x992C, + 7543: 0x992E, + 7544: 0x993D, + 7545: 0x993E, + 7546: 0x9942, + 7547: 0x9949, + 7548: 0x9945, + 7549: 0x9950, + 7550: 0x994B, + 7551: 0x9951, + 7552: 0x9952, + 7553: 0x994C, + 7554: 0x9955, + 7555: 0x9997, + 7556: 0x9998, + 7557: 0x99A5, + 7558: 0x99AD, + 7559: 0x99AE, + 7560: 0x99BC, + 7561: 0x99DF, + 7562: 0x99DB, + 7563: 0x99DD, + 7564: 0x99D8, + 7565: 0x99D1, + 7566: 0x99ED, + 7567: 0x99EE, + 7568: 0x99F1, + 7569: 0x99F2, + 7570: 0x99FB, + 7571: 0x99F8, + 7572: 0x9A01, + 7573: 0x9A0F, + 7574: 0x9A05, + 7575: 0x99E2, + 7576: 0x9A19, + 7577: 0x9A2B, + 7578: 0x9A37, + 7579: 0x9A45, + 7580: 0x9A42, + 7581: 0x9A40, + 7582: 0x9A43, + 7583: 0x9A3E, + 7584: 0x9A55, + 7585: 0x9A4D, + 7586: 0x9A5B, + 7587: 0x9A57, + 7588: 0x9A5F, + 7589: 0x9A62, + 7590: 0x9A65, + 7591: 0x9A64, + 7592: 0x9A69, + 7593: 0x9A6B, + 7594: 0x9A6A, + 7595: 0x9AAD, + 7596: 0x9AB0, + 7597: 0x9ABC, + 7598: 0x9AC0, + 7599: 0x9ACF, + 7600: 0x9AD1, + 7601: 0x9AD3, + 7602: 0x9AD4, + 7603: 0x9ADE, + 7604: 0x9ADF, + 7605: 0x9AE2, + 7606: 0x9AE3, + 7607: 0x9AE6, + 7608: 0x9AEF, + 7609: 0x9AEB, + 7610: 0x9AEE, + 7611: 0x9AF4, + 7612: 0x9AF1, + 7613: 0x9AF7, + 7614: 0x9AFB, + 7615: 0x9B06, + 7616: 0x9B18, + 7617: 0x9B1A, + 7618: 0x9B1F, + 7619: 0x9B22, + 7620: 0x9B23, + 7621: 0x9B25, + 7622: 0x9B27, + 7623: 0x9B28, + 7624: 0x9B29, + 7625: 0x9B2A, + 7626: 0x9B2E, + 7627: 0x9B2F, + 7628: 0x9B32, + 7629: 0x9B44, + 7630: 0x9B43, + 7631: 0x9B4F, + 7632: 0x9B4D, + 7633: 0x9B4E, + 7634: 0x9B51, + 7635: 0x9B58, + 7636: 0x9B74, + 7637: 0x9B93, + 7638: 0x9B83, + 7639: 0x9B91, + 7640: 0x9B96, + 7641: 0x9B97, + 7642: 0x9B9F, + 7643: 0x9BA0, + 7644: 0x9BA8, + 7645: 0x9BB4, + 7646: 0x9BC0, + 7647: 0x9BCA, + 7648: 0x9BB9, + 7649: 0x9BC6, + 7650: 0x9BCF, + 7651: 0x9BD1, + 7652: 0x9BD2, + 7653: 0x9BE3, + 7654: 0x9BE2, + 7655: 0x9BE4, + 7656: 0x9BD4, + 7657: 0x9BE1, + 7658: 0x9C3A, + 7659: 0x9BF2, + 7660: 0x9BF1, + 7661: 0x9BF0, + 7662: 0x9C15, + 7663: 0x9C14, + 7664: 0x9C09, + 7665: 0x9C13, + 7666: 0x9C0C, + 7667: 0x9C06, + 7668: 0x9C08, + 7669: 0x9C12, + 7670: 0x9C0A, + 7671: 0x9C04, + 7672: 0x9C2E, + 7673: 0x9C1B, + 7674: 0x9C25, + 7675: 0x9C24, + 7676: 0x9C21, + 7677: 0x9C30, + 7678: 0x9C47, + 7679: 0x9C32, + 7680: 0x9C46, + 7681: 0x9C3E, + 7682: 0x9C5A, + 7683: 0x9C60, + 7684: 0x9C67, + 7685: 0x9C76, + 7686: 0x9C78, + 7687: 0x9CE7, + 7688: 0x9CEC, + 7689: 0x9CF0, + 7690: 0x9D09, + 7691: 0x9D08, + 7692: 0x9CEB, + 7693: 0x9D03, + 7694: 0x9D06, + 7695: 0x9D2A, + 7696: 0x9D26, + 7697: 0x9DAF, + 7698: 0x9D23, + 7699: 0x9D1F, + 7700: 0x9D44, + 7701: 0x9D15, + 7702: 0x9D12, + 7703: 0x9D41, + 7704: 0x9D3F, + 7705: 0x9D3E, + 7706: 0x9D46, + 7707: 0x9D48, + 7708: 0x9D5D, + 7709: 0x9D5E, + 7710: 0x9D64, + 7711: 0x9D51, + 7712: 0x9D50, + 7713: 0x9D59, + 7714: 0x9D72, + 7715: 0x9D89, + 7716: 0x9D87, + 7717: 0x9DAB, + 7718: 0x9D6F, + 7719: 0x9D7A, + 7720: 0x9D9A, + 7721: 0x9DA4, + 7722: 0x9DA9, + 7723: 0x9DB2, + 7724: 0x9DC4, + 7725: 0x9DC1, + 7726: 0x9DBB, + 7727: 0x9DB8, + 7728: 0x9DBA, + 7729: 0x9DC6, + 7730: 0x9DCF, + 7731: 0x9DC2, + 7732: 0x9DD9, + 7733: 0x9DD3, + 7734: 0x9DF8, + 7735: 0x9DE6, + 7736: 0x9DED, + 7737: 0x9DEF, + 7738: 0x9DFD, + 7739: 0x9E1A, + 7740: 0x9E1B, + 7741: 0x9E1E, + 7742: 0x9E75, + 7743: 0x9E79, + 7744: 0x9E7D, + 7745: 0x9E81, + 7746: 0x9E88, + 7747: 0x9E8B, + 7748: 0x9E8C, + 7749: 0x9E92, + 7750: 0x9E95, + 7751: 0x9E91, + 7752: 0x9E9D, + 7753: 0x9EA5, + 7754: 0x9EA9, + 7755: 0x9EB8, + 7756: 0x9EAA, + 7757: 0x9EAD, + 7758: 0x9761, + 7759: 0x9ECC, + 7760: 0x9ECE, + 7761: 0x9ECF, + 7762: 0x9ED0, + 7763: 0x9ED4, + 7764: 0x9EDC, + 7765: 0x9EDE, + 7766: 0x9EDD, + 7767: 0x9EE0, + 7768: 0x9EE5, + 7769: 0x9EE8, + 7770: 0x9EEF, + 7771: 0x9EF4, + 7772: 0x9EF6, + 7773: 0x9EF7, + 7774: 0x9EF9, + 7775: 0x9EFB, + 7776: 0x9EFC, + 7777: 0x9EFD, + 7778: 0x9F07, + 7779: 0x9F08, + 7780: 0x76B7, + 7781: 0x9F15, + 7782: 0x9F21, + 7783: 0x9F2C, + 7784: 0x9F3E, + 7785: 0x9F4A, + 7786: 0x9F52, + 7787: 0x9F54, + 7788: 0x9F63, + 7789: 0x9F5F, + 7790: 0x9F60, + 7791: 0x9F61, + 7792: 0x9F66, + 7793: 0x9F67, + 7794: 0x9F6C, + 7795: 0x9F6A, + 7796: 0x9F77, + 7797: 0x9F72, + 7798: 0x9F76, + 7799: 0x9F95, + 7800: 0x9F9C, + 7801: 0x9FA0, + 7802: 0x582F, + 7803: 0x69C7, + 7804: 0x9059, + 7805: 0x7464, + 7806: 0x51DC, + 7807: 0x7199, + 8272: 0x7E8A, + 8273: 0x891C, + 8274: 0x9348, + 8275: 0x9288, + 8276: 0x84DC, + 8277: 0x4FC9, + 8278: 0x70BB, + 8279: 0x6631, + 8280: 0x68C8, + 8281: 0x92F9, + 8282: 0x66FB, + 8283: 0x5F45, + 8284: 0x4E28, + 8285: 0x4EE1, + 8286: 0x4EFC, + 8287: 0x4F00, + 8288: 0x4F03, + 8289: 0x4F39, + 8290: 0x4F56, + 8291: 0x4F92, + 8292: 0x4F8A, + 8293: 0x4F9A, + 8294: 0x4F94, + 8295: 0x4FCD, + 8296: 0x5040, + 8297: 0x5022, + 8298: 0x4FFF, + 8299: 0x501E, + 8300: 0x5046, + 8301: 0x5070, + 8302: 0x5042, + 8303: 0x5094, + 8304: 0x50F4, + 8305: 0x50D8, + 8306: 0x514A, + 8307: 0x5164, + 8308: 0x519D, + 8309: 0x51BE, + 8310: 0x51EC, + 8311: 0x5215, + 8312: 0x529C, + 8313: 0x52A6, + 8314: 0x52C0, + 8315: 0x52DB, + 8316: 0x5300, + 8317: 0x5307, + 8318: 0x5324, + 8319: 0x5372, + 8320: 0x5393, + 8321: 0x53B2, + 8322: 0x53DD, + 8323: 0xFA0E, + 8324: 0x549C, + 8325: 0x548A, + 8326: 0x54A9, + 8327: 0x54FF, + 8328: 0x5586, + 8329: 0x5759, + 8330: 0x5765, + 8331: 0x57AC, + 8332: 0x57C8, + 8333: 0x57C7, + 8334: 0xFA0F, + 8335: 0xFA10, + 8336: 0x589E, + 8337: 0x58B2, + 8338: 0x590B, + 8339: 0x5953, + 8340: 0x595B, + 8341: 0x595D, + 8342: 0x5963, + 8343: 0x59A4, + 8344: 0x59BA, + 8345: 0x5B56, + 8346: 0x5BC0, + 8347: 0x752F, + 8348: 0x5BD8, + 8349: 0x5BEC, + 8350: 0x5C1E, + 8351: 0x5CA6, + 8352: 0x5CBA, + 8353: 0x5CF5, + 8354: 0x5D27, + 8355: 0x5D53, + 8356: 0xFA11, + 8357: 0x5D42, + 8358: 0x5D6D, + 8359: 0x5DB8, + 8360: 0x5DB9, + 8361: 0x5DD0, + 8362: 0x5F21, + 8363: 0x5F34, + 8364: 0x5F67, + 8365: 0x5FB7, + 8366: 0x5FDE, + 8367: 0x605D, + 8368: 0x6085, + 8369: 0x608A, + 8370: 0x60DE, + 8371: 0x60D5, + 8372: 0x6120, + 8373: 0x60F2, + 8374: 0x6111, + 8375: 0x6137, + 8376: 0x6130, + 8377: 0x6198, + 8378: 0x6213, + 8379: 0x62A6, + 8380: 0x63F5, + 8381: 0x6460, + 8382: 0x649D, + 8383: 0x64CE, + 8384: 0x654E, + 8385: 0x6600, + 8386: 0x6615, + 8387: 0x663B, + 8388: 0x6609, + 8389: 0x662E, + 8390: 0x661E, + 8391: 0x6624, + 8392: 0x6665, + 8393: 0x6657, + 8394: 0x6659, + 8395: 0xFA12, + 8396: 0x6673, + 8397: 0x6699, + 8398: 0x66A0, + 8399: 0x66B2, + 8400: 0x66BF, + 8401: 0x66FA, + 8402: 0x670E, + 8403: 0xF929, + 8404: 0x6766, + 8405: 0x67BB, + 8406: 0x6852, + 8407: 0x67C0, + 8408: 0x6801, + 8409: 0x6844, + 8410: 0x68CF, + 8411: 0xFA13, + 8412: 0x6968, + 8413: 0xFA14, + 8414: 0x6998, + 8415: 0x69E2, + 8416: 0x6A30, + 8417: 0x6A6B, + 8418: 0x6A46, + 8419: 0x6A73, + 8420: 0x6A7E, + 8421: 0x6AE2, + 8422: 0x6AE4, + 8423: 0x6BD6, + 8424: 0x6C3F, + 8425: 0x6C5C, + 8426: 0x6C86, + 8427: 0x6C6F, + 8428: 0x6CDA, + 8429: 0x6D04, + 8430: 0x6D87, + 8431: 0x6D6F, + 8432: 0x6D96, + 8433: 0x6DAC, + 8434: 0x6DCF, + 8435: 0x6DF8, + 8436: 0x6DF2, + 8437: 0x6DFC, + 8438: 0x6E39, + 8439: 0x6E5C, + 8440: 0x6E27, + 8441: 0x6E3C, + 8442: 0x6EBF, + 8443: 0x6F88, + 8444: 0x6FB5, + 8445: 0x6FF5, + 8446: 0x7005, + 8447: 0x7007, + 8448: 0x7028, + 8449: 0x7085, + 8450: 0x70AB, + 8451: 0x710F, + 8452: 0x7104, + 8453: 0x715C, + 8454: 0x7146, + 8455: 0x7147, + 8456: 0xFA15, + 8457: 0x71C1, + 8458: 0x71FE, + 8459: 0x72B1, + 8460: 0x72BE, + 8461: 0x7324, + 8462: 0xFA16, + 8463: 0x7377, + 8464: 0x73BD, + 8465: 0x73C9, + 8466: 0x73D6, + 8467: 0x73E3, + 8468: 0x73D2, + 8469: 0x7407, + 8470: 0x73F5, + 8471: 0x7426, + 8472: 0x742A, + 8473: 0x7429, + 8474: 0x742E, + 8475: 0x7462, + 8476: 0x7489, + 8477: 0x749F, + 8478: 0x7501, + 8479: 0x756F, + 8480: 0x7682, + 8481: 0x769C, + 8482: 0x769E, + 8483: 0x769B, + 8484: 0x76A6, + 8485: 0xFA17, + 8486: 0x7746, + 8487: 0x52AF, + 8488: 0x7821, + 8489: 0x784E, + 8490: 0x7864, + 8491: 0x787A, + 8492: 0x7930, + 8493: 0xFA18, + 8494: 0xFA19, + 8495: 0xFA1A, + 8496: 0x7994, + 8497: 0xFA1B, + 8498: 0x799B, + 8499: 0x7AD1, + 8500: 0x7AE7, + 8501: 0xFA1C, + 8502: 0x7AEB, + 8503: 0x7B9E, + 8504: 0xFA1D, + 8505: 0x7D48, + 8506: 0x7D5C, + 8507: 0x7DB7, + 8508: 0x7DA0, + 8509: 0x7DD6, + 8510: 0x7E52, + 8511: 0x7F47, + 8512: 0x7FA1, + 8513: 0xFA1E, + 8514: 0x8301, + 8515: 0x8362, + 8516: 0x837F, + 8517: 0x83C7, + 8518: 0x83F6, + 8519: 0x8448, + 8520: 0x84B4, + 8521: 0x8553, + 8522: 0x8559, + 8523: 0x856B, + 8524: 0xFA1F, + 8525: 0x85B0, + 8526: 0xFA20, + 8527: 0xFA21, + 8528: 0x8807, + 8529: 0x88F5, + 8530: 0x8A12, + 8531: 0x8A37, + 8532: 0x8A79, + 8533: 0x8AA7, + 8534: 0x8ABE, + 8535: 0x8ADF, + 8536: 0xFA22, + 8537: 0x8AF6, + 8538: 0x8B53, + 8539: 0x8B7F, + 8540: 0x8CF0, + 8541: 0x8CF4, + 8542: 0x8D12, + 8543: 0x8D76, + 8544: 0xFA23, + 8545: 0x8ECF, + 8546: 0xFA24, + 8547: 0xFA25, + 8548: 0x9067, + 8549: 0x90DE, + 8550: 0xFA26, + 8551: 0x9115, + 8552: 0x9127, + 8553: 0x91DA, + 8554: 0x91D7, + 8555: 0x91DE, + 8556: 0x91ED, + 8557: 0x91EE, + 8558: 0x91E4, + 8559: 0x91E5, + 8560: 0x9206, + 8561: 0x9210, + 8562: 0x920A, + 8563: 0x923A, + 8564: 0x9240, + 8565: 0x923C, + 8566: 0x924E, + 8567: 0x9259, + 8568: 0x9251, + 8569: 0x9239, + 8570: 0x9267, + 8571: 0x92A7, + 8572: 0x9277, + 8573: 0x9278, + 8574: 0x92E7, + 8575: 0x92D7, + 8576: 0x92D9, + 8577: 0x92D0, + 8578: 0xFA27, + 8579: 0x92D5, + 8580: 0x92E0, + 8581: 0x92D3, + 8582: 0x9325, + 8583: 0x9321, + 8584: 0x92FB, + 8585: 0xFA28, + 8586: 0x931E, + 8587: 0x92FF, + 8588: 0x931D, + 8589: 0x9302, + 8590: 0x9370, + 8591: 0x9357, + 8592: 0x93A4, + 8593: 0x93C6, + 8594: 0x93DE, + 8595: 0x93F8, + 8596: 0x9431, + 8597: 0x9445, + 8598: 0x9448, + 8599: 0x9592, + 8600: 0xF9DC, + 8601: 0xFA29, + 8602: 0x969D, + 8603: 0x96AF, + 8604: 0x9733, + 8605: 0x973B, + 8606: 0x9743, + 8607: 0x974D, + 8608: 0x974F, + 8609: 0x9751, + 8610: 0x9755, + 8611: 0x9857, + 8612: 0x9865, + 8613: 0xFA2A, + 8614: 0xFA2B, + 8615: 0x9927, + 8616: 0xFA2C, + 8617: 0x999E, + 8618: 0x9A4E, + 8619: 0x9AD9, + 8620: 0x9ADC, + 8621: 0x9B75, + 8622: 0x9B72, + 8623: 0x9B8F, + 8624: 0x9BB1, + 8625: 0x9BBB, + 8626: 0x9C00, + 8627: 0x9D70, + 8628: 0x9D6B, + 8629: 0xFA2D, + 8630: 0x9E19, + 8631: 0x9ED1, + 8634: 0x2170, + 8635: 0x2171, + 8636: 0x2172, + 8637: 0x2173, + 8638: 0x2174, + 8639: 0x2175, + 8640: 0x2176, + 8641: 0x2177, + 8642: 0x2178, + 8643: 0x2179, + 8644: 0xFFE2, + 8645: 0xFFE4, + 8646: 0xFF07, + 8647: 0xFF02, + 10716: 0x2170, + 10717: 0x2171, + 10718: 0x2172, + 10719: 0x2173, + 10720: 0x2174, + 10721: 0x2175, + 10722: 0x2176, + 10723: 0x2177, + 10724: 0x2178, + 10725: 0x2179, + 10726: 0x2160, + 10727: 0x2161, + 10728: 0x2162, + 10729: 0x2163, + 10730: 0x2164, + 10731: 0x2165, + 10732: 0x2166, + 10733: 0x2167, + 10734: 0x2168, + 10735: 0x2169, + 10736: 0xFFE2, + 10737: 0xFFE4, + 10738: 0xFF07, + 10739: 0xFF02, + 10740: 0x3231, + 10741: 0x2116, + 10742: 0x2121, + 10743: 0x2235, + 10744: 0x7E8A, + 10745: 0x891C, + 10746: 0x9348, + 10747: 0x9288, + 10748: 0x84DC, + 10749: 0x4FC9, + 10750: 0x70BB, + 10751: 0x6631, + 10752: 0x68C8, + 10753: 0x92F9, + 10754: 0x66FB, + 10755: 0x5F45, + 10756: 0x4E28, + 10757: 0x4EE1, + 10758: 0x4EFC, + 10759: 0x4F00, + 10760: 0x4F03, + 10761: 0x4F39, + 10762: 0x4F56, + 10763: 0x4F92, + 10764: 0x4F8A, + 10765: 0x4F9A, + 10766: 0x4F94, + 10767: 0x4FCD, + 10768: 0x5040, + 10769: 0x5022, + 10770: 0x4FFF, + 10771: 0x501E, + 10772: 0x5046, + 10773: 0x5070, + 10774: 0x5042, + 10775: 0x5094, + 10776: 0x50F4, + 10777: 0x50D8, + 10778: 0x514A, + 10779: 0x5164, + 10780: 0x519D, + 10781: 0x51BE, + 10782: 0x51EC, + 10783: 0x5215, + 10784: 0x529C, + 10785: 0x52A6, + 10786: 0x52C0, + 10787: 0x52DB, + 10788: 0x5300, + 10789: 0x5307, + 10790: 0x5324, + 10791: 0x5372, + 10792: 0x5393, + 10793: 0x53B2, + 10794: 0x53DD, + 10795: 0xFA0E, + 10796: 0x549C, + 10797: 0x548A, + 10798: 0x54A9, + 10799: 0x54FF, + 10800: 0x5586, + 10801: 0x5759, + 10802: 0x5765, + 10803: 0x57AC, + 10804: 0x57C8, + 10805: 0x57C7, + 10806: 0xFA0F, + 10807: 0xFA10, + 10808: 0x589E, + 10809: 0x58B2, + 10810: 0x590B, + 10811: 0x5953, + 10812: 0x595B, + 10813: 0x595D, + 10814: 0x5963, + 10815: 0x59A4, + 10816: 0x59BA, + 10817: 0x5B56, + 10818: 0x5BC0, + 10819: 0x752F, + 10820: 0x5BD8, + 10821: 0x5BEC, + 10822: 0x5C1E, + 10823: 0x5CA6, + 10824: 0x5CBA, + 10825: 0x5CF5, + 10826: 0x5D27, + 10827: 0x5D53, + 10828: 0xFA11, + 10829: 0x5D42, + 10830: 0x5D6D, + 10831: 0x5DB8, + 10832: 0x5DB9, + 10833: 0x5DD0, + 10834: 0x5F21, + 10835: 0x5F34, + 10836: 0x5F67, + 10837: 0x5FB7, + 10838: 0x5FDE, + 10839: 0x605D, + 10840: 0x6085, + 10841: 0x608A, + 10842: 0x60DE, + 10843: 0x60D5, + 10844: 0x6120, + 10845: 0x60F2, + 10846: 0x6111, + 10847: 0x6137, + 10848: 0x6130, + 10849: 0x6198, + 10850: 0x6213, + 10851: 0x62A6, + 10852: 0x63F5, + 10853: 0x6460, + 10854: 0x649D, + 10855: 0x64CE, + 10856: 0x654E, + 10857: 0x6600, + 10858: 0x6615, + 10859: 0x663B, + 10860: 0x6609, + 10861: 0x662E, + 10862: 0x661E, + 10863: 0x6624, + 10864: 0x6665, + 10865: 0x6657, + 10866: 0x6659, + 10867: 0xFA12, + 10868: 0x6673, + 10869: 0x6699, + 10870: 0x66A0, + 10871: 0x66B2, + 10872: 0x66BF, + 10873: 0x66FA, + 10874: 0x670E, + 10875: 0xF929, + 10876: 0x6766, + 10877: 0x67BB, + 10878: 0x6852, + 10879: 0x67C0, + 10880: 0x6801, + 10881: 0x6844, + 10882: 0x68CF, + 10883: 0xFA13, + 10884: 0x6968, + 10885: 0xFA14, + 10886: 0x6998, + 10887: 0x69E2, + 10888: 0x6A30, + 10889: 0x6A6B, + 10890: 0x6A46, + 10891: 0x6A73, + 10892: 0x6A7E, + 10893: 0x6AE2, + 10894: 0x6AE4, + 10895: 0x6BD6, + 10896: 0x6C3F, + 10897: 0x6C5C, + 10898: 0x6C86, + 10899: 0x6C6F, + 10900: 0x6CDA, + 10901: 0x6D04, + 10902: 0x6D87, + 10903: 0x6D6F, + 10904: 0x6D96, + 10905: 0x6DAC, + 10906: 0x6DCF, + 10907: 0x6DF8, + 10908: 0x6DF2, + 10909: 0x6DFC, + 10910: 0x6E39, + 10911: 0x6E5C, + 10912: 0x6E27, + 10913: 0x6E3C, + 10914: 0x6EBF, + 10915: 0x6F88, + 10916: 0x6FB5, + 10917: 0x6FF5, + 10918: 0x7005, + 10919: 0x7007, + 10920: 0x7028, + 10921: 0x7085, + 10922: 0x70AB, + 10923: 0x710F, + 10924: 0x7104, + 10925: 0x715C, + 10926: 0x7146, + 10927: 0x7147, + 10928: 0xFA15, + 10929: 0x71C1, + 10930: 0x71FE, + 10931: 0x72B1, + 10932: 0x72BE, + 10933: 0x7324, + 10934: 0xFA16, + 10935: 0x7377, + 10936: 0x73BD, + 10937: 0x73C9, + 10938: 0x73D6, + 10939: 0x73E3, + 10940: 0x73D2, + 10941: 0x7407, + 10942: 0x73F5, + 10943: 0x7426, + 10944: 0x742A, + 10945: 0x7429, + 10946: 0x742E, + 10947: 0x7462, + 10948: 0x7489, + 10949: 0x749F, + 10950: 0x7501, + 10951: 0x756F, + 10952: 0x7682, + 10953: 0x769C, + 10954: 0x769E, + 10955: 0x769B, + 10956: 0x76A6, + 10957: 0xFA17, + 10958: 0x7746, + 10959: 0x52AF, + 10960: 0x7821, + 10961: 0x784E, + 10962: 0x7864, + 10963: 0x787A, + 10964: 0x7930, + 10965: 0xFA18, + 10966: 0xFA19, + 10967: 0xFA1A, + 10968: 0x7994, + 10969: 0xFA1B, + 10970: 0x799B, + 10971: 0x7AD1, + 10972: 0x7AE7, + 10973: 0xFA1C, + 10974: 0x7AEB, + 10975: 0x7B9E, + 10976: 0xFA1D, + 10977: 0x7D48, + 10978: 0x7D5C, + 10979: 0x7DB7, + 10980: 0x7DA0, + 10981: 0x7DD6, + 10982: 0x7E52, + 10983: 0x7F47, + 10984: 0x7FA1, + 10985: 0xFA1E, + 10986: 0x8301, + 10987: 0x8362, + 10988: 0x837F, + 10989: 0x83C7, + 10990: 0x83F6, + 10991: 0x8448, + 10992: 0x84B4, + 10993: 0x8553, + 10994: 0x8559, + 10995: 0x856B, + 10996: 0xFA1F, + 10997: 0x85B0, + 10998: 0xFA20, + 10999: 0xFA21, + 11000: 0x8807, + 11001: 0x88F5, + 11002: 0x8A12, + 11003: 0x8A37, + 11004: 0x8A79, + 11005: 0x8AA7, + 11006: 0x8ABE, + 11007: 0x8ADF, + 11008: 0xFA22, + 11009: 0x8AF6, + 11010: 0x8B53, + 11011: 0x8B7F, + 11012: 0x8CF0, + 11013: 0x8CF4, + 11014: 0x8D12, + 11015: 0x8D76, + 11016: 0xFA23, + 11017: 0x8ECF, + 11018: 0xFA24, + 11019: 0xFA25, + 11020: 0x9067, + 11021: 0x90DE, + 11022: 0xFA26, + 11023: 0x9115, + 11024: 0x9127, + 11025: 0x91DA, + 11026: 0x91D7, + 11027: 0x91DE, + 11028: 0x91ED, + 11029: 0x91EE, + 11030: 0x91E4, + 11031: 0x91E5, + 11032: 0x9206, + 11033: 0x9210, + 11034: 0x920A, + 11035: 0x923A, + 11036: 0x9240, + 11037: 0x923C, + 11038: 0x924E, + 11039: 0x9259, + 11040: 0x9251, + 11041: 0x9239, + 11042: 0x9267, + 11043: 0x92A7, + 11044: 0x9277, + 11045: 0x9278, + 11046: 0x92E7, + 11047: 0x92D7, + 11048: 0x92D9, + 11049: 0x92D0, + 11050: 0xFA27, + 11051: 0x92D5, + 11052: 0x92E0, + 11053: 0x92D3, + 11054: 0x9325, + 11055: 0x9321, + 11056: 0x92FB, + 11057: 0xFA28, + 11058: 0x931E, + 11059: 0x92FF, + 11060: 0x931D, + 11061: 0x9302, + 11062: 0x9370, + 11063: 0x9357, + 11064: 0x93A4, + 11065: 0x93C6, + 11066: 0x93DE, + 11067: 0x93F8, + 11068: 0x9431, + 11069: 0x9445, + 11070: 0x9448, + 11071: 0x9592, + 11072: 0xF9DC, + 11073: 0xFA29, + 11074: 0x969D, + 11075: 0x96AF, + 11076: 0x9733, + 11077: 0x973B, + 11078: 0x9743, + 11079: 0x974D, + 11080: 0x974F, + 11081: 0x9751, + 11082: 0x9755, + 11083: 0x9857, + 11084: 0x9865, + 11085: 0xFA2A, + 11086: 0xFA2B, + 11087: 0x9927, + 11088: 0xFA2C, + 11089: 0x999E, + 11090: 0x9A4E, + 11091: 0x9AD9, + 11092: 0x9ADC, + 11093: 0x9B75, + 11094: 0x9B72, + 11095: 0x9B8F, + 11096: 0x9BB1, + 11097: 0x9BBB, + 11098: 0x9C00, + 11099: 0x9D70, + 11100: 0x9D6B, + 11101: 0xFA2D, + 11102: 0x9E19, + 11103: 0x9ED1, +} + +// jis0212Decode is the decoding table from JIS 0212 code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-jis0212.txt +var jis0212Decode = [...]uint16{ + 108: 0x02D8, + 109: 0x02C7, + 110: 0x00B8, + 111: 0x02D9, + 112: 0x02DD, + 113: 0x00AF, + 114: 0x02DB, + 115: 0x02DA, + 116: 0xFF5E, + 117: 0x0384, + 118: 0x0385, + 127: 0x00A1, + 128: 0x00A6, + 129: 0x00BF, + 168: 0x00BA, + 169: 0x00AA, + 170: 0x00A9, + 171: 0x00AE, + 172: 0x2122, + 173: 0x00A4, + 174: 0x2116, + 534: 0x0386, + 535: 0x0388, + 536: 0x0389, + 537: 0x038A, + 538: 0x03AA, + 540: 0x038C, + 542: 0x038E, + 543: 0x03AB, + 545: 0x038F, + 550: 0x03AC, + 551: 0x03AD, + 552: 0x03AE, + 553: 0x03AF, + 554: 0x03CA, + 555: 0x0390, + 556: 0x03CC, + 557: 0x03C2, + 558: 0x03CD, + 559: 0x03CB, + 560: 0x03B0, + 561: 0x03CE, + 597: 0x0402, + 598: 0x0403, + 599: 0x0404, + 600: 0x0405, + 601: 0x0406, + 602: 0x0407, + 603: 0x0408, + 604: 0x0409, + 605: 0x040A, + 606: 0x040B, + 607: 0x040C, + 608: 0x040E, + 609: 0x040F, + 645: 0x0452, + 646: 0x0453, + 647: 0x0454, + 648: 0x0455, + 649: 0x0456, + 650: 0x0457, + 651: 0x0458, + 652: 0x0459, + 653: 0x045A, + 654: 0x045B, + 655: 0x045C, + 656: 0x045E, + 657: 0x045F, + 752: 0x00C6, + 753: 0x0110, + 755: 0x0126, + 757: 0x0132, + 759: 0x0141, + 760: 0x013F, + 762: 0x014A, + 763: 0x00D8, + 764: 0x0152, + 766: 0x0166, + 767: 0x00DE, + 784: 0x00E6, + 785: 0x0111, + 786: 0x00F0, + 787: 0x0127, + 788: 0x0131, + 789: 0x0133, + 790: 0x0138, + 791: 0x0142, + 792: 0x0140, + 793: 0x0149, + 794: 0x014B, + 795: 0x00F8, + 796: 0x0153, + 797: 0x00DF, + 798: 0x0167, + 799: 0x00FE, + 846: 0x00C1, + 847: 0x00C0, + 848: 0x00C4, + 849: 0x00C2, + 850: 0x0102, + 851: 0x01CD, + 852: 0x0100, + 853: 0x0104, + 854: 0x00C5, + 855: 0x00C3, + 856: 0x0106, + 857: 0x0108, + 858: 0x010C, + 859: 0x00C7, + 860: 0x010A, + 861: 0x010E, + 862: 0x00C9, + 863: 0x00C8, + 864: 0x00CB, + 865: 0x00CA, + 866: 0x011A, + 867: 0x0116, + 868: 0x0112, + 869: 0x0118, + 871: 0x011C, + 872: 0x011E, + 873: 0x0122, + 874: 0x0120, + 875: 0x0124, + 876: 0x00CD, + 877: 0x00CC, + 878: 0x00CF, + 879: 0x00CE, + 880: 0x01CF, + 881: 0x0130, + 882: 0x012A, + 883: 0x012E, + 884: 0x0128, + 885: 0x0134, + 886: 0x0136, + 887: 0x0139, + 888: 0x013D, + 889: 0x013B, + 890: 0x0143, + 891: 0x0147, + 892: 0x0145, + 893: 0x00D1, + 894: 0x00D3, + 895: 0x00D2, + 896: 0x00D6, + 897: 0x00D4, + 898: 0x01D1, + 899: 0x0150, + 900: 0x014C, + 901: 0x00D5, + 902: 0x0154, + 903: 0x0158, + 904: 0x0156, + 905: 0x015A, + 906: 0x015C, + 907: 0x0160, + 908: 0x015E, + 909: 0x0164, + 910: 0x0162, + 911: 0x00DA, + 912: 0x00D9, + 913: 0x00DC, + 914: 0x00DB, + 915: 0x016C, + 916: 0x01D3, + 917: 0x0170, + 918: 0x016A, + 919: 0x0172, + 920: 0x016E, + 921: 0x0168, + 922: 0x01D7, + 923: 0x01DB, + 924: 0x01D9, + 925: 0x01D5, + 926: 0x0174, + 927: 0x00DD, + 928: 0x0178, + 929: 0x0176, + 930: 0x0179, + 931: 0x017D, + 932: 0x017B, + 940: 0x00E1, + 941: 0x00E0, + 942: 0x00E4, + 943: 0x00E2, + 944: 0x0103, + 945: 0x01CE, + 946: 0x0101, + 947: 0x0105, + 948: 0x00E5, + 949: 0x00E3, + 950: 0x0107, + 951: 0x0109, + 952: 0x010D, + 953: 0x00E7, + 954: 0x010B, + 955: 0x010F, + 956: 0x00E9, + 957: 0x00E8, + 958: 0x00EB, + 959: 0x00EA, + 960: 0x011B, + 961: 0x0117, + 962: 0x0113, + 963: 0x0119, + 964: 0x01F5, + 965: 0x011D, + 966: 0x011F, + 968: 0x0121, + 969: 0x0125, + 970: 0x00ED, + 971: 0x00EC, + 972: 0x00EF, + 973: 0x00EE, + 974: 0x01D0, + 976: 0x012B, + 977: 0x012F, + 978: 0x0129, + 979: 0x0135, + 980: 0x0137, + 981: 0x013A, + 982: 0x013E, + 983: 0x013C, + 984: 0x0144, + 985: 0x0148, + 986: 0x0146, + 987: 0x00F1, + 988: 0x00F3, + 989: 0x00F2, + 990: 0x00F6, + 991: 0x00F4, + 992: 0x01D2, + 993: 0x0151, + 994: 0x014D, + 995: 0x00F5, + 996: 0x0155, + 997: 0x0159, + 998: 0x0157, + 999: 0x015B, + 1000: 0x015D, + 1001: 0x0161, + 1002: 0x015F, + 1003: 0x0165, + 1004: 0x0163, + 1005: 0x00FA, + 1006: 0x00F9, + 1007: 0x00FC, + 1008: 0x00FB, + 1009: 0x016D, + 1010: 0x01D4, + 1011: 0x0171, + 1012: 0x016B, + 1013: 0x0173, + 1014: 0x016F, + 1015: 0x0169, + 1016: 0x01D8, + 1017: 0x01DC, + 1018: 0x01DA, + 1019: 0x01D6, + 1020: 0x0175, + 1021: 0x00FD, + 1022: 0x00FF, + 1023: 0x0177, + 1024: 0x017A, + 1025: 0x017E, + 1026: 0x017C, + 1410: 0x4E02, + 1411: 0x4E04, + 1412: 0x4E05, + 1413: 0x4E0C, + 1414: 0x4E12, + 1415: 0x4E1F, + 1416: 0x4E23, + 1417: 0x4E24, + 1418: 0x4E28, + 1419: 0x4E2B, + 1420: 0x4E2E, + 1421: 0x4E2F, + 1422: 0x4E30, + 1423: 0x4E35, + 1424: 0x4E40, + 1425: 0x4E41, + 1426: 0x4E44, + 1427: 0x4E47, + 1428: 0x4E51, + 1429: 0x4E5A, + 1430: 0x4E5C, + 1431: 0x4E63, + 1432: 0x4E68, + 1433: 0x4E69, + 1434: 0x4E74, + 1435: 0x4E75, + 1436: 0x4E79, + 1437: 0x4E7F, + 1438: 0x4E8D, + 1439: 0x4E96, + 1440: 0x4E97, + 1441: 0x4E9D, + 1442: 0x4EAF, + 1443: 0x4EB9, + 1444: 0x4EC3, + 1445: 0x4ED0, + 1446: 0x4EDA, + 1447: 0x4EDB, + 1448: 0x4EE0, + 1449: 0x4EE1, + 1450: 0x4EE2, + 1451: 0x4EE8, + 1452: 0x4EEF, + 1453: 0x4EF1, + 1454: 0x4EF3, + 1455: 0x4EF5, + 1456: 0x4EFD, + 1457: 0x4EFE, + 1458: 0x4EFF, + 1459: 0x4F00, + 1460: 0x4F02, + 1461: 0x4F03, + 1462: 0x4F08, + 1463: 0x4F0B, + 1464: 0x4F0C, + 1465: 0x4F12, + 1466: 0x4F15, + 1467: 0x4F16, + 1468: 0x4F17, + 1469: 0x4F19, + 1470: 0x4F2E, + 1471: 0x4F31, + 1472: 0x4F60, + 1473: 0x4F33, + 1474: 0x4F35, + 1475: 0x4F37, + 1476: 0x4F39, + 1477: 0x4F3B, + 1478: 0x4F3E, + 1479: 0x4F40, + 1480: 0x4F42, + 1481: 0x4F48, + 1482: 0x4F49, + 1483: 0x4F4B, + 1484: 0x4F4C, + 1485: 0x4F52, + 1486: 0x4F54, + 1487: 0x4F56, + 1488: 0x4F58, + 1489: 0x4F5F, + 1490: 0x4F63, + 1491: 0x4F6A, + 1492: 0x4F6C, + 1493: 0x4F6E, + 1494: 0x4F71, + 1495: 0x4F77, + 1496: 0x4F78, + 1497: 0x4F79, + 1498: 0x4F7A, + 1499: 0x4F7D, + 1500: 0x4F7E, + 1501: 0x4F81, + 1502: 0x4F82, + 1503: 0x4F84, + 1504: 0x4F85, + 1505: 0x4F89, + 1506: 0x4F8A, + 1507: 0x4F8C, + 1508: 0x4F8E, + 1509: 0x4F90, + 1510: 0x4F92, + 1511: 0x4F93, + 1512: 0x4F94, + 1513: 0x4F97, + 1514: 0x4F99, + 1515: 0x4F9A, + 1516: 0x4F9E, + 1517: 0x4F9F, + 1518: 0x4FB2, + 1519: 0x4FB7, + 1520: 0x4FB9, + 1521: 0x4FBB, + 1522: 0x4FBC, + 1523: 0x4FBD, + 1524: 0x4FBE, + 1525: 0x4FC0, + 1526: 0x4FC1, + 1527: 0x4FC5, + 1528: 0x4FC6, + 1529: 0x4FC8, + 1530: 0x4FC9, + 1531: 0x4FCB, + 1532: 0x4FCC, + 1533: 0x4FCD, + 1534: 0x4FCF, + 1535: 0x4FD2, + 1536: 0x4FDC, + 1537: 0x4FE0, + 1538: 0x4FE2, + 1539: 0x4FF0, + 1540: 0x4FF2, + 1541: 0x4FFC, + 1542: 0x4FFD, + 1543: 0x4FFF, + 1544: 0x5000, + 1545: 0x5001, + 1546: 0x5004, + 1547: 0x5007, + 1548: 0x500A, + 1549: 0x500C, + 1550: 0x500E, + 1551: 0x5010, + 1552: 0x5013, + 1553: 0x5017, + 1554: 0x5018, + 1555: 0x501B, + 1556: 0x501C, + 1557: 0x501D, + 1558: 0x501E, + 1559: 0x5022, + 1560: 0x5027, + 1561: 0x502E, + 1562: 0x5030, + 1563: 0x5032, + 1564: 0x5033, + 1565: 0x5035, + 1566: 0x5040, + 1567: 0x5041, + 1568: 0x5042, + 1569: 0x5045, + 1570: 0x5046, + 1571: 0x504A, + 1572: 0x504C, + 1573: 0x504E, + 1574: 0x5051, + 1575: 0x5052, + 1576: 0x5053, + 1577: 0x5057, + 1578: 0x5059, + 1579: 0x505F, + 1580: 0x5060, + 1581: 0x5062, + 1582: 0x5063, + 1583: 0x5066, + 1584: 0x5067, + 1585: 0x506A, + 1586: 0x506D, + 1587: 0x5070, + 1588: 0x5071, + 1589: 0x503B, + 1590: 0x5081, + 1591: 0x5083, + 1592: 0x5084, + 1593: 0x5086, + 1594: 0x508A, + 1595: 0x508E, + 1596: 0x508F, + 1597: 0x5090, + 1598: 0x5092, + 1599: 0x5093, + 1600: 0x5094, + 1601: 0x5096, + 1602: 0x509B, + 1603: 0x509C, + 1604: 0x509E, + 1605: 0x509F, + 1606: 0x50A0, + 1607: 0x50A1, + 1608: 0x50A2, + 1609: 0x50AA, + 1610: 0x50AF, + 1611: 0x50B0, + 1612: 0x50B9, + 1613: 0x50BA, + 1614: 0x50BD, + 1615: 0x50C0, + 1616: 0x50C3, + 1617: 0x50C4, + 1618: 0x50C7, + 1619: 0x50CC, + 1620: 0x50CE, + 1621: 0x50D0, + 1622: 0x50D3, + 1623: 0x50D4, + 1624: 0x50D8, + 1625: 0x50DC, + 1626: 0x50DD, + 1627: 0x50DF, + 1628: 0x50E2, + 1629: 0x50E4, + 1630: 0x50E6, + 1631: 0x50E8, + 1632: 0x50E9, + 1633: 0x50EF, + 1634: 0x50F1, + 1635: 0x50F6, + 1636: 0x50FA, + 1637: 0x50FE, + 1638: 0x5103, + 1639: 0x5106, + 1640: 0x5107, + 1641: 0x5108, + 1642: 0x510B, + 1643: 0x510C, + 1644: 0x510D, + 1645: 0x510E, + 1646: 0x50F2, + 1647: 0x5110, + 1648: 0x5117, + 1649: 0x5119, + 1650: 0x511B, + 1651: 0x511C, + 1652: 0x511D, + 1653: 0x511E, + 1654: 0x5123, + 1655: 0x5127, + 1656: 0x5128, + 1657: 0x512C, + 1658: 0x512D, + 1659: 0x512F, + 1660: 0x5131, + 1661: 0x5133, + 1662: 0x5134, + 1663: 0x5135, + 1664: 0x5138, + 1665: 0x5139, + 1666: 0x5142, + 1667: 0x514A, + 1668: 0x514F, + 1669: 0x5153, + 1670: 0x5155, + 1671: 0x5157, + 1672: 0x5158, + 1673: 0x515F, + 1674: 0x5164, + 1675: 0x5166, + 1676: 0x517E, + 1677: 0x5183, + 1678: 0x5184, + 1679: 0x518B, + 1680: 0x518E, + 1681: 0x5198, + 1682: 0x519D, + 1683: 0x51A1, + 1684: 0x51A3, + 1685: 0x51AD, + 1686: 0x51B8, + 1687: 0x51BA, + 1688: 0x51BC, + 1689: 0x51BE, + 1690: 0x51BF, + 1691: 0x51C2, + 1692: 0x51C8, + 1693: 0x51CF, + 1694: 0x51D1, + 1695: 0x51D2, + 1696: 0x51D3, + 1697: 0x51D5, + 1698: 0x51D8, + 1699: 0x51DE, + 1700: 0x51E2, + 1701: 0x51E5, + 1702: 0x51EE, + 1703: 0x51F2, + 1704: 0x51F3, + 1705: 0x51F4, + 1706: 0x51F7, + 1707: 0x5201, + 1708: 0x5202, + 1709: 0x5205, + 1710: 0x5212, + 1711: 0x5213, + 1712: 0x5215, + 1713: 0x5216, + 1714: 0x5218, + 1715: 0x5222, + 1716: 0x5228, + 1717: 0x5231, + 1718: 0x5232, + 1719: 0x5235, + 1720: 0x523C, + 1721: 0x5245, + 1722: 0x5249, + 1723: 0x5255, + 1724: 0x5257, + 1725: 0x5258, + 1726: 0x525A, + 1727: 0x525C, + 1728: 0x525F, + 1729: 0x5260, + 1730: 0x5261, + 1731: 0x5266, + 1732: 0x526E, + 1733: 0x5277, + 1734: 0x5278, + 1735: 0x5279, + 1736: 0x5280, + 1737: 0x5282, + 1738: 0x5285, + 1739: 0x528A, + 1740: 0x528C, + 1741: 0x5293, + 1742: 0x5295, + 1743: 0x5296, + 1744: 0x5297, + 1745: 0x5298, + 1746: 0x529A, + 1747: 0x529C, + 1748: 0x52A4, + 1749: 0x52A5, + 1750: 0x52A6, + 1751: 0x52A7, + 1752: 0x52AF, + 1753: 0x52B0, + 1754: 0x52B6, + 1755: 0x52B7, + 1756: 0x52B8, + 1757: 0x52BA, + 1758: 0x52BB, + 1759: 0x52BD, + 1760: 0x52C0, + 1761: 0x52C4, + 1762: 0x52C6, + 1763: 0x52C8, + 1764: 0x52CC, + 1765: 0x52CF, + 1766: 0x52D1, + 1767: 0x52D4, + 1768: 0x52D6, + 1769: 0x52DB, + 1770: 0x52DC, + 1771: 0x52E1, + 1772: 0x52E5, + 1773: 0x52E8, + 1774: 0x52E9, + 1775: 0x52EA, + 1776: 0x52EC, + 1777: 0x52F0, + 1778: 0x52F1, + 1779: 0x52F4, + 1780: 0x52F6, + 1781: 0x52F7, + 1782: 0x5300, + 1783: 0x5303, + 1784: 0x530A, + 1785: 0x530B, + 1786: 0x530C, + 1787: 0x5311, + 1788: 0x5313, + 1789: 0x5318, + 1790: 0x531B, + 1791: 0x531C, + 1792: 0x531E, + 1793: 0x531F, + 1794: 0x5325, + 1795: 0x5327, + 1796: 0x5328, + 1797: 0x5329, + 1798: 0x532B, + 1799: 0x532C, + 1800: 0x532D, + 1801: 0x5330, + 1802: 0x5332, + 1803: 0x5335, + 1804: 0x533C, + 1805: 0x533D, + 1806: 0x533E, + 1807: 0x5342, + 1808: 0x534C, + 1809: 0x534B, + 1810: 0x5359, + 1811: 0x535B, + 1812: 0x5361, + 1813: 0x5363, + 1814: 0x5365, + 1815: 0x536C, + 1816: 0x536D, + 1817: 0x5372, + 1818: 0x5379, + 1819: 0x537E, + 1820: 0x5383, + 1821: 0x5387, + 1822: 0x5388, + 1823: 0x538E, + 1824: 0x5393, + 1825: 0x5394, + 1826: 0x5399, + 1827: 0x539D, + 1828: 0x53A1, + 1829: 0x53A4, + 1830: 0x53AA, + 1831: 0x53AB, + 1832: 0x53AF, + 1833: 0x53B2, + 1834: 0x53B4, + 1835: 0x53B5, + 1836: 0x53B7, + 1837: 0x53B8, + 1838: 0x53BA, + 1839: 0x53BD, + 1840: 0x53C0, + 1841: 0x53C5, + 1842: 0x53CF, + 1843: 0x53D2, + 1844: 0x53D3, + 1845: 0x53D5, + 1846: 0x53DA, + 1847: 0x53DD, + 1848: 0x53DE, + 1849: 0x53E0, + 1850: 0x53E6, + 1851: 0x53E7, + 1852: 0x53F5, + 1853: 0x5402, + 1854: 0x5413, + 1855: 0x541A, + 1856: 0x5421, + 1857: 0x5427, + 1858: 0x5428, + 1859: 0x542A, + 1860: 0x542F, + 1861: 0x5431, + 1862: 0x5434, + 1863: 0x5435, + 1864: 0x5443, + 1865: 0x5444, + 1866: 0x5447, + 1867: 0x544D, + 1868: 0x544F, + 1869: 0x545E, + 1870: 0x5462, + 1871: 0x5464, + 1872: 0x5466, + 1873: 0x5467, + 1874: 0x5469, + 1875: 0x546B, + 1876: 0x546D, + 1877: 0x546E, + 1878: 0x5474, + 1879: 0x547F, + 1880: 0x5481, + 1881: 0x5483, + 1882: 0x5485, + 1883: 0x5488, + 1884: 0x5489, + 1885: 0x548D, + 1886: 0x5491, + 1887: 0x5495, + 1888: 0x5496, + 1889: 0x549C, + 1890: 0x549F, + 1891: 0x54A1, + 1892: 0x54A6, + 1893: 0x54A7, + 1894: 0x54A9, + 1895: 0x54AA, + 1896: 0x54AD, + 1897: 0x54AE, + 1898: 0x54B1, + 1899: 0x54B7, + 1900: 0x54B9, + 1901: 0x54BA, + 1902: 0x54BB, + 1903: 0x54BF, + 1904: 0x54C6, + 1905: 0x54CA, + 1906: 0x54CD, + 1907: 0x54CE, + 1908: 0x54E0, + 1909: 0x54EA, + 1910: 0x54EC, + 1911: 0x54EF, + 1912: 0x54F6, + 1913: 0x54FC, + 1914: 0x54FE, + 1915: 0x54FF, + 1916: 0x5500, + 1917: 0x5501, + 1918: 0x5505, + 1919: 0x5508, + 1920: 0x5509, + 1921: 0x550C, + 1922: 0x550D, + 1923: 0x550E, + 1924: 0x5515, + 1925: 0x552A, + 1926: 0x552B, + 1927: 0x5532, + 1928: 0x5535, + 1929: 0x5536, + 1930: 0x553B, + 1931: 0x553C, + 1932: 0x553D, + 1933: 0x5541, + 1934: 0x5547, + 1935: 0x5549, + 1936: 0x554A, + 1937: 0x554D, + 1938: 0x5550, + 1939: 0x5551, + 1940: 0x5558, + 1941: 0x555A, + 1942: 0x555B, + 1943: 0x555E, + 1944: 0x5560, + 1945: 0x5561, + 1946: 0x5564, + 1947: 0x5566, + 1948: 0x557F, + 1949: 0x5581, + 1950: 0x5582, + 1951: 0x5586, + 1952: 0x5588, + 1953: 0x558E, + 1954: 0x558F, + 1955: 0x5591, + 1956: 0x5592, + 1957: 0x5593, + 1958: 0x5594, + 1959: 0x5597, + 1960: 0x55A3, + 1961: 0x55A4, + 1962: 0x55AD, + 1963: 0x55B2, + 1964: 0x55BF, + 1965: 0x55C1, + 1966: 0x55C3, + 1967: 0x55C6, + 1968: 0x55C9, + 1969: 0x55CB, + 1970: 0x55CC, + 1971: 0x55CE, + 1972: 0x55D1, + 1973: 0x55D2, + 1974: 0x55D3, + 1975: 0x55D7, + 1976: 0x55D8, + 1977: 0x55DB, + 1978: 0x55DE, + 1979: 0x55E2, + 1980: 0x55E9, + 1981: 0x55F6, + 1982: 0x55FF, + 1983: 0x5605, + 1984: 0x5608, + 1985: 0x560A, + 1986: 0x560D, + 1987: 0x560E, + 1988: 0x560F, + 1989: 0x5610, + 1990: 0x5611, + 1991: 0x5612, + 1992: 0x5619, + 1993: 0x562C, + 1994: 0x5630, + 1995: 0x5633, + 1996: 0x5635, + 1997: 0x5637, + 1998: 0x5639, + 1999: 0x563B, + 2000: 0x563C, + 2001: 0x563D, + 2002: 0x563F, + 2003: 0x5640, + 2004: 0x5641, + 2005: 0x5643, + 2006: 0x5644, + 2007: 0x5646, + 2008: 0x5649, + 2009: 0x564B, + 2010: 0x564D, + 2011: 0x564F, + 2012: 0x5654, + 2013: 0x565E, + 2014: 0x5660, + 2015: 0x5661, + 2016: 0x5662, + 2017: 0x5663, + 2018: 0x5666, + 2019: 0x5669, + 2020: 0x566D, + 2021: 0x566F, + 2022: 0x5671, + 2023: 0x5672, + 2024: 0x5675, + 2025: 0x5684, + 2026: 0x5685, + 2027: 0x5688, + 2028: 0x568B, + 2029: 0x568C, + 2030: 0x5695, + 2031: 0x5699, + 2032: 0x569A, + 2033: 0x569D, + 2034: 0x569E, + 2035: 0x569F, + 2036: 0x56A6, + 2037: 0x56A7, + 2038: 0x56A8, + 2039: 0x56A9, + 2040: 0x56AB, + 2041: 0x56AC, + 2042: 0x56AD, + 2043: 0x56B1, + 2044: 0x56B3, + 2045: 0x56B7, + 2046: 0x56BE, + 2047: 0x56C5, + 2048: 0x56C9, + 2049: 0x56CA, + 2050: 0x56CB, + 2051: 0x56CF, + 2052: 0x56D0, + 2053: 0x56CC, + 2054: 0x56CD, + 2055: 0x56D9, + 2056: 0x56DC, + 2057: 0x56DD, + 2058: 0x56DF, + 2059: 0x56E1, + 2060: 0x56E4, + 2061: 0x56E5, + 2062: 0x56E6, + 2063: 0x56E7, + 2064: 0x56E8, + 2065: 0x56F1, + 2066: 0x56EB, + 2067: 0x56ED, + 2068: 0x56F6, + 2069: 0x56F7, + 2070: 0x5701, + 2071: 0x5702, + 2072: 0x5707, + 2073: 0x570A, + 2074: 0x570C, + 2075: 0x5711, + 2076: 0x5715, + 2077: 0x571A, + 2078: 0x571B, + 2079: 0x571D, + 2080: 0x5720, + 2081: 0x5722, + 2082: 0x5723, + 2083: 0x5724, + 2084: 0x5725, + 2085: 0x5729, + 2086: 0x572A, + 2087: 0x572C, + 2088: 0x572E, + 2089: 0x572F, + 2090: 0x5733, + 2091: 0x5734, + 2092: 0x573D, + 2093: 0x573E, + 2094: 0x573F, + 2095: 0x5745, + 2096: 0x5746, + 2097: 0x574C, + 2098: 0x574D, + 2099: 0x5752, + 2100: 0x5762, + 2101: 0x5765, + 2102: 0x5767, + 2103: 0x5768, + 2104: 0x576B, + 2105: 0x576D, + 2106: 0x576E, + 2107: 0x576F, + 2108: 0x5770, + 2109: 0x5771, + 2110: 0x5773, + 2111: 0x5774, + 2112: 0x5775, + 2113: 0x5777, + 2114: 0x5779, + 2115: 0x577A, + 2116: 0x577B, + 2117: 0x577C, + 2118: 0x577E, + 2119: 0x5781, + 2120: 0x5783, + 2121: 0x578C, + 2122: 0x5794, + 2123: 0x5797, + 2124: 0x5799, + 2125: 0x579A, + 2126: 0x579C, + 2127: 0x579D, + 2128: 0x579E, + 2129: 0x579F, + 2130: 0x57A1, + 2131: 0x5795, + 2132: 0x57A7, + 2133: 0x57A8, + 2134: 0x57A9, + 2135: 0x57AC, + 2136: 0x57B8, + 2137: 0x57BD, + 2138: 0x57C7, + 2139: 0x57C8, + 2140: 0x57CC, + 2141: 0x57CF, + 2142: 0x57D5, + 2143: 0x57DD, + 2144: 0x57DE, + 2145: 0x57E4, + 2146: 0x57E6, + 2147: 0x57E7, + 2148: 0x57E9, + 2149: 0x57ED, + 2150: 0x57F0, + 2151: 0x57F5, + 2152: 0x57F6, + 2153: 0x57F8, + 2154: 0x57FD, + 2155: 0x57FE, + 2156: 0x57FF, + 2157: 0x5803, + 2158: 0x5804, + 2159: 0x5808, + 2160: 0x5809, + 2161: 0x57E1, + 2162: 0x580C, + 2163: 0x580D, + 2164: 0x581B, + 2165: 0x581E, + 2166: 0x581F, + 2167: 0x5820, + 2168: 0x5826, + 2169: 0x5827, + 2170: 0x582D, + 2171: 0x5832, + 2172: 0x5839, + 2173: 0x583F, + 2174: 0x5849, + 2175: 0x584C, + 2176: 0x584D, + 2177: 0x584F, + 2178: 0x5850, + 2179: 0x5855, + 2180: 0x585F, + 2181: 0x5861, + 2182: 0x5864, + 2183: 0x5867, + 2184: 0x5868, + 2185: 0x5878, + 2186: 0x587C, + 2187: 0x587F, + 2188: 0x5880, + 2189: 0x5881, + 2190: 0x5887, + 2191: 0x5888, + 2192: 0x5889, + 2193: 0x588A, + 2194: 0x588C, + 2195: 0x588D, + 2196: 0x588F, + 2197: 0x5890, + 2198: 0x5894, + 2199: 0x5896, + 2200: 0x589D, + 2201: 0x58A0, + 2202: 0x58A1, + 2203: 0x58A2, + 2204: 0x58A6, + 2205: 0x58A9, + 2206: 0x58B1, + 2207: 0x58B2, + 2208: 0x58C4, + 2209: 0x58BC, + 2210: 0x58C2, + 2211: 0x58C8, + 2212: 0x58CD, + 2213: 0x58CE, + 2214: 0x58D0, + 2215: 0x58D2, + 2216: 0x58D4, + 2217: 0x58D6, + 2218: 0x58DA, + 2219: 0x58DD, + 2220: 0x58E1, + 2221: 0x58E2, + 2222: 0x58E9, + 2223: 0x58F3, + 2224: 0x5905, + 2225: 0x5906, + 2226: 0x590B, + 2227: 0x590C, + 2228: 0x5912, + 2229: 0x5913, + 2230: 0x5914, + 2231: 0x8641, + 2232: 0x591D, + 2233: 0x5921, + 2234: 0x5923, + 2235: 0x5924, + 2236: 0x5928, + 2237: 0x592F, + 2238: 0x5930, + 2239: 0x5933, + 2240: 0x5935, + 2241: 0x5936, + 2242: 0x593F, + 2243: 0x5943, + 2244: 0x5946, + 2245: 0x5952, + 2246: 0x5953, + 2247: 0x5959, + 2248: 0x595B, + 2249: 0x595D, + 2250: 0x595E, + 2251: 0x595F, + 2252: 0x5961, + 2253: 0x5963, + 2254: 0x596B, + 2255: 0x596D, + 2256: 0x596F, + 2257: 0x5972, + 2258: 0x5975, + 2259: 0x5976, + 2260: 0x5979, + 2261: 0x597B, + 2262: 0x597C, + 2263: 0x598B, + 2264: 0x598C, + 2265: 0x598E, + 2266: 0x5992, + 2267: 0x5995, + 2268: 0x5997, + 2269: 0x599F, + 2270: 0x59A4, + 2271: 0x59A7, + 2272: 0x59AD, + 2273: 0x59AE, + 2274: 0x59AF, + 2275: 0x59B0, + 2276: 0x59B3, + 2277: 0x59B7, + 2278: 0x59BA, + 2279: 0x59BC, + 2280: 0x59C1, + 2281: 0x59C3, + 2282: 0x59C4, + 2283: 0x59C8, + 2284: 0x59CA, + 2285: 0x59CD, + 2286: 0x59D2, + 2287: 0x59DD, + 2288: 0x59DE, + 2289: 0x59DF, + 2290: 0x59E3, + 2291: 0x59E4, + 2292: 0x59E7, + 2293: 0x59EE, + 2294: 0x59EF, + 2295: 0x59F1, + 2296: 0x59F2, + 2297: 0x59F4, + 2298: 0x59F7, + 2299: 0x5A00, + 2300: 0x5A04, + 2301: 0x5A0C, + 2302: 0x5A0D, + 2303: 0x5A0E, + 2304: 0x5A12, + 2305: 0x5A13, + 2306: 0x5A1E, + 2307: 0x5A23, + 2308: 0x5A24, + 2309: 0x5A27, + 2310: 0x5A28, + 2311: 0x5A2A, + 2312: 0x5A2D, + 2313: 0x5A30, + 2314: 0x5A44, + 2315: 0x5A45, + 2316: 0x5A47, + 2317: 0x5A48, + 2318: 0x5A4C, + 2319: 0x5A50, + 2320: 0x5A55, + 2321: 0x5A5E, + 2322: 0x5A63, + 2323: 0x5A65, + 2324: 0x5A67, + 2325: 0x5A6D, + 2326: 0x5A77, + 2327: 0x5A7A, + 2328: 0x5A7B, + 2329: 0x5A7E, + 2330: 0x5A8B, + 2331: 0x5A90, + 2332: 0x5A93, + 2333: 0x5A96, + 2334: 0x5A99, + 2335: 0x5A9C, + 2336: 0x5A9E, + 2337: 0x5A9F, + 2338: 0x5AA0, + 2339: 0x5AA2, + 2340: 0x5AA7, + 2341: 0x5AAC, + 2342: 0x5AB1, + 2343: 0x5AB2, + 2344: 0x5AB3, + 2345: 0x5AB5, + 2346: 0x5AB8, + 2347: 0x5ABA, + 2348: 0x5ABB, + 2349: 0x5ABF, + 2350: 0x5AC4, + 2351: 0x5AC6, + 2352: 0x5AC8, + 2353: 0x5ACF, + 2354: 0x5ADA, + 2355: 0x5ADC, + 2356: 0x5AE0, + 2357: 0x5AE5, + 2358: 0x5AEA, + 2359: 0x5AEE, + 2360: 0x5AF5, + 2361: 0x5AF6, + 2362: 0x5AFD, + 2363: 0x5B00, + 2364: 0x5B01, + 2365: 0x5B08, + 2366: 0x5B17, + 2367: 0x5B34, + 2368: 0x5B19, + 2369: 0x5B1B, + 2370: 0x5B1D, + 2371: 0x5B21, + 2372: 0x5B25, + 2373: 0x5B2D, + 2374: 0x5B38, + 2375: 0x5B41, + 2376: 0x5B4B, + 2377: 0x5B4C, + 2378: 0x5B52, + 2379: 0x5B56, + 2380: 0x5B5E, + 2381: 0x5B68, + 2382: 0x5B6E, + 2383: 0x5B6F, + 2384: 0x5B7C, + 2385: 0x5B7D, + 2386: 0x5B7E, + 2387: 0x5B7F, + 2388: 0x5B81, + 2389: 0x5B84, + 2390: 0x5B86, + 2391: 0x5B8A, + 2392: 0x5B8E, + 2393: 0x5B90, + 2394: 0x5B91, + 2395: 0x5B93, + 2396: 0x5B94, + 2397: 0x5B96, + 2398: 0x5BA8, + 2399: 0x5BA9, + 2400: 0x5BAC, + 2401: 0x5BAD, + 2402: 0x5BAF, + 2403: 0x5BB1, + 2404: 0x5BB2, + 2405: 0x5BB7, + 2406: 0x5BBA, + 2407: 0x5BBC, + 2408: 0x5BC0, + 2409: 0x5BC1, + 2410: 0x5BCD, + 2411: 0x5BCF, + 2412: 0x5BD6, + 2413: 0x5BD7, + 2414: 0x5BD8, + 2415: 0x5BD9, + 2416: 0x5BDA, + 2417: 0x5BE0, + 2418: 0x5BEF, + 2419: 0x5BF1, + 2420: 0x5BF4, + 2421: 0x5BFD, + 2422: 0x5C0C, + 2423: 0x5C17, + 2424: 0x5C1E, + 2425: 0x5C1F, + 2426: 0x5C23, + 2427: 0x5C26, + 2428: 0x5C29, + 2429: 0x5C2B, + 2430: 0x5C2C, + 2431: 0x5C2E, + 2432: 0x5C30, + 2433: 0x5C32, + 2434: 0x5C35, + 2435: 0x5C36, + 2436: 0x5C59, + 2437: 0x5C5A, + 2438: 0x5C5C, + 2439: 0x5C62, + 2440: 0x5C63, + 2441: 0x5C67, + 2442: 0x5C68, + 2443: 0x5C69, + 2444: 0x5C6D, + 2445: 0x5C70, + 2446: 0x5C74, + 2447: 0x5C75, + 2448: 0x5C7A, + 2449: 0x5C7B, + 2450: 0x5C7C, + 2451: 0x5C7D, + 2452: 0x5C87, + 2453: 0x5C88, + 2454: 0x5C8A, + 2455: 0x5C8F, + 2456: 0x5C92, + 2457: 0x5C9D, + 2458: 0x5C9F, + 2459: 0x5CA0, + 2460: 0x5CA2, + 2461: 0x5CA3, + 2462: 0x5CA6, + 2463: 0x5CAA, + 2464: 0x5CB2, + 2465: 0x5CB4, + 2466: 0x5CB5, + 2467: 0x5CBA, + 2468: 0x5CC9, + 2469: 0x5CCB, + 2470: 0x5CD2, + 2471: 0x5CDD, + 2472: 0x5CD7, + 2473: 0x5CEE, + 2474: 0x5CF1, + 2475: 0x5CF2, + 2476: 0x5CF4, + 2477: 0x5D01, + 2478: 0x5D06, + 2479: 0x5D0D, + 2480: 0x5D12, + 2481: 0x5D2B, + 2482: 0x5D23, + 2483: 0x5D24, + 2484: 0x5D26, + 2485: 0x5D27, + 2486: 0x5D31, + 2487: 0x5D34, + 2488: 0x5D39, + 2489: 0x5D3D, + 2490: 0x5D3F, + 2491: 0x5D42, + 2492: 0x5D43, + 2493: 0x5D46, + 2494: 0x5D48, + 2495: 0x5D55, + 2496: 0x5D51, + 2497: 0x5D59, + 2498: 0x5D4A, + 2499: 0x5D5F, + 2500: 0x5D60, + 2501: 0x5D61, + 2502: 0x5D62, + 2503: 0x5D64, + 2504: 0x5D6A, + 2505: 0x5D6D, + 2506: 0x5D70, + 2507: 0x5D79, + 2508: 0x5D7A, + 2509: 0x5D7E, + 2510: 0x5D7F, + 2511: 0x5D81, + 2512: 0x5D83, + 2513: 0x5D88, + 2514: 0x5D8A, + 2515: 0x5D92, + 2516: 0x5D93, + 2517: 0x5D94, + 2518: 0x5D95, + 2519: 0x5D99, + 2520: 0x5D9B, + 2521: 0x5D9F, + 2522: 0x5DA0, + 2523: 0x5DA7, + 2524: 0x5DAB, + 2525: 0x5DB0, + 2526: 0x5DB4, + 2527: 0x5DB8, + 2528: 0x5DB9, + 2529: 0x5DC3, + 2530: 0x5DC7, + 2531: 0x5DCB, + 2532: 0x5DD0, + 2533: 0x5DCE, + 2534: 0x5DD8, + 2535: 0x5DD9, + 2536: 0x5DE0, + 2537: 0x5DE4, + 2538: 0x5DE9, + 2539: 0x5DF8, + 2540: 0x5DF9, + 2541: 0x5E00, + 2542: 0x5E07, + 2543: 0x5E0D, + 2544: 0x5E12, + 2545: 0x5E14, + 2546: 0x5E15, + 2547: 0x5E18, + 2548: 0x5E1F, + 2549: 0x5E20, + 2550: 0x5E2E, + 2551: 0x5E28, + 2552: 0x5E32, + 2553: 0x5E35, + 2554: 0x5E3E, + 2555: 0x5E4B, + 2556: 0x5E50, + 2557: 0x5E49, + 2558: 0x5E51, + 2559: 0x5E56, + 2560: 0x5E58, + 2561: 0x5E5B, + 2562: 0x5E5C, + 2563: 0x5E5E, + 2564: 0x5E68, + 2565: 0x5E6A, + 2566: 0x5E6B, + 2567: 0x5E6C, + 2568: 0x5E6D, + 2569: 0x5E6E, + 2570: 0x5E70, + 2571: 0x5E80, + 2572: 0x5E8B, + 2573: 0x5E8E, + 2574: 0x5EA2, + 2575: 0x5EA4, + 2576: 0x5EA5, + 2577: 0x5EA8, + 2578: 0x5EAA, + 2579: 0x5EAC, + 2580: 0x5EB1, + 2581: 0x5EB3, + 2582: 0x5EBD, + 2583: 0x5EBE, + 2584: 0x5EBF, + 2585: 0x5EC6, + 2586: 0x5ECC, + 2587: 0x5ECB, + 2588: 0x5ECE, + 2589: 0x5ED1, + 2590: 0x5ED2, + 2591: 0x5ED4, + 2592: 0x5ED5, + 2593: 0x5EDC, + 2594: 0x5EDE, + 2595: 0x5EE5, + 2596: 0x5EEB, + 2597: 0x5F02, + 2598: 0x5F06, + 2599: 0x5F07, + 2600: 0x5F08, + 2601: 0x5F0E, + 2602: 0x5F19, + 2603: 0x5F1C, + 2604: 0x5F1D, + 2605: 0x5F21, + 2606: 0x5F22, + 2607: 0x5F23, + 2608: 0x5F24, + 2609: 0x5F28, + 2610: 0x5F2B, + 2611: 0x5F2C, + 2612: 0x5F2E, + 2613: 0x5F30, + 2614: 0x5F34, + 2615: 0x5F36, + 2616: 0x5F3B, + 2617: 0x5F3D, + 2618: 0x5F3F, + 2619: 0x5F40, + 2620: 0x5F44, + 2621: 0x5F45, + 2622: 0x5F47, + 2623: 0x5F4D, + 2624: 0x5F50, + 2625: 0x5F54, + 2626: 0x5F58, + 2627: 0x5F5B, + 2628: 0x5F60, + 2629: 0x5F63, + 2630: 0x5F64, + 2631: 0x5F67, + 2632: 0x5F6F, + 2633: 0x5F72, + 2634: 0x5F74, + 2635: 0x5F75, + 2636: 0x5F78, + 2637: 0x5F7A, + 2638: 0x5F7D, + 2639: 0x5F7E, + 2640: 0x5F89, + 2641: 0x5F8D, + 2642: 0x5F8F, + 2643: 0x5F96, + 2644: 0x5F9C, + 2645: 0x5F9D, + 2646: 0x5FA2, + 2647: 0x5FA7, + 2648: 0x5FAB, + 2649: 0x5FA4, + 2650: 0x5FAC, + 2651: 0x5FAF, + 2652: 0x5FB0, + 2653: 0x5FB1, + 2654: 0x5FB8, + 2655: 0x5FC4, + 2656: 0x5FC7, + 2657: 0x5FC8, + 2658: 0x5FC9, + 2659: 0x5FCB, + 2660: 0x5FD0, + 2661: 0x5FD1, + 2662: 0x5FD2, + 2663: 0x5FD3, + 2664: 0x5FD4, + 2665: 0x5FDE, + 2666: 0x5FE1, + 2667: 0x5FE2, + 2668: 0x5FE8, + 2669: 0x5FE9, + 2670: 0x5FEA, + 2671: 0x5FEC, + 2672: 0x5FED, + 2673: 0x5FEE, + 2674: 0x5FEF, + 2675: 0x5FF2, + 2676: 0x5FF3, + 2677: 0x5FF6, + 2678: 0x5FFA, + 2679: 0x5FFC, + 2680: 0x6007, + 2681: 0x600A, + 2682: 0x600D, + 2683: 0x6013, + 2684: 0x6014, + 2685: 0x6017, + 2686: 0x6018, + 2687: 0x601A, + 2688: 0x601F, + 2689: 0x6024, + 2690: 0x602D, + 2691: 0x6033, + 2692: 0x6035, + 2693: 0x6040, + 2694: 0x6047, + 2695: 0x6048, + 2696: 0x6049, + 2697: 0x604C, + 2698: 0x6051, + 2699: 0x6054, + 2700: 0x6056, + 2701: 0x6057, + 2702: 0x605D, + 2703: 0x6061, + 2704: 0x6067, + 2705: 0x6071, + 2706: 0x607E, + 2707: 0x607F, + 2708: 0x6082, + 2709: 0x6086, + 2710: 0x6088, + 2711: 0x608A, + 2712: 0x608E, + 2713: 0x6091, + 2714: 0x6093, + 2715: 0x6095, + 2716: 0x6098, + 2717: 0x609D, + 2718: 0x609E, + 2719: 0x60A2, + 2720: 0x60A4, + 2721: 0x60A5, + 2722: 0x60A8, + 2723: 0x60B0, + 2724: 0x60B1, + 2725: 0x60B7, + 2726: 0x60BB, + 2727: 0x60BE, + 2728: 0x60C2, + 2729: 0x60C4, + 2730: 0x60C8, + 2731: 0x60C9, + 2732: 0x60CA, + 2733: 0x60CB, + 2734: 0x60CE, + 2735: 0x60CF, + 2736: 0x60D4, + 2737: 0x60D5, + 2738: 0x60D9, + 2739: 0x60DB, + 2740: 0x60DD, + 2741: 0x60DE, + 2742: 0x60E2, + 2743: 0x60E5, + 2744: 0x60F2, + 2745: 0x60F5, + 2746: 0x60F8, + 2747: 0x60FC, + 2748: 0x60FD, + 2749: 0x6102, + 2750: 0x6107, + 2751: 0x610A, + 2752: 0x610C, + 2753: 0x6110, + 2754: 0x6111, + 2755: 0x6112, + 2756: 0x6113, + 2757: 0x6114, + 2758: 0x6116, + 2759: 0x6117, + 2760: 0x6119, + 2761: 0x611C, + 2762: 0x611E, + 2763: 0x6122, + 2764: 0x612A, + 2765: 0x612B, + 2766: 0x6130, + 2767: 0x6131, + 2768: 0x6135, + 2769: 0x6136, + 2770: 0x6137, + 2771: 0x6139, + 2772: 0x6141, + 2773: 0x6145, + 2774: 0x6146, + 2775: 0x6149, + 2776: 0x615E, + 2777: 0x6160, + 2778: 0x616C, + 2779: 0x6172, + 2780: 0x6178, + 2781: 0x617B, + 2782: 0x617C, + 2783: 0x617F, + 2784: 0x6180, + 2785: 0x6181, + 2786: 0x6183, + 2787: 0x6184, + 2788: 0x618B, + 2789: 0x618D, + 2790: 0x6192, + 2791: 0x6193, + 2792: 0x6197, + 2793: 0x6198, + 2794: 0x619C, + 2795: 0x619D, + 2796: 0x619F, + 2797: 0x61A0, + 2798: 0x61A5, + 2799: 0x61A8, + 2800: 0x61AA, + 2801: 0x61AD, + 2802: 0x61B8, + 2803: 0x61B9, + 2804: 0x61BC, + 2805: 0x61C0, + 2806: 0x61C1, + 2807: 0x61C2, + 2808: 0x61CE, + 2809: 0x61CF, + 2810: 0x61D5, + 2811: 0x61DC, + 2812: 0x61DD, + 2813: 0x61DE, + 2814: 0x61DF, + 2815: 0x61E1, + 2816: 0x61E2, + 2817: 0x61E7, + 2818: 0x61E9, + 2819: 0x61E5, + 2820: 0x61EC, + 2821: 0x61ED, + 2822: 0x61EF, + 2823: 0x6201, + 2824: 0x6203, + 2825: 0x6204, + 2826: 0x6207, + 2827: 0x6213, + 2828: 0x6215, + 2829: 0x621C, + 2830: 0x6220, + 2831: 0x6222, + 2832: 0x6223, + 2833: 0x6227, + 2834: 0x6229, + 2835: 0x622B, + 2836: 0x6239, + 2837: 0x623D, + 2838: 0x6242, + 2839: 0x6243, + 2840: 0x6244, + 2841: 0x6246, + 2842: 0x624C, + 2843: 0x6250, + 2844: 0x6251, + 2845: 0x6252, + 2846: 0x6254, + 2847: 0x6256, + 2848: 0x625A, + 2849: 0x625C, + 2850: 0x6264, + 2851: 0x626D, + 2852: 0x626F, + 2853: 0x6273, + 2854: 0x627A, + 2855: 0x627D, + 2856: 0x628D, + 2857: 0x628E, + 2858: 0x628F, + 2859: 0x6290, + 2860: 0x62A6, + 2861: 0x62A8, + 2862: 0x62B3, + 2863: 0x62B6, + 2864: 0x62B7, + 2865: 0x62BA, + 2866: 0x62BE, + 2867: 0x62BF, + 2868: 0x62C4, + 2869: 0x62CE, + 2870: 0x62D5, + 2871: 0x62D6, + 2872: 0x62DA, + 2873: 0x62EA, + 2874: 0x62F2, + 2875: 0x62F4, + 2876: 0x62FC, + 2877: 0x62FD, + 2878: 0x6303, + 2879: 0x6304, + 2880: 0x630A, + 2881: 0x630B, + 2882: 0x630D, + 2883: 0x6310, + 2884: 0x6313, + 2885: 0x6316, + 2886: 0x6318, + 2887: 0x6329, + 2888: 0x632A, + 2889: 0x632D, + 2890: 0x6335, + 2891: 0x6336, + 2892: 0x6339, + 2893: 0x633C, + 2894: 0x6341, + 2895: 0x6342, + 2896: 0x6343, + 2897: 0x6344, + 2898: 0x6346, + 2899: 0x634A, + 2900: 0x634B, + 2901: 0x634E, + 2902: 0x6352, + 2903: 0x6353, + 2904: 0x6354, + 2905: 0x6358, + 2906: 0x635B, + 2907: 0x6365, + 2908: 0x6366, + 2909: 0x636C, + 2910: 0x636D, + 2911: 0x6371, + 2912: 0x6374, + 2913: 0x6375, + 2914: 0x6378, + 2915: 0x637C, + 2916: 0x637D, + 2917: 0x637F, + 2918: 0x6382, + 2919: 0x6384, + 2920: 0x6387, + 2921: 0x638A, + 2922: 0x6390, + 2923: 0x6394, + 2924: 0x6395, + 2925: 0x6399, + 2926: 0x639A, + 2927: 0x639E, + 2928: 0x63A4, + 2929: 0x63A6, + 2930: 0x63AD, + 2931: 0x63AE, + 2932: 0x63AF, + 2933: 0x63BD, + 2934: 0x63C1, + 2935: 0x63C5, + 2936: 0x63C8, + 2937: 0x63CE, + 2938: 0x63D1, + 2939: 0x63D3, + 2940: 0x63D4, + 2941: 0x63D5, + 2942: 0x63DC, + 2943: 0x63E0, + 2944: 0x63E5, + 2945: 0x63EA, + 2946: 0x63EC, + 2947: 0x63F2, + 2948: 0x63F3, + 2949: 0x63F5, + 2950: 0x63F8, + 2951: 0x63F9, + 2952: 0x6409, + 2953: 0x640A, + 2954: 0x6410, + 2955: 0x6412, + 2956: 0x6414, + 2957: 0x6418, + 2958: 0x641E, + 2959: 0x6420, + 2960: 0x6422, + 2961: 0x6424, + 2962: 0x6425, + 2963: 0x6429, + 2964: 0x642A, + 2965: 0x642F, + 2966: 0x6430, + 2967: 0x6435, + 2968: 0x643D, + 2969: 0x643F, + 2970: 0x644B, + 2971: 0x644F, + 2972: 0x6451, + 2973: 0x6452, + 2974: 0x6453, + 2975: 0x6454, + 2976: 0x645A, + 2977: 0x645B, + 2978: 0x645C, + 2979: 0x645D, + 2980: 0x645F, + 2981: 0x6460, + 2982: 0x6461, + 2983: 0x6463, + 2984: 0x646D, + 2985: 0x6473, + 2986: 0x6474, + 2987: 0x647B, + 2988: 0x647D, + 2989: 0x6485, + 2990: 0x6487, + 2991: 0x648F, + 2992: 0x6490, + 2993: 0x6491, + 2994: 0x6498, + 2995: 0x6499, + 2996: 0x649B, + 2997: 0x649D, + 2998: 0x649F, + 2999: 0x64A1, + 3000: 0x64A3, + 3001: 0x64A6, + 3002: 0x64A8, + 3003: 0x64AC, + 3004: 0x64B3, + 3005: 0x64BD, + 3006: 0x64BE, + 3007: 0x64BF, + 3008: 0x64C4, + 3009: 0x64C9, + 3010: 0x64CA, + 3011: 0x64CB, + 3012: 0x64CC, + 3013: 0x64CE, + 3014: 0x64D0, + 3015: 0x64D1, + 3016: 0x64D5, + 3017: 0x64D7, + 3018: 0x64E4, + 3019: 0x64E5, + 3020: 0x64E9, + 3021: 0x64EA, + 3022: 0x64ED, + 3023: 0x64F0, + 3024: 0x64F5, + 3025: 0x64F7, + 3026: 0x64FB, + 3027: 0x64FF, + 3028: 0x6501, + 3029: 0x6504, + 3030: 0x6508, + 3031: 0x6509, + 3032: 0x650A, + 3033: 0x650F, + 3034: 0x6513, + 3035: 0x6514, + 3036: 0x6516, + 3037: 0x6519, + 3038: 0x651B, + 3039: 0x651E, + 3040: 0x651F, + 3041: 0x6522, + 3042: 0x6526, + 3043: 0x6529, + 3044: 0x652E, + 3045: 0x6531, + 3046: 0x653A, + 3047: 0x653C, + 3048: 0x653D, + 3049: 0x6543, + 3050: 0x6547, + 3051: 0x6549, + 3052: 0x6550, + 3053: 0x6552, + 3054: 0x6554, + 3055: 0x655F, + 3056: 0x6560, + 3057: 0x6567, + 3058: 0x656B, + 3059: 0x657A, + 3060: 0x657D, + 3061: 0x6581, + 3062: 0x6585, + 3063: 0x658A, + 3064: 0x6592, + 3065: 0x6595, + 3066: 0x6598, + 3067: 0x659D, + 3068: 0x65A0, + 3069: 0x65A3, + 3070: 0x65A6, + 3071: 0x65AE, + 3072: 0x65B2, + 3073: 0x65B3, + 3074: 0x65B4, + 3075: 0x65BF, + 3076: 0x65C2, + 3077: 0x65C8, + 3078: 0x65C9, + 3079: 0x65CE, + 3080: 0x65D0, + 3081: 0x65D4, + 3082: 0x65D6, + 3083: 0x65D8, + 3084: 0x65DF, + 3085: 0x65F0, + 3086: 0x65F2, + 3087: 0x65F4, + 3088: 0x65F5, + 3089: 0x65F9, + 3090: 0x65FE, + 3091: 0x65FF, + 3092: 0x6600, + 3093: 0x6604, + 3094: 0x6608, + 3095: 0x6609, + 3096: 0x660D, + 3097: 0x6611, + 3098: 0x6612, + 3099: 0x6615, + 3100: 0x6616, + 3101: 0x661D, + 3102: 0x661E, + 3103: 0x6621, + 3104: 0x6622, + 3105: 0x6623, + 3106: 0x6624, + 3107: 0x6626, + 3108: 0x6629, + 3109: 0x662A, + 3110: 0x662B, + 3111: 0x662C, + 3112: 0x662E, + 3113: 0x6630, + 3114: 0x6631, + 3115: 0x6633, + 3116: 0x6639, + 3117: 0x6637, + 3118: 0x6640, + 3119: 0x6645, + 3120: 0x6646, + 3121: 0x664A, + 3122: 0x664C, + 3123: 0x6651, + 3124: 0x664E, + 3125: 0x6657, + 3126: 0x6658, + 3127: 0x6659, + 3128: 0x665B, + 3129: 0x665C, + 3130: 0x6660, + 3131: 0x6661, + 3132: 0x66FB, + 3133: 0x666A, + 3134: 0x666B, + 3135: 0x666C, + 3136: 0x667E, + 3137: 0x6673, + 3138: 0x6675, + 3139: 0x667F, + 3140: 0x6677, + 3141: 0x6678, + 3142: 0x6679, + 3143: 0x667B, + 3144: 0x6680, + 3145: 0x667C, + 3146: 0x668B, + 3147: 0x668C, + 3148: 0x668D, + 3149: 0x6690, + 3150: 0x6692, + 3151: 0x6699, + 3152: 0x669A, + 3153: 0x669B, + 3154: 0x669C, + 3155: 0x669F, + 3156: 0x66A0, + 3157: 0x66A4, + 3158: 0x66AD, + 3159: 0x66B1, + 3160: 0x66B2, + 3161: 0x66B5, + 3162: 0x66BB, + 3163: 0x66BF, + 3164: 0x66C0, + 3165: 0x66C2, + 3166: 0x66C3, + 3167: 0x66C8, + 3168: 0x66CC, + 3169: 0x66CE, + 3170: 0x66CF, + 3171: 0x66D4, + 3172: 0x66DB, + 3173: 0x66DF, + 3174: 0x66E8, + 3175: 0x66EB, + 3176: 0x66EC, + 3177: 0x66EE, + 3178: 0x66FA, + 3179: 0x6705, + 3180: 0x6707, + 3181: 0x670E, + 3182: 0x6713, + 3183: 0x6719, + 3184: 0x671C, + 3185: 0x6720, + 3186: 0x6722, + 3187: 0x6733, + 3188: 0x673E, + 3189: 0x6745, + 3190: 0x6747, + 3191: 0x6748, + 3192: 0x674C, + 3193: 0x6754, + 3194: 0x6755, + 3195: 0x675D, + 3196: 0x6766, + 3197: 0x676C, + 3198: 0x676E, + 3199: 0x6774, + 3200: 0x6776, + 3201: 0x677B, + 3202: 0x6781, + 3203: 0x6784, + 3204: 0x678E, + 3205: 0x678F, + 3206: 0x6791, + 3207: 0x6793, + 3208: 0x6796, + 3209: 0x6798, + 3210: 0x6799, + 3211: 0x679B, + 3212: 0x67B0, + 3213: 0x67B1, + 3214: 0x67B2, + 3215: 0x67B5, + 3216: 0x67BB, + 3217: 0x67BC, + 3218: 0x67BD, + 3219: 0x67F9, + 3220: 0x67C0, + 3221: 0x67C2, + 3222: 0x67C3, + 3223: 0x67C5, + 3224: 0x67C8, + 3225: 0x67C9, + 3226: 0x67D2, + 3227: 0x67D7, + 3228: 0x67D9, + 3229: 0x67DC, + 3230: 0x67E1, + 3231: 0x67E6, + 3232: 0x67F0, + 3233: 0x67F2, + 3234: 0x67F6, + 3235: 0x67F7, + 3236: 0x6852, + 3237: 0x6814, + 3238: 0x6819, + 3239: 0x681D, + 3240: 0x681F, + 3241: 0x6828, + 3242: 0x6827, + 3243: 0x682C, + 3244: 0x682D, + 3245: 0x682F, + 3246: 0x6830, + 3247: 0x6831, + 3248: 0x6833, + 3249: 0x683B, + 3250: 0x683F, + 3251: 0x6844, + 3252: 0x6845, + 3253: 0x684A, + 3254: 0x684C, + 3255: 0x6855, + 3256: 0x6857, + 3257: 0x6858, + 3258: 0x685B, + 3259: 0x686B, + 3260: 0x686E, + 3261: 0x686F, + 3262: 0x6870, + 3263: 0x6871, + 3264: 0x6872, + 3265: 0x6875, + 3266: 0x6879, + 3267: 0x687A, + 3268: 0x687B, + 3269: 0x687C, + 3270: 0x6882, + 3271: 0x6884, + 3272: 0x6886, + 3273: 0x6888, + 3274: 0x6896, + 3275: 0x6898, + 3276: 0x689A, + 3277: 0x689C, + 3278: 0x68A1, + 3279: 0x68A3, + 3280: 0x68A5, + 3281: 0x68A9, + 3282: 0x68AA, + 3283: 0x68AE, + 3284: 0x68B2, + 3285: 0x68BB, + 3286: 0x68C5, + 3287: 0x68C8, + 3288: 0x68CC, + 3289: 0x68CF, + 3290: 0x68D0, + 3291: 0x68D1, + 3292: 0x68D3, + 3293: 0x68D6, + 3294: 0x68D9, + 3295: 0x68DC, + 3296: 0x68DD, + 3297: 0x68E5, + 3298: 0x68E8, + 3299: 0x68EA, + 3300: 0x68EB, + 3301: 0x68EC, + 3302: 0x68ED, + 3303: 0x68F0, + 3304: 0x68F1, + 3305: 0x68F5, + 3306: 0x68F6, + 3307: 0x68FB, + 3308: 0x68FC, + 3309: 0x68FD, + 3310: 0x6906, + 3311: 0x6909, + 3312: 0x690A, + 3313: 0x6910, + 3314: 0x6911, + 3315: 0x6913, + 3316: 0x6916, + 3317: 0x6917, + 3318: 0x6931, + 3319: 0x6933, + 3320: 0x6935, + 3321: 0x6938, + 3322: 0x693B, + 3323: 0x6942, + 3324: 0x6945, + 3325: 0x6949, + 3326: 0x694E, + 3327: 0x6957, + 3328: 0x695B, + 3329: 0x6963, + 3330: 0x6964, + 3331: 0x6965, + 3332: 0x6966, + 3333: 0x6968, + 3334: 0x6969, + 3335: 0x696C, + 3336: 0x6970, + 3337: 0x6971, + 3338: 0x6972, + 3339: 0x697A, + 3340: 0x697B, + 3341: 0x697F, + 3342: 0x6980, + 3343: 0x698D, + 3344: 0x6992, + 3345: 0x6996, + 3346: 0x6998, + 3347: 0x69A1, + 3348: 0x69A5, + 3349: 0x69A6, + 3350: 0x69A8, + 3351: 0x69AB, + 3352: 0x69AD, + 3353: 0x69AF, + 3354: 0x69B7, + 3355: 0x69B8, + 3356: 0x69BA, + 3357: 0x69BC, + 3358: 0x69C5, + 3359: 0x69C8, + 3360: 0x69D1, + 3361: 0x69D6, + 3362: 0x69D7, + 3363: 0x69E2, + 3364: 0x69E5, + 3365: 0x69EE, + 3366: 0x69EF, + 3367: 0x69F1, + 3368: 0x69F3, + 3369: 0x69F5, + 3370: 0x69FE, + 3371: 0x6A00, + 3372: 0x6A01, + 3373: 0x6A03, + 3374: 0x6A0F, + 3375: 0x6A11, + 3376: 0x6A15, + 3377: 0x6A1A, + 3378: 0x6A1D, + 3379: 0x6A20, + 3380: 0x6A24, + 3381: 0x6A28, + 3382: 0x6A30, + 3383: 0x6A32, + 3384: 0x6A34, + 3385: 0x6A37, + 3386: 0x6A3B, + 3387: 0x6A3E, + 3388: 0x6A3F, + 3389: 0x6A45, + 3390: 0x6A46, + 3391: 0x6A49, + 3392: 0x6A4A, + 3393: 0x6A4E, + 3394: 0x6A50, + 3395: 0x6A51, + 3396: 0x6A52, + 3397: 0x6A55, + 3398: 0x6A56, + 3399: 0x6A5B, + 3400: 0x6A64, + 3401: 0x6A67, + 3402: 0x6A6A, + 3403: 0x6A71, + 3404: 0x6A73, + 3405: 0x6A7E, + 3406: 0x6A81, + 3407: 0x6A83, + 3408: 0x6A86, + 3409: 0x6A87, + 3410: 0x6A89, + 3411: 0x6A8B, + 3412: 0x6A91, + 3413: 0x6A9B, + 3414: 0x6A9D, + 3415: 0x6A9E, + 3416: 0x6A9F, + 3417: 0x6AA5, + 3418: 0x6AAB, + 3419: 0x6AAF, + 3420: 0x6AB0, + 3421: 0x6AB1, + 3422: 0x6AB4, + 3423: 0x6ABD, + 3424: 0x6ABE, + 3425: 0x6ABF, + 3426: 0x6AC6, + 3427: 0x6AC9, + 3428: 0x6AC8, + 3429: 0x6ACC, + 3430: 0x6AD0, + 3431: 0x6AD4, + 3432: 0x6AD5, + 3433: 0x6AD6, + 3434: 0x6ADC, + 3435: 0x6ADD, + 3436: 0x6AE4, + 3437: 0x6AE7, + 3438: 0x6AEC, + 3439: 0x6AF0, + 3440: 0x6AF1, + 3441: 0x6AF2, + 3442: 0x6AFC, + 3443: 0x6AFD, + 3444: 0x6B02, + 3445: 0x6B03, + 3446: 0x6B06, + 3447: 0x6B07, + 3448: 0x6B09, + 3449: 0x6B0F, + 3450: 0x6B10, + 3451: 0x6B11, + 3452: 0x6B17, + 3453: 0x6B1B, + 3454: 0x6B1E, + 3455: 0x6B24, + 3456: 0x6B28, + 3457: 0x6B2B, + 3458: 0x6B2C, + 3459: 0x6B2F, + 3460: 0x6B35, + 3461: 0x6B36, + 3462: 0x6B3B, + 3463: 0x6B3F, + 3464: 0x6B46, + 3465: 0x6B4A, + 3466: 0x6B4D, + 3467: 0x6B52, + 3468: 0x6B56, + 3469: 0x6B58, + 3470: 0x6B5D, + 3471: 0x6B60, + 3472: 0x6B67, + 3473: 0x6B6B, + 3474: 0x6B6E, + 3475: 0x6B70, + 3476: 0x6B75, + 3477: 0x6B7D, + 3478: 0x6B7E, + 3479: 0x6B82, + 3480: 0x6B85, + 3481: 0x6B97, + 3482: 0x6B9B, + 3483: 0x6B9F, + 3484: 0x6BA0, + 3485: 0x6BA2, + 3486: 0x6BA3, + 3487: 0x6BA8, + 3488: 0x6BA9, + 3489: 0x6BAC, + 3490: 0x6BAD, + 3491: 0x6BAE, + 3492: 0x6BB0, + 3493: 0x6BB8, + 3494: 0x6BB9, + 3495: 0x6BBD, + 3496: 0x6BBE, + 3497: 0x6BC3, + 3498: 0x6BC4, + 3499: 0x6BC9, + 3500: 0x6BCC, + 3501: 0x6BD6, + 3502: 0x6BDA, + 3503: 0x6BE1, + 3504: 0x6BE3, + 3505: 0x6BE6, + 3506: 0x6BE7, + 3507: 0x6BEE, + 3508: 0x6BF1, + 3509: 0x6BF7, + 3510: 0x6BF9, + 3511: 0x6BFF, + 3512: 0x6C02, + 3513: 0x6C04, + 3514: 0x6C05, + 3515: 0x6C09, + 3516: 0x6C0D, + 3517: 0x6C0E, + 3518: 0x6C10, + 3519: 0x6C12, + 3520: 0x6C19, + 3521: 0x6C1F, + 3522: 0x6C26, + 3523: 0x6C27, + 3524: 0x6C28, + 3525: 0x6C2C, + 3526: 0x6C2E, + 3527: 0x6C33, + 3528: 0x6C35, + 3529: 0x6C36, + 3530: 0x6C3A, + 3531: 0x6C3B, + 3532: 0x6C3F, + 3533: 0x6C4A, + 3534: 0x6C4B, + 3535: 0x6C4D, + 3536: 0x6C4F, + 3537: 0x6C52, + 3538: 0x6C54, + 3539: 0x6C59, + 3540: 0x6C5B, + 3541: 0x6C5C, + 3542: 0x6C6B, + 3543: 0x6C6D, + 3544: 0x6C6F, + 3545: 0x6C74, + 3546: 0x6C76, + 3547: 0x6C78, + 3548: 0x6C79, + 3549: 0x6C7B, + 3550: 0x6C85, + 3551: 0x6C86, + 3552: 0x6C87, + 3553: 0x6C89, + 3554: 0x6C94, + 3555: 0x6C95, + 3556: 0x6C97, + 3557: 0x6C98, + 3558: 0x6C9C, + 3559: 0x6C9F, + 3560: 0x6CB0, + 3561: 0x6CB2, + 3562: 0x6CB4, + 3563: 0x6CC2, + 3564: 0x6CC6, + 3565: 0x6CCD, + 3566: 0x6CCF, + 3567: 0x6CD0, + 3568: 0x6CD1, + 3569: 0x6CD2, + 3570: 0x6CD4, + 3571: 0x6CD6, + 3572: 0x6CDA, + 3573: 0x6CDC, + 3574: 0x6CE0, + 3575: 0x6CE7, + 3576: 0x6CE9, + 3577: 0x6CEB, + 3578: 0x6CEC, + 3579: 0x6CEE, + 3580: 0x6CF2, + 3581: 0x6CF4, + 3582: 0x6D04, + 3583: 0x6D07, + 3584: 0x6D0A, + 3585: 0x6D0E, + 3586: 0x6D0F, + 3587: 0x6D11, + 3588: 0x6D13, + 3589: 0x6D1A, + 3590: 0x6D26, + 3591: 0x6D27, + 3592: 0x6D28, + 3593: 0x6C67, + 3594: 0x6D2E, + 3595: 0x6D2F, + 3596: 0x6D31, + 3597: 0x6D39, + 3598: 0x6D3C, + 3599: 0x6D3F, + 3600: 0x6D57, + 3601: 0x6D5E, + 3602: 0x6D5F, + 3603: 0x6D61, + 3604: 0x6D65, + 3605: 0x6D67, + 3606: 0x6D6F, + 3607: 0x6D70, + 3608: 0x6D7C, + 3609: 0x6D82, + 3610: 0x6D87, + 3611: 0x6D91, + 3612: 0x6D92, + 3613: 0x6D94, + 3614: 0x6D96, + 3615: 0x6D97, + 3616: 0x6D98, + 3617: 0x6DAA, + 3618: 0x6DAC, + 3619: 0x6DB4, + 3620: 0x6DB7, + 3621: 0x6DB9, + 3622: 0x6DBD, + 3623: 0x6DBF, + 3624: 0x6DC4, + 3625: 0x6DC8, + 3626: 0x6DCA, + 3627: 0x6DCE, + 3628: 0x6DCF, + 3629: 0x6DD6, + 3630: 0x6DDB, + 3631: 0x6DDD, + 3632: 0x6DDF, + 3633: 0x6DE0, + 3634: 0x6DE2, + 3635: 0x6DE5, + 3636: 0x6DE9, + 3637: 0x6DEF, + 3638: 0x6DF0, + 3639: 0x6DF4, + 3640: 0x6DF6, + 3641: 0x6DFC, + 3642: 0x6E00, + 3643: 0x6E04, + 3644: 0x6E1E, + 3645: 0x6E22, + 3646: 0x6E27, + 3647: 0x6E32, + 3648: 0x6E36, + 3649: 0x6E39, + 3650: 0x6E3B, + 3651: 0x6E3C, + 3652: 0x6E44, + 3653: 0x6E45, + 3654: 0x6E48, + 3655: 0x6E49, + 3656: 0x6E4B, + 3657: 0x6E4F, + 3658: 0x6E51, + 3659: 0x6E52, + 3660: 0x6E53, + 3661: 0x6E54, + 3662: 0x6E57, + 3663: 0x6E5C, + 3664: 0x6E5D, + 3665: 0x6E5E, + 3666: 0x6E62, + 3667: 0x6E63, + 3668: 0x6E68, + 3669: 0x6E73, + 3670: 0x6E7B, + 3671: 0x6E7D, + 3672: 0x6E8D, + 3673: 0x6E93, + 3674: 0x6E99, + 3675: 0x6EA0, + 3676: 0x6EA7, + 3677: 0x6EAD, + 3678: 0x6EAE, + 3679: 0x6EB1, + 3680: 0x6EB3, + 3681: 0x6EBB, + 3682: 0x6EBF, + 3683: 0x6EC0, + 3684: 0x6EC1, + 3685: 0x6EC3, + 3686: 0x6EC7, + 3687: 0x6EC8, + 3688: 0x6ECA, + 3689: 0x6ECD, + 3690: 0x6ECE, + 3691: 0x6ECF, + 3692: 0x6EEB, + 3693: 0x6EED, + 3694: 0x6EEE, + 3695: 0x6EF9, + 3696: 0x6EFB, + 3697: 0x6EFD, + 3698: 0x6F04, + 3699: 0x6F08, + 3700: 0x6F0A, + 3701: 0x6F0C, + 3702: 0x6F0D, + 3703: 0x6F16, + 3704: 0x6F18, + 3705: 0x6F1A, + 3706: 0x6F1B, + 3707: 0x6F26, + 3708: 0x6F29, + 3709: 0x6F2A, + 3710: 0x6F2F, + 3711: 0x6F30, + 3712: 0x6F33, + 3713: 0x6F36, + 3714: 0x6F3B, + 3715: 0x6F3C, + 3716: 0x6F2D, + 3717: 0x6F4F, + 3718: 0x6F51, + 3719: 0x6F52, + 3720: 0x6F53, + 3721: 0x6F57, + 3722: 0x6F59, + 3723: 0x6F5A, + 3724: 0x6F5D, + 3725: 0x6F5E, + 3726: 0x6F61, + 3727: 0x6F62, + 3728: 0x6F68, + 3729: 0x6F6C, + 3730: 0x6F7D, + 3731: 0x6F7E, + 3732: 0x6F83, + 3733: 0x6F87, + 3734: 0x6F88, + 3735: 0x6F8B, + 3736: 0x6F8C, + 3737: 0x6F8D, + 3738: 0x6F90, + 3739: 0x6F92, + 3740: 0x6F93, + 3741: 0x6F94, + 3742: 0x6F96, + 3743: 0x6F9A, + 3744: 0x6F9F, + 3745: 0x6FA0, + 3746: 0x6FA5, + 3747: 0x6FA6, + 3748: 0x6FA7, + 3749: 0x6FA8, + 3750: 0x6FAE, + 3751: 0x6FAF, + 3752: 0x6FB0, + 3753: 0x6FB5, + 3754: 0x6FB6, + 3755: 0x6FBC, + 3756: 0x6FC5, + 3757: 0x6FC7, + 3758: 0x6FC8, + 3759: 0x6FCA, + 3760: 0x6FDA, + 3761: 0x6FDE, + 3762: 0x6FE8, + 3763: 0x6FE9, + 3764: 0x6FF0, + 3765: 0x6FF5, + 3766: 0x6FF9, + 3767: 0x6FFC, + 3768: 0x6FFD, + 3769: 0x7000, + 3770: 0x7005, + 3771: 0x7006, + 3772: 0x7007, + 3773: 0x700D, + 3774: 0x7017, + 3775: 0x7020, + 3776: 0x7023, + 3777: 0x702F, + 3778: 0x7034, + 3779: 0x7037, + 3780: 0x7039, + 3781: 0x703C, + 3782: 0x7043, + 3783: 0x7044, + 3784: 0x7048, + 3785: 0x7049, + 3786: 0x704A, + 3787: 0x704B, + 3788: 0x7054, + 3789: 0x7055, + 3790: 0x705D, + 3791: 0x705E, + 3792: 0x704E, + 3793: 0x7064, + 3794: 0x7065, + 3795: 0x706C, + 3796: 0x706E, + 3797: 0x7075, + 3798: 0x7076, + 3799: 0x707E, + 3800: 0x7081, + 3801: 0x7085, + 3802: 0x7086, + 3803: 0x7094, + 3804: 0x7095, + 3805: 0x7096, + 3806: 0x7097, + 3807: 0x7098, + 3808: 0x709B, + 3809: 0x70A4, + 3810: 0x70AB, + 3811: 0x70B0, + 3812: 0x70B1, + 3813: 0x70B4, + 3814: 0x70B7, + 3815: 0x70CA, + 3816: 0x70D1, + 3817: 0x70D3, + 3818: 0x70D4, + 3819: 0x70D5, + 3820: 0x70D6, + 3821: 0x70D8, + 3822: 0x70DC, + 3823: 0x70E4, + 3824: 0x70FA, + 3825: 0x7103, + 3826: 0x7104, + 3827: 0x7105, + 3828: 0x7106, + 3829: 0x7107, + 3830: 0x710B, + 3831: 0x710C, + 3832: 0x710F, + 3833: 0x711E, + 3834: 0x7120, + 3835: 0x712B, + 3836: 0x712D, + 3837: 0x712F, + 3838: 0x7130, + 3839: 0x7131, + 3840: 0x7138, + 3841: 0x7141, + 3842: 0x7145, + 3843: 0x7146, + 3844: 0x7147, + 3845: 0x714A, + 3846: 0x714B, + 3847: 0x7150, + 3848: 0x7152, + 3849: 0x7157, + 3850: 0x715A, + 3851: 0x715C, + 3852: 0x715E, + 3853: 0x7160, + 3854: 0x7168, + 3855: 0x7179, + 3856: 0x7180, + 3857: 0x7185, + 3858: 0x7187, + 3859: 0x718C, + 3860: 0x7192, + 3861: 0x719A, + 3862: 0x719B, + 3863: 0x71A0, + 3864: 0x71A2, + 3865: 0x71AF, + 3866: 0x71B0, + 3867: 0x71B2, + 3868: 0x71B3, + 3869: 0x71BA, + 3870: 0x71BF, + 3871: 0x71C0, + 3872: 0x71C1, + 3873: 0x71C4, + 3874: 0x71CB, + 3875: 0x71CC, + 3876: 0x71D3, + 3877: 0x71D6, + 3878: 0x71D9, + 3879: 0x71DA, + 3880: 0x71DC, + 3881: 0x71F8, + 3882: 0x71FE, + 3883: 0x7200, + 3884: 0x7207, + 3885: 0x7208, + 3886: 0x7209, + 3887: 0x7213, + 3888: 0x7217, + 3889: 0x721A, + 3890: 0x721D, + 3891: 0x721F, + 3892: 0x7224, + 3893: 0x722B, + 3894: 0x722F, + 3895: 0x7234, + 3896: 0x7238, + 3897: 0x7239, + 3898: 0x7241, + 3899: 0x7242, + 3900: 0x7243, + 3901: 0x7245, + 3902: 0x724E, + 3903: 0x724F, + 3904: 0x7250, + 3905: 0x7253, + 3906: 0x7255, + 3907: 0x7256, + 3908: 0x725A, + 3909: 0x725C, + 3910: 0x725E, + 3911: 0x7260, + 3912: 0x7263, + 3913: 0x7268, + 3914: 0x726B, + 3915: 0x726E, + 3916: 0x726F, + 3917: 0x7271, + 3918: 0x7277, + 3919: 0x7278, + 3920: 0x727B, + 3921: 0x727C, + 3922: 0x727F, + 3923: 0x7284, + 3924: 0x7289, + 3925: 0x728D, + 3926: 0x728E, + 3927: 0x7293, + 3928: 0x729B, + 3929: 0x72A8, + 3930: 0x72AD, + 3931: 0x72AE, + 3932: 0x72B1, + 3933: 0x72B4, + 3934: 0x72BE, + 3935: 0x72C1, + 3936: 0x72C7, + 3937: 0x72C9, + 3938: 0x72CC, + 3939: 0x72D5, + 3940: 0x72D6, + 3941: 0x72D8, + 3942: 0x72DF, + 3943: 0x72E5, + 3944: 0x72F3, + 3945: 0x72F4, + 3946: 0x72FA, + 3947: 0x72FB, + 3948: 0x72FE, + 3949: 0x7302, + 3950: 0x7304, + 3951: 0x7305, + 3952: 0x7307, + 3953: 0x730B, + 3954: 0x730D, + 3955: 0x7312, + 3956: 0x7313, + 3957: 0x7318, + 3958: 0x7319, + 3959: 0x731E, + 3960: 0x7322, + 3961: 0x7324, + 3962: 0x7327, + 3963: 0x7328, + 3964: 0x732C, + 3965: 0x7331, + 3966: 0x7332, + 3967: 0x7335, + 3968: 0x733A, + 3969: 0x733B, + 3970: 0x733D, + 3971: 0x7343, + 3972: 0x734D, + 3973: 0x7350, + 3974: 0x7352, + 3975: 0x7356, + 3976: 0x7358, + 3977: 0x735D, + 3978: 0x735E, + 3979: 0x735F, + 3980: 0x7360, + 3981: 0x7366, + 3982: 0x7367, + 3983: 0x7369, + 3984: 0x736B, + 3985: 0x736C, + 3986: 0x736E, + 3987: 0x736F, + 3988: 0x7371, + 3989: 0x7377, + 3990: 0x7379, + 3991: 0x737C, + 3992: 0x7380, + 3993: 0x7381, + 3994: 0x7383, + 3995: 0x7385, + 3996: 0x7386, + 3997: 0x738E, + 3998: 0x7390, + 3999: 0x7393, + 4000: 0x7395, + 4001: 0x7397, + 4002: 0x7398, + 4003: 0x739C, + 4004: 0x739E, + 4005: 0x739F, + 4006: 0x73A0, + 4007: 0x73A2, + 4008: 0x73A5, + 4009: 0x73A6, + 4010: 0x73AA, + 4011: 0x73AB, + 4012: 0x73AD, + 4013: 0x73B5, + 4014: 0x73B7, + 4015: 0x73B9, + 4016: 0x73BC, + 4017: 0x73BD, + 4018: 0x73BF, + 4019: 0x73C5, + 4020: 0x73C6, + 4021: 0x73C9, + 4022: 0x73CB, + 4023: 0x73CC, + 4024: 0x73CF, + 4025: 0x73D2, + 4026: 0x73D3, + 4027: 0x73D6, + 4028: 0x73D9, + 4029: 0x73DD, + 4030: 0x73E1, + 4031: 0x73E3, + 4032: 0x73E6, + 4033: 0x73E7, + 4034: 0x73E9, + 4035: 0x73F4, + 4036: 0x73F5, + 4037: 0x73F7, + 4038: 0x73F9, + 4039: 0x73FA, + 4040: 0x73FB, + 4041: 0x73FD, + 4042: 0x73FF, + 4043: 0x7400, + 4044: 0x7401, + 4045: 0x7404, + 4046: 0x7407, + 4047: 0x740A, + 4048: 0x7411, + 4049: 0x741A, + 4050: 0x741B, + 4051: 0x7424, + 4052: 0x7426, + 4053: 0x7428, + 4054: 0x7429, + 4055: 0x742A, + 4056: 0x742B, + 4057: 0x742C, + 4058: 0x742D, + 4059: 0x742E, + 4060: 0x742F, + 4061: 0x7430, + 4062: 0x7431, + 4063: 0x7439, + 4064: 0x7440, + 4065: 0x7443, + 4066: 0x7444, + 4067: 0x7446, + 4068: 0x7447, + 4069: 0x744B, + 4070: 0x744D, + 4071: 0x7451, + 4072: 0x7452, + 4073: 0x7457, + 4074: 0x745D, + 4075: 0x7462, + 4076: 0x7466, + 4077: 0x7467, + 4078: 0x7468, + 4079: 0x746B, + 4080: 0x746D, + 4081: 0x746E, + 4082: 0x7471, + 4083: 0x7472, + 4084: 0x7480, + 4085: 0x7481, + 4086: 0x7485, + 4087: 0x7486, + 4088: 0x7487, + 4089: 0x7489, + 4090: 0x748F, + 4091: 0x7490, + 4092: 0x7491, + 4093: 0x7492, + 4094: 0x7498, + 4095: 0x7499, + 4096: 0x749A, + 4097: 0x749C, + 4098: 0x749F, + 4099: 0x74A0, + 4100: 0x74A1, + 4101: 0x74A3, + 4102: 0x74A6, + 4103: 0x74A8, + 4104: 0x74A9, + 4105: 0x74AA, + 4106: 0x74AB, + 4107: 0x74AE, + 4108: 0x74AF, + 4109: 0x74B1, + 4110: 0x74B2, + 4111: 0x74B5, + 4112: 0x74B9, + 4113: 0x74BB, + 4114: 0x74BF, + 4115: 0x74C8, + 4116: 0x74C9, + 4117: 0x74CC, + 4118: 0x74D0, + 4119: 0x74D3, + 4120: 0x74D8, + 4121: 0x74DA, + 4122: 0x74DB, + 4123: 0x74DE, + 4124: 0x74DF, + 4125: 0x74E4, + 4126: 0x74E8, + 4127: 0x74EA, + 4128: 0x74EB, + 4129: 0x74EF, + 4130: 0x74F4, + 4131: 0x74FA, + 4132: 0x74FB, + 4133: 0x74FC, + 4134: 0x74FF, + 4135: 0x7506, + 4136: 0x7512, + 4137: 0x7516, + 4138: 0x7517, + 4139: 0x7520, + 4140: 0x7521, + 4141: 0x7524, + 4142: 0x7527, + 4143: 0x7529, + 4144: 0x752A, + 4145: 0x752F, + 4146: 0x7536, + 4147: 0x7539, + 4148: 0x753D, + 4149: 0x753E, + 4150: 0x753F, + 4151: 0x7540, + 4152: 0x7543, + 4153: 0x7547, + 4154: 0x7548, + 4155: 0x754E, + 4156: 0x7550, + 4157: 0x7552, + 4158: 0x7557, + 4159: 0x755E, + 4160: 0x755F, + 4161: 0x7561, + 4162: 0x756F, + 4163: 0x7571, + 4164: 0x7579, + 4165: 0x757A, + 4166: 0x757B, + 4167: 0x757C, + 4168: 0x757D, + 4169: 0x757E, + 4170: 0x7581, + 4171: 0x7585, + 4172: 0x7590, + 4173: 0x7592, + 4174: 0x7593, + 4175: 0x7595, + 4176: 0x7599, + 4177: 0x759C, + 4178: 0x75A2, + 4179: 0x75A4, + 4180: 0x75B4, + 4181: 0x75BA, + 4182: 0x75BF, + 4183: 0x75C0, + 4184: 0x75C1, + 4185: 0x75C4, + 4186: 0x75C6, + 4187: 0x75CC, + 4188: 0x75CE, + 4189: 0x75CF, + 4190: 0x75D7, + 4191: 0x75DC, + 4192: 0x75DF, + 4193: 0x75E0, + 4194: 0x75E1, + 4195: 0x75E4, + 4196: 0x75E7, + 4197: 0x75EC, + 4198: 0x75EE, + 4199: 0x75EF, + 4200: 0x75F1, + 4201: 0x75F9, + 4202: 0x7600, + 4203: 0x7602, + 4204: 0x7603, + 4205: 0x7604, + 4206: 0x7607, + 4207: 0x7608, + 4208: 0x760A, + 4209: 0x760C, + 4210: 0x760F, + 4211: 0x7612, + 4212: 0x7613, + 4213: 0x7615, + 4214: 0x7616, + 4215: 0x7619, + 4216: 0x761B, + 4217: 0x761C, + 4218: 0x761D, + 4219: 0x761E, + 4220: 0x7623, + 4221: 0x7625, + 4222: 0x7626, + 4223: 0x7629, + 4224: 0x762D, + 4225: 0x7632, + 4226: 0x7633, + 4227: 0x7635, + 4228: 0x7638, + 4229: 0x7639, + 4230: 0x763A, + 4231: 0x763C, + 4232: 0x764A, + 4233: 0x7640, + 4234: 0x7641, + 4235: 0x7643, + 4236: 0x7644, + 4237: 0x7645, + 4238: 0x7649, + 4239: 0x764B, + 4240: 0x7655, + 4241: 0x7659, + 4242: 0x765F, + 4243: 0x7664, + 4244: 0x7665, + 4245: 0x766D, + 4246: 0x766E, + 4247: 0x766F, + 4248: 0x7671, + 4249: 0x7674, + 4250: 0x7681, + 4251: 0x7685, + 4252: 0x768C, + 4253: 0x768D, + 4254: 0x7695, + 4255: 0x769B, + 4256: 0x769C, + 4257: 0x769D, + 4258: 0x769F, + 4259: 0x76A0, + 4260: 0x76A2, + 4261: 0x76A3, + 4262: 0x76A4, + 4263: 0x76A5, + 4264: 0x76A6, + 4265: 0x76A7, + 4266: 0x76A8, + 4267: 0x76AA, + 4268: 0x76AD, + 4269: 0x76BD, + 4270: 0x76C1, + 4271: 0x76C5, + 4272: 0x76C9, + 4273: 0x76CB, + 4274: 0x76CC, + 4275: 0x76CE, + 4276: 0x76D4, + 4277: 0x76D9, + 4278: 0x76E0, + 4279: 0x76E6, + 4280: 0x76E8, + 4281: 0x76EC, + 4282: 0x76F0, + 4283: 0x76F1, + 4284: 0x76F6, + 4285: 0x76F9, + 4286: 0x76FC, + 4287: 0x7700, + 4288: 0x7706, + 4289: 0x770A, + 4290: 0x770E, + 4291: 0x7712, + 4292: 0x7714, + 4293: 0x7715, + 4294: 0x7717, + 4295: 0x7719, + 4296: 0x771A, + 4297: 0x771C, + 4298: 0x7722, + 4299: 0x7728, + 4300: 0x772D, + 4301: 0x772E, + 4302: 0x772F, + 4303: 0x7734, + 4304: 0x7735, + 4305: 0x7736, + 4306: 0x7739, + 4307: 0x773D, + 4308: 0x773E, + 4309: 0x7742, + 4310: 0x7745, + 4311: 0x7746, + 4312: 0x774A, + 4313: 0x774D, + 4314: 0x774E, + 4315: 0x774F, + 4316: 0x7752, + 4317: 0x7756, + 4318: 0x7757, + 4319: 0x775C, + 4320: 0x775E, + 4321: 0x775F, + 4322: 0x7760, + 4323: 0x7762, + 4324: 0x7764, + 4325: 0x7767, + 4326: 0x776A, + 4327: 0x776C, + 4328: 0x7770, + 4329: 0x7772, + 4330: 0x7773, + 4331: 0x7774, + 4332: 0x777A, + 4333: 0x777D, + 4334: 0x7780, + 4335: 0x7784, + 4336: 0x778C, + 4337: 0x778D, + 4338: 0x7794, + 4339: 0x7795, + 4340: 0x7796, + 4341: 0x779A, + 4342: 0x779F, + 4343: 0x77A2, + 4344: 0x77A7, + 4345: 0x77AA, + 4346: 0x77AE, + 4347: 0x77AF, + 4348: 0x77B1, + 4349: 0x77B5, + 4350: 0x77BE, + 4351: 0x77C3, + 4352: 0x77C9, + 4353: 0x77D1, + 4354: 0x77D2, + 4355: 0x77D5, + 4356: 0x77D9, + 4357: 0x77DE, + 4358: 0x77DF, + 4359: 0x77E0, + 4360: 0x77E4, + 4361: 0x77E6, + 4362: 0x77EA, + 4363: 0x77EC, + 4364: 0x77F0, + 4365: 0x77F1, + 4366: 0x77F4, + 4367: 0x77F8, + 4368: 0x77FB, + 4369: 0x7805, + 4370: 0x7806, + 4371: 0x7809, + 4372: 0x780D, + 4373: 0x780E, + 4374: 0x7811, + 4375: 0x781D, + 4376: 0x7821, + 4377: 0x7822, + 4378: 0x7823, + 4379: 0x782D, + 4380: 0x782E, + 4381: 0x7830, + 4382: 0x7835, + 4383: 0x7837, + 4384: 0x7843, + 4385: 0x7844, + 4386: 0x7847, + 4387: 0x7848, + 4388: 0x784C, + 4389: 0x784E, + 4390: 0x7852, + 4391: 0x785C, + 4392: 0x785E, + 4393: 0x7860, + 4394: 0x7861, + 4395: 0x7863, + 4396: 0x7864, + 4397: 0x7868, + 4398: 0x786A, + 4399: 0x786E, + 4400: 0x787A, + 4401: 0x787E, + 4402: 0x788A, + 4403: 0x788F, + 4404: 0x7894, + 4405: 0x7898, + 4406: 0x78A1, + 4407: 0x789D, + 4408: 0x789E, + 4409: 0x789F, + 4410: 0x78A4, + 4411: 0x78A8, + 4412: 0x78AC, + 4413: 0x78AD, + 4414: 0x78B0, + 4415: 0x78B1, + 4416: 0x78B2, + 4417: 0x78B3, + 4418: 0x78BB, + 4419: 0x78BD, + 4420: 0x78BF, + 4421: 0x78C7, + 4422: 0x78C8, + 4423: 0x78C9, + 4424: 0x78CC, + 4425: 0x78CE, + 4426: 0x78D2, + 4427: 0x78D3, + 4428: 0x78D5, + 4429: 0x78D6, + 4430: 0x78E4, + 4431: 0x78DB, + 4432: 0x78DF, + 4433: 0x78E0, + 4434: 0x78E1, + 4435: 0x78E6, + 4436: 0x78EA, + 4437: 0x78F2, + 4438: 0x78F3, + 4439: 0x7900, + 4440: 0x78F6, + 4441: 0x78F7, + 4442: 0x78FA, + 4443: 0x78FB, + 4444: 0x78FF, + 4445: 0x7906, + 4446: 0x790C, + 4447: 0x7910, + 4448: 0x791A, + 4449: 0x791C, + 4450: 0x791E, + 4451: 0x791F, + 4452: 0x7920, + 4453: 0x7925, + 4454: 0x7927, + 4455: 0x7929, + 4456: 0x792D, + 4457: 0x7931, + 4458: 0x7934, + 4459: 0x7935, + 4460: 0x793B, + 4461: 0x793D, + 4462: 0x793F, + 4463: 0x7944, + 4464: 0x7945, + 4465: 0x7946, + 4466: 0x794A, + 4467: 0x794B, + 4468: 0x794F, + 4469: 0x7951, + 4470: 0x7954, + 4471: 0x7958, + 4472: 0x795B, + 4473: 0x795C, + 4474: 0x7967, + 4475: 0x7969, + 4476: 0x796B, + 4477: 0x7972, + 4478: 0x7979, + 4479: 0x797B, + 4480: 0x797C, + 4481: 0x797E, + 4482: 0x798B, + 4483: 0x798C, + 4484: 0x7991, + 4485: 0x7993, + 4486: 0x7994, + 4487: 0x7995, + 4488: 0x7996, + 4489: 0x7998, + 4490: 0x799B, + 4491: 0x799C, + 4492: 0x79A1, + 4493: 0x79A8, + 4494: 0x79A9, + 4495: 0x79AB, + 4496: 0x79AF, + 4497: 0x79B1, + 4498: 0x79B4, + 4499: 0x79B8, + 4500: 0x79BB, + 4501: 0x79C2, + 4502: 0x79C4, + 4503: 0x79C7, + 4504: 0x79C8, + 4505: 0x79CA, + 4506: 0x79CF, + 4507: 0x79D4, + 4508: 0x79D6, + 4509: 0x79DA, + 4510: 0x79DD, + 4511: 0x79DE, + 4512: 0x79E0, + 4513: 0x79E2, + 4514: 0x79E5, + 4515: 0x79EA, + 4516: 0x79EB, + 4517: 0x79ED, + 4518: 0x79F1, + 4519: 0x79F8, + 4520: 0x79FC, + 4521: 0x7A02, + 4522: 0x7A03, + 4523: 0x7A07, + 4524: 0x7A09, + 4525: 0x7A0A, + 4526: 0x7A0C, + 4527: 0x7A11, + 4528: 0x7A15, + 4529: 0x7A1B, + 4530: 0x7A1E, + 4531: 0x7A21, + 4532: 0x7A27, + 4533: 0x7A2B, + 4534: 0x7A2D, + 4535: 0x7A2F, + 4536: 0x7A30, + 4537: 0x7A34, + 4538: 0x7A35, + 4539: 0x7A38, + 4540: 0x7A39, + 4541: 0x7A3A, + 4542: 0x7A44, + 4543: 0x7A45, + 4544: 0x7A47, + 4545: 0x7A48, + 4546: 0x7A4C, + 4547: 0x7A55, + 4548: 0x7A56, + 4549: 0x7A59, + 4550: 0x7A5C, + 4551: 0x7A5D, + 4552: 0x7A5F, + 4553: 0x7A60, + 4554: 0x7A65, + 4555: 0x7A67, + 4556: 0x7A6A, + 4557: 0x7A6D, + 4558: 0x7A75, + 4559: 0x7A78, + 4560: 0x7A7E, + 4561: 0x7A80, + 4562: 0x7A82, + 4563: 0x7A85, + 4564: 0x7A86, + 4565: 0x7A8A, + 4566: 0x7A8B, + 4567: 0x7A90, + 4568: 0x7A91, + 4569: 0x7A94, + 4570: 0x7A9E, + 4571: 0x7AA0, + 4572: 0x7AA3, + 4573: 0x7AAC, + 4574: 0x7AB3, + 4575: 0x7AB5, + 4576: 0x7AB9, + 4577: 0x7ABB, + 4578: 0x7ABC, + 4579: 0x7AC6, + 4580: 0x7AC9, + 4581: 0x7ACC, + 4582: 0x7ACE, + 4583: 0x7AD1, + 4584: 0x7ADB, + 4585: 0x7AE8, + 4586: 0x7AE9, + 4587: 0x7AEB, + 4588: 0x7AEC, + 4589: 0x7AF1, + 4590: 0x7AF4, + 4591: 0x7AFB, + 4592: 0x7AFD, + 4593: 0x7AFE, + 4594: 0x7B07, + 4595: 0x7B14, + 4596: 0x7B1F, + 4597: 0x7B23, + 4598: 0x7B27, + 4599: 0x7B29, + 4600: 0x7B2A, + 4601: 0x7B2B, + 4602: 0x7B2D, + 4603: 0x7B2E, + 4604: 0x7B2F, + 4605: 0x7B30, + 4606: 0x7B31, + 4607: 0x7B34, + 4608: 0x7B3D, + 4609: 0x7B3F, + 4610: 0x7B40, + 4611: 0x7B41, + 4612: 0x7B47, + 4613: 0x7B4E, + 4614: 0x7B55, + 4615: 0x7B60, + 4616: 0x7B64, + 4617: 0x7B66, + 4618: 0x7B69, + 4619: 0x7B6A, + 4620: 0x7B6D, + 4621: 0x7B6F, + 4622: 0x7B72, + 4623: 0x7B73, + 4624: 0x7B77, + 4625: 0x7B84, + 4626: 0x7B89, + 4627: 0x7B8E, + 4628: 0x7B90, + 4629: 0x7B91, + 4630: 0x7B96, + 4631: 0x7B9B, + 4632: 0x7B9E, + 4633: 0x7BA0, + 4634: 0x7BA5, + 4635: 0x7BAC, + 4636: 0x7BAF, + 4637: 0x7BB0, + 4638: 0x7BB2, + 4639: 0x7BB5, + 4640: 0x7BB6, + 4641: 0x7BBA, + 4642: 0x7BBB, + 4643: 0x7BBC, + 4644: 0x7BBD, + 4645: 0x7BC2, + 4646: 0x7BC5, + 4647: 0x7BC8, + 4648: 0x7BCA, + 4649: 0x7BD4, + 4650: 0x7BD6, + 4651: 0x7BD7, + 4652: 0x7BD9, + 4653: 0x7BDA, + 4654: 0x7BDB, + 4655: 0x7BE8, + 4656: 0x7BEA, + 4657: 0x7BF2, + 4658: 0x7BF4, + 4659: 0x7BF5, + 4660: 0x7BF8, + 4661: 0x7BF9, + 4662: 0x7BFA, + 4663: 0x7BFC, + 4664: 0x7BFE, + 4665: 0x7C01, + 4666: 0x7C02, + 4667: 0x7C03, + 4668: 0x7C04, + 4669: 0x7C06, + 4670: 0x7C09, + 4671: 0x7C0B, + 4672: 0x7C0C, + 4673: 0x7C0E, + 4674: 0x7C0F, + 4675: 0x7C19, + 4676: 0x7C1B, + 4677: 0x7C20, + 4678: 0x7C25, + 4679: 0x7C26, + 4680: 0x7C28, + 4681: 0x7C2C, + 4682: 0x7C31, + 4683: 0x7C33, + 4684: 0x7C34, + 4685: 0x7C36, + 4686: 0x7C39, + 4687: 0x7C3A, + 4688: 0x7C46, + 4689: 0x7C4A, + 4690: 0x7C55, + 4691: 0x7C51, + 4692: 0x7C52, + 4693: 0x7C53, + 4694: 0x7C59, + 4695: 0x7C5A, + 4696: 0x7C5B, + 4697: 0x7C5C, + 4698: 0x7C5D, + 4699: 0x7C5E, + 4700: 0x7C61, + 4701: 0x7C63, + 4702: 0x7C67, + 4703: 0x7C69, + 4704: 0x7C6D, + 4705: 0x7C6E, + 4706: 0x7C70, + 4707: 0x7C72, + 4708: 0x7C79, + 4709: 0x7C7C, + 4710: 0x7C7D, + 4711: 0x7C86, + 4712: 0x7C87, + 4713: 0x7C8F, + 4714: 0x7C94, + 4715: 0x7C9E, + 4716: 0x7CA0, + 4717: 0x7CA6, + 4718: 0x7CB0, + 4719: 0x7CB6, + 4720: 0x7CB7, + 4721: 0x7CBA, + 4722: 0x7CBB, + 4723: 0x7CBC, + 4724: 0x7CBF, + 4725: 0x7CC4, + 4726: 0x7CC7, + 4727: 0x7CC8, + 4728: 0x7CC9, + 4729: 0x7CCD, + 4730: 0x7CCF, + 4731: 0x7CD3, + 4732: 0x7CD4, + 4733: 0x7CD5, + 4734: 0x7CD7, + 4735: 0x7CD9, + 4736: 0x7CDA, + 4737: 0x7CDD, + 4738: 0x7CE6, + 4739: 0x7CE9, + 4740: 0x7CEB, + 4741: 0x7CF5, + 4742: 0x7D03, + 4743: 0x7D07, + 4744: 0x7D08, + 4745: 0x7D09, + 4746: 0x7D0F, + 4747: 0x7D11, + 4748: 0x7D12, + 4749: 0x7D13, + 4750: 0x7D16, + 4751: 0x7D1D, + 4752: 0x7D1E, + 4753: 0x7D23, + 4754: 0x7D26, + 4755: 0x7D2A, + 4756: 0x7D2D, + 4757: 0x7D31, + 4758: 0x7D3C, + 4759: 0x7D3D, + 4760: 0x7D3E, + 4761: 0x7D40, + 4762: 0x7D41, + 4763: 0x7D47, + 4764: 0x7D48, + 4765: 0x7D4D, + 4766: 0x7D51, + 4767: 0x7D53, + 4768: 0x7D57, + 4769: 0x7D59, + 4770: 0x7D5A, + 4771: 0x7D5C, + 4772: 0x7D5D, + 4773: 0x7D65, + 4774: 0x7D67, + 4775: 0x7D6A, + 4776: 0x7D70, + 4777: 0x7D78, + 4778: 0x7D7A, + 4779: 0x7D7B, + 4780: 0x7D7F, + 4781: 0x7D81, + 4782: 0x7D82, + 4783: 0x7D83, + 4784: 0x7D85, + 4785: 0x7D86, + 4786: 0x7D88, + 4787: 0x7D8B, + 4788: 0x7D8C, + 4789: 0x7D8D, + 4790: 0x7D91, + 4791: 0x7D96, + 4792: 0x7D97, + 4793: 0x7D9D, + 4794: 0x7D9E, + 4795: 0x7DA6, + 4796: 0x7DA7, + 4797: 0x7DAA, + 4798: 0x7DB3, + 4799: 0x7DB6, + 4800: 0x7DB7, + 4801: 0x7DB9, + 4802: 0x7DC2, + 4803: 0x7DC3, + 4804: 0x7DC4, + 4805: 0x7DC5, + 4806: 0x7DC6, + 4807: 0x7DCC, + 4808: 0x7DCD, + 4809: 0x7DCE, + 4810: 0x7DD7, + 4811: 0x7DD9, + 4812: 0x7E00, + 4813: 0x7DE2, + 4814: 0x7DE5, + 4815: 0x7DE6, + 4816: 0x7DEA, + 4817: 0x7DEB, + 4818: 0x7DED, + 4819: 0x7DF1, + 4820: 0x7DF5, + 4821: 0x7DF6, + 4822: 0x7DF9, + 4823: 0x7DFA, + 4824: 0x7E08, + 4825: 0x7E10, + 4826: 0x7E11, + 4827: 0x7E15, + 4828: 0x7E17, + 4829: 0x7E1C, + 4830: 0x7E1D, + 4831: 0x7E20, + 4832: 0x7E27, + 4833: 0x7E28, + 4834: 0x7E2C, + 4835: 0x7E2D, + 4836: 0x7E2F, + 4837: 0x7E33, + 4838: 0x7E36, + 4839: 0x7E3F, + 4840: 0x7E44, + 4841: 0x7E45, + 4842: 0x7E47, + 4843: 0x7E4E, + 4844: 0x7E50, + 4845: 0x7E52, + 4846: 0x7E58, + 4847: 0x7E5F, + 4848: 0x7E61, + 4849: 0x7E62, + 4850: 0x7E65, + 4851: 0x7E6B, + 4852: 0x7E6E, + 4853: 0x7E6F, + 4854: 0x7E73, + 4855: 0x7E78, + 4856: 0x7E7E, + 4857: 0x7E81, + 4858: 0x7E86, + 4859: 0x7E87, + 4860: 0x7E8A, + 4861: 0x7E8D, + 4862: 0x7E91, + 4863: 0x7E95, + 4864: 0x7E98, + 4865: 0x7E9A, + 4866: 0x7E9D, + 4867: 0x7E9E, + 4868: 0x7F3C, + 4869: 0x7F3B, + 4870: 0x7F3D, + 4871: 0x7F3E, + 4872: 0x7F3F, + 4873: 0x7F43, + 4874: 0x7F44, + 4875: 0x7F47, + 4876: 0x7F4F, + 4877: 0x7F52, + 4878: 0x7F53, + 4879: 0x7F5B, + 4880: 0x7F5C, + 4881: 0x7F5D, + 4882: 0x7F61, + 4883: 0x7F63, + 4884: 0x7F64, + 4885: 0x7F65, + 4886: 0x7F66, + 4887: 0x7F6D, + 4888: 0x7F71, + 4889: 0x7F7D, + 4890: 0x7F7E, + 4891: 0x7F7F, + 4892: 0x7F80, + 4893: 0x7F8B, + 4894: 0x7F8D, + 4895: 0x7F8F, + 4896: 0x7F90, + 4897: 0x7F91, + 4898: 0x7F96, + 4899: 0x7F97, + 4900: 0x7F9C, + 4901: 0x7FA1, + 4902: 0x7FA2, + 4903: 0x7FA6, + 4904: 0x7FAA, + 4905: 0x7FAD, + 4906: 0x7FB4, + 4907: 0x7FBC, + 4908: 0x7FBF, + 4909: 0x7FC0, + 4910: 0x7FC3, + 4911: 0x7FC8, + 4912: 0x7FCE, + 4913: 0x7FCF, + 4914: 0x7FDB, + 4915: 0x7FDF, + 4916: 0x7FE3, + 4917: 0x7FE5, + 4918: 0x7FE8, + 4919: 0x7FEC, + 4920: 0x7FEE, + 4921: 0x7FEF, + 4922: 0x7FF2, + 4923: 0x7FFA, + 4924: 0x7FFD, + 4925: 0x7FFE, + 4926: 0x7FFF, + 4927: 0x8007, + 4928: 0x8008, + 4929: 0x800A, + 4930: 0x800D, + 4931: 0x800E, + 4932: 0x800F, + 4933: 0x8011, + 4934: 0x8013, + 4935: 0x8014, + 4936: 0x8016, + 4937: 0x801D, + 4938: 0x801E, + 4939: 0x801F, + 4940: 0x8020, + 4941: 0x8024, + 4942: 0x8026, + 4943: 0x802C, + 4944: 0x802E, + 4945: 0x8030, + 4946: 0x8034, + 4947: 0x8035, + 4948: 0x8037, + 4949: 0x8039, + 4950: 0x803A, + 4951: 0x803C, + 4952: 0x803E, + 4953: 0x8040, + 4954: 0x8044, + 4955: 0x8060, + 4956: 0x8064, + 4957: 0x8066, + 4958: 0x806D, + 4959: 0x8071, + 4960: 0x8075, + 4961: 0x8081, + 4962: 0x8088, + 4963: 0x808E, + 4964: 0x809C, + 4965: 0x809E, + 4966: 0x80A6, + 4967: 0x80A7, + 4968: 0x80AB, + 4969: 0x80B8, + 4970: 0x80B9, + 4971: 0x80C8, + 4972: 0x80CD, + 4973: 0x80CF, + 4974: 0x80D2, + 4975: 0x80D4, + 4976: 0x80D5, + 4977: 0x80D7, + 4978: 0x80D8, + 4979: 0x80E0, + 4980: 0x80ED, + 4981: 0x80EE, + 4982: 0x80F0, + 4983: 0x80F2, + 4984: 0x80F3, + 4985: 0x80F6, + 4986: 0x80F9, + 4987: 0x80FA, + 4988: 0x80FE, + 4989: 0x8103, + 4990: 0x810B, + 4991: 0x8116, + 4992: 0x8117, + 4993: 0x8118, + 4994: 0x811C, + 4995: 0x811E, + 4996: 0x8120, + 4997: 0x8124, + 4998: 0x8127, + 4999: 0x812C, + 5000: 0x8130, + 5001: 0x8135, + 5002: 0x813A, + 5003: 0x813C, + 5004: 0x8145, + 5005: 0x8147, + 5006: 0x814A, + 5007: 0x814C, + 5008: 0x8152, + 5009: 0x8157, + 5010: 0x8160, + 5011: 0x8161, + 5012: 0x8167, + 5013: 0x8168, + 5014: 0x8169, + 5015: 0x816D, + 5016: 0x816F, + 5017: 0x8177, + 5018: 0x8181, + 5019: 0x8190, + 5020: 0x8184, + 5021: 0x8185, + 5022: 0x8186, + 5023: 0x818B, + 5024: 0x818E, + 5025: 0x8196, + 5026: 0x8198, + 5027: 0x819B, + 5028: 0x819E, + 5029: 0x81A2, + 5030: 0x81AE, + 5031: 0x81B2, + 5032: 0x81B4, + 5033: 0x81BB, + 5034: 0x81CB, + 5035: 0x81C3, + 5036: 0x81C5, + 5037: 0x81CA, + 5038: 0x81CE, + 5039: 0x81CF, + 5040: 0x81D5, + 5041: 0x81D7, + 5042: 0x81DB, + 5043: 0x81DD, + 5044: 0x81DE, + 5045: 0x81E1, + 5046: 0x81E4, + 5047: 0x81EB, + 5048: 0x81EC, + 5049: 0x81F0, + 5050: 0x81F1, + 5051: 0x81F2, + 5052: 0x81F5, + 5053: 0x81F6, + 5054: 0x81F8, + 5055: 0x81F9, + 5056: 0x81FD, + 5057: 0x81FF, + 5058: 0x8200, + 5059: 0x8203, + 5060: 0x820F, + 5061: 0x8213, + 5062: 0x8214, + 5063: 0x8219, + 5064: 0x821A, + 5065: 0x821D, + 5066: 0x8221, + 5067: 0x8222, + 5068: 0x8228, + 5069: 0x8232, + 5070: 0x8234, + 5071: 0x823A, + 5072: 0x8243, + 5073: 0x8244, + 5074: 0x8245, + 5075: 0x8246, + 5076: 0x824B, + 5077: 0x824E, + 5078: 0x824F, + 5079: 0x8251, + 5080: 0x8256, + 5081: 0x825C, + 5082: 0x8260, + 5083: 0x8263, + 5084: 0x8267, + 5085: 0x826D, + 5086: 0x8274, + 5087: 0x827B, + 5088: 0x827D, + 5089: 0x827F, + 5090: 0x8280, + 5091: 0x8281, + 5092: 0x8283, + 5093: 0x8284, + 5094: 0x8287, + 5095: 0x8289, + 5096: 0x828A, + 5097: 0x828E, + 5098: 0x8291, + 5099: 0x8294, + 5100: 0x8296, + 5101: 0x8298, + 5102: 0x829A, + 5103: 0x829B, + 5104: 0x82A0, + 5105: 0x82A1, + 5106: 0x82A3, + 5107: 0x82A4, + 5108: 0x82A7, + 5109: 0x82A8, + 5110: 0x82A9, + 5111: 0x82AA, + 5112: 0x82AE, + 5113: 0x82B0, + 5114: 0x82B2, + 5115: 0x82B4, + 5116: 0x82B7, + 5117: 0x82BA, + 5118: 0x82BC, + 5119: 0x82BE, + 5120: 0x82BF, + 5121: 0x82C6, + 5122: 0x82D0, + 5123: 0x82D5, + 5124: 0x82DA, + 5125: 0x82E0, + 5126: 0x82E2, + 5127: 0x82E4, + 5128: 0x82E8, + 5129: 0x82EA, + 5130: 0x82ED, + 5131: 0x82EF, + 5132: 0x82F6, + 5133: 0x82F7, + 5134: 0x82FD, + 5135: 0x82FE, + 5136: 0x8300, + 5137: 0x8301, + 5138: 0x8307, + 5139: 0x8308, + 5140: 0x830A, + 5141: 0x830B, + 5142: 0x8354, + 5143: 0x831B, + 5144: 0x831D, + 5145: 0x831E, + 5146: 0x831F, + 5147: 0x8321, + 5148: 0x8322, + 5149: 0x832C, + 5150: 0x832D, + 5151: 0x832E, + 5152: 0x8330, + 5153: 0x8333, + 5154: 0x8337, + 5155: 0x833A, + 5156: 0x833C, + 5157: 0x833D, + 5158: 0x8342, + 5159: 0x8343, + 5160: 0x8344, + 5161: 0x8347, + 5162: 0x834D, + 5163: 0x834E, + 5164: 0x8351, + 5165: 0x8355, + 5166: 0x8356, + 5167: 0x8357, + 5168: 0x8370, + 5169: 0x8378, + 5170: 0x837D, + 5171: 0x837F, + 5172: 0x8380, + 5173: 0x8382, + 5174: 0x8384, + 5175: 0x8386, + 5176: 0x838D, + 5177: 0x8392, + 5178: 0x8394, + 5179: 0x8395, + 5180: 0x8398, + 5181: 0x8399, + 5182: 0x839B, + 5183: 0x839C, + 5184: 0x839D, + 5185: 0x83A6, + 5186: 0x83A7, + 5187: 0x83A9, + 5188: 0x83AC, + 5189: 0x83BE, + 5190: 0x83BF, + 5191: 0x83C0, + 5192: 0x83C7, + 5193: 0x83C9, + 5194: 0x83CF, + 5195: 0x83D0, + 5196: 0x83D1, + 5197: 0x83D4, + 5198: 0x83DD, + 5199: 0x8353, + 5200: 0x83E8, + 5201: 0x83EA, + 5202: 0x83F6, + 5203: 0x83F8, + 5204: 0x83F9, + 5205: 0x83FC, + 5206: 0x8401, + 5207: 0x8406, + 5208: 0x840A, + 5209: 0x840F, + 5210: 0x8411, + 5211: 0x8415, + 5212: 0x8419, + 5213: 0x83AD, + 5214: 0x842F, + 5215: 0x8439, + 5216: 0x8445, + 5217: 0x8447, + 5218: 0x8448, + 5219: 0x844A, + 5220: 0x844D, + 5221: 0x844F, + 5222: 0x8451, + 5223: 0x8452, + 5224: 0x8456, + 5225: 0x8458, + 5226: 0x8459, + 5227: 0x845A, + 5228: 0x845C, + 5229: 0x8460, + 5230: 0x8464, + 5231: 0x8465, + 5232: 0x8467, + 5233: 0x846A, + 5234: 0x8470, + 5235: 0x8473, + 5236: 0x8474, + 5237: 0x8476, + 5238: 0x8478, + 5239: 0x847C, + 5240: 0x847D, + 5241: 0x8481, + 5242: 0x8485, + 5243: 0x8492, + 5244: 0x8493, + 5245: 0x8495, + 5246: 0x849E, + 5247: 0x84A6, + 5248: 0x84A8, + 5249: 0x84A9, + 5250: 0x84AA, + 5251: 0x84AF, + 5252: 0x84B1, + 5253: 0x84B4, + 5254: 0x84BA, + 5255: 0x84BD, + 5256: 0x84BE, + 5257: 0x84C0, + 5258: 0x84C2, + 5259: 0x84C7, + 5260: 0x84C8, + 5261: 0x84CC, + 5262: 0x84CF, + 5263: 0x84D3, + 5264: 0x84DC, + 5265: 0x84E7, + 5266: 0x84EA, + 5267: 0x84EF, + 5268: 0x84F0, + 5269: 0x84F1, + 5270: 0x84F2, + 5271: 0x84F7, + 5272: 0x8532, + 5273: 0x84FA, + 5274: 0x84FB, + 5275: 0x84FD, + 5276: 0x8502, + 5277: 0x8503, + 5278: 0x8507, + 5279: 0x850C, + 5280: 0x850E, + 5281: 0x8510, + 5282: 0x851C, + 5283: 0x851E, + 5284: 0x8522, + 5285: 0x8523, + 5286: 0x8524, + 5287: 0x8525, + 5288: 0x8527, + 5289: 0x852A, + 5290: 0x852B, + 5291: 0x852F, + 5292: 0x8533, + 5293: 0x8534, + 5294: 0x8536, + 5295: 0x853F, + 5296: 0x8546, + 5297: 0x854F, + 5298: 0x8550, + 5299: 0x8551, + 5300: 0x8552, + 5301: 0x8553, + 5302: 0x8556, + 5303: 0x8559, + 5304: 0x855C, + 5305: 0x855D, + 5306: 0x855E, + 5307: 0x855F, + 5308: 0x8560, + 5309: 0x8561, + 5310: 0x8562, + 5311: 0x8564, + 5312: 0x856B, + 5313: 0x856F, + 5314: 0x8579, + 5315: 0x857A, + 5316: 0x857B, + 5317: 0x857D, + 5318: 0x857F, + 5319: 0x8581, + 5320: 0x8585, + 5321: 0x8586, + 5322: 0x8589, + 5323: 0x858B, + 5324: 0x858C, + 5325: 0x858F, + 5326: 0x8593, + 5327: 0x8598, + 5328: 0x859D, + 5329: 0x859F, + 5330: 0x85A0, + 5331: 0x85A2, + 5332: 0x85A5, + 5333: 0x85A7, + 5334: 0x85B4, + 5335: 0x85B6, + 5336: 0x85B7, + 5337: 0x85B8, + 5338: 0x85BC, + 5339: 0x85BD, + 5340: 0x85BE, + 5341: 0x85BF, + 5342: 0x85C2, + 5343: 0x85C7, + 5344: 0x85CA, + 5345: 0x85CB, + 5346: 0x85CE, + 5347: 0x85AD, + 5348: 0x85D8, + 5349: 0x85DA, + 5350: 0x85DF, + 5351: 0x85E0, + 5352: 0x85E6, + 5353: 0x85E8, + 5354: 0x85ED, + 5355: 0x85F3, + 5356: 0x85F6, + 5357: 0x85FC, + 5358: 0x85FF, + 5359: 0x8600, + 5360: 0x8604, + 5361: 0x8605, + 5362: 0x860D, + 5363: 0x860E, + 5364: 0x8610, + 5365: 0x8611, + 5366: 0x8612, + 5367: 0x8618, + 5368: 0x8619, + 5369: 0x861B, + 5370: 0x861E, + 5371: 0x8621, + 5372: 0x8627, + 5373: 0x8629, + 5374: 0x8636, + 5375: 0x8638, + 5376: 0x863A, + 5377: 0x863C, + 5378: 0x863D, + 5379: 0x8640, + 5380: 0x8642, + 5381: 0x8646, + 5382: 0x8652, + 5383: 0x8653, + 5384: 0x8656, + 5385: 0x8657, + 5386: 0x8658, + 5387: 0x8659, + 5388: 0x865D, + 5389: 0x8660, + 5390: 0x8661, + 5391: 0x8662, + 5392: 0x8663, + 5393: 0x8664, + 5394: 0x8669, + 5395: 0x866C, + 5396: 0x866F, + 5397: 0x8675, + 5398: 0x8676, + 5399: 0x8677, + 5400: 0x867A, + 5401: 0x868D, + 5402: 0x8691, + 5403: 0x8696, + 5404: 0x8698, + 5405: 0x869A, + 5406: 0x869C, + 5407: 0x86A1, + 5408: 0x86A6, + 5409: 0x86A7, + 5410: 0x86A8, + 5411: 0x86AD, + 5412: 0x86B1, + 5413: 0x86B3, + 5414: 0x86B4, + 5415: 0x86B5, + 5416: 0x86B7, + 5417: 0x86B8, + 5418: 0x86B9, + 5419: 0x86BF, + 5420: 0x86C0, + 5421: 0x86C1, + 5422: 0x86C3, + 5423: 0x86C5, + 5424: 0x86D1, + 5425: 0x86D2, + 5426: 0x86D5, + 5427: 0x86D7, + 5428: 0x86DA, + 5429: 0x86DC, + 5430: 0x86E0, + 5431: 0x86E3, + 5432: 0x86E5, + 5433: 0x86E7, + 5434: 0x8688, + 5435: 0x86FA, + 5436: 0x86FC, + 5437: 0x86FD, + 5438: 0x8704, + 5439: 0x8705, + 5440: 0x8707, + 5441: 0x870B, + 5442: 0x870E, + 5443: 0x870F, + 5444: 0x8710, + 5445: 0x8713, + 5446: 0x8714, + 5447: 0x8719, + 5448: 0x871E, + 5449: 0x871F, + 5450: 0x8721, + 5451: 0x8723, + 5452: 0x8728, + 5453: 0x872E, + 5454: 0x872F, + 5455: 0x8731, + 5456: 0x8732, + 5457: 0x8739, + 5458: 0x873A, + 5459: 0x873C, + 5460: 0x873D, + 5461: 0x873E, + 5462: 0x8740, + 5463: 0x8743, + 5464: 0x8745, + 5465: 0x874D, + 5466: 0x8758, + 5467: 0x875D, + 5468: 0x8761, + 5469: 0x8764, + 5470: 0x8765, + 5471: 0x876F, + 5472: 0x8771, + 5473: 0x8772, + 5474: 0x877B, + 5475: 0x8783, + 5476: 0x8784, + 5477: 0x8785, + 5478: 0x8786, + 5479: 0x8787, + 5480: 0x8788, + 5481: 0x8789, + 5482: 0x878B, + 5483: 0x878C, + 5484: 0x8790, + 5485: 0x8793, + 5486: 0x8795, + 5487: 0x8797, + 5488: 0x8798, + 5489: 0x8799, + 5490: 0x879E, + 5491: 0x87A0, + 5492: 0x87A3, + 5493: 0x87A7, + 5494: 0x87AC, + 5495: 0x87AD, + 5496: 0x87AE, + 5497: 0x87B1, + 5498: 0x87B5, + 5499: 0x87BE, + 5500: 0x87BF, + 5501: 0x87C1, + 5502: 0x87C8, + 5503: 0x87C9, + 5504: 0x87CA, + 5505: 0x87CE, + 5506: 0x87D5, + 5507: 0x87D6, + 5508: 0x87D9, + 5509: 0x87DA, + 5510: 0x87DC, + 5511: 0x87DF, + 5512: 0x87E2, + 5513: 0x87E3, + 5514: 0x87E4, + 5515: 0x87EA, + 5516: 0x87EB, + 5517: 0x87ED, + 5518: 0x87F1, + 5519: 0x87F3, + 5520: 0x87F8, + 5521: 0x87FA, + 5522: 0x87FF, + 5523: 0x8801, + 5524: 0x8803, + 5525: 0x8806, + 5526: 0x8809, + 5527: 0x880A, + 5528: 0x880B, + 5529: 0x8810, + 5530: 0x8819, + 5531: 0x8812, + 5532: 0x8813, + 5533: 0x8814, + 5534: 0x8818, + 5535: 0x881A, + 5536: 0x881B, + 5537: 0x881C, + 5538: 0x881E, + 5539: 0x881F, + 5540: 0x8828, + 5541: 0x882D, + 5542: 0x882E, + 5543: 0x8830, + 5544: 0x8832, + 5545: 0x8835, + 5546: 0x883A, + 5547: 0x883C, + 5548: 0x8841, + 5549: 0x8843, + 5550: 0x8845, + 5551: 0x8848, + 5552: 0x8849, + 5553: 0x884A, + 5554: 0x884B, + 5555: 0x884E, + 5556: 0x8851, + 5557: 0x8855, + 5558: 0x8856, + 5559: 0x8858, + 5560: 0x885A, + 5561: 0x885C, + 5562: 0x885F, + 5563: 0x8860, + 5564: 0x8864, + 5565: 0x8869, + 5566: 0x8871, + 5567: 0x8879, + 5568: 0x887B, + 5569: 0x8880, + 5570: 0x8898, + 5571: 0x889A, + 5572: 0x889B, + 5573: 0x889C, + 5574: 0x889F, + 5575: 0x88A0, + 5576: 0x88A8, + 5577: 0x88AA, + 5578: 0x88BA, + 5579: 0x88BD, + 5580: 0x88BE, + 5581: 0x88C0, + 5582: 0x88CA, + 5583: 0x88CB, + 5584: 0x88CC, + 5585: 0x88CD, + 5586: 0x88CE, + 5587: 0x88D1, + 5588: 0x88D2, + 5589: 0x88D3, + 5590: 0x88DB, + 5591: 0x88DE, + 5592: 0x88E7, + 5593: 0x88EF, + 5594: 0x88F0, + 5595: 0x88F1, + 5596: 0x88F5, + 5597: 0x88F7, + 5598: 0x8901, + 5599: 0x8906, + 5600: 0x890D, + 5601: 0x890E, + 5602: 0x890F, + 5603: 0x8915, + 5604: 0x8916, + 5605: 0x8918, + 5606: 0x8919, + 5607: 0x891A, + 5608: 0x891C, + 5609: 0x8920, + 5610: 0x8926, + 5611: 0x8927, + 5612: 0x8928, + 5613: 0x8930, + 5614: 0x8931, + 5615: 0x8932, + 5616: 0x8935, + 5617: 0x8939, + 5618: 0x893A, + 5619: 0x893E, + 5620: 0x8940, + 5621: 0x8942, + 5622: 0x8945, + 5623: 0x8946, + 5624: 0x8949, + 5625: 0x894F, + 5626: 0x8952, + 5627: 0x8957, + 5628: 0x895A, + 5629: 0x895B, + 5630: 0x895C, + 5631: 0x8961, + 5632: 0x8962, + 5633: 0x8963, + 5634: 0x896B, + 5635: 0x896E, + 5636: 0x8970, + 5637: 0x8973, + 5638: 0x8975, + 5639: 0x897A, + 5640: 0x897B, + 5641: 0x897C, + 5642: 0x897D, + 5643: 0x8989, + 5644: 0x898D, + 5645: 0x8990, + 5646: 0x8994, + 5647: 0x8995, + 5648: 0x899B, + 5649: 0x899C, + 5650: 0x899F, + 5651: 0x89A0, + 5652: 0x89A5, + 5653: 0x89B0, + 5654: 0x89B4, + 5655: 0x89B5, + 5656: 0x89B6, + 5657: 0x89B7, + 5658: 0x89BC, + 5659: 0x89D4, + 5660: 0x89D5, + 5661: 0x89D6, + 5662: 0x89D7, + 5663: 0x89D8, + 5664: 0x89E5, + 5665: 0x89E9, + 5666: 0x89EB, + 5667: 0x89ED, + 5668: 0x89F1, + 5669: 0x89F3, + 5670: 0x89F6, + 5671: 0x89F9, + 5672: 0x89FD, + 5673: 0x89FF, + 5674: 0x8A04, + 5675: 0x8A05, + 5676: 0x8A07, + 5677: 0x8A0F, + 5678: 0x8A11, + 5679: 0x8A12, + 5680: 0x8A14, + 5681: 0x8A15, + 5682: 0x8A1E, + 5683: 0x8A20, + 5684: 0x8A22, + 5685: 0x8A24, + 5686: 0x8A26, + 5687: 0x8A2B, + 5688: 0x8A2C, + 5689: 0x8A2F, + 5690: 0x8A35, + 5691: 0x8A37, + 5692: 0x8A3D, + 5693: 0x8A3E, + 5694: 0x8A40, + 5695: 0x8A43, + 5696: 0x8A45, + 5697: 0x8A47, + 5698: 0x8A49, + 5699: 0x8A4D, + 5700: 0x8A4E, + 5701: 0x8A53, + 5702: 0x8A56, + 5703: 0x8A57, + 5704: 0x8A58, + 5705: 0x8A5C, + 5706: 0x8A5D, + 5707: 0x8A61, + 5708: 0x8A65, + 5709: 0x8A67, + 5710: 0x8A75, + 5711: 0x8A76, + 5712: 0x8A77, + 5713: 0x8A79, + 5714: 0x8A7A, + 5715: 0x8A7B, + 5716: 0x8A7E, + 5717: 0x8A7F, + 5718: 0x8A80, + 5719: 0x8A83, + 5720: 0x8A86, + 5721: 0x8A8B, + 5722: 0x8A8F, + 5723: 0x8A90, + 5724: 0x8A92, + 5725: 0x8A96, + 5726: 0x8A97, + 5727: 0x8A99, + 5728: 0x8A9F, + 5729: 0x8AA7, + 5730: 0x8AA9, + 5731: 0x8AAE, + 5732: 0x8AAF, + 5733: 0x8AB3, + 5734: 0x8AB6, + 5735: 0x8AB7, + 5736: 0x8ABB, + 5737: 0x8ABE, + 5738: 0x8AC3, + 5739: 0x8AC6, + 5740: 0x8AC8, + 5741: 0x8AC9, + 5742: 0x8ACA, + 5743: 0x8AD1, + 5744: 0x8AD3, + 5745: 0x8AD4, + 5746: 0x8AD5, + 5747: 0x8AD7, + 5748: 0x8ADD, + 5749: 0x8ADF, + 5750: 0x8AEC, + 5751: 0x8AF0, + 5752: 0x8AF4, + 5753: 0x8AF5, + 5754: 0x8AF6, + 5755: 0x8AFC, + 5756: 0x8AFF, + 5757: 0x8B05, + 5758: 0x8B06, + 5759: 0x8B0B, + 5760: 0x8B11, + 5761: 0x8B1C, + 5762: 0x8B1E, + 5763: 0x8B1F, + 5764: 0x8B0A, + 5765: 0x8B2D, + 5766: 0x8B30, + 5767: 0x8B37, + 5768: 0x8B3C, + 5769: 0x8B42, + 5770: 0x8B43, + 5771: 0x8B44, + 5772: 0x8B45, + 5773: 0x8B46, + 5774: 0x8B48, + 5775: 0x8B52, + 5776: 0x8B53, + 5777: 0x8B54, + 5778: 0x8B59, + 5779: 0x8B4D, + 5780: 0x8B5E, + 5781: 0x8B63, + 5782: 0x8B6D, + 5783: 0x8B76, + 5784: 0x8B78, + 5785: 0x8B79, + 5786: 0x8B7C, + 5787: 0x8B7E, + 5788: 0x8B81, + 5789: 0x8B84, + 5790: 0x8B85, + 5791: 0x8B8B, + 5792: 0x8B8D, + 5793: 0x8B8F, + 5794: 0x8B94, + 5795: 0x8B95, + 5796: 0x8B9C, + 5797: 0x8B9E, + 5798: 0x8B9F, + 5799: 0x8C38, + 5800: 0x8C39, + 5801: 0x8C3D, + 5802: 0x8C3E, + 5803: 0x8C45, + 5804: 0x8C47, + 5805: 0x8C49, + 5806: 0x8C4B, + 5807: 0x8C4F, + 5808: 0x8C51, + 5809: 0x8C53, + 5810: 0x8C54, + 5811: 0x8C57, + 5812: 0x8C58, + 5813: 0x8C5B, + 5814: 0x8C5D, + 5815: 0x8C59, + 5816: 0x8C63, + 5817: 0x8C64, + 5818: 0x8C66, + 5819: 0x8C68, + 5820: 0x8C69, + 5821: 0x8C6D, + 5822: 0x8C73, + 5823: 0x8C75, + 5824: 0x8C76, + 5825: 0x8C7B, + 5826: 0x8C7E, + 5827: 0x8C86, + 5828: 0x8C87, + 5829: 0x8C8B, + 5830: 0x8C90, + 5831: 0x8C92, + 5832: 0x8C93, + 5833: 0x8C99, + 5834: 0x8C9B, + 5835: 0x8C9C, + 5836: 0x8CA4, + 5837: 0x8CB9, + 5838: 0x8CBA, + 5839: 0x8CC5, + 5840: 0x8CC6, + 5841: 0x8CC9, + 5842: 0x8CCB, + 5843: 0x8CCF, + 5844: 0x8CD6, + 5845: 0x8CD5, + 5846: 0x8CD9, + 5847: 0x8CDD, + 5848: 0x8CE1, + 5849: 0x8CE8, + 5850: 0x8CEC, + 5851: 0x8CEF, + 5852: 0x8CF0, + 5853: 0x8CF2, + 5854: 0x8CF5, + 5855: 0x8CF7, + 5856: 0x8CF8, + 5857: 0x8CFE, + 5858: 0x8CFF, + 5859: 0x8D01, + 5860: 0x8D03, + 5861: 0x8D09, + 5862: 0x8D12, + 5863: 0x8D17, + 5864: 0x8D1B, + 5865: 0x8D65, + 5866: 0x8D69, + 5867: 0x8D6C, + 5868: 0x8D6E, + 5869: 0x8D7F, + 5870: 0x8D82, + 5871: 0x8D84, + 5872: 0x8D88, + 5873: 0x8D8D, + 5874: 0x8D90, + 5875: 0x8D91, + 5876: 0x8D95, + 5877: 0x8D9E, + 5878: 0x8D9F, + 5879: 0x8DA0, + 5880: 0x8DA6, + 5881: 0x8DAB, + 5882: 0x8DAC, + 5883: 0x8DAF, + 5884: 0x8DB2, + 5885: 0x8DB5, + 5886: 0x8DB7, + 5887: 0x8DB9, + 5888: 0x8DBB, + 5889: 0x8DC0, + 5890: 0x8DC5, + 5891: 0x8DC6, + 5892: 0x8DC7, + 5893: 0x8DC8, + 5894: 0x8DCA, + 5895: 0x8DCE, + 5896: 0x8DD1, + 5897: 0x8DD4, + 5898: 0x8DD5, + 5899: 0x8DD7, + 5900: 0x8DD9, + 5901: 0x8DE4, + 5902: 0x8DE5, + 5903: 0x8DE7, + 5904: 0x8DEC, + 5905: 0x8DF0, + 5906: 0x8DBC, + 5907: 0x8DF1, + 5908: 0x8DF2, + 5909: 0x8DF4, + 5910: 0x8DFD, + 5911: 0x8E01, + 5912: 0x8E04, + 5913: 0x8E05, + 5914: 0x8E06, + 5915: 0x8E0B, + 5916: 0x8E11, + 5917: 0x8E14, + 5918: 0x8E16, + 5919: 0x8E20, + 5920: 0x8E21, + 5921: 0x8E22, + 5922: 0x8E23, + 5923: 0x8E26, + 5924: 0x8E27, + 5925: 0x8E31, + 5926: 0x8E33, + 5927: 0x8E36, + 5928: 0x8E37, + 5929: 0x8E38, + 5930: 0x8E39, + 5931: 0x8E3D, + 5932: 0x8E40, + 5933: 0x8E41, + 5934: 0x8E4B, + 5935: 0x8E4D, + 5936: 0x8E4E, + 5937: 0x8E4F, + 5938: 0x8E54, + 5939: 0x8E5B, + 5940: 0x8E5C, + 5941: 0x8E5D, + 5942: 0x8E5E, + 5943: 0x8E61, + 5944: 0x8E62, + 5945: 0x8E69, + 5946: 0x8E6C, + 5947: 0x8E6D, + 5948: 0x8E6F, + 5949: 0x8E70, + 5950: 0x8E71, + 5951: 0x8E79, + 5952: 0x8E7A, + 5953: 0x8E7B, + 5954: 0x8E82, + 5955: 0x8E83, + 5956: 0x8E89, + 5957: 0x8E90, + 5958: 0x8E92, + 5959: 0x8E95, + 5960: 0x8E9A, + 5961: 0x8E9B, + 5962: 0x8E9D, + 5963: 0x8E9E, + 5964: 0x8EA2, + 5965: 0x8EA7, + 5966: 0x8EA9, + 5967: 0x8EAD, + 5968: 0x8EAE, + 5969: 0x8EB3, + 5970: 0x8EB5, + 5971: 0x8EBA, + 5972: 0x8EBB, + 5973: 0x8EC0, + 5974: 0x8EC1, + 5975: 0x8EC3, + 5976: 0x8EC4, + 5977: 0x8EC7, + 5978: 0x8ECF, + 5979: 0x8ED1, + 5980: 0x8ED4, + 5981: 0x8EDC, + 5982: 0x8EE8, + 5983: 0x8EEE, + 5984: 0x8EF0, + 5985: 0x8EF1, + 5986: 0x8EF7, + 5987: 0x8EF9, + 5988: 0x8EFA, + 5989: 0x8EED, + 5990: 0x8F00, + 5991: 0x8F02, + 5992: 0x8F07, + 5993: 0x8F08, + 5994: 0x8F0F, + 5995: 0x8F10, + 5996: 0x8F16, + 5997: 0x8F17, + 5998: 0x8F18, + 5999: 0x8F1E, + 6000: 0x8F20, + 6001: 0x8F21, + 6002: 0x8F23, + 6003: 0x8F25, + 6004: 0x8F27, + 6005: 0x8F28, + 6006: 0x8F2C, + 6007: 0x8F2D, + 6008: 0x8F2E, + 6009: 0x8F34, + 6010: 0x8F35, + 6011: 0x8F36, + 6012: 0x8F37, + 6013: 0x8F3A, + 6014: 0x8F40, + 6015: 0x8F41, + 6016: 0x8F43, + 6017: 0x8F47, + 6018: 0x8F4F, + 6019: 0x8F51, + 6020: 0x8F52, + 6021: 0x8F53, + 6022: 0x8F54, + 6023: 0x8F55, + 6024: 0x8F58, + 6025: 0x8F5D, + 6026: 0x8F5E, + 6027: 0x8F65, + 6028: 0x8F9D, + 6029: 0x8FA0, + 6030: 0x8FA1, + 6031: 0x8FA4, + 6032: 0x8FA5, + 6033: 0x8FA6, + 6034: 0x8FB5, + 6035: 0x8FB6, + 6036: 0x8FB8, + 6037: 0x8FBE, + 6038: 0x8FC0, + 6039: 0x8FC1, + 6040: 0x8FC6, + 6041: 0x8FCA, + 6042: 0x8FCB, + 6043: 0x8FCD, + 6044: 0x8FD0, + 6045: 0x8FD2, + 6046: 0x8FD3, + 6047: 0x8FD5, + 6048: 0x8FE0, + 6049: 0x8FE3, + 6050: 0x8FE4, + 6051: 0x8FE8, + 6052: 0x8FEE, + 6053: 0x8FF1, + 6054: 0x8FF5, + 6055: 0x8FF6, + 6056: 0x8FFB, + 6057: 0x8FFE, + 6058: 0x9002, + 6059: 0x9004, + 6060: 0x9008, + 6061: 0x900C, + 6062: 0x9018, + 6063: 0x901B, + 6064: 0x9028, + 6065: 0x9029, + 6066: 0x902F, + 6067: 0x902A, + 6068: 0x902C, + 6069: 0x902D, + 6070: 0x9033, + 6071: 0x9034, + 6072: 0x9037, + 6073: 0x903F, + 6074: 0x9043, + 6075: 0x9044, + 6076: 0x904C, + 6077: 0x905B, + 6078: 0x905D, + 6079: 0x9062, + 6080: 0x9066, + 6081: 0x9067, + 6082: 0x906C, + 6083: 0x9070, + 6084: 0x9074, + 6085: 0x9079, + 6086: 0x9085, + 6087: 0x9088, + 6088: 0x908B, + 6089: 0x908C, + 6090: 0x908E, + 6091: 0x9090, + 6092: 0x9095, + 6093: 0x9097, + 6094: 0x9098, + 6095: 0x9099, + 6096: 0x909B, + 6097: 0x90A0, + 6098: 0x90A1, + 6099: 0x90A2, + 6100: 0x90A5, + 6101: 0x90B0, + 6102: 0x90B2, + 6103: 0x90B3, + 6104: 0x90B4, + 6105: 0x90B6, + 6106: 0x90BD, + 6107: 0x90CC, + 6108: 0x90BE, + 6109: 0x90C3, + 6110: 0x90C4, + 6111: 0x90C5, + 6112: 0x90C7, + 6113: 0x90C8, + 6114: 0x90D5, + 6115: 0x90D7, + 6116: 0x90D8, + 6117: 0x90D9, + 6118: 0x90DC, + 6119: 0x90DD, + 6120: 0x90DF, + 6121: 0x90E5, + 6122: 0x90D2, + 6123: 0x90F6, + 6124: 0x90EB, + 6125: 0x90EF, + 6126: 0x90F0, + 6127: 0x90F4, + 6128: 0x90FE, + 6129: 0x90FF, + 6130: 0x9100, + 6131: 0x9104, + 6132: 0x9105, + 6133: 0x9106, + 6134: 0x9108, + 6135: 0x910D, + 6136: 0x9110, + 6137: 0x9114, + 6138: 0x9116, + 6139: 0x9117, + 6140: 0x9118, + 6141: 0x911A, + 6142: 0x911C, + 6143: 0x911E, + 6144: 0x9120, + 6145: 0x9125, + 6146: 0x9122, + 6147: 0x9123, + 6148: 0x9127, + 6149: 0x9129, + 6150: 0x912E, + 6151: 0x912F, + 6152: 0x9131, + 6153: 0x9134, + 6154: 0x9136, + 6155: 0x9137, + 6156: 0x9139, + 6157: 0x913A, + 6158: 0x913C, + 6159: 0x913D, + 6160: 0x9143, + 6161: 0x9147, + 6162: 0x9148, + 6163: 0x914F, + 6164: 0x9153, + 6165: 0x9157, + 6166: 0x9159, + 6167: 0x915A, + 6168: 0x915B, + 6169: 0x9161, + 6170: 0x9164, + 6171: 0x9167, + 6172: 0x916D, + 6173: 0x9174, + 6174: 0x9179, + 6175: 0x917A, + 6176: 0x917B, + 6177: 0x9181, + 6178: 0x9183, + 6179: 0x9185, + 6180: 0x9186, + 6181: 0x918A, + 6182: 0x918E, + 6183: 0x9191, + 6184: 0x9193, + 6185: 0x9194, + 6186: 0x9195, + 6187: 0x9198, + 6188: 0x919E, + 6189: 0x91A1, + 6190: 0x91A6, + 6191: 0x91A8, + 6192: 0x91AC, + 6193: 0x91AD, + 6194: 0x91AE, + 6195: 0x91B0, + 6196: 0x91B1, + 6197: 0x91B2, + 6198: 0x91B3, + 6199: 0x91B6, + 6200: 0x91BB, + 6201: 0x91BC, + 6202: 0x91BD, + 6203: 0x91BF, + 6204: 0x91C2, + 6205: 0x91C3, + 6206: 0x91C5, + 6207: 0x91D3, + 6208: 0x91D4, + 6209: 0x91D7, + 6210: 0x91D9, + 6211: 0x91DA, + 6212: 0x91DE, + 6213: 0x91E4, + 6214: 0x91E5, + 6215: 0x91E9, + 6216: 0x91EA, + 6217: 0x91EC, + 6218: 0x91ED, + 6219: 0x91EE, + 6220: 0x91EF, + 6221: 0x91F0, + 6222: 0x91F1, + 6223: 0x91F7, + 6224: 0x91F9, + 6225: 0x91FB, + 6226: 0x91FD, + 6227: 0x9200, + 6228: 0x9201, + 6229: 0x9204, + 6230: 0x9205, + 6231: 0x9206, + 6232: 0x9207, + 6233: 0x9209, + 6234: 0x920A, + 6235: 0x920C, + 6236: 0x9210, + 6237: 0x9212, + 6238: 0x9213, + 6239: 0x9216, + 6240: 0x9218, + 6241: 0x921C, + 6242: 0x921D, + 6243: 0x9223, + 6244: 0x9224, + 6245: 0x9225, + 6246: 0x9226, + 6247: 0x9228, + 6248: 0x922E, + 6249: 0x922F, + 6250: 0x9230, + 6251: 0x9233, + 6252: 0x9235, + 6253: 0x9236, + 6254: 0x9238, + 6255: 0x9239, + 6256: 0x923A, + 6257: 0x923C, + 6258: 0x923E, + 6259: 0x9240, + 6260: 0x9242, + 6261: 0x9243, + 6262: 0x9246, + 6263: 0x9247, + 6264: 0x924A, + 6265: 0x924D, + 6266: 0x924E, + 6267: 0x924F, + 6268: 0x9251, + 6269: 0x9258, + 6270: 0x9259, + 6271: 0x925C, + 6272: 0x925D, + 6273: 0x9260, + 6274: 0x9261, + 6275: 0x9265, + 6276: 0x9267, + 6277: 0x9268, + 6278: 0x9269, + 6279: 0x926E, + 6280: 0x926F, + 6281: 0x9270, + 6282: 0x9275, + 6283: 0x9276, + 6284: 0x9277, + 6285: 0x9278, + 6286: 0x9279, + 6287: 0x927B, + 6288: 0x927C, + 6289: 0x927D, + 6290: 0x927F, + 6291: 0x9288, + 6292: 0x9289, + 6293: 0x928A, + 6294: 0x928D, + 6295: 0x928E, + 6296: 0x9292, + 6297: 0x9297, + 6298: 0x9299, + 6299: 0x929F, + 6300: 0x92A0, + 6301: 0x92A4, + 6302: 0x92A5, + 6303: 0x92A7, + 6304: 0x92A8, + 6305: 0x92AB, + 6306: 0x92AF, + 6307: 0x92B2, + 6308: 0x92B6, + 6309: 0x92B8, + 6310: 0x92BA, + 6311: 0x92BB, + 6312: 0x92BC, + 6313: 0x92BD, + 6314: 0x92BF, + 6315: 0x92C0, + 6316: 0x92C1, + 6317: 0x92C2, + 6318: 0x92C3, + 6319: 0x92C5, + 6320: 0x92C6, + 6321: 0x92C7, + 6322: 0x92C8, + 6323: 0x92CB, + 6324: 0x92CC, + 6325: 0x92CD, + 6326: 0x92CE, + 6327: 0x92D0, + 6328: 0x92D3, + 6329: 0x92D5, + 6330: 0x92D7, + 6331: 0x92D8, + 6332: 0x92D9, + 6333: 0x92DC, + 6334: 0x92DD, + 6335: 0x92DF, + 6336: 0x92E0, + 6337: 0x92E1, + 6338: 0x92E3, + 6339: 0x92E5, + 6340: 0x92E7, + 6341: 0x92E8, + 6342: 0x92EC, + 6343: 0x92EE, + 6344: 0x92F0, + 6345: 0x92F9, + 6346: 0x92FB, + 6347: 0x92FF, + 6348: 0x9300, + 6349: 0x9302, + 6350: 0x9308, + 6351: 0x930D, + 6352: 0x9311, + 6353: 0x9314, + 6354: 0x9315, + 6355: 0x931C, + 6356: 0x931D, + 6357: 0x931E, + 6358: 0x931F, + 6359: 0x9321, + 6360: 0x9324, + 6361: 0x9325, + 6362: 0x9327, + 6363: 0x9329, + 6364: 0x932A, + 6365: 0x9333, + 6366: 0x9334, + 6367: 0x9336, + 6368: 0x9337, + 6369: 0x9347, + 6370: 0x9348, + 6371: 0x9349, + 6372: 0x9350, + 6373: 0x9351, + 6374: 0x9352, + 6375: 0x9355, + 6376: 0x9357, + 6377: 0x9358, + 6378: 0x935A, + 6379: 0x935E, + 6380: 0x9364, + 6381: 0x9365, + 6382: 0x9367, + 6383: 0x9369, + 6384: 0x936A, + 6385: 0x936D, + 6386: 0x936F, + 6387: 0x9370, + 6388: 0x9371, + 6389: 0x9373, + 6390: 0x9374, + 6391: 0x9376, + 6392: 0x937A, + 6393: 0x937D, + 6394: 0x937F, + 6395: 0x9380, + 6396: 0x9381, + 6397: 0x9382, + 6398: 0x9388, + 6399: 0x938A, + 6400: 0x938B, + 6401: 0x938D, + 6402: 0x938F, + 6403: 0x9392, + 6404: 0x9395, + 6405: 0x9398, + 6406: 0x939B, + 6407: 0x939E, + 6408: 0x93A1, + 6409: 0x93A3, + 6410: 0x93A4, + 6411: 0x93A6, + 6412: 0x93A8, + 6413: 0x93AB, + 6414: 0x93B4, + 6415: 0x93B5, + 6416: 0x93B6, + 6417: 0x93BA, + 6418: 0x93A9, + 6419: 0x93C1, + 6420: 0x93C4, + 6421: 0x93C5, + 6422: 0x93C6, + 6423: 0x93C7, + 6424: 0x93C9, + 6425: 0x93CA, + 6426: 0x93CB, + 6427: 0x93CC, + 6428: 0x93CD, + 6429: 0x93D3, + 6430: 0x93D9, + 6431: 0x93DC, + 6432: 0x93DE, + 6433: 0x93DF, + 6434: 0x93E2, + 6435: 0x93E6, + 6436: 0x93E7, + 6437: 0x93F9, + 6438: 0x93F7, + 6439: 0x93F8, + 6440: 0x93FA, + 6441: 0x93FB, + 6442: 0x93FD, + 6443: 0x9401, + 6444: 0x9402, + 6445: 0x9404, + 6446: 0x9408, + 6447: 0x9409, + 6448: 0x940D, + 6449: 0x940E, + 6450: 0x940F, + 6451: 0x9415, + 6452: 0x9416, + 6453: 0x9417, + 6454: 0x941F, + 6455: 0x942E, + 6456: 0x942F, + 6457: 0x9431, + 6458: 0x9432, + 6459: 0x9433, + 6460: 0x9434, + 6461: 0x943B, + 6462: 0x943F, + 6463: 0x943D, + 6464: 0x9443, + 6465: 0x9445, + 6466: 0x9448, + 6467: 0x944A, + 6468: 0x944C, + 6469: 0x9455, + 6470: 0x9459, + 6471: 0x945C, + 6472: 0x945F, + 6473: 0x9461, + 6474: 0x9463, + 6475: 0x9468, + 6476: 0x946B, + 6477: 0x946D, + 6478: 0x946E, + 6479: 0x946F, + 6480: 0x9471, + 6481: 0x9472, + 6482: 0x9484, + 6483: 0x9483, + 6484: 0x9578, + 6485: 0x9579, + 6486: 0x957E, + 6487: 0x9584, + 6488: 0x9588, + 6489: 0x958C, + 6490: 0x958D, + 6491: 0x958E, + 6492: 0x959D, + 6493: 0x959E, + 6494: 0x959F, + 6495: 0x95A1, + 6496: 0x95A6, + 6497: 0x95A9, + 6498: 0x95AB, + 6499: 0x95AC, + 6500: 0x95B4, + 6501: 0x95B6, + 6502: 0x95BA, + 6503: 0x95BD, + 6504: 0x95BF, + 6505: 0x95C6, + 6506: 0x95C8, + 6507: 0x95C9, + 6508: 0x95CB, + 6509: 0x95D0, + 6510: 0x95D1, + 6511: 0x95D2, + 6512: 0x95D3, + 6513: 0x95D9, + 6514: 0x95DA, + 6515: 0x95DD, + 6516: 0x95DE, + 6517: 0x95DF, + 6518: 0x95E0, + 6519: 0x95E4, + 6520: 0x95E6, + 6521: 0x961D, + 6522: 0x961E, + 6523: 0x9622, + 6524: 0x9624, + 6525: 0x9625, + 6526: 0x9626, + 6527: 0x962C, + 6528: 0x9631, + 6529: 0x9633, + 6530: 0x9637, + 6531: 0x9638, + 6532: 0x9639, + 6533: 0x963A, + 6534: 0x963C, + 6535: 0x963D, + 6536: 0x9641, + 6537: 0x9652, + 6538: 0x9654, + 6539: 0x9656, + 6540: 0x9657, + 6541: 0x9658, + 6542: 0x9661, + 6543: 0x966E, + 6544: 0x9674, + 6545: 0x967B, + 6546: 0x967C, + 6547: 0x967E, + 6548: 0x967F, + 6549: 0x9681, + 6550: 0x9682, + 6551: 0x9683, + 6552: 0x9684, + 6553: 0x9689, + 6554: 0x9691, + 6555: 0x9696, + 6556: 0x969A, + 6557: 0x969D, + 6558: 0x969F, + 6559: 0x96A4, + 6560: 0x96A5, + 6561: 0x96A6, + 6562: 0x96A9, + 6563: 0x96AE, + 6564: 0x96AF, + 6565: 0x96B3, + 6566: 0x96BA, + 6567: 0x96CA, + 6568: 0x96D2, + 6569: 0x5DB2, + 6570: 0x96D8, + 6571: 0x96DA, + 6572: 0x96DD, + 6573: 0x96DE, + 6574: 0x96DF, + 6575: 0x96E9, + 6576: 0x96EF, + 6577: 0x96F1, + 6578: 0x96FA, + 6579: 0x9702, + 6580: 0x9703, + 6581: 0x9705, + 6582: 0x9709, + 6583: 0x971A, + 6584: 0x971B, + 6585: 0x971D, + 6586: 0x9721, + 6587: 0x9722, + 6588: 0x9723, + 6589: 0x9728, + 6590: 0x9731, + 6591: 0x9733, + 6592: 0x9741, + 6593: 0x9743, + 6594: 0x974A, + 6595: 0x974E, + 6596: 0x974F, + 6597: 0x9755, + 6598: 0x9757, + 6599: 0x9758, + 6600: 0x975A, + 6601: 0x975B, + 6602: 0x9763, + 6603: 0x9767, + 6604: 0x976A, + 6605: 0x976E, + 6606: 0x9773, + 6607: 0x9776, + 6608: 0x9777, + 6609: 0x9778, + 6610: 0x977B, + 6611: 0x977D, + 6612: 0x977F, + 6613: 0x9780, + 6614: 0x9789, + 6615: 0x9795, + 6616: 0x9796, + 6617: 0x9797, + 6618: 0x9799, + 6619: 0x979A, + 6620: 0x979E, + 6621: 0x979F, + 6622: 0x97A2, + 6623: 0x97AC, + 6624: 0x97AE, + 6625: 0x97B1, + 6626: 0x97B2, + 6627: 0x97B5, + 6628: 0x97B6, + 6629: 0x97B8, + 6630: 0x97B9, + 6631: 0x97BA, + 6632: 0x97BC, + 6633: 0x97BE, + 6634: 0x97BF, + 6635: 0x97C1, + 6636: 0x97C4, + 6637: 0x97C5, + 6638: 0x97C7, + 6639: 0x97C9, + 6640: 0x97CA, + 6641: 0x97CC, + 6642: 0x97CD, + 6643: 0x97CE, + 6644: 0x97D0, + 6645: 0x97D1, + 6646: 0x97D4, + 6647: 0x97D7, + 6648: 0x97D8, + 6649: 0x97D9, + 6650: 0x97DD, + 6651: 0x97DE, + 6652: 0x97E0, + 6653: 0x97DB, + 6654: 0x97E1, + 6655: 0x97E4, + 6656: 0x97EF, + 6657: 0x97F1, + 6658: 0x97F4, + 6659: 0x97F7, + 6660: 0x97F8, + 6661: 0x97FA, + 6662: 0x9807, + 6663: 0x980A, + 6664: 0x9819, + 6665: 0x980D, + 6666: 0x980E, + 6667: 0x9814, + 6668: 0x9816, + 6669: 0x981C, + 6670: 0x981E, + 6671: 0x9820, + 6672: 0x9823, + 6673: 0x9826, + 6674: 0x982B, + 6675: 0x982E, + 6676: 0x982F, + 6677: 0x9830, + 6678: 0x9832, + 6679: 0x9833, + 6680: 0x9835, + 6681: 0x9825, + 6682: 0x983E, + 6683: 0x9844, + 6684: 0x9847, + 6685: 0x984A, + 6686: 0x9851, + 6687: 0x9852, + 6688: 0x9853, + 6689: 0x9856, + 6690: 0x9857, + 6691: 0x9859, + 6692: 0x985A, + 6693: 0x9862, + 6694: 0x9863, + 6695: 0x9865, + 6696: 0x9866, + 6697: 0x986A, + 6698: 0x986C, + 6699: 0x98AB, + 6700: 0x98AD, + 6701: 0x98AE, + 6702: 0x98B0, + 6703: 0x98B4, + 6704: 0x98B7, + 6705: 0x98B8, + 6706: 0x98BA, + 6707: 0x98BB, + 6708: 0x98BF, + 6709: 0x98C2, + 6710: 0x98C5, + 6711: 0x98C8, + 6712: 0x98CC, + 6713: 0x98E1, + 6714: 0x98E3, + 6715: 0x98E5, + 6716: 0x98E6, + 6717: 0x98E7, + 6718: 0x98EA, + 6719: 0x98F3, + 6720: 0x98F6, + 6721: 0x9902, + 6722: 0x9907, + 6723: 0x9908, + 6724: 0x9911, + 6725: 0x9915, + 6726: 0x9916, + 6727: 0x9917, + 6728: 0x991A, + 6729: 0x991B, + 6730: 0x991C, + 6731: 0x991F, + 6732: 0x9922, + 6733: 0x9926, + 6734: 0x9927, + 6735: 0x992B, + 6736: 0x9931, + 6737: 0x9932, + 6738: 0x9933, + 6739: 0x9934, + 6740: 0x9935, + 6741: 0x9939, + 6742: 0x993A, + 6743: 0x993B, + 6744: 0x993C, + 6745: 0x9940, + 6746: 0x9941, + 6747: 0x9946, + 6748: 0x9947, + 6749: 0x9948, + 6750: 0x994D, + 6751: 0x994E, + 6752: 0x9954, + 6753: 0x9958, + 6754: 0x9959, + 6755: 0x995B, + 6756: 0x995C, + 6757: 0x995E, + 6758: 0x995F, + 6759: 0x9960, + 6760: 0x999B, + 6761: 0x999D, + 6762: 0x999F, + 6763: 0x99A6, + 6764: 0x99B0, + 6765: 0x99B1, + 6766: 0x99B2, + 6767: 0x99B5, + 6768: 0x99B9, + 6769: 0x99BA, + 6770: 0x99BD, + 6771: 0x99BF, + 6772: 0x99C3, + 6773: 0x99C9, + 6774: 0x99D3, + 6775: 0x99D4, + 6776: 0x99D9, + 6777: 0x99DA, + 6778: 0x99DC, + 6779: 0x99DE, + 6780: 0x99E7, + 6781: 0x99EA, + 6782: 0x99EB, + 6783: 0x99EC, + 6784: 0x99F0, + 6785: 0x99F4, + 6786: 0x99F5, + 6787: 0x99F9, + 6788: 0x99FD, + 6789: 0x99FE, + 6790: 0x9A02, + 6791: 0x9A03, + 6792: 0x9A04, + 6793: 0x9A0B, + 6794: 0x9A0C, + 6795: 0x9A10, + 6796: 0x9A11, + 6797: 0x9A16, + 6798: 0x9A1E, + 6799: 0x9A20, + 6800: 0x9A22, + 6801: 0x9A23, + 6802: 0x9A24, + 6803: 0x9A27, + 6804: 0x9A2D, + 6805: 0x9A2E, + 6806: 0x9A33, + 6807: 0x9A35, + 6808: 0x9A36, + 6809: 0x9A38, + 6810: 0x9A47, + 6811: 0x9A41, + 6812: 0x9A44, + 6813: 0x9A4A, + 6814: 0x9A4B, + 6815: 0x9A4C, + 6816: 0x9A4E, + 6817: 0x9A51, + 6818: 0x9A54, + 6819: 0x9A56, + 6820: 0x9A5D, + 6821: 0x9AAA, + 6822: 0x9AAC, + 6823: 0x9AAE, + 6824: 0x9AAF, + 6825: 0x9AB2, + 6826: 0x9AB4, + 6827: 0x9AB5, + 6828: 0x9AB6, + 6829: 0x9AB9, + 6830: 0x9ABB, + 6831: 0x9ABE, + 6832: 0x9ABF, + 6833: 0x9AC1, + 6834: 0x9AC3, + 6835: 0x9AC6, + 6836: 0x9AC8, + 6837: 0x9ACE, + 6838: 0x9AD0, + 6839: 0x9AD2, + 6840: 0x9AD5, + 6841: 0x9AD6, + 6842: 0x9AD7, + 6843: 0x9ADB, + 6844: 0x9ADC, + 6845: 0x9AE0, + 6846: 0x9AE4, + 6847: 0x9AE5, + 6848: 0x9AE7, + 6849: 0x9AE9, + 6850: 0x9AEC, + 6851: 0x9AF2, + 6852: 0x9AF3, + 6853: 0x9AF5, + 6854: 0x9AF9, + 6855: 0x9AFA, + 6856: 0x9AFD, + 6857: 0x9AFF, + 6858: 0x9B00, + 6859: 0x9B01, + 6860: 0x9B02, + 6861: 0x9B03, + 6862: 0x9B04, + 6863: 0x9B05, + 6864: 0x9B08, + 6865: 0x9B09, + 6866: 0x9B0B, + 6867: 0x9B0C, + 6868: 0x9B0D, + 6869: 0x9B0E, + 6870: 0x9B10, + 6871: 0x9B12, + 6872: 0x9B16, + 6873: 0x9B19, + 6874: 0x9B1B, + 6875: 0x9B1C, + 6876: 0x9B20, + 6877: 0x9B26, + 6878: 0x9B2B, + 6879: 0x9B2D, + 6880: 0x9B33, + 6881: 0x9B34, + 6882: 0x9B35, + 6883: 0x9B37, + 6884: 0x9B39, + 6885: 0x9B3A, + 6886: 0x9B3D, + 6887: 0x9B48, + 6888: 0x9B4B, + 6889: 0x9B4C, + 6890: 0x9B55, + 6891: 0x9B56, + 6892: 0x9B57, + 6893: 0x9B5B, + 6894: 0x9B5E, + 6895: 0x9B61, + 6896: 0x9B63, + 6897: 0x9B65, + 6898: 0x9B66, + 6899: 0x9B68, + 6900: 0x9B6A, + 6901: 0x9B6B, + 6902: 0x9B6C, + 6903: 0x9B6D, + 6904: 0x9B6E, + 6905: 0x9B73, + 6906: 0x9B75, + 6907: 0x9B77, + 6908: 0x9B78, + 6909: 0x9B79, + 6910: 0x9B7F, + 6911: 0x9B80, + 6912: 0x9B84, + 6913: 0x9B85, + 6914: 0x9B86, + 6915: 0x9B87, + 6916: 0x9B89, + 6917: 0x9B8A, + 6918: 0x9B8B, + 6919: 0x9B8D, + 6920: 0x9B8F, + 6921: 0x9B90, + 6922: 0x9B94, + 6923: 0x9B9A, + 6924: 0x9B9D, + 6925: 0x9B9E, + 6926: 0x9BA6, + 6927: 0x9BA7, + 6928: 0x9BA9, + 6929: 0x9BAC, + 6930: 0x9BB0, + 6931: 0x9BB1, + 6932: 0x9BB2, + 6933: 0x9BB7, + 6934: 0x9BB8, + 6935: 0x9BBB, + 6936: 0x9BBC, + 6937: 0x9BBE, + 6938: 0x9BBF, + 6939: 0x9BC1, + 6940: 0x9BC7, + 6941: 0x9BC8, + 6942: 0x9BCE, + 6943: 0x9BD0, + 6944: 0x9BD7, + 6945: 0x9BD8, + 6946: 0x9BDD, + 6947: 0x9BDF, + 6948: 0x9BE5, + 6949: 0x9BE7, + 6950: 0x9BEA, + 6951: 0x9BEB, + 6952: 0x9BEF, + 6953: 0x9BF3, + 6954: 0x9BF7, + 6955: 0x9BF8, + 6956: 0x9BF9, + 6957: 0x9BFA, + 6958: 0x9BFD, + 6959: 0x9BFF, + 6960: 0x9C00, + 6961: 0x9C02, + 6962: 0x9C0B, + 6963: 0x9C0F, + 6964: 0x9C11, + 6965: 0x9C16, + 6966: 0x9C18, + 6967: 0x9C19, + 6968: 0x9C1A, + 6969: 0x9C1C, + 6970: 0x9C1E, + 6971: 0x9C22, + 6972: 0x9C23, + 6973: 0x9C26, + 6974: 0x9C27, + 6975: 0x9C28, + 6976: 0x9C29, + 6977: 0x9C2A, + 6978: 0x9C31, + 6979: 0x9C35, + 6980: 0x9C36, + 6981: 0x9C37, + 6982: 0x9C3D, + 6983: 0x9C41, + 6984: 0x9C43, + 6985: 0x9C44, + 6986: 0x9C45, + 6987: 0x9C49, + 6988: 0x9C4A, + 6989: 0x9C4E, + 6990: 0x9C4F, + 6991: 0x9C50, + 6992: 0x9C53, + 6993: 0x9C54, + 6994: 0x9C56, + 6995: 0x9C58, + 6996: 0x9C5B, + 6997: 0x9C5D, + 6998: 0x9C5E, + 6999: 0x9C5F, + 7000: 0x9C63, + 7001: 0x9C69, + 7002: 0x9C6A, + 7003: 0x9C5C, + 7004: 0x9C6B, + 7005: 0x9C68, + 7006: 0x9C6E, + 7007: 0x9C70, + 7008: 0x9C72, + 7009: 0x9C75, + 7010: 0x9C77, + 7011: 0x9C7B, + 7012: 0x9CE6, + 7013: 0x9CF2, + 7014: 0x9CF7, + 7015: 0x9CF9, + 7016: 0x9D0B, + 7017: 0x9D02, + 7018: 0x9D11, + 7019: 0x9D17, + 7020: 0x9D18, + 7021: 0x9D1C, + 7022: 0x9D1D, + 7023: 0x9D1E, + 7024: 0x9D2F, + 7025: 0x9D30, + 7026: 0x9D32, + 7027: 0x9D33, + 7028: 0x9D34, + 7029: 0x9D3A, + 7030: 0x9D3C, + 7031: 0x9D45, + 7032: 0x9D3D, + 7033: 0x9D42, + 7034: 0x9D43, + 7035: 0x9D47, + 7036: 0x9D4A, + 7037: 0x9D53, + 7038: 0x9D54, + 7039: 0x9D5F, + 7040: 0x9D63, + 7041: 0x9D62, + 7042: 0x9D65, + 7043: 0x9D69, + 7044: 0x9D6A, + 7045: 0x9D6B, + 7046: 0x9D70, + 7047: 0x9D76, + 7048: 0x9D77, + 7049: 0x9D7B, + 7050: 0x9D7C, + 7051: 0x9D7E, + 7052: 0x9D83, + 7053: 0x9D84, + 7054: 0x9D86, + 7055: 0x9D8A, + 7056: 0x9D8D, + 7057: 0x9D8E, + 7058: 0x9D92, + 7059: 0x9D93, + 7060: 0x9D95, + 7061: 0x9D96, + 7062: 0x9D97, + 7063: 0x9D98, + 7064: 0x9DA1, + 7065: 0x9DAA, + 7066: 0x9DAC, + 7067: 0x9DAE, + 7068: 0x9DB1, + 7069: 0x9DB5, + 7070: 0x9DB9, + 7071: 0x9DBC, + 7072: 0x9DBF, + 7073: 0x9DC3, + 7074: 0x9DC7, + 7075: 0x9DC9, + 7076: 0x9DCA, + 7077: 0x9DD4, + 7078: 0x9DD5, + 7079: 0x9DD6, + 7080: 0x9DD7, + 7081: 0x9DDA, + 7082: 0x9DDE, + 7083: 0x9DDF, + 7084: 0x9DE0, + 7085: 0x9DE5, + 7086: 0x9DE7, + 7087: 0x9DE9, + 7088: 0x9DEB, + 7089: 0x9DEE, + 7090: 0x9DF0, + 7091: 0x9DF3, + 7092: 0x9DF4, + 7093: 0x9DFE, + 7094: 0x9E0A, + 7095: 0x9E02, + 7096: 0x9E07, + 7097: 0x9E0E, + 7098: 0x9E10, + 7099: 0x9E11, + 7100: 0x9E12, + 7101: 0x9E15, + 7102: 0x9E16, + 7103: 0x9E19, + 7104: 0x9E1C, + 7105: 0x9E1D, + 7106: 0x9E7A, + 7107: 0x9E7B, + 7108: 0x9E7C, + 7109: 0x9E80, + 7110: 0x9E82, + 7111: 0x9E83, + 7112: 0x9E84, + 7113: 0x9E85, + 7114: 0x9E87, + 7115: 0x9E8E, + 7116: 0x9E8F, + 7117: 0x9E96, + 7118: 0x9E98, + 7119: 0x9E9B, + 7120: 0x9E9E, + 7121: 0x9EA4, + 7122: 0x9EA8, + 7123: 0x9EAC, + 7124: 0x9EAE, + 7125: 0x9EAF, + 7126: 0x9EB0, + 7127: 0x9EB3, + 7128: 0x9EB4, + 7129: 0x9EB5, + 7130: 0x9EC6, + 7131: 0x9EC8, + 7132: 0x9ECB, + 7133: 0x9ED5, + 7134: 0x9EDF, + 7135: 0x9EE4, + 7136: 0x9EE7, + 7137: 0x9EEC, + 7138: 0x9EED, + 7139: 0x9EEE, + 7140: 0x9EF0, + 7141: 0x9EF1, + 7142: 0x9EF2, + 7143: 0x9EF5, + 7144: 0x9EF8, + 7145: 0x9EFF, + 7146: 0x9F02, + 7147: 0x9F03, + 7148: 0x9F09, + 7149: 0x9F0F, + 7150: 0x9F10, + 7151: 0x9F11, + 7152: 0x9F12, + 7153: 0x9F14, + 7154: 0x9F16, + 7155: 0x9F17, + 7156: 0x9F19, + 7157: 0x9F1A, + 7158: 0x9F1B, + 7159: 0x9F1F, + 7160: 0x9F22, + 7161: 0x9F26, + 7162: 0x9F2A, + 7163: 0x9F2B, + 7164: 0x9F2F, + 7165: 0x9F31, + 7166: 0x9F32, + 7167: 0x9F34, + 7168: 0x9F37, + 7169: 0x9F39, + 7170: 0x9F3A, + 7171: 0x9F3C, + 7172: 0x9F3D, + 7173: 0x9F3F, + 7174: 0x9F41, + 7175: 0x9F43, + 7176: 0x9F44, + 7177: 0x9F45, + 7178: 0x9F46, + 7179: 0x9F47, + 7180: 0x9F53, + 7181: 0x9F55, + 7182: 0x9F56, + 7183: 0x9F57, + 7184: 0x9F58, + 7185: 0x9F5A, + 7186: 0x9F5D, + 7187: 0x9F5E, + 7188: 0x9F68, + 7189: 0x9F69, + 7190: 0x9F6D, + 7191: 0x9F6E, + 7192: 0x9F6F, + 7193: 0x9F70, + 7194: 0x9F71, + 7195: 0x9F73, + 7196: 0x9F75, + 7197: 0x9F7A, + 7198: 0x9F7D, + 7199: 0x9F8F, + 7200: 0x9F90, + 7201: 0x9F91, + 7202: 0x9F92, + 7203: 0x9F94, + 7204: 0x9F96, + 7205: 0x9F97, + 7206: 0x9F9E, + 7207: 0x9FA1, + 7208: 0x9FA2, + 7209: 0x9FA3, + 7210: 0x9FA5, +} + +const ( + jis0208 = 1 + jis0212 = 2 + codeMask = 0x7f + codeShift = 7 + tableShift = 14 +) + +const numEncodeTables = 6 + +// encodeX are the encoding tables from Unicode to JIS code, +// sorted by decreasing length. +// encode0: 20902 entries for runes in [19968, 40870). +// encode1: 1632 entries for runes in [ 8208, 9840). +// encode2: 974 entries for runes in [12288, 13262). +// encode3: 959 entries for runes in [ 161, 1120). +// encode4: 261 entries for runes in [63785, 64046). +// encode5: 229 entries for runes in [65281, 65510). +// +// The high two bits of the value record whether the JIS code comes from the +// JIS0208 table (high bits == 1) or the JIS0212 table (high bits == 2). +// The low 14 bits are two 7-bit unsigned integers j1 and j2 that form the +// JIS code (94*j1 + j2) within that table. + +const encode0Low, encode0High = 19968, 40870 + +var encode0 = [...]uint16{ + 19968 - 19968: jis0208<<14 | 0x0F<<7 | 0x4B, + 19969 - 19968: jis0208<<14 | 0x22<<7 | 0x59, + 19970 - 19968: jis0212<<14 | 0x0F<<7 | 0x00, + 19971 - 19968: jis0208<<14 | 0x1B<<7 | 0x16, + 19972 - 19968: jis0212<<14 | 0x0F<<7 | 0x01, + 19973 - 19968: jis0212<<14 | 0x0F<<7 | 0x02, + 19975 - 19968: jis0208<<14 | 0x2A<<7 | 0x5B, + 19976 - 19968: jis0208<<14 | 0x1D<<7 | 0x45, + 19977 - 19968: jis0208<<14 | 0x1A<<7 | 0x0F, + 19978 - 19968: jis0208<<14 | 0x1D<<7 | 0x44, + 19979 - 19968: jis0208<<14 | 0x11<<7 | 0x1B, + 19980 - 19968: jis0212<<14 | 0x0F<<7 | 0x03, + 19981 - 19968: jis0208<<14 | 0x28<<7 | 0x33, + 19982 - 19968: jis0208<<14 | 0x2C<<7 | 0x1E, + 19984 - 19968: jis0208<<14 | 0x2F<<7 | 0x01, + 19985 - 19968: jis0208<<14 | 0x10<<7 | 0x0E, + 19986 - 19968: jis0212<<14 | 0x0F<<7 | 0x04, + 19988 - 19968: jis0208<<14 | 0x12<<7 | 0x4D, + 19989 - 19968: jis0208<<14 | 0x2F<<7 | 0x02, + 19990 - 19968: jis0208<<14 | 0x1F<<7 | 0x03, + 19991 - 19968: jis0208<<14 | 0x31<<7 | 0x21, + 19992 - 19968: jis0208<<14 | 0x14<<7 | 0x35, + 19993 - 19968: jis0208<<14 | 0x29<<7 | 0x19, + 19998 - 19968: jis0208<<14 | 0x1D<<7 | 0x46, + 19999 - 19968: jis0212<<14 | 0x0F<<7 | 0x05, + 20001 - 19968: jis0208<<14 | 0x2D<<7 | 0x1D, + 20003 - 19968: jis0212<<14 | 0x0F<<7 | 0x06, + 20004 - 19968: jis0212<<14 | 0x0F<<7 | 0x07, + 20006 - 19968: jis0208<<14 | 0x29<<7 | 0x21, + 20008 - 19968: jis0208<<14 | 0x58<<7 | 0x0C, + 20010 - 19968: jis0208<<14 | 0x2F<<7 | 0x03, + 20011 - 19968: jis0212<<14 | 0x0F<<7 | 0x09, + 20013 - 19968: jis0208<<14 | 0x22<<7 | 0x45, + 20014 - 19968: jis0212<<14 | 0x0F<<7 | 0x0A, + 20015 - 19968: jis0212<<14 | 0x0F<<7 | 0x0B, + 20016 - 19968: jis0212<<14 | 0x0F<<7 | 0x0C, + 20017 - 19968: jis0208<<14 | 0x2F<<7 | 0x04, + 20018 - 19968: jis0208<<14 | 0x15<<7 | 0x59, + 20021 - 19968: jis0212<<14 | 0x0F<<7 | 0x0D, + 20022 - 19968: jis0208<<14 | 0x2F<<7 | 0x05, + 20024 - 19968: jis0208<<14 | 0x13<<7 | 0x3C, + 20025 - 19968: jis0208<<14 | 0x22<<7 | 0x0F, + 20027 - 19968: jis0208<<14 | 0x1B<<7 | 0x46, + 20028 - 19968: jis0208<<14 | 0x2F<<7 | 0x06, + 20031 - 19968: jis0208<<14 | 0x2F<<7 | 0x07, + 20032 - 19968: jis0212<<14 | 0x0F<<7 | 0x0E, + 20033 - 19968: jis0212<<14 | 0x0F<<7 | 0x0F, + 20034 - 19968: jis0208<<14 | 0x2F<<7 | 0x08, + 20035 - 19968: jis0208<<14 | 0x26<<7 | 0x14, + 20036 - 19968: jis0212<<14 | 0x0F<<7 | 0x10, + 20037 - 19968: jis0208<<14 | 0x14<<7 | 0x36, + 20039 - 19968: jis0212<<14 | 0x0F<<7 | 0x11, + 20043 - 19968: jis0208<<14 | 0x26<<7 | 0x16, + 20045 - 19968: jis0208<<14 | 0x25<<7 | 0x42, + 20046 - 19968: jis0208<<14 | 0x17<<7 | 0x22, + 20047 - 19968: jis0208<<14 | 0x2A<<7 | 0x12, + 20049 - 19968: jis0212<<14 | 0x0F<<7 | 0x12, + 20053 - 19968: jis0208<<14 | 0x48<<7 | 0x28, + 20054 - 19968: jis0208<<14 | 0x2F<<7 | 0x09, + 20055 - 19968: jis0208<<14 | 0x1D<<7 | 0x47, + 20056 - 19968: jis0208<<14 | 0x2F<<7 | 0x0A, + 20057 - 19968: jis0208<<14 | 0x11<<7 | 0x14, + 20058 - 19968: jis0212<<14 | 0x0F<<7 | 0x13, + 20060 - 19968: jis0212<<14 | 0x0F<<7 | 0x14, + 20061 - 19968: jis0208<<14 | 0x15<<7 | 0x44, + 20062 - 19968: jis0208<<14 | 0x17<<7 | 0x4F, + 20063 - 19968: jis0208<<14 | 0x2B<<7 | 0x48, + 20066 - 19968: jis0208<<14 | 0x35<<7 | 0x05, + 20067 - 19968: jis0212<<14 | 0x0F<<7 | 0x15, + 20072 - 19968: jis0212<<14 | 0x0F<<7 | 0x16, + 20073 - 19968: jis0212<<14 | 0x0F<<7 | 0x17, + 20081 - 19968: jis0208<<14 | 0x2C<<7 | 0x4F, + 20083 - 19968: jis0208<<14 | 0x25<<7 | 0x5C, + 20084 - 19968: jis0212<<14 | 0x0F<<7 | 0x18, + 20085 - 19968: jis0212<<14 | 0x0F<<7 | 0x19, + 20089 - 19968: jis0212<<14 | 0x0F<<7 | 0x1A, + 20094 - 19968: jis0208<<14 | 0x13<<7 | 0x04, + 20095 - 19968: jis0212<<14 | 0x0F<<7 | 0x1B, + 20096 - 19968: jis0208<<14 | 0x14<<7 | 0x14, + 20098 - 19968: jis0208<<14 | 0x2F<<7 | 0x0B, + 20101 - 19968: jis0208<<14 | 0x2F<<7 | 0x0C, + 20102 - 19968: jis0208<<14 | 0x2D<<7 | 0x1A, + 20104 - 19968: jis0208<<14 | 0x2C<<7 | 0x1C, + 20105 - 19968: jis0208<<14 | 0x20<<7 | 0x47, + 20106 - 19968: jis0208<<14 | 0x2F<<7 | 0x0E, + 20107 - 19968: jis0208<<14 | 0x1A<<7 | 0x55, + 20108 - 19968: jis0208<<14 | 0x25<<7 | 0x52, + 20109 - 19968: jis0212<<14 | 0x0F<<7 | 0x1C, + 20110 - 19968: jis0208<<14 | 0x2F<<7 | 0x11, + 20113 - 19968: jis0208<<14 | 0x10<<7 | 0x1D, + 20114 - 19968: jis0208<<14 | 0x17<<7 | 0x3E, + 20116 - 19968: jis0208<<14 | 0x17<<7 | 0x3D, + 20117 - 19968: jis0208<<14 | 0x0F<<7 | 0x45, + 20118 - 19968: jis0212<<14 | 0x0F<<7 | 0x1D, + 20119 - 19968: jis0212<<14 | 0x0F<<7 | 0x1E, + 20120 - 19968: jis0208<<14 | 0x2E<<7 | 0x2A, + 20121 - 19968: jis0208<<14 | 0x2E<<7 | 0x29, + 20123 - 19968: jis0208<<14 | 0x19<<7 | 0x12, + 20124 - 19968: jis0208<<14 | 0x0F<<7 | 0x00, + 20125 - 19968: jis0212<<14 | 0x0F<<7 | 0x1F, + 20126 - 19968: jis0208<<14 | 0x2F<<7 | 0x12, + 20127 - 19968: jis0208<<14 | 0x2F<<7 | 0x13, + 20128 - 19968: jis0208<<14 | 0x2F<<7 | 0x14, + 20129 - 19968: jis0208<<14 | 0x2A<<7 | 0x13, + 20130 - 19968: jis0208<<14 | 0x2F<<7 | 0x15, + 20132 - 19968: jis0208<<14 | 0x17<<7 | 0x51, + 20133 - 19968: jis0208<<14 | 0x0F<<7 | 0x46, + 20134 - 19968: jis0208<<14 | 0x2A<<7 | 0x51, + 20136 - 19968: jis0208<<14 | 0x14<<7 | 0x5B, + 20139 - 19968: jis0208<<14 | 0x14<<7 | 0x5C, + 20140 - 19968: jis0208<<14 | 0x14<<7 | 0x5D, + 20141 - 19968: jis0208<<14 | 0x23<<7 | 0x41, + 20142 - 19968: jis0208<<14 | 0x2D<<7 | 0x1B, + 20143 - 19968: jis0212<<14 | 0x0F<<7 | 0x20, + 20144 - 19968: jis0208<<14 | 0x2F<<7 | 0x16, + 20147 - 19968: jis0208<<14 | 0x2F<<7 | 0x17, + 20150 - 19968: jis0208<<14 | 0x2F<<7 | 0x18, + 20153 - 19968: jis0212<<14 | 0x0F<<7 | 0x21, + 20154 - 19968: jis0208<<14 | 0x1E<<7 | 0x2C, + 20160 - 19968: jis0208<<14 | 0x1C<<7 | 0x19, + 20161 - 19968: jis0208<<14 | 0x1E<<7 | 0x2D, + 20162 - 19968: jis0208<<14 | 0x2F<<7 | 0x1D, + 20163 - 19968: jis0212<<14 | 0x0F<<7 | 0x22, + 20164 - 19968: jis0208<<14 | 0x2F<<7 | 0x1B, + 20166 - 19968: jis0208<<14 | 0x2F<<7 | 0x1C, + 20167 - 19968: jis0208<<14 | 0x14<<7 | 0x37, + 20170 - 19968: jis0208<<14 | 0x19<<7 | 0x02, + 20171 - 19968: jis0208<<14 | 0x11<<7 | 0x4F, + 20173 - 19968: jis0208<<14 | 0x2F<<7 | 0x1A, + 20174 - 19968: jis0208<<14 | 0x2F<<7 | 0x19, + 20175 - 19968: jis0208<<14 | 0x29<<7 | 0x08, + 20176 - 19968: jis0212<<14 | 0x0F<<7 | 0x23, + 20180 - 19968: jis0208<<14 | 0x1A<<7 | 0x25, + 20181 - 19968: jis0208<<14 | 0x1A<<7 | 0x24, + 20182 - 19968: jis0208<<14 | 0x21<<7 | 0x1D, + 20183 - 19968: jis0208<<14 | 0x2F<<7 | 0x1E, + 20184 - 19968: jis0208<<14 | 0x28<<7 | 0x34, + 20185 - 19968: jis0208<<14 | 0x1F<<7 | 0x46, + 20186 - 19968: jis0212<<14 | 0x0F<<7 | 0x24, + 20187 - 19968: jis0212<<14 | 0x0F<<7 | 0x25, + 20189 - 19968: jis0208<<14 | 0x00<<7 | 0x17, + 20190 - 19968: jis0208<<14 | 0x2F<<7 | 0x1F, + 20191 - 19968: jis0208<<14 | 0x2F<<7 | 0x21, + 20192 - 19968: jis0212<<14 | 0x0F<<7 | 0x26, + 20193 - 19968: jis0208<<14 | 0x58<<7 | 0x0D, + 20194 - 19968: jis0212<<14 | 0x0F<<7 | 0x28, + 20195 - 19968: jis0208<<14 | 0x21<<7 | 0x44, + 20196 - 19968: jis0208<<14 | 0x2D<<7 | 0x40, + 20197 - 19968: jis0208<<14 | 0x0F<<7 | 0x29, + 20200 - 19968: jis0212<<14 | 0x0F<<7 | 0x29, + 20205 - 19968: jis0208<<14 | 0x2F<<7 | 0x20, + 20206 - 19968: jis0208<<14 | 0x11<<7 | 0x1D, + 20207 - 19968: jis0212<<14 | 0x0F<<7 | 0x2A, + 20208 - 19968: jis0208<<14 | 0x15<<7 | 0x23, + 20209 - 19968: jis0212<<14 | 0x0F<<7 | 0x2B, + 20210 - 19968: jis0208<<14 | 0x22<<7 | 0x46, + 20211 - 19968: jis0212<<14 | 0x0F<<7 | 0x2C, + 20213 - 19968: jis0212<<14 | 0x0F<<7 | 0x2D, + 20214 - 19968: jis0208<<14 | 0x16<<7 | 0x4E, + 20215 - 19968: jis0208<<14 | 0x2F<<7 | 0x22, + 20219 - 19968: jis0208<<14 | 0x26<<7 | 0x03, + 20220 - 19968: jis0208<<14 | 0x58<<7 | 0x0E, + 20221 - 19968: jis0212<<14 | 0x0F<<7 | 0x2E, + 20222 - 19968: jis0212<<14 | 0x0F<<7 | 0x2F, + 20223 - 19968: jis0212<<14 | 0x0F<<7 | 0x30, + 20224 - 19968: jis0208<<14 | 0x58<<7 | 0x0F, + 20225 - 19968: jis0208<<14 | 0x13<<7 | 0x4A, + 20226 - 19968: jis0212<<14 | 0x0F<<7 | 0x32, + 20227 - 19968: jis0208<<14 | 0x58<<7 | 0x10, + 20232 - 19968: jis0212<<14 | 0x0F<<7 | 0x34, + 20233 - 19968: jis0208<<14 | 0x2F<<7 | 0x23, + 20234 - 19968: jis0208<<14 | 0x0F<<7 | 0x2A, + 20235 - 19968: jis0212<<14 | 0x0F<<7 | 0x35, + 20236 - 19968: jis0212<<14 | 0x0F<<7 | 0x36, + 20237 - 19968: jis0208<<14 | 0x17<<7 | 0x3F, + 20238 - 19968: jis0208<<14 | 0x13<<7 | 0x4B, + 20239 - 19968: jis0208<<14 | 0x28<<7 | 0x59, + 20240 - 19968: jis0208<<14 | 0x27<<7 | 0x11, + 20241 - 19968: jis0208<<14 | 0x14<<7 | 0x38, + 20242 - 19968: jis0212<<14 | 0x0F<<7 | 0x37, + 20245 - 19968: jis0212<<14 | 0x0F<<7 | 0x38, + 20246 - 19968: jis0212<<14 | 0x0F<<7 | 0x39, + 20247 - 19968: jis0212<<14 | 0x0F<<7 | 0x3A, + 20249 - 19968: jis0212<<14 | 0x0F<<7 | 0x3B, + 20250 - 19968: jis0208<<14 | 0x11<<7 | 0x50, + 20252 - 19968: jis0208<<14 | 0x2F<<7 | 0x46, + 20253 - 19968: jis0208<<14 | 0x24<<7 | 0x20, + 20270 - 19968: jis0212<<14 | 0x0F<<7 | 0x3C, + 20271 - 19968: jis0208<<14 | 0x26<<7 | 0x4B, + 20272 - 19968: jis0208<<14 | 0x2F<<7 | 0x25, + 20273 - 19968: jis0212<<14 | 0x0F<<7 | 0x3D, + 20275 - 19968: jis0212<<14 | 0x0F<<7 | 0x3F, + 20276 - 19968: jis0208<<14 | 0x27<<7 | 0x1B, + 20277 - 19968: jis0212<<14 | 0x0F<<7 | 0x40, + 20278 - 19968: jis0208<<14 | 0x2D<<7 | 0x41, + 20279 - 19968: jis0212<<14 | 0x0F<<7 | 0x41, + 20280 - 19968: jis0208<<14 | 0x1E<<7 | 0x0C, + 20281 - 19968: jis0208<<14 | 0x58<<7 | 0x11, + 20282 - 19968: jis0208<<14 | 0x1A<<7 | 0x26, + 20283 - 19968: jis0212<<14 | 0x0F<<7 | 0x43, + 20284 - 19968: jis0208<<14 | 0x1A<<7 | 0x56, + 20285 - 19968: jis0208<<14 | 0x11<<7 | 0x1F, + 20286 - 19968: jis0212<<14 | 0x0F<<7 | 0x44, + 20288 - 19968: jis0212<<14 | 0x0F<<7 | 0x45, + 20290 - 19968: jis0212<<14 | 0x0F<<7 | 0x46, + 20291 - 19968: jis0208<<14 | 0x23<<7 | 0x30, + 20294 - 19968: jis0208<<14 | 0x22<<7 | 0x01, + 20295 - 19968: jis0208<<14 | 0x2F<<7 | 0x29, + 20296 - 19968: jis0212<<14 | 0x0F<<7 | 0x47, + 20297 - 19968: jis0212<<14 | 0x0F<<7 | 0x48, + 20299 - 19968: jis0212<<14 | 0x0F<<7 | 0x49, + 20300 - 19968: jis0212<<14 | 0x0F<<7 | 0x4A, + 20301 - 19968: jis0208<<14 | 0x0F<<7 | 0x2B, + 20302 - 19968: jis0208<<14 | 0x23<<7 | 0x42, + 20303 - 19968: jis0208<<14 | 0x1C<<7 | 0x1A, + 20304 - 19968: jis0208<<14 | 0x19<<7 | 0x13, + 20305 - 19968: jis0208<<14 | 0x2C<<7 | 0x03, + 20306 - 19968: jis0212<<14 | 0x0F<<7 | 0x4B, + 20307 - 19968: jis0208<<14 | 0x21<<7 | 0x2D, + 20308 - 19968: jis0212<<14 | 0x0F<<7 | 0x4C, + 20309 - 19968: jis0208<<14 | 0x11<<7 | 0x1E, + 20310 - 19968: jis0208<<14 | 0x58<<7 | 0x12, + 20311 - 19968: jis0208<<14 | 0x2F<<7 | 0x28, + 20312 - 19968: jis0212<<14 | 0x0F<<7 | 0x4E, + 20313 - 19968: jis0208<<14 | 0x2C<<7 | 0x1D, + 20314 - 19968: jis0208<<14 | 0x2F<<7 | 0x24, + 20315 - 19968: jis0208<<14 | 0x2F<<7 | 0x26, + 20316 - 19968: jis0208<<14 | 0x19<<7 | 0x4D, + 20317 - 19968: jis0208<<14 | 0x2F<<7 | 0x27, + 20318 - 19968: jis0208<<14 | 0x34<<7 | 0x03, + 20319 - 19968: jis0212<<14 | 0x0F<<7 | 0x4F, + 20320 - 19968: jis0212<<14 | 0x0F<<7 | 0x3E, + 20323 - 19968: jis0212<<14 | 0x0F<<7 | 0x50, + 20329 - 19968: jis0208<<14 | 0x2F<<7 | 0x2F, + 20330 - 19968: jis0212<<14 | 0x0F<<7 | 0x51, + 20332 - 19968: jis0212<<14 | 0x0F<<7 | 0x52, + 20334 - 19968: jis0212<<14 | 0x0F<<7 | 0x53, + 20335 - 19968: jis0208<<14 | 0x2F<<7 | 0x32, + 20336 - 19968: jis0208<<14 | 0x2F<<7 | 0x30, + 20337 - 19968: jis0212<<14 | 0x0F<<7 | 0x54, + 20339 - 19968: jis0208<<14 | 0x11<<7 | 0x21, + 20341 - 19968: jis0208<<14 | 0x29<<7 | 0x1A, + 20342 - 19968: jis0208<<14 | 0x2F<<7 | 0x2A, + 20343 - 19968: jis0212<<14 | 0x0F<<7 | 0x55, + 20344 - 19968: jis0212<<14 | 0x0F<<7 | 0x56, + 20345 - 19968: jis0212<<14 | 0x0F<<7 | 0x57, + 20346 - 19968: jis0212<<14 | 0x0F<<7 | 0x58, + 20347 - 19968: jis0208<<14 | 0x2F<<7 | 0x2E, + 20348 - 19968: jis0208<<14 | 0x17<<7 | 0x52, + 20349 - 19968: jis0212<<14 | 0x0F<<7 | 0x59, + 20350 - 19968: jis0212<<14 | 0x0F<<7 | 0x5A, + 20351 - 19968: jis0208<<14 | 0x1A<<7 | 0x27, + 20353 - 19968: jis0212<<14 | 0x0F<<7 | 0x5B, + 20354 - 19968: jis0212<<14 | 0x0F<<7 | 0x5C, + 20355 - 19968: jis0208<<14 | 0x13<<7 | 0x05, + 20356 - 19968: jis0212<<14 | 0x0F<<7 | 0x5D, + 20357 - 19968: jis0212<<14 | 0x10<<7 | 0x00, + 20358 - 19968: jis0208<<14 | 0x2F<<7 | 0x33, + 20360 - 19968: jis0208<<14 | 0x2F<<7 | 0x2B, + 20361 - 19968: jis0212<<14 | 0x10<<7 | 0x01, + 20362 - 19968: jis0208<<14 | 0x58<<7 | 0x14, + 20363 - 19968: jis0208<<14 | 0x2D<<7 | 0x42, + 20364 - 19968: jis0212<<14 | 0x10<<7 | 0x03, + 20365 - 19968: jis0208<<14 | 0x1A<<7 | 0x57, + 20366 - 19968: jis0212<<14 | 0x10<<7 | 0x04, + 20367 - 19968: jis0208<<14 | 0x2F<<7 | 0x2C, + 20368 - 19968: jis0212<<14 | 0x10<<7 | 0x05, + 20369 - 19968: jis0208<<14 | 0x2F<<7 | 0x31, + 20370 - 19968: jis0208<<14 | 0x58<<7 | 0x13, + 20371 - 19968: jis0212<<14 | 0x10<<7 | 0x07, + 20372 - 19968: jis0208<<14 | 0x58<<7 | 0x16, + 20374 - 19968: jis0208<<14 | 0x2F<<7 | 0x34, + 20375 - 19968: jis0212<<14 | 0x10<<7 | 0x09, + 20376 - 19968: jis0208<<14 | 0x2F<<7 | 0x2D, + 20377 - 19968: jis0212<<14 | 0x10<<7 | 0x0A, + 20378 - 19968: jis0208<<14 | 0x58<<7 | 0x15, + 20379 - 19968: jis0208<<14 | 0x15<<7 | 0x00, + 20381 - 19968: jis0208<<14 | 0x0F<<7 | 0x2C, + 20382 - 19968: jis0212<<14 | 0x10<<7 | 0x0C, + 20383 - 19968: jis0212<<14 | 0x10<<7 | 0x0D, + 20384 - 19968: jis0208<<14 | 0x15<<7 | 0x01, + 20385 - 19968: jis0208<<14 | 0x11<<7 | 0x20, + 20395 - 19968: jis0208<<14 | 0x34<<7 | 0x04, + 20397 - 19968: jis0208<<14 | 0x2A<<7 | 0x58, + 20398 - 19968: jis0208<<14 | 0x28<<7 | 0x4D, + 20399 - 19968: jis0208<<14 | 0x17<<7 | 0x53, + 20402 - 19968: jis0212<<14 | 0x10<<7 | 0x0E, + 20405 - 19968: jis0208<<14 | 0x1E<<7 | 0x0E, + 20406 - 19968: jis0208<<14 | 0x2D<<7 | 0x16, + 20407 - 19968: jis0212<<14 | 0x10<<7 | 0x0F, + 20409 - 19968: jis0212<<14 | 0x10<<7 | 0x10, + 20411 - 19968: jis0212<<14 | 0x10<<7 | 0x11, + 20412 - 19968: jis0212<<14 | 0x10<<7 | 0x12, + 20413 - 19968: jis0212<<14 | 0x10<<7 | 0x13, + 20414 - 19968: jis0212<<14 | 0x10<<7 | 0x14, + 20415 - 19968: jis0208<<14 | 0x29<<7 | 0x37, + 20416 - 19968: jis0212<<14 | 0x10<<7 | 0x15, + 20417 - 19968: jis0212<<14 | 0x10<<7 | 0x16, + 20418 - 19968: jis0208<<14 | 0x16<<7 | 0x17, + 20419 - 19968: jis0208<<14 | 0x21<<7 | 0x04, + 20420 - 19968: jis0208<<14 | 0x11<<7 | 0x43, + 20421 - 19968: jis0212<<14 | 0x10<<7 | 0x17, + 20422 - 19968: jis0212<<14 | 0x10<<7 | 0x18, + 20424 - 19968: jis0212<<14 | 0x10<<7 | 0x19, + 20425 - 19968: jis0208<<14 | 0x58<<7 | 0x05, + 20426 - 19968: jis0208<<14 | 0x1C<<7 | 0x32, + 20427 - 19968: jis0212<<14 | 0x10<<7 | 0x1B, + 20428 - 19968: jis0212<<14 | 0x10<<7 | 0x1C, + 20429 - 19968: jis0208<<14 | 0x58<<7 | 0x17, + 20430 - 19968: jis0208<<14 | 0x2F<<7 | 0x38, + 20431 - 19968: jis0212<<14 | 0x10<<7 | 0x1E, + 20432 - 19968: jis0208<<14 | 0x2F<<7 | 0x3D, + 20433 - 19968: jis0208<<14 | 0x2F<<7 | 0x3B, + 20434 - 19968: jis0212<<14 | 0x10<<7 | 0x1F, + 20436 - 19968: jis0208<<14 | 0x2F<<7 | 0x36, + 20439 - 19968: jis0208<<14 | 0x21<<7 | 0x0E, + 20440 - 19968: jis0208<<14 | 0x2F<<7 | 0x39, + 20442 - 19968: jis0208<<14 | 0x2F<<7 | 0x3C, + 20443 - 19968: jis0208<<14 | 0x2F<<7 | 0x3A, + 20444 - 19968: jis0212<<14 | 0x10<<7 | 0x20, + 20445 - 19968: jis0208<<14 | 0x29<<7 | 0x3C, + 20447 - 19968: jis0208<<14 | 0x2F<<7 | 0x37, + 20448 - 19968: jis0212<<14 | 0x10<<7 | 0x21, + 20449 - 19968: jis0208<<14 | 0x1E<<7 | 0x0D, + 20450 - 19968: jis0212<<14 | 0x10<<7 | 0x22, + 20451 - 19968: jis0208<<14 | 0x2A<<7 | 0x52, + 20452 - 19968: jis0208<<14 | 0x2F<<7 | 0x3E, + 20453 - 19968: jis0208<<14 | 0x2F<<7 | 0x3F, + 20462 - 19968: jis0208<<14 | 0x1C<<7 | 0x03, + 20463 - 19968: jis0208<<14 | 0x2F<<7 | 0x4C, + 20464 - 19968: jis0212<<14 | 0x10<<7 | 0x23, + 20466 - 19968: jis0212<<14 | 0x10<<7 | 0x24, + 20467 - 19968: jis0208<<14 | 0x26<<7 | 0x2F, + 20469 - 19968: jis0208<<14 | 0x28<<7 | 0x15, + 20470 - 19968: jis0208<<14 | 0x2F<<7 | 0x47, + 20472 - 19968: jis0208<<14 | 0x29<<7 | 0x4F, + 20474 - 19968: jis0208<<14 | 0x11<<7 | 0x15, + 20476 - 19968: jis0212<<14 | 0x10<<7 | 0x25, + 20477 - 19968: jis0212<<14 | 0x10<<7 | 0x26, + 20478 - 19968: jis0208<<14 | 0x2F<<7 | 0x4B, + 20479 - 19968: jis0208<<14 | 0x58<<7 | 0x1A, + 20480 - 19968: jis0212<<14 | 0x10<<7 | 0x28, + 20481 - 19968: jis0212<<14 | 0x10<<7 | 0x29, + 20484 - 19968: jis0212<<14 | 0x10<<7 | 0x2A, + 20485 - 19968: jis0208<<14 | 0x2F<<7 | 0x45, + 20486 - 19968: jis0208<<14 | 0x2F<<7 | 0x4E, + 20487 - 19968: jis0212<<14 | 0x10<<7 | 0x2B, + 20489 - 19968: jis0208<<14 | 0x20<<7 | 0x31, + 20490 - 19968: jis0212<<14 | 0x10<<7 | 0x2C, + 20491 - 19968: jis0208<<14 | 0x17<<7 | 0x23, + 20492 - 19968: jis0212<<14 | 0x10<<7 | 0x2D, + 20493 - 19968: jis0208<<14 | 0x26<<7 | 0x3B, + 20494 - 19968: jis0212<<14 | 0x10<<7 | 0x2E, + 20495 - 19968: jis0208<<14 | 0x3F<<7 | 0x26, + 20496 - 19968: jis0212<<14 | 0x10<<7 | 0x2F, + 20497 - 19968: jis0208<<14 | 0x2F<<7 | 0x4D, + 20498 - 19968: jis0208<<14 | 0x24<<7 | 0x3C, + 20499 - 19968: jis0212<<14 | 0x10<<7 | 0x30, + 20500 - 19968: jis0208<<14 | 0x2F<<7 | 0x42, + 20502 - 19968: jis0208<<14 | 0x17<<7 | 0x55, + 20503 - 19968: jis0212<<14 | 0x10<<7 | 0x31, + 20504 - 19968: jis0212<<14 | 0x10<<7 | 0x32, + 20505 - 19968: jis0208<<14 | 0x17<<7 | 0x54, + 20506 - 19968: jis0208<<14 | 0x2F<<7 | 0x40, + 20507 - 19968: jis0212<<14 | 0x10<<7 | 0x33, + 20508 - 19968: jis0212<<14 | 0x10<<7 | 0x34, + 20509 - 19968: jis0212<<14 | 0x10<<7 | 0x35, + 20510 - 19968: jis0208<<14 | 0x58<<7 | 0x1B, + 20511 - 19968: jis0208<<14 | 0x1B<<7 | 0x39, + 20513 - 19968: jis0208<<14 | 0x2F<<7 | 0x48, + 20514 - 19968: jis0208<<14 | 0x58<<7 | 0x19, + 20515 - 19968: jis0208<<14 | 0x29<<7 | 0x4E, + 20516 - 19968: jis0208<<14 | 0x22<<7 | 0x2C, + 20517 - 19968: jis0208<<14 | 0x2F<<7 | 0x44, + 20518 - 19968: jis0208<<14 | 0x16<<7 | 0x50, + 20519 - 19968: jis0212<<14 | 0x10<<7 | 0x38, + 20520 - 19968: jis0208<<14 | 0x2F<<7 | 0x41, + 20521 - 19968: jis0208<<14 | 0x2F<<7 | 0x49, + 20522 - 19968: jis0208<<14 | 0x2F<<7 | 0x43, + 20523 - 19968: jis0208<<14 | 0x2D<<7 | 0x30, + 20524 - 19968: jis0208<<14 | 0x2F<<7 | 0x4A, + 20525 - 19968: jis0208<<14 | 0x2E<<7 | 0x20, + 20526 - 19968: jis0212<<14 | 0x10<<7 | 0x39, + 20528 - 19968: jis0212<<14 | 0x10<<7 | 0x3A, + 20530 - 19968: jis0212<<14 | 0x10<<7 | 0x3B, + 20531 - 19968: jis0212<<14 | 0x10<<7 | 0x3C, + 20533 - 19968: jis0212<<14 | 0x10<<7 | 0x3D, + 20534 - 19968: jis0208<<14 | 0x15<<7 | 0x45, + 20537 - 19968: jis0208<<14 | 0x16<<7 | 0x4F, + 20539 - 19968: jis0212<<14 | 0x10<<7 | 0x55, + 20544 - 19968: jis0208<<14 | 0x58<<7 | 0x18, + 20545 - 19968: jis0212<<14 | 0x10<<7 | 0x3F, + 20546 - 19968: jis0208<<14 | 0x58<<7 | 0x1E, + 20547 - 19968: jis0208<<14 | 0x2F<<7 | 0x4F, + 20549 - 19968: jis0212<<14 | 0x10<<7 | 0x41, + 20550 - 19968: jis0208<<14 | 0x58<<7 | 0x1C, + 20551 - 19968: jis0208<<14 | 0x2F<<7 | 0x50, + 20552 - 19968: jis0208<<14 | 0x2F<<7 | 0x54, + 20553 - 19968: jis0208<<14 | 0x0F<<7 | 0x2D, + 20554 - 19968: jis0212<<14 | 0x10<<7 | 0x43, + 20556 - 19968: jis0212<<14 | 0x10<<7 | 0x44, + 20558 - 19968: jis0212<<14 | 0x10<<7 | 0x45, + 20559 - 19968: jis0208<<14 | 0x29<<7 | 0x2F, + 20560 - 19968: jis0208<<14 | 0x2F<<7 | 0x53, + 20561 - 19968: jis0212<<14 | 0x10<<7 | 0x46, + 20562 - 19968: jis0212<<14 | 0x10<<7 | 0x47, + 20563 - 19968: jis0212<<14 | 0x10<<7 | 0x48, + 20565 - 19968: jis0208<<14 | 0x2F<<7 | 0x52, + 20566 - 19968: jis0208<<14 | 0x2F<<7 | 0x56, + 20567 - 19968: jis0212<<14 | 0x10<<7 | 0x49, + 20569 - 19968: jis0212<<14 | 0x10<<7 | 0x4A, + 20570 - 19968: jis0208<<14 | 0x2F<<7 | 0x55, + 20572 - 19968: jis0208<<14 | 0x23<<7 | 0x43, + 20575 - 19968: jis0212<<14 | 0x10<<7 | 0x4B, + 20576 - 19968: jis0212<<14 | 0x10<<7 | 0x4C, + 20578 - 19968: jis0212<<14 | 0x10<<7 | 0x4D, + 20579 - 19968: jis0212<<14 | 0x10<<7 | 0x4E, + 20581 - 19968: jis0208<<14 | 0x16<<7 | 0x51, + 20582 - 19968: jis0212<<14 | 0x10<<7 | 0x4F, + 20583 - 19968: jis0212<<14 | 0x10<<7 | 0x50, + 20586 - 19968: jis0212<<14 | 0x10<<7 | 0x51, + 20588 - 19968: jis0208<<14 | 0x2F<<7 | 0x57, + 20589 - 19968: jis0212<<14 | 0x10<<7 | 0x52, + 20592 - 19968: jis0208<<14 | 0x58<<7 | 0x1D, + 20593 - 19968: jis0212<<14 | 0x10<<7 | 0x54, + 20594 - 19968: jis0208<<14 | 0x1B<<7 | 0x24, + 20596 - 19968: jis0208<<14 | 0x21<<7 | 0x05, + 20597 - 19968: jis0208<<14 | 0x23<<7 | 0x44, + 20598 - 19968: jis0208<<14 | 0x15<<7 | 0x55, + 20600 - 19968: jis0208<<14 | 0x2F<<7 | 0x58, + 20605 - 19968: jis0208<<14 | 0x14<<7 | 0x15, + 20608 - 19968: jis0208<<14 | 0x2F<<7 | 0x59, + 20609 - 19968: jis0212<<14 | 0x10<<7 | 0x56, + 20611 - 19968: jis0212<<14 | 0x10<<7 | 0x57, + 20612 - 19968: jis0212<<14 | 0x10<<7 | 0x58, + 20613 - 19968: jis0208<<14 | 0x2F<<7 | 0x5B, + 20614 - 19968: jis0212<<14 | 0x10<<7 | 0x59, + 20618 - 19968: jis0212<<14 | 0x10<<7 | 0x5A, + 20621 - 19968: jis0208<<14 | 0x2A<<7 | 0x14, + 20622 - 19968: jis0212<<14 | 0x10<<7 | 0x5B, + 20623 - 19968: jis0212<<14 | 0x10<<7 | 0x5C, + 20624 - 19968: jis0212<<14 | 0x10<<7 | 0x5D, + 20625 - 19968: jis0208<<14 | 0x16<<7 | 0x45, + 20626 - 19968: jis0212<<14 | 0x11<<7 | 0x00, + 20627 - 19968: jis0212<<14 | 0x11<<7 | 0x01, + 20628 - 19968: jis0208<<14 | 0x58<<7 | 0x1F, + 20630 - 19968: jis0212<<14 | 0x11<<7 | 0x03, + 20632 - 19968: jis0208<<14 | 0x1A<<7 | 0x10, + 20633 - 19968: jis0208<<14 | 0x27<<7 | 0x56, + 20634 - 19968: jis0208<<14 | 0x2F<<7 | 0x5A, + 20635 - 19968: jis0212<<14 | 0x11<<7 | 0x04, + 20636 - 19968: jis0212<<14 | 0x11<<7 | 0x05, + 20638 - 19968: jis0212<<14 | 0x11<<7 | 0x06, + 20639 - 19968: jis0212<<14 | 0x11<<7 | 0x07, + 20640 - 19968: jis0212<<14 | 0x11<<7 | 0x08, + 20641 - 19968: jis0212<<14 | 0x11<<7 | 0x09, + 20642 - 19968: jis0212<<14 | 0x11<<7 | 0x0A, + 20650 - 19968: jis0212<<14 | 0x11<<7 | 0x0B, + 20652 - 19968: jis0208<<14 | 0x19<<7 | 0x24, + 20653 - 19968: jis0208<<14 | 0x2C<<7 | 0x22, + 20655 - 19968: jis0212<<14 | 0x11<<7 | 0x0C, + 20656 - 19968: jis0212<<14 | 0x11<<7 | 0x0D, + 20658 - 19968: jis0208<<14 | 0x2F<<7 | 0x5D, + 20659 - 19968: jis0208<<14 | 0x30<<7 | 0x02, + 20660 - 19968: jis0208<<14 | 0x2F<<7 | 0x5C, + 20661 - 19968: jis0208<<14 | 0x19<<7 | 0x23, + 20663 - 19968: jis0208<<14 | 0x1C<<7 | 0x5C, + 20665 - 19968: jis0212<<14 | 0x11<<7 | 0x0E, + 20666 - 19968: jis0212<<14 | 0x11<<7 | 0x0F, + 20669 - 19968: jis0212<<14 | 0x11<<7 | 0x10, + 20670 - 19968: jis0208<<14 | 0x16<<7 | 0x18, + 20672 - 19968: jis0212<<14 | 0x11<<7 | 0x11, + 20674 - 19968: jis0208<<14 | 0x30<<7 | 0x03, + 20675 - 19968: jis0212<<14 | 0x11<<7 | 0x12, + 20676 - 19968: jis0212<<14 | 0x11<<7 | 0x13, + 20677 - 19968: jis0208<<14 | 0x15<<7 | 0x2E, + 20679 - 19968: jis0212<<14 | 0x11<<7 | 0x14, + 20681 - 19968: jis0208<<14 | 0x30<<7 | 0x00, + 20682 - 19968: jis0208<<14 | 0x30<<7 | 0x01, + 20684 - 19968: jis0212<<14 | 0x11<<7 | 0x15, + 20685 - 19968: jis0208<<14 | 0x25<<7 | 0x0E, + 20686 - 19968: jis0212<<14 | 0x11<<7 | 0x16, + 20687 - 19968: jis0208<<14 | 0x20<<7 | 0x5B, + 20688 - 19968: jis0212<<14 | 0x11<<7 | 0x17, + 20689 - 19968: jis0208<<14 | 0x15<<7 | 0x02, + 20691 - 19968: jis0212<<14 | 0x11<<7 | 0x18, + 20692 - 19968: jis0212<<14 | 0x11<<7 | 0x19, + 20693 - 19968: jis0208<<14 | 0x2A<<7 | 0x2C, + 20694 - 19968: jis0208<<14 | 0x30<<7 | 0x04, + 20696 - 19968: jis0208<<14 | 0x58<<7 | 0x21, + 20698 - 19968: jis0208<<14 | 0x2D<<7 | 0x1C, + 20700 - 19968: jis0212<<14 | 0x11<<7 | 0x1B, + 20701 - 19968: jis0212<<14 | 0x11<<7 | 0x1C, + 20702 - 19968: jis0208<<14 | 0x30<<7 | 0x05, + 20703 - 19968: jis0212<<14 | 0x11<<7 | 0x1D, + 20706 - 19968: jis0212<<14 | 0x11<<7 | 0x1E, + 20707 - 19968: jis0208<<14 | 0x30<<7 | 0x08, + 20708 - 19968: jis0212<<14 | 0x11<<7 | 0x1F, + 20709 - 19968: jis0208<<14 | 0x30<<7 | 0x06, + 20710 - 19968: jis0212<<14 | 0x11<<7 | 0x20, + 20711 - 19968: jis0208<<14 | 0x20<<7 | 0x2D, + 20712 - 19968: jis0212<<14 | 0x11<<7 | 0x21, + 20713 - 19968: jis0212<<14 | 0x11<<7 | 0x22, + 20717 - 19968: jis0208<<14 | 0x30<<7 | 0x07, + 20718 - 19968: jis0208<<14 | 0x30<<7 | 0x09, + 20719 - 19968: jis0212<<14 | 0x11<<7 | 0x23, + 20721 - 19968: jis0212<<14 | 0x11<<7 | 0x24, + 20722 - 19968: jis0212<<14 | 0x11<<7 | 0x30, + 20724 - 19968: jis0208<<14 | 0x58<<7 | 0x20, + 20725 - 19968: jis0208<<14 | 0x30<<7 | 0x0B, + 20726 - 19968: jis0212<<14 | 0x11<<7 | 0x25, + 20729 - 19968: jis0208<<14 | 0x30<<7 | 0x0A, + 20730 - 19968: jis0212<<14 | 0x11<<7 | 0x26, + 20731 - 19968: jis0208<<14 | 0x29<<7 | 0x27, + 20734 - 19968: jis0212<<14 | 0x11<<7 | 0x27, + 20736 - 19968: jis0208<<14 | 0x14<<7 | 0x16, + 20737 - 19968: jis0208<<14 | 0x30<<7 | 0x0D, + 20738 - 19968: jis0208<<14 | 0x30<<7 | 0x0E, + 20739 - 19968: jis0212<<14 | 0x11<<7 | 0x28, + 20740 - 19968: jis0208<<14 | 0x11<<7 | 0x0E, + 20742 - 19968: jis0212<<14 | 0x11<<7 | 0x29, + 20743 - 19968: jis0212<<14 | 0x11<<7 | 0x2A, + 20744 - 19968: jis0212<<14 | 0x11<<7 | 0x2B, + 20745 - 19968: jis0208<<14 | 0x30<<7 | 0x0C, + 20747 - 19968: jis0212<<14 | 0x11<<7 | 0x2C, + 20748 - 19968: jis0212<<14 | 0x11<<7 | 0x2D, + 20749 - 19968: jis0212<<14 | 0x11<<7 | 0x2E, + 20750 - 19968: jis0212<<14 | 0x11<<7 | 0x2F, + 20752 - 19968: jis0212<<14 | 0x11<<7 | 0x31, + 20754 - 19968: jis0208<<14 | 0x1B<<7 | 0x53, + 20756 - 19968: jis0208<<14 | 0x30<<7 | 0x11, + 20757 - 19968: jis0208<<14 | 0x30<<7 | 0x10, + 20758 - 19968: jis0208<<14 | 0x30<<7 | 0x0F, + 20759 - 19968: jis0212<<14 | 0x11<<7 | 0x32, + 20760 - 19968: jis0208<<14 | 0x2F<<7 | 0x35, + 20761 - 19968: jis0212<<14 | 0x11<<7 | 0x33, + 20762 - 19968: jis0208<<14 | 0x30<<7 | 0x12, + 20763 - 19968: jis0212<<14 | 0x11<<7 | 0x34, + 20764 - 19968: jis0212<<14 | 0x11<<7 | 0x35, + 20765 - 19968: jis0212<<14 | 0x11<<7 | 0x36, + 20766 - 19968: jis0212<<14 | 0x11<<7 | 0x37, + 20767 - 19968: jis0208<<14 | 0x1C<<7 | 0x5D, + 20769 - 19968: jis0208<<14 | 0x30<<7 | 0x13, + 20771 - 19968: jis0212<<14 | 0x11<<7 | 0x38, + 20775 - 19968: jis0212<<14 | 0x11<<7 | 0x39, + 20776 - 19968: jis0212<<14 | 0x11<<7 | 0x3A, + 20778 - 19968: jis0208<<14 | 0x2C<<7 | 0x04, + 20780 - 19968: jis0212<<14 | 0x11<<7 | 0x3B, + 20781 - 19968: jis0212<<14 | 0x11<<7 | 0x3C, + 20783 - 19968: jis0212<<14 | 0x11<<7 | 0x3D, + 20785 - 19968: jis0212<<14 | 0x11<<7 | 0x3E, + 20786 - 19968: jis0208<<14 | 0x2B<<7 | 0x38, + 20787 - 19968: jis0212<<14 | 0x11<<7 | 0x3F, + 20788 - 19968: jis0212<<14 | 0x11<<7 | 0x40, + 20789 - 19968: jis0212<<14 | 0x11<<7 | 0x41, + 20791 - 19968: jis0208<<14 | 0x30<<7 | 0x15, + 20792 - 19968: jis0212<<14 | 0x11<<7 | 0x42, + 20793 - 19968: jis0212<<14 | 0x11<<7 | 0x43, + 20794 - 19968: jis0208<<14 | 0x30<<7 | 0x14, + 20795 - 19968: jis0208<<14 | 0x30<<7 | 0x17, + 20796 - 19968: jis0208<<14 | 0x30<<7 | 0x16, + 20799 - 19968: jis0208<<14 | 0x30<<7 | 0x18, + 20800 - 19968: jis0208<<14 | 0x30<<7 | 0x19, + 20801 - 19968: jis0208<<14 | 0x0F<<7 | 0x53, + 20802 - 19968: jis0212<<14 | 0x11<<7 | 0x44, + 20803 - 19968: jis0208<<14 | 0x17<<7 | 0x14, + 20804 - 19968: jis0208<<14 | 0x16<<7 | 0x1A, + 20805 - 19968: jis0208<<14 | 0x1C<<7 | 0x1B, + 20806 - 19968: jis0208<<14 | 0x22<<7 | 0x5A, + 20807 - 19968: jis0208<<14 | 0x15<<7 | 0x03, + 20808 - 19968: jis0208<<14 | 0x1F<<7 | 0x47, + 20809 - 19968: jis0208<<14 | 0x17<<7 | 0x56, + 20810 - 19968: jis0208<<14 | 0x58<<7 | 0x22, + 20811 - 19968: jis0208<<14 | 0x18<<7 | 0x4D, + 20812 - 19968: jis0208<<14 | 0x30<<7 | 0x1B, + 20813 - 19968: jis0208<<14 | 0x2B<<7 | 0x27, + 20814 - 19968: jis0208<<14 | 0x24<<7 | 0x25, + 20815 - 19968: jis0212<<14 | 0x11<<7 | 0x46, + 20816 - 19968: jis0208<<14 | 0x1A<<7 | 0x58, + 20818 - 19968: jis0208<<14 | 0x30<<7 | 0x1A, + 20819 - 19968: jis0212<<14 | 0x11<<7 | 0x47, + 20820 - 19968: jis0208<<14 | 0x30<<7 | 0x1C, + 20821 - 19968: jis0212<<14 | 0x11<<7 | 0x48, + 20823 - 19968: jis0212<<14 | 0x11<<7 | 0x49, + 20824 - 19968: jis0212<<14 | 0x11<<7 | 0x4A, + 20826 - 19968: jis0208<<14 | 0x24<<7 | 0x3D, + 20828 - 19968: jis0208<<14 | 0x12<<7 | 0x54, + 20831 - 19968: jis0212<<14 | 0x11<<7 | 0x4B, + 20834 - 19968: jis0208<<14 | 0x30<<7 | 0x1D, + 20836 - 19968: jis0208<<14 | 0x58<<7 | 0x23, + 20837 - 19968: jis0208<<14 | 0x25<<7 | 0x5D, + 20838 - 19968: jis0212<<14 | 0x11<<7 | 0x4D, + 20840 - 19968: jis0208<<14 | 0x20<<7 | 0x13, + 20841 - 19968: jis0208<<14 | 0x30<<7 | 0x1F, + 20842 - 19968: jis0208<<14 | 0x30<<7 | 0x20, + 20843 - 19968: jis0208<<14 | 0x27<<7 | 0x0B, + 20844 - 19968: jis0208<<14 | 0x17<<7 | 0x57, + 20845 - 19968: jis0208<<14 | 0x2E<<7 | 0x1A, + 20846 - 19968: jis0208<<14 | 0x30<<7 | 0x21, + 20849 - 19968: jis0208<<14 | 0x15<<7 | 0x05, + 20853 - 19968: jis0208<<14 | 0x29<<7 | 0x1B, + 20854 - 19968: jis0208<<14 | 0x21<<7 | 0x15, + 20855 - 19968: jis0208<<14 | 0x15<<7 | 0x50, + 20856 - 19968: jis0208<<14 | 0x24<<7 | 0x14, + 20860 - 19968: jis0208<<14 | 0x16<<7 | 0x52, + 20862 - 19968: jis0212<<14 | 0x11<<7 | 0x4E, + 20864 - 19968: jis0208<<14 | 0x30<<7 | 0x22, + 20866 - 19968: jis0208<<14 | 0x30<<7 | 0x23, + 20867 - 19968: jis0212<<14 | 0x11<<7 | 0x4F, + 20868 - 19968: jis0212<<14 | 0x11<<7 | 0x50, + 20869 - 19968: jis0208<<14 | 0x25<<7 | 0x41, + 20870 - 19968: jis0208<<14 | 0x10<<7 | 0x3E, + 20873 - 19968: jis0208<<14 | 0x30<<7 | 0x26, + 20874 - 19968: jis0208<<14 | 0x19<<7 | 0x5C, + 20875 - 19968: jis0212<<14 | 0x11<<7 | 0x51, + 20876 - 19968: jis0208<<14 | 0x30<<7 | 0x25, + 20877 - 19968: jis0208<<14 | 0x19<<7 | 0x25, + 20878 - 19968: jis0212<<14 | 0x11<<7 | 0x52, + 20879 - 19968: jis0208<<14 | 0x30<<7 | 0x27, + 20880 - 19968: jis0208<<14 | 0x45<<7 | 0x4D, + 20881 - 19968: jis0208<<14 | 0x30<<7 | 0x28, + 20882 - 19968: jis0208<<14 | 0x2A<<7 | 0x20, + 20883 - 19968: jis0208<<14 | 0x30<<7 | 0x29, + 20885 - 19968: jis0208<<14 | 0x30<<7 | 0x2A, + 20886 - 19968: jis0208<<14 | 0x30<<7 | 0x2B, + 20887 - 19968: jis0208<<14 | 0x1D<<7 | 0x48, + 20888 - 19968: jis0212<<14 | 0x11<<7 | 0x53, + 20889 - 19968: jis0208<<14 | 0x1B<<7 | 0x2B, + 20893 - 19968: jis0208<<14 | 0x58<<7 | 0x24, + 20896 - 19968: jis0208<<14 | 0x13<<7 | 0x06, + 20897 - 19968: jis0212<<14 | 0x11<<7 | 0x55, + 20898 - 19968: jis0208<<14 | 0x30<<7 | 0x2E, + 20899 - 19968: jis0212<<14 | 0x11<<7 | 0x56, + 20900 - 19968: jis0208<<14 | 0x30<<7 | 0x2C, + 20901 - 19968: jis0208<<14 | 0x2B<<7 | 0x1C, + 20902 - 19968: jis0208<<14 | 0x30<<7 | 0x2D, + 20904 - 19968: jis0208<<14 | 0x28<<7 | 0x39, + 20905 - 19968: jis0208<<14 | 0x30<<7 | 0x2F, + 20906 - 19968: jis0208<<14 | 0x30<<7 | 0x30, + 20907 - 19968: jis0208<<14 | 0x30<<7 | 0x31, + 20908 - 19968: jis0208<<14 | 0x24<<7 | 0x3E, + 20909 - 19968: jis0212<<14 | 0x11<<7 | 0x57, + 20912 - 19968: jis0208<<14 | 0x30<<7 | 0x35, + 20913 - 19968: jis0208<<14 | 0x30<<7 | 0x33, + 20914 - 19968: jis0208<<14 | 0x30<<7 | 0x34, + 20915 - 19968: jis0208<<14 | 0x30<<7 | 0x32, + 20916 - 19968: jis0208<<14 | 0x19<<7 | 0x42, + 20917 - 19968: jis0208<<14 | 0x30<<7 | 0x36, + 20918 - 19968: jis0208<<14 | 0x2B<<7 | 0x49, + 20919 - 19968: jis0208<<14 | 0x2D<<7 | 0x43, + 20920 - 19968: jis0212<<14 | 0x11<<7 | 0x58, + 20922 - 19968: jis0212<<14 | 0x11<<7 | 0x59, + 20924 - 19968: jis0212<<14 | 0x11<<7 | 0x5A, + 20925 - 19968: jis0208<<14 | 0x30<<7 | 0x37, + 20926 - 19968: jis0208<<14 | 0x58<<7 | 0x25, + 20927 - 19968: jis0212<<14 | 0x11<<7 | 0x5C, + 20930 - 19968: jis0212<<14 | 0x11<<7 | 0x5D, + 20932 - 19968: jis0208<<14 | 0x1F<<7 | 0x07, + 20933 - 19968: jis0208<<14 | 0x30<<7 | 0x38, + 20934 - 19968: jis0208<<14 | 0x1C<<7 | 0x39, + 20936 - 19968: jis0212<<14 | 0x12<<7 | 0x00, + 20937 - 19968: jis0208<<14 | 0x30<<7 | 0x39, + 20939 - 19968: jis0208<<14 | 0x22<<7 | 0x5B, + 20940 - 19968: jis0208<<14 | 0x2D<<7 | 0x1E, + 20941 - 19968: jis0208<<14 | 0x24<<7 | 0x3F, + 20943 - 19968: jis0212<<14 | 0x12<<7 | 0x01, + 20945 - 19968: jis0212<<14 | 0x12<<7 | 0x02, + 20946 - 19968: jis0212<<14 | 0x12<<7 | 0x03, + 20947 - 19968: jis0212<<14 | 0x12<<7 | 0x04, + 20949 - 19968: jis0212<<14 | 0x12<<7 | 0x05, + 20950 - 19968: jis0208<<14 | 0x31<<7 | 0x24, + 20952 - 19968: jis0212<<14 | 0x12<<7 | 0x06, + 20955 - 19968: jis0208<<14 | 0x30<<7 | 0x3A, + 20956 - 19968: jis0208<<14 | 0x53<<7 | 0x04, + 20957 - 19968: jis0208<<14 | 0x15<<7 | 0x24, + 20958 - 19968: jis0212<<14 | 0x12<<7 | 0x07, + 20960 - 19968: jis0208<<14 | 0x30<<7 | 0x3B, + 20961 - 19968: jis0208<<14 | 0x2A<<7 | 0x3D, + 20962 - 19968: jis0212<<14 | 0x12<<7 | 0x08, + 20965 - 19968: jis0212<<14 | 0x12<<7 | 0x09, + 20966 - 19968: jis0208<<14 | 0x1C<<7 | 0x47, + 20967 - 19968: jis0208<<14 | 0x21<<7 | 0x5B, + 20969 - 19968: jis0208<<14 | 0x30<<7 | 0x3D, + 20970 - 19968: jis0208<<14 | 0x25<<7 | 0x43, + 20972 - 19968: jis0208<<14 | 0x58<<7 | 0x26, + 20973 - 19968: jis0208<<14 | 0x30<<7 | 0x3E, + 20974 - 19968: jis0212<<14 | 0x12<<7 | 0x0A, + 20976 - 19968: jis0208<<14 | 0x30<<7 | 0x3F, + 20977 - 19968: jis0208<<14 | 0x12<<7 | 0x0D, + 20978 - 19968: jis0212<<14 | 0x12<<7 | 0x0B, + 20979 - 19968: jis0212<<14 | 0x12<<7 | 0x0C, + 20980 - 19968: jis0212<<14 | 0x12<<7 | 0x0D, + 20981 - 19968: jis0208<<14 | 0x30<<7 | 0x40, + 20982 - 19968: jis0208<<14 | 0x15<<7 | 0x06, + 20983 - 19968: jis0212<<14 | 0x12<<7 | 0x0E, + 20984 - 19968: jis0208<<14 | 0x25<<7 | 0x2B, + 20985 - 19968: jis0208<<14 | 0x10<<7 | 0x59, + 20986 - 19968: jis0208<<14 | 0x1C<<7 | 0x2F, + 20989 - 19968: jis0208<<14 | 0x27<<7 | 0x00, + 20990 - 19968: jis0208<<14 | 0x30<<7 | 0x41, + 20992 - 19968: jis0208<<14 | 0x24<<7 | 0x40, + 20993 - 19968: jis0212<<14 | 0x12<<7 | 0x0F, + 20994 - 19968: jis0212<<14 | 0x12<<7 | 0x10, + 20995 - 19968: jis0208<<14 | 0x1E<<7 | 0x2E, + 20996 - 19968: jis0208<<14 | 0x30<<7 | 0x42, + 20997 - 19968: jis0212<<14 | 0x12<<7 | 0x11, + 20998 - 19968: jis0208<<14 | 0x29<<7 | 0x0B, + 20999 - 19968: jis0208<<14 | 0x1F<<7 | 0x39, + 21000 - 19968: jis0208<<14 | 0x13<<7 | 0x01, + 21002 - 19968: jis0208<<14 | 0x13<<7 | 0x08, + 21003 - 19968: jis0208<<14 | 0x30<<7 | 0x43, + 21006 - 19968: jis0208<<14 | 0x30<<7 | 0x45, + 21009 - 19968: jis0208<<14 | 0x16<<7 | 0x19, + 21010 - 19968: jis0212<<14 | 0x12<<7 | 0x12, + 21011 - 19968: jis0212<<14 | 0x12<<7 | 0x13, + 21012 - 19968: jis0208<<14 | 0x30<<7 | 0x44, + 21013 - 19968: jis0208<<14 | 0x58<<7 | 0x27, + 21014 - 19968: jis0212<<14 | 0x12<<7 | 0x15, + 21015 - 19968: jis0208<<14 | 0x2D<<7 | 0x52, + 21016 - 19968: jis0212<<14 | 0x12<<7 | 0x16, + 21021 - 19968: jis0208<<14 | 0x1C<<7 | 0x48, + 21026 - 19968: jis0212<<14 | 0x12<<7 | 0x17, + 21028 - 19968: jis0208<<14 | 0x27<<7 | 0x1C, + 21029 - 19968: jis0208<<14 | 0x29<<7 | 0x2B, + 21031 - 19968: jis0208<<14 | 0x30<<7 | 0x46, + 21032 - 19968: jis0212<<14 | 0x12<<7 | 0x18, + 21033 - 19968: jis0208<<14 | 0x2C<<7 | 0x57, + 21034 - 19968: jis0208<<14 | 0x30<<7 | 0x47, + 21038 - 19968: jis0208<<14 | 0x30<<7 | 0x48, + 21040 - 19968: jis0208<<14 | 0x24<<7 | 0x5D, + 21041 - 19968: jis0212<<14 | 0x12<<7 | 0x19, + 21042 - 19968: jis0212<<14 | 0x12<<7 | 0x1A, + 21043 - 19968: jis0208<<14 | 0x30<<7 | 0x49, + 21045 - 19968: jis0212<<14 | 0x12<<7 | 0x1B, + 21046 - 19968: jis0208<<14 | 0x1F<<7 | 0x08, + 21047 - 19968: jis0208<<14 | 0x19<<7 | 0x5D, + 21048 - 19968: jis0208<<14 | 0x16<<7 | 0x53, + 21049 - 19968: jis0208<<14 | 0x30<<7 | 0x4A, + 21050 - 19968: jis0208<<14 | 0x1A<<7 | 0x28, + 21051 - 19968: jis0208<<14 | 0x18<<7 | 0x4E, + 21052 - 19968: jis0212<<14 | 0x12<<7 | 0x1C, + 21059 - 19968: jis0208<<14 | 0x23<<7 | 0x45, + 21060 - 19968: jis0208<<14 | 0x30<<7 | 0x4C, + 21061 - 19968: jis0212<<14 | 0x12<<7 | 0x1D, + 21063 - 19968: jis0208<<14 | 0x21<<7 | 0x06, + 21065 - 19968: jis0212<<14 | 0x12<<7 | 0x1E, + 21066 - 19968: jis0208<<14 | 0x19<<7 | 0x4E, + 21067 - 19968: jis0208<<14 | 0x30<<7 | 0x4D, + 21068 - 19968: jis0208<<14 | 0x30<<7 | 0x4E, + 21069 - 19968: jis0208<<14 | 0x20<<7 | 0x0F, + 21071 - 19968: jis0208<<14 | 0x30<<7 | 0x4B, + 21076 - 19968: jis0208<<14 | 0x30<<7 | 0x50, + 21077 - 19968: jis0212<<14 | 0x12<<7 | 0x1F, + 21078 - 19968: jis0208<<14 | 0x2A<<7 | 0x15, + 21079 - 19968: jis0212<<14 | 0x12<<7 | 0x20, + 21080 - 19968: jis0212<<14 | 0x12<<7 | 0x21, + 21082 - 19968: jis0212<<14 | 0x12<<7 | 0x22, + 21083 - 19968: jis0208<<14 | 0x18<<7 | 0x43, + 21084 - 19968: jis0212<<14 | 0x12<<7 | 0x23, + 21086 - 19968: jis0208<<14 | 0x30<<7 | 0x4F, + 21087 - 19968: jis0212<<14 | 0x12<<7 | 0x24, + 21088 - 19968: jis0212<<14 | 0x12<<7 | 0x25, + 21089 - 19968: jis0212<<14 | 0x12<<7 | 0x26, + 21091 - 19968: jis0208<<14 | 0x16<<7 | 0x54, + 21092 - 19968: jis0208<<14 | 0x19<<7 | 0x3D, + 21093 - 19968: jis0208<<14 | 0x26<<7 | 0x4C, + 21094 - 19968: jis0212<<14 | 0x12<<7 | 0x27, + 21097 - 19968: jis0208<<14 | 0x30<<7 | 0x53, + 21098 - 19968: jis0208<<14 | 0x30<<7 | 0x51, + 21102 - 19968: jis0212<<14 | 0x12<<7 | 0x28, + 21103 - 19968: jis0208<<14 | 0x28<<7 | 0x5A, + 21104 - 19968: jis0208<<14 | 0x1D<<7 | 0x49, + 21105 - 19968: jis0208<<14 | 0x30<<7 | 0x5A, + 21106 - 19968: jis0208<<14 | 0x12<<7 | 0x43, + 21107 - 19968: jis0208<<14 | 0x30<<7 | 0x54, + 21108 - 19968: jis0208<<14 | 0x30<<7 | 0x52, + 21109 - 19968: jis0208<<14 | 0x20<<7 | 0x2E, + 21111 - 19968: jis0212<<14 | 0x12<<7 | 0x29, + 21112 - 19968: jis0212<<14 | 0x12<<7 | 0x2A, + 21113 - 19968: jis0212<<14 | 0x12<<7 | 0x2B, + 21117 - 19968: jis0208<<14 | 0x30<<7 | 0x56, + 21119 - 19968: jis0208<<14 | 0x30<<7 | 0x55, + 21120 - 19968: jis0212<<14 | 0x12<<7 | 0x2C, + 21122 - 19968: jis0212<<14 | 0x12<<7 | 0x2D, + 21123 - 19968: jis0208<<14 | 0x12<<7 | 0x23, + 21125 - 19968: jis0212<<14 | 0x12<<7 | 0x2E, + 21127 - 19968: jis0208<<14 | 0x16<<7 | 0x3F, + 21128 - 19968: jis0208<<14 | 0x30<<7 | 0x5B, + 21129 - 19968: jis0208<<14 | 0x2D<<7 | 0x0C, + 21130 - 19968: jis0212<<14 | 0x12<<7 | 0x2F, + 21132 - 19968: jis0212<<14 | 0x12<<7 | 0x30, + 21133 - 19968: jis0208<<14 | 0x30<<7 | 0x57, + 21137 - 19968: jis0208<<14 | 0x30<<7 | 0x5C, + 21138 - 19968: jis0208<<14 | 0x30<<7 | 0x59, + 21139 - 19968: jis0212<<14 | 0x12<<7 | 0x31, + 21140 - 19968: jis0208<<14 | 0x30<<7 | 0x58, + 21141 - 19968: jis0212<<14 | 0x12<<7 | 0x32, + 21142 - 19968: jis0212<<14 | 0x12<<7 | 0x33, + 21143 - 19968: jis0212<<14 | 0x12<<7 | 0x34, + 21144 - 19968: jis0212<<14 | 0x12<<7 | 0x35, + 21146 - 19968: jis0212<<14 | 0x12<<7 | 0x36, + 21147 - 19968: jis0208<<14 | 0x2D<<7 | 0x2E, + 21148 - 19968: jis0208<<14 | 0x58<<7 | 0x28, + 21151 - 19968: jis0208<<14 | 0x17<<7 | 0x58, + 21152 - 19968: jis0208<<14 | 0x11<<7 | 0x22, + 21155 - 19968: jis0208<<14 | 0x2D<<7 | 0x53, + 21156 - 19968: jis0212<<14 | 0x12<<7 | 0x38, + 21157 - 19968: jis0212<<14 | 0x12<<7 | 0x39, + 21158 - 19968: jis0208<<14 | 0x58<<7 | 0x29, + 21159 - 19968: jis0212<<14 | 0x12<<7 | 0x3B, + 21161 - 19968: jis0208<<14 | 0x1C<<7 | 0x54, + 21162 - 19968: jis0208<<14 | 0x24<<7 | 0x37, + 21163 - 19968: jis0208<<14 | 0x18<<7 | 0x44, + 21164 - 19968: jis0208<<14 | 0x31<<7 | 0x01, + 21165 - 19968: jis0208<<14 | 0x31<<7 | 0x02, + 21167 - 19968: jis0208<<14 | 0x5A<<7 | 0x1B, + 21168 - 19968: jis0212<<14 | 0x12<<7 | 0x3D, + 21169 - 19968: jis0208<<14 | 0x2D<<7 | 0x44, + 21172 - 19968: jis0208<<14 | 0x2E<<7 | 0x0A, + 21173 - 19968: jis0208<<14 | 0x31<<7 | 0x04, + 21174 - 19968: jis0212<<14 | 0x12<<7 | 0x3E, + 21175 - 19968: jis0212<<14 | 0x12<<7 | 0x3F, + 21176 - 19968: jis0212<<14 | 0x12<<7 | 0x40, + 21177 - 19968: jis0208<<14 | 0x17<<7 | 0x59, + 21178 - 19968: jis0212<<14 | 0x12<<7 | 0x41, + 21179 - 19968: jis0212<<14 | 0x12<<7 | 0x42, + 21180 - 19968: jis0208<<14 | 0x31<<7 | 0x03, + 21181 - 19968: jis0212<<14 | 0x12<<7 | 0x43, + 21182 - 19968: jis0208<<14 | 0x12<<7 | 0x0E, + 21184 - 19968: jis0208<<14 | 0x58<<7 | 0x2A, + 21185 - 19968: jis0208<<14 | 0x31<<7 | 0x05, + 21187 - 19968: jis0208<<14 | 0x2A<<7 | 0x35, + 21188 - 19968: jis0212<<14 | 0x12<<7 | 0x45, + 21189 - 19968: jis0208<<14 | 0x23<<7 | 0x1B, + 21190 - 19968: jis0212<<14 | 0x12<<7 | 0x46, + 21191 - 19968: jis0208<<14 | 0x2C<<7 | 0x05, + 21192 - 19968: jis0212<<14 | 0x12<<7 | 0x47, + 21193 - 19968: jis0208<<14 | 0x29<<7 | 0x38, + 21196 - 19968: jis0212<<14 | 0x12<<7 | 0x48, + 21197 - 19968: jis0208<<14 | 0x31<<7 | 0x06, + 21199 - 19968: jis0212<<14 | 0x12<<7 | 0x49, + 21201 - 19968: jis0212<<14 | 0x12<<7 | 0x4A, + 21202 - 19968: jis0208<<14 | 0x4F<<7 | 0x34, + 21204 - 19968: jis0212<<14 | 0x12<<7 | 0x4B, + 21205 - 19968: jis0208<<14 | 0x25<<7 | 0x0F, + 21206 - 19968: jis0212<<14 | 0x12<<7 | 0x4C, + 21207 - 19968: jis0208<<14 | 0x31<<7 | 0x07, + 21208 - 19968: jis0208<<14 | 0x13<<7 | 0x09, + 21209 - 19968: jis0208<<14 | 0x2B<<7 | 0x12, + 21211 - 19968: jis0208<<14 | 0x58<<7 | 0x2B, + 21212 - 19968: jis0212<<14 | 0x12<<7 | 0x4E, + 21213 - 19968: jis0208<<14 | 0x1D<<7 | 0x00, + 21214 - 19968: jis0208<<14 | 0x31<<7 | 0x08, + 21215 - 19968: jis0208<<14 | 0x29<<7 | 0x46, + 21216 - 19968: jis0208<<14 | 0x31<<7 | 0x0C, + 21217 - 19968: jis0212<<14 | 0x12<<7 | 0x4F, + 21218 - 19968: jis0208<<14 | 0x1F<<7 | 0x09, + 21219 - 19968: jis0208<<14 | 0x31<<7 | 0x09, + 21220 - 19968: jis0208<<14 | 0x15<<7 | 0x2F, + 21221 - 19968: jis0212<<14 | 0x12<<7 | 0x50, + 21222 - 19968: jis0208<<14 | 0x31<<7 | 0x0A, + 21223 - 19968: jis0208<<14 | 0x13<<7 | 0x0A, + 21224 - 19968: jis0212<<14 | 0x12<<7 | 0x51, + 21225 - 19968: jis0212<<14 | 0x12<<7 | 0x52, + 21226 - 19968: jis0212<<14 | 0x12<<7 | 0x53, + 21228 - 19968: jis0212<<14 | 0x12<<7 | 0x54, + 21232 - 19968: jis0212<<14 | 0x12<<7 | 0x55, + 21233 - 19968: jis0212<<14 | 0x12<<7 | 0x56, + 21234 - 19968: jis0208<<14 | 0x16<<7 | 0x0D, + 21235 - 19968: jis0208<<14 | 0x31<<7 | 0x0D, + 21236 - 19968: jis0212<<14 | 0x12<<7 | 0x57, + 21237 - 19968: jis0208<<14 | 0x31<<7 | 0x0E, + 21238 - 19968: jis0212<<14 | 0x12<<7 | 0x58, + 21239 - 19968: jis0212<<14 | 0x12<<7 | 0x59, + 21240 - 19968: jis0208<<14 | 0x31<<7 | 0x0F, + 21241 - 19968: jis0208<<14 | 0x31<<7 | 0x10, + 21242 - 19968: jis0208<<14 | 0x1B<<7 | 0x3A, + 21246 - 19968: jis0208<<14 | 0x17<<7 | 0x5A, + 21247 - 19968: jis0208<<14 | 0x2B<<7 | 0x3D, + 21248 - 19968: jis0208<<14 | 0x58<<7 | 0x2C, + 21249 - 19968: jis0208<<14 | 0x2B<<7 | 0x47, + 21250 - 19968: jis0208<<14 | 0x25<<7 | 0x56, + 21251 - 19968: jis0212<<14 | 0x12<<7 | 0x5B, + 21253 - 19968: jis0208<<14 | 0x29<<7 | 0x50, + 21254 - 19968: jis0208<<14 | 0x31<<7 | 0x11, + 21255 - 19968: jis0208<<14 | 0x58<<7 | 0x2D, + 21256 - 19968: jis0208<<14 | 0x31<<7 | 0x12, + 21258 - 19968: jis0212<<14 | 0x12<<7 | 0x5C, + 21259 - 19968: jis0212<<14 | 0x12<<7 | 0x5D, + 21260 - 19968: jis0212<<14 | 0x13<<7 | 0x00, + 21261 - 19968: jis0208<<14 | 0x31<<7 | 0x14, + 21263 - 19968: jis0208<<14 | 0x31<<7 | 0x16, + 21264 - 19968: jis0208<<14 | 0x31<<7 | 0x15, + 21265 - 19968: jis0212<<14 | 0x13<<7 | 0x01, + 21267 - 19968: jis0212<<14 | 0x13<<7 | 0x02, + 21269 - 19968: jis0208<<14 | 0x31<<7 | 0x17, + 21270 - 19968: jis0208<<14 | 0x11<<7 | 0x1C, + 21271 - 19968: jis0208<<14 | 0x2A<<7 | 0x2B, + 21272 - 19968: jis0212<<14 | 0x13<<7 | 0x03, + 21273 - 19968: jis0208<<14 | 0x19<<7 | 0x5B, + 21274 - 19968: jis0208<<14 | 0x31<<7 | 0x18, + 21275 - 19968: jis0212<<14 | 0x13<<7 | 0x04, + 21276 - 19968: jis0212<<14 | 0x13<<7 | 0x05, + 21277 - 19968: jis0208<<14 | 0x20<<7 | 0x38, + 21278 - 19968: jis0212<<14 | 0x13<<7 | 0x06, + 21279 - 19968: jis0212<<14 | 0x13<<7 | 0x07, + 21280 - 19968: jis0208<<14 | 0x1D<<7 | 0x01, + 21281 - 19968: jis0208<<14 | 0x15<<7 | 0x08, + 21283 - 19968: jis0208<<14 | 0x31<<7 | 0x19, + 21284 - 19968: jis0208<<14 | 0x58<<7 | 0x2E, + 21285 - 19968: jis0212<<14 | 0x13<<7 | 0x08, + 21287 - 19968: jis0212<<14 | 0x13<<7 | 0x09, + 21288 - 19968: jis0212<<14 | 0x13<<7 | 0x0A, + 21289 - 19968: jis0212<<14 | 0x13<<7 | 0x0B, + 21290 - 19968: jis0208<<14 | 0x27<<7 | 0x3A, + 21291 - 19968: jis0212<<14 | 0x13<<7 | 0x0C, + 21292 - 19968: jis0212<<14 | 0x13<<7 | 0x0D, + 21293 - 19968: jis0212<<14 | 0x13<<7 | 0x0E, + 21295 - 19968: jis0208<<14 | 0x31<<7 | 0x1A, + 21296 - 19968: jis0212<<14 | 0x13<<7 | 0x0F, + 21297 - 19968: jis0208<<14 | 0x31<<7 | 0x1B, + 21298 - 19968: jis0212<<14 | 0x13<<7 | 0x10, + 21299 - 19968: jis0208<<14 | 0x31<<7 | 0x1C, + 21301 - 19968: jis0212<<14 | 0x13<<7 | 0x11, + 21304 - 19968: jis0208<<14 | 0x31<<7 | 0x1D, + 21305 - 19968: jis0208<<14 | 0x28<<7 | 0x03, + 21306 - 19968: jis0208<<14 | 0x15<<7 | 0x47, + 21307 - 19968: jis0208<<14 | 0x0F<<7 | 0x44, + 21308 - 19968: jis0212<<14 | 0x13<<7 | 0x12, + 21309 - 19968: jis0212<<14 | 0x13<<7 | 0x13, + 21310 - 19968: jis0212<<14 | 0x13<<7 | 0x14, + 21311 - 19968: jis0208<<14 | 0x25<<7 | 0x1E, + 21312 - 19968: jis0208<<14 | 0x31<<7 | 0x1E, + 21313 - 19968: jis0208<<14 | 0x1C<<7 | 0x1C, + 21314 - 19968: jis0212<<14 | 0x13<<7 | 0x15, + 21315 - 19968: jis0208<<14 | 0x1F<<7 | 0x48, + 21317 - 19968: jis0208<<14 | 0x31<<7 | 0x20, + 21318 - 19968: jis0208<<14 | 0x31<<7 | 0x1F, + 21319 - 19968: jis0208<<14 | 0x1D<<7 | 0x02, + 21320 - 19968: jis0208<<14 | 0x17<<7 | 0x40, + 21321 - 19968: jis0208<<14 | 0x31<<7 | 0x22, + 21322 - 19968: jis0208<<14 | 0x27<<7 | 0x1D, + 21323 - 19968: jis0212<<14 | 0x13<<7 | 0x17, + 21324 - 19968: jis0212<<14 | 0x13<<7 | 0x16, + 21325 - 19968: jis0208<<14 | 0x31<<7 | 0x23, + 21329 - 19968: jis0208<<14 | 0x27<<7 | 0x3B, + 21330 - 19968: jis0208<<14 | 0x21<<7 | 0x13, + 21331 - 19968: jis0208<<14 | 0x21<<7 | 0x4D, + 21332 - 19968: jis0208<<14 | 0x15<<7 | 0x07, + 21335 - 19968: jis0208<<14 | 0x25<<7 | 0x4D, + 21336 - 19968: jis0208<<14 | 0x22<<7 | 0x10, + 21337 - 19968: jis0212<<14 | 0x13<<7 | 0x18, + 21338 - 19968: jis0208<<14 | 0x26<<7 | 0x4D, + 21339 - 19968: jis0212<<14 | 0x13<<7 | 0x19, + 21340 - 19968: jis0208<<14 | 0x2A<<7 | 0x2D, + 21342 - 19968: jis0208<<14 | 0x31<<7 | 0x25, + 21344 - 19968: jis0208<<14 | 0x1F<<7 | 0x49, + 21345 - 19968: jis0212<<14 | 0x13<<7 | 0x1A, + 21347 - 19968: jis0212<<14 | 0x13<<7 | 0x1B, + 21349 - 19968: jis0212<<14 | 0x13<<7 | 0x1C, + 21350 - 19968: jis0208<<14 | 0x16<<7 | 0x14, + 21353 - 19968: jis0208<<14 | 0x31<<7 | 0x26, + 21356 - 19968: jis0212<<14 | 0x13<<7 | 0x1D, + 21357 - 19968: jis0212<<14 | 0x13<<7 | 0x1E, + 21358 - 19968: jis0208<<14 | 0x31<<7 | 0x27, + 21359 - 19968: jis0208<<14 | 0x10<<7 | 0x0B, + 21360 - 19968: jis0208<<14 | 0x0F<<7 | 0x54, + 21361 - 19968: jis0208<<14 | 0x13<<7 | 0x4C, + 21362 - 19968: jis0208<<14 | 0x58<<7 | 0x2F, + 21363 - 19968: jis0208<<14 | 0x21<<7 | 0x07, + 21364 - 19968: jis0208<<14 | 0x14<<7 | 0x30, + 21365 - 19968: jis0208<<14 | 0x2C<<7 | 0x50, + 21367 - 19968: jis0208<<14 | 0x31<<7 | 0x2A, + 21368 - 19968: jis0208<<14 | 0x11<<7 | 0x16, + 21369 - 19968: jis0212<<14 | 0x13<<7 | 0x20, + 21371 - 19968: jis0208<<14 | 0x31<<7 | 0x29, + 21374 - 19968: jis0212<<14 | 0x13<<7 | 0x21, + 21375 - 19968: jis0208<<14 | 0x15<<7 | 0x09, + 21378 - 19968: jis0208<<14 | 0x31<<7 | 0x2B, + 21379 - 19968: jis0212<<14 | 0x13<<7 | 0x22, + 21380 - 19968: jis0208<<14 | 0x2B<<7 | 0x50, + 21383 - 19968: jis0212<<14 | 0x13<<7 | 0x23, + 21384 - 19968: jis0212<<14 | 0x13<<7 | 0x24, + 21390 - 19968: jis0212<<14 | 0x13<<7 | 0x25, + 21395 - 19968: jis0208<<14 | 0x58<<7 | 0x30, + 21396 - 19968: jis0212<<14 | 0x13<<7 | 0x27, + 21398 - 19968: jis0208<<14 | 0x31<<7 | 0x2C, + 21400 - 19968: jis0208<<14 | 0x2D<<7 | 0x31, + 21401 - 19968: jis0212<<14 | 0x13<<7 | 0x28, + 21402 - 19968: jis0208<<14 | 0x17<<7 | 0x5B, + 21405 - 19968: jis0212<<14 | 0x13<<7 | 0x29, + 21407 - 19968: jis0208<<14 | 0x17<<7 | 0x15, + 21408 - 19968: jis0208<<14 | 0x31<<7 | 0x2D, + 21409 - 19968: jis0212<<14 | 0x13<<7 | 0x2A, + 21412 - 19968: jis0212<<14 | 0x13<<7 | 0x2B, + 21413 - 19968: jis0208<<14 | 0x31<<7 | 0x2F, + 21414 - 19968: jis0208<<14 | 0x31<<7 | 0x2E, + 21416 - 19968: jis0208<<14 | 0x1E<<7 | 0x3E, + 21417 - 19968: jis0208<<14 | 0x10<<7 | 0x18, + 21418 - 19968: jis0212<<14 | 0x13<<7 | 0x2C, + 21419 - 19968: jis0212<<14 | 0x13<<7 | 0x2D, + 21421 - 19968: jis0208<<14 | 0x10<<7 | 0x3D, + 21422 - 19968: jis0208<<14 | 0x31<<7 | 0x30, + 21423 - 19968: jis0212<<14 | 0x13<<7 | 0x2E, + 21424 - 19968: jis0208<<14 | 0x31<<7 | 0x31, + 21426 - 19968: jis0208<<14 | 0x58<<7 | 0x31, + 21427 - 19968: jis0208<<14 | 0x17<<7 | 0x16, + 21428 - 19968: jis0212<<14 | 0x13<<7 | 0x30, + 21429 - 19968: jis0212<<14 | 0x13<<7 | 0x31, + 21430 - 19968: jis0208<<14 | 0x31<<7 | 0x32, + 21431 - 19968: jis0212<<14 | 0x13<<7 | 0x32, + 21432 - 19968: jis0212<<14 | 0x13<<7 | 0x33, + 21434 - 19968: jis0212<<14 | 0x13<<7 | 0x34, + 21435 - 19968: jis0208<<14 | 0x14<<7 | 0x4D, + 21437 - 19968: jis0212<<14 | 0x13<<7 | 0x35, + 21440 - 19968: jis0212<<14 | 0x13<<7 | 0x36, + 21442 - 19968: jis0208<<14 | 0x1A<<7 | 0x11, + 21443 - 19968: jis0208<<14 | 0x31<<7 | 0x33, + 21445 - 19968: jis0212<<14 | 0x13<<7 | 0x37, + 21448 - 19968: jis0208<<14 | 0x2A<<7 | 0x53, + 21449 - 19968: jis0208<<14 | 0x19<<7 | 0x14, + 21450 - 19968: jis0208<<14 | 0x14<<7 | 0x39, + 21451 - 19968: jis0208<<14 | 0x2C<<7 | 0x06, + 21452 - 19968: jis0208<<14 | 0x20<<7 | 0x2F, + 21453 - 19968: jis0208<<14 | 0x27<<7 | 0x1E, + 21454 - 19968: jis0208<<14 | 0x1B<<7 | 0x5C, + 21455 - 19968: jis0212<<14 | 0x13<<7 | 0x38, + 21458 - 19968: jis0212<<14 | 0x13<<7 | 0x39, + 21459 - 19968: jis0212<<14 | 0x13<<7 | 0x3A, + 21460 - 19968: jis0208<<14 | 0x1C<<7 | 0x26, + 21461 - 19968: jis0212<<14 | 0x13<<7 | 0x3B, + 21462 - 19968: jis0208<<14 | 0x1B<<7 | 0x47, + 21463 - 19968: jis0208<<14 | 0x1B<<7 | 0x54, + 21465 - 19968: jis0208<<14 | 0x1C<<7 | 0x55, + 21466 - 19968: jis0212<<14 | 0x13<<7 | 0x3C, + 21467 - 19968: jis0208<<14 | 0x27<<7 | 0x1F, + 21469 - 19968: jis0208<<14 | 0x58<<7 | 0x32, + 21470 - 19968: jis0212<<14 | 0x13<<7 | 0x3E, + 21471 - 19968: jis0208<<14 | 0x31<<7 | 0x36, + 21472 - 19968: jis0212<<14 | 0x13<<7 | 0x3F, + 21473 - 19968: jis0208<<14 | 0x10<<7 | 0x22, + 21474 - 19968: jis0208<<14 | 0x20<<7 | 0x30, + 21475 - 19968: jis0208<<14 | 0x17<<7 | 0x5C, + 21476 - 19968: jis0208<<14 | 0x17<<7 | 0x24, + 21477 - 19968: jis0208<<14 | 0x15<<7 | 0x46, + 21478 - 19968: jis0212<<14 | 0x13<<7 | 0x40, + 21479 - 19968: jis0212<<14 | 0x13<<7 | 0x41, + 21480 - 19968: jis0208<<14 | 0x31<<7 | 0x3A, + 21481 - 19968: jis0208<<14 | 0x22<<7 | 0x00, + 21482 - 19968: jis0208<<14 | 0x21<<7 | 0x5D, + 21483 - 19968: jis0208<<14 | 0x15<<7 | 0x0A, + 21484 - 19968: jis0208<<14 | 0x1D<<7 | 0x03, + 21485 - 19968: jis0208<<14 | 0x31<<7 | 0x3B, + 21486 - 19968: jis0208<<14 | 0x31<<7 | 0x39, + 21487 - 19968: jis0208<<14 | 0x11<<7 | 0x23, + 21488 - 19968: jis0208<<14 | 0x21<<7 | 0x45, + 21489 - 19968: jis0208<<14 | 0x1B<<7 | 0x17, + 21490 - 19968: jis0208<<14 | 0x1A<<7 | 0x2A, + 21491 - 19968: jis0208<<14 | 0x10<<7 | 0x05, + 21493 - 19968: jis0212<<14 | 0x13<<7 | 0x42, + 21494 - 19968: jis0208<<14 | 0x12<<7 | 0x4F, + 21495 - 19968: jis0208<<14 | 0x18<<7 | 0x45, + 21496 - 19968: jis0208<<14 | 0x1A<<7 | 0x29, + 21498 - 19968: jis0208<<14 | 0x31<<7 | 0x3C, + 21505 - 19968: jis0208<<14 | 0x31<<7 | 0x3D, + 21506 - 19968: jis0212<<14 | 0x13<<7 | 0x43, + 21507 - 19968: jis0208<<14 | 0x14<<7 | 0x28, + 21508 - 19968: jis0208<<14 | 0x12<<7 | 0x25, + 21512 - 19968: jis0208<<14 | 0x18<<7 | 0x46, + 21513 - 19968: jis0208<<14 | 0x14<<7 | 0x27, + 21514 - 19968: jis0208<<14 | 0x23<<7 | 0x3E, + 21515 - 19968: jis0208<<14 | 0x10<<7 | 0x04, + 21516 - 19968: jis0208<<14 | 0x25<<7 | 0x10, + 21517 - 19968: jis0208<<14 | 0x2B<<7 | 0x1D, + 21518 - 19968: jis0208<<14 | 0x18<<7 | 0x00, + 21519 - 19968: jis0208<<14 | 0x2C<<7 | 0x58, + 21520 - 19968: jis0208<<14 | 0x24<<7 | 0x26, + 21521 - 19968: jis0208<<14 | 0x17<<7 | 0x5D, + 21523 - 19968: jis0212<<14 | 0x13<<7 | 0x44, + 21530 - 19968: jis0212<<14 | 0x13<<7 | 0x45, + 21531 - 19968: jis0208<<14 | 0x16<<7 | 0x0E, + 21533 - 19968: jis0208<<14 | 0x31<<7 | 0x46, + 21535 - 19968: jis0208<<14 | 0x15<<7 | 0x42, + 21536 - 19968: jis0208<<14 | 0x2A<<7 | 0x29, + 21537 - 19968: jis0212<<14 | 0x13<<7 | 0x46, + 21542 - 19968: jis0208<<14 | 0x27<<7 | 0x3C, + 21543 - 19968: jis0212<<14 | 0x13<<7 | 0x47, + 21544 - 19968: jis0212<<14 | 0x13<<7 | 0x48, + 21545 - 19968: jis0208<<14 | 0x31<<7 | 0x45, + 21546 - 19968: jis0212<<14 | 0x13<<7 | 0x49, + 21547 - 19968: jis0208<<14 | 0x13<<7 | 0x3D, + 21548 - 19968: jis0208<<14 | 0x31<<7 | 0x40, + 21549 - 19968: jis0208<<14 | 0x31<<7 | 0x41, + 21550 - 19968: jis0208<<14 | 0x31<<7 | 0x43, + 21551 - 19968: jis0212<<14 | 0x13<<7 | 0x4A, + 21553 - 19968: jis0212<<14 | 0x13<<7 | 0x4B, + 21556 - 19968: jis0212<<14 | 0x13<<7 | 0x4C, + 21557 - 19968: jis0212<<14 | 0x13<<7 | 0x4D, + 21558 - 19968: jis0208<<14 | 0x31<<7 | 0x44, + 21560 - 19968: jis0208<<14 | 0x14<<7 | 0x3A, + 21561 - 19968: jis0208<<14 | 0x1E<<7 | 0x40, + 21563 - 19968: jis0208<<14 | 0x29<<7 | 0x0C, + 21564 - 19968: jis0208<<14 | 0x31<<7 | 0x42, + 21565 - 19968: jis0208<<14 | 0x31<<7 | 0x3E, + 21566 - 19968: jis0208<<14 | 0x17<<7 | 0x42, + 21568 - 19968: jis0208<<14 | 0x31<<7 | 0x3F, + 21570 - 19968: jis0208<<14 | 0x2E<<7 | 0x03, + 21571 - 19968: jis0212<<14 | 0x13<<7 | 0x4E, + 21572 - 19968: jis0212<<14 | 0x13<<7 | 0x4F, + 21574 - 19968: jis0208<<14 | 0x29<<7 | 0x51, + 21575 - 19968: jis0212<<14 | 0x13<<7 | 0x50, + 21576 - 19968: jis0208<<14 | 0x23<<7 | 0x47, + 21577 - 19968: jis0208<<14 | 0x17<<7 | 0x41, + 21578 - 19968: jis0208<<14 | 0x18<<7 | 0x4F, + 21581 - 19968: jis0212<<14 | 0x13<<7 | 0x51, + 21582 - 19968: jis0208<<14 | 0x31<<7 | 0x47, + 21583 - 19968: jis0212<<14 | 0x13<<7 | 0x52, + 21585 - 19968: jis0208<<14 | 0x25<<7 | 0x3C, + 21598 - 19968: jis0212<<14 | 0x13<<7 | 0x53, + 21599 - 19968: jis0208<<14 | 0x31<<7 | 0x4B, + 21602 - 19968: jis0212<<14 | 0x13<<7 | 0x54, + 21604 - 19968: jis0212<<14 | 0x13<<7 | 0x55, + 21606 - 19968: jis0212<<14 | 0x13<<7 | 0x56, + 21607 - 19968: jis0212<<14 | 0x13<<7 | 0x57, + 21608 - 19968: jis0208<<14 | 0x1B<<7 | 0x5D, + 21609 - 19968: jis0212<<14 | 0x13<<7 | 0x58, + 21610 - 19968: jis0208<<14 | 0x1B<<7 | 0x55, + 21611 - 19968: jis0212<<14 | 0x13<<7 | 0x59, + 21613 - 19968: jis0212<<14 | 0x13<<7 | 0x5A, + 21614 - 19968: jis0212<<14 | 0x13<<7 | 0x5B, + 21616 - 19968: jis0208<<14 | 0x31<<7 | 0x4E, + 21617 - 19968: jis0208<<14 | 0x31<<7 | 0x4C, + 21619 - 19968: jis0208<<14 | 0x2B<<7 | 0x02, + 21620 - 19968: jis0212<<14 | 0x13<<7 | 0x5C, + 21621 - 19968: jis0208<<14 | 0x31<<7 | 0x49, + 21622 - 19968: jis0208<<14 | 0x31<<7 | 0x52, + 21623 - 19968: jis0208<<14 | 0x31<<7 | 0x4D, + 21627 - 19968: jis0208<<14 | 0x31<<7 | 0x50, + 21628 - 19968: jis0208<<14 | 0x17<<7 | 0x25, + 21629 - 19968: jis0208<<14 | 0x2B<<7 | 0x1E, + 21631 - 19968: jis0212<<14 | 0x13<<7 | 0x5D, + 21632 - 19968: jis0208<<14 | 0x31<<7 | 0x51, + 21633 - 19968: jis0212<<14 | 0x14<<7 | 0x00, + 21635 - 19968: jis0212<<14 | 0x14<<7 | 0x01, + 21636 - 19968: jis0208<<14 | 0x31<<7 | 0x53, + 21637 - 19968: jis0212<<14 | 0x14<<7 | 0x02, + 21638 - 19968: jis0208<<14 | 0x31<<7 | 0x55, + 21640 - 19968: jis0212<<14 | 0x14<<7 | 0x03, + 21641 - 19968: jis0212<<14 | 0x14<<7 | 0x04, + 21642 - 19968: jis0208<<14 | 0x58<<7 | 0x35, + 21643 - 19968: jis0208<<14 | 0x19<<7 | 0x4F, + 21644 - 19968: jis0208<<14 | 0x2E<<7 | 0x21, + 21645 - 19968: jis0212<<14 | 0x14<<7 | 0x05, + 21646 - 19968: jis0208<<14 | 0x31<<7 | 0x4A, + 21647 - 19968: jis0208<<14 | 0x31<<7 | 0x48, + 21648 - 19968: jis0208<<14 | 0x31<<7 | 0x54, + 21649 - 19968: jis0212<<14 | 0x14<<7 | 0x06, + 21650 - 19968: jis0208<<14 | 0x31<<7 | 0x4F, + 21653 - 19968: jis0212<<14 | 0x14<<7 | 0x07, + 21654 - 19968: jis0212<<14 | 0x14<<7 | 0x08, + 21660 - 19968: jis0208<<14 | 0x58<<7 | 0x34, + 21663 - 19968: jis0212<<14 | 0x14<<7 | 0x0A, + 21665 - 19968: jis0212<<14 | 0x14<<7 | 0x0B, + 21666 - 19968: jis0208<<14 | 0x31<<7 | 0x57, + 21668 - 19968: jis0208<<14 | 0x32<<7 | 0x02, + 21669 - 19968: jis0208<<14 | 0x31<<7 | 0x59, + 21670 - 19968: jis0212<<14 | 0x14<<7 | 0x0C, + 21671 - 19968: jis0212<<14 | 0x14<<7 | 0x0D, + 21672 - 19968: jis0208<<14 | 0x31<<7 | 0x5D, + 21673 - 19968: jis0208<<14 | 0x58<<7 | 0x36, + 21674 - 19968: jis0212<<14 | 0x14<<7 | 0x0F, + 21675 - 19968: jis0208<<14 | 0x32<<7 | 0x00, + 21676 - 19968: jis0208<<14 | 0x31<<7 | 0x5A, + 21677 - 19968: jis0212<<14 | 0x14<<7 | 0x10, + 21678 - 19968: jis0212<<14 | 0x14<<7 | 0x11, + 21679 - 19968: jis0208<<14 | 0x32<<7 | 0x1D, + 21681 - 19968: jis0212<<14 | 0x14<<7 | 0x12, + 21682 - 19968: jis0208<<14 | 0x19<<7 | 0x48, + 21683 - 19968: jis0208<<14 | 0x12<<7 | 0x10, + 21687 - 19968: jis0212<<14 | 0x14<<7 | 0x13, + 21688 - 19968: jis0208<<14 | 0x31<<7 | 0x58, + 21689 - 19968: jis0212<<14 | 0x14<<7 | 0x14, + 21690 - 19968: jis0212<<14 | 0x14<<7 | 0x15, + 21691 - 19968: jis0212<<14 | 0x14<<7 | 0x16, + 21692 - 19968: jis0208<<14 | 0x32<<7 | 0x04, + 21693 - 19968: jis0208<<14 | 0x0F<<7 | 0x55, + 21694 - 19968: jis0208<<14 | 0x32<<7 | 0x03, + 21695 - 19968: jis0212<<14 | 0x14<<7 | 0x17, + 21696 - 19968: jis0208<<14 | 0x0F<<7 | 0x04, + 21697 - 19968: jis0208<<14 | 0x28<<7 | 0x29, + 21698 - 19968: jis0208<<14 | 0x32<<7 | 0x01, + 21700 - 19968: jis0208<<14 | 0x31<<7 | 0x5B, + 21702 - 19968: jis0212<<14 | 0x14<<7 | 0x18, + 21703 - 19968: jis0208<<14 | 0x31<<7 | 0x56, + 21704 - 19968: jis0208<<14 | 0x31<<7 | 0x5C, + 21705 - 19968: jis0208<<14 | 0x19<<7 | 0x27, + 21706 - 19968: jis0212<<14 | 0x14<<7 | 0x19, + 21709 - 19968: jis0212<<14 | 0x14<<7 | 0x1A, + 21710 - 19968: jis0212<<14 | 0x14<<7 | 0x1B, + 21720 - 19968: jis0208<<14 | 0x32<<7 | 0x05, + 21728 - 19968: jis0212<<14 | 0x14<<7 | 0x1C, + 21729 - 19968: jis0208<<14 | 0x0F<<7 | 0x56, + 21730 - 19968: jis0208<<14 | 0x32<<7 | 0x0E, + 21733 - 19968: jis0208<<14 | 0x32<<7 | 0x06, + 21734 - 19968: jis0208<<14 | 0x32<<7 | 0x07, + 21736 - 19968: jis0208<<14 | 0x1D<<7 | 0x04, + 21737 - 19968: jis0208<<14 | 0x2A<<7 | 0x48, + 21738 - 19968: jis0212<<14 | 0x14<<7 | 0x1D, + 21740 - 19968: jis0212<<14 | 0x14<<7 | 0x1E, + 21741 - 19968: jis0208<<14 | 0x32<<7 | 0x0C, + 21742 - 19968: jis0208<<14 | 0x32<<7 | 0x0B, + 21743 - 19968: jis0212<<14 | 0x14<<7 | 0x1F, + 21746 - 19968: jis0208<<14 | 0x24<<7 | 0x0E, + 21750 - 19968: jis0212<<14 | 0x14<<7 | 0x20, + 21754 - 19968: jis0208<<14 | 0x32<<7 | 0x0D, + 21756 - 19968: jis0212<<14 | 0x14<<7 | 0x21, + 21757 - 19968: jis0208<<14 | 0x32<<7 | 0x0A, + 21758 - 19968: jis0212<<14 | 0x14<<7 | 0x22, + 21759 - 19968: jis0208<<14 | 0x58<<7 | 0x37, + 21760 - 19968: jis0212<<14 | 0x14<<7 | 0x24, + 21761 - 19968: jis0212<<14 | 0x14<<7 | 0x25, + 21764 - 19968: jis0208<<14 | 0x10<<7 | 0x13, + 21765 - 19968: jis0212<<14 | 0x14<<7 | 0x26, + 21766 - 19968: jis0208<<14 | 0x19<<7 | 0x15, + 21767 - 19968: jis0208<<14 | 0x1E<<7 | 0x0F, + 21768 - 19968: jis0212<<14 | 0x14<<7 | 0x27, + 21769 - 19968: jis0212<<14 | 0x14<<7 | 0x28, + 21772 - 19968: jis0212<<14 | 0x14<<7 | 0x29, + 21773 - 19968: jis0212<<14 | 0x14<<7 | 0x2A, + 21774 - 19968: jis0212<<14 | 0x14<<7 | 0x2B, + 21775 - 19968: jis0208<<14 | 0x32<<7 | 0x08, + 21776 - 19968: jis0208<<14 | 0x24<<7 | 0x41, + 21780 - 19968: jis0208<<14 | 0x32<<7 | 0x09, + 21781 - 19968: jis0212<<14 | 0x14<<7 | 0x2C, + 21782 - 19968: jis0208<<14 | 0x0F<<7 | 0x01, + 21802 - 19968: jis0212<<14 | 0x14<<7 | 0x2D, + 21803 - 19968: jis0212<<14 | 0x14<<7 | 0x2E, + 21806 - 19968: jis0208<<14 | 0x32<<7 | 0x13, + 21807 - 19968: jis0208<<14 | 0x2C<<7 | 0x02, + 21809 - 19968: jis0208<<14 | 0x1D<<7 | 0x06, + 21810 - 19968: jis0212<<14 | 0x14<<7 | 0x2F, + 21811 - 19968: jis0208<<14 | 0x32<<7 | 0x19, + 21813 - 19968: jis0212<<14 | 0x14<<7 | 0x30, + 21814 - 19968: jis0212<<14 | 0x14<<7 | 0x31, + 21816 - 19968: jis0208<<14 | 0x32<<7 | 0x18, + 21817 - 19968: jis0208<<14 | 0x32<<7 | 0x0F, + 21819 - 19968: jis0212<<14 | 0x14<<7 | 0x32, + 21820 - 19968: jis0212<<14 | 0x14<<7 | 0x33, + 21821 - 19968: jis0212<<14 | 0x14<<7 | 0x34, + 21822 - 19968: jis0208<<14 | 0x21<<7 | 0x22, + 21824 - 19968: jis0208<<14 | 0x32<<7 | 0x10, + 21825 - 19968: jis0212<<14 | 0x14<<7 | 0x35, + 21828 - 19968: jis0208<<14 | 0x21<<7 | 0x4E, + 21829 - 19968: jis0208<<14 | 0x32<<7 | 0x15, + 21830 - 19968: jis0208<<14 | 0x1D<<7 | 0x05, + 21831 - 19968: jis0212<<14 | 0x14<<7 | 0x36, + 21833 - 19968: jis0212<<14 | 0x14<<7 | 0x37, + 21834 - 19968: jis0212<<14 | 0x14<<7 | 0x38, + 21836 - 19968: jis0208<<14 | 0x32<<7 | 0x12, + 21837 - 19968: jis0212<<14 | 0x14<<7 | 0x39, + 21839 - 19968: jis0208<<14 | 0x2B<<7 | 0x43, + 21840 - 19968: jis0212<<14 | 0x14<<7 | 0x3A, + 21841 - 19968: jis0212<<14 | 0x14<<7 | 0x3B, + 21843 - 19968: jis0208<<14 | 0x16<<7 | 0x1B, + 21846 - 19968: jis0208<<14 | 0x32<<7 | 0x16, + 21847 - 19968: jis0208<<14 | 0x32<<7 | 0x17, + 21848 - 19968: jis0212<<14 | 0x14<<7 | 0x3C, + 21850 - 19968: jis0212<<14 | 0x14<<7 | 0x3D, + 21851 - 19968: jis0212<<14 | 0x14<<7 | 0x3E, + 21852 - 19968: jis0208<<14 | 0x32<<7 | 0x14, + 21853 - 19968: jis0208<<14 | 0x32<<7 | 0x1A, + 21854 - 19968: jis0212<<14 | 0x14<<7 | 0x3F, + 21856 - 19968: jis0212<<14 | 0x14<<7 | 0x40, + 21857 - 19968: jis0212<<14 | 0x14<<7 | 0x41, + 21859 - 19968: jis0208<<14 | 0x32<<7 | 0x11, + 21860 - 19968: jis0212<<14 | 0x14<<7 | 0x42, + 21862 - 19968: jis0212<<14 | 0x14<<7 | 0x43, + 21883 - 19968: jis0208<<14 | 0x32<<7 | 0x20, + 21884 - 19968: jis0208<<14 | 0x32<<7 | 0x25, + 21886 - 19968: jis0208<<14 | 0x32<<7 | 0x21, + 21887 - 19968: jis0212<<14 | 0x14<<7 | 0x44, + 21888 - 19968: jis0208<<14 | 0x32<<7 | 0x1C, + 21889 - 19968: jis0212<<14 | 0x14<<7 | 0x45, + 21890 - 19968: jis0212<<14 | 0x14<<7 | 0x46, + 21891 - 19968: jis0208<<14 | 0x32<<7 | 0x26, + 21892 - 19968: jis0208<<14 | 0x20<<7 | 0x10, + 21894 - 19968: jis0208<<14 | 0x58<<7 | 0x38, + 21895 - 19968: jis0208<<14 | 0x32<<7 | 0x28, + 21896 - 19968: jis0212<<14 | 0x14<<7 | 0x48, + 21897 - 19968: jis0208<<14 | 0x18<<7 | 0x01, + 21898 - 19968: jis0208<<14 | 0x32<<7 | 0x1E, + 21899 - 19968: jis0208<<14 | 0x22<<7 | 0x5C, + 21902 - 19968: jis0212<<14 | 0x14<<7 | 0x49, + 21903 - 19968: jis0212<<14 | 0x14<<7 | 0x4A, + 21905 - 19968: jis0212<<14 | 0x14<<7 | 0x4B, + 21906 - 19968: jis0212<<14 | 0x14<<7 | 0x4C, + 21907 - 19968: jis0212<<14 | 0x14<<7 | 0x4D, + 21908 - 19968: jis0212<<14 | 0x14<<7 | 0x4E, + 21911 - 19968: jis0212<<14 | 0x14<<7 | 0x4F, + 21912 - 19968: jis0208<<14 | 0x32<<7 | 0x22, + 21913 - 19968: jis0208<<14 | 0x32<<7 | 0x1B, + 21914 - 19968: jis0208<<14 | 0x13<<7 | 0x0C, + 21916 - 19968: jis0208<<14 | 0x13<<7 | 0x4D, + 21917 - 19968: jis0208<<14 | 0x12<<7 | 0x44, + 21918 - 19968: jis0208<<14 | 0x32<<7 | 0x23, + 21919 - 19968: jis0208<<14 | 0x32<<7 | 0x1F, + 21923 - 19968: jis0212<<14 | 0x14<<7 | 0x50, + 21924 - 19968: jis0212<<14 | 0x14<<7 | 0x51, + 21927 - 19968: jis0208<<14 | 0x16<<7 | 0x55, + 21928 - 19968: jis0208<<14 | 0x32<<7 | 0x29, + 21929 - 19968: jis0208<<14 | 0x32<<7 | 0x27, + 21930 - 19968: jis0208<<14 | 0x20<<7 | 0x32, + 21931 - 19968: jis0208<<14 | 0x14<<7 | 0x29, + 21932 - 19968: jis0208<<14 | 0x15<<7 | 0x0B, + 21933 - 19968: jis0212<<14 | 0x14<<7 | 0x52, + 21934 - 19968: jis0208<<14 | 0x32<<7 | 0x24, + 21936 - 19968: jis0208<<14 | 0x15<<7 | 0x53, + 21938 - 19968: jis0212<<14 | 0x14<<7 | 0x53, + 21942 - 19968: jis0208<<14 | 0x10<<7 | 0x23, + 21951 - 19968: jis0212<<14 | 0x14<<7 | 0x54, + 21953 - 19968: jis0212<<14 | 0x14<<7 | 0x55, + 21955 - 19968: jis0212<<14 | 0x14<<7 | 0x56, + 21956 - 19968: jis0208<<14 | 0x32<<7 | 0x2D, + 21957 - 19968: jis0208<<14 | 0x32<<7 | 0x2B, + 21958 - 19968: jis0212<<14 | 0x14<<7 | 0x57, + 21959 - 19968: jis0208<<14 | 0x33<<7 | 0x06, + 21961 - 19968: jis0212<<14 | 0x14<<7 | 0x58, + 21963 - 19968: jis0212<<14 | 0x14<<7 | 0x59, + 21964 - 19968: jis0212<<14 | 0x14<<7 | 0x5A, + 21966 - 19968: jis0212<<14 | 0x14<<7 | 0x5B, + 21969 - 19968: jis0212<<14 | 0x14<<7 | 0x5C, + 21970 - 19968: jis0212<<14 | 0x14<<7 | 0x5D, + 21971 - 19968: jis0212<<14 | 0x15<<7 | 0x00, + 21972 - 19968: jis0208<<14 | 0x32<<7 | 0x30, + 21975 - 19968: jis0212<<14 | 0x15<<7 | 0x01, + 21976 - 19968: jis0212<<14 | 0x15<<7 | 0x02, + 21978 - 19968: jis0208<<14 | 0x32<<7 | 0x2A, + 21979 - 19968: jis0212<<14 | 0x15<<7 | 0x03, + 21980 - 19968: jis0208<<14 | 0x32<<7 | 0x2E, + 21982 - 19968: jis0212<<14 | 0x15<<7 | 0x04, + 21983 - 19968: jis0208<<14 | 0x32<<7 | 0x2C, + 21986 - 19968: jis0212<<14 | 0x15<<7 | 0x05, + 21987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2B, + 21988 - 19968: jis0208<<14 | 0x32<<7 | 0x2F, + 21993 - 19968: jis0212<<14 | 0x15<<7 | 0x06, + 22006 - 19968: jis0212<<14 | 0x15<<7 | 0x07, + 22007 - 19968: jis0208<<14 | 0x32<<7 | 0x32, + 22009 - 19968: jis0208<<14 | 0x32<<7 | 0x37, + 22013 - 19968: jis0208<<14 | 0x32<<7 | 0x35, + 22014 - 19968: jis0208<<14 | 0x32<<7 | 0x34, + 22015 - 19968: jis0212<<14 | 0x15<<7 | 0x08, + 22021 - 19968: jis0212<<14 | 0x15<<7 | 0x09, + 22022 - 19968: jis0208<<14 | 0x22<<7 | 0x11, + 22024 - 19968: jis0212<<14 | 0x15<<7 | 0x0A, + 22025 - 19968: jis0208<<14 | 0x11<<7 | 0x24, + 22026 - 19968: jis0212<<14 | 0x15<<7 | 0x0B, + 22029 - 19968: jis0212<<14 | 0x15<<7 | 0x0C, + 22030 - 19968: jis0212<<14 | 0x15<<7 | 0x0D, + 22031 - 19968: jis0212<<14 | 0x15<<7 | 0x0E, + 22032 - 19968: jis0212<<14 | 0x15<<7 | 0x0F, + 22033 - 19968: jis0212<<14 | 0x15<<7 | 0x10, + 22034 - 19968: jis0212<<14 | 0x15<<7 | 0x11, + 22036 - 19968: jis0208<<14 | 0x32<<7 | 0x31, + 22038 - 19968: jis0208<<14 | 0x32<<7 | 0x33, + 22039 - 19968: jis0208<<14 | 0x1D<<7 | 0x07, + 22040 - 19968: jis0208<<14 | 0x10<<7 | 0x12, + 22041 - 19968: jis0212<<14 | 0x15<<7 | 0x12, + 22043 - 19968: jis0208<<14 | 0x32<<7 | 0x36, + 22057 - 19968: jis0208<<14 | 0x11<<7 | 0x3D, + 22060 - 19968: jis0212<<14 | 0x15<<7 | 0x13, + 22063 - 19968: jis0208<<14 | 0x32<<7 | 0x41, + 22064 - 19968: jis0212<<14 | 0x15<<7 | 0x14, + 22065 - 19968: jis0208<<14 | 0x1D<<7 | 0x5B, + 22066 - 19968: jis0208<<14 | 0x32<<7 | 0x3D, + 22067 - 19968: jis0212<<14 | 0x15<<7 | 0x15, + 22068 - 19968: jis0208<<14 | 0x32<<7 | 0x3B, + 22069 - 19968: jis0212<<14 | 0x15<<7 | 0x16, + 22070 - 19968: jis0208<<14 | 0x32<<7 | 0x3C, + 22071 - 19968: jis0212<<14 | 0x15<<7 | 0x17, + 22072 - 19968: jis0208<<14 | 0x32<<7 | 0x3E, + 22073 - 19968: jis0212<<14 | 0x15<<7 | 0x18, + 22075 - 19968: jis0212<<14 | 0x15<<7 | 0x19, + 22076 - 19968: jis0212<<14 | 0x15<<7 | 0x1A, + 22077 - 19968: jis0212<<14 | 0x15<<7 | 0x1B, + 22079 - 19968: jis0212<<14 | 0x15<<7 | 0x1C, + 22080 - 19968: jis0212<<14 | 0x15<<7 | 0x1D, + 22081 - 19968: jis0212<<14 | 0x15<<7 | 0x1E, + 22082 - 19968: jis0208<<14 | 0x10<<7 | 0x1C, + 22083 - 19968: jis0212<<14 | 0x15<<7 | 0x1F, + 22084 - 19968: jis0212<<14 | 0x15<<7 | 0x20, + 22086 - 19968: jis0212<<14 | 0x15<<7 | 0x21, + 22089 - 19968: jis0212<<14 | 0x15<<7 | 0x22, + 22091 - 19968: jis0212<<14 | 0x15<<7 | 0x23, + 22092 - 19968: jis0208<<14 | 0x20<<7 | 0x18, + 22093 - 19968: jis0212<<14 | 0x15<<7 | 0x24, + 22094 - 19968: jis0208<<14 | 0x32<<7 | 0x38, + 22095 - 19968: jis0212<<14 | 0x15<<7 | 0x25, + 22096 - 19968: jis0208<<14 | 0x32<<7 | 0x39, + 22100 - 19968: jis0212<<14 | 0x15<<7 | 0x26, + 22107 - 19968: jis0208<<14 | 0x12<<7 | 0x59, + 22110 - 19968: jis0212<<14 | 0x15<<7 | 0x27, + 22112 - 19968: jis0212<<14 | 0x15<<7 | 0x28, + 22113 - 19968: jis0212<<14 | 0x15<<7 | 0x29, + 22114 - 19968: jis0212<<14 | 0x15<<7 | 0x2A, + 22115 - 19968: jis0212<<14 | 0x15<<7 | 0x2B, + 22116 - 19968: jis0208<<14 | 0x32<<7 | 0x40, + 22118 - 19968: jis0212<<14 | 0x15<<7 | 0x2C, + 22120 - 19968: jis0208<<14 | 0x13<<7 | 0x4E, + 22121 - 19968: jis0212<<14 | 0x15<<7 | 0x2D, + 22122 - 19968: jis0208<<14 | 0x32<<7 | 0x43, + 22123 - 19968: jis0208<<14 | 0x32<<7 | 0x3F, + 22124 - 19968: jis0208<<14 | 0x32<<7 | 0x42, + 22125 - 19968: jis0212<<14 | 0x15<<7 | 0x2E, + 22127 - 19968: jis0212<<14 | 0x15<<7 | 0x2F, + 22129 - 19968: jis0212<<14 | 0x15<<7 | 0x30, + 22130 - 19968: jis0212<<14 | 0x15<<7 | 0x31, + 22132 - 19968: jis0208<<14 | 0x29<<7 | 0x0D, + 22133 - 19968: jis0212<<14 | 0x15<<7 | 0x32, + 22136 - 19968: jis0208<<14 | 0x25<<7 | 0x34, + 22138 - 19968: jis0208<<14 | 0x27<<7 | 0x17, + 22144 - 19968: jis0208<<14 | 0x32<<7 | 0x45, + 22148 - 19968: jis0212<<14 | 0x15<<7 | 0x33, + 22149 - 19968: jis0212<<14 | 0x15<<7 | 0x34, + 22150 - 19968: jis0208<<14 | 0x32<<7 | 0x44, + 22151 - 19968: jis0208<<14 | 0x12<<7 | 0x24, + 22152 - 19968: jis0212<<14 | 0x15<<7 | 0x35, + 22154 - 19968: jis0208<<14 | 0x32<<7 | 0x46, + 22155 - 19968: jis0212<<14 | 0x15<<7 | 0x36, + 22156 - 19968: jis0212<<14 | 0x15<<7 | 0x37, + 22159 - 19968: jis0208<<14 | 0x32<<7 | 0x49, + 22164 - 19968: jis0208<<14 | 0x32<<7 | 0x48, + 22165 - 19968: jis0212<<14 | 0x15<<7 | 0x38, + 22169 - 19968: jis0212<<14 | 0x15<<7 | 0x39, + 22170 - 19968: jis0212<<14 | 0x15<<7 | 0x3A, + 22173 - 19968: jis0212<<14 | 0x15<<7 | 0x3B, + 22174 - 19968: jis0212<<14 | 0x15<<7 | 0x3C, + 22175 - 19968: jis0212<<14 | 0x15<<7 | 0x3D, + 22176 - 19968: jis0208<<14 | 0x32<<7 | 0x47, + 22178 - 19968: jis0208<<14 | 0x26<<7 | 0x18, + 22181 - 19968: jis0208<<14 | 0x32<<7 | 0x4A, + 22182 - 19968: jis0212<<14 | 0x15<<7 | 0x3E, + 22183 - 19968: jis0212<<14 | 0x15<<7 | 0x3F, + 22184 - 19968: jis0212<<14 | 0x15<<7 | 0x40, + 22185 - 19968: jis0212<<14 | 0x15<<7 | 0x41, + 22187 - 19968: jis0212<<14 | 0x15<<7 | 0x42, + 22188 - 19968: jis0212<<14 | 0x15<<7 | 0x43, + 22189 - 19968: jis0212<<14 | 0x15<<7 | 0x44, + 22190 - 19968: jis0208<<14 | 0x32<<7 | 0x4B, + 22193 - 19968: jis0212<<14 | 0x15<<7 | 0x45, + 22195 - 19968: jis0212<<14 | 0x15<<7 | 0x46, + 22196 - 19968: jis0208<<14 | 0x32<<7 | 0x4D, + 22198 - 19968: jis0208<<14 | 0x32<<7 | 0x4C, + 22199 - 19968: jis0212<<14 | 0x15<<7 | 0x47, + 22204 - 19968: jis0208<<14 | 0x32<<7 | 0x4F, + 22206 - 19968: jis0212<<14 | 0x15<<7 | 0x48, + 22208 - 19968: jis0208<<14 | 0x32<<7 | 0x52, + 22209 - 19968: jis0208<<14 | 0x32<<7 | 0x50, + 22210 - 19968: jis0208<<14 | 0x32<<7 | 0x4E, + 22211 - 19968: jis0208<<14 | 0x32<<7 | 0x51, + 22213 - 19968: jis0212<<14 | 0x15<<7 | 0x49, + 22216 - 19968: jis0208<<14 | 0x32<<7 | 0x53, + 22217 - 19968: jis0212<<14 | 0x15<<7 | 0x4A, + 22218 - 19968: jis0212<<14 | 0x15<<7 | 0x4B, + 22219 - 19968: jis0212<<14 | 0x15<<7 | 0x4C, + 22220 - 19968: jis0212<<14 | 0x15<<7 | 0x4F, + 22221 - 19968: jis0212<<14 | 0x15<<7 | 0x50, + 22222 - 19968: jis0208<<14 | 0x32<<7 | 0x54, + 22223 - 19968: jis0212<<14 | 0x15<<7 | 0x4D, + 22224 - 19968: jis0212<<14 | 0x15<<7 | 0x4E, + 22225 - 19968: jis0208<<14 | 0x32<<7 | 0x55, + 22227 - 19968: jis0208<<14 | 0x32<<7 | 0x56, + 22231 - 19968: jis0208<<14 | 0x32<<7 | 0x57, + 22232 - 19968: jis0208<<14 | 0x30<<7 | 0x24, + 22233 - 19968: jis0212<<14 | 0x15<<7 | 0x51, + 22234 - 19968: jis0208<<14 | 0x1B<<7 | 0x5B, + 22235 - 19968: jis0208<<14 | 0x1A<<7 | 0x2C, + 22236 - 19968: jis0212<<14 | 0x15<<7 | 0x52, + 22237 - 19968: jis0212<<14 | 0x15<<7 | 0x53, + 22238 - 19968: jis0208<<14 | 0x11<<7 | 0x52, + 22239 - 19968: jis0212<<14 | 0x15<<7 | 0x54, + 22240 - 19968: jis0208<<14 | 0x0F<<7 | 0x57, + 22241 - 19968: jis0212<<14 | 0x15<<7 | 0x55, + 22243 - 19968: jis0208<<14 | 0x22<<7 | 0x23, + 22244 - 19968: jis0212<<14 | 0x15<<7 | 0x56, + 22245 - 19968: jis0212<<14 | 0x15<<7 | 0x57, + 22246 - 19968: jis0212<<14 | 0x15<<7 | 0x58, + 22247 - 19968: jis0212<<14 | 0x15<<7 | 0x59, + 22248 - 19968: jis0212<<14 | 0x15<<7 | 0x5A, + 22251 - 19968: jis0212<<14 | 0x15<<7 | 0x5C, + 22253 - 19968: jis0212<<14 | 0x15<<7 | 0x5D, + 22254 - 19968: jis0208<<14 | 0x32<<7 | 0x58, + 22256 - 19968: jis0208<<14 | 0x19<<7 | 0x03, + 22257 - 19968: jis0212<<14 | 0x15<<7 | 0x5B, + 22258 - 19968: jis0208<<14 | 0x0F<<7 | 0x2E, + 22259 - 19968: jis0208<<14 | 0x1E<<7 | 0x3D, + 22262 - 19968: jis0212<<14 | 0x16<<7 | 0x00, + 22263 - 19968: jis0212<<14 | 0x16<<7 | 0x01, + 22265 - 19968: jis0208<<14 | 0x32<<7 | 0x59, + 22266 - 19968: jis0208<<14 | 0x17<<7 | 0x26, + 22269 - 19968: jis0208<<14 | 0x18<<7 | 0x50, + 22271 - 19968: jis0208<<14 | 0x32<<7 | 0x5B, + 22272 - 19968: jis0208<<14 | 0x32<<7 | 0x5A, + 22273 - 19968: jis0212<<14 | 0x16<<7 | 0x02, + 22274 - 19968: jis0212<<14 | 0x16<<7 | 0x03, + 22275 - 19968: jis0208<<14 | 0x29<<7 | 0x3F, + 22276 - 19968: jis0208<<14 | 0x32<<7 | 0x5C, + 22279 - 19968: jis0212<<14 | 0x16<<7 | 0x04, + 22280 - 19968: jis0208<<14 | 0x33<<7 | 0x00, + 22281 - 19968: jis0208<<14 | 0x32<<7 | 0x5D, + 22282 - 19968: jis0212<<14 | 0x16<<7 | 0x05, + 22283 - 19968: jis0208<<14 | 0x33<<7 | 0x01, + 22284 - 19968: jis0212<<14 | 0x16<<7 | 0x06, + 22285 - 19968: jis0208<<14 | 0x33<<7 | 0x02, + 22287 - 19968: jis0208<<14 | 0x16<<7 | 0x56, + 22289 - 19968: jis0212<<14 | 0x16<<7 | 0x07, + 22290 - 19968: jis0208<<14 | 0x10<<7 | 0x3F, + 22291 - 19968: jis0208<<14 | 0x33<<7 | 0x03, + 22293 - 19968: jis0212<<14 | 0x16<<7 | 0x08, + 22294 - 19968: jis0208<<14 | 0x33<<7 | 0x05, + 22296 - 19968: jis0208<<14 | 0x33<<7 | 0x04, + 22298 - 19968: jis0212<<14 | 0x16<<7 | 0x09, + 22299 - 19968: jis0212<<14 | 0x16<<7 | 0x0A, + 22300 - 19968: jis0208<<14 | 0x33<<7 | 0x07, + 22301 - 19968: jis0212<<14 | 0x16<<7 | 0x0B, + 22303 - 19968: jis0208<<14 | 0x24<<7 | 0x39, + 22304 - 19968: jis0212<<14 | 0x16<<7 | 0x0C, + 22306 - 19968: jis0212<<14 | 0x16<<7 | 0x0D, + 22307 - 19968: jis0212<<14 | 0x16<<7 | 0x0E, + 22308 - 19968: jis0212<<14 | 0x16<<7 | 0x0F, + 22309 - 19968: jis0212<<14 | 0x16<<7 | 0x10, + 22310 - 19968: jis0208<<14 | 0x33<<7 | 0x08, + 22311 - 19968: jis0208<<14 | 0x0F<<7 | 0x14, + 22312 - 19968: jis0208<<14 | 0x19<<7 | 0x3E, + 22313 - 19968: jis0212<<14 | 0x16<<7 | 0x11, + 22314 - 19968: jis0212<<14 | 0x16<<7 | 0x12, + 22316 - 19968: jis0212<<14 | 0x16<<7 | 0x13, + 22317 - 19968: jis0208<<14 | 0x16<<7 | 0x1C, + 22318 - 19968: jis0212<<14 | 0x16<<7 | 0x14, + 22319 - 19968: jis0212<<14 | 0x16<<7 | 0x15, + 22320 - 19968: jis0208<<14 | 0x22<<7 | 0x2E, + 22323 - 19968: jis0212<<14 | 0x16<<7 | 0x16, + 22324 - 19968: jis0212<<14 | 0x16<<7 | 0x17, + 22327 - 19968: jis0208<<14 | 0x33<<7 | 0x09, + 22328 - 19968: jis0208<<14 | 0x33<<7 | 0x0A, + 22331 - 19968: jis0208<<14 | 0x33<<7 | 0x0C, + 22333 - 19968: jis0212<<14 | 0x16<<7 | 0x18, + 22334 - 19968: jis0212<<14 | 0x16<<7 | 0x19, + 22335 - 19968: jis0212<<14 | 0x16<<7 | 0x1A, + 22336 - 19968: jis0208<<14 | 0x33<<7 | 0x0D, + 22338 - 19968: jis0208<<14 | 0x19<<7 | 0x43, + 22341 - 19968: jis0212<<14 | 0x16<<7 | 0x1B, + 22342 - 19968: jis0212<<14 | 0x16<<7 | 0x1C, + 22343 - 19968: jis0208<<14 | 0x15<<7 | 0x30, + 22346 - 19968: jis0208<<14 | 0x2A<<7 | 0x16, + 22348 - 19968: jis0212<<14 | 0x16<<7 | 0x1D, + 22349 - 19968: jis0212<<14 | 0x16<<7 | 0x1E, + 22350 - 19968: jis0208<<14 | 0x33<<7 | 0x0B, + 22351 - 19968: jis0208<<14 | 0x33<<7 | 0x0E, + 22352 - 19968: jis0208<<14 | 0x19<<7 | 0x20, + 22353 - 19968: jis0208<<14 | 0x18<<7 | 0x02, + 22354 - 19968: jis0212<<14 | 0x16<<7 | 0x1F, + 22361 - 19968: jis0208<<14 | 0x58<<7 | 0x39, + 22369 - 19968: jis0208<<14 | 0x33<<7 | 0x12, + 22370 - 19968: jis0212<<14 | 0x16<<7 | 0x20, + 22372 - 19968: jis0208<<14 | 0x19<<7 | 0x04, + 22373 - 19968: jis0208<<14 | 0x58<<7 | 0x3A, + 22374 - 19968: jis0208<<14 | 0x22<<7 | 0x12, + 22375 - 19968: jis0212<<14 | 0x16<<7 | 0x22, + 22376 - 19968: jis0212<<14 | 0x16<<7 | 0x23, + 22377 - 19968: jis0208<<14 | 0x33<<7 | 0x0F, + 22378 - 19968: jis0208<<14 | 0x23<<7 | 0x39, + 22379 - 19968: jis0212<<14 | 0x16<<7 | 0x24, + 22381 - 19968: jis0212<<14 | 0x16<<7 | 0x25, + 22382 - 19968: jis0212<<14 | 0x16<<7 | 0x26, + 22383 - 19968: jis0212<<14 | 0x16<<7 | 0x27, + 22384 - 19968: jis0212<<14 | 0x16<<7 | 0x28, + 22385 - 19968: jis0212<<14 | 0x16<<7 | 0x29, + 22387 - 19968: jis0212<<14 | 0x16<<7 | 0x2A, + 22388 - 19968: jis0212<<14 | 0x16<<7 | 0x2B, + 22389 - 19968: jis0212<<14 | 0x16<<7 | 0x2C, + 22391 - 19968: jis0212<<14 | 0x16<<7 | 0x2D, + 22393 - 19968: jis0212<<14 | 0x16<<7 | 0x2E, + 22394 - 19968: jis0212<<14 | 0x16<<7 | 0x2F, + 22395 - 19968: jis0212<<14 | 0x16<<7 | 0x30, + 22396 - 19968: jis0212<<14 | 0x16<<7 | 0x31, + 22398 - 19968: jis0212<<14 | 0x16<<7 | 0x32, + 22399 - 19968: jis0208<<14 | 0x33<<7 | 0x13, + 22401 - 19968: jis0212<<14 | 0x16<<7 | 0x33, + 22402 - 19968: jis0208<<14 | 0x1E<<7 | 0x41, + 22403 - 19968: jis0212<<14 | 0x16<<7 | 0x34, + 22408 - 19968: jis0208<<14 | 0x33<<7 | 0x11, + 22409 - 19968: jis0208<<14 | 0x33<<7 | 0x14, + 22411 - 19968: jis0208<<14 | 0x16<<7 | 0x1E, + 22412 - 19968: jis0212<<14 | 0x16<<7 | 0x35, + 22419 - 19968: jis0208<<14 | 0x33<<7 | 0x15, + 22420 - 19968: jis0212<<14 | 0x16<<7 | 0x36, + 22421 - 19968: jis0212<<14 | 0x16<<7 | 0x3F, + 22423 - 19968: jis0212<<14 | 0x16<<7 | 0x37, + 22425 - 19968: jis0212<<14 | 0x16<<7 | 0x38, + 22426 - 19968: jis0212<<14 | 0x16<<7 | 0x39, + 22428 - 19968: jis0212<<14 | 0x16<<7 | 0x3A, + 22429 - 19968: jis0212<<14 | 0x16<<7 | 0x3B, + 22430 - 19968: jis0212<<14 | 0x16<<7 | 0x3C, + 22431 - 19968: jis0212<<14 | 0x16<<7 | 0x3D, + 22432 - 19968: jis0208<<14 | 0x33<<7 | 0x16, + 22433 - 19968: jis0212<<14 | 0x16<<7 | 0x3E, + 22434 - 19968: jis0208<<14 | 0x18<<7 | 0x03, + 22435 - 19968: jis0208<<14 | 0x12<<7 | 0x1F, + 22436 - 19968: jis0208<<14 | 0x33<<7 | 0x18, + 22439 - 19968: jis0212<<14 | 0x16<<7 | 0x40, + 22440 - 19968: jis0212<<14 | 0x16<<7 | 0x41, + 22441 - 19968: jis0212<<14 | 0x16<<7 | 0x42, + 22442 - 19968: jis0208<<14 | 0x33<<7 | 0x19, + 22444 - 19968: jis0208<<14 | 0x58<<7 | 0x3B, + 22448 - 19968: jis0208<<14 | 0x33<<7 | 0x1A, + 22451 - 19968: jis0208<<14 | 0x33<<7 | 0x17, + 22456 - 19968: jis0212<<14 | 0x16<<7 | 0x44, + 22461 - 19968: jis0212<<14 | 0x16<<7 | 0x45, + 22464 - 19968: jis0208<<14 | 0x33<<7 | 0x10, + 22467 - 19968: jis0208<<14 | 0x33<<7 | 0x1B, + 22470 - 19968: jis0208<<14 | 0x33<<7 | 0x1C, + 22471 - 19968: jis0208<<14 | 0x58<<7 | 0x3D, + 22472 - 19968: jis0208<<14 | 0x58<<7 | 0x3C, + 22475 - 19968: jis0208<<14 | 0x2A<<7 | 0x43, + 22476 - 19968: jis0212<<14 | 0x16<<7 | 0x48, + 22478 - 19968: jis0208<<14 | 0x1D<<7 | 0x4A, + 22479 - 19968: jis0212<<14 | 0x16<<7 | 0x49, + 22482 - 19968: jis0208<<14 | 0x33<<7 | 0x1E, + 22483 - 19968: jis0208<<14 | 0x33<<7 | 0x1F, + 22484 - 19968: jis0208<<14 | 0x33<<7 | 0x1D, + 22485 - 19968: jis0212<<14 | 0x16<<7 | 0x4A, + 22486 - 19968: jis0208<<14 | 0x33<<7 | 0x21, + 22492 - 19968: jis0208<<14 | 0x26<<7 | 0x17, + 22493 - 19968: jis0212<<14 | 0x16<<7 | 0x4B, + 22494 - 19968: jis0212<<14 | 0x16<<7 | 0x4C, + 22495 - 19968: jis0208<<14 | 0x0F<<7 | 0x47, + 22496 - 19968: jis0208<<14 | 0x28<<7 | 0x35, + 22497 - 19968: jis0212<<14 | 0x16<<7 | 0x5D, + 22499 - 19968: jis0208<<14 | 0x33<<7 | 0x22, + 22500 - 19968: jis0212<<14 | 0x16<<7 | 0x4D, + 22502 - 19968: jis0212<<14 | 0x16<<7 | 0x4E, + 22503 - 19968: jis0212<<14 | 0x16<<7 | 0x4F, + 22505 - 19968: jis0212<<14 | 0x16<<7 | 0x50, + 22509 - 19968: jis0212<<14 | 0x16<<7 | 0x51, + 22512 - 19968: jis0212<<14 | 0x16<<7 | 0x52, + 22516 - 19968: jis0208<<14 | 0x1D<<7 | 0x5C, + 22517 - 19968: jis0212<<14 | 0x16<<7 | 0x53, + 22518 - 19968: jis0212<<14 | 0x16<<7 | 0x54, + 22519 - 19968: jis0208<<14 | 0x1B<<7 | 0x18, + 22520 - 19968: jis0212<<14 | 0x16<<7 | 0x55, + 22521 - 19968: jis0208<<14 | 0x26<<7 | 0x3C, + 22522 - 19968: jis0208<<14 | 0x13<<7 | 0x4F, + 22524 - 19968: jis0208<<14 | 0x19<<7 | 0x4A, + 22525 - 19968: jis0212<<14 | 0x16<<7 | 0x56, + 22526 - 19968: jis0212<<14 | 0x16<<7 | 0x57, + 22527 - 19968: jis0212<<14 | 0x16<<7 | 0x58, + 22528 - 19968: jis0208<<14 | 0x2A<<7 | 0x38, + 22530 - 19968: jis0208<<14 | 0x25<<7 | 0x11, + 22531 - 19968: jis0212<<14 | 0x16<<7 | 0x59, + 22532 - 19968: jis0212<<14 | 0x16<<7 | 0x5A, + 22533 - 19968: jis0208<<14 | 0x16<<7 | 0x57, + 22534 - 19968: jis0208<<14 | 0x21<<7 | 0x2E, + 22536 - 19968: jis0212<<14 | 0x16<<7 | 0x5B, + 22537 - 19968: jis0212<<14 | 0x16<<7 | 0x5C, + 22538 - 19968: jis0208<<14 | 0x33<<7 | 0x20, + 22539 - 19968: jis0208<<14 | 0x33<<7 | 0x23, + 22540 - 19968: jis0212<<14 | 0x17<<7 | 0x00, + 22541 - 19968: jis0212<<14 | 0x17<<7 | 0x01, + 22549 - 19968: jis0208<<14 | 0x21<<7 | 0x23, + 22553 - 19968: jis0208<<14 | 0x33<<7 | 0x24, + 22555 - 19968: jis0212<<14 | 0x17<<7 | 0x02, + 22557 - 19968: jis0208<<14 | 0x33<<7 | 0x25, + 22558 - 19968: jis0212<<14 | 0x17<<7 | 0x03, + 22559 - 19968: jis0212<<14 | 0x17<<7 | 0x04, + 22560 - 19968: jis0212<<14 | 0x17<<7 | 0x05, + 22561 - 19968: jis0208<<14 | 0x33<<7 | 0x27, + 22564 - 19968: jis0208<<14 | 0x23<<7 | 0x48, + 22566 - 19968: jis0212<<14 | 0x17<<7 | 0x06, + 22567 - 19968: jis0212<<14 | 0x17<<7 | 0x07, + 22570 - 19968: jis0208<<14 | 0x13<<7 | 0x0D, + 22573 - 19968: jis0212<<14 | 0x17<<7 | 0x08, + 22575 - 19968: jis0208<<14 | 0x53<<7 | 0x00, + 22576 - 19968: jis0208<<14 | 0x10<<7 | 0x40, + 22577 - 19968: jis0208<<14 | 0x29<<7 | 0x52, + 22578 - 19968: jis0212<<14 | 0x17<<7 | 0x09, + 22580 - 19968: jis0208<<14 | 0x1D<<7 | 0x4B, + 22581 - 19968: jis0208<<14 | 0x24<<7 | 0x27, + 22585 - 19968: jis0212<<14 | 0x17<<7 | 0x0A, + 22586 - 19968: jis0208<<14 | 0x19<<7 | 0x45, + 22589 - 19968: jis0208<<14 | 0x33<<7 | 0x2D, + 22591 - 19968: jis0212<<14 | 0x17<<7 | 0x0B, + 22592 - 19968: jis0208<<14 | 0x29<<7 | 0x1C, + 22593 - 19968: jis0208<<14 | 0x2D<<7 | 0x3C, + 22601 - 19968: jis0212<<14 | 0x17<<7 | 0x0C, + 22602 - 19968: jis0208<<14 | 0x11<<7 | 0x53, + 22603 - 19968: jis0208<<14 | 0x33<<7 | 0x29, + 22604 - 19968: jis0212<<14 | 0x17<<7 | 0x0D, + 22605 - 19968: jis0212<<14 | 0x17<<7 | 0x0E, + 22607 - 19968: jis0212<<14 | 0x17<<7 | 0x0F, + 22608 - 19968: jis0212<<14 | 0x17<<7 | 0x10, + 22609 - 19968: jis0208<<14 | 0x20<<7 | 0x19, + 22610 - 19968: jis0208<<14 | 0x33<<7 | 0x2C, + 22612 - 19968: jis0208<<14 | 0x24<<7 | 0x42, + 22613 - 19968: jis0212<<14 | 0x17<<7 | 0x11, + 22615 - 19968: jis0208<<14 | 0x24<<7 | 0x28, + 22616 - 19968: jis0208<<14 | 0x24<<7 | 0x43, + 22617 - 19968: jis0208<<14 | 0x27<<7 | 0x18, + 22618 - 19968: jis0208<<14 | 0x23<<7 | 0x2C, + 22622 - 19968: jis0208<<14 | 0x19<<7 | 0x28, + 22623 - 19968: jis0212<<14 | 0x17<<7 | 0x12, + 22625 - 19968: jis0212<<14 | 0x17<<7 | 0x13, + 22626 - 19968: jis0208<<14 | 0x33<<7 | 0x28, + 22628 - 19968: jis0212<<14 | 0x17<<7 | 0x14, + 22631 - 19968: jis0212<<14 | 0x17<<7 | 0x15, + 22632 - 19968: jis0212<<14 | 0x17<<7 | 0x16, + 22633 - 19968: jis0208<<14 | 0x10<<7 | 0x55, + 22635 - 19968: jis0208<<14 | 0x24<<7 | 0x15, + 22640 - 19968: jis0208<<14 | 0x33<<7 | 0x2A, + 22642 - 19968: jis0208<<14 | 0x33<<7 | 0x26, + 22645 - 19968: jis0208<<14 | 0x1E<<7 | 0x2F, + 22648 - 19968: jis0212<<14 | 0x17<<7 | 0x17, + 22649 - 19968: jis0208<<14 | 0x33<<7 | 0x2E, + 22652 - 19968: jis0212<<14 | 0x17<<7 | 0x18, + 22654 - 19968: jis0208<<14 | 0x1C<<7 | 0x2D, + 22655 - 19968: jis0212<<14 | 0x17<<7 | 0x19, + 22656 - 19968: jis0212<<14 | 0x17<<7 | 0x1A, + 22657 - 19968: jis0212<<14 | 0x17<<7 | 0x1B, + 22659 - 19968: jis0208<<14 | 0x15<<7 | 0x0C, + 22661 - 19968: jis0208<<14 | 0x33<<7 | 0x2F, + 22663 - 19968: jis0212<<14 | 0x17<<7 | 0x1C, + 22664 - 19968: jis0212<<14 | 0x17<<7 | 0x1D, + 22665 - 19968: jis0212<<14 | 0x17<<7 | 0x1E, + 22666 - 19968: jis0212<<14 | 0x17<<7 | 0x1F, + 22668 - 19968: jis0212<<14 | 0x17<<7 | 0x20, + 22669 - 19968: jis0212<<14 | 0x17<<7 | 0x21, + 22671 - 19968: jis0212<<14 | 0x17<<7 | 0x22, + 22672 - 19968: jis0212<<14 | 0x17<<7 | 0x23, + 22675 - 19968: jis0208<<14 | 0x29<<7 | 0x47, + 22676 - 19968: jis0212<<14 | 0x17<<7 | 0x24, + 22678 - 19968: jis0212<<14 | 0x17<<7 | 0x25, + 22679 - 19968: jis0208<<14 | 0x20<<7 | 0x5C, + 22684 - 19968: jis0208<<14 | 0x23<<7 | 0x25, + 22685 - 19968: jis0212<<14 | 0x17<<7 | 0x26, + 22686 - 19968: jis0208<<14 | 0x58<<7 | 0x40, + 22687 - 19968: jis0208<<14 | 0x33<<7 | 0x31, + 22688 - 19968: jis0212<<14 | 0x17<<7 | 0x27, + 22689 - 19968: jis0212<<14 | 0x17<<7 | 0x28, + 22690 - 19968: jis0212<<14 | 0x17<<7 | 0x29, + 22694 - 19968: jis0212<<14 | 0x17<<7 | 0x2A, + 22696 - 19968: jis0208<<14 | 0x2A<<7 | 0x2E, + 22697 - 19968: jis0212<<14 | 0x17<<7 | 0x2B, + 22699 - 19968: jis0208<<14 | 0x33<<7 | 0x32, + 22702 - 19968: jis0208<<14 | 0x33<<7 | 0x37, + 22705 - 19968: jis0212<<14 | 0x17<<7 | 0x2C, + 22706 - 19968: jis0208<<14 | 0x58<<7 | 0x41, + 22707 - 19968: jis0208<<14 | 0x29<<7 | 0x0E, + 22712 - 19968: jis0208<<14 | 0x33<<7 | 0x36, + 22713 - 19968: jis0208<<14 | 0x33<<7 | 0x30, + 22714 - 19968: jis0208<<14 | 0x33<<7 | 0x33, + 22715 - 19968: jis0208<<14 | 0x33<<7 | 0x35, + 22716 - 19968: jis0212<<14 | 0x17<<7 | 0x2F, + 22718 - 19968: jis0208<<14 | 0x19<<7 | 0x05, + 22721 - 19968: jis0208<<14 | 0x29<<7 | 0x28, + 22722 - 19968: jis0212<<14 | 0x17<<7 | 0x30, + 22724 - 19968: jis0212<<14 | 0x17<<7 | 0x2E, + 22725 - 19968: jis0208<<14 | 0x33<<7 | 0x38, + 22727 - 19968: jis0208<<14 | 0x22<<7 | 0x24, + 22728 - 19968: jis0212<<14 | 0x17<<7 | 0x31, + 22730 - 19968: jis0208<<14 | 0x11<<7 | 0x54, + 22732 - 19968: jis0208<<14 | 0x1D<<7 | 0x4C, + 22733 - 19968: jis0212<<14 | 0x17<<7 | 0x32, + 22734 - 19968: jis0212<<14 | 0x17<<7 | 0x33, + 22736 - 19968: jis0212<<14 | 0x17<<7 | 0x34, + 22737 - 19968: jis0208<<14 | 0x33<<7 | 0x3A, + 22738 - 19968: jis0212<<14 | 0x17<<7 | 0x35, + 22739 - 19968: jis0208<<14 | 0x33<<7 | 0x39, + 22740 - 19968: jis0212<<14 | 0x17<<7 | 0x36, + 22741 - 19968: jis0208<<14 | 0x18<<7 | 0x47, + 22742 - 19968: jis0212<<14 | 0x17<<7 | 0x37, + 22743 - 19968: jis0208<<14 | 0x33<<7 | 0x3B, + 22744 - 19968: jis0208<<14 | 0x33<<7 | 0x3D, + 22745 - 19968: jis0208<<14 | 0x33<<7 | 0x3C, + 22746 - 19968: jis0212<<14 | 0x17<<7 | 0x38, + 22748 - 19968: jis0208<<14 | 0x33<<7 | 0x3F, + 22749 - 19968: jis0212<<14 | 0x17<<7 | 0x39, + 22750 - 19968: jis0208<<14 | 0x33<<7 | 0x34, + 22751 - 19968: jis0208<<14 | 0x33<<7 | 0x41, + 22753 - 19968: jis0212<<14 | 0x17<<7 | 0x3A, + 22754 - 19968: jis0212<<14 | 0x17<<7 | 0x3B, + 22756 - 19968: jis0208<<14 | 0x33<<7 | 0x40, + 22757 - 19968: jis0208<<14 | 0x33<<7 | 0x3E, + 22761 - 19968: jis0212<<14 | 0x17<<7 | 0x3C, + 22763 - 19968: jis0208<<14 | 0x1A<<7 | 0x2D, + 22764 - 19968: jis0208<<14 | 0x1E<<7 | 0x30, + 22766 - 19968: jis0208<<14 | 0x20<<7 | 0x33, + 22767 - 19968: jis0208<<14 | 0x33<<7 | 0x42, + 22768 - 19968: jis0208<<14 | 0x1F<<7 | 0x1B, + 22769 - 19968: jis0208<<14 | 0x0F<<7 | 0x4C, + 22770 - 19968: jis0208<<14 | 0x26<<7 | 0x43, + 22771 - 19968: jis0212<<14 | 0x17<<7 | 0x3D, + 22775 - 19968: jis0208<<14 | 0x23<<7 | 0x3A, + 22777 - 19968: jis0208<<14 | 0x33<<7 | 0x44, + 22778 - 19968: jis0208<<14 | 0x33<<7 | 0x43, + 22779 - 19968: jis0208<<14 | 0x33<<7 | 0x45, + 22780 - 19968: jis0208<<14 | 0x33<<7 | 0x46, + 22781 - 19968: jis0208<<14 | 0x33<<7 | 0x47, + 22786 - 19968: jis0208<<14 | 0x33<<7 | 0x48, + 22789 - 19968: jis0212<<14 | 0x17<<7 | 0x3E, + 22790 - 19968: jis0212<<14 | 0x17<<7 | 0x3F, + 22793 - 19968: jis0208<<14 | 0x29<<7 | 0x30, + 22794 - 19968: jis0208<<14 | 0x33<<7 | 0x49, + 22795 - 19968: jis0208<<14 | 0x58<<7 | 0x42, + 22796 - 19968: jis0212<<14 | 0x17<<7 | 0x41, + 22799 - 19968: jis0208<<14 | 0x11<<7 | 0x25, + 22800 - 19968: jis0208<<14 | 0x33<<7 | 0x4A, + 22802 - 19968: jis0212<<14 | 0x17<<7 | 0x42, + 22803 - 19968: jis0212<<14 | 0x17<<7 | 0x43, + 22804 - 19968: jis0212<<14 | 0x17<<7 | 0x44, + 22805 - 19968: jis0208<<14 | 0x2C<<7 | 0x1B, + 22806 - 19968: jis0208<<14 | 0x12<<7 | 0x0F, + 22808 - 19968: jis0208<<14 | 0x31<<7 | 0x28, + 22809 - 19968: jis0208<<14 | 0x1C<<7 | 0x27, + 22810 - 19968: jis0208<<14 | 0x21<<7 | 0x1E, + 22811 - 19968: jis0208<<14 | 0x33<<7 | 0x4B, + 22812 - 19968: jis0208<<14 | 0x2B<<7 | 0x4A, + 22813 - 19968: jis0212<<14 | 0x17<<7 | 0x46, + 22817 - 19968: jis0212<<14 | 0x17<<7 | 0x47, + 22818 - 19968: jis0208<<14 | 0x2B<<7 | 0x13, + 22819 - 19968: jis0212<<14 | 0x17<<7 | 0x48, + 22820 - 19968: jis0212<<14 | 0x17<<7 | 0x49, + 22821 - 19968: jis0208<<14 | 0x33<<7 | 0x4D, + 22823 - 19968: jis0208<<14 | 0x21<<7 | 0x46, + 22824 - 19968: jis0212<<14 | 0x17<<7 | 0x4A, + 22825 - 19968: jis0208<<14 | 0x24<<7 | 0x16, + 22826 - 19968: jis0208<<14 | 0x21<<7 | 0x1F, + 22827 - 19968: jis0208<<14 | 0x28<<7 | 0x36, + 22828 - 19968: jis0208<<14 | 0x33<<7 | 0x4E, + 22829 - 19968: jis0208<<14 | 0x33<<7 | 0x4F, + 22830 - 19968: jis0208<<14 | 0x10<<7 | 0x5A, + 22831 - 19968: jis0212<<14 | 0x17<<7 | 0x4B, + 22832 - 19968: jis0212<<14 | 0x17<<7 | 0x4C, + 22833 - 19968: jis0208<<14 | 0x1B<<7 | 0x19, + 22834 - 19968: jis0208<<14 | 0x33<<7 | 0x50, + 22835 - 19968: jis0212<<14 | 0x17<<7 | 0x4D, + 22837 - 19968: jis0212<<14 | 0x17<<7 | 0x4E, + 22838 - 19968: jis0212<<14 | 0x17<<7 | 0x4F, + 22839 - 19968: jis0208<<14 | 0x0F<<7 | 0x2F, + 22840 - 19968: jis0208<<14 | 0x33<<7 | 0x51, + 22846 - 19968: jis0208<<14 | 0x33<<7 | 0x52, + 22847 - 19968: jis0212<<14 | 0x17<<7 | 0x50, + 22851 - 19968: jis0212<<14 | 0x17<<7 | 0x51, + 22852 - 19968: jis0208<<14 | 0x10<<7 | 0x41, + 22854 - 19968: jis0212<<14 | 0x17<<7 | 0x52, + 22855 - 19968: jis0208<<14 | 0x13<<7 | 0x50, + 22856 - 19968: jis0208<<14 | 0x25<<7 | 0x3F, + 22857 - 19968: jis0208<<14 | 0x29<<7 | 0x53, + 22862 - 19968: jis0208<<14 | 0x33<<7 | 0x56, + 22863 - 19968: jis0208<<14 | 0x20<<7 | 0x34, + 22864 - 19968: jis0208<<14 | 0x33<<7 | 0x55, + 22865 - 19968: jis0208<<14 | 0x16<<7 | 0x1F, + 22866 - 19968: jis0212<<14 | 0x17<<7 | 0x53, + 22867 - 19968: jis0208<<14 | 0x58<<7 | 0x43, + 22868 - 19968: jis0208<<14 | 0x2A<<7 | 0x3A, + 22869 - 19968: jis0208<<14 | 0x33<<7 | 0x54, + 22871 - 19968: jis0208<<14 | 0x24<<7 | 0x44, + 22872 - 19968: jis0208<<14 | 0x33<<7 | 0x58, + 22873 - 19968: jis0212<<14 | 0x17<<7 | 0x55, + 22874 - 19968: jis0208<<14 | 0x33<<7 | 0x57, + 22875 - 19968: jis0208<<14 | 0x58<<7 | 0x44, + 22877 - 19968: jis0208<<14 | 0x58<<7 | 0x45, + 22878 - 19968: jis0212<<14 | 0x17<<7 | 0x58, + 22879 - 19968: jis0212<<14 | 0x17<<7 | 0x59, + 22880 - 19968: jis0208<<14 | 0x33<<7 | 0x5A, + 22881 - 19968: jis0212<<14 | 0x17<<7 | 0x5A, + 22882 - 19968: jis0208<<14 | 0x33<<7 | 0x59, + 22883 - 19968: jis0208<<14 | 0x58<<7 | 0x46, + 22885 - 19968: jis0208<<14 | 0x10<<7 | 0x5B, + 22887 - 19968: jis0208<<14 | 0x33<<7 | 0x5B, + 22888 - 19968: jis0208<<14 | 0x1D<<7 | 0x08, + 22889 - 19968: jis0208<<14 | 0x33<<7 | 0x5D, + 22890 - 19968: jis0208<<14 | 0x22<<7 | 0x04, + 22891 - 19968: jis0212<<14 | 0x17<<7 | 0x5C, + 22892 - 19968: jis0208<<14 | 0x33<<7 | 0x5C, + 22893 - 19968: jis0212<<14 | 0x17<<7 | 0x5D, + 22894 - 19968: jis0208<<14 | 0x29<<7 | 0x12, + 22895 - 19968: jis0212<<14 | 0x18<<7 | 0x00, + 22898 - 19968: jis0212<<14 | 0x18<<7 | 0x01, + 22899 - 19968: jis0208<<14 | 0x1C<<7 | 0x56, + 22900 - 19968: jis0208<<14 | 0x24<<7 | 0x3A, + 22901 - 19968: jis0212<<14 | 0x18<<7 | 0x02, + 22902 - 19968: jis0212<<14 | 0x18<<7 | 0x03, + 22904 - 19968: jis0208<<14 | 0x34<<7 | 0x00, + 22905 - 19968: jis0212<<14 | 0x18<<7 | 0x04, + 22907 - 19968: jis0212<<14 | 0x18<<7 | 0x05, + 22908 - 19968: jis0212<<14 | 0x18<<7 | 0x06, + 22909 - 19968: jis0208<<14 | 0x18<<7 | 0x04, + 22913 - 19968: jis0208<<14 | 0x34<<7 | 0x01, + 22914 - 19968: jis0208<<14 | 0x26<<7 | 0x00, + 22915 - 19968: jis0208<<14 | 0x27<<7 | 0x3D, + 22916 - 19968: jis0208<<14 | 0x2B<<7 | 0x30, + 22922 - 19968: jis0208<<14 | 0x26<<7 | 0x04, + 22923 - 19968: jis0212<<14 | 0x18<<7 | 0x07, + 22924 - 19968: jis0212<<14 | 0x18<<7 | 0x08, + 22925 - 19968: jis0208<<14 | 0x34<<7 | 0x0A, + 22926 - 19968: jis0212<<14 | 0x18<<7 | 0x09, + 22930 - 19968: jis0212<<14 | 0x18<<7 | 0x0A, + 22931 - 19968: jis0208<<14 | 0x14<<7 | 0x17, + 22933 - 19968: jis0212<<14 | 0x18<<7 | 0x0B, + 22934 - 19968: jis0208<<14 | 0x2C<<7 | 0x24, + 22935 - 19968: jis0212<<14 | 0x18<<7 | 0x0C, + 22937 - 19968: jis0208<<14 | 0x2B<<7 | 0x0E, + 22939 - 19968: jis0208<<14 | 0x35<<7 | 0x0B, + 22941 - 19968: jis0208<<14 | 0x34<<7 | 0x02, + 22943 - 19968: jis0212<<14 | 0x18<<7 | 0x0D, + 22947 - 19968: jis0208<<14 | 0x34<<7 | 0x05, + 22948 - 19968: jis0208<<14 | 0x58<<7 | 0x47, + 22949 - 19968: jis0208<<14 | 0x21<<7 | 0x24, + 22951 - 19968: jis0212<<14 | 0x18<<7 | 0x0F, + 22952 - 19968: jis0208<<14 | 0x2A<<7 | 0x17, + 22956 - 19968: jis0208<<14 | 0x24<<7 | 0x29, + 22957 - 19968: jis0212<<14 | 0x18<<7 | 0x10, + 22958 - 19968: jis0212<<14 | 0x18<<7 | 0x11, + 22959 - 19968: jis0212<<14 | 0x18<<7 | 0x12, + 22960 - 19968: jis0212<<14 | 0x18<<7 | 0x13, + 22962 - 19968: jis0208<<14 | 0x34<<7 | 0x06, + 22963 - 19968: jis0212<<14 | 0x18<<7 | 0x14, + 22967 - 19968: jis0212<<14 | 0x18<<7 | 0x15, + 22969 - 19968: jis0208<<14 | 0x2A<<7 | 0x44, + 22970 - 19968: jis0208<<14 | 0x58<<7 | 0x48, + 22971 - 19968: jis0208<<14 | 0x19<<7 | 0x29, + 22972 - 19968: jis0212<<14 | 0x18<<7 | 0x17, + 22974 - 19968: jis0208<<14 | 0x1D<<7 | 0x09, + 22977 - 19968: jis0212<<14 | 0x18<<7 | 0x18, + 22979 - 19968: jis0212<<14 | 0x18<<7 | 0x19, + 22980 - 19968: jis0212<<14 | 0x18<<7 | 0x1A, + 22982 - 19968: jis0208<<14 | 0x34<<7 | 0x07, + 22984 - 19968: jis0212<<14 | 0x18<<7 | 0x1B, + 22985 - 19968: jis0208<<14 | 0x1A<<7 | 0x2F, + 22986 - 19968: jis0212<<14 | 0x18<<7 | 0x1C, + 22987 - 19968: jis0208<<14 | 0x1A<<7 | 0x2E, + 22989 - 19968: jis0212<<14 | 0x18<<7 | 0x1D, + 22992 - 19968: jis0208<<14 | 0x0F<<7 | 0x18, + 22993 - 19968: jis0208<<14 | 0x17<<7 | 0x27, + 22994 - 19968: jis0212<<14 | 0x18<<7 | 0x1E, + 22995 - 19968: jis0208<<14 | 0x1F<<7 | 0x0A, + 22996 - 19968: jis0208<<14 | 0x0F<<7 | 0x30, + 23001 - 19968: jis0208<<14 | 0x34<<7 | 0x0B, + 23002 - 19968: jis0208<<14 | 0x34<<7 | 0x0C, + 23004 - 19968: jis0208<<14 | 0x34<<7 | 0x09, + 23005 - 19968: jis0212<<14 | 0x18<<7 | 0x1F, + 23006 - 19968: jis0212<<14 | 0x18<<7 | 0x20, + 23007 - 19968: jis0212<<14 | 0x18<<7 | 0x21, + 23011 - 19968: jis0212<<14 | 0x18<<7 | 0x22, + 23012 - 19968: jis0212<<14 | 0x18<<7 | 0x23, + 23013 - 19968: jis0208<<14 | 0x10<<7 | 0x17, + 23014 - 19968: jis0208<<14 | 0x13<<7 | 0x0E, + 23015 - 19968: jis0212<<14 | 0x18<<7 | 0x24, + 23016 - 19968: jis0208<<14 | 0x34<<7 | 0x08, + 23018 - 19968: jis0208<<14 | 0x2B<<7 | 0x24, + 23019 - 19968: jis0208<<14 | 0x28<<7 | 0x10, + 23022 - 19968: jis0212<<14 | 0x18<<7 | 0x25, + 23023 - 19968: jis0212<<14 | 0x18<<7 | 0x26, + 23025 - 19968: jis0212<<14 | 0x18<<7 | 0x27, + 23026 - 19968: jis0212<<14 | 0x18<<7 | 0x28, + 23028 - 19968: jis0212<<14 | 0x18<<7 | 0x29, + 23030 - 19968: jis0208<<14 | 0x0F<<7 | 0x07, + 23031 - 19968: jis0212<<14 | 0x18<<7 | 0x2A, + 23035 - 19968: jis0208<<14 | 0x0F<<7 | 0x58, + 23039 - 19968: jis0208<<14 | 0x1A<<7 | 0x30, + 23040 - 19968: jis0212<<14 | 0x18<<7 | 0x2B, + 23041 - 19968: jis0208<<14 | 0x0F<<7 | 0x31, + 23043 - 19968: jis0208<<14 | 0x0F<<7 | 0x02, + 23044 - 19968: jis0212<<14 | 0x18<<7 | 0x2C, + 23049 - 19968: jis0208<<14 | 0x34<<7 | 0x11, + 23052 - 19968: jis0212<<14 | 0x18<<7 | 0x2D, + 23053 - 19968: jis0212<<14 | 0x18<<7 | 0x2E, + 23054 - 19968: jis0212<<14 | 0x18<<7 | 0x2F, + 23057 - 19968: jis0208<<14 | 0x34<<7 | 0x0F, + 23058 - 19968: jis0212<<14 | 0x18<<7 | 0x30, + 23059 - 19968: jis0212<<14 | 0x18<<7 | 0x31, + 23064 - 19968: jis0208<<14 | 0x2B<<7 | 0x1B, + 23066 - 19968: jis0208<<14 | 0x34<<7 | 0x12, + 23068 - 19968: jis0208<<14 | 0x34<<7 | 0x10, + 23070 - 19968: jis0212<<14 | 0x18<<7 | 0x32, + 23071 - 19968: jis0208<<14 | 0x34<<7 | 0x0E, + 23072 - 19968: jis0208<<14 | 0x1E<<7 | 0x10, + 23075 - 19968: jis0212<<14 | 0x18<<7 | 0x33, + 23076 - 19968: jis0212<<14 | 0x18<<7 | 0x34, + 23077 - 19968: jis0208<<14 | 0x34<<7 | 0x0D, + 23079 - 19968: jis0212<<14 | 0x18<<7 | 0x35, + 23080 - 19968: jis0212<<14 | 0x18<<7 | 0x36, + 23081 - 19968: jis0208<<14 | 0x29<<7 | 0x39, + 23082 - 19968: jis0212<<14 | 0x18<<7 | 0x37, + 23085 - 19968: jis0212<<14 | 0x18<<7 | 0x38, + 23087 - 19968: jis0208<<14 | 0x17<<7 | 0x43, + 23088 - 19968: jis0212<<14 | 0x18<<7 | 0x39, + 23093 - 19968: jis0208<<14 | 0x34<<7 | 0x16, + 23094 - 19968: jis0208<<14 | 0x34<<7 | 0x17, + 23100 - 19968: jis0208<<14 | 0x1D<<7 | 0x0A, + 23104 - 19968: jis0208<<14 | 0x34<<7 | 0x13, + 23105 - 19968: jis0208<<14 | 0x2E<<7 | 0x0B, + 23108 - 19968: jis0212<<14 | 0x18<<7 | 0x3A, + 23109 - 19968: jis0212<<14 | 0x18<<7 | 0x3B, + 23110 - 19968: jis0208<<14 | 0x26<<7 | 0x2B, + 23111 - 19968: jis0212<<14 | 0x18<<7 | 0x3C, + 23112 - 19968: jis0212<<14 | 0x18<<7 | 0x3D, + 23113 - 19968: jis0208<<14 | 0x34<<7 | 0x15, + 23116 - 19968: jis0212<<14 | 0x18<<7 | 0x3E, + 23120 - 19968: jis0212<<14 | 0x18<<7 | 0x3F, + 23125 - 19968: jis0212<<14 | 0x18<<7 | 0x40, + 23130 - 19968: jis0208<<14 | 0x19<<7 | 0x06, + 23134 - 19968: jis0212<<14 | 0x18<<7 | 0x41, + 23138 - 19968: jis0208<<14 | 0x34<<7 | 0x18, + 23139 - 19968: jis0212<<14 | 0x18<<7 | 0x42, + 23141 - 19968: jis0212<<14 | 0x18<<7 | 0x43, + 23142 - 19968: jis0208<<14 | 0x28<<7 | 0x37, + 23143 - 19968: jis0212<<14 | 0x18<<7 | 0x44, + 23146 - 19968: jis0208<<14 | 0x34<<7 | 0x19, + 23148 - 19968: jis0208<<14 | 0x34<<7 | 0x14, + 23149 - 19968: jis0212<<14 | 0x18<<7 | 0x45, + 23159 - 19968: jis0212<<14 | 0x18<<7 | 0x46, + 23162 - 19968: jis0212<<14 | 0x18<<7 | 0x47, + 23163 - 19968: jis0212<<14 | 0x18<<7 | 0x48, + 23166 - 19968: jis0212<<14 | 0x18<<7 | 0x49, + 23167 - 19968: jis0208<<14 | 0x2B<<7 | 0x1A, + 23179 - 19968: jis0212<<14 | 0x18<<7 | 0x4A, + 23184 - 19968: jis0212<<14 | 0x18<<7 | 0x4B, + 23186 - 19968: jis0208<<14 | 0x26<<7 | 0x3D, + 23187 - 19968: jis0212<<14 | 0x18<<7 | 0x4C, + 23190 - 19968: jis0212<<14 | 0x18<<7 | 0x4D, + 23193 - 19968: jis0212<<14 | 0x18<<7 | 0x4E, + 23194 - 19968: jis0208<<14 | 0x34<<7 | 0x1A, + 23195 - 19968: jis0208<<14 | 0x28<<7 | 0x11, + 23196 - 19968: jis0212<<14 | 0x18<<7 | 0x4F, + 23198 - 19968: jis0212<<14 | 0x18<<7 | 0x50, + 23199 - 19968: jis0212<<14 | 0x18<<7 | 0x51, + 23200 - 19968: jis0212<<14 | 0x18<<7 | 0x52, + 23202 - 19968: jis0212<<14 | 0x18<<7 | 0x53, + 23207 - 19968: jis0212<<14 | 0x18<<7 | 0x54, + 23212 - 19968: jis0212<<14 | 0x18<<7 | 0x55, + 23217 - 19968: jis0212<<14 | 0x18<<7 | 0x56, + 23218 - 19968: jis0212<<14 | 0x18<<7 | 0x57, + 23219 - 19968: jis0212<<14 | 0x18<<7 | 0x58, + 23221 - 19968: jis0212<<14 | 0x18<<7 | 0x59, + 23224 - 19968: jis0212<<14 | 0x18<<7 | 0x5A, + 23226 - 19968: jis0212<<14 | 0x18<<7 | 0x5B, + 23227 - 19968: jis0212<<14 | 0x18<<7 | 0x5C, + 23228 - 19968: jis0208<<14 | 0x34<<7 | 0x1B, + 23229 - 19968: jis0208<<14 | 0x34<<7 | 0x1F, + 23230 - 19968: jis0208<<14 | 0x34<<7 | 0x1C, + 23231 - 19968: jis0212<<14 | 0x18<<7 | 0x5D, + 23233 - 19968: jis0208<<14 | 0x11<<7 | 0x26, + 23234 - 19968: jis0208<<14 | 0x34<<7 | 0x1E, + 23236 - 19968: jis0212<<14 | 0x19<<7 | 0x00, + 23238 - 19968: jis0212<<14 | 0x19<<7 | 0x01, + 23240 - 19968: jis0212<<14 | 0x19<<7 | 0x02, + 23241 - 19968: jis0208<<14 | 0x1B<<7 | 0x1A, + 23243 - 19968: jis0208<<14 | 0x34<<7 | 0x1D, + 23244 - 19968: jis0208<<14 | 0x16<<7 | 0x58, + 23247 - 19968: jis0212<<14 | 0x19<<7 | 0x03, + 23248 - 19968: jis0208<<14 | 0x34<<7 | 0x2B, + 23254 - 19968: jis0208<<14 | 0x34<<7 | 0x24, + 23255 - 19968: jis0208<<14 | 0x34<<7 | 0x21, + 23258 - 19968: jis0212<<14 | 0x19<<7 | 0x04, + 23260 - 19968: jis0212<<14 | 0x19<<7 | 0x05, + 23264 - 19968: jis0212<<14 | 0x19<<7 | 0x06, + 23265 - 19968: jis0208<<14 | 0x22<<7 | 0x43, + 23267 - 19968: jis0208<<14 | 0x34<<7 | 0x20, + 23269 - 19968: jis0212<<14 | 0x19<<7 | 0x07, + 23270 - 19968: jis0208<<14 | 0x34<<7 | 0x22, + 23273 - 19968: jis0208<<14 | 0x34<<7 | 0x23, + 23274 - 19968: jis0212<<14 | 0x19<<7 | 0x08, + 23278 - 19968: jis0212<<14 | 0x19<<7 | 0x09, + 23285 - 19968: jis0212<<14 | 0x19<<7 | 0x0A, + 23286 - 19968: jis0212<<14 | 0x19<<7 | 0x0B, + 23290 - 19968: jis0208<<14 | 0x34<<7 | 0x25, + 23291 - 19968: jis0208<<14 | 0x34<<7 | 0x26, + 23293 - 19968: jis0212<<14 | 0x19<<7 | 0x0C, + 23296 - 19968: jis0212<<14 | 0x19<<7 | 0x0D, + 23297 - 19968: jis0212<<14 | 0x19<<7 | 0x0E, + 23304 - 19968: jis0212<<14 | 0x19<<7 | 0x0F, + 23305 - 19968: jis0208<<14 | 0x13<<7 | 0x51, + 23307 - 19968: jis0208<<14 | 0x34<<7 | 0x28, + 23308 - 19968: jis0208<<14 | 0x34<<7 | 0x27, + 23318 - 19968: jis0208<<14 | 0x34<<7 | 0x29, + 23319 - 19968: jis0212<<14 | 0x19<<7 | 0x10, + 23321 - 19968: jis0212<<14 | 0x19<<7 | 0x12, + 23323 - 19968: jis0212<<14 | 0x19<<7 | 0x13, + 23325 - 19968: jis0212<<14 | 0x19<<7 | 0x14, + 23329 - 19968: jis0212<<14 | 0x19<<7 | 0x15, + 23330 - 19968: jis0208<<14 | 0x1D<<7 | 0x4D, + 23333 - 19968: jis0212<<14 | 0x19<<7 | 0x16, + 23338 - 19968: jis0208<<14 | 0x34<<7 | 0x2C, + 23340 - 19968: jis0208<<14 | 0x23<<7 | 0x3B, + 23341 - 19968: jis0212<<14 | 0x19<<7 | 0x17, + 23344 - 19968: jis0208<<14 | 0x10<<7 | 0x24, + 23346 - 19968: jis0208<<14 | 0x34<<7 | 0x2A, + 23348 - 19968: jis0212<<14 | 0x19<<7 | 0x11, + 23350 - 19968: jis0208<<14 | 0x34<<7 | 0x2D, + 23352 - 19968: jis0212<<14 | 0x19<<7 | 0x18, + 23358 - 19968: jis0208<<14 | 0x34<<7 | 0x2E, + 23360 - 19968: jis0208<<14 | 0x34<<7 | 0x31, + 23361 - 19968: jis0212<<14 | 0x19<<7 | 0x19, + 23363 - 19968: jis0208<<14 | 0x34<<7 | 0x2F, + 23365 - 19968: jis0208<<14 | 0x34<<7 | 0x30, + 23371 - 19968: jis0212<<14 | 0x19<<7 | 0x1A, + 23372 - 19968: jis0212<<14 | 0x19<<7 | 0x1B, + 23376 - 19968: jis0208<<14 | 0x1A<<7 | 0x31, + 23377 - 19968: jis0208<<14 | 0x34<<7 | 0x32, + 23378 - 19968: jis0212<<14 | 0x19<<7 | 0x1C, + 23380 - 19968: jis0208<<14 | 0x18<<7 | 0x05, + 23381 - 19968: jis0208<<14 | 0x34<<7 | 0x33, + 23382 - 19968: jis0208<<14 | 0x58<<7 | 0x49, + 23383 - 19968: jis0208<<14 | 0x1A<<7 | 0x59, + 23384 - 19968: jis0208<<14 | 0x21<<7 | 0x17, + 23386 - 19968: jis0208<<14 | 0x34<<7 | 0x34, + 23387 - 19968: jis0208<<14 | 0x34<<7 | 0x35, + 23388 - 19968: jis0208<<14 | 0x1A<<7 | 0x39, + 23389 - 19968: jis0208<<14 | 0x18<<7 | 0x06, + 23390 - 19968: jis0212<<14 | 0x19<<7 | 0x1E, + 23391 - 19968: jis0208<<14 | 0x2B<<7 | 0x31, + 23395 - 19968: jis0208<<14 | 0x14<<7 | 0x07, + 23396 - 19968: jis0208<<14 | 0x17<<7 | 0x28, + 23397 - 19968: jis0208<<14 | 0x34<<7 | 0x36, + 23398 - 19968: jis0208<<14 | 0x12<<7 | 0x37, + 23400 - 19968: jis0212<<14 | 0x19<<7 | 0x1F, + 23401 - 19968: jis0208<<14 | 0x34<<7 | 0x37, + 23403 - 19968: jis0208<<14 | 0x21<<7 | 0x18, + 23406 - 19968: jis0212<<14 | 0x19<<7 | 0x20, + 23407 - 19968: jis0212<<14 | 0x19<<7 | 0x21, + 23408 - 19968: jis0208<<14 | 0x34<<7 | 0x38, + 23409 - 19968: jis0208<<14 | 0x35<<7 | 0x02, + 23411 - 19968: jis0208<<14 | 0x34<<7 | 0x39, + 23413 - 19968: jis0208<<14 | 0x34<<7 | 0x3A, + 23416 - 19968: jis0208<<14 | 0x34<<7 | 0x3B, + 23418 - 19968: jis0208<<14 | 0x34<<7 | 0x3D, + 23420 - 19968: jis0212<<14 | 0x19<<7 | 0x22, + 23421 - 19968: jis0212<<14 | 0x19<<7 | 0x23, + 23422 - 19968: jis0212<<14 | 0x19<<7 | 0x24, + 23423 - 19968: jis0212<<14 | 0x19<<7 | 0x25, + 23424 - 19968: jis0208<<14 | 0x34<<7 | 0x3E, + 23425 - 19968: jis0212<<14 | 0x19<<7 | 0x26, + 23427 - 19968: jis0208<<14 | 0x34<<7 | 0x3F, + 23428 - 19968: jis0212<<14 | 0x19<<7 | 0x27, + 23429 - 19968: jis0208<<14 | 0x21<<7 | 0x4F, + 23430 - 19968: jis0212<<14 | 0x19<<7 | 0x28, + 23431 - 19968: jis0208<<14 | 0x10<<7 | 0x06, + 23432 - 19968: jis0208<<14 | 0x1B<<7 | 0x48, + 23433 - 19968: jis0208<<14 | 0x0F<<7 | 0x21, + 23434 - 19968: jis0212<<14 | 0x19<<7 | 0x29, + 23435 - 19968: jis0208<<14 | 0x20<<7 | 0x36, + 23436 - 19968: jis0208<<14 | 0x13<<7 | 0x0F, + 23437 - 19968: jis0208<<14 | 0x1B<<7 | 0x14, + 23438 - 19968: jis0212<<14 | 0x19<<7 | 0x2A, + 23439 - 19968: jis0208<<14 | 0x18<<7 | 0x07, + 23440 - 19968: jis0212<<14 | 0x19<<7 | 0x2B, + 23441 - 19968: jis0212<<14 | 0x19<<7 | 0x2C, + 23443 - 19968: jis0212<<14 | 0x19<<7 | 0x2D, + 23444 - 19968: jis0212<<14 | 0x19<<7 | 0x2E, + 23445 - 19968: jis0208<<14 | 0x24<<7 | 0x45, + 23446 - 19968: jis0212<<14 | 0x19<<7 | 0x2F, + 23447 - 19968: jis0208<<14 | 0x1C<<7 | 0x00, + 23448 - 19968: jis0208<<14 | 0x13<<7 | 0x10, + 23449 - 19968: jis0208<<14 | 0x22<<7 | 0x47, + 23450 - 19968: jis0208<<14 | 0x23<<7 | 0x49, + 23451 - 19968: jis0208<<14 | 0x0F<<7 | 0x17, + 23452 - 19968: jis0208<<14 | 0x14<<7 | 0x18, + 23453 - 19968: jis0208<<14 | 0x29<<7 | 0x54, + 23455 - 19968: jis0208<<14 | 0x1B<<7 | 0x21, + 23458 - 19968: jis0208<<14 | 0x14<<7 | 0x31, + 23459 - 19968: jis0208<<14 | 0x1F<<7 | 0x4A, + 23460 - 19968: jis0208<<14 | 0x1B<<7 | 0x1B, + 23461 - 19968: jis0208<<14 | 0x2C<<7 | 0x07, + 23462 - 19968: jis0208<<14 | 0x34<<7 | 0x40, + 23464 - 19968: jis0212<<14 | 0x19<<7 | 0x30, + 23465 - 19968: jis0212<<14 | 0x19<<7 | 0x31, + 23468 - 19968: jis0212<<14 | 0x19<<7 | 0x32, + 23469 - 19968: jis0212<<14 | 0x19<<7 | 0x33, + 23470 - 19968: jis0208<<14 | 0x14<<7 | 0x3B, + 23471 - 19968: jis0212<<14 | 0x19<<7 | 0x34, + 23472 - 19968: jis0208<<14 | 0x19<<7 | 0x2A, + 23473 - 19968: jis0212<<14 | 0x19<<7 | 0x35, + 23474 - 19968: jis0212<<14 | 0x19<<7 | 0x36, + 23475 - 19968: jis0208<<14 | 0x12<<7 | 0x11, + 23476 - 19968: jis0208<<14 | 0x10<<7 | 0x42, + 23477 - 19968: jis0208<<14 | 0x1D<<7 | 0x0B, + 23478 - 19968: jis0208<<14 | 0x11<<7 | 0x27, + 23479 - 19968: jis0212<<14 | 0x19<<7 | 0x37, + 23480 - 19968: jis0208<<14 | 0x34<<7 | 0x41, + 23481 - 19968: jis0208<<14 | 0x2C<<7 | 0x25, + 23482 - 19968: jis0212<<14 | 0x19<<7 | 0x38, + 23484 - 19968: jis0212<<14 | 0x19<<7 | 0x39, + 23487 - 19968: jis0208<<14 | 0x1C<<7 | 0x28, + 23488 - 19968: jis0208<<14 | 0x58<<7 | 0x4A, + 23489 - 19968: jis0212<<14 | 0x19<<7 | 0x3B, + 23490 - 19968: jis0208<<14 | 0x1B<<7 | 0x43, + 23491 - 19968: jis0208<<14 | 0x34<<7 | 0x42, + 23492 - 19968: jis0208<<14 | 0x13<<7 | 0x52, + 23493 - 19968: jis0208<<14 | 0x25<<7 | 0x31, + 23494 - 19968: jis0208<<14 | 0x2B<<7 | 0x08, + 23495 - 19968: jis0208<<14 | 0x34<<7 | 0x43, + 23497 - 19968: jis0208<<14 | 0x34<<7 | 0x44, + 23500 - 19968: jis0208<<14 | 0x28<<7 | 0x38, + 23501 - 19968: jis0212<<14 | 0x19<<7 | 0x3C, + 23503 - 19968: jis0212<<14 | 0x19<<7 | 0x3D, + 23504 - 19968: jis0208<<14 | 0x34<<7 | 0x46, + 23506 - 19968: jis0208<<14 | 0x13<<7 | 0x07, + 23507 - 19968: jis0208<<14 | 0x15<<7 | 0x56, + 23508 - 19968: jis0208<<14 | 0x34<<7 | 0x45, + 23510 - 19968: jis0212<<14 | 0x19<<7 | 0x3E, + 23511 - 19968: jis0212<<14 | 0x19<<7 | 0x3F, + 23512 - 19968: jis0208<<14 | 0x58<<7 | 0x4C, + 23513 - 19968: jis0212<<14 | 0x19<<7 | 0x41, + 23514 - 19968: jis0212<<14 | 0x19<<7 | 0x42, + 23515 - 19968: jis0208<<14 | 0x13<<7 | 0x11, + 23517 - 19968: jis0208<<14 | 0x1E<<7 | 0x11, + 23518 - 19968: jis0208<<14 | 0x34<<7 | 0x4A, + 23519 - 19968: jis0208<<14 | 0x1A<<7 | 0x00, + 23520 - 19968: jis0212<<14 | 0x19<<7 | 0x43, + 23521 - 19968: jis0208<<14 | 0x11<<7 | 0x28, + 23522 - 19968: jis0208<<14 | 0x34<<7 | 0x49, + 23524 - 19968: jis0208<<14 | 0x34<<7 | 0x47, + 23525 - 19968: jis0208<<14 | 0x34<<7 | 0x4B, + 23526 - 19968: jis0208<<14 | 0x34<<7 | 0x48, + 23527 - 19968: jis0208<<14 | 0x26<<7 | 0x0A, + 23528 - 19968: jis0208<<14 | 0x3B<<7 | 0x2C, + 23529 - 19968: jis0208<<14 | 0x1E<<7 | 0x12, + 23531 - 19968: jis0208<<14 | 0x34<<7 | 0x4C, + 23532 - 19968: jis0208<<14 | 0x58<<7 | 0x4D, + 23534 - 19968: jis0208<<14 | 0x2D<<7 | 0x1F, + 23535 - 19968: jis0212<<14 | 0x19<<7 | 0x44, + 23536 - 19968: jis0208<<14 | 0x34<<7 | 0x4D, + 23537 - 19968: jis0212<<14 | 0x19<<7 | 0x45, + 23539 - 19968: jis0208<<14 | 0x34<<7 | 0x4F, + 23540 - 19968: jis0212<<14 | 0x19<<7 | 0x46, + 23541 - 19968: jis0208<<14 | 0x22<<7 | 0x5D, + 23542 - 19968: jis0208<<14 | 0x34<<7 | 0x4E, + 23544 - 19968: jis0208<<14 | 0x1F<<7 | 0x02, + 23546 - 19968: jis0208<<14 | 0x1A<<7 | 0x5A, + 23549 - 19968: jis0212<<14 | 0x19<<7 | 0x47, + 23550 - 19968: jis0208<<14 | 0x21<<7 | 0x2F, + 23551 - 19968: jis0208<<14 | 0x1B<<7 | 0x56, + 23553 - 19968: jis0208<<14 | 0x28<<7 | 0x54, + 23554 - 19968: jis0208<<14 | 0x1F<<7 | 0x4B, + 23556 - 19968: jis0208<<14 | 0x1B<<7 | 0x2C, + 23557 - 19968: jis0208<<14 | 0x34<<7 | 0x50, + 23558 - 19968: jis0208<<14 | 0x1D<<7 | 0x0C, + 23559 - 19968: jis0208<<14 | 0x34<<7 | 0x51, + 23560 - 19968: jis0208<<14 | 0x34<<7 | 0x52, + 23561 - 19968: jis0208<<14 | 0x0F<<7 | 0x32, + 23562 - 19968: jis0208<<14 | 0x21<<7 | 0x19, + 23563 - 19968: jis0208<<14 | 0x1E<<7 | 0x31, + 23564 - 19968: jis0212<<14 | 0x19<<7 | 0x48, + 23565 - 19968: jis0208<<14 | 0x34<<7 | 0x53, + 23566 - 19968: jis0208<<14 | 0x25<<7 | 0x12, + 23567 - 19968: jis0208<<14 | 0x1D<<7 | 0x0D, + 23569 - 19968: jis0208<<14 | 0x1D<<7 | 0x0E, + 23571 - 19968: jis0208<<14 | 0x34<<7 | 0x54, + 23574 - 19968: jis0208<<14 | 0x1F<<7 | 0x4C, + 23575 - 19968: jis0212<<14 | 0x19<<7 | 0x49, + 23578 - 19968: jis0208<<14 | 0x1D<<7 | 0x0F, + 23582 - 19968: jis0208<<14 | 0x58<<7 | 0x4E, + 23583 - 19968: jis0212<<14 | 0x19<<7 | 0x4B, + 23584 - 19968: jis0208<<14 | 0x34<<7 | 0x55, + 23586 - 19968: jis0208<<14 | 0x34<<7 | 0x56, + 23587 - 19968: jis0212<<14 | 0x19<<7 | 0x4C, + 23588 - 19968: jis0208<<14 | 0x2B<<7 | 0x3F, + 23590 - 19968: jis0212<<14 | 0x19<<7 | 0x4D, + 23592 - 19968: jis0208<<14 | 0x34<<7 | 0x57, + 23593 - 19968: jis0212<<14 | 0x19<<7 | 0x4E, + 23595 - 19968: jis0212<<14 | 0x19<<7 | 0x4F, + 23596 - 19968: jis0212<<14 | 0x19<<7 | 0x50, + 23597 - 19968: jis0208<<14 | 0x15<<7 | 0x25, + 23598 - 19968: jis0212<<14 | 0x19<<7 | 0x51, + 23600 - 19968: jis0212<<14 | 0x19<<7 | 0x52, + 23601 - 19968: jis0208<<14 | 0x1C<<7 | 0x01, + 23602 - 19968: jis0212<<14 | 0x19<<7 | 0x53, + 23605 - 19968: jis0212<<14 | 0x19<<7 | 0x54, + 23606 - 19968: jis0212<<14 | 0x19<<7 | 0x55, + 23608 - 19968: jis0208<<14 | 0x34<<7 | 0x58, + 23609 - 19968: jis0208<<14 | 0x34<<7 | 0x59, + 23610 - 19968: jis0208<<14 | 0x1B<<7 | 0x3B, + 23611 - 19968: jis0208<<14 | 0x1E<<7 | 0x0B, + 23612 - 19968: jis0208<<14 | 0x25<<7 | 0x53, + 23613 - 19968: jis0208<<14 | 0x1E<<7 | 0x33, + 23614 - 19968: jis0208<<14 | 0x27<<7 | 0x57, + 23615 - 19968: jis0208<<14 | 0x26<<7 | 0x01, + 23616 - 19968: jis0208<<14 | 0x15<<7 | 0x28, + 23617 - 19968: jis0208<<14 | 0x34<<7 | 0x5A, + 23621 - 19968: jis0208<<14 | 0x14<<7 | 0x4E, + 23622 - 19968: jis0208<<14 | 0x34<<7 | 0x5B, + 23624 - 19968: jis0208<<14 | 0x15<<7 | 0x5D, + 23626 - 19968: jis0208<<14 | 0x25<<7 | 0x2E, + 23627 - 19968: jis0208<<14 | 0x11<<7 | 0x0F, + 23629 - 19968: jis0208<<14 | 0x1A<<7 | 0x32, + 23630 - 19968: jis0208<<14 | 0x34<<7 | 0x5C, + 23631 - 19968: jis0208<<14 | 0x35<<7 | 0x01, + 23632 - 19968: jis0208<<14 | 0x35<<7 | 0x00, + 23633 - 19968: jis0208<<14 | 0x15<<7 | 0x5C, + 23635 - 19968: jis0208<<14 | 0x34<<7 | 0x5D, + 23637 - 19968: jis0208<<14 | 0x24<<7 | 0x17, + 23641 - 19968: jis0212<<14 | 0x19<<7 | 0x56, + 23642 - 19968: jis0212<<14 | 0x19<<7 | 0x57, + 23644 - 19968: jis0212<<14 | 0x19<<7 | 0x58, + 23646 - 19968: jis0208<<14 | 0x21<<7 | 0x0F, + 23648 - 19968: jis0208<<14 | 0x24<<7 | 0x2A, + 23649 - 19968: jis0208<<14 | 0x1B<<7 | 0x27, + 23650 - 19968: jis0212<<14 | 0x19<<7 | 0x59, + 23651 - 19968: jis0212<<14 | 0x19<<7 | 0x5A, + 23652 - 19968: jis0208<<14 | 0x20<<7 | 0x37, + 23653 - 19968: jis0208<<14 | 0x2C<<7 | 0x59, + 23655 - 19968: jis0212<<14 | 0x19<<7 | 0x5B, + 23656 - 19968: jis0212<<14 | 0x19<<7 | 0x5C, + 23657 - 19968: jis0212<<14 | 0x19<<7 | 0x5D, + 23660 - 19968: jis0208<<14 | 0x35<<7 | 0x03, + 23661 - 19968: jis0212<<14 | 0x1A<<7 | 0x00, + 23662 - 19968: jis0208<<14 | 0x35<<7 | 0x04, + 23663 - 19968: jis0208<<14 | 0x25<<7 | 0x35, + 23664 - 19968: jis0212<<14 | 0x1A<<7 | 0x01, + 23665 - 19968: jis0208<<14 | 0x1A<<7 | 0x12, + 23668 - 19968: jis0212<<14 | 0x1A<<7 | 0x02, + 23669 - 19968: jis0212<<14 | 0x1A<<7 | 0x03, + 23670 - 19968: jis0208<<14 | 0x35<<7 | 0x06, + 23673 - 19968: jis0208<<14 | 0x35<<7 | 0x07, + 23674 - 19968: jis0212<<14 | 0x1A<<7 | 0x04, + 23675 - 19968: jis0212<<14 | 0x1A<<7 | 0x05, + 23676 - 19968: jis0212<<14 | 0x1A<<7 | 0x06, + 23677 - 19968: jis0212<<14 | 0x1A<<7 | 0x07, + 23687 - 19968: jis0212<<14 | 0x1A<<7 | 0x08, + 23688 - 19968: jis0212<<14 | 0x1A<<7 | 0x09, + 23690 - 19968: jis0212<<14 | 0x1A<<7 | 0x0A, + 23692 - 19968: jis0208<<14 | 0x35<<7 | 0x08, + 23695 - 19968: jis0212<<14 | 0x1A<<7 | 0x0B, + 23696 - 19968: jis0208<<14 | 0x13<<7 | 0x53, + 23697 - 19968: jis0208<<14 | 0x35<<7 | 0x09, + 23698 - 19968: jis0212<<14 | 0x1A<<7 | 0x0C, + 23700 - 19968: jis0208<<14 | 0x35<<7 | 0x0A, + 23709 - 19968: jis0212<<14 | 0x1A<<7 | 0x0D, + 23711 - 19968: jis0212<<14 | 0x1A<<7 | 0x0E, + 23712 - 19968: jis0212<<14 | 0x1A<<7 | 0x0F, + 23713 - 19968: jis0208<<14 | 0x11<<7 | 0x0B, + 23714 - 19968: jis0212<<14 | 0x1A<<7 | 0x10, + 23715 - 19968: jis0212<<14 | 0x1A<<7 | 0x11, + 23718 - 19968: jis0208<<14 | 0x58<<7 | 0x4F, + 23720 - 19968: jis0208<<14 | 0x20<<7 | 0x1A, + 23721 - 19968: jis0208<<14 | 0x13<<7 | 0x43, + 23722 - 19968: jis0212<<14 | 0x1A<<7 | 0x13, + 23723 - 19968: jis0208<<14 | 0x35<<7 | 0x0C, + 23724 - 19968: jis0208<<14 | 0x2B<<7 | 0x07, + 23729 - 19968: jis0208<<14 | 0x21<<7 | 0x31, + 23730 - 19968: jis0212<<14 | 0x1A<<7 | 0x14, + 23731 - 19968: jis0208<<14 | 0x12<<7 | 0x38, + 23732 - 19968: jis0212<<14 | 0x1A<<7 | 0x15, + 23733 - 19968: jis0212<<14 | 0x1A<<7 | 0x16, + 23734 - 19968: jis0208<<14 | 0x35<<7 | 0x0E, + 23735 - 19968: jis0208<<14 | 0x35<<7 | 0x10, + 23736 - 19968: jis0208<<14 | 0x13<<7 | 0x3E, + 23738 - 19968: jis0208<<14 | 0x58<<7 | 0x50, + 23739 - 19968: jis0208<<14 | 0x35<<7 | 0x0D, + 23740 - 19968: jis0208<<14 | 0x35<<7 | 0x0F, + 23742 - 19968: jis0208<<14 | 0x35<<7 | 0x12, + 23749 - 19968: jis0208<<14 | 0x35<<7 | 0x11, + 23751 - 19968: jis0208<<14 | 0x35<<7 | 0x13, + 23753 - 19968: jis0212<<14 | 0x1A<<7 | 0x18, + 23755 - 19968: jis0212<<14 | 0x1A<<7 | 0x19, + 23762 - 19968: jis0212<<14 | 0x1A<<7 | 0x1A, + 23767 - 19968: jis0212<<14 | 0x1A<<7 | 0x1C, + 23769 - 19968: jis0208<<14 | 0x35<<7 | 0x14, + 23773 - 19968: jis0212<<14 | 0x1A<<7 | 0x1B, + 23776 - 19968: jis0208<<14 | 0x25<<7 | 0x1C, + 23777 - 19968: jis0208<<14 | 0x15<<7 | 0x0D, + 23784 - 19968: jis0208<<14 | 0x11<<7 | 0x44, + 23785 - 19968: jis0208<<14 | 0x35<<7 | 0x15, + 23786 - 19968: jis0208<<14 | 0x35<<7 | 0x1A, + 23789 - 19968: jis0208<<14 | 0x35<<7 | 0x18, + 23790 - 19968: jis0212<<14 | 0x1A<<7 | 0x1D, + 23791 - 19968: jis0208<<14 | 0x29<<7 | 0x56, + 23792 - 19968: jis0208<<14 | 0x29<<7 | 0x55, + 23793 - 19968: jis0212<<14 | 0x1A<<7 | 0x1E, + 23794 - 19968: jis0212<<14 | 0x1A<<7 | 0x1F, + 23796 - 19968: jis0212<<14 | 0x1A<<7 | 0x20, + 23797 - 19968: jis0208<<14 | 0x58<<7 | 0x51, + 23798 - 19968: jis0208<<14 | 0x24<<7 | 0x46, + 23802 - 19968: jis0208<<14 | 0x35<<7 | 0x17, + 23803 - 19968: jis0208<<14 | 0x1C<<7 | 0x33, + 23805 - 19968: jis0208<<14 | 0x35<<7 | 0x16, + 23809 - 19968: jis0212<<14 | 0x1A<<7 | 0x21, + 23814 - 19968: jis0212<<14 | 0x1A<<7 | 0x22, + 23815 - 19968: jis0208<<14 | 0x1E<<7 | 0x51, + 23819 - 19968: jis0208<<14 | 0x35<<7 | 0x1B, + 23821 - 19968: jis0212<<14 | 0x1A<<7 | 0x23, + 23822 - 19968: jis0208<<14 | 0x19<<7 | 0x49, + 23825 - 19968: jis0208<<14 | 0x35<<7 | 0x21, + 23826 - 19968: jis0212<<14 | 0x1A<<7 | 0x24, + 23828 - 19968: jis0208<<14 | 0x35<<7 | 0x22, + 23829 - 19968: jis0208<<14 | 0x35<<7 | 0x1C, + 23830 - 19968: jis0208<<14 | 0x12<<7 | 0x12, + 23831 - 19968: jis0208<<14 | 0x35<<7 | 0x1D, + 23832 - 19968: jis0208<<14 | 0x35<<7 | 0x26, + 23833 - 19968: jis0208<<14 | 0x35<<7 | 0x25, + 23834 - 19968: jis0208<<14 | 0x35<<7 | 0x24, + 23835 - 19968: jis0208<<14 | 0x35<<7 | 0x20, + 23839 - 19968: jis0208<<14 | 0x35<<7 | 0x1F, + 23842 - 19968: jis0208<<14 | 0x35<<7 | 0x23, + 23843 - 19968: jis0212<<14 | 0x1A<<7 | 0x26, + 23844 - 19968: jis0212<<14 | 0x1A<<7 | 0x27, + 23846 - 19968: jis0212<<14 | 0x1A<<7 | 0x28, + 23847 - 19968: jis0208<<14 | 0x58<<7 | 0x52, + 23849 - 19968: jis0208<<14 | 0x29<<7 | 0x57, + 23851 - 19968: jis0212<<14 | 0x1A<<7 | 0x25, + 23857 - 19968: jis0212<<14 | 0x1A<<7 | 0x2A, + 23860 - 19968: jis0212<<14 | 0x1A<<7 | 0x2B, + 23865 - 19968: jis0212<<14 | 0x1A<<7 | 0x2C, + 23869 - 19968: jis0212<<14 | 0x1A<<7 | 0x2D, + 23871 - 19968: jis0212<<14 | 0x1A<<7 | 0x2E, + 23874 - 19968: jis0208<<14 | 0x58<<7 | 0x55, + 23875 - 19968: jis0212<<14 | 0x1A<<7 | 0x30, + 23878 - 19968: jis0212<<14 | 0x1A<<7 | 0x31, + 23880 - 19968: jis0212<<14 | 0x1A<<7 | 0x32, + 23882 - 19968: jis0212<<14 | 0x1A<<7 | 0x36, + 23883 - 19968: jis0208<<14 | 0x35<<7 | 0x2A, + 23884 - 19968: jis0208<<14 | 0x35<<7 | 0x27, + 23886 - 19968: jis0208<<14 | 0x35<<7 | 0x29, + 23888 - 19968: jis0208<<14 | 0x2C<<7 | 0x51, + 23889 - 19968: jis0212<<14 | 0x1A<<7 | 0x34, + 23890 - 19968: jis0208<<14 | 0x35<<7 | 0x28, + 23891 - 19968: jis0208<<14 | 0x58<<7 | 0x53, + 23893 - 19968: jis0212<<14 | 0x1A<<7 | 0x33, + 23897 - 19968: jis0212<<14 | 0x1A<<7 | 0x35, + 23900 - 19968: jis0208<<14 | 0x35<<7 | 0x1E, + 23903 - 19968: jis0212<<14 | 0x1A<<7 | 0x37, + 23904 - 19968: jis0212<<14 | 0x1A<<7 | 0x38, + 23905 - 19968: jis0212<<14 | 0x1A<<7 | 0x39, + 23906 - 19968: jis0212<<14 | 0x1A<<7 | 0x3A, + 23908 - 19968: jis0212<<14 | 0x1A<<7 | 0x3B, + 23913 - 19968: jis0208<<14 | 0x1E<<7 | 0x52, + 23914 - 19968: jis0212<<14 | 0x1A<<7 | 0x3C, + 23916 - 19968: jis0208<<14 | 0x35<<7 | 0x2B, + 23917 - 19968: jis0208<<14 | 0x58<<7 | 0x56, + 23919 - 19968: jis0208<<14 | 0x19<<7 | 0x16, + 23920 - 19968: jis0212<<14 | 0x1A<<7 | 0x3E, + 23923 - 19968: jis0208<<14 | 0x35<<7 | 0x2C, + 23926 - 19968: jis0208<<14 | 0x35<<7 | 0x2D, + 23929 - 19968: jis0212<<14 | 0x1A<<7 | 0x3F, + 23930 - 19968: jis0212<<14 | 0x1A<<7 | 0x40, + 23934 - 19968: jis0212<<14 | 0x1A<<7 | 0x41, + 23935 - 19968: jis0212<<14 | 0x1A<<7 | 0x42, + 23937 - 19968: jis0212<<14 | 0x1A<<7 | 0x43, + 23938 - 19968: jis0208<<14 | 0x35<<7 | 0x30, + 23939 - 19968: jis0212<<14 | 0x1A<<7 | 0x44, + 23940 - 19968: jis0208<<14 | 0x35<<7 | 0x2F, + 23943 - 19968: jis0208<<14 | 0x35<<7 | 0x2E, + 23944 - 19968: jis0212<<14 | 0x1A<<7 | 0x45, + 23946 - 19968: jis0212<<14 | 0x1A<<7 | 0x46, + 23947 - 19968: jis0208<<14 | 0x24<<7 | 0x47, + 23948 - 19968: jis0208<<14 | 0x35<<7 | 0x19, + 23952 - 19968: jis0208<<14 | 0x35<<7 | 0x36, + 23954 - 19968: jis0212<<14 | 0x1A<<7 | 0x47, + 23955 - 19968: jis0212<<14 | 0x1A<<7 | 0x48, + 23956 - 19968: jis0212<<14 | 0x1A<<7 | 0x49, + 23957 - 19968: jis0212<<14 | 0x1A<<7 | 0x4A, + 23961 - 19968: jis0212<<14 | 0x1A<<7 | 0x4B, + 23963 - 19968: jis0212<<14 | 0x1A<<7 | 0x4C, + 23965 - 19968: jis0208<<14 | 0x35<<7 | 0x32, + 23967 - 19968: jis0212<<14 | 0x1A<<7 | 0x4D, + 23968 - 19968: jis0212<<14 | 0x1A<<7 | 0x4E, + 23970 - 19968: jis0208<<14 | 0x35<<7 | 0x31, + 23975 - 19968: jis0212<<14 | 0x1A<<7 | 0x4F, + 23979 - 19968: jis0212<<14 | 0x1A<<7 | 0x50, + 23980 - 19968: jis0208<<14 | 0x35<<7 | 0x33, + 23982 - 19968: jis0208<<14 | 0x35<<7 | 0x34, + 23984 - 19968: jis0212<<14 | 0x1A<<7 | 0x51, + 23986 - 19968: jis0212<<14 | 0x45<<7 | 0x53, + 23988 - 19968: jis0212<<14 | 0x1A<<7 | 0x52, + 23991 - 19968: jis0208<<14 | 0x35<<7 | 0x37, + 23992 - 19968: jis0208<<14 | 0x58<<7 | 0x57, + 23993 - 19968: jis0208<<14 | 0x58<<7 | 0x58, + 23994 - 19968: jis0208<<14 | 0x2D<<7 | 0x45, + 23996 - 19968: jis0208<<14 | 0x35<<7 | 0x38, + 23997 - 19968: jis0208<<14 | 0x35<<7 | 0x35, + 24003 - 19968: jis0212<<14 | 0x1A<<7 | 0x55, + 24007 - 19968: jis0212<<14 | 0x1A<<7 | 0x56, + 24009 - 19968: jis0208<<14 | 0x35<<7 | 0x39, + 24011 - 19968: jis0212<<14 | 0x1A<<7 | 0x57, + 24012 - 19968: jis0208<<14 | 0x13<<7 | 0x3F, + 24013 - 19968: jis0208<<14 | 0x35<<7 | 0x3A, + 24014 - 19968: jis0212<<14 | 0x1A<<7 | 0x59, + 24016 - 19968: jis0208<<14 | 0x58<<7 | 0x59, + 24018 - 19968: jis0208<<14 | 0x35<<7 | 0x3C, + 24019 - 19968: jis0208<<14 | 0x35<<7 | 0x3B, + 24022 - 19968: jis0208<<14 | 0x35<<7 | 0x3D, + 24024 - 19968: jis0212<<14 | 0x1A<<7 | 0x5A, + 24025 - 19968: jis0212<<14 | 0x1A<<7 | 0x5B, + 24027 - 19968: jis0208<<14 | 0x35<<7 | 0x3E, + 24029 - 19968: jis0208<<14 | 0x1F<<7 | 0x4D, + 24030 - 19968: jis0208<<14 | 0x1C<<7 | 0x02, + 24032 - 19968: jis0212<<14 | 0x1A<<7 | 0x5C, + 24033 - 19968: jis0208<<14 | 0x1C<<7 | 0x43, + 24035 - 19968: jis0208<<14 | 0x20<<7 | 0x42, + 24036 - 19968: jis0212<<14 | 0x1A<<7 | 0x5D, + 24037 - 19968: jis0208<<14 | 0x18<<7 | 0x08, + 24038 - 19968: jis0208<<14 | 0x19<<7 | 0x17, + 24039 - 19968: jis0208<<14 | 0x18<<7 | 0x09, + 24040 - 19968: jis0208<<14 | 0x14<<7 | 0x4F, + 24041 - 19968: jis0212<<14 | 0x1B<<7 | 0x00, + 24043 - 19968: jis0208<<14 | 0x35<<7 | 0x3F, + 24046 - 19968: jis0208<<14 | 0x19<<7 | 0x18, + 24049 - 19968: jis0208<<14 | 0x17<<7 | 0x29, + 24050 - 19968: jis0208<<14 | 0x35<<7 | 0x40, + 24051 - 19968: jis0208<<14 | 0x2B<<7 | 0x05, + 24052 - 19968: jis0208<<14 | 0x26<<7 | 0x22, + 24053 - 19968: jis0208<<14 | 0x35<<7 | 0x41, + 24055 - 19968: jis0208<<14 | 0x18<<7 | 0x0A, + 24056 - 19968: jis0212<<14 | 0x1B<<7 | 0x01, + 24057 - 19968: jis0212<<14 | 0x1B<<7 | 0x02, + 24059 - 19968: jis0208<<14 | 0x13<<7 | 0x0B, + 24061 - 19968: jis0208<<14 | 0x22<<7 | 0x06, + 24062 - 19968: jis0208<<14 | 0x15<<7 | 0x31, + 24064 - 19968: jis0212<<14 | 0x1B<<7 | 0x03, + 24066 - 19968: jis0208<<14 | 0x1A<<7 | 0x33, + 24067 - 19968: jis0208<<14 | 0x28<<7 | 0x3A, + 24070 - 19968: jis0208<<14 | 0x27<<7 | 0x20, + 24071 - 19968: jis0212<<14 | 0x1B<<7 | 0x04, + 24075 - 19968: jis0208<<14 | 0x35<<7 | 0x42, + 24076 - 19968: jis0208<<14 | 0x13<<7 | 0x54, + 24077 - 19968: jis0212<<14 | 0x1B<<7 | 0x05, + 24081 - 19968: jis0208<<14 | 0x35<<7 | 0x45, + 24082 - 19968: jis0212<<14 | 0x1B<<7 | 0x06, + 24084 - 19968: jis0212<<14 | 0x1B<<7 | 0x07, + 24085 - 19968: jis0212<<14 | 0x1B<<7 | 0x08, + 24086 - 19968: jis0208<<14 | 0x23<<7 | 0x00, + 24088 - 19968: jis0212<<14 | 0x1B<<7 | 0x09, + 24089 - 19968: jis0208<<14 | 0x35<<7 | 0x44, + 24090 - 19968: jis0208<<14 | 0x35<<7 | 0x43, + 24091 - 19968: jis0208<<14 | 0x35<<7 | 0x46, + 24093 - 19968: jis0208<<14 | 0x23<<7 | 0x4A, + 24095 - 19968: jis0212<<14 | 0x1B<<7 | 0x0A, + 24096 - 19968: jis0212<<14 | 0x1B<<7 | 0x0B, + 24101 - 19968: jis0208<<14 | 0x1E<<7 | 0x42, + 24104 - 19968: jis0212<<14 | 0x1B<<7 | 0x0D, + 24107 - 19968: jis0208<<14 | 0x1A<<7 | 0x34, + 24109 - 19968: jis0208<<14 | 0x1F<<7 | 0x29, + 24110 - 19968: jis0212<<14 | 0x1B<<7 | 0x0C, + 24111 - 19968: jis0208<<14 | 0x21<<7 | 0x32, + 24112 - 19968: jis0208<<14 | 0x14<<7 | 0x01, + 24114 - 19968: jis0212<<14 | 0x1B<<7 | 0x0E, + 24115 - 19968: jis0208<<14 | 0x23<<7 | 0x01, + 24117 - 19968: jis0212<<14 | 0x1B<<7 | 0x0F, + 24118 - 19968: jis0208<<14 | 0x35<<7 | 0x47, + 24119 - 19968: jis0208<<14 | 0x35<<7 | 0x48, + 24120 - 19968: jis0208<<14 | 0x1D<<7 | 0x4E, + 24125 - 19968: jis0208<<14 | 0x2A<<7 | 0x18, + 24126 - 19968: jis0212<<14 | 0x1B<<7 | 0x10, + 24128 - 19968: jis0208<<14 | 0x35<<7 | 0x4B, + 24131 - 19968: jis0208<<14 | 0x35<<7 | 0x4A, + 24132 - 19968: jis0208<<14 | 0x35<<7 | 0x49, + 24133 - 19968: jis0208<<14 | 0x28<<7 | 0x5C, + 24135 - 19968: jis0208<<14 | 0x35<<7 | 0x52, + 24137 - 19968: jis0212<<14 | 0x1B<<7 | 0x13, + 24139 - 19968: jis0212<<14 | 0x1B<<7 | 0x11, + 24140 - 19968: jis0208<<14 | 0x2A<<7 | 0x39, + 24142 - 19968: jis0208<<14 | 0x35<<7 | 0x4C, + 24144 - 19968: jis0212<<14 | 0x1B<<7 | 0x12, + 24145 - 19968: jis0212<<14 | 0x1B<<7 | 0x14, + 24148 - 19968: jis0208<<14 | 0x35<<7 | 0x4E, + 24149 - 19968: jis0208<<14 | 0x2A<<7 | 0x4A, + 24150 - 19968: jis0212<<14 | 0x1B<<7 | 0x15, + 24151 - 19968: jis0208<<14 | 0x35<<7 | 0x4D, + 24152 - 19968: jis0212<<14 | 0x1B<<7 | 0x16, + 24155 - 19968: jis0212<<14 | 0x1B<<7 | 0x17, + 24156 - 19968: jis0212<<14 | 0x1B<<7 | 0x18, + 24158 - 19968: jis0212<<14 | 0x1B<<7 | 0x19, + 24159 - 19968: jis0208<<14 | 0x35<<7 | 0x4F, + 24161 - 19968: jis0208<<14 | 0x27<<7 | 0x07, + 24162 - 19968: jis0208<<14 | 0x35<<7 | 0x50, + 24163 - 19968: jis0208<<14 | 0x29<<7 | 0x1D, + 24164 - 19968: jis0208<<14 | 0x35<<7 | 0x51, + 24168 - 19968: jis0212<<14 | 0x1B<<7 | 0x1A, + 24170 - 19968: jis0212<<14 | 0x1B<<7 | 0x1B, + 24171 - 19968: jis0212<<14 | 0x1B<<7 | 0x1C, + 24172 - 19968: jis0212<<14 | 0x1B<<7 | 0x1D, + 24173 - 19968: jis0212<<14 | 0x1B<<7 | 0x1E, + 24174 - 19968: jis0212<<14 | 0x1B<<7 | 0x1F, + 24176 - 19968: jis0212<<14 | 0x1B<<7 | 0x20, + 24178 - 19968: jis0208<<14 | 0x13<<7 | 0x12, + 24179 - 19968: jis0208<<14 | 0x29<<7 | 0x1E, + 24180 - 19968: jis0208<<14 | 0x26<<7 | 0x0E, + 24181 - 19968: jis0208<<14 | 0x35<<7 | 0x53, + 24182 - 19968: jis0208<<14 | 0x35<<7 | 0x54, + 24184 - 19968: jis0208<<14 | 0x18<<7 | 0x0B, + 24185 - 19968: jis0208<<14 | 0x13<<7 | 0x13, + 24186 - 19968: jis0208<<14 | 0x35<<7 | 0x55, + 24187 - 19968: jis0208<<14 | 0x17<<7 | 0x17, + 24188 - 19968: jis0208<<14 | 0x2C<<7 | 0x23, + 24189 - 19968: jis0208<<14 | 0x2C<<7 | 0x08, + 24190 - 19968: jis0208<<14 | 0x13<<7 | 0x55, + 24191 - 19968: jis0208<<14 | 0x35<<7 | 0x57, + 24192 - 19968: jis0212<<14 | 0x1B<<7 | 0x21, + 24193 - 19968: jis0208<<14 | 0x23<<7 | 0x02, + 24195 - 19968: jis0208<<14 | 0x18<<7 | 0x0C, + 24196 - 19968: jis0208<<14 | 0x1D<<7 | 0x10, + 24199 - 19968: jis0208<<14 | 0x27<<7 | 0x3E, + 24202 - 19968: jis0208<<14 | 0x1D<<7 | 0x11, + 24203 - 19968: jis0212<<14 | 0x1B<<7 | 0x22, + 24206 - 19968: jis0212<<14 | 0x1B<<7 | 0x23, + 24207 - 19968: jis0208<<14 | 0x1C<<7 | 0x57, + 24213 - 19968: jis0208<<14 | 0x23<<7 | 0x4B, + 24214 - 19968: jis0208<<14 | 0x29<<7 | 0x58, + 24215 - 19968: jis0208<<14 | 0x24<<7 | 0x18, + 24218 - 19968: jis0208<<14 | 0x18<<7 | 0x0D, + 24220 - 19968: jis0208<<14 | 0x28<<7 | 0x3B, + 24224 - 19968: jis0208<<14 | 0x35<<7 | 0x58, + 24226 - 19968: jis0212<<14 | 0x1B<<7 | 0x24, + 24228 - 19968: jis0212<<14 | 0x1B<<7 | 0x25, + 24229 - 19968: jis0212<<14 | 0x1B<<7 | 0x26, + 24230 - 19968: jis0208<<14 | 0x24<<7 | 0x38, + 24231 - 19968: jis0208<<14 | 0x19<<7 | 0x21, + 24232 - 19968: jis0212<<14 | 0x1B<<7 | 0x27, + 24234 - 19968: jis0212<<14 | 0x1B<<7 | 0x28, + 24235 - 19968: jis0208<<14 | 0x17<<7 | 0x2A, + 24236 - 19968: jis0212<<14 | 0x1B<<7 | 0x29, + 24237 - 19968: jis0208<<14 | 0x23<<7 | 0x4C, + 24241 - 19968: jis0212<<14 | 0x1B<<7 | 0x2A, + 24243 - 19968: jis0212<<14 | 0x1B<<7 | 0x2B, + 24245 - 19968: jis0208<<14 | 0x0F<<7 | 0x22, + 24246 - 19968: jis0208<<14 | 0x1C<<7 | 0x4D, + 24247 - 19968: jis0208<<14 | 0x18<<7 | 0x0E, + 24248 - 19968: jis0208<<14 | 0x2C<<7 | 0x26, + 24253 - 19968: jis0212<<14 | 0x1B<<7 | 0x2C, + 24254 - 19968: jis0212<<14 | 0x1B<<7 | 0x2D, + 24255 - 19968: jis0212<<14 | 0x1B<<7 | 0x2E, + 24257 - 19968: jis0208<<14 | 0x35<<7 | 0x59, + 24258 - 19968: jis0208<<14 | 0x35<<7 | 0x5A, + 24259 - 19968: jis0208<<14 | 0x26<<7 | 0x30, + 24262 - 19968: jis0212<<14 | 0x1B<<7 | 0x2F, + 24264 - 19968: jis0208<<14 | 0x35<<7 | 0x5B, + 24265 - 19968: jis0208<<14 | 0x2D<<7 | 0x56, + 24266 - 19968: jis0208<<14 | 0x2E<<7 | 0x0C, + 24267 - 19968: jis0212<<14 | 0x1B<<7 | 0x31, + 24268 - 19968: jis0212<<14 | 0x1B<<7 | 0x30, + 24270 - 19968: jis0212<<14 | 0x1B<<7 | 0x32, + 24271 - 19968: jis0208<<14 | 0x35<<7 | 0x5D, + 24272 - 19968: jis0208<<14 | 0x35<<7 | 0x5C, + 24273 - 19968: jis0212<<14 | 0x1B<<7 | 0x33, + 24274 - 19968: jis0212<<14 | 0x1B<<7 | 0x34, + 24275 - 19968: jis0208<<14 | 0x12<<7 | 0x26, + 24276 - 19968: jis0212<<14 | 0x1B<<7 | 0x35, + 24277 - 19968: jis0212<<14 | 0x1B<<7 | 0x36, + 24278 - 19968: jis0208<<14 | 0x36<<7 | 0x00, + 24282 - 19968: jis0208<<14 | 0x36<<7 | 0x03, + 24283 - 19968: jis0208<<14 | 0x36<<7 | 0x04, + 24284 - 19968: jis0212<<14 | 0x1B<<7 | 0x37, + 24285 - 19968: jis0208<<14 | 0x36<<7 | 0x02, + 24286 - 19968: jis0212<<14 | 0x1B<<7 | 0x38, + 24287 - 19968: jis0208<<14 | 0x28<<7 | 0x1F, + 24288 - 19968: jis0208<<14 | 0x1D<<7 | 0x12, + 24289 - 19968: jis0208<<14 | 0x36<<7 | 0x06, + 24290 - 19968: jis0208<<14 | 0x36<<7 | 0x05, + 24291 - 19968: jis0208<<14 | 0x36<<7 | 0x01, + 24293 - 19968: jis0212<<14 | 0x1B<<7 | 0x39, + 24296 - 19968: jis0208<<14 | 0x36<<7 | 0x07, + 24297 - 19968: jis0208<<14 | 0x36<<7 | 0x08, + 24299 - 19968: jis0212<<14 | 0x1B<<7 | 0x3A, + 24300 - 19968: jis0208<<14 | 0x36<<7 | 0x09, + 24304 - 19968: jis0208<<14 | 0x36<<7 | 0x0C, + 24305 - 19968: jis0208<<14 | 0x36<<7 | 0x0A, + 24307 - 19968: jis0208<<14 | 0x36<<7 | 0x0B, + 24308 - 19968: jis0208<<14 | 0x36<<7 | 0x0D, + 24310 - 19968: jis0208<<14 | 0x10<<7 | 0x43, + 24311 - 19968: jis0208<<14 | 0x23<<7 | 0x4D, + 24312 - 19968: jis0208<<14 | 0x36<<7 | 0x0E, + 24314 - 19968: jis0208<<14 | 0x16<<7 | 0x59, + 24315 - 19968: jis0208<<14 | 0x11<<7 | 0x55, + 24316 - 19968: jis0208<<14 | 0x26<<7 | 0x15, + 24318 - 19968: jis0208<<14 | 0x36<<7 | 0x0F, + 24319 - 19968: jis0208<<14 | 0x25<<7 | 0x5A, + 24321 - 19968: jis0208<<14 | 0x29<<7 | 0x3A, + 24322 - 19968: jis0212<<14 | 0x1B<<7 | 0x3B, + 24323 - 19968: jis0208<<14 | 0x36<<7 | 0x10, + 24324 - 19968: jis0208<<14 | 0x2E<<7 | 0x0D, + 24326 - 19968: jis0212<<14 | 0x1B<<7 | 0x3C, + 24327 - 19968: jis0212<<14 | 0x1B<<7 | 0x3D, + 24328 - 19968: jis0212<<14 | 0x1B<<7 | 0x3E, + 24329 - 19968: jis0208<<14 | 0x36<<7 | 0x11, + 24330 - 19968: jis0208<<14 | 0x29<<7 | 0x1F, + 24331 - 19968: jis0208<<14 | 0x36<<7 | 0x14, + 24332 - 19968: jis0208<<14 | 0x2F<<7 | 0x00, + 24333 - 19968: jis0208<<14 | 0x2F<<7 | 0x10, + 24334 - 19968: jis0212<<14 | 0x1B<<7 | 0x3F, + 24335 - 19968: jis0208<<14 | 0x1B<<7 | 0x0F, + 24336 - 19968: jis0208<<14 | 0x25<<7 | 0x54, + 24337 - 19968: jis0208<<14 | 0x36<<7 | 0x15, + 24339 - 19968: jis0208<<14 | 0x14<<7 | 0x3C, + 24340 - 19968: jis0208<<14 | 0x23<<7 | 0x03, + 24341 - 19968: jis0208<<14 | 0x0F<<7 | 0x59, + 24342 - 19968: jis0208<<14 | 0x36<<7 | 0x16, + 24343 - 19968: jis0208<<14 | 0x29<<7 | 0x05, + 24344 - 19968: jis0208<<14 | 0x18<<7 | 0x0F, + 24345 - 19968: jis0212<<14 | 0x1B<<7 | 0x40, + 24347 - 19968: jis0208<<14 | 0x22<<7 | 0x2F, + 24348 - 19968: jis0212<<14 | 0x1B<<7 | 0x41, + 24349 - 19968: jis0212<<14 | 0x1B<<7 | 0x42, + 24351 - 19968: jis0208<<14 | 0x23<<7 | 0x4E, + 24353 - 19968: jis0208<<14 | 0x58<<7 | 0x5A, + 24354 - 19968: jis0212<<14 | 0x1B<<7 | 0x44, + 24355 - 19968: jis0212<<14 | 0x1B<<7 | 0x45, + 24356 - 19968: jis0212<<14 | 0x1B<<7 | 0x46, + 24357 - 19968: jis0208<<14 | 0x2B<<7 | 0x4E, + 24358 - 19968: jis0208<<14 | 0x17<<7 | 0x18, + 24359 - 19968: jis0208<<14 | 0x17<<7 | 0x2B, + 24360 - 19968: jis0212<<14 | 0x1B<<7 | 0x47, + 24361 - 19968: jis0208<<14 | 0x36<<7 | 0x17, + 24363 - 19968: jis0212<<14 | 0x1B<<7 | 0x48, + 24364 - 19968: jis0212<<14 | 0x1B<<7 | 0x49, + 24365 - 19968: jis0208<<14 | 0x36<<7 | 0x18, + 24366 - 19968: jis0212<<14 | 0x1B<<7 | 0x4A, + 24367 - 19968: jis0208<<14 | 0x36<<7 | 0x1E, + 24368 - 19968: jis0212<<14 | 0x1B<<7 | 0x4B, + 24369 - 19968: jis0208<<14 | 0x1B<<7 | 0x44, + 24372 - 19968: jis0208<<14 | 0x58<<7 | 0x5B, + 24373 - 19968: jis0208<<14 | 0x23<<7 | 0x04, + 24374 - 19968: jis0212<<14 | 0x1B<<7 | 0x4D, + 24375 - 19968: jis0208<<14 | 0x15<<7 | 0x0E, + 24376 - 19968: jis0208<<14 | 0x36<<7 | 0x19, + 24379 - 19968: jis0212<<14 | 0x1B<<7 | 0x4E, + 24380 - 19968: jis0208<<14 | 0x28<<7 | 0x0A, + 24381 - 19968: jis0212<<14 | 0x1B<<7 | 0x4F, + 24382 - 19968: jis0208<<14 | 0x22<<7 | 0x25, + 24383 - 19968: jis0212<<14 | 0x1B<<7 | 0x50, + 24384 - 19968: jis0212<<14 | 0x1B<<7 | 0x51, + 24385 - 19968: jis0208<<14 | 0x36<<7 | 0x1A, + 24388 - 19968: jis0212<<14 | 0x1B<<7 | 0x52, + 24389 - 19968: jis0208<<14 | 0x58<<7 | 0x0B, + 24391 - 19968: jis0212<<14 | 0x1B<<7 | 0x54, + 24392 - 19968: jis0208<<14 | 0x36<<7 | 0x1B, + 24394 - 19968: jis0208<<14 | 0x15<<7 | 0x0F, + 24396 - 19968: jis0208<<14 | 0x36<<7 | 0x1C, + 24397 - 19968: jis0212<<14 | 0x1B<<7 | 0x55, + 24398 - 19968: jis0208<<14 | 0x36<<7 | 0x1D, + 24400 - 19968: jis0212<<14 | 0x1B<<7 | 0x56, + 24401 - 19968: jis0208<<14 | 0x36<<7 | 0x1F, + 24403 - 19968: jis0208<<14 | 0x24<<7 | 0x55, + 24404 - 19968: jis0212<<14 | 0x1B<<7 | 0x57, + 24406 - 19968: jis0208<<14 | 0x36<<7 | 0x20, + 24407 - 19968: jis0208<<14 | 0x36<<7 | 0x21, + 24408 - 19968: jis0212<<14 | 0x1B<<7 | 0x58, + 24409 - 19968: jis0208<<14 | 0x36<<7 | 0x22, + 24411 - 19968: jis0212<<14 | 0x1B<<7 | 0x59, + 24412 - 19968: jis0208<<14 | 0x36<<7 | 0x13, + 24413 - 19968: jis0208<<14 | 0x36<<7 | 0x12, + 24416 - 19968: jis0212<<14 | 0x1B<<7 | 0x5A, + 24417 - 19968: jis0208<<14 | 0x36<<7 | 0x23, + 24418 - 19968: jis0208<<14 | 0x16<<7 | 0x20, + 24419 - 19968: jis0212<<14 | 0x1B<<7 | 0x5B, + 24420 - 19968: jis0212<<14 | 0x1B<<7 | 0x5C, + 24422 - 19968: jis0208<<14 | 0x28<<7 | 0x06, + 24423 - 19968: jis0208<<14 | 0x58<<7 | 0x5C, + 24425 - 19968: jis0208<<14 | 0x19<<7 | 0x2B, + 24426 - 19968: jis0208<<14 | 0x28<<7 | 0x16, + 24427 - 19968: jis0208<<14 | 0x23<<7 | 0x05, + 24428 - 19968: jis0208<<14 | 0x28<<7 | 0x2A, + 24429 - 19968: jis0208<<14 | 0x36<<7 | 0x24, + 24431 - 19968: jis0212<<14 | 0x1C<<7 | 0x00, + 24432 - 19968: jis0208<<14 | 0x1D<<7 | 0x13, + 24433 - 19968: jis0208<<14 | 0x10<<7 | 0x25, + 24434 - 19968: jis0212<<14 | 0x1C<<7 | 0x01, + 24435 - 19968: jis0208<<14 | 0x36<<7 | 0x25, + 24436 - 19968: jis0212<<14 | 0x1C<<7 | 0x02, + 24437 - 19968: jis0212<<14 | 0x1C<<7 | 0x03, + 24439 - 19968: jis0208<<14 | 0x36<<7 | 0x26, + 24440 - 19968: jis0212<<14 | 0x1C<<7 | 0x04, + 24441 - 19968: jis0208<<14 | 0x2B<<7 | 0x51, + 24442 - 19968: jis0212<<14 | 0x1C<<7 | 0x05, + 24444 - 19968: jis0208<<14 | 0x27<<7 | 0x3F, + 24445 - 19968: jis0212<<14 | 0x1C<<7 | 0x06, + 24446 - 19968: jis0212<<14 | 0x1C<<7 | 0x07, + 24447 - 19968: jis0208<<14 | 0x36<<7 | 0x29, + 24448 - 19968: jis0208<<14 | 0x10<<7 | 0x5C, + 24449 - 19968: jis0208<<14 | 0x1F<<7 | 0x0B, + 24450 - 19968: jis0208<<14 | 0x36<<7 | 0x28, + 24451 - 19968: jis0208<<14 | 0x36<<7 | 0x27, + 24452 - 19968: jis0208<<14 | 0x16<<7 | 0x21, + 24453 - 19968: jis0208<<14 | 0x21<<7 | 0x33, + 24455 - 19968: jis0208<<14 | 0x36<<7 | 0x2D, + 24456 - 19968: jis0208<<14 | 0x36<<7 | 0x2B, + 24457 - 19968: jis0212<<14 | 0x1C<<7 | 0x08, + 24458 - 19968: jis0208<<14 | 0x36<<7 | 0x2A, + 24459 - 19968: jis0208<<14 | 0x2D<<7 | 0x06, + 24460 - 19968: jis0208<<14 | 0x17<<7 | 0x44, + 24461 - 19968: jis0212<<14 | 0x1C<<7 | 0x09, + 24463 - 19968: jis0212<<14 | 0x1C<<7 | 0x0A, + 24464 - 19968: jis0208<<14 | 0x1C<<7 | 0x58, + 24465 - 19968: jis0208<<14 | 0x36<<7 | 0x2C, + 24466 - 19968: jis0208<<14 | 0x24<<7 | 0x2B, + 24467 - 19968: jis0208<<14 | 0x1C<<7 | 0x1D, + 24470 - 19968: jis0212<<14 | 0x1C<<7 | 0x0B, + 24471 - 19968: jis0208<<14 | 0x25<<7 | 0x1F, + 24472 - 19968: jis0208<<14 | 0x36<<7 | 0x30, + 24473 - 19968: jis0208<<14 | 0x36<<7 | 0x2F, + 24476 - 19968: jis0212<<14 | 0x1C<<7 | 0x0C, + 24477 - 19968: jis0212<<14 | 0x1C<<7 | 0x0D, + 24478 - 19968: jis0208<<14 | 0x36<<7 | 0x2E, + 24480 - 19968: jis0208<<14 | 0x36<<7 | 0x31, + 24481 - 19968: jis0208<<14 | 0x17<<7 | 0x45, + 24482 - 19968: jis0212<<14 | 0x1C<<7 | 0x0E, + 24484 - 19968: jis0212<<14 | 0x1C<<7 | 0x11, + 24487 - 19968: jis0212<<14 | 0x1C<<7 | 0x0F, + 24488 - 19968: jis0208<<14 | 0x36<<7 | 0x32, + 24489 - 19968: jis0208<<14 | 0x28<<7 | 0x5B, + 24490 - 19968: jis0208<<14 | 0x1C<<7 | 0x3A, + 24491 - 19968: jis0212<<14 | 0x1C<<7 | 0x10, + 24492 - 19968: jis0212<<14 | 0x1C<<7 | 0x12, + 24493 - 19968: jis0208<<14 | 0x36<<7 | 0x33, + 24494 - 19968: jis0208<<14 | 0x27<<7 | 0x58, + 24495 - 19968: jis0212<<14 | 0x1C<<7 | 0x13, + 24496 - 19968: jis0212<<14 | 0x1C<<7 | 0x14, + 24497 - 19968: jis0212<<14 | 0x1C<<7 | 0x15, + 24499 - 19968: jis0208<<14 | 0x25<<7 | 0x20, + 24500 - 19968: jis0208<<14 | 0x23<<7 | 0x06, + 24503 - 19968: jis0208<<14 | 0x58<<7 | 0x5D, + 24504 - 19968: jis0212<<14 | 0x1C<<7 | 0x16, + 24505 - 19968: jis0208<<14 | 0x24<<7 | 0x0F, + 24508 - 19968: jis0208<<14 | 0x36<<7 | 0x34, + 24509 - 19968: jis0208<<14 | 0x14<<7 | 0x0A, + 24515 - 19968: jis0208<<14 | 0x1E<<7 | 0x13, + 24516 - 19968: jis0212<<14 | 0x1C<<7 | 0x17, + 24517 - 19968: jis0208<<14 | 0x28<<7 | 0x0B, + 24519 - 19968: jis0212<<14 | 0x1C<<7 | 0x18, + 24520 - 19968: jis0212<<14 | 0x1C<<7 | 0x19, + 24521 - 19968: jis0212<<14 | 0x1C<<7 | 0x1A, + 24523 - 19968: jis0212<<14 | 0x1C<<7 | 0x1B, + 24524 - 19968: jis0208<<14 | 0x13<<7 | 0x56, + 24525 - 19968: jis0208<<14 | 0x26<<7 | 0x05, + 24528 - 19968: jis0212<<14 | 0x1C<<7 | 0x1C, + 24529 - 19968: jis0212<<14 | 0x1C<<7 | 0x1D, + 24530 - 19968: jis0212<<14 | 0x1C<<7 | 0x1E, + 24531 - 19968: jis0212<<14 | 0x1C<<7 | 0x1F, + 24532 - 19968: jis0212<<14 | 0x1C<<7 | 0x20, + 24534 - 19968: jis0208<<14 | 0x36<<7 | 0x35, + 24535 - 19968: jis0208<<14 | 0x1A<<7 | 0x35, + 24536 - 19968: jis0208<<14 | 0x2A<<7 | 0x19, + 24537 - 19968: jis0208<<14 | 0x2A<<7 | 0x1A, + 24540 - 19968: jis0208<<14 | 0x10<<7 | 0x5D, + 24541 - 19968: jis0208<<14 | 0x36<<7 | 0x3A, + 24542 - 19968: jis0208<<14 | 0x59<<7 | 0x00, + 24544 - 19968: jis0208<<14 | 0x22<<7 | 0x48, + 24545 - 19968: jis0212<<14 | 0x1C<<7 | 0x22, + 24546 - 19968: jis0212<<14 | 0x1C<<7 | 0x23, + 24548 - 19968: jis0208<<14 | 0x36<<7 | 0x37, + 24552 - 19968: jis0212<<14 | 0x1C<<7 | 0x24, + 24553 - 19968: jis0212<<14 | 0x1C<<7 | 0x25, + 24554 - 19968: jis0212<<14 | 0x1C<<7 | 0x26, + 24555 - 19968: jis0208<<14 | 0x11<<7 | 0x56, + 24556 - 19968: jis0212<<14 | 0x1C<<7 | 0x27, + 24557 - 19968: jis0212<<14 | 0x1C<<7 | 0x28, + 24558 - 19968: jis0212<<14 | 0x1C<<7 | 0x29, + 24559 - 19968: jis0212<<14 | 0x1C<<7 | 0x2A, + 24560 - 19968: jis0208<<14 | 0x37<<7 | 0x0C, + 24561 - 19968: jis0208<<14 | 0x36<<7 | 0x39, + 24562 - 19968: jis0212<<14 | 0x1C<<7 | 0x2B, + 24563 - 19968: jis0212<<14 | 0x1C<<7 | 0x2C, + 24565 - 19968: jis0208<<14 | 0x26<<7 | 0x0F, + 24566 - 19968: jis0212<<14 | 0x1C<<7 | 0x2D, + 24568 - 19968: jis0208<<14 | 0x36<<7 | 0x38, + 24570 - 19968: jis0212<<14 | 0x1C<<7 | 0x2E, + 24571 - 19968: jis0208<<14 | 0x36<<7 | 0x36, + 24572 - 19968: jis0212<<14 | 0x1C<<7 | 0x2F, + 24573 - 19968: jis0208<<14 | 0x18<<7 | 0x59, + 24575 - 19968: jis0208<<14 | 0x36<<7 | 0x3C, + 24583 - 19968: jis0212<<14 | 0x1C<<7 | 0x30, + 24586 - 19968: jis0212<<14 | 0x1C<<7 | 0x31, + 24589 - 19968: jis0212<<14 | 0x1C<<7 | 0x32, + 24590 - 19968: jis0208<<14 | 0x36<<7 | 0x42, + 24591 - 19968: jis0208<<14 | 0x36<<7 | 0x48, + 24592 - 19968: jis0208<<14 | 0x36<<7 | 0x40, + 24594 - 19968: jis0208<<14 | 0x24<<7 | 0x3B, + 24595 - 19968: jis0212<<14 | 0x1C<<7 | 0x33, + 24596 - 19968: jis0212<<14 | 0x1C<<7 | 0x34, + 24597 - 19968: jis0208<<14 | 0x36<<7 | 0x45, + 24598 - 19968: jis0208<<14 | 0x28<<7 | 0x3C, + 24599 - 19968: jis0212<<14 | 0x1C<<7 | 0x35, + 24600 - 19968: jis0212<<14 | 0x1C<<7 | 0x36, + 24601 - 19968: jis0208<<14 | 0x36<<7 | 0x3F, + 24602 - 19968: jis0212<<14 | 0x1C<<7 | 0x37, + 24603 - 19968: jis0208<<14 | 0x36<<7 | 0x44, + 24604 - 19968: jis0208<<14 | 0x2D<<7 | 0x46, + 24605 - 19968: jis0208<<14 | 0x1A<<7 | 0x36, + 24607 - 19968: jis0212<<14 | 0x1C<<7 | 0x38, + 24608 - 19968: jis0208<<14 | 0x21<<7 | 0x34, + 24609 - 19968: jis0208<<14 | 0x36<<7 | 0x3D, + 24612 - 19968: jis0212<<14 | 0x1C<<7 | 0x39, + 24613 - 19968: jis0208<<14 | 0x14<<7 | 0x3D, + 24614 - 19968: jis0208<<14 | 0x36<<7 | 0x47, + 24615 - 19968: jis0208<<14 | 0x1F<<7 | 0x0C, + 24616 - 19968: jis0208<<14 | 0x10<<7 | 0x44, + 24617 - 19968: jis0208<<14 | 0x36<<7 | 0x41, + 24618 - 19968: jis0208<<14 | 0x11<<7 | 0x57, + 24619 - 19968: jis0208<<14 | 0x36<<7 | 0x46, + 24621 - 19968: jis0212<<14 | 0x1C<<7 | 0x3A, + 24623 - 19968: jis0208<<14 | 0x15<<7 | 0x10, + 24625 - 19968: jis0208<<14 | 0x36<<7 | 0x43, + 24627 - 19968: jis0212<<14 | 0x1C<<7 | 0x3B, + 24629 - 19968: jis0212<<14 | 0x1C<<7 | 0x3C, + 24634 - 19968: jis0208<<14 | 0x36<<7 | 0x49, + 24640 - 19968: jis0212<<14 | 0x1C<<7 | 0x3D, + 24641 - 19968: jis0208<<14 | 0x36<<7 | 0x4B, + 24642 - 19968: jis0208<<14 | 0x36<<7 | 0x55, + 24643 - 19968: jis0208<<14 | 0x36<<7 | 0x53, + 24646 - 19968: jis0208<<14 | 0x36<<7 | 0x50, + 24647 - 19968: jis0212<<14 | 0x1C<<7 | 0x3E, + 24648 - 19968: jis0212<<14 | 0x1C<<7 | 0x3F, + 24649 - 19968: jis0212<<14 | 0x1C<<7 | 0x40, + 24650 - 19968: jis0208<<14 | 0x36<<7 | 0x4F, + 24651 - 19968: jis0208<<14 | 0x2D<<7 | 0x57, + 24652 - 19968: jis0212<<14 | 0x1C<<7 | 0x41, + 24653 - 19968: jis0208<<14 | 0x36<<7 | 0x51, + 24656 - 19968: jis0208<<14 | 0x15<<7 | 0x11, + 24657 - 19968: jis0212<<14 | 0x1C<<7 | 0x42, + 24658 - 19968: jis0208<<14 | 0x18<<7 | 0x10, + 24660 - 19968: jis0212<<14 | 0x1C<<7 | 0x43, + 24661 - 19968: jis0208<<14 | 0x1C<<7 | 0x59, + 24662 - 19968: jis0212<<14 | 0x1C<<7 | 0x44, + 24663 - 19968: jis0212<<14 | 0x1C<<7 | 0x45, + 24665 - 19968: jis0208<<14 | 0x36<<7 | 0x58, + 24666 - 19968: jis0208<<14 | 0x36<<7 | 0x4A, + 24669 - 19968: jis0208<<14 | 0x59<<7 | 0x01, + 24671 - 19968: jis0208<<14 | 0x36<<7 | 0x4E, + 24672 - 19968: jis0208<<14 | 0x36<<7 | 0x3E, + 24673 - 19968: jis0212<<14 | 0x1C<<7 | 0x47, + 24674 - 19968: jis0208<<14 | 0x11<<7 | 0x59, + 24675 - 19968: jis0208<<14 | 0x36<<7 | 0x52, + 24676 - 19968: jis0208<<14 | 0x36<<7 | 0x54, + 24677 - 19968: jis0208<<14 | 0x22<<7 | 0x30, + 24679 - 19968: jis0212<<14 | 0x1C<<7 | 0x48, + 24680 - 19968: jis0208<<14 | 0x19<<7 | 0x07, + 24681 - 19968: jis0208<<14 | 0x11<<7 | 0x17, + 24682 - 19968: jis0208<<14 | 0x36<<7 | 0x4C, + 24683 - 19968: jis0208<<14 | 0x36<<7 | 0x57, + 24684 - 19968: jis0208<<14 | 0x36<<7 | 0x56, + 24685 - 19968: jis0208<<14 | 0x15<<7 | 0x12, + 24687 - 19968: jis0208<<14 | 0x21<<7 | 0x08, + 24688 - 19968: jis0208<<14 | 0x12<<7 | 0x45, + 24689 - 19968: jis0212<<14 | 0x1C<<7 | 0x49, + 24693 - 19968: jis0208<<14 | 0x16<<7 | 0x22, + 24695 - 19968: jis0208<<14 | 0x36<<7 | 0x4D, + 24702 - 19968: jis0212<<14 | 0x1C<<7 | 0x4A, + 24703 - 19968: jis0212<<14 | 0x1C<<7 | 0x4B, + 24705 - 19968: jis0208<<14 | 0x36<<7 | 0x59, + 24706 - 19968: jis0212<<14 | 0x1C<<7 | 0x4C, + 24707 - 19968: jis0208<<14 | 0x36<<7 | 0x5C, + 24708 - 19968: jis0208<<14 | 0x37<<7 | 0x00, + 24709 - 19968: jis0208<<14 | 0x59<<7 | 0x02, + 24710 - 19968: jis0212<<14 | 0x1C<<7 | 0x4D, + 24712 - 19968: jis0212<<14 | 0x1C<<7 | 0x4E, + 24713 - 19968: jis0208<<14 | 0x1B<<7 | 0x1C, + 24714 - 19968: jis0208<<14 | 0x59<<7 | 0x03, + 24715 - 19968: jis0208<<14 | 0x37<<7 | 0x06, + 24716 - 19968: jis0208<<14 | 0x23<<7 | 0x4F, + 24717 - 19968: jis0208<<14 | 0x36<<7 | 0x5A, + 24718 - 19968: jis0212<<14 | 0x1C<<7 | 0x50, + 24721 - 19968: jis0212<<14 | 0x1C<<7 | 0x51, + 24722 - 19968: jis0208<<14 | 0x37<<7 | 0x04, + 24723 - 19968: jis0212<<14 | 0x1C<<7 | 0x52, + 24724 - 19968: jis0208<<14 | 0x11<<7 | 0x58, + 24725 - 19968: jis0212<<14 | 0x1C<<7 | 0x53, + 24726 - 19968: jis0208<<14 | 0x37<<7 | 0x02, + 24727 - 19968: jis0208<<14 | 0x37<<7 | 0x03, + 24728 - 19968: jis0212<<14 | 0x1C<<7 | 0x54, + 24730 - 19968: jis0208<<14 | 0x36<<7 | 0x5D, + 24731 - 19968: jis0208<<14 | 0x37<<7 | 0x01, + 24733 - 19968: jis0212<<14 | 0x1C<<7 | 0x55, + 24734 - 19968: jis0212<<14 | 0x1C<<7 | 0x56, + 24735 - 19968: jis0208<<14 | 0x17<<7 | 0x46, + 24736 - 19968: jis0208<<14 | 0x2C<<7 | 0x09, + 24738 - 19968: jis0212<<14 | 0x1C<<7 | 0x57, + 24739 - 19968: jis0208<<14 | 0x13<<7 | 0x14, + 24740 - 19968: jis0212<<14 | 0x1C<<7 | 0x58, + 24741 - 19968: jis0212<<14 | 0x1C<<7 | 0x59, + 24742 - 19968: jis0208<<14 | 0x10<<7 | 0x38, + 24743 - 19968: jis0208<<14 | 0x37<<7 | 0x05, + 24744 - 19968: jis0212<<14 | 0x1C<<7 | 0x5A, + 24745 - 19968: jis0208<<14 | 0x26<<7 | 0x19, + 24746 - 19968: jis0208<<14 | 0x0F<<7 | 0x0C, + 24752 - 19968: jis0212<<14 | 0x1C<<7 | 0x5B, + 24753 - 19968: jis0212<<14 | 0x1C<<7 | 0x5C, + 24754 - 19968: jis0208<<14 | 0x27<<7 | 0x40, + 24755 - 19968: jis0208<<14 | 0x36<<7 | 0x3B, + 24756 - 19968: jis0208<<14 | 0x37<<7 | 0x0B, + 24757 - 19968: jis0208<<14 | 0x37<<7 | 0x0F, + 24758 - 19968: jis0208<<14 | 0x2B<<7 | 0x44, + 24759 - 19968: jis0212<<14 | 0x1C<<7 | 0x5D, + 24760 - 19968: jis0208<<14 | 0x37<<7 | 0x08, + 24763 - 19968: jis0212<<14 | 0x1D<<7 | 0x00, + 24764 - 19968: jis0208<<14 | 0x24<<7 | 0x48, + 24765 - 19968: jis0208<<14 | 0x37<<7 | 0x0D, + 24766 - 19968: jis0212<<14 | 0x1D<<7 | 0x01, + 24770 - 19968: jis0212<<14 | 0x1D<<7 | 0x02, + 24772 - 19968: jis0212<<14 | 0x1D<<7 | 0x03, + 24773 - 19968: jis0208<<14 | 0x1D<<7 | 0x4F, + 24774 - 19968: jis0208<<14 | 0x37<<7 | 0x0E, + 24775 - 19968: jis0208<<14 | 0x25<<7 | 0x36, + 24776 - 19968: jis0212<<14 | 0x1D<<7 | 0x04, + 24777 - 19968: jis0212<<14 | 0x1D<<7 | 0x05, + 24778 - 19968: jis0212<<14 | 0x1D<<7 | 0x06, + 24779 - 19968: jis0212<<14 | 0x1D<<7 | 0x07, + 24782 - 19968: jis0212<<14 | 0x1D<<7 | 0x08, + 24783 - 19968: jis0212<<14 | 0x1D<<7 | 0x09, + 24785 - 19968: jis0208<<14 | 0x2E<<7 | 0x26, + 24787 - 19968: jis0208<<14 | 0x37<<7 | 0x0A, + 24788 - 19968: jis0212<<14 | 0x1D<<7 | 0x0A, + 24789 - 19968: jis0208<<14 | 0x59<<7 | 0x05, + 24792 - 19968: jis0208<<14 | 0x37<<7 | 0x10, + 24793 - 19968: jis0212<<14 | 0x1D<<7 | 0x0C, + 24794 - 19968: jis0208<<14 | 0x18<<7 | 0x5A, + 24795 - 19968: jis0212<<14 | 0x1D<<7 | 0x0D, + 24796 - 19968: jis0208<<14 | 0x1F<<7 | 0x2A, + 24797 - 19968: jis0212<<14 | 0x1D<<7 | 0x0E, + 24798 - 19968: jis0208<<14 | 0x59<<7 | 0x04, + 24799 - 19968: jis0208<<14 | 0x0F<<7 | 0x33, + 24800 - 19968: jis0208<<14 | 0x37<<7 | 0x09, + 24801 - 19968: jis0208<<14 | 0x37<<7 | 0x07, + 24802 - 19968: jis0212<<14 | 0x1D<<7 | 0x10, + 24803 - 19968: jis0208<<14 | 0x20<<7 | 0x39, + 24805 - 19968: jis0212<<14 | 0x1D<<7 | 0x11, + 24807 - 19968: jis0208<<14 | 0x36<<7 | 0x5B, + 24808 - 19968: jis0208<<14 | 0x1A<<7 | 0x13, + 24816 - 19968: jis0208<<14 | 0x21<<7 | 0x25, + 24817 - 19968: jis0208<<14 | 0x37<<7 | 0x1C, + 24818 - 19968: jis0208<<14 | 0x59<<7 | 0x07, + 24819 - 19968: jis0208<<14 | 0x20<<7 | 0x3A, + 24820 - 19968: jis0208<<14 | 0x37<<7 | 0x17, + 24821 - 19968: jis0212<<14 | 0x1D<<7 | 0x13, + 24822 - 19968: jis0208<<14 | 0x37<<7 | 0x14, + 24823 - 19968: jis0208<<14 | 0x37<<7 | 0x15, + 24824 - 19968: jis0212<<14 | 0x1D<<7 | 0x14, + 24825 - 19968: jis0208<<14 | 0x1B<<7 | 0x45, + 24826 - 19968: jis0208<<14 | 0x37<<7 | 0x18, + 24827 - 19968: jis0208<<14 | 0x37<<7 | 0x1B, + 24828 - 19968: jis0212<<14 | 0x1D<<7 | 0x15, + 24829 - 19968: jis0212<<14 | 0x1D<<7 | 0x16, + 24832 - 19968: jis0208<<14 | 0x37<<7 | 0x16, + 24833 - 19968: jis0208<<14 | 0x1C<<7 | 0x04, + 24834 - 19968: jis0212<<14 | 0x1D<<7 | 0x17, + 24835 - 19968: jis0208<<14 | 0x37<<7 | 0x19, + 24838 - 19968: jis0208<<14 | 0x37<<7 | 0x13, + 24839 - 19968: jis0212<<14 | 0x1D<<7 | 0x18, + 24840 - 19968: jis0208<<14 | 0x2B<<7 | 0x5B, + 24841 - 19968: jis0208<<14 | 0x2B<<7 | 0x5A, + 24842 - 19968: jis0212<<14 | 0x1D<<7 | 0x19, + 24844 - 19968: jis0212<<14 | 0x1D<<7 | 0x1A, + 24845 - 19968: jis0208<<14 | 0x37<<7 | 0x1D, + 24846 - 19968: jis0208<<14 | 0x37<<7 | 0x1E, + 24847 - 19968: jis0208<<14 | 0x0F<<7 | 0x34, + 24848 - 19968: jis0212<<14 | 0x1D<<7 | 0x1B, + 24849 - 19968: jis0208<<14 | 0x59<<7 | 0x08, + 24850 - 19968: jis0212<<14 | 0x1D<<7 | 0x1D, + 24851 - 19968: jis0212<<14 | 0x1D<<7 | 0x1E, + 24852 - 19968: jis0212<<14 | 0x1D<<7 | 0x1F, + 24853 - 19968: jis0208<<14 | 0x37<<7 | 0x12, + 24854 - 19968: jis0212<<14 | 0x1D<<7 | 0x20, + 24855 - 19968: jis0212<<14 | 0x1D<<7 | 0x21, + 24857 - 19968: jis0212<<14 | 0x1D<<7 | 0x22, + 24858 - 19968: jis0208<<14 | 0x15<<7 | 0x51, + 24859 - 19968: jis0208<<14 | 0x0F<<7 | 0x05, + 24860 - 19968: jis0212<<14 | 0x1D<<7 | 0x23, + 24862 - 19968: jis0212<<14 | 0x1D<<7 | 0x24, + 24863 - 19968: jis0208<<14 | 0x13<<7 | 0x15, + 24864 - 19968: jis0208<<14 | 0x59<<7 | 0x06, + 24865 - 19968: jis0208<<14 | 0x37<<7 | 0x1A, + 24866 - 19968: jis0212<<14 | 0x1D<<7 | 0x25, + 24871 - 19968: jis0208<<14 | 0x37<<7 | 0x22, + 24872 - 19968: jis0208<<14 | 0x37<<7 | 0x21, + 24874 - 19968: jis0212<<14 | 0x1D<<7 | 0x26, + 24875 - 19968: jis0212<<14 | 0x1D<<7 | 0x27, + 24876 - 19968: jis0208<<14 | 0x37<<7 | 0x26, + 24880 - 19968: jis0208<<14 | 0x59<<7 | 0x0A, + 24881 - 19968: jis0212<<14 | 0x1D<<7 | 0x29, + 24884 - 19968: jis0208<<14 | 0x37<<7 | 0x27, + 24885 - 19968: jis0212<<14 | 0x1D<<7 | 0x2A, + 24886 - 19968: jis0212<<14 | 0x1D<<7 | 0x2B, + 24887 - 19968: jis0208<<14 | 0x59<<7 | 0x09, + 24889 - 19968: jis0212<<14 | 0x1D<<7 | 0x2D, + 24892 - 19968: jis0208<<14 | 0x37<<7 | 0x25, + 24893 - 19968: jis0208<<14 | 0x37<<7 | 0x28, + 24894 - 19968: jis0208<<14 | 0x37<<7 | 0x20, + 24895 - 19968: jis0208<<14 | 0x37<<7 | 0x24, + 24897 - 19968: jis0212<<14 | 0x1D<<7 | 0x2E, + 24898 - 19968: jis0208<<14 | 0x37<<7 | 0x29, + 24900 - 19968: jis0208<<14 | 0x37<<7 | 0x2A, + 24901 - 19968: jis0212<<14 | 0x1D<<7 | 0x2F, + 24902 - 19968: jis0212<<14 | 0x1D<<7 | 0x30, + 24903 - 19968: jis0208<<14 | 0x37<<7 | 0x1F, + 24904 - 19968: jis0208<<14 | 0x1A<<7 | 0x5B, + 24905 - 19968: jis0212<<14 | 0x1D<<7 | 0x31, + 24906 - 19968: jis0208<<14 | 0x37<<7 | 0x23, + 24907 - 19968: jis0208<<14 | 0x21<<7 | 0x35, + 24908 - 19968: jis0208<<14 | 0x18<<7 | 0x11, + 24909 - 19968: jis0208<<14 | 0x37<<7 | 0x11, + 24910 - 19968: jis0208<<14 | 0x1E<<7 | 0x14, + 24915 - 19968: jis0208<<14 | 0x37<<7 | 0x37, + 24917 - 19968: jis0208<<14 | 0x29<<7 | 0x48, + 24920 - 19968: jis0208<<14 | 0x37<<7 | 0x2D, + 24921 - 19968: jis0208<<14 | 0x37<<7 | 0x2E, + 24922 - 19968: jis0208<<14 | 0x37<<7 | 0x2F, + 24925 - 19968: jis0208<<14 | 0x37<<7 | 0x36, + 24926 - 19968: jis0212<<14 | 0x1D<<7 | 0x32, + 24927 - 19968: jis0208<<14 | 0x37<<7 | 0x35, + 24928 - 19968: jis0212<<14 | 0x1D<<7 | 0x33, + 24930 - 19968: jis0208<<14 | 0x2A<<7 | 0x5C, + 24931 - 19968: jis0208<<14 | 0x13<<7 | 0x16, + 24933 - 19968: jis0208<<14 | 0x37<<7 | 0x33, + 24935 - 19968: jis0208<<14 | 0x16<<7 | 0x24, + 24936 - 19968: jis0208<<14 | 0x12<<7 | 0x13, + 24939 - 19968: jis0208<<14 | 0x37<<7 | 0x30, + 24940 - 19968: jis0212<<14 | 0x1D<<7 | 0x34, + 24942 - 19968: jis0208<<14 | 0x2D<<7 | 0x17, + 24943 - 19968: jis0208<<14 | 0x37<<7 | 0x32, + 24944 - 19968: jis0208<<14 | 0x0F<<7 | 0x35, + 24945 - 19968: jis0208<<14 | 0x37<<7 | 0x34, + 24946 - 19968: jis0212<<14 | 0x1D<<7 | 0x35, + 24947 - 19968: jis0208<<14 | 0x37<<7 | 0x2B, + 24948 - 19968: jis0208<<14 | 0x37<<7 | 0x31, + 24949 - 19968: jis0208<<14 | 0x37<<7 | 0x38, + 24950 - 19968: jis0208<<14 | 0x16<<7 | 0x23, + 24951 - 19968: jis0208<<14 | 0x37<<7 | 0x2C, + 24952 - 19968: jis0212<<14 | 0x1D<<7 | 0x36, + 24955 - 19968: jis0212<<14 | 0x1D<<7 | 0x37, + 24956 - 19968: jis0212<<14 | 0x1D<<7 | 0x38, + 24958 - 19968: jis0208<<14 | 0x2C<<7 | 0x3C, + 24959 - 19968: jis0212<<14 | 0x1D<<7 | 0x39, + 24960 - 19968: jis0212<<14 | 0x1D<<7 | 0x3A, + 24961 - 19968: jis0212<<14 | 0x1D<<7 | 0x3B, + 24962 - 19968: jis0208<<14 | 0x2C<<7 | 0x0A, + 24963 - 19968: jis0212<<14 | 0x1D<<7 | 0x3C, + 24964 - 19968: jis0212<<14 | 0x1D<<7 | 0x3D, + 24967 - 19968: jis0208<<14 | 0x37<<7 | 0x3B, + 24970 - 19968: jis0208<<14 | 0x37<<7 | 0x3F, + 24971 - 19968: jis0212<<14 | 0x1D<<7 | 0x3E, + 24973 - 19968: jis0212<<14 | 0x1D<<7 | 0x3F, + 24974 - 19968: jis0208<<14 | 0x20<<7 | 0x5D, + 24976 - 19968: jis0208<<14 | 0x2D<<7 | 0x58, + 24977 - 19968: jis0208<<14 | 0x37<<7 | 0x40, + 24978 - 19968: jis0212<<14 | 0x1D<<7 | 0x40, + 24979 - 19968: jis0212<<14 | 0x1D<<7 | 0x41, + 24980 - 19968: jis0208<<14 | 0x37<<7 | 0x3D, + 24982 - 19968: jis0208<<14 | 0x37<<7 | 0x3A, + 24983 - 19968: jis0212<<14 | 0x1D<<7 | 0x42, + 24984 - 19968: jis0208<<14 | 0x59<<7 | 0x0B, + 24985 - 19968: jis0208<<14 | 0x37<<7 | 0x39, + 24986 - 19968: jis0208<<14 | 0x37<<7 | 0x3E, + 24988 - 19968: jis0212<<14 | 0x1D<<7 | 0x44, + 24989 - 19968: jis0212<<14 | 0x1D<<7 | 0x45, + 24991 - 19968: jis0212<<14 | 0x1D<<7 | 0x46, + 24992 - 19968: jis0212<<14 | 0x1D<<7 | 0x47, + 24996 - 19968: jis0208<<14 | 0x29<<7 | 0x0F, + 24997 - 19968: jis0212<<14 | 0x1D<<7 | 0x48, + 24999 - 19968: jis0208<<14 | 0x25<<7 | 0x13, + 25000 - 19968: jis0212<<14 | 0x1D<<7 | 0x49, + 25001 - 19968: jis0208<<14 | 0x16<<7 | 0x25, + 25002 - 19968: jis0212<<14 | 0x1D<<7 | 0x4A, + 25003 - 19968: jis0208<<14 | 0x37<<7 | 0x41, + 25004 - 19968: jis0208<<14 | 0x37<<7 | 0x3C, + 25005 - 19968: jis0212<<14 | 0x1D<<7 | 0x4B, + 25006 - 19968: jis0208<<14 | 0x37<<7 | 0x42, + 25010 - 19968: jis0208<<14 | 0x16<<7 | 0x5A, + 25014 - 19968: jis0208<<14 | 0x11<<7 | 0x10, + 25016 - 19968: jis0212<<14 | 0x1D<<7 | 0x4C, + 25017 - 19968: jis0212<<14 | 0x1D<<7 | 0x4D, + 25018 - 19968: jis0208<<14 | 0x37<<7 | 0x4A, + 25020 - 19968: jis0212<<14 | 0x1D<<7 | 0x4E, + 25022 - 19968: jis0208<<14 | 0x13<<7 | 0x17, + 25024 - 19968: jis0212<<14 | 0x1D<<7 | 0x4F, + 25025 - 19968: jis0212<<14 | 0x1D<<7 | 0x50, + 25026 - 19968: jis0212<<14 | 0x1D<<7 | 0x51, + 25027 - 19968: jis0208<<14 | 0x37<<7 | 0x48, + 25030 - 19968: jis0208<<14 | 0x37<<7 | 0x49, + 25031 - 19968: jis0208<<14 | 0x19<<7 | 0x08, + 25032 - 19968: jis0208<<14 | 0x37<<7 | 0x47, + 25033 - 19968: jis0208<<14 | 0x37<<7 | 0x45, + 25034 - 19968: jis0208<<14 | 0x37<<7 | 0x44, + 25035 - 19968: jis0208<<14 | 0x37<<7 | 0x4B, + 25036 - 19968: jis0208<<14 | 0x37<<7 | 0x43, + 25037 - 19968: jis0208<<14 | 0x37<<7 | 0x4D, + 25038 - 19968: jis0212<<14 | 0x1D<<7 | 0x52, + 25039 - 19968: jis0212<<14 | 0x1D<<7 | 0x53, + 25040 - 19968: jis0208<<14 | 0x11<<7 | 0x5A, + 25045 - 19968: jis0212<<14 | 0x1D<<7 | 0x54, + 25052 - 19968: jis0212<<14 | 0x1D<<7 | 0x55, + 25053 - 19968: jis0212<<14 | 0x1D<<7 | 0x56, + 25054 - 19968: jis0212<<14 | 0x1D<<7 | 0x57, + 25055 - 19968: jis0212<<14 | 0x1D<<7 | 0x58, + 25057 - 19968: jis0212<<14 | 0x1D<<7 | 0x59, + 25058 - 19968: jis0212<<14 | 0x1D<<7 | 0x5A, + 25059 - 19968: jis0208<<14 | 0x37<<7 | 0x4F, + 25061 - 19968: jis0212<<14 | 0x1D<<7 | 0x5D, + 25062 - 19968: jis0208<<14 | 0x37<<7 | 0x4E, + 25063 - 19968: jis0212<<14 | 0x1D<<7 | 0x5B, + 25065 - 19968: jis0212<<14 | 0x1D<<7 | 0x5C, + 25068 - 19968: jis0212<<14 | 0x1E<<7 | 0x00, + 25069 - 19968: jis0212<<14 | 0x1E<<7 | 0x01, + 25071 - 19968: jis0212<<14 | 0x1E<<7 | 0x02, + 25074 - 19968: jis0208<<14 | 0x23<<7 | 0x07, + 25076 - 19968: jis0208<<14 | 0x37<<7 | 0x52, + 25078 - 19968: jis0208<<14 | 0x37<<7 | 0x50, + 25079 - 19968: jis0208<<14 | 0x37<<7 | 0x46, + 25080 - 19968: jis0208<<14 | 0x16<<7 | 0x5B, + 25082 - 19968: jis0208<<14 | 0x37<<7 | 0x51, + 25084 - 19968: jis0208<<14 | 0x37<<7 | 0x55, + 25085 - 19968: jis0208<<14 | 0x37<<7 | 0x54, + 25086 - 19968: jis0208<<14 | 0x37<<7 | 0x56, + 25087 - 19968: jis0208<<14 | 0x37<<7 | 0x53, + 25088 - 19968: jis0208<<14 | 0x37<<7 | 0x57, + 25089 - 19968: jis0212<<14 | 0x1E<<7 | 0x03, + 25091 - 19968: jis0212<<14 | 0x1E<<7 | 0x04, + 25092 - 19968: jis0212<<14 | 0x1E<<7 | 0x05, + 25095 - 19968: jis0212<<14 | 0x1E<<7 | 0x06, + 25096 - 19968: jis0208<<14 | 0x37<<7 | 0x58, + 25097 - 19968: jis0208<<14 | 0x37<<7 | 0x59, + 25098 - 19968: jis0208<<14 | 0x29<<7 | 0x49, + 25100 - 19968: jis0208<<14 | 0x37<<7 | 0x5B, + 25101 - 19968: jis0208<<14 | 0x37<<7 | 0x5A, + 25102 - 19968: jis0208<<14 | 0x1C<<7 | 0x1E, + 25104 - 19968: jis0208<<14 | 0x1F<<7 | 0x0D, + 25105 - 19968: jis0208<<14 | 0x11<<7 | 0x45, + 25106 - 19968: jis0208<<14 | 0x11<<7 | 0x5B, + 25107 - 19968: jis0208<<14 | 0x59<<7 | 0x0C, + 25108 - 19968: jis0208<<14 | 0x37<<7 | 0x5C, + 25109 - 19968: jis0212<<14 | 0x1E<<7 | 0x08, + 25110 - 19968: jis0208<<14 | 0x0F<<7 | 0x1E, + 25114 - 19968: jis0208<<14 | 0x1F<<7 | 0x2B, + 25115 - 19968: jis0208<<14 | 0x37<<7 | 0x5D, + 25116 - 19968: jis0212<<14 | 0x1E<<7 | 0x09, + 25117 - 19968: jis0208<<14 | 0x4B<<7 | 0x22, + 25118 - 19968: jis0208<<14 | 0x38<<7 | 0x00, + 25119 - 19968: jis0208<<14 | 0x16<<7 | 0x40, + 25120 - 19968: jis0212<<14 | 0x1E<<7 | 0x0A, + 25121 - 19968: jis0208<<14 | 0x38<<7 | 0x01, + 25122 - 19968: jis0212<<14 | 0x1E<<7 | 0x0B, + 25123 - 19968: jis0212<<14 | 0x1E<<7 | 0x0C, + 25126 - 19968: jis0208<<14 | 0x1F<<7 | 0x4E, + 25127 - 19968: jis0212<<14 | 0x1E<<7 | 0x0D, + 25129 - 19968: jis0212<<14 | 0x1E<<7 | 0x0E, + 25130 - 19968: jis0208<<14 | 0x38<<7 | 0x02, + 25131 - 19968: jis0212<<14 | 0x1E<<7 | 0x0F, + 25134 - 19968: jis0208<<14 | 0x38<<7 | 0x03, + 25135 - 19968: jis0208<<14 | 0x14<<7 | 0x19, + 25136 - 19968: jis0208<<14 | 0x38<<7 | 0x04, + 25138 - 19968: jis0208<<14 | 0x38<<7 | 0x05, + 25139 - 19968: jis0208<<14 | 0x38<<7 | 0x06, + 25140 - 19968: jis0208<<14 | 0x21<<7 | 0x36, + 25144 - 19968: jis0208<<14 | 0x17<<7 | 0x2C, + 25145 - 19968: jis0212<<14 | 0x1E<<7 | 0x10, + 25147 - 19968: jis0208<<14 | 0x2B<<7 | 0x40, + 25149 - 19968: jis0212<<14 | 0x1E<<7 | 0x11, + 25151 - 19968: jis0208<<14 | 0x2A<<7 | 0x1B, + 25152 - 19968: jis0208<<14 | 0x1C<<7 | 0x49, + 25153 - 19968: jis0208<<14 | 0x38<<7 | 0x07, + 25154 - 19968: jis0212<<14 | 0x1E<<7 | 0x12, + 25155 - 19968: jis0212<<14 | 0x1E<<7 | 0x13, + 25156 - 19968: jis0212<<14 | 0x1E<<7 | 0x14, + 25158 - 19968: jis0212<<14 | 0x1E<<7 | 0x15, + 25159 - 19968: jis0208<<14 | 0x1F<<7 | 0x4F, + 25160 - 19968: jis0208<<14 | 0x4D<<7 | 0x1C, + 25161 - 19968: jis0208<<14 | 0x27<<7 | 0x41, + 25163 - 19968: jis0208<<14 | 0x1B<<7 | 0x49, + 25164 - 19968: jis0212<<14 | 0x1E<<7 | 0x16, + 25165 - 19968: jis0208<<14 | 0x19<<7 | 0x2C, + 25166 - 19968: jis0208<<14 | 0x38<<7 | 0x08, + 25168 - 19968: jis0212<<14 | 0x1E<<7 | 0x17, + 25169 - 19968: jis0212<<14 | 0x1E<<7 | 0x18, + 25170 - 19968: jis0212<<14 | 0x1E<<7 | 0x19, + 25171 - 19968: jis0208<<14 | 0x21<<7 | 0x26, + 25172 - 19968: jis0212<<14 | 0x1E<<7 | 0x1A, + 25173 - 19968: jis0208<<14 | 0x29<<7 | 0x06, + 25174 - 19968: jis0212<<14 | 0x1E<<7 | 0x1B, + 25176 - 19968: jis0208<<14 | 0x21<<7 | 0x50, + 25178 - 19968: jis0212<<14 | 0x1E<<7 | 0x1C, + 25179 - 19968: jis0208<<14 | 0x38<<7 | 0x0B, + 25180 - 19968: jis0212<<14 | 0x1E<<7 | 0x1D, + 25182 - 19968: jis0208<<14 | 0x38<<7 | 0x09, + 25184 - 19968: jis0208<<14 | 0x38<<7 | 0x0C, + 25187 - 19968: jis0208<<14 | 0x38<<7 | 0x0A, + 25188 - 19968: jis0212<<14 | 0x1E<<7 | 0x1E, + 25192 - 19968: jis0208<<14 | 0x38<<7 | 0x0D, + 25197 - 19968: jis0212<<14 | 0x1E<<7 | 0x1F, + 25198 - 19968: jis0208<<14 | 0x29<<7 | 0x10, + 25199 - 19968: jis0212<<14 | 0x1E<<7 | 0x20, + 25201 - 19968: jis0208<<14 | 0x0F<<7 | 0x16, + 25203 - 19968: jis0212<<14 | 0x1E<<7 | 0x21, + 25206 - 19968: jis0208<<14 | 0x28<<7 | 0x3D, + 25209 - 19968: jis0208<<14 | 0x27<<7 | 0x42, + 25210 - 19968: jis0212<<14 | 0x1E<<7 | 0x22, + 25212 - 19968: jis0208<<14 | 0x38<<7 | 0x0E, + 25213 - 19968: jis0212<<14 | 0x1E<<7 | 0x23, + 25214 - 19968: jis0208<<14 | 0x38<<7 | 0x11, + 25215 - 19968: jis0208<<14 | 0x1D<<7 | 0x14, + 25216 - 19968: jis0208<<14 | 0x14<<7 | 0x1A, + 25218 - 19968: jis0208<<14 | 0x38<<7 | 0x0F, + 25219 - 19968: jis0208<<14 | 0x38<<7 | 0x16, + 25220 - 19968: jis0208<<14 | 0x1D<<7 | 0x15, + 25225 - 19968: jis0208<<14 | 0x38<<7 | 0x10, + 25226 - 19968: jis0208<<14 | 0x26<<7 | 0x23, + 25229 - 19968: jis0212<<14 | 0x1E<<7 | 0x24, + 25230 - 19968: jis0212<<14 | 0x1E<<7 | 0x25, + 25231 - 19968: jis0212<<14 | 0x1E<<7 | 0x26, + 25232 - 19968: jis0212<<14 | 0x1E<<7 | 0x27, + 25233 - 19968: jis0208<<14 | 0x2C<<7 | 0x3D, + 25234 - 19968: jis0208<<14 | 0x38<<7 | 0x12, + 25235 - 19968: jis0208<<14 | 0x38<<7 | 0x13, + 25236 - 19968: jis0208<<14 | 0x38<<7 | 0x17, + 25237 - 19968: jis0208<<14 | 0x24<<7 | 0x49, + 25238 - 19968: jis0208<<14 | 0x38<<7 | 0x14, + 25239 - 19968: jis0208<<14 | 0x18<<7 | 0x12, + 25240 - 19968: jis0208<<14 | 0x1F<<7 | 0x3D, + 25243 - 19968: jis0208<<14 | 0x38<<7 | 0x25, + 25244 - 19968: jis0208<<14 | 0x27<<7 | 0x13, + 25246 - 19968: jis0208<<14 | 0x21<<7 | 0x51, + 25254 - 19968: jis0208<<14 | 0x59<<7 | 0x0D, + 25256 - 19968: jis0212<<14 | 0x1E<<7 | 0x29, + 25259 - 19968: jis0208<<14 | 0x27<<7 | 0x43, + 25260 - 19968: jis0208<<14 | 0x39<<7 | 0x0C, + 25265 - 19968: jis0208<<14 | 0x29<<7 | 0x59, + 25267 - 19968: jis0212<<14 | 0x1E<<7 | 0x2A, + 25269 - 19968: jis0208<<14 | 0x23<<7 | 0x50, + 25270 - 19968: jis0212<<14 | 0x1E<<7 | 0x2B, + 25271 - 19968: jis0212<<14 | 0x1E<<7 | 0x2C, + 25273 - 19968: jis0208<<14 | 0x2A<<7 | 0x54, + 25274 - 19968: jis0212<<14 | 0x1E<<7 | 0x2D, + 25275 - 19968: jis0208<<14 | 0x38<<7 | 0x1A, + 25276 - 19968: jis0208<<14 | 0x11<<7 | 0x00, + 25277 - 19968: jis0208<<14 | 0x22<<7 | 0x49, + 25278 - 19968: jis0212<<14 | 0x1E<<7 | 0x2E, + 25279 - 19968: jis0212<<14 | 0x1E<<7 | 0x2F, + 25282 - 19968: jis0208<<14 | 0x38<<7 | 0x23, + 25284 - 19968: jis0212<<14 | 0x1E<<7 | 0x30, + 25285 - 19968: jis0208<<14 | 0x22<<7 | 0x13, + 25286 - 19968: jis0208<<14 | 0x38<<7 | 0x1D, + 25287 - 19968: jis0208<<14 | 0x38<<7 | 0x24, + 25288 - 19968: jis0208<<14 | 0x38<<7 | 0x1F, + 25289 - 19968: jis0208<<14 | 0x38<<7 | 0x26, + 25290 - 19968: jis0208<<14 | 0x38<<7 | 0x22, + 25292 - 19968: jis0208<<14 | 0x38<<7 | 0x21, + 25293 - 19968: jis0208<<14 | 0x26<<7 | 0x4E, + 25294 - 19968: jis0212<<14 | 0x1E<<7 | 0x31, + 25295 - 19968: jis0208<<14 | 0x38<<7 | 0x1B, + 25296 - 19968: jis0208<<14 | 0x11<<7 | 0x5C, + 25297 - 19968: jis0208<<14 | 0x38<<7 | 0x19, + 25298 - 19968: jis0208<<14 | 0x14<<7 | 0x50, + 25299 - 19968: jis0208<<14 | 0x21<<7 | 0x52, + 25300 - 19968: jis0208<<14 | 0x38<<7 | 0x15, + 25301 - 19968: jis0212<<14 | 0x1E<<7 | 0x32, + 25302 - 19968: jis0212<<14 | 0x1E<<7 | 0x33, + 25303 - 19968: jis0208<<14 | 0x38<<7 | 0x18, + 25304 - 19968: jis0208<<14 | 0x18<<7 | 0x13, + 25305 - 19968: jis0208<<14 | 0x1F<<7 | 0x3A, + 25306 - 19968: jis0212<<14 | 0x1E<<7 | 0x34, + 25307 - 19968: jis0208<<14 | 0x1D<<7 | 0x16, + 25308 - 19968: jis0208<<14 | 0x38<<7 | 0x20, + 25309 - 19968: jis0208<<14 | 0x26<<7 | 0x31, + 25312 - 19968: jis0208<<14 | 0x14<<7 | 0x51, + 25313 - 19968: jis0208<<14 | 0x12<<7 | 0x27, + 25322 - 19968: jis0212<<14 | 0x1E<<7 | 0x35, + 25324 - 19968: jis0208<<14 | 0x12<<7 | 0x46, + 25325 - 19968: jis0208<<14 | 0x1E<<7 | 0x00, + 25326 - 19968: jis0208<<14 | 0x38<<7 | 0x28, + 25327 - 19968: jis0208<<14 | 0x38<<7 | 0x2D, + 25329 - 19968: jis0208<<14 | 0x38<<7 | 0x29, + 25330 - 19968: jis0212<<14 | 0x1E<<7 | 0x36, + 25331 - 19968: jis0208<<14 | 0x16<<7 | 0x5C, + 25332 - 19968: jis0212<<14 | 0x1E<<7 | 0x37, + 25333 - 19968: jis0208<<14 | 0x38<<7 | 0x2E, + 25334 - 19968: jis0208<<14 | 0x1A<<7 | 0x01, + 25335 - 19968: jis0208<<14 | 0x18<<7 | 0x48, + 25340 - 19968: jis0212<<14 | 0x1E<<7 | 0x38, + 25341 - 19968: jis0212<<14 | 0x1E<<7 | 0x39, + 25342 - 19968: jis0208<<14 | 0x1C<<7 | 0x05, + 25343 - 19968: jis0208<<14 | 0x38<<7 | 0x1C, + 25345 - 19968: jis0208<<14 | 0x1A<<7 | 0x5C, + 25346 - 19968: jis0208<<14 | 0x38<<7 | 0x2B, + 25347 - 19968: jis0212<<14 | 0x1E<<7 | 0x3A, + 25348 - 19968: jis0212<<14 | 0x1E<<7 | 0x3B, + 25351 - 19968: jis0208<<14 | 0x1A<<7 | 0x37, + 25352 - 19968: jis0208<<14 | 0x38<<7 | 0x2C, + 25353 - 19968: jis0208<<14 | 0x0F<<7 | 0x23, + 25354 - 19968: jis0212<<14 | 0x1E<<7 | 0x3C, + 25355 - 19968: jis0212<<14 | 0x1E<<7 | 0x3D, + 25356 - 19968: jis0208<<14 | 0x38<<7 | 0x27, + 25357 - 19968: jis0212<<14 | 0x1E<<7 | 0x3E, + 25360 - 19968: jis0212<<14 | 0x1E<<7 | 0x3F, + 25361 - 19968: jis0208<<14 | 0x23<<7 | 0x08, + 25363 - 19968: jis0212<<14 | 0x1E<<7 | 0x40, + 25366 - 19968: jis0212<<14 | 0x1E<<7 | 0x41, + 25368 - 19968: jis0212<<14 | 0x1E<<7 | 0x42, + 25369 - 19968: jis0208<<14 | 0x14<<7 | 0x52, + 25375 - 19968: jis0208<<14 | 0x15<<7 | 0x13, + 25383 - 19968: jis0208<<14 | 0x38<<7 | 0x2A, + 25384 - 19968: jis0208<<14 | 0x0F<<7 | 0x06, + 25385 - 19968: jis0212<<14 | 0x1E<<7 | 0x43, + 25386 - 19968: jis0212<<14 | 0x1E<<7 | 0x44, + 25387 - 19968: jis0208<<14 | 0x19<<7 | 0x22, + 25389 - 19968: jis0212<<14 | 0x1E<<7 | 0x45, + 25391 - 19968: jis0208<<14 | 0x1E<<7 | 0x15, + 25397 - 19968: jis0212<<14 | 0x1E<<7 | 0x46, + 25398 - 19968: jis0212<<14 | 0x1E<<7 | 0x47, + 25401 - 19968: jis0212<<14 | 0x1E<<7 | 0x48, + 25402 - 19968: jis0208<<14 | 0x23<<7 | 0x51, + 25404 - 19968: jis0212<<14 | 0x1E<<7 | 0x49, + 25405 - 19968: jis0208<<14 | 0x27<<7 | 0x33, + 25406 - 19968: jis0208<<14 | 0x38<<7 | 0x30, + 25407 - 19968: jis0208<<14 | 0x20<<7 | 0x3D, + 25409 - 19968: jis0212<<14 | 0x1E<<7 | 0x4A, + 25410 - 19968: jis0212<<14 | 0x1E<<7 | 0x4B, + 25411 - 19968: jis0212<<14 | 0x1E<<7 | 0x4C, + 25412 - 19968: jis0212<<14 | 0x1E<<7 | 0x4D, + 25414 - 19968: jis0212<<14 | 0x1E<<7 | 0x4E, + 25417 - 19968: jis0208<<14 | 0x21<<7 | 0x09, + 25418 - 19968: jis0212<<14 | 0x1E<<7 | 0x4F, + 25419 - 19968: jis0212<<14 | 0x1E<<7 | 0x50, + 25420 - 19968: jis0208<<14 | 0x1A<<7 | 0x0A, + 25421 - 19968: jis0208<<14 | 0x38<<7 | 0x31, + 25422 - 19968: jis0212<<14 | 0x1E<<7 | 0x51, + 25423 - 19968: jis0208<<14 | 0x38<<7 | 0x33, + 25424 - 19968: jis0208<<14 | 0x38<<7 | 0x2F, + 25426 - 19968: jis0212<<14 | 0x1E<<7 | 0x52, + 25427 - 19968: jis0212<<14 | 0x1E<<7 | 0x53, + 25428 - 19968: jis0212<<14 | 0x1E<<7 | 0x54, + 25429 - 19968: jis0208<<14 | 0x29<<7 | 0x40, + 25431 - 19968: jis0208<<14 | 0x23<<7 | 0x1C, + 25432 - 19968: jis0212<<14 | 0x1E<<7 | 0x55, + 25435 - 19968: jis0212<<14 | 0x1E<<7 | 0x56, + 25436 - 19968: jis0208<<14 | 0x20<<7 | 0x3B, + 25445 - 19968: jis0212<<14 | 0x1E<<7 | 0x57, + 25446 - 19968: jis0212<<14 | 0x1E<<7 | 0x58, + 25447 - 19968: jis0208<<14 | 0x29<<7 | 0x5A, + 25448 - 19968: jis0208<<14 | 0x1B<<7 | 0x2D, + 25449 - 19968: jis0208<<14 | 0x38<<7 | 0x3F, + 25451 - 19968: jis0208<<14 | 0x38<<7 | 0x3E, + 25452 - 19968: jis0212<<14 | 0x1E<<7 | 0x59, + 25453 - 19968: jis0212<<14 | 0x1E<<7 | 0x5A, + 25454 - 19968: jis0208<<14 | 0x1E<<7 | 0x57, + 25457 - 19968: jis0212<<14 | 0x1E<<7 | 0x5B, + 25458 - 19968: jis0208<<14 | 0x16<<7 | 0x5D, + 25460 - 19968: jis0212<<14 | 0x1E<<7 | 0x5C, + 25461 - 19968: jis0212<<14 | 0x1E<<7 | 0x5D, + 25462 - 19968: jis0208<<14 | 0x38<<7 | 0x38, + 25463 - 19968: jis0208<<14 | 0x1D<<7 | 0x18, + 25464 - 19968: jis0212<<14 | 0x1F<<7 | 0x00, + 25466 - 19968: jis0208<<14 | 0x25<<7 | 0x47, + 25467 - 19968: jis0208<<14 | 0x26<<7 | 0x10, + 25468 - 19968: jis0212<<14 | 0x1F<<7 | 0x01, + 25469 - 19968: jis0212<<14 | 0x1F<<7 | 0x02, + 25471 - 19968: jis0212<<14 | 0x1F<<7 | 0x03, + 25472 - 19968: jis0208<<14 | 0x38<<7 | 0x36, + 25474 - 19968: jis0212<<14 | 0x1F<<7 | 0x04, + 25475 - 19968: jis0208<<14 | 0x20<<7 | 0x3C, + 25476 - 19968: jis0212<<14 | 0x1F<<7 | 0x05, + 25479 - 19968: jis0212<<14 | 0x1F<<7 | 0x06, + 25480 - 19968: jis0208<<14 | 0x1B<<7 | 0x57, + 25481 - 19968: jis0208<<14 | 0x38<<7 | 0x3B, + 25482 - 19968: jis0212<<14 | 0x1F<<7 | 0x07, + 25484 - 19968: jis0208<<14 | 0x1D<<7 | 0x17, + 25486 - 19968: jis0208<<14 | 0x38<<7 | 0x35, + 25487 - 19968: jis0208<<14 | 0x38<<7 | 0x3A, + 25488 - 19968: jis0212<<14 | 0x1F<<7 | 0x08, + 25490 - 19968: jis0208<<14 | 0x26<<7 | 0x32, + 25492 - 19968: jis0212<<14 | 0x1F<<7 | 0x09, + 25493 - 19968: jis0212<<14 | 0x1F<<7 | 0x0A, + 25494 - 19968: jis0208<<14 | 0x38<<7 | 0x34, + 25496 - 19968: jis0208<<14 | 0x16<<7 | 0x00, + 25497 - 19968: jis0212<<14 | 0x1F<<7 | 0x0B, + 25498 - 19968: jis0212<<14 | 0x1F<<7 | 0x0C, + 25499 - 19968: jis0208<<14 | 0x12<<7 | 0x3C, + 25502 - 19968: jis0212<<14 | 0x1F<<7 | 0x0D, + 25503 - 19968: jis0208<<14 | 0x38<<7 | 0x3C, + 25504 - 19968: jis0208<<14 | 0x2D<<7 | 0x0A, + 25505 - 19968: jis0208<<14 | 0x19<<7 | 0x2D, + 25506 - 19968: jis0208<<14 | 0x22<<7 | 0x14, + 25507 - 19968: jis0208<<14 | 0x38<<7 | 0x39, + 25508 - 19968: jis0212<<14 | 0x1F<<7 | 0x0E, + 25509 - 19968: jis0208<<14 | 0x1F<<7 | 0x3B, + 25510 - 19968: jis0212<<14 | 0x1F<<7 | 0x0F, + 25511 - 19968: jis0208<<14 | 0x18<<7 | 0x14, + 25512 - 19968: jis0208<<14 | 0x1E<<7 | 0x43, + 25513 - 19968: jis0208<<14 | 0x10<<7 | 0x45, + 25514 - 19968: jis0208<<14 | 0x20<<7 | 0x1B, + 25515 - 19968: jis0208<<14 | 0x38<<7 | 0x37, + 25516 - 19968: jis0208<<14 | 0x14<<7 | 0x24, + 25517 - 19968: jis0212<<14 | 0x1F<<7 | 0x10, + 25518 - 19968: jis0212<<14 | 0x1F<<7 | 0x11, + 25519 - 19968: jis0212<<14 | 0x1F<<7 | 0x12, + 25522 - 19968: jis0208<<14 | 0x16<<7 | 0x26, + 25524 - 19968: jis0208<<14 | 0x23<<7 | 0x2E, + 25525 - 19968: jis0208<<14 | 0x38<<7 | 0x3D, + 25531 - 19968: jis0208<<14 | 0x20<<7 | 0x3E, + 25533 - 19968: jis0212<<14 | 0x1F<<7 | 0x13, + 25534 - 19968: jis0208<<14 | 0x38<<7 | 0x40, + 25536 - 19968: jis0208<<14 | 0x38<<7 | 0x42, + 25537 - 19968: jis0212<<14 | 0x1F<<7 | 0x14, + 25539 - 19968: jis0208<<14 | 0x21<<7 | 0x16, + 25540 - 19968: jis0208<<14 | 0x38<<7 | 0x48, + 25541 - 19968: jis0212<<14 | 0x1F<<7 | 0x15, + 25542 - 19968: jis0208<<14 | 0x38<<7 | 0x43, + 25544 - 19968: jis0212<<14 | 0x1F<<7 | 0x16, + 25545 - 19968: jis0208<<14 | 0x38<<7 | 0x45, + 25550 - 19968: jis0212<<14 | 0x1F<<7 | 0x17, + 25551 - 19968: jis0208<<14 | 0x28<<7 | 0x20, + 25552 - 19968: jis0208<<14 | 0x23<<7 | 0x52, + 25553 - 19968: jis0212<<14 | 0x1F<<7 | 0x18, + 25554 - 19968: jis0208<<14 | 0x38<<7 | 0x46, + 25555 - 19968: jis0212<<14 | 0x1F<<7 | 0x19, + 25556 - 19968: jis0212<<14 | 0x1F<<7 | 0x1A, + 25557 - 19968: jis0212<<14 | 0x1F<<7 | 0x1B, + 25558 - 19968: jis0208<<14 | 0x2C<<7 | 0x0B, + 25562 - 19968: jis0208<<14 | 0x2C<<7 | 0x27, + 25563 - 19968: jis0208<<14 | 0x13<<7 | 0x18, + 25564 - 19968: jis0212<<14 | 0x1F<<7 | 0x1C, + 25568 - 19968: jis0212<<14 | 0x1F<<7 | 0x1D, + 25569 - 19968: jis0208<<14 | 0x0F<<7 | 0x0D, + 25571 - 19968: jis0208<<14 | 0x38<<7 | 0x44, + 25573 - 19968: jis0212<<14 | 0x1F<<7 | 0x1E, + 25577 - 19968: jis0208<<14 | 0x38<<7 | 0x41, + 25578 - 19968: jis0212<<14 | 0x1F<<7 | 0x1F, + 25580 - 19968: jis0212<<14 | 0x1F<<7 | 0x20, + 25582 - 19968: jis0208<<14 | 0x13<<7 | 0x57, + 25586 - 19968: jis0212<<14 | 0x1F<<7 | 0x21, + 25587 - 19968: jis0212<<14 | 0x1F<<7 | 0x22, + 25588 - 19968: jis0208<<14 | 0x10<<7 | 0x46, + 25589 - 19968: jis0208<<14 | 0x59<<7 | 0x0E, + 25590 - 19968: jis0208<<14 | 0x38<<7 | 0x47, + 25592 - 19968: jis0212<<14 | 0x1F<<7 | 0x24, + 25593 - 19968: jis0212<<14 | 0x1F<<7 | 0x25, + 25594 - 19968: jis0208<<14 | 0x2C<<7 | 0x28, + 25606 - 19968: jis0208<<14 | 0x38<<7 | 0x4B, + 25609 - 19968: jis0212<<14 | 0x1F<<7 | 0x26, + 25610 - 19968: jis0212<<14 | 0x1F<<7 | 0x27, + 25613 - 19968: jis0208<<14 | 0x21<<7 | 0x1A, + 25615 - 19968: jis0208<<14 | 0x38<<7 | 0x52, + 25616 - 19968: jis0212<<14 | 0x1F<<7 | 0x28, + 25618 - 19968: jis0212<<14 | 0x1F<<7 | 0x29, + 25619 - 19968: jis0208<<14 | 0x38<<7 | 0x4C, + 25620 - 19968: jis0212<<14 | 0x1F<<7 | 0x2A, + 25622 - 19968: jis0208<<14 | 0x38<<7 | 0x49, + 25623 - 19968: jis0208<<14 | 0x38<<7 | 0x50, + 25624 - 19968: jis0212<<14 | 0x1F<<7 | 0x2B, + 25628 - 19968: jis0208<<14 | 0x38<<7 | 0x32, + 25630 - 19968: jis0212<<14 | 0x1F<<7 | 0x2C, + 25632 - 19968: jis0212<<14 | 0x1F<<7 | 0x2D, + 25634 - 19968: jis0212<<14 | 0x1F<<7 | 0x2E, + 25636 - 19968: jis0212<<14 | 0x1F<<7 | 0x2F, + 25637 - 19968: jis0212<<14 | 0x1F<<7 | 0x30, + 25638 - 19968: jis0208<<14 | 0x38<<7 | 0x4D, + 25640 - 19968: jis0208<<14 | 0x38<<7 | 0x51, + 25641 - 19968: jis0212<<14 | 0x1F<<7 | 0x31, + 25642 - 19968: jis0212<<14 | 0x1F<<7 | 0x32, + 25644 - 19968: jis0208<<14 | 0x27<<7 | 0x21, + 25645 - 19968: jis0208<<14 | 0x24<<7 | 0x4A, + 25647 - 19968: jis0212<<14 | 0x1F<<7 | 0x33, + 25648 - 19968: jis0212<<14 | 0x1F<<7 | 0x34, + 25652 - 19968: jis0208<<14 | 0x38<<7 | 0x4A, + 25653 - 19968: jis0212<<14 | 0x1F<<7 | 0x35, + 25654 - 19968: jis0208<<14 | 0x38<<7 | 0x4E, + 25658 - 19968: jis0208<<14 | 0x16<<7 | 0x27, + 25661 - 19968: jis0212<<14 | 0x1F<<7 | 0x36, + 25662 - 19968: jis0208<<14 | 0x19<<7 | 0x50, + 25663 - 19968: jis0212<<14 | 0x1F<<7 | 0x37, + 25666 - 19968: jis0208<<14 | 0x1F<<7 | 0x3C, + 25675 - 19968: jis0212<<14 | 0x1F<<7 | 0x38, + 25678 - 19968: jis0208<<14 | 0x38<<7 | 0x56, + 25679 - 19968: jis0212<<14 | 0x1F<<7 | 0x39, + 25681 - 19968: jis0212<<14 | 0x1F<<7 | 0x3A, + 25682 - 19968: jis0212<<14 | 0x1F<<7 | 0x3B, + 25683 - 19968: jis0212<<14 | 0x1F<<7 | 0x3C, + 25684 - 19968: jis0212<<14 | 0x1F<<7 | 0x3D, + 25688 - 19968: jis0208<<14 | 0x24<<7 | 0x05, + 25690 - 19968: jis0212<<14 | 0x1F<<7 | 0x3E, + 25691 - 19968: jis0212<<14 | 0x1F<<7 | 0x3F, + 25692 - 19968: jis0212<<14 | 0x1F<<7 | 0x40, + 25693 - 19968: jis0212<<14 | 0x1F<<7 | 0x41, + 25695 - 19968: jis0212<<14 | 0x1F<<7 | 0x42, + 25696 - 19968: jis0208<<14 | 0x59<<7 | 0x0F, + 25697 - 19968: jis0212<<14 | 0x1F<<7 | 0x44, + 25699 - 19968: jis0212<<14 | 0x1F<<7 | 0x45, + 25703 - 19968: jis0208<<14 | 0x38<<7 | 0x53, + 25705 - 19968: jis0208<<14 | 0x2A<<7 | 0x3F, + 25709 - 19968: jis0212<<14 | 0x1F<<7 | 0x46, + 25711 - 19968: jis0208<<14 | 0x38<<7 | 0x54, + 25715 - 19968: jis0212<<14 | 0x1F<<7 | 0x47, + 25716 - 19968: jis0212<<14 | 0x1F<<7 | 0x48, + 25718 - 19968: jis0208<<14 | 0x38<<7 | 0x55, + 25720 - 19968: jis0208<<14 | 0x2B<<7 | 0x2D, + 25722 - 19968: jis0208<<14 | 0x1F<<7 | 0x01, + 25723 - 19968: jis0212<<14 | 0x1F<<7 | 0x49, + 25725 - 19968: jis0212<<14 | 0x1F<<7 | 0x4A, + 25731 - 19968: jis0208<<14 | 0x16<<7 | 0x41, + 25733 - 19968: jis0212<<14 | 0x1F<<7 | 0x4B, + 25735 - 19968: jis0212<<14 | 0x1F<<7 | 0x4C, + 25736 - 19968: jis0208<<14 | 0x38<<7 | 0x5C, + 25743 - 19968: jis0212<<14 | 0x1F<<7 | 0x4D, + 25744 - 19968: jis0212<<14 | 0x1F<<7 | 0x4E, + 25745 - 19968: jis0212<<14 | 0x1F<<7 | 0x4F, + 25746 - 19968: jis0208<<14 | 0x1A<<7 | 0x14, + 25747 - 19968: jis0208<<14 | 0x38<<7 | 0x59, + 25749 - 19968: jis0208<<14 | 0x38<<7 | 0x58, + 25752 - 19968: jis0212<<14 | 0x1F<<7 | 0x50, + 25753 - 19968: jis0212<<14 | 0x1F<<7 | 0x51, + 25754 - 19968: jis0208<<14 | 0x26<<7 | 0x11, + 25755 - 19968: jis0212<<14 | 0x1F<<7 | 0x52, + 25757 - 19968: jis0208<<14 | 0x59<<7 | 0x10, + 25758 - 19968: jis0208<<14 | 0x25<<7 | 0x14, + 25759 - 19968: jis0212<<14 | 0x1F<<7 | 0x54, + 25761 - 19968: jis0212<<14 | 0x1F<<7 | 0x55, + 25763 - 19968: jis0212<<14 | 0x1F<<7 | 0x56, + 25764 - 19968: jis0208<<14 | 0x24<<7 | 0x10, + 25765 - 19968: jis0208<<14 | 0x38<<7 | 0x5A, + 25766 - 19968: jis0212<<14 | 0x1F<<7 | 0x57, + 25768 - 19968: jis0212<<14 | 0x1F<<7 | 0x58, + 25769 - 19968: jis0208<<14 | 0x38<<7 | 0x5B, + 25771 - 19968: jis0208<<14 | 0x28<<7 | 0x4E, + 25772 - 19968: jis0212<<14 | 0x1F<<7 | 0x59, + 25773 - 19968: jis0208<<14 | 0x26<<7 | 0x24, + 25774 - 19968: jis0208<<14 | 0x1A<<7 | 0x02, + 25776 - 19968: jis0208<<14 | 0x1F<<7 | 0x50, + 25778 - 19968: jis0208<<14 | 0x2A<<7 | 0x2F, + 25779 - 19968: jis0212<<14 | 0x1F<<7 | 0x5A, + 25785 - 19968: jis0208<<14 | 0x12<<7 | 0x28, + 25787 - 19968: jis0208<<14 | 0x39<<7 | 0x04, + 25788 - 19968: jis0208<<14 | 0x38<<7 | 0x5D, + 25789 - 19968: jis0212<<14 | 0x1F<<7 | 0x5B, + 25790 - 19968: jis0212<<14 | 0x1F<<7 | 0x5C, + 25791 - 19968: jis0212<<14 | 0x1F<<7 | 0x5D, + 25793 - 19968: jis0208<<14 | 0x2C<<7 | 0x29, + 25794 - 19968: jis0208<<14 | 0x39<<7 | 0x06, + 25796 - 19968: jis0212<<14 | 0x20<<7 | 0x00, + 25797 - 19968: jis0208<<14 | 0x39<<7 | 0x02, + 25799 - 19968: jis0208<<14 | 0x39<<7 | 0x03, + 25801 - 19968: jis0212<<14 | 0x20<<7 | 0x01, + 25802 - 19968: jis0212<<14 | 0x20<<7 | 0x02, + 25803 - 19968: jis0212<<14 | 0x20<<7 | 0x03, + 25804 - 19968: jis0212<<14 | 0x20<<7 | 0x04, + 25805 - 19968: jis0208<<14 | 0x20<<7 | 0x3F, + 25806 - 19968: jis0208<<14 | 0x59<<7 | 0x11, + 25808 - 19968: jis0212<<14 | 0x20<<7 | 0x06, + 25809 - 19968: jis0212<<14 | 0x20<<7 | 0x07, + 25810 - 19968: jis0208<<14 | 0x39<<7 | 0x01, + 25812 - 19968: jis0208<<14 | 0x38<<7 | 0x1E, + 25813 - 19968: jis0212<<14 | 0x20<<7 | 0x08, + 25815 - 19968: jis0212<<14 | 0x20<<7 | 0x09, + 25816 - 19968: jis0208<<14 | 0x39<<7 | 0x05, + 25818 - 19968: jis0208<<14 | 0x39<<7 | 0x00, + 25824 - 19968: jis0208<<14 | 0x39<<7 | 0x0A, + 25825 - 19968: jis0208<<14 | 0x39<<7 | 0x0B, + 25826 - 19968: jis0208<<14 | 0x24<<7 | 0x06, + 25827 - 19968: jis0208<<14 | 0x39<<7 | 0x0D, + 25828 - 19968: jis0212<<14 | 0x20<<7 | 0x0A, + 25829 - 19968: jis0212<<14 | 0x20<<7 | 0x0B, + 25830 - 19968: jis0208<<14 | 0x1A<<7 | 0x03, + 25831 - 19968: jis0208<<14 | 0x39<<7 | 0x08, + 25833 - 19968: jis0212<<14 | 0x20<<7 | 0x0C, + 25834 - 19968: jis0212<<14 | 0x20<<7 | 0x0D, + 25836 - 19968: jis0208<<14 | 0x14<<7 | 0x1B, + 25837 - 19968: jis0212<<14 | 0x20<<7 | 0x0E, + 25839 - 19968: jis0208<<14 | 0x39<<7 | 0x0E, + 25840 - 19968: jis0212<<14 | 0x20<<7 | 0x0F, + 25841 - 19968: jis0208<<14 | 0x39<<7 | 0x07, + 25842 - 19968: jis0208<<14 | 0x39<<7 | 0x12, + 25844 - 19968: jis0208<<14 | 0x39<<7 | 0x11, + 25845 - 19968: jis0212<<14 | 0x20<<7 | 0x10, + 25846 - 19968: jis0208<<14 | 0x39<<7 | 0x10, + 25847 - 19968: jis0212<<14 | 0x20<<7 | 0x11, + 25850 - 19968: jis0208<<14 | 0x39<<7 | 0x13, + 25851 - 19968: jis0212<<14 | 0x20<<7 | 0x12, + 25853 - 19968: jis0208<<14 | 0x39<<7 | 0x15, + 25854 - 19968: jis0208<<14 | 0x1D<<7 | 0x50, + 25855 - 19968: jis0212<<14 | 0x20<<7 | 0x13, + 25856 - 19968: jis0208<<14 | 0x39<<7 | 0x14, + 25857 - 19968: jis0212<<14 | 0x20<<7 | 0x14, + 25860 - 19968: jis0212<<14 | 0x20<<7 | 0x15, + 25861 - 19968: jis0208<<14 | 0x39<<7 | 0x18, + 25864 - 19968: jis0212<<14 | 0x20<<7 | 0x16, + 25865 - 19968: jis0212<<14 | 0x20<<7 | 0x17, + 25866 - 19968: jis0212<<14 | 0x20<<7 | 0x18, + 25871 - 19968: jis0212<<14 | 0x20<<7 | 0x19, + 25875 - 19968: jis0212<<14 | 0x20<<7 | 0x1A, + 25876 - 19968: jis0212<<14 | 0x20<<7 | 0x1B, + 25878 - 19968: jis0212<<14 | 0x20<<7 | 0x1C, + 25880 - 19968: jis0208<<14 | 0x39<<7 | 0x16, + 25881 - 19968: jis0212<<14 | 0x20<<7 | 0x1D, + 25883 - 19968: jis0212<<14 | 0x20<<7 | 0x1E, + 25884 - 19968: jis0208<<14 | 0x39<<7 | 0x17, + 25885 - 19968: jis0208<<14 | 0x38<<7 | 0x4F, + 25886 - 19968: jis0212<<14 | 0x20<<7 | 0x1F, + 25887 - 19968: jis0212<<14 | 0x20<<7 | 0x20, + 25890 - 19968: jis0212<<14 | 0x20<<7 | 0x21, + 25891 - 19968: jis0208<<14 | 0x39<<7 | 0x1A, + 25892 - 19968: jis0208<<14 | 0x39<<7 | 0x19, + 25894 - 19968: jis0212<<14 | 0x20<<7 | 0x22, + 25897 - 19968: jis0212<<14 | 0x20<<7 | 0x23, + 25898 - 19968: jis0208<<14 | 0x38<<7 | 0x57, + 25899 - 19968: jis0208<<14 | 0x39<<7 | 0x1B, + 25900 - 19968: jis0208<<14 | 0x39<<7 | 0x0F, + 25902 - 19968: jis0212<<14 | 0x20<<7 | 0x24, + 25903 - 19968: jis0208<<14 | 0x1A<<7 | 0x38, + 25905 - 19968: jis0212<<14 | 0x20<<7 | 0x25, + 25908 - 19968: jis0208<<14 | 0x39<<7 | 0x1C, + 25909 - 19968: jis0208<<14 | 0x39<<7 | 0x1D, + 25910 - 19968: jis0208<<14 | 0x39<<7 | 0x1F, + 25911 - 19968: jis0208<<14 | 0x39<<7 | 0x1E, + 25912 - 19968: jis0208<<14 | 0x39<<7 | 0x20, + 25913 - 19968: jis0208<<14 | 0x11<<7 | 0x5D, + 25914 - 19968: jis0212<<14 | 0x20<<7 | 0x26, + 25915 - 19968: jis0208<<14 | 0x18<<7 | 0x15, + 25916 - 19968: jis0212<<14 | 0x20<<7 | 0x27, + 25917 - 19968: jis0212<<14 | 0x20<<7 | 0x28, + 25918 - 19968: jis0208<<14 | 0x29<<7 | 0x5B, + 25919 - 19968: jis0208<<14 | 0x1F<<7 | 0x0E, + 25923 - 19968: jis0212<<14 | 0x20<<7 | 0x29, + 25925 - 19968: jis0208<<14 | 0x17<<7 | 0x2D, + 25927 - 19968: jis0212<<14 | 0x20<<7 | 0x2A, + 25928 - 19968: jis0208<<14 | 0x39<<7 | 0x22, + 25929 - 19968: jis0212<<14 | 0x20<<7 | 0x2B, + 25933 - 19968: jis0208<<14 | 0x39<<7 | 0x25, + 25934 - 19968: jis0208<<14 | 0x59<<7 | 0x12, + 25935 - 19968: jis0208<<14 | 0x28<<7 | 0x31, + 25936 - 19968: jis0212<<14 | 0x20<<7 | 0x2C, + 25937 - 19968: jis0208<<14 | 0x14<<7 | 0x3E, + 25938 - 19968: jis0212<<14 | 0x20<<7 | 0x2D, + 25940 - 19968: jis0212<<14 | 0x20<<7 | 0x2E, + 25941 - 19968: jis0208<<14 | 0x39<<7 | 0x24, + 25942 - 19968: jis0208<<14 | 0x39<<7 | 0x23, + 25943 - 19968: jis0208<<14 | 0x26<<7 | 0x33, + 25944 - 19968: jis0208<<14 | 0x39<<7 | 0x26, + 25945 - 19968: jis0208<<14 | 0x15<<7 | 0x14, + 25949 - 19968: jis0208<<14 | 0x39<<7 | 0x28, + 25950 - 19968: jis0208<<14 | 0x39<<7 | 0x27, + 25951 - 19968: jis0212<<14 | 0x20<<7 | 0x2F, + 25952 - 19968: jis0212<<14 | 0x20<<7 | 0x30, + 25954 - 19968: jis0208<<14 | 0x13<<7 | 0x19, + 25955 - 19968: jis0208<<14 | 0x1A<<7 | 0x15, + 25958 - 19968: jis0208<<14 | 0x25<<7 | 0x37, + 25959 - 19968: jis0212<<14 | 0x20<<7 | 0x31, + 25963 - 19968: jis0212<<14 | 0x20<<7 | 0x32, + 25964 - 19968: jis0208<<14 | 0x16<<7 | 0x28, + 25968 - 19968: jis0208<<14 | 0x1E<<7 | 0x53, + 25970 - 19968: jis0208<<14 | 0x39<<7 | 0x29, + 25972 - 19968: jis0208<<14 | 0x1F<<7 | 0x0F, + 25973 - 19968: jis0208<<14 | 0x24<<7 | 0x07, + 25975 - 19968: jis0208<<14 | 0x28<<7 | 0x3E, + 25976 - 19968: jis0208<<14 | 0x39<<7 | 0x2A, + 25978 - 19968: jis0212<<14 | 0x20<<7 | 0x33, + 25981 - 19968: jis0212<<14 | 0x20<<7 | 0x34, + 25985 - 19968: jis0212<<14 | 0x20<<7 | 0x35, + 25986 - 19968: jis0208<<14 | 0x39<<7 | 0x2B, + 25987 - 19968: jis0208<<14 | 0x39<<7 | 0x2C, + 25989 - 19968: jis0212<<14 | 0x20<<7 | 0x36, + 25991 - 19968: jis0208<<14 | 0x29<<7 | 0x17, + 25992 - 19968: jis0208<<14 | 0x34<<7 | 0x3C, + 25993 - 19968: jis0208<<14 | 0x1F<<7 | 0x25, + 25994 - 19968: jis0212<<14 | 0x20<<7 | 0x37, + 25996 - 19968: jis0208<<14 | 0x28<<7 | 0x2B, + 25998 - 19968: jis0208<<14 | 0x19<<7 | 0x37, + 26000 - 19968: jis0208<<14 | 0x27<<7 | 0x44, + 26001 - 19968: jis0208<<14 | 0x27<<7 | 0x22, + 26002 - 19968: jis0212<<14 | 0x20<<7 | 0x38, + 26005 - 19968: jis0212<<14 | 0x20<<7 | 0x39, + 26007 - 19968: jis0208<<14 | 0x24<<7 | 0x2C, + 26008 - 19968: jis0212<<14 | 0x20<<7 | 0x3A, + 26009 - 19968: jis0208<<14 | 0x2D<<7 | 0x20, + 26011 - 19968: jis0208<<14 | 0x39<<7 | 0x2E, + 26012 - 19968: jis0208<<14 | 0x1B<<7 | 0x2F, + 26013 - 19968: jis0212<<14 | 0x20<<7 | 0x3B, + 26015 - 19968: jis0208<<14 | 0x39<<7 | 0x2F, + 26016 - 19968: jis0212<<14 | 0x20<<7 | 0x3C, + 26017 - 19968: jis0208<<14 | 0x0F<<7 | 0x15, + 26019 - 19968: jis0212<<14 | 0x20<<7 | 0x3D, + 26020 - 19968: jis0208<<14 | 0x15<<7 | 0x33, + 26021 - 19968: jis0208<<14 | 0x1F<<7 | 0x2C, + 26022 - 19968: jis0212<<14 | 0x20<<7 | 0x3E, + 26023 - 19968: jis0208<<14 | 0x28<<7 | 0x3F, + 26027 - 19968: jis0208<<14 | 0x39<<7 | 0x30, + 26028 - 19968: jis0208<<14 | 0x1A<<7 | 0x21, + 26029 - 19968: jis0208<<14 | 0x22<<7 | 0x26, + 26030 - 19968: jis0212<<14 | 0x20<<7 | 0x3F, + 26031 - 19968: jis0208<<14 | 0x1A<<7 | 0x3A, + 26032 - 19968: jis0208<<14 | 0x1E<<7 | 0x16, + 26034 - 19968: jis0212<<14 | 0x20<<7 | 0x40, + 26035 - 19968: jis0212<<14 | 0x20<<7 | 0x41, + 26036 - 19968: jis0212<<14 | 0x20<<7 | 0x42, + 26039 - 19968: jis0208<<14 | 0x39<<7 | 0x31, + 26041 - 19968: jis0208<<14 | 0x29<<7 | 0x5C, + 26044 - 19968: jis0208<<14 | 0x10<<7 | 0x56, + 26045 - 19968: jis0208<<14 | 0x1A<<7 | 0x3B, + 26047 - 19968: jis0212<<14 | 0x20<<7 | 0x43, + 26049 - 19968: jis0208<<14 | 0x39<<7 | 0x34, + 26050 - 19968: jis0212<<14 | 0x20<<7 | 0x44, + 26051 - 19968: jis0208<<14 | 0x39<<7 | 0x32, + 26052 - 19968: jis0208<<14 | 0x39<<7 | 0x35, + 26053 - 19968: jis0208<<14 | 0x2D<<7 | 0x18, + 26054 - 19968: jis0208<<14 | 0x39<<7 | 0x33, + 26056 - 19968: jis0212<<14 | 0x20<<7 | 0x45, + 26057 - 19968: jis0212<<14 | 0x20<<7 | 0x46, + 26059 - 19968: jis0208<<14 | 0x1F<<7 | 0x5A, + 26060 - 19968: jis0208<<14 | 0x39<<7 | 0x36, + 26062 - 19968: jis0212<<14 | 0x20<<7 | 0x47, + 26063 - 19968: jis0208<<14 | 0x21<<7 | 0x11, + 26064 - 19968: jis0212<<14 | 0x20<<7 | 0x48, + 26066 - 19968: jis0208<<14 | 0x39<<7 | 0x37, + 26068 - 19968: jis0212<<14 | 0x20<<7 | 0x49, + 26070 - 19968: jis0212<<14 | 0x20<<7 | 0x4A, + 26071 - 19968: jis0208<<14 | 0x13<<7 | 0x59, + 26072 - 19968: jis0212<<14 | 0x20<<7 | 0x4B, + 26073 - 19968: jis0208<<14 | 0x39<<7 | 0x39, + 26075 - 19968: jis0208<<14 | 0x39<<7 | 0x38, + 26079 - 19968: jis0212<<14 | 0x20<<7 | 0x4C, + 26080 - 19968: jis0208<<14 | 0x39<<7 | 0x3A, + 26081 - 19968: jis0208<<14 | 0x39<<7 | 0x3B, + 26082 - 19968: jis0208<<14 | 0x13<<7 | 0x5A, + 26085 - 19968: jis0208<<14 | 0x25<<7 | 0x5B, + 26086 - 19968: jis0208<<14 | 0x22<<7 | 0x15, + 26087 - 19968: jis0208<<14 | 0x14<<7 | 0x4B, + 26088 - 19968: jis0208<<14 | 0x1A<<7 | 0x3C, + 26089 - 19968: jis0208<<14 | 0x20<<7 | 0x40, + 26092 - 19968: jis0208<<14 | 0x1C<<7 | 0x3B, + 26093 - 19968: jis0208<<14 | 0x0F<<7 | 0x0F, + 26096 - 19968: jis0212<<14 | 0x20<<7 | 0x4D, + 26097 - 19968: jis0208<<14 | 0x39<<7 | 0x3C, + 26098 - 19968: jis0212<<14 | 0x20<<7 | 0x4E, + 26100 - 19968: jis0212<<14 | 0x20<<7 | 0x4F, + 26101 - 19968: jis0212<<14 | 0x20<<7 | 0x50, + 26105 - 19968: jis0212<<14 | 0x20<<7 | 0x51, + 26106 - 19968: jis0208<<14 | 0x11<<7 | 0x01, + 26107 - 19968: jis0208<<14 | 0x39<<7 | 0x40, + 26110 - 19968: jis0212<<14 | 0x20<<7 | 0x52, + 26111 - 19968: jis0212<<14 | 0x20<<7 | 0x53, + 26112 - 19968: jis0208<<14 | 0x59<<7 | 0x13, + 26114 - 19968: jis0208<<14 | 0x18<<7 | 0x16, + 26115 - 19968: jis0208<<14 | 0x39<<7 | 0x3F, + 26116 - 19968: jis0212<<14 | 0x20<<7 | 0x55, + 26118 - 19968: jis0208<<14 | 0x19<<7 | 0x0A, + 26119 - 19968: jis0208<<14 | 0x1D<<7 | 0x19, + 26120 - 19968: jis0212<<14 | 0x20<<7 | 0x56, + 26121 - 19968: jis0208<<14 | 0x59<<7 | 0x16, + 26122 - 19968: jis0208<<14 | 0x39<<7 | 0x3E, + 26124 - 19968: jis0208<<14 | 0x1D<<7 | 0x1A, + 26125 - 19968: jis0212<<14 | 0x20<<7 | 0x58, + 26126 - 19968: jis0208<<14 | 0x2B<<7 | 0x1F, + 26127 - 19968: jis0208<<14 | 0x19<<7 | 0x09, + 26129 - 19968: jis0212<<14 | 0x20<<7 | 0x59, + 26130 - 19968: jis0212<<14 | 0x20<<7 | 0x5A, + 26131 - 19968: jis0208<<14 | 0x0F<<7 | 0x36, + 26132 - 19968: jis0208<<14 | 0x1F<<7 | 0x2D, + 26133 - 19968: jis0208<<14 | 0x59<<7 | 0x14, + 26134 - 19968: jis0212<<14 | 0x20<<7 | 0x5C, + 26140 - 19968: jis0208<<14 | 0x39<<7 | 0x45, + 26141 - 19968: jis0212<<14 | 0x20<<7 | 0x5D, + 26142 - 19968: jis0208<<14 | 0x59<<7 | 0x18, + 26143 - 19968: jis0208<<14 | 0x1F<<7 | 0x10, + 26144 - 19968: jis0208<<14 | 0x10<<7 | 0x26, + 26145 - 19968: jis0212<<14 | 0x21<<7 | 0x01, + 26146 - 19968: jis0212<<14 | 0x21<<7 | 0x02, + 26147 - 19968: jis0212<<14 | 0x21<<7 | 0x03, + 26148 - 19968: jis0208<<14 | 0x59<<7 | 0x19, + 26149 - 19968: jis0208<<14 | 0x1C<<7 | 0x34, + 26150 - 19968: jis0212<<14 | 0x21<<7 | 0x05, + 26151 - 19968: jis0208<<14 | 0x2A<<7 | 0x45, + 26152 - 19968: jis0208<<14 | 0x19<<7 | 0x51, + 26153 - 19968: jis0212<<14 | 0x21<<7 | 0x06, + 26154 - 19968: jis0212<<14 | 0x21<<7 | 0x07, + 26155 - 19968: jis0212<<14 | 0x21<<7 | 0x08, + 26156 - 19968: jis0212<<14 | 0x21<<7 | 0x09, + 26157 - 19968: jis0208<<14 | 0x1D<<7 | 0x1B, + 26158 - 19968: jis0208<<14 | 0x59<<7 | 0x17, + 26159 - 19968: jis0208<<14 | 0x1F<<7 | 0x06, + 26160 - 19968: jis0212<<14 | 0x21<<7 | 0x0B, + 26161 - 19968: jis0208<<14 | 0x58<<7 | 0x07, + 26163 - 19968: jis0212<<14 | 0x21<<7 | 0x0D, + 26164 - 19968: jis0208<<14 | 0x39<<7 | 0x44, + 26165 - 19968: jis0208<<14 | 0x39<<7 | 0x42, + 26166 - 19968: jis0208<<14 | 0x39<<7 | 0x43, + 26167 - 19968: jis0212<<14 | 0x21<<7 | 0x0F, + 26169 - 19968: jis0212<<14 | 0x21<<7 | 0x0E, + 26171 - 19968: jis0208<<14 | 0x59<<7 | 0x15, + 26172 - 19968: jis0208<<14 | 0x22<<7 | 0x4A, + 26175 - 19968: jis0208<<14 | 0x3A<<7 | 0x05, + 26176 - 19968: jis0212<<14 | 0x21<<7 | 0x10, + 26177 - 19968: jis0208<<14 | 0x39<<7 | 0x49, + 26178 - 19968: jis0208<<14 | 0x1A<<7 | 0x5D, + 26179 - 19968: jis0208<<14 | 0x18<<7 | 0x17, + 26180 - 19968: jis0208<<14 | 0x39<<7 | 0x47, + 26181 - 19968: jis0212<<14 | 0x21<<7 | 0x11, + 26182 - 19968: jis0212<<14 | 0x21<<7 | 0x12, + 26185 - 19968: jis0208<<14 | 0x39<<7 | 0x48, + 26186 - 19968: jis0212<<14 | 0x21<<7 | 0x13, + 26187 - 19968: jis0208<<14 | 0x1E<<7 | 0x17, + 26188 - 19968: jis0212<<14 | 0x21<<7 | 0x14, + 26190 - 19968: jis0212<<14 | 0x21<<7 | 0x16, + 26191 - 19968: jis0208<<14 | 0x39<<7 | 0x46, + 26193 - 19968: jis0212<<14 | 0x21<<7 | 0x15, + 26194 - 19968: jis0208<<14 | 0x1A<<7 | 0x0E, + 26199 - 19968: jis0208<<14 | 0x59<<7 | 0x1B, + 26200 - 19968: jis0212<<14 | 0x21<<7 | 0x18, + 26201 - 19968: jis0208<<14 | 0x59<<7 | 0x1C, + 26203 - 19968: jis0212<<14 | 0x21<<7 | 0x1A, + 26204 - 19968: jis0212<<14 | 0x21<<7 | 0x1B, + 26205 - 19968: jis0208<<14 | 0x39<<7 | 0x4B, + 26206 - 19968: jis0208<<14 | 0x39<<7 | 0x4A, + 26207 - 19968: jis0208<<14 | 0x39<<7 | 0x4F, + 26208 - 19968: jis0212<<14 | 0x21<<7 | 0x1C, + 26209 - 19968: jis0212<<14 | 0x21<<7 | 0x1D, + 26210 - 19968: jis0208<<14 | 0x39<<7 | 0x50, + 26212 - 19968: jis0208<<14 | 0x39<<7 | 0x4C, + 26213 - 19968: jis0208<<14 | 0x59<<7 | 0x1A, + 26214 - 19968: jis0208<<14 | 0x12<<7 | 0x01, + 26215 - 19968: jis0208<<14 | 0x39<<7 | 0x4D, + 26216 - 19968: jis0208<<14 | 0x39<<7 | 0x4E, + 26217 - 19968: jis0208<<14 | 0x27<<7 | 0x34, + 26218 - 19968: jis0212<<14 | 0x21<<7 | 0x1F, + 26219 - 19968: jis0212<<14 | 0x21<<7 | 0x20, + 26220 - 19968: jis0212<<14 | 0x21<<7 | 0x21, + 26222 - 19968: jis0208<<14 | 0x28<<7 | 0x40, + 26223 - 19968: jis0208<<14 | 0x16<<7 | 0x29, + 26224 - 19968: jis0208<<14 | 0x39<<7 | 0x51, + 26227 - 19968: jis0208<<14 | 0x59<<7 | 0x1E, + 26228 - 19968: jis0208<<14 | 0x1F<<7 | 0x11, + 26229 - 19968: jis0212<<14 | 0x21<<7 | 0x24, + 26230 - 19968: jis0208<<14 | 0x1D<<7 | 0x1C, + 26231 - 19968: jis0212<<14 | 0x21<<7 | 0x26, + 26232 - 19968: jis0212<<14 | 0x21<<7 | 0x27, + 26233 - 19968: jis0212<<14 | 0x21<<7 | 0x28, + 26234 - 19968: jis0208<<14 | 0x22<<7 | 0x31, + 26235 - 19968: jis0212<<14 | 0x21<<7 | 0x29, + 26236 - 19968: jis0212<<14 | 0x21<<7 | 0x2B, + 26238 - 19968: jis0212<<14 | 0x21<<7 | 0x22, + 26239 - 19968: jis0212<<14 | 0x21<<7 | 0x25, + 26240 - 19968: jis0212<<14 | 0x21<<7 | 0x2A, + 26241 - 19968: jis0208<<14 | 0x15<<7 | 0x26, + 26243 - 19968: jis0208<<14 | 0x39<<7 | 0x52, + 26244 - 19968: jis0208<<14 | 0x39<<7 | 0x56, + 26247 - 19968: jis0208<<14 | 0x11<<7 | 0x2A, + 26248 - 19968: jis0208<<14 | 0x39<<7 | 0x53, + 26249 - 19968: jis0208<<14 | 0x39<<7 | 0x55, + 26251 - 19968: jis0212<<14 | 0x21<<7 | 0x2C, + 26252 - 19968: jis0212<<14 | 0x21<<7 | 0x2D, + 26253 - 19968: jis0212<<14 | 0x21<<7 | 0x2E, + 26254 - 19968: jis0208<<14 | 0x39<<7 | 0x54, + 26256 - 19968: jis0212<<14 | 0x21<<7 | 0x2F, + 26257 - 19968: jis0208<<14 | 0x1C<<7 | 0x4A, + 26258 - 19968: jis0212<<14 | 0x21<<7 | 0x30, + 26262 - 19968: jis0208<<14 | 0x22<<7 | 0x27, + 26263 - 19968: jis0208<<14 | 0x0F<<7 | 0x24, + 26264 - 19968: jis0208<<14 | 0x39<<7 | 0x57, + 26265 - 19968: jis0208<<14 | 0x59<<7 | 0x1F, + 26266 - 19968: jis0212<<14 | 0x21<<7 | 0x32, + 26267 - 19968: jis0212<<14 | 0x21<<7 | 0x33, + 26268 - 19968: jis0212<<14 | 0x21<<7 | 0x34, + 26269 - 19968: jis0208<<14 | 0x39<<7 | 0x58, + 26271 - 19968: jis0212<<14 | 0x21<<7 | 0x35, + 26272 - 19968: jis0208<<14 | 0x59<<7 | 0x20, + 26274 - 19968: jis0208<<14 | 0x23<<7 | 0x09, + 26276 - 19968: jis0212<<14 | 0x21<<7 | 0x37, + 26278 - 19968: jis0208<<14 | 0x2D<<7 | 0x50, + 26283 - 19968: jis0208<<14 | 0x1A<<7 | 0x22, + 26285 - 19968: jis0212<<14 | 0x21<<7 | 0x38, + 26286 - 19968: jis0208<<14 | 0x29<<7 | 0x4A, + 26289 - 19968: jis0212<<14 | 0x21<<7 | 0x39, + 26290 - 19968: jis0208<<14 | 0x59<<7 | 0x21, + 26292 - 19968: jis0208<<14 | 0x2A<<7 | 0x1C, + 26293 - 19968: jis0212<<14 | 0x21<<7 | 0x3B, + 26296 - 19968: jis0208<<14 | 0x3A<<7 | 0x01, + 26297 - 19968: jis0208<<14 | 0x39<<7 | 0x5A, + 26299 - 19968: jis0212<<14 | 0x21<<7 | 0x3C, + 26300 - 19968: jis0208<<14 | 0x39<<7 | 0x5D, + 26302 - 19968: jis0208<<14 | 0x39<<7 | 0x5C, + 26303 - 19968: jis0208<<14 | 0x59<<7 | 0x22, + 26304 - 19968: jis0212<<14 | 0x21<<7 | 0x3E, + 26305 - 19968: jis0208<<14 | 0x39<<7 | 0x59, + 26306 - 19968: jis0212<<14 | 0x21<<7 | 0x3F, + 26307 - 19968: jis0212<<14 | 0x21<<7 | 0x40, + 26308 - 19968: jis0208<<14 | 0x3A<<7 | 0x00, + 26311 - 19968: jis0208<<14 | 0x25<<7 | 0x3D, + 26312 - 19968: jis0212<<14 | 0x21<<7 | 0x41, + 26313 - 19968: jis0208<<14 | 0x39<<7 | 0x5B, + 26316 - 19968: jis0212<<14 | 0x21<<7 | 0x42, + 26318 - 19968: jis0212<<14 | 0x21<<7 | 0x43, + 26319 - 19968: jis0212<<14 | 0x21<<7 | 0x44, + 26324 - 19968: jis0212<<14 | 0x21<<7 | 0x45, + 26326 - 19968: jis0208<<14 | 0x3A<<7 | 0x02, + 26329 - 19968: jis0208<<14 | 0x1C<<7 | 0x4B, + 26330 - 19968: jis0208<<14 | 0x3A<<7 | 0x03, + 26331 - 19968: jis0212<<14 | 0x21<<7 | 0x46, + 26332 - 19968: jis0208<<14 | 0x2C<<7 | 0x2A, + 26333 - 19968: jis0208<<14 | 0x26<<7 | 0x57, + 26335 - 19968: jis0212<<14 | 0x21<<7 | 0x47, + 26336 - 19968: jis0208<<14 | 0x3A<<7 | 0x04, + 26342 - 19968: jis0208<<14 | 0x3A<<7 | 0x06, + 26344 - 19968: jis0212<<14 | 0x21<<7 | 0x48, + 26345 - 19968: jis0208<<14 | 0x3A<<7 | 0x07, + 26347 - 19968: jis0212<<14 | 0x21<<7 | 0x49, + 26348 - 19968: jis0212<<14 | 0x21<<7 | 0x4A, + 26350 - 19968: jis0212<<14 | 0x21<<7 | 0x4B, + 26352 - 19968: jis0208<<14 | 0x3A<<7 | 0x08, + 26354 - 19968: jis0208<<14 | 0x15<<7 | 0x29, + 26355 - 19968: jis0208<<14 | 0x10<<7 | 0x27, + 26356 - 19968: jis0208<<14 | 0x18<<7 | 0x18, + 26357 - 19968: jis0208<<14 | 0x3A<<7 | 0x09, + 26359 - 19968: jis0208<<14 | 0x3A<<7 | 0x0A, + 26360 - 19968: jis0208<<14 | 0x1C<<7 | 0x50, + 26361 - 19968: jis0208<<14 | 0x20<<7 | 0x41, + 26362 - 19968: jis0208<<14 | 0x59<<7 | 0x23, + 26363 - 19968: jis0208<<14 | 0x58<<7 | 0x0A, + 26364 - 19968: jis0208<<14 | 0x31<<7 | 0x37, + 26365 - 19968: jis0208<<14 | 0x20<<7 | 0x1D, + 26366 - 19968: jis0208<<14 | 0x20<<7 | 0x1C, + 26367 - 19968: jis0208<<14 | 0x21<<7 | 0x37, + 26368 - 19968: jis0208<<14 | 0x19<<7 | 0x26, + 26371 - 19968: jis0208<<14 | 0x2F<<7 | 0x51, + 26373 - 19968: jis0212<<14 | 0x21<<7 | 0x4D, + 26375 - 19968: jis0212<<14 | 0x21<<7 | 0x4E, + 26376 - 19968: jis0208<<14 | 0x16<<7 | 0x4D, + 26377 - 19968: jis0208<<14 | 0x2C<<7 | 0x0C, + 26379 - 19968: jis0208<<14 | 0x29<<7 | 0x5D, + 26381 - 19968: jis0208<<14 | 0x28<<7 | 0x5D, + 26382 - 19968: jis0208<<14 | 0x59<<7 | 0x24, + 26383 - 19968: jis0208<<14 | 0x3A<<7 | 0x0B, + 26387 - 19968: jis0212<<14 | 0x21<<7 | 0x50, + 26388 - 19968: jis0208<<14 | 0x19<<7 | 0x52, + 26389 - 19968: jis0208<<14 | 0x23<<7 | 0x1E, + 26390 - 19968: jis0208<<14 | 0x3A<<7 | 0x0C, + 26391 - 19968: jis0208<<14 | 0x2E<<7 | 0x0E, + 26393 - 19968: jis0212<<14 | 0x21<<7 | 0x51, + 26395 - 19968: jis0208<<14 | 0x2A<<7 | 0x1D, + 26396 - 19968: jis0212<<14 | 0x21<<7 | 0x52, + 26397 - 19968: jis0208<<14 | 0x23<<7 | 0x0A, + 26398 - 19968: jis0208<<14 | 0x3A<<7 | 0x0D, + 26399 - 19968: jis0208<<14 | 0x13<<7 | 0x5B, + 26400 - 19968: jis0212<<14 | 0x21<<7 | 0x53, + 26402 - 19968: jis0212<<14 | 0x21<<7 | 0x54, + 26406 - 19968: jis0208<<14 | 0x3A<<7 | 0x0E, + 26407 - 19968: jis0208<<14 | 0x3A<<7 | 0x0F, + 26408 - 19968: jis0208<<14 | 0x2B<<7 | 0x39, + 26410 - 19968: jis0208<<14 | 0x2B<<7 | 0x03, + 26411 - 19968: jis0208<<14 | 0x2A<<7 | 0x55, + 26412 - 19968: jis0208<<14 | 0x2A<<7 | 0x3B, + 26413 - 19968: jis0208<<14 | 0x1A<<7 | 0x04, + 26414 - 19968: jis0208<<14 | 0x3A<<7 | 0x11, + 26417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4A, + 26419 - 19968: jis0212<<14 | 0x21<<7 | 0x55, + 26420 - 19968: jis0208<<14 | 0x2A<<7 | 0x30, + 26422 - 19968: jis0208<<14 | 0x3A<<7 | 0x13, + 26423 - 19968: jis0208<<14 | 0x3A<<7 | 0x16, + 26424 - 19968: jis0208<<14 | 0x3A<<7 | 0x15, + 26426 - 19968: jis0208<<14 | 0x13<<7 | 0x58, + 26429 - 19968: jis0208<<14 | 0x14<<7 | 0x3F, + 26430 - 19968: jis0212<<14 | 0x21<<7 | 0x56, + 26431 - 19968: jis0208<<14 | 0x3A<<7 | 0x12, + 26433 - 19968: jis0208<<14 | 0x3A<<7 | 0x14, + 26437 - 19968: jis0212<<14 | 0x21<<7 | 0x57, + 26438 - 19968: jis0208<<14 | 0x3A<<7 | 0x17, + 26439 - 19968: jis0212<<14 | 0x21<<7 | 0x58, + 26440 - 19968: jis0212<<14 | 0x21<<7 | 0x59, + 26441 - 19968: jis0208<<14 | 0x1E<<7 | 0x58, + 26444 - 19968: jis0212<<14 | 0x21<<7 | 0x5A, + 26446 - 19968: jis0208<<14 | 0x2C<<7 | 0x5A, + 26447 - 19968: jis0208<<14 | 0x0F<<7 | 0x28, + 26448 - 19968: jis0208<<14 | 0x19<<7 | 0x3F, + 26449 - 19968: jis0208<<14 | 0x21<<7 | 0x1B, + 26451 - 19968: jis0208<<14 | 0x1B<<7 | 0x3C, + 26452 - 19968: jis0212<<14 | 0x21<<7 | 0x5B, + 26453 - 19968: jis0212<<14 | 0x21<<7 | 0x5C, + 26454 - 19968: jis0208<<14 | 0x1D<<7 | 0x52, + 26457 - 19968: jis0208<<14 | 0x3A<<7 | 0x1A, + 26460 - 19968: jis0208<<14 | 0x24<<7 | 0x2D, + 26461 - 19968: jis0212<<14 | 0x21<<7 | 0x5D, + 26462 - 19968: jis0208<<14 | 0x3A<<7 | 0x18, + 26463 - 19968: jis0208<<14 | 0x21<<7 | 0x0A, + 26464 - 19968: jis0208<<14 | 0x3A<<7 | 0x19, + 26465 - 19968: jis0208<<14 | 0x1D<<7 | 0x51, + 26466 - 19968: jis0208<<14 | 0x2B<<7 | 0x3C, + 26467 - 19968: jis0208<<14 | 0x3A<<7 | 0x1B, + 26468 - 19968: jis0208<<14 | 0x3A<<7 | 0x1C, + 26469 - 19968: jis0208<<14 | 0x2C<<7 | 0x47, + 26470 - 19968: jis0208<<14 | 0x59<<7 | 0x26, + 26474 - 19968: jis0208<<14 | 0x3A<<7 | 0x21, + 26476 - 19968: jis0212<<14 | 0x22<<7 | 0x01, + 26477 - 19968: jis0208<<14 | 0x18<<7 | 0x19, + 26478 - 19968: jis0212<<14 | 0x22<<7 | 0x02, + 26479 - 19968: jis0208<<14 | 0x26<<7 | 0x34, + 26480 - 19968: jis0208<<14 | 0x3A<<7 | 0x1E, + 26481 - 19968: jis0208<<14 | 0x24<<7 | 0x4B, + 26482 - 19968: jis0208<<14 | 0x39<<7 | 0x3D, + 26483 - 19968: jis0208<<14 | 0x39<<7 | 0x41, + 26484 - 19968: jis0212<<14 | 0x22<<7 | 0x03, + 26485 - 19968: jis0208<<14 | 0x14<<7 | 0x2E, + 26486 - 19968: jis0212<<14 | 0x22<<7 | 0x04, + 26487 - 19968: jis0208<<14 | 0x26<<7 | 0x26, + 26491 - 19968: jis0212<<14 | 0x22<<7 | 0x05, + 26492 - 19968: jis0208<<14 | 0x3A<<7 | 0x20, + 26494 - 19968: jis0208<<14 | 0x1D<<7 | 0x1D, + 26495 - 19968: jis0208<<14 | 0x27<<7 | 0x23, + 26497 - 19968: jis0212<<14 | 0x22<<7 | 0x06, + 26500 - 19968: jis0212<<14 | 0x22<<7 | 0x07, + 26501 - 19968: jis0208<<14 | 0x3A<<7 | 0x26, + 26503 - 19968: jis0208<<14 | 0x27<<7 | 0x59, + 26505 - 19968: jis0208<<14 | 0x3A<<7 | 0x1D, + 26507 - 19968: jis0208<<14 | 0x3A<<7 | 0x23, + 26508 - 19968: jis0208<<14 | 0x3A<<7 | 0x22, + 26510 - 19968: jis0212<<14 | 0x22<<7 | 0x08, + 26511 - 19968: jis0212<<14 | 0x22<<7 | 0x09, + 26512 - 19968: jis0208<<14 | 0x1F<<7 | 0x2E, + 26513 - 19968: jis0212<<14 | 0x22<<7 | 0x0A, + 26515 - 19968: jis0212<<14 | 0x22<<7 | 0x0B, + 26517 - 19968: jis0208<<14 | 0x2A<<7 | 0x4C, + 26518 - 19968: jis0212<<14 | 0x22<<7 | 0x0C, + 26519 - 19968: jis0208<<14 | 0x2D<<7 | 0x32, + 26520 - 19968: jis0212<<14 | 0x22<<7 | 0x0D, + 26521 - 19968: jis0212<<14 | 0x22<<7 | 0x0E, + 26522 - 19968: jis0208<<14 | 0x2A<<7 | 0x46, + 26523 - 19968: jis0212<<14 | 0x22<<7 | 0x0F, + 26524 - 19968: jis0208<<14 | 0x11<<7 | 0x2B, + 26525 - 19968: jis0208<<14 | 0x1A<<7 | 0x3D, + 26528 - 19968: jis0208<<14 | 0x2E<<7 | 0x27, + 26529 - 19968: jis0208<<14 | 0x3A<<7 | 0x25, + 26530 - 19968: jis0208<<14 | 0x1E<<7 | 0x54, + 26534 - 19968: jis0208<<14 | 0x3A<<7 | 0x24, + 26537 - 19968: jis0208<<14 | 0x3A<<7 | 0x1F, + 26543 - 19968: jis0208<<14 | 0x17<<7 | 0x2E, + 26544 - 19968: jis0212<<14 | 0x22<<7 | 0x10, + 26545 - 19968: jis0212<<14 | 0x22<<7 | 0x11, + 26546 - 19968: jis0212<<14 | 0x22<<7 | 0x12, + 26547 - 19968: jis0208<<14 | 0x3A<<7 | 0x2B, + 26548 - 19968: jis0208<<14 | 0x3A<<7 | 0x29, + 26549 - 19968: jis0212<<14 | 0x22<<7 | 0x13, + 26550 - 19968: jis0208<<14 | 0x11<<7 | 0x2C, + 26551 - 19968: jis0208<<14 | 0x3A<<7 | 0x27, + 26552 - 19968: jis0208<<14 | 0x3A<<7 | 0x2D, + 26553 - 19968: jis0208<<14 | 0x3A<<7 | 0x33, + 26555 - 19968: jis0208<<14 | 0x59<<7 | 0x27, + 26556 - 19968: jis0212<<14 | 0x22<<7 | 0x15, + 26557 - 19968: jis0212<<14 | 0x22<<7 | 0x16, + 26560 - 19968: jis0208<<14 | 0x59<<7 | 0x29, + 26561 - 19968: jis0208<<14 | 0x21<<7 | 0x27, + 26562 - 19968: jis0212<<14 | 0x22<<7 | 0x19, + 26563 - 19968: jis0212<<14 | 0x22<<7 | 0x1A, + 26564 - 19968: jis0208<<14 | 0x29<<7 | 0x20, + 26565 - 19968: jis0212<<14 | 0x22<<7 | 0x1B, + 26566 - 19968: jis0208<<14 | 0x3A<<7 | 0x35, + 26568 - 19968: jis0212<<14 | 0x22<<7 | 0x1C, + 26569 - 19968: jis0212<<14 | 0x22<<7 | 0x1D, + 26570 - 19968: jis0208<<14 | 0x28<<7 | 0x01, + 26574 - 19968: jis0208<<14 | 0x3A<<7 | 0x34, + 26575 - 19968: jis0208<<14 | 0x26<<7 | 0x4F, + 26576 - 19968: jis0208<<14 | 0x2A<<7 | 0x1E, + 26577 - 19968: jis0208<<14 | 0x13<<7 | 0x1A, + 26578 - 19968: jis0212<<14 | 0x22<<7 | 0x1E, + 26579 - 19968: jis0208<<14 | 0x1F<<7 | 0x56, + 26580 - 19968: jis0208<<14 | 0x1C<<7 | 0x1F, + 26583 - 19968: jis0212<<14 | 0x22<<7 | 0x1F, + 26584 - 19968: jis0208<<14 | 0x23<<7 | 0x32, + 26585 - 19968: jis0212<<14 | 0x22<<7 | 0x20, + 26586 - 19968: jis0208<<14 | 0x2C<<7 | 0x0D, + 26588 - 19968: jis0212<<14 | 0x22<<7 | 0x21, + 26589 - 19968: jis0208<<14 | 0x3A<<7 | 0x30, + 26590 - 19968: jis0208<<14 | 0x3A<<7 | 0x2F, + 26593 - 19968: jis0212<<14 | 0x22<<7 | 0x22, + 26594 - 19968: jis0208<<14 | 0x3A<<7 | 0x31, + 26596 - 19968: jis0208<<14 | 0x3A<<7 | 0x2E, + 26598 - 19968: jis0212<<14 | 0x22<<7 | 0x23, + 26599 - 19968: jis0208<<14 | 0x3A<<7 | 0x36, + 26601 - 19968: jis0208<<14 | 0x3A<<7 | 0x2C, + 26604 - 19968: jis0208<<14 | 0x3A<<7 | 0x2A, + 26606 - 19968: jis0208<<14 | 0x3A<<7 | 0x32, + 26607 - 19968: jis0208<<14 | 0x3A<<7 | 0x28, + 26608 - 19968: jis0212<<14 | 0x22<<7 | 0x24, + 26609 - 19968: jis0208<<14 | 0x22<<7 | 0x4B, + 26610 - 19968: jis0212<<14 | 0x22<<7 | 0x25, + 26611 - 19968: jis0208<<14 | 0x2B<<7 | 0x57, + 26612 - 19968: jis0208<<14 | 0x1B<<7 | 0x25, + 26613 - 19968: jis0208<<14 | 0x19<<7 | 0x53, + 26614 - 19968: jis0212<<14 | 0x22<<7 | 0x26, + 26615 - 19968: jis0212<<14 | 0x22<<7 | 0x27, + 26617 - 19968: jis0212<<14 | 0x22<<7 | 0x17, + 26619 - 19968: jis0208<<14 | 0x19<<7 | 0x19, + 26622 - 19968: jis0208<<14 | 0x2A<<7 | 0x4E, + 26623 - 19968: jis0208<<14 | 0x12<<7 | 0x20, + 26625 - 19968: jis0208<<14 | 0x59<<7 | 0x2A, + 26626 - 19968: jis0208<<14 | 0x23<<7 | 0x2D, + 26627 - 19968: jis0208<<14 | 0x25<<7 | 0x29, + 26628 - 19968: jis0208<<14 | 0x10<<7 | 0x28, + 26643 - 19968: jis0208<<14 | 0x1F<<7 | 0x51, + 26644 - 19968: jis0212<<14 | 0x22<<7 | 0x29, + 26646 - 19968: jis0208<<14 | 0x1F<<7 | 0x13, + 26647 - 19968: jis0208<<14 | 0x16<<7 | 0x09, + 26649 - 19968: jis0212<<14 | 0x22<<7 | 0x2A, + 26653 - 19968: jis0212<<14 | 0x22<<7 | 0x2B, + 26654 - 19968: jis0208<<14 | 0x3A<<7 | 0x38, + 26655 - 19968: jis0212<<14 | 0x22<<7 | 0x2C, + 26657 - 19968: jis0208<<14 | 0x18<<7 | 0x1A, + 26658 - 19968: jis0208<<14 | 0x12<<7 | 0x5B, + 26663 - 19968: jis0212<<14 | 0x22<<7 | 0x2E, + 26664 - 19968: jis0212<<14 | 0x22<<7 | 0x2D, + 26665 - 19968: jis0208<<14 | 0x3A<<7 | 0x3A, + 26666 - 19968: jis0208<<14 | 0x12<<7 | 0x53, + 26667 - 19968: jis0208<<14 | 0x3A<<7 | 0x40, + 26668 - 19968: jis0212<<14 | 0x22<<7 | 0x2F, + 26669 - 19968: jis0212<<14 | 0x22<<7 | 0x30, + 26671 - 19968: jis0212<<14 | 0x22<<7 | 0x31, + 26672 - 19968: jis0212<<14 | 0x22<<7 | 0x32, + 26673 - 19968: jis0212<<14 | 0x22<<7 | 0x33, + 26674 - 19968: jis0208<<14 | 0x3A<<7 | 0x3D, + 26675 - 19968: jis0212<<14 | 0x22<<7 | 0x34, + 26676 - 19968: jis0208<<14 | 0x1F<<7 | 0x52, + 26680 - 19968: jis0208<<14 | 0x12<<7 | 0x2A, + 26681 - 19968: jis0208<<14 | 0x19<<7 | 0x0B, + 26683 - 19968: jis0212<<14 | 0x22<<7 | 0x35, + 26684 - 19968: jis0208<<14 | 0x12<<7 | 0x29, + 26685 - 19968: jis0208<<14 | 0x19<<7 | 0x2E, + 26687 - 19968: jis0212<<14 | 0x22<<7 | 0x36, + 26688 - 19968: jis0208<<14 | 0x3A<<7 | 0x3B, + 26689 - 19968: jis0208<<14 | 0x16<<7 | 0x44, + 26690 - 19968: jis0208<<14 | 0x16<<7 | 0x2A, + 26691 - 19968: jis0208<<14 | 0x24<<7 | 0x4C, + 26692 - 19968: jis0208<<14 | 0x59<<7 | 0x2B, + 26693 - 19968: jis0212<<14 | 0x22<<7 | 0x38, + 26694 - 19968: jis0208<<14 | 0x3A<<7 | 0x39, + 26696 - 19968: jis0208<<14 | 0x0F<<7 | 0x25, + 26698 - 19968: jis0212<<14 | 0x22<<7 | 0x39, + 26700 - 19968: jis0212<<14 | 0x22<<7 | 0x3A, + 26701 - 19968: jis0208<<14 | 0x3A<<7 | 0x3C, + 26702 - 19968: jis0208<<14 | 0x3A<<7 | 0x3E, + 26704 - 19968: jis0208<<14 | 0x15<<7 | 0x2C, + 26705 - 19968: jis0208<<14 | 0x16<<7 | 0x0B, + 26706 - 19968: jis0208<<14 | 0x59<<7 | 0x28, + 26707 - 19968: jis0208<<14 | 0x13<<7 | 0x1B, + 26708 - 19968: jis0208<<14 | 0x14<<7 | 0x2A, + 26709 - 19968: jis0212<<14 | 0x22<<7 | 0x3B, + 26711 - 19968: jis0212<<14 | 0x22<<7 | 0x3C, + 26712 - 19968: jis0212<<14 | 0x22<<7 | 0x3D, + 26713 - 19968: jis0208<<14 | 0x3A<<7 | 0x41, + 26715 - 19968: jis0212<<14 | 0x22<<7 | 0x3E, + 26716 - 19968: jis0208<<14 | 0x19<<7 | 0x58, + 26717 - 19968: jis0208<<14 | 0x2A<<7 | 0x50, + 26719 - 19968: jis0208<<14 | 0x1A<<7 | 0x16, + 26723 - 19968: jis0208<<14 | 0x3A<<7 | 0x42, + 26727 - 19968: jis0208<<14 | 0x28<<7 | 0x0F, + 26731 - 19968: jis0212<<14 | 0x22<<7 | 0x3F, + 26734 - 19968: jis0212<<14 | 0x22<<7 | 0x40, + 26735 - 19968: jis0212<<14 | 0x22<<7 | 0x41, + 26736 - 19968: jis0212<<14 | 0x22<<7 | 0x42, + 26737 - 19968: jis0212<<14 | 0x22<<7 | 0x43, + 26738 - 19968: jis0212<<14 | 0x22<<7 | 0x44, + 26740 - 19968: jis0208<<14 | 0x3A<<7 | 0x4E, + 26741 - 19968: jis0212<<14 | 0x22<<7 | 0x45, + 26742 - 19968: jis0208<<14 | 0x11<<7 | 0x12, + 26743 - 19968: jis0208<<14 | 0x3A<<7 | 0x43, + 26745 - 19968: jis0212<<14 | 0x22<<7 | 0x46, + 26746 - 19968: jis0212<<14 | 0x22<<7 | 0x47, + 26747 - 19968: jis0212<<14 | 0x22<<7 | 0x48, + 26748 - 19968: jis0212<<14 | 0x22<<7 | 0x49, + 26750 - 19968: jis0208<<14 | 0x3A<<7 | 0x54, + 26751 - 19968: jis0208<<14 | 0x3A<<7 | 0x44, + 26753 - 19968: jis0208<<14 | 0x2D<<7 | 0x21, + 26754 - 19968: jis0212<<14 | 0x22<<7 | 0x4A, + 26755 - 19968: jis0208<<14 | 0x3A<<7 | 0x4B, + 26756 - 19968: jis0212<<14 | 0x22<<7 | 0x4B, + 26757 - 19968: jis0208<<14 | 0x26<<7 | 0x3E, + 26758 - 19968: jis0212<<14 | 0x22<<7 | 0x4C, + 26760 - 19968: jis0212<<14 | 0x22<<7 | 0x4D, + 26765 - 19968: jis0208<<14 | 0x3A<<7 | 0x53, + 26767 - 19968: jis0208<<14 | 0x3A<<7 | 0x46, + 26771 - 19968: jis0208<<14 | 0x0F<<7 | 0x13, + 26772 - 19968: jis0208<<14 | 0x3A<<7 | 0x48, + 26774 - 19968: jis0212<<14 | 0x22<<7 | 0x4E, + 26775 - 19968: jis0208<<14 | 0x18<<7 | 0x1B, + 26776 - 19968: jis0212<<14 | 0x22<<7 | 0x4F, + 26778 - 19968: jis0212<<14 | 0x22<<7 | 0x50, + 26779 - 19968: jis0208<<14 | 0x3A<<7 | 0x4A, + 26780 - 19968: jis0212<<14 | 0x22<<7 | 0x51, + 26781 - 19968: jis0208<<14 | 0x3A<<7 | 0x49, + 26783 - 19968: jis0208<<14 | 0x3A<<7 | 0x45, + 26784 - 19968: jis0208<<14 | 0x3A<<7 | 0x50, + 26785 - 19968: jis0212<<14 | 0x22<<7 | 0x52, + 26786 - 19968: jis0208<<14 | 0x1D<<7 | 0x1E, + 26787 - 19968: jis0212<<14 | 0x22<<7 | 0x53, + 26789 - 19968: jis0212<<14 | 0x22<<7 | 0x54, + 26790 - 19968: jis0208<<14 | 0x33<<7 | 0x4C, + 26791 - 19968: jis0208<<14 | 0x17<<7 | 0x47, + 26792 - 19968: jis0208<<14 | 0x2C<<7 | 0x5B, + 26793 - 19968: jis0212<<14 | 0x22<<7 | 0x55, + 26794 - 19968: jis0212<<14 | 0x22<<7 | 0x56, + 26797 - 19968: jis0208<<14 | 0x3A<<7 | 0x47, + 26798 - 19968: jis0212<<14 | 0x22<<7 | 0x57, + 26799 - 19968: jis0208<<14 | 0x23<<7 | 0x53, + 26800 - 19968: jis0208<<14 | 0x12<<7 | 0x02, + 26801 - 19968: jis0208<<14 | 0x19<<7 | 0x0C, + 26802 - 19968: jis0212<<14 | 0x22<<7 | 0x58, + 26803 - 19968: jis0208<<14 | 0x3A<<7 | 0x3F, + 26805 - 19968: jis0208<<14 | 0x3A<<7 | 0x4F, + 26806 - 19968: jis0208<<14 | 0x12<<7 | 0x40, + 26809 - 19968: jis0208<<14 | 0x3A<<7 | 0x4D, + 26810 - 19968: jis0208<<14 | 0x3A<<7 | 0x51, + 26811 - 19968: jis0212<<14 | 0x22<<7 | 0x59, + 26812 - 19968: jis0208<<14 | 0x24<<7 | 0x4D, + 26820 - 19968: jis0208<<14 | 0x13<<7 | 0x5D, + 26821 - 19968: jis0212<<14 | 0x22<<7 | 0x5A, + 26822 - 19968: jis0208<<14 | 0x3B<<7 | 0x11, + 26824 - 19968: jis0208<<14 | 0x58<<7 | 0x08, + 26825 - 19968: jis0208<<14 | 0x2B<<7 | 0x28, + 26826 - 19968: jis0208<<14 | 0x3A<<7 | 0x56, + 26827 - 19968: jis0208<<14 | 0x13<<7 | 0x5C, + 26828 - 19968: jis0212<<14 | 0x22<<7 | 0x5C, + 26829 - 19968: jis0208<<14 | 0x3A<<7 | 0x5D, + 26831 - 19968: jis0208<<14 | 0x59<<7 | 0x2C, + 26832 - 19968: jis0212<<14 | 0x23<<7 | 0x00, + 26833 - 19968: jis0212<<14 | 0x23<<7 | 0x01, + 26834 - 19968: jis0208<<14 | 0x2A<<7 | 0x1F, + 26835 - 19968: jis0212<<14 | 0x23<<7 | 0x02, + 26836 - 19968: jis0208<<14 | 0x3B<<7 | 0x00, + 26837 - 19968: jis0208<<14 | 0x3B<<7 | 0x02, + 26838 - 19968: jis0212<<14 | 0x23<<7 | 0x03, + 26839 - 19968: jis0208<<14 | 0x3B<<7 | 0x06, + 26840 - 19968: jis0208<<14 | 0x3A<<7 | 0x58, + 26841 - 19968: jis0212<<14 | 0x23<<7 | 0x04, + 26842 - 19968: jis0208<<14 | 0x22<<7 | 0x09, + 26844 - 19968: jis0212<<14 | 0x23<<7 | 0x05, + 26845 - 19968: jis0212<<14 | 0x23<<7 | 0x06, + 26847 - 19968: jis0208<<14 | 0x24<<7 | 0x4E, + 26848 - 19968: jis0208<<14 | 0x3B<<7 | 0x0A, + 26849 - 19968: jis0208<<14 | 0x3A<<7 | 0x5B, + 26851 - 19968: jis0208<<14 | 0x3B<<7 | 0x07, + 26853 - 19968: jis0212<<14 | 0x23<<7 | 0x07, + 26855 - 19968: jis0208<<14 | 0x3B<<7 | 0x01, + 26856 - 19968: jis0212<<14 | 0x23<<7 | 0x08, + 26858 - 19968: jis0212<<14 | 0x23<<7 | 0x09, + 26859 - 19968: jis0212<<14 | 0x23<<7 | 0x0A, + 26860 - 19968: jis0212<<14 | 0x23<<7 | 0x0B, + 26861 - 19968: jis0212<<14 | 0x23<<7 | 0x0C, + 26862 - 19968: jis0208<<14 | 0x1E<<7 | 0x18, + 26863 - 19968: jis0208<<14 | 0x3B<<7 | 0x0B, + 26864 - 19968: jis0212<<14 | 0x23<<7 | 0x0D, + 26865 - 19968: jis0212<<14 | 0x23<<7 | 0x0E, + 26866 - 19968: jis0208<<14 | 0x1F<<7 | 0x12, + 26869 - 19968: jis0212<<14 | 0x23<<7 | 0x0F, + 26870 - 19968: jis0212<<14 | 0x23<<7 | 0x10, + 26873 - 19968: jis0208<<14 | 0x3B<<7 | 0x09, + 26874 - 19968: jis0208<<14 | 0x13<<7 | 0x1C, + 26875 - 19968: jis0212<<14 | 0x23<<7 | 0x11, + 26876 - 19968: jis0212<<14 | 0x23<<7 | 0x12, + 26877 - 19968: jis0212<<14 | 0x23<<7 | 0x13, + 26880 - 19968: jis0208<<14 | 0x2E<<7 | 0x2F, + 26881 - 19968: jis0208<<14 | 0x3A<<7 | 0x55, + 26884 - 19968: jis0208<<14 | 0x3B<<7 | 0x05, + 26885 - 19968: jis0208<<14 | 0x0F<<7 | 0x37, + 26886 - 19968: jis0212<<14 | 0x23<<7 | 0x14, + 26888 - 19968: jis0208<<14 | 0x3A<<7 | 0x57, + 26889 - 19968: jis0212<<14 | 0x23<<7 | 0x15, + 26890 - 19968: jis0212<<14 | 0x23<<7 | 0x16, + 26891 - 19968: jis0208<<14 | 0x2B<<7 | 0x19, + 26892 - 19968: jis0208<<14 | 0x3A<<7 | 0x5C, + 26893 - 19968: jis0208<<14 | 0x1E<<7 | 0x01, + 26894 - 19968: jis0208<<14 | 0x23<<7 | 0x26, + 26895 - 19968: jis0208<<14 | 0x3A<<7 | 0x52, + 26896 - 19968: jis0212<<14 | 0x23<<7 | 0x17, + 26897 - 19968: jis0212<<14 | 0x23<<7 | 0x18, + 26898 - 19968: jis0208<<14 | 0x3B<<7 | 0x04, + 26899 - 19968: jis0212<<14 | 0x23<<7 | 0x19, + 26902 - 19968: jis0212<<14 | 0x23<<7 | 0x1A, + 26903 - 19968: jis0212<<14 | 0x23<<7 | 0x1B, + 26905 - 19968: jis0208<<14 | 0x1E<<7 | 0x59, + 26906 - 19968: jis0208<<14 | 0x3B<<7 | 0x0E, + 26907 - 19968: jis0208<<14 | 0x12<<7 | 0x50, + 26908 - 19968: jis0208<<14 | 0x17<<7 | 0x00, + 26913 - 19968: jis0208<<14 | 0x3B<<7 | 0x10, + 26914 - 19968: jis0208<<14 | 0x3A<<7 | 0x59, + 26915 - 19968: jis0208<<14 | 0x3B<<7 | 0x0F, + 26917 - 19968: jis0208<<14 | 0x3B<<7 | 0x08, + 26918 - 19968: jis0208<<14 | 0x3A<<7 | 0x5A, + 26920 - 19968: jis0208<<14 | 0x3B<<7 | 0x0C, + 26922 - 19968: jis0208<<14 | 0x3B<<7 | 0x0D, + 26928 - 19968: jis0208<<14 | 0x3B<<7 | 0x1E, + 26929 - 19968: jis0212<<14 | 0x23<<7 | 0x1C, + 26931 - 19968: jis0212<<14 | 0x23<<7 | 0x1D, + 26932 - 19968: jis0208<<14 | 0x25<<7 | 0x2D, + 26933 - 19968: jis0212<<14 | 0x23<<7 | 0x1E, + 26934 - 19968: jis0208<<14 | 0x3B<<7 | 0x03, + 26936 - 19968: jis0212<<14 | 0x23<<7 | 0x1F, + 26937 - 19968: jis0208<<14 | 0x3B<<7 | 0x1A, + 26939 - 19968: jis0212<<14 | 0x23<<7 | 0x20, + 26941 - 19968: jis0208<<14 | 0x3B<<7 | 0x1C, + 26943 - 19968: jis0208<<14 | 0x23<<7 | 0x37, + 26946 - 19968: jis0212<<14 | 0x23<<7 | 0x21, + 26949 - 19968: jis0212<<14 | 0x23<<7 | 0x22, + 26953 - 19968: jis0212<<14 | 0x23<<7 | 0x23, + 26954 - 19968: jis0208<<14 | 0x2C<<7 | 0x2B, + 26958 - 19968: jis0212<<14 | 0x23<<7 | 0x24, + 26963 - 19968: jis0208<<14 | 0x28<<7 | 0x55, + 26964 - 19968: jis0208<<14 | 0x3B<<7 | 0x17, + 26965 - 19968: jis0208<<14 | 0x21<<7 | 0x29, + 26967 - 19968: jis0212<<14 | 0x23<<7 | 0x25, + 26969 - 19968: jis0208<<14 | 0x3B<<7 | 0x1D, + 26970 - 19968: jis0208<<14 | 0x20<<7 | 0x1E, + 26971 - 19968: jis0212<<14 | 0x23<<7 | 0x26, + 26972 - 19968: jis0208<<14 | 0x3B<<7 | 0x14, + 26973 - 19968: jis0208<<14 | 0x3B<<7 | 0x21, + 26974 - 19968: jis0208<<14 | 0x3B<<7 | 0x20, + 26976 - 19968: jis0208<<14 | 0x25<<7 | 0x4E, + 26977 - 19968: jis0208<<14 | 0x3B<<7 | 0x1F, + 26978 - 19968: jis0208<<14 | 0x25<<7 | 0x49, + 26979 - 19968: jis0212<<14 | 0x23<<7 | 0x27, + 26980 - 19968: jis0212<<14 | 0x23<<7 | 0x28, + 26981 - 19968: jis0212<<14 | 0x23<<7 | 0x29, + 26982 - 19968: jis0212<<14 | 0x23<<7 | 0x2A, + 26984 - 19968: jis0208<<14 | 0x59<<7 | 0x2E, + 26985 - 19968: jis0212<<14 | 0x23<<7 | 0x2C, + 26986 - 19968: jis0208<<14 | 0x3B<<7 | 0x23, + 26987 - 19968: jis0208<<14 | 0x3B<<7 | 0x16, + 26988 - 19968: jis0212<<14 | 0x23<<7 | 0x2D, + 26989 - 19968: jis0208<<14 | 0x15<<7 | 0x27, + 26990 - 19968: jis0208<<14 | 0x3B<<7 | 0x19, + 26991 - 19968: jis0208<<14 | 0x1C<<7 | 0x3C, + 26992 - 19968: jis0212<<14 | 0x23<<7 | 0x2E, + 26993 - 19968: jis0212<<14 | 0x23<<7 | 0x2F, + 26994 - 19968: jis0212<<14 | 0x23<<7 | 0x30, + 26995 - 19968: jis0208<<14 | 0x26<<7 | 0x3F, + 26996 - 19968: jis0208<<14 | 0x3B<<7 | 0x1B, + 26997 - 19968: jis0208<<14 | 0x15<<7 | 0x2A, + 26999 - 19968: jis0208<<14 | 0x3B<<7 | 0x13, + 27000 - 19968: jis0208<<14 | 0x3B<<7 | 0x15, + 27001 - 19968: jis0208<<14 | 0x3B<<7 | 0x12, + 27002 - 19968: jis0212<<14 | 0x23<<7 | 0x31, + 27003 - 19968: jis0212<<14 | 0x23<<7 | 0x32, + 27004 - 19968: jis0208<<14 | 0x2E<<7 | 0x0F, + 27005 - 19968: jis0208<<14 | 0x12<<7 | 0x39, + 27006 - 19968: jis0208<<14 | 0x3B<<7 | 0x18, + 27007 - 19968: jis0212<<14 | 0x23<<7 | 0x33, + 27008 - 19968: jis0212<<14 | 0x23<<7 | 0x34, + 27009 - 19968: jis0208<<14 | 0x3B<<7 | 0x22, + 27010 - 19968: jis0208<<14 | 0x12<<7 | 0x14, + 27018 - 19968: jis0208<<14 | 0x19<<7 | 0x46, + 27021 - 19968: jis0212<<14 | 0x23<<7 | 0x35, + 27022 - 19968: jis0208<<14 | 0x10<<7 | 0x3C, + 27025 - 19968: jis0208<<14 | 0x3B<<7 | 0x33, + 27026 - 19968: jis0212<<14 | 0x23<<7 | 0x36, + 27028 - 19968: jis0208<<14 | 0x2E<<7 | 0x10, + 27029 - 19968: jis0208<<14 | 0x3B<<7 | 0x36, + 27030 - 19968: jis0212<<14 | 0x23<<7 | 0x37, + 27032 - 19968: jis0208<<14 | 0x59<<7 | 0x30, + 27035 - 19968: jis0208<<14 | 0x1E<<7 | 0x19, + 27036 - 19968: jis0208<<14 | 0x3B<<7 | 0x35, + 27040 - 19968: jis0208<<14 | 0x3B<<7 | 0x34, + 27041 - 19968: jis0212<<14 | 0x23<<7 | 0x39, + 27045 - 19968: jis0212<<14 | 0x23<<7 | 0x3A, + 27046 - 19968: jis0212<<14 | 0x23<<7 | 0x3B, + 27047 - 19968: jis0208<<14 | 0x3B<<7 | 0x31, + 27048 - 19968: jis0212<<14 | 0x23<<7 | 0x3C, + 27051 - 19968: jis0212<<14 | 0x23<<7 | 0x3D, + 27053 - 19968: jis0212<<14 | 0x23<<7 | 0x3E, + 27054 - 19968: jis0208<<14 | 0x3B<<7 | 0x25, + 27055 - 19968: jis0212<<14 | 0x23<<7 | 0x3F, + 27057 - 19968: jis0208<<14 | 0x3B<<7 | 0x42, + 27058 - 19968: jis0208<<14 | 0x3B<<7 | 0x24, + 27060 - 19968: jis0208<<14 | 0x3B<<7 | 0x37, + 27063 - 19968: jis0212<<14 | 0x23<<7 | 0x40, + 27064 - 19968: jis0212<<14 | 0x23<<7 | 0x41, + 27066 - 19968: jis0212<<14 | 0x23<<7 | 0x42, + 27067 - 19968: jis0208<<14 | 0x3B<<7 | 0x2F, + 27068 - 19968: jis0212<<14 | 0x23<<7 | 0x43, + 27070 - 19968: jis0208<<14 | 0x3B<<7 | 0x2A, + 27071 - 19968: jis0208<<14 | 0x3B<<7 | 0x27, + 27073 - 19968: jis0208<<14 | 0x3B<<7 | 0x28, + 27075 - 19968: jis0208<<14 | 0x3B<<7 | 0x30, + 27077 - 19968: jis0212<<14 | 0x23<<7 | 0x44, + 27079 - 19968: jis0208<<14 | 0x53<<7 | 0x01, + 27080 - 19968: jis0212<<14 | 0x23<<7 | 0x45, + 27082 - 19968: jis0208<<14 | 0x3B<<7 | 0x2D, + 27083 - 19968: jis0208<<14 | 0x18<<7 | 0x1C, + 27084 - 19968: jis0208<<14 | 0x23<<7 | 0x27, + 27085 - 19968: jis0208<<14 | 0x20<<7 | 0x43, + 27086 - 19968: jis0208<<14 | 0x3B<<7 | 0x2B, + 27088 - 19968: jis0208<<14 | 0x3B<<7 | 0x26, + 27089 - 19968: jis0212<<14 | 0x23<<7 | 0x46, + 27091 - 19968: jis0208<<14 | 0x3B<<7 | 0x29, + 27094 - 19968: jis0212<<14 | 0x23<<7 | 0x47, + 27095 - 19968: jis0212<<14 | 0x23<<7 | 0x48, + 27096 - 19968: jis0208<<14 | 0x2C<<7 | 0x2C, + 27097 - 19968: jis0208<<14 | 0x2A<<7 | 0x49, + 27101 - 19968: jis0208<<14 | 0x3B<<7 | 0x2E, + 27102 - 19968: jis0208<<14 | 0x3B<<7 | 0x38, + 27106 - 19968: jis0208<<14 | 0x59<<7 | 0x31, + 27109 - 19968: jis0212<<14 | 0x23<<7 | 0x4A, + 27111 - 19968: jis0208<<14 | 0x3B<<7 | 0x40, + 27112 - 19968: jis0208<<14 | 0x3B<<7 | 0x39, + 27115 - 19968: jis0208<<14 | 0x3B<<7 | 0x46, + 27117 - 19968: jis0208<<14 | 0x3B<<7 | 0x44, + 27118 - 19968: jis0212<<14 | 0x23<<7 | 0x4B, + 27119 - 19968: jis0212<<14 | 0x23<<7 | 0x4C, + 27121 - 19968: jis0212<<14 | 0x23<<7 | 0x4D, + 27122 - 19968: jis0208<<14 | 0x3B<<7 | 0x3F, + 27123 - 19968: jis0212<<14 | 0x23<<7 | 0x4E, + 27125 - 19968: jis0212<<14 | 0x23<<7 | 0x4F, + 27129 - 19968: jis0208<<14 | 0x3B<<7 | 0x3E, + 27131 - 19968: jis0208<<14 | 0x23<<7 | 0x2F, + 27133 - 19968: jis0208<<14 | 0x20<<7 | 0x44, + 27134 - 19968: jis0212<<14 | 0x23<<7 | 0x50, + 27135 - 19968: jis0208<<14 | 0x3B<<7 | 0x3C, + 27136 - 19968: jis0212<<14 | 0x23<<7 | 0x51, + 27137 - 19968: jis0212<<14 | 0x23<<7 | 0x52, + 27138 - 19968: jis0208<<14 | 0x3B<<7 | 0x3A, + 27139 - 19968: jis0212<<14 | 0x23<<7 | 0x53, + 27141 - 19968: jis0208<<14 | 0x3B<<7 | 0x41, + 27146 - 19968: jis0208<<14 | 0x3B<<7 | 0x47, + 27147 - 19968: jis0208<<14 | 0x27<<7 | 0x54, + 27148 - 19968: jis0208<<14 | 0x3B<<7 | 0x4D, + 27151 - 19968: jis0212<<14 | 0x23<<7 | 0x54, + 27153 - 19968: jis0212<<14 | 0x23<<7 | 0x55, + 27154 - 19968: jis0208<<14 | 0x3B<<7 | 0x48, + 27155 - 19968: jis0208<<14 | 0x3B<<7 | 0x4B, + 27156 - 19968: jis0208<<14 | 0x3B<<7 | 0x45, + 27157 - 19968: jis0212<<14 | 0x23<<7 | 0x56, + 27159 - 19968: jis0208<<14 | 0x22<<7 | 0x53, + 27161 - 19968: jis0208<<14 | 0x28<<7 | 0x17, + 27162 - 19968: jis0212<<14 | 0x23<<7 | 0x57, + 27163 - 19968: jis0208<<14 | 0x3B<<7 | 0x3B, + 27165 - 19968: jis0212<<14 | 0x23<<7 | 0x58, + 27166 - 19968: jis0208<<14 | 0x3B<<7 | 0x43, + 27167 - 19968: jis0208<<14 | 0x1D<<7 | 0x1F, + 27168 - 19968: jis0212<<14 | 0x23<<7 | 0x59, + 27169 - 19968: jis0208<<14 | 0x2B<<7 | 0x2E, + 27170 - 19968: jis0208<<14 | 0x3B<<7 | 0x57, + 27171 - 19968: jis0208<<14 | 0x3B<<7 | 0x4A, + 27172 - 19968: jis0212<<14 | 0x23<<7 | 0x5A, + 27176 - 19968: jis0212<<14 | 0x23<<7 | 0x5B, + 27177 - 19968: jis0208<<14 | 0x17<<7 | 0x01, + 27178 - 19968: jis0208<<14 | 0x11<<7 | 0x02, + 27179 - 19968: jis0208<<14 | 0x12<<7 | 0x3E, + 27182 - 19968: jis0208<<14 | 0x3B<<7 | 0x32, + 27184 - 19968: jis0208<<14 | 0x59<<7 | 0x32, + 27186 - 19968: jis0212<<14 | 0x23<<7 | 0x5D, + 27188 - 19968: jis0212<<14 | 0x24<<7 | 0x00, + 27189 - 19968: jis0208<<14 | 0x1D<<7 | 0x20, + 27190 - 19968: jis0208<<14 | 0x3B<<7 | 0x4F, + 27191 - 19968: jis0212<<14 | 0x24<<7 | 0x01, + 27192 - 19968: jis0208<<14 | 0x3B<<7 | 0x56, + 27193 - 19968: jis0208<<14 | 0x1B<<7 | 0x58, + 27194 - 19968: jis0208<<14 | 0x12<<7 | 0x51, + 27195 - 19968: jis0212<<14 | 0x24<<7 | 0x02, + 27197 - 19968: jis0208<<14 | 0x22<<7 | 0x0D, + 27198 - 19968: jis0212<<14 | 0x24<<7 | 0x03, + 27199 - 19968: jis0212<<14 | 0x24<<7 | 0x04, + 27204 - 19968: jis0208<<14 | 0x3B<<7 | 0x4C, + 27205 - 19968: jis0212<<14 | 0x24<<7 | 0x05, + 27206 - 19968: jis0208<<14 | 0x59<<7 | 0x34, + 27207 - 19968: jis0208<<14 | 0x3B<<7 | 0x51, + 27208 - 19968: jis0208<<14 | 0x3B<<7 | 0x55, + 27209 - 19968: jis0212<<14 | 0x24<<7 | 0x07, + 27210 - 19968: jis0212<<14 | 0x24<<7 | 0x08, + 27211 - 19968: jis0208<<14 | 0x15<<7 | 0x15, + 27214 - 19968: jis0212<<14 | 0x24<<7 | 0x09, + 27216 - 19968: jis0212<<14 | 0x24<<7 | 0x0A, + 27217 - 19968: jis0212<<14 | 0x24<<7 | 0x0B, + 27218 - 19968: jis0212<<14 | 0x24<<7 | 0x0C, + 27221 - 19968: jis0212<<14 | 0x24<<7 | 0x0D, + 27222 - 19968: jis0212<<14 | 0x24<<7 | 0x0E, + 27224 - 19968: jis0208<<14 | 0x14<<7 | 0x2B, + 27225 - 19968: jis0208<<14 | 0x3B<<7 | 0x53, + 27227 - 19968: jis0212<<14 | 0x24<<7 | 0x0F, + 27231 - 19968: jis0208<<14 | 0x14<<7 | 0x00, + 27233 - 19968: jis0208<<14 | 0x25<<7 | 0x2A, + 27234 - 19968: jis0208<<14 | 0x3B<<7 | 0x52, + 27236 - 19968: jis0212<<14 | 0x24<<7 | 0x10, + 27238 - 19968: jis0208<<14 | 0x3B<<7 | 0x54, + 27239 - 19968: jis0212<<14 | 0x24<<7 | 0x11, + 27242 - 19968: jis0212<<14 | 0x24<<7 | 0x12, + 27243 - 19968: jis0208<<14 | 0x59<<7 | 0x33, + 27249 - 19968: jis0212<<14 | 0x24<<7 | 0x13, + 27250 - 19968: jis0208<<14 | 0x3B<<7 | 0x4E, + 27251 - 19968: jis0208<<14 | 0x59<<7 | 0x35, + 27256 - 19968: jis0208<<14 | 0x3B<<7 | 0x50, + 27262 - 19968: jis0208<<14 | 0x59<<7 | 0x36, + 27263 - 19968: jis0208<<14 | 0x12<<7 | 0x3F, + 27264 - 19968: jis0208<<14 | 0x22<<7 | 0x28, + 27265 - 19968: jis0212<<14 | 0x24<<7 | 0x16, + 27267 - 19968: jis0212<<14 | 0x24<<7 | 0x17, + 27268 - 19968: jis0208<<14 | 0x3B<<7 | 0x5B, + 27270 - 19968: jis0212<<14 | 0x24<<7 | 0x18, + 27271 - 19968: jis0212<<14 | 0x24<<7 | 0x19, + 27273 - 19968: jis0212<<14 | 0x24<<7 | 0x1A, + 27275 - 19968: jis0212<<14 | 0x24<<7 | 0x1B, + 27277 - 19968: jis0208<<14 | 0x3B<<7 | 0x59, + 27278 - 19968: jis0208<<14 | 0x17<<7 | 0x48, + 27280 - 19968: jis0208<<14 | 0x3B<<7 | 0x58, + 27281 - 19968: jis0212<<14 | 0x24<<7 | 0x1C, + 27287 - 19968: jis0208<<14 | 0x3C<<7 | 0x00, + 27291 - 19968: jis0212<<14 | 0x24<<7 | 0x1D, + 27292 - 19968: jis0208<<14 | 0x3A<<7 | 0x37, + 27293 - 19968: jis0212<<14 | 0x24<<7 | 0x1E, + 27294 - 19968: jis0212<<14 | 0x24<<7 | 0x1F, + 27295 - 19968: jis0212<<14 | 0x24<<7 | 0x20, + 27296 - 19968: jis0208<<14 | 0x3B<<7 | 0x5A, + 27298 - 19968: jis0208<<14 | 0x3B<<7 | 0x5C, + 27299 - 19968: jis0208<<14 | 0x3B<<7 | 0x5D, + 27301 - 19968: jis0212<<14 | 0x24<<7 | 0x21, + 27306 - 19968: jis0208<<14 | 0x3C<<7 | 0x0B, + 27307 - 19968: jis0212<<14 | 0x24<<7 | 0x22, + 27308 - 19968: jis0208<<14 | 0x3C<<7 | 0x07, + 27310 - 19968: jis0208<<14 | 0x3A<<7 | 0x4C, + 27311 - 19968: jis0212<<14 | 0x24<<7 | 0x23, + 27312 - 19968: jis0212<<14 | 0x24<<7 | 0x24, + 27313 - 19968: jis0212<<14 | 0x24<<7 | 0x25, + 27315 - 19968: jis0208<<14 | 0x3C<<7 | 0x06, + 27316 - 19968: jis0212<<14 | 0x24<<7 | 0x26, + 27320 - 19968: jis0208<<14 | 0x3C<<7 | 0x05, + 27323 - 19968: jis0208<<14 | 0x3C<<7 | 0x02, + 27325 - 19968: jis0212<<14 | 0x24<<7 | 0x27, + 27326 - 19968: jis0212<<14 | 0x24<<7 | 0x28, + 27327 - 19968: jis0212<<14 | 0x24<<7 | 0x29, + 27329 - 19968: jis0208<<14 | 0x3B<<7 | 0x49, + 27330 - 19968: jis0208<<14 | 0x3C<<7 | 0x04, + 27331 - 19968: jis0208<<14 | 0x3C<<7 | 0x03, + 27334 - 19968: jis0212<<14 | 0x24<<7 | 0x2A, + 27336 - 19968: jis0212<<14 | 0x24<<7 | 0x2C, + 27337 - 19968: jis0212<<14 | 0x24<<7 | 0x2B, + 27340 - 19968: jis0212<<14 | 0x24<<7 | 0x2D, + 27344 - 19968: jis0212<<14 | 0x24<<7 | 0x2E, + 27345 - 19968: jis0208<<14 | 0x3C<<7 | 0x09, + 27347 - 19968: jis0208<<14 | 0x2E<<7 | 0x05, + 27348 - 19968: jis0212<<14 | 0x24<<7 | 0x2F, + 27349 - 19968: jis0212<<14 | 0x24<<7 | 0x30, + 27350 - 19968: jis0212<<14 | 0x24<<7 | 0x31, + 27354 - 19968: jis0208<<14 | 0x3C<<7 | 0x0C, + 27355 - 19968: jis0208<<14 | 0x15<<7 | 0x5A, + 27356 - 19968: jis0212<<14 | 0x24<<7 | 0x32, + 27357 - 19968: jis0212<<14 | 0x24<<7 | 0x33, + 27358 - 19968: jis0208<<14 | 0x3C<<7 | 0x08, + 27359 - 19968: jis0208<<14 | 0x3C<<7 | 0x0A, + 27362 - 19968: jis0208<<14 | 0x59<<7 | 0x37, + 27364 - 19968: jis0208<<14 | 0x59<<7 | 0x38, + 27367 - 19968: jis0212<<14 | 0x24<<7 | 0x35, + 27368 - 19968: jis0208<<14 | 0x27<<7 | 0x06, + 27370 - 19968: jis0208<<14 | 0x3C<<7 | 0x0D, + 27372 - 19968: jis0212<<14 | 0x24<<7 | 0x36, + 27376 - 19968: jis0212<<14 | 0x24<<7 | 0x37, + 27377 - 19968: jis0212<<14 | 0x24<<7 | 0x38, + 27378 - 19968: jis0212<<14 | 0x24<<7 | 0x39, + 27386 - 19968: jis0208<<14 | 0x3C<<7 | 0x11, + 27387 - 19968: jis0208<<14 | 0x3C<<7 | 0x0E, + 27388 - 19968: jis0212<<14 | 0x24<<7 | 0x3A, + 27389 - 19968: jis0212<<14 | 0x24<<7 | 0x3B, + 27394 - 19968: jis0212<<14 | 0x24<<7 | 0x3C, + 27395 - 19968: jis0212<<14 | 0x24<<7 | 0x3D, + 27396 - 19968: jis0208<<14 | 0x2C<<7 | 0x52, + 27397 - 19968: jis0208<<14 | 0x3C<<7 | 0x0F, + 27398 - 19968: jis0212<<14 | 0x24<<7 | 0x3E, + 27399 - 19968: jis0212<<14 | 0x24<<7 | 0x3F, + 27401 - 19968: jis0212<<14 | 0x24<<7 | 0x40, + 27402 - 19968: jis0208<<14 | 0x3B<<7 | 0x3D, + 27407 - 19968: jis0212<<14 | 0x24<<7 | 0x41, + 27408 - 19968: jis0212<<14 | 0x24<<7 | 0x42, + 27409 - 19968: jis0212<<14 | 0x24<<7 | 0x43, + 27410 - 19968: jis0208<<14 | 0x3C<<7 | 0x12, + 27414 - 19968: jis0208<<14 | 0x3C<<7 | 0x13, + 27415 - 19968: jis0212<<14 | 0x24<<7 | 0x44, + 27419 - 19968: jis0212<<14 | 0x24<<7 | 0x45, + 27421 - 19968: jis0208<<14 | 0x10<<7 | 0x14, + 27422 - 19968: jis0212<<14 | 0x24<<7 | 0x46, + 27423 - 19968: jis0208<<14 | 0x3C<<7 | 0x15, + 27424 - 19968: jis0208<<14 | 0x16<<7 | 0x46, + 27425 - 19968: jis0208<<14 | 0x1B<<7 | 0x00, + 27427 - 19968: jis0208<<14 | 0x15<<7 | 0x34, + 27428 - 19968: jis0212<<14 | 0x24<<7 | 0x47, + 27431 - 19968: jis0208<<14 | 0x11<<7 | 0x03, + 27432 - 19968: jis0212<<14 | 0x24<<7 | 0x48, + 27435 - 19968: jis0212<<14 | 0x24<<7 | 0x49, + 27436 - 19968: jis0212<<14 | 0x24<<7 | 0x4A, + 27439 - 19968: jis0212<<14 | 0x24<<7 | 0x4B, + 27442 - 19968: jis0208<<14 | 0x2C<<7 | 0x3E, + 27445 - 19968: jis0212<<14 | 0x24<<7 | 0x4C, + 27446 - 19968: jis0212<<14 | 0x24<<7 | 0x4D, + 27447 - 19968: jis0208<<14 | 0x3C<<7 | 0x17, + 27448 - 19968: jis0208<<14 | 0x3C<<7 | 0x16, + 27449 - 19968: jis0208<<14 | 0x3C<<7 | 0x19, + 27450 - 19968: jis0208<<14 | 0x14<<7 | 0x1C, + 27451 - 19968: jis0212<<14 | 0x24<<7 | 0x4E, + 27453 - 19968: jis0208<<14 | 0x15<<7 | 0x35, + 27454 - 19968: jis0208<<14 | 0x13<<7 | 0x1D, + 27455 - 19968: jis0212<<14 | 0x24<<7 | 0x4F, + 27459 - 19968: jis0208<<14 | 0x3C<<7 | 0x1C, + 27462 - 19968: jis0212<<14 | 0x24<<7 | 0x50, + 27463 - 19968: jis0208<<14 | 0x3C<<7 | 0x1B, + 27465 - 19968: jis0208<<14 | 0x3C<<7 | 0x1D, + 27466 - 19968: jis0212<<14 | 0x24<<7 | 0x51, + 27468 - 19968: jis0208<<14 | 0x11<<7 | 0x2D, + 27469 - 19968: jis0212<<14 | 0x24<<7 | 0x52, + 27470 - 19968: jis0208<<14 | 0x22<<7 | 0x16, + 27472 - 19968: jis0208<<14 | 0x3C<<7 | 0x1E, + 27474 - 19968: jis0212<<14 | 0x24<<7 | 0x53, + 27475 - 19968: jis0208<<14 | 0x13<<7 | 0x1E, + 27476 - 19968: jis0208<<14 | 0x3C<<7 | 0x20, + 27478 - 19968: jis0212<<14 | 0x24<<7 | 0x54, + 27480 - 19968: jis0212<<14 | 0x24<<7 | 0x55, + 27481 - 19968: jis0208<<14 | 0x3C<<7 | 0x1F, + 27483 - 19968: jis0208<<14 | 0x3C<<7 | 0x21, + 27485 - 19968: jis0212<<14 | 0x24<<7 | 0x56, + 27487 - 19968: jis0208<<14 | 0x3C<<7 | 0x22, + 27488 - 19968: jis0212<<14 | 0x24<<7 | 0x57, + 27489 - 19968: jis0208<<14 | 0x3C<<7 | 0x23, + 27490 - 19968: jis0208<<14 | 0x1A<<7 | 0x3E, + 27491 - 19968: jis0208<<14 | 0x1F<<7 | 0x14, + 27492 - 19968: jis0208<<14 | 0x19<<7 | 0x00, + 27494 - 19968: jis0208<<14 | 0x28<<7 | 0x4F, + 27495 - 19968: jis0212<<14 | 0x24<<7 | 0x58, + 27497 - 19968: jis0208<<14 | 0x29<<7 | 0x41, + 27498 - 19968: jis0208<<14 | 0x2E<<7 | 0x23, + 27499 - 19968: jis0212<<14 | 0x24<<7 | 0x59, + 27502 - 19968: jis0212<<14 | 0x24<<7 | 0x5A, + 27503 - 19968: jis0208<<14 | 0x1A<<7 | 0x54, + 27504 - 19968: jis0212<<14 | 0x24<<7 | 0x5B, + 27507 - 19968: jis0208<<14 | 0x19<<7 | 0x2F, + 27508 - 19968: jis0208<<14 | 0x2D<<7 | 0x51, + 27509 - 19968: jis0212<<14 | 0x24<<7 | 0x5C, + 27512 - 19968: jis0208<<14 | 0x3C<<7 | 0x24, + 27513 - 19968: jis0208<<14 | 0x3C<<7 | 0x25, + 27515 - 19968: jis0208<<14 | 0x1A<<7 | 0x3F, + 27517 - 19968: jis0212<<14 | 0x24<<7 | 0x5D, + 27518 - 19968: jis0212<<14 | 0x25<<7 | 0x00, + 27519 - 19968: jis0208<<14 | 0x3C<<7 | 0x26, + 27520 - 19968: jis0208<<14 | 0x3C<<7 | 0x27, + 27522 - 19968: jis0212<<14 | 0x25<<7 | 0x01, + 27523 - 19968: jis0208<<14 | 0x3C<<7 | 0x29, + 27524 - 19968: jis0208<<14 | 0x3C<<7 | 0x28, + 27525 - 19968: jis0212<<14 | 0x25<<7 | 0x02, + 27526 - 19968: jis0208<<14 | 0x2A<<7 | 0x37, + 27529 - 19968: jis0208<<14 | 0x1C<<7 | 0x3D, + 27530 - 19968: jis0208<<14 | 0x1B<<7 | 0x4B, + 27531 - 19968: jis0208<<14 | 0x1A<<7 | 0x23, + 27533 - 19968: jis0208<<14 | 0x3C<<7 | 0x2A, + 27541 - 19968: jis0208<<14 | 0x3C<<7 | 0x2C, + 27542 - 19968: jis0208<<14 | 0x1E<<7 | 0x02, + 27543 - 19968: jis0212<<14 | 0x25<<7 | 0x03, + 27544 - 19968: jis0208<<14 | 0x3C<<7 | 0x2B, + 27547 - 19968: jis0212<<14 | 0x25<<7 | 0x04, + 27550 - 19968: jis0208<<14 | 0x3C<<7 | 0x2D, + 27551 - 19968: jis0212<<14 | 0x25<<7 | 0x05, + 27552 - 19968: jis0212<<14 | 0x25<<7 | 0x06, + 27554 - 19968: jis0212<<14 | 0x25<<7 | 0x07, + 27555 - 19968: jis0212<<14 | 0x25<<7 | 0x08, + 27556 - 19968: jis0208<<14 | 0x3C<<7 | 0x2E, + 27560 - 19968: jis0212<<14 | 0x25<<7 | 0x09, + 27561 - 19968: jis0212<<14 | 0x25<<7 | 0x0A, + 27562 - 19968: jis0208<<14 | 0x3C<<7 | 0x2F, + 27563 - 19968: jis0208<<14 | 0x3C<<7 | 0x30, + 27564 - 19968: jis0212<<14 | 0x25<<7 | 0x0B, + 27565 - 19968: jis0212<<14 | 0x25<<7 | 0x0C, + 27566 - 19968: jis0212<<14 | 0x25<<7 | 0x0D, + 27567 - 19968: jis0208<<14 | 0x3C<<7 | 0x31, + 27568 - 19968: jis0212<<14 | 0x25<<7 | 0x0E, + 27569 - 19968: jis0208<<14 | 0x3C<<7 | 0x33, + 27570 - 19968: jis0208<<14 | 0x3C<<7 | 0x32, + 27571 - 19968: jis0208<<14 | 0x3C<<7 | 0x34, + 27572 - 19968: jis0208<<14 | 0x11<<7 | 0x04, + 27573 - 19968: jis0208<<14 | 0x22<<7 | 0x29, + 27575 - 19968: jis0208<<14 | 0x3C<<7 | 0x35, + 27576 - 19968: jis0212<<14 | 0x25<<7 | 0x0F, + 27577 - 19968: jis0212<<14 | 0x25<<7 | 0x10, + 27578 - 19968: jis0208<<14 | 0x1A<<7 | 0x05, + 27579 - 19968: jis0208<<14 | 0x12<<7 | 0x2B, + 27580 - 19968: jis0208<<14 | 0x3C<<7 | 0x36, + 27581 - 19968: jis0212<<14 | 0x25<<7 | 0x11, + 27582 - 19968: jis0212<<14 | 0x25<<7 | 0x12, + 27583 - 19968: jis0208<<14 | 0x24<<7 | 0x21, + 27584 - 19968: jis0208<<14 | 0x33<<7 | 0x2B, + 27587 - 19968: jis0212<<14 | 0x25<<7 | 0x13, + 27588 - 19968: jis0212<<14 | 0x25<<7 | 0x14, + 27589 - 19968: jis0208<<14 | 0x14<<7 | 0x02, + 27590 - 19968: jis0208<<14 | 0x3C<<7 | 0x37, + 27593 - 19968: jis0212<<14 | 0x25<<7 | 0x15, + 27595 - 19968: jis0208<<14 | 0x3C<<7 | 0x38, + 27596 - 19968: jis0212<<14 | 0x25<<7 | 0x16, + 27597 - 19968: jis0208<<14 | 0x29<<7 | 0x4B, + 27598 - 19968: jis0208<<14 | 0x2A<<7 | 0x47, + 27602 - 19968: jis0208<<14 | 0x25<<7 | 0x26, + 27603 - 19968: jis0208<<14 | 0x3C<<7 | 0x39, + 27604 - 19968: jis0208<<14 | 0x27<<7 | 0x45, + 27606 - 19968: jis0208<<14 | 0x59<<7 | 0x39, + 27608 - 19968: jis0208<<14 | 0x27<<7 | 0x5A, + 27610 - 19968: jis0212<<14 | 0x25<<7 | 0x18, + 27611 - 19968: jis0208<<14 | 0x2B<<7 | 0x32, + 27615 - 19968: jis0208<<14 | 0x3C<<7 | 0x3A, + 27617 - 19968: jis0212<<14 | 0x25<<7 | 0x19, + 27619 - 19968: jis0212<<14 | 0x25<<7 | 0x1A, + 27622 - 19968: jis0212<<14 | 0x25<<7 | 0x1B, + 27623 - 19968: jis0212<<14 | 0x25<<7 | 0x1C, + 27627 - 19968: jis0208<<14 | 0x3C<<7 | 0x3C, + 27628 - 19968: jis0208<<14 | 0x3C<<7 | 0x3B, + 27630 - 19968: jis0212<<14 | 0x25<<7 | 0x1D, + 27631 - 19968: jis0208<<14 | 0x3C<<7 | 0x3E, + 27633 - 19968: jis0212<<14 | 0x25<<7 | 0x1E, + 27635 - 19968: jis0208<<14 | 0x3C<<7 | 0x3D, + 27639 - 19968: jis0212<<14 | 0x25<<7 | 0x1F, + 27641 - 19968: jis0212<<14 | 0x25<<7 | 0x20, + 27647 - 19968: jis0212<<14 | 0x25<<7 | 0x21, + 27650 - 19968: jis0212<<14 | 0x25<<7 | 0x22, + 27652 - 19968: jis0212<<14 | 0x25<<7 | 0x23, + 27653 - 19968: jis0212<<14 | 0x25<<7 | 0x24, + 27656 - 19968: jis0208<<14 | 0x3C<<7 | 0x40, + 27657 - 19968: jis0212<<14 | 0x25<<7 | 0x25, + 27661 - 19968: jis0212<<14 | 0x25<<7 | 0x26, + 27662 - 19968: jis0212<<14 | 0x25<<7 | 0x27, + 27663 - 19968: jis0208<<14 | 0x1A<<7 | 0x40, + 27664 - 19968: jis0212<<14 | 0x25<<7 | 0x28, + 27665 - 19968: jis0208<<14 | 0x2B<<7 | 0x10, + 27666 - 19968: jis0212<<14 | 0x25<<7 | 0x29, + 27667 - 19968: jis0208<<14 | 0x3C<<7 | 0x41, + 27668 - 19968: jis0208<<14 | 0x3C<<7 | 0x42, + 27671 - 19968: jis0208<<14 | 0x14<<7 | 0x03, + 27673 - 19968: jis0212<<14 | 0x25<<7 | 0x2A, + 27675 - 19968: jis0208<<14 | 0x3C<<7 | 0x43, + 27679 - 19968: jis0212<<14 | 0x25<<7 | 0x2B, + 27683 - 19968: jis0208<<14 | 0x3C<<7 | 0x45, + 27684 - 19968: jis0208<<14 | 0x3C<<7 | 0x44, + 27686 - 19968: jis0212<<14 | 0x25<<7 | 0x2C, + 27687 - 19968: jis0212<<14 | 0x25<<7 | 0x2D, + 27688 - 19968: jis0212<<14 | 0x25<<7 | 0x2E, + 27692 - 19968: jis0212<<14 | 0x25<<7 | 0x2F, + 27694 - 19968: jis0212<<14 | 0x25<<7 | 0x30, + 27699 - 19968: jis0212<<14 | 0x25<<7 | 0x31, + 27700 - 19968: jis0208<<14 | 0x1E<<7 | 0x44, + 27701 - 19968: jis0212<<14 | 0x25<<7 | 0x32, + 27702 - 19968: jis0212<<14 | 0x25<<7 | 0x33, + 27703 - 19968: jis0208<<14 | 0x28<<7 | 0x18, + 27704 - 19968: jis0208<<14 | 0x10<<7 | 0x29, + 27706 - 19968: jis0212<<14 | 0x25<<7 | 0x34, + 27707 - 19968: jis0212<<14 | 0x25<<7 | 0x35, + 27710 - 19968: jis0208<<14 | 0x27<<7 | 0x24, + 27711 - 19968: jis0208<<14 | 0x59<<7 | 0x3A, + 27712 - 19968: jis0208<<14 | 0x23<<7 | 0x54, + 27713 - 19968: jis0208<<14 | 0x1C<<7 | 0x20, + 27714 - 19968: jis0208<<14 | 0x14<<7 | 0x40, + 27722 - 19968: jis0212<<14 | 0x25<<7 | 0x37, + 27723 - 19968: jis0212<<14 | 0x25<<7 | 0x38, + 27725 - 19968: jis0212<<14 | 0x25<<7 | 0x39, + 27726 - 19968: jis0208<<14 | 0x27<<7 | 0x25, + 27727 - 19968: jis0212<<14 | 0x25<<7 | 0x3A, + 27728 - 19968: jis0208<<14 | 0x1B<<7 | 0x0D, + 27730 - 19968: jis0212<<14 | 0x25<<7 | 0x3B, + 27732 - 19968: jis0212<<14 | 0x25<<7 | 0x3C, + 27733 - 19968: jis0208<<14 | 0x3C<<7 | 0x47, + 27735 - 19968: jis0208<<14 | 0x13<<7 | 0x1F, + 27737 - 19968: jis0212<<14 | 0x25<<7 | 0x3D, + 27738 - 19968: jis0208<<14 | 0x10<<7 | 0x57, + 27739 - 19968: jis0212<<14 | 0x25<<7 | 0x3E, + 27740 - 19968: jis0208<<14 | 0x59<<7 | 0x3B, + 27741 - 19968: jis0208<<14 | 0x25<<7 | 0x51, + 27742 - 19968: jis0208<<14 | 0x3C<<7 | 0x46, + 27743 - 19968: jis0208<<14 | 0x18<<7 | 0x1D, + 27744 - 19968: jis0208<<14 | 0x22<<7 | 0x32, + 27746 - 19968: jis0208<<14 | 0x3C<<7 | 0x48, + 27751 - 19968: jis0212<<14 | 0x26<<7 | 0x15, + 27752 - 19968: jis0208<<14 | 0x3C<<7 | 0x50, + 27754 - 19968: jis0208<<14 | 0x3C<<7 | 0x49, + 27755 - 19968: jis0212<<14 | 0x25<<7 | 0x40, + 27757 - 19968: jis0212<<14 | 0x25<<7 | 0x41, + 27759 - 19968: jis0208<<14 | 0x59<<7 | 0x3D, + 27760 - 19968: jis0208<<14 | 0x21<<7 | 0x20, + 27762 - 19968: jis0208<<14 | 0x14<<7 | 0x41, + 27763 - 19968: jis0208<<14 | 0x3C<<7 | 0x51, + 27764 - 19968: jis0212<<14 | 0x25<<7 | 0x43, + 27766 - 19968: jis0212<<14 | 0x25<<7 | 0x44, + 27768 - 19968: jis0212<<14 | 0x25<<7 | 0x45, + 27769 - 19968: jis0212<<14 | 0x25<<7 | 0x46, + 27770 - 19968: jis0208<<14 | 0x16<<7 | 0x47, + 27771 - 19968: jis0212<<14 | 0x25<<7 | 0x47, + 27773 - 19968: jis0208<<14 | 0x14<<7 | 0x04, + 27774 - 19968: jis0208<<14 | 0x3C<<7 | 0x4F, + 27777 - 19968: jis0208<<14 | 0x3C<<7 | 0x4D, + 27778 - 19968: jis0208<<14 | 0x3C<<7 | 0x4A, + 27779 - 19968: jis0208<<14 | 0x2C<<7 | 0x3F, + 27781 - 19968: jis0212<<14 | 0x25<<7 | 0x48, + 27782 - 19968: jis0208<<14 | 0x59<<7 | 0x3C, + 27783 - 19968: jis0212<<14 | 0x25<<7 | 0x4A, + 27784 - 19968: jis0208<<14 | 0x23<<7 | 0x1F, + 27785 - 19968: jis0212<<14 | 0x25<<7 | 0x4B, + 27788 - 19968: jis0208<<14 | 0x25<<7 | 0x38, + 27789 - 19968: jis0208<<14 | 0x3C<<7 | 0x4B, + 27792 - 19968: jis0208<<14 | 0x3C<<7 | 0x53, + 27794 - 19968: jis0208<<14 | 0x3C<<7 | 0x52, + 27795 - 19968: jis0208<<14 | 0x16<<7 | 0x02, + 27796 - 19968: jis0212<<14 | 0x25<<7 | 0x4C, + 27797 - 19968: jis0212<<14 | 0x25<<7 | 0x4D, + 27798 - 19968: jis0208<<14 | 0x11<<7 | 0x0C, + 27799 - 19968: jis0212<<14 | 0x25<<7 | 0x4E, + 27800 - 19968: jis0212<<14 | 0x25<<7 | 0x4F, + 27801 - 19968: jis0208<<14 | 0x19<<7 | 0x1A, + 27802 - 19968: jis0208<<14 | 0x3C<<7 | 0x4C, + 27803 - 19968: jis0208<<14 | 0x3C<<7 | 0x4E, + 27804 - 19968: jis0212<<14 | 0x25<<7 | 0x50, + 27807 - 19968: jis0212<<14 | 0x25<<7 | 0x51, + 27809 - 19968: jis0208<<14 | 0x2A<<7 | 0x36, + 27810 - 19968: jis0208<<14 | 0x21<<7 | 0x53, + 27819 - 19968: jis0208<<14 | 0x2A<<7 | 0x56, + 27822 - 19968: jis0208<<14 | 0x3C<<7 | 0x5B, + 27824 - 19968: jis0212<<14 | 0x25<<7 | 0x52, + 27825 - 19968: jis0208<<14 | 0x3C<<7 | 0x5C, + 27826 - 19968: jis0212<<14 | 0x25<<7 | 0x53, + 27827 - 19968: jis0208<<14 | 0x11<<7 | 0x2E, + 27828 - 19968: jis0212<<14 | 0x25<<7 | 0x54, + 27832 - 19968: jis0208<<14 | 0x29<<7 | 0x07, + 27833 - 19968: jis0208<<14 | 0x2B<<7 | 0x5C, + 27834 - 19968: jis0208<<14 | 0x3D<<7 | 0x00, + 27835 - 19968: jis0208<<14 | 0x1B<<7 | 0x02, + 27836 - 19968: jis0208<<14 | 0x1D<<7 | 0x21, + 27837 - 19968: jis0208<<14 | 0x3C<<7 | 0x57, + 27838 - 19968: jis0208<<14 | 0x3C<<7 | 0x5D, + 27839 - 19968: jis0208<<14 | 0x10<<7 | 0x47, + 27841 - 19968: jis0208<<14 | 0x15<<7 | 0x16, + 27842 - 19968: jis0212<<14 | 0x25<<7 | 0x55, + 27844 - 19968: jis0208<<14 | 0x3C<<7 | 0x54, + 27845 - 19968: jis0208<<14 | 0x3C<<7 | 0x59, + 27846 - 19968: jis0212<<14 | 0x25<<7 | 0x56, + 27849 - 19968: jis0208<<14 | 0x1F<<7 | 0x53, + 27850 - 19968: jis0208<<14 | 0x26<<7 | 0x50, + 27852 - 19968: jis0208<<14 | 0x27<<7 | 0x46, + 27853 - 19968: jis0212<<14 | 0x25<<7 | 0x57, + 27855 - 19968: jis0212<<14 | 0x25<<7 | 0x58, + 27856 - 19968: jis0212<<14 | 0x25<<7 | 0x59, + 27857 - 19968: jis0212<<14 | 0x25<<7 | 0x5A, + 27858 - 19968: jis0212<<14 | 0x25<<7 | 0x5B, + 27859 - 19968: jis0208<<14 | 0x3C<<7 | 0x56, + 27860 - 19968: jis0212<<14 | 0x25<<7 | 0x5C, + 27861 - 19968: jis0208<<14 | 0x2A<<7 | 0x00, + 27862 - 19968: jis0212<<14 | 0x25<<7 | 0x5D, + 27863 - 19968: jis0208<<14 | 0x3C<<7 | 0x58, + 27865 - 19968: jis0208<<14 | 0x3D<<7 | 0x03, + 27866 - 19968: jis0208<<14 | 0x59<<7 | 0x3E, + 27867 - 19968: jis0208<<14 | 0x3D<<7 | 0x01, + 27868 - 19968: jis0212<<14 | 0x26<<7 | 0x01, + 27869 - 19968: jis0208<<14 | 0x3C<<7 | 0x5A, + 27872 - 19968: jis0212<<14 | 0x26<<7 | 0x02, + 27873 - 19968: jis0208<<14 | 0x2A<<7 | 0x01, + 27874 - 19968: jis0208<<14 | 0x26<<7 | 0x27, + 27875 - 19968: jis0208<<14 | 0x14<<7 | 0x42, + 27877 - 19968: jis0208<<14 | 0x24<<7 | 0x04, + 27879 - 19968: jis0212<<14 | 0x26<<7 | 0x03, + 27880 - 19968: jis0208<<14 | 0x22<<7 | 0x4C, + 27881 - 19968: jis0212<<14 | 0x26<<7 | 0x04, + 27882 - 19968: jis0208<<14 | 0x3D<<7 | 0x04, + 27883 - 19968: jis0212<<14 | 0x26<<7 | 0x05, + 27884 - 19968: jis0212<<14 | 0x26<<7 | 0x06, + 27886 - 19968: jis0212<<14 | 0x26<<7 | 0x07, + 27887 - 19968: jis0208<<14 | 0x3D<<7 | 0x02, + 27888 - 19968: jis0208<<14 | 0x21<<7 | 0x38, + 27889 - 19968: jis0208<<14 | 0x3C<<7 | 0x55, + 27890 - 19968: jis0212<<14 | 0x26<<7 | 0x08, + 27891 - 19968: jis0208<<14 | 0x10<<7 | 0x2A, + 27892 - 19968: jis0212<<14 | 0x26<<7 | 0x09, + 27908 - 19968: jis0208<<14 | 0x59<<7 | 0x3F, + 27911 - 19968: jis0212<<14 | 0x26<<7 | 0x0B, + 27914 - 19968: jis0212<<14 | 0x26<<7 | 0x0C, + 27915 - 19968: jis0208<<14 | 0x2C<<7 | 0x2D, + 27916 - 19968: jis0208<<14 | 0x3D<<7 | 0x0F, + 27918 - 19968: jis0212<<14 | 0x26<<7 | 0x0D, + 27919 - 19968: jis0212<<14 | 0x26<<7 | 0x0E, + 27921 - 19968: jis0212<<14 | 0x26<<7 | 0x0F, + 27922 - 19968: jis0208<<14 | 0x3D<<7 | 0x0E, + 27923 - 19968: jis0212<<14 | 0x26<<7 | 0x10, + 27927 - 19968: jis0208<<14 | 0x1F<<7 | 0x55, + 27929 - 19968: jis0208<<14 | 0x3D<<7 | 0x0B, + 27930 - 19968: jis0212<<14 | 0x26<<7 | 0x11, + 27931 - 19968: jis0208<<14 | 0x2C<<7 | 0x4B, + 27934 - 19968: jis0208<<14 | 0x25<<7 | 0x15, + 27935 - 19968: jis0208<<14 | 0x3D<<7 | 0x05, + 27941 - 19968: jis0208<<14 | 0x23<<7 | 0x24, + 27942 - 19968: jis0212<<14 | 0x26<<7 | 0x12, + 27943 - 19968: jis0212<<14 | 0x26<<7 | 0x13, + 27944 - 19968: jis0212<<14 | 0x26<<7 | 0x14, + 27945 - 19968: jis0208<<14 | 0x10<<7 | 0x2B, + 27946 - 19968: jis0208<<14 | 0x18<<7 | 0x1E, + 27947 - 19968: jis0208<<14 | 0x3D<<7 | 0x08, + 27950 - 19968: jis0212<<14 | 0x26<<7 | 0x16, + 27951 - 19968: jis0212<<14 | 0x26<<7 | 0x17, + 27953 - 19968: jis0212<<14 | 0x26<<7 | 0x18, + 27954 - 19968: jis0208<<14 | 0x1C<<7 | 0x06, + 27955 - 19968: jis0208<<14 | 0x3D<<7 | 0x0D, + 27957 - 19968: jis0208<<14 | 0x3D<<7 | 0x0C, + 27958 - 19968: jis0208<<14 | 0x3D<<7 | 0x07, + 27960 - 19968: jis0208<<14 | 0x3D<<7 | 0x0A, + 27961 - 19968: jis0212<<14 | 0x26<<7 | 0x19, + 27963 - 19968: jis0208<<14 | 0x12<<7 | 0x47, + 27964 - 19968: jis0212<<14 | 0x26<<7 | 0x1A, + 27965 - 19968: jis0208<<14 | 0x3D<<7 | 0x09, + 27966 - 19968: jis0208<<14 | 0x26<<7 | 0x28, + 27967 - 19968: jis0212<<14 | 0x26<<7 | 0x1B, + 27969 - 19968: jis0208<<14 | 0x2D<<7 | 0x0D, + 27972 - 19968: jis0208<<14 | 0x1D<<7 | 0x53, + 27973 - 19968: jis0208<<14 | 0x1F<<7 | 0x54, + 27991 - 19968: jis0212<<14 | 0x26<<7 | 0x1C, + 27993 - 19968: jis0208<<14 | 0x3D<<7 | 0x15, + 27994 - 19968: jis0208<<14 | 0x3D<<7 | 0x13, + 27996 - 19968: jis0208<<14 | 0x28<<7 | 0x2C, + 27998 - 19968: jis0212<<14 | 0x26<<7 | 0x1D, + 27999 - 19968: jis0212<<14 | 0x26<<7 | 0x1E, + 28001 - 19968: jis0212<<14 | 0x26<<7 | 0x1F, + 28003 - 19968: jis0208<<14 | 0x3D<<7 | 0x10, + 28004 - 19968: jis0208<<14 | 0x3D<<7 | 0x12, + 28005 - 19968: jis0212<<14 | 0x26<<7 | 0x20, + 28006 - 19968: jis0208<<14 | 0x10<<7 | 0x19, + 28007 - 19968: jis0212<<14 | 0x26<<7 | 0x21, + 28009 - 19968: jis0208<<14 | 0x18<<7 | 0x1F, + 28010 - 19968: jis0208<<14 | 0x2E<<7 | 0x11, + 28012 - 19968: jis0208<<14 | 0x12<<7 | 0x1C, + 28014 - 19968: jis0208<<14 | 0x28<<7 | 0x41, + 28015 - 19968: jis0208<<14 | 0x59<<7 | 0x41, + 28016 - 19968: jis0212<<14 | 0x26<<7 | 0x23, + 28020 - 19968: jis0208<<14 | 0x2C<<7 | 0x40, + 28023 - 19968: jis0208<<14 | 0x12<<7 | 0x03, + 28024 - 19968: jis0208<<14 | 0x1E<<7 | 0x1A, + 28025 - 19968: jis0208<<14 | 0x3D<<7 | 0x14, + 28028 - 19968: jis0212<<14 | 0x26<<7 | 0x24, + 28034 - 19968: jis0212<<14 | 0x26<<7 | 0x25, + 28037 - 19968: jis0208<<14 | 0x3D<<7 | 0x19, + 28039 - 19968: jis0208<<14 | 0x59<<7 | 0x40, + 28040 - 19968: jis0208<<14 | 0x1D<<7 | 0x22, + 28044 - 19968: jis0208<<14 | 0x2C<<7 | 0x0F, + 28046 - 19968: jis0208<<14 | 0x3D<<7 | 0x16, + 28049 - 19968: jis0212<<14 | 0x26<<7 | 0x27, + 28050 - 19968: jis0212<<14 | 0x26<<7 | 0x28, + 28051 - 19968: jis0208<<14 | 0x3D<<7 | 0x11, + 28052 - 19968: jis0212<<14 | 0x26<<7 | 0x29, + 28053 - 19968: jis0208<<14 | 0x3D<<7 | 0x17, + 28054 - 19968: jis0208<<14 | 0x59<<7 | 0x42, + 28055 - 19968: jis0212<<14 | 0x26<<7 | 0x2B, + 28056 - 19968: jis0212<<14 | 0x26<<7 | 0x2C, + 28057 - 19968: jis0208<<14 | 0x2D<<7 | 0x3D, + 28059 - 19968: jis0208<<14 | 0x24<<7 | 0x52, + 28060 - 19968: jis0208<<14 | 0x25<<7 | 0x21, + 28074 - 19968: jis0212<<14 | 0x26<<7 | 0x2D, + 28076 - 19968: jis0208<<14 | 0x59<<7 | 0x43, + 28079 - 19968: jis0208<<14 | 0x12<<7 | 0x15, + 28082 - 19968: jis0208<<14 | 0x10<<7 | 0x34, + 28084 - 19968: jis0212<<14 | 0x26<<7 | 0x2F, + 28085 - 19968: jis0208<<14 | 0x3D<<7 | 0x1D, + 28087 - 19968: jis0212<<14 | 0x26<<7 | 0x30, + 28088 - 19968: jis0208<<14 | 0x3D<<7 | 0x20, + 28089 - 19968: jis0212<<14 | 0x26<<7 | 0x31, + 28092 - 19968: jis0208<<14 | 0x2D<<7 | 0x22, + 28093 - 19968: jis0212<<14 | 0x26<<7 | 0x32, + 28095 - 19968: jis0212<<14 | 0x26<<7 | 0x33, + 28096 - 19968: jis0208<<14 | 0x2C<<7 | 0x43, + 28100 - 19968: jis0212<<14 | 0x26<<7 | 0x34, + 28101 - 19968: jis0208<<14 | 0x3D<<7 | 0x27, + 28102 - 19968: jis0208<<14 | 0x3D<<7 | 0x21, + 28103 - 19968: jis0208<<14 | 0x3D<<7 | 0x1E, + 28104 - 19968: jis0212<<14 | 0x26<<7 | 0x35, + 28106 - 19968: jis0212<<14 | 0x26<<7 | 0x36, + 28107 - 19968: jis0208<<14 | 0x2D<<7 | 0x33, + 28108 - 19968: jis0208<<14 | 0x3D<<7 | 0x24, + 28110 - 19968: jis0212<<14 | 0x26<<7 | 0x37, + 28111 - 19968: jis0208<<14 | 0x59<<7 | 0x44, + 28113 - 19968: jis0208<<14 | 0x1C<<7 | 0x29, + 28114 - 19968: jis0208<<14 | 0x3D<<7 | 0x26, + 28117 - 19968: jis0208<<14 | 0x3D<<7 | 0x2B, + 28118 - 19968: jis0212<<14 | 0x26<<7 | 0x39, + 28120 - 19968: jis0208<<14 | 0x24<<7 | 0x50, + 28121 - 19968: jis0208<<14 | 0x3D<<7 | 0x29, + 28123 - 19968: jis0212<<14 | 0x26<<7 | 0x3A, + 28125 - 19968: jis0212<<14 | 0x26<<7 | 0x3B, + 28126 - 19968: jis0208<<14 | 0x3D<<7 | 0x23, + 28127 - 19968: jis0212<<14 | 0x26<<7 | 0x3C, + 28128 - 19968: jis0212<<14 | 0x26<<7 | 0x3D, + 28129 - 19968: jis0208<<14 | 0x22<<7 | 0x17, + 28130 - 19968: jis0212<<14 | 0x26<<7 | 0x3E, + 28132 - 19968: jis0208<<14 | 0x3D<<7 | 0x2A, + 28133 - 19968: jis0212<<14 | 0x26<<7 | 0x3F, + 28134 - 19968: jis0208<<14 | 0x3D<<7 | 0x1F, + 28136 - 19968: jis0208<<14 | 0x3D<<7 | 0x25, + 28137 - 19968: jis0212<<14 | 0x26<<7 | 0x40, + 28138 - 19968: jis0208<<14 | 0x3D<<7 | 0x2C, + 28139 - 19968: jis0208<<14 | 0x0F<<7 | 0x5B, + 28140 - 19968: jis0208<<14 | 0x3D<<7 | 0x22, + 28142 - 19968: jis0208<<14 | 0x3D<<7 | 0x2D, + 28143 - 19968: jis0212<<14 | 0x26<<7 | 0x41, + 28144 - 19968: jis0212<<14 | 0x26<<7 | 0x42, + 28145 - 19968: jis0208<<14 | 0x1E<<7 | 0x1B, + 28146 - 19968: jis0208<<14 | 0x59<<7 | 0x46, + 28147 - 19968: jis0208<<14 | 0x1C<<7 | 0x3E, + 28148 - 19968: jis0212<<14 | 0x26<<7 | 0x43, + 28149 - 19968: jis0208<<14 | 0x29<<7 | 0x04, + 28150 - 19968: jis0212<<14 | 0x26<<7 | 0x44, + 28151 - 19968: jis0208<<14 | 0x19<<7 | 0x0D, + 28152 - 19968: jis0208<<14 | 0x59<<7 | 0x45, + 28153 - 19968: jis0208<<14 | 0x3D<<7 | 0x1A, + 28154 - 19968: jis0208<<14 | 0x3D<<7 | 0x28, + 28155 - 19968: jis0208<<14 | 0x24<<7 | 0x19, + 28156 - 19968: jis0208<<14 | 0x59<<7 | 0x47, + 28160 - 19968: jis0212<<14 | 0x26<<7 | 0x46, + 28164 - 19968: jis0212<<14 | 0x26<<7 | 0x47, + 28165 - 19968: jis0208<<14 | 0x1F<<7 | 0x15, + 28167 - 19968: jis0208<<14 | 0x12<<7 | 0x48, + 28168 - 19968: jis0208<<14 | 0x19<<7 | 0x30, + 28169 - 19968: jis0208<<14 | 0x1D<<7 | 0x23, + 28170 - 19968: jis0208<<14 | 0x3D<<7 | 0x1C, + 28171 - 19968: jis0208<<14 | 0x1C<<7 | 0x21, + 28179 - 19968: jis0208<<14 | 0x16<<7 | 0x2B, + 28181 - 19968: jis0208<<14 | 0x3D<<7 | 0x1B, + 28185 - 19968: jis0208<<14 | 0x3D<<7 | 0x31, + 28186 - 19968: jis0208<<14 | 0x1C<<7 | 0x4C, + 28187 - 19968: jis0208<<14 | 0x17<<7 | 0x19, + 28189 - 19968: jis0208<<14 | 0x3D<<7 | 0x40, + 28190 - 19968: jis0212<<14 | 0x26<<7 | 0x48, + 28191 - 19968: jis0208<<14 | 0x3D<<7 | 0x3A, + 28192 - 19968: jis0208<<14 | 0x14<<7 | 0x53, + 28193 - 19968: jis0208<<14 | 0x24<<7 | 0x2E, + 28194 - 19968: jis0212<<14 | 0x26<<7 | 0x49, + 28195 - 19968: jis0208<<14 | 0x3D<<7 | 0x35, + 28196 - 19968: jis0208<<14 | 0x3D<<7 | 0x3E, + 28197 - 19968: jis0208<<14 | 0x0F<<7 | 0x0E, + 28198 - 19968: jis0208<<14 | 0x10<<7 | 0x11, + 28199 - 19968: jis0208<<14 | 0x59<<7 | 0x4A, + 28201 - 19968: jis0208<<14 | 0x11<<7 | 0x18, + 28203 - 19968: jis0208<<14 | 0x3D<<7 | 0x37, + 28204 - 19968: jis0208<<14 | 0x21<<7 | 0x0B, + 28205 - 19968: jis0208<<14 | 0x3D<<7 | 0x2E, + 28206 - 19968: jis0208<<14 | 0x3D<<7 | 0x30, + 28207 - 19968: jis0208<<14 | 0x18<<7 | 0x20, + 28210 - 19968: jis0212<<14 | 0x26<<7 | 0x4B, + 28214 - 19968: jis0212<<14 | 0x26<<7 | 0x4C, + 28216 - 19968: jis0208<<14 | 0x3D<<7 | 0x41, + 28217 - 19968: jis0208<<14 | 0x59<<7 | 0x48, + 28218 - 19968: jis0208<<14 | 0x3D<<7 | 0x3C, + 28219 - 19968: jis0212<<14 | 0x26<<7 | 0x4E, + 28220 - 19968: jis0208<<14 | 0x59<<7 | 0x4B, + 28222 - 19968: jis0208<<14 | 0x3D<<7 | 0x34, + 28227 - 19968: jis0208<<14 | 0x3D<<7 | 0x3B, + 28228 - 19968: jis0212<<14 | 0x26<<7 | 0x50, + 28229 - 19968: jis0212<<14 | 0x26<<7 | 0x51, + 28232 - 19968: jis0212<<14 | 0x26<<7 | 0x52, + 28233 - 19968: jis0212<<14 | 0x26<<7 | 0x53, + 28234 - 19968: jis0208<<14 | 0x2B<<7 | 0x0A, + 28235 - 19968: jis0212<<14 | 0x26<<7 | 0x54, + 28237 - 19968: jis0208<<14 | 0x3D<<7 | 0x39, + 28238 - 19968: jis0208<<14 | 0x3D<<7 | 0x3D, + 28239 - 19968: jis0212<<14 | 0x26<<7 | 0x55, + 28241 - 19968: jis0212<<14 | 0x26<<7 | 0x56, + 28242 - 19968: jis0212<<14 | 0x26<<7 | 0x57, + 28243 - 19968: jis0212<<14 | 0x26<<7 | 0x58, + 28244 - 19968: jis0212<<14 | 0x26<<7 | 0x59, + 28246 - 19968: jis0208<<14 | 0x17<<7 | 0x2F, + 28247 - 19968: jis0212<<14 | 0x26<<7 | 0x5A, + 28248 - 19968: jis0208<<14 | 0x1D<<7 | 0x24, + 28251 - 19968: jis0208<<14 | 0x22<<7 | 0x18, + 28252 - 19968: jis0208<<14 | 0x59<<7 | 0x49, + 28253 - 19968: jis0212<<14 | 0x26<<7 | 0x5C, + 28254 - 19968: jis0212<<14 | 0x26<<7 | 0x5D, + 28255 - 19968: jis0208<<14 | 0x3D<<7 | 0x33, + 28258 - 19968: jis0212<<14 | 0x27<<7 | 0x00, + 28259 - 19968: jis0212<<14 | 0x27<<7 | 0x01, + 28263 - 19968: jis0208<<14 | 0x2C<<7 | 0x0E, + 28264 - 19968: jis0212<<14 | 0x27<<7 | 0x02, + 28267 - 19968: jis0208<<14 | 0x3D<<7 | 0x36, + 28270 - 19968: jis0208<<14 | 0x3D<<7 | 0x2F, + 28271 - 19968: jis0208<<14 | 0x24<<7 | 0x51, + 28274 - 19968: jis0208<<14 | 0x3D<<7 | 0x32, + 28275 - 19968: jis0212<<14 | 0x27<<7 | 0x03, + 28278 - 19968: jis0208<<14 | 0x3D<<7 | 0x38, + 28283 - 19968: jis0212<<14 | 0x27<<7 | 0x04, + 28285 - 19968: jis0212<<14 | 0x27<<7 | 0x05, + 28286 - 19968: jis0208<<14 | 0x2E<<7 | 0x30, + 28287 - 19968: jis0208<<14 | 0x1B<<7 | 0x1D, + 28288 - 19968: jis0208<<14 | 0x2A<<7 | 0x5D, + 28290 - 19968: jis0208<<14 | 0x3D<<7 | 0x42, + 28300 - 19968: jis0208<<14 | 0x27<<7 | 0x0D, + 28301 - 19968: jis0212<<14 | 0x27<<7 | 0x06, + 28303 - 19968: jis0208<<14 | 0x3D<<7 | 0x4E, + 28304 - 19968: jis0208<<14 | 0x17<<7 | 0x1A, + 28307 - 19968: jis0212<<14 | 0x27<<7 | 0x07, + 28310 - 19968: jis0208<<14 | 0x1C<<7 | 0x3F, + 28312 - 19968: jis0208<<14 | 0x3D<<7 | 0x44, + 28313 - 19968: jis0212<<14 | 0x27<<7 | 0x08, + 28316 - 19968: jis0208<<14 | 0x2D<<7 | 0x0E, + 28317 - 19968: jis0208<<14 | 0x18<<7 | 0x21, + 28319 - 19968: jis0208<<14 | 0x3D<<7 | 0x51, + 28320 - 19968: jis0212<<14 | 0x27<<7 | 0x09, + 28322 - 19968: jis0208<<14 | 0x0F<<7 | 0x4D, + 28325 - 19968: jis0208<<14 | 0x3D<<7 | 0x4F, + 28327 - 19968: jis0212<<14 | 0x27<<7 | 0x0A, + 28330 - 19968: jis0208<<14 | 0x3D<<7 | 0x43, + 28333 - 19968: jis0212<<14 | 0x27<<7 | 0x0B, + 28334 - 19968: jis0212<<14 | 0x27<<7 | 0x0C, + 28335 - 19968: jis0208<<14 | 0x3D<<7 | 0x49, + 28337 - 19968: jis0212<<14 | 0x27<<7 | 0x0D, + 28338 - 19968: jis0208<<14 | 0x3D<<7 | 0x4B, + 28339 - 19968: jis0212<<14 | 0x27<<7 | 0x0E, + 28342 - 19968: jis0208<<14 | 0x2C<<7 | 0x2E, + 28343 - 19968: jis0208<<14 | 0x3D<<7 | 0x46, + 28346 - 19968: jis0208<<14 | 0x24<<7 | 0x0D, + 28347 - 19968: jis0212<<14 | 0x27<<7 | 0x0F, + 28349 - 19968: jis0208<<14 | 0x3D<<7 | 0x48, + 28351 - 19968: jis0208<<14 | 0x59<<7 | 0x4C, + 28352 - 19968: jis0212<<14 | 0x27<<7 | 0x11, + 28353 - 19968: jis0212<<14 | 0x27<<7 | 0x12, + 28354 - 19968: jis0208<<14 | 0x3D<<7 | 0x50, + 28355 - 19968: jis0212<<14 | 0x27<<7 | 0x13, + 28356 - 19968: jis0208<<14 | 0x3D<<7 | 0x4A, + 28357 - 19968: jis0208<<14 | 0x2B<<7 | 0x26, + 28359 - 19968: jis0212<<14 | 0x27<<7 | 0x14, + 28360 - 19968: jis0212<<14 | 0x27<<7 | 0x15, + 28361 - 19968: jis0208<<14 | 0x3D<<7 | 0x45, + 28362 - 19968: jis0212<<14 | 0x27<<7 | 0x16, + 28363 - 19968: jis0208<<14 | 0x1B<<7 | 0x01, + 28364 - 19968: jis0208<<14 | 0x3D<<7 | 0x5D, + 28365 - 19968: jis0212<<14 | 0x27<<7 | 0x17, + 28366 - 19968: jis0212<<14 | 0x27<<7 | 0x18, + 28367 - 19968: jis0212<<14 | 0x27<<7 | 0x19, + 28369 - 19968: jis0208<<14 | 0x12<<7 | 0x49, + 28371 - 19968: jis0208<<14 | 0x3D<<7 | 0x47, + 28372 - 19968: jis0208<<14 | 0x3D<<7 | 0x4C, + 28373 - 19968: jis0208<<14 | 0x3D<<7 | 0x4D, + 28381 - 19968: jis0208<<14 | 0x21<<7 | 0x4B, + 28382 - 19968: jis0208<<14 | 0x21<<7 | 0x39, + 28395 - 19968: jis0212<<14 | 0x27<<7 | 0x1A, + 28396 - 19968: jis0208<<14 | 0x3D<<7 | 0x55, + 28397 - 19968: jis0212<<14 | 0x27<<7 | 0x1B, + 28398 - 19968: jis0212<<14 | 0x27<<7 | 0x1C, + 28399 - 19968: jis0208<<14 | 0x3D<<7 | 0x5B, + 28402 - 19968: jis0208<<14 | 0x3D<<7 | 0x59, + 28404 - 19968: jis0208<<14 | 0x24<<7 | 0x08, + 28407 - 19968: jis0208<<14 | 0x3E<<7 | 0x02, + 28408 - 19968: jis0208<<14 | 0x3D<<7 | 0x56, + 28409 - 19968: jis0212<<14 | 0x27<<7 | 0x1D, + 28411 - 19968: jis0212<<14 | 0x27<<7 | 0x1E, + 28413 - 19968: jis0212<<14 | 0x27<<7 | 0x1F, + 28414 - 19968: jis0208<<14 | 0x3D<<7 | 0x57, + 28415 - 19968: jis0208<<14 | 0x3D<<7 | 0x3F, + 28417 - 19968: jis0208<<14 | 0x14<<7 | 0x58, + 28418 - 19968: jis0208<<14 | 0x28<<7 | 0x19, + 28420 - 19968: jis0212<<14 | 0x27<<7 | 0x20, + 28422 - 19968: jis0208<<14 | 0x1B<<7 | 0x1E, + 28424 - 19968: jis0212<<14 | 0x27<<7 | 0x21, + 28425 - 19968: jis0208<<14 | 0x18<<7 | 0x56, + 28426 - 19968: jis0212<<14 | 0x27<<7 | 0x22, + 28428 - 19968: jis0212<<14 | 0x27<<7 | 0x23, + 28429 - 19968: jis0212<<14 | 0x27<<7 | 0x24, + 28431 - 19968: jis0208<<14 | 0x2E<<7 | 0x12, + 28433 - 19968: jis0208<<14 | 0x3D<<7 | 0x53, + 28435 - 19968: jis0208<<14 | 0x3E<<7 | 0x01, + 28436 - 19968: jis0208<<14 | 0x10<<7 | 0x48, + 28437 - 19968: jis0208<<14 | 0x20<<7 | 0x45, + 28438 - 19968: jis0212<<14 | 0x27<<7 | 0x25, + 28440 - 19968: jis0212<<14 | 0x27<<7 | 0x26, + 28442 - 19968: jis0212<<14 | 0x27<<7 | 0x27, + 28443 - 19968: jis0212<<14 | 0x27<<7 | 0x28, + 28448 - 19968: jis0208<<14 | 0x26<<7 | 0x58, + 28450 - 19968: jis0208<<14 | 0x13<<7 | 0x20, + 28451 - 19968: jis0208<<14 | 0x2D<<7 | 0x59, + 28454 - 19968: jis0212<<14 | 0x27<<7 | 0x29, + 28457 - 19968: jis0212<<14 | 0x27<<7 | 0x2A, + 28458 - 19968: jis0212<<14 | 0x27<<7 | 0x2B, + 28459 - 19968: jis0208<<14 | 0x2B<<7 | 0x00, + 28460 - 19968: jis0208<<14 | 0x23<<7 | 0x31, + 28461 - 19968: jis0212<<14 | 0x27<<7 | 0x32, + 28463 - 19968: jis0212<<14 | 0x27<<7 | 0x2C, + 28464 - 19968: jis0212<<14 | 0x27<<7 | 0x2D, + 28465 - 19968: jis0208<<14 | 0x3D<<7 | 0x5A, + 28466 - 19968: jis0208<<14 | 0x3D<<7 | 0x5C, + 28467 - 19968: jis0212<<14 | 0x27<<7 | 0x2E, + 28470 - 19968: jis0212<<14 | 0x27<<7 | 0x2F, + 28472 - 19968: jis0208<<14 | 0x20<<7 | 0x11, + 28475 - 19968: jis0212<<14 | 0x27<<7 | 0x30, + 28476 - 19968: jis0212<<14 | 0x27<<7 | 0x31, + 28478 - 19968: jis0208<<14 | 0x3E<<7 | 0x00, + 28479 - 19968: jis0208<<14 | 0x3D<<7 | 0x58, + 28481 - 19968: jis0208<<14 | 0x3D<<7 | 0x52, + 28485 - 19968: jis0208<<14 | 0x13<<7 | 0x22, + 28495 - 19968: jis0212<<14 | 0x27<<7 | 0x33, + 28497 - 19968: jis0212<<14 | 0x27<<7 | 0x34, + 28498 - 19968: jis0212<<14 | 0x27<<7 | 0x35, + 28499 - 19968: jis0212<<14 | 0x27<<7 | 0x36, + 28500 - 19968: jis0208<<14 | 0x16<<7 | 0x48, + 28503 - 19968: jis0212<<14 | 0x27<<7 | 0x37, + 28504 - 19968: jis0208<<14 | 0x3E<<7 | 0x0E, + 28505 - 19968: jis0212<<14 | 0x27<<7 | 0x38, + 28506 - 19968: jis0212<<14 | 0x27<<7 | 0x39, + 28507 - 19968: jis0208<<14 | 0x3E<<7 | 0x09, + 28508 - 19968: jis0208<<14 | 0x1F<<7 | 0x57, + 28509 - 19968: jis0212<<14 | 0x27<<7 | 0x3A, + 28510 - 19968: jis0212<<14 | 0x27<<7 | 0x3B, + 28511 - 19968: jis0208<<14 | 0x12<<7 | 0x42, + 28513 - 19968: jis0212<<14 | 0x27<<7 | 0x3C, + 28514 - 19968: jis0212<<14 | 0x27<<7 | 0x3D, + 28516 - 19968: jis0208<<14 | 0x1C<<7 | 0x40, + 28518 - 19968: jis0208<<14 | 0x3E<<7 | 0x12, + 28520 - 19968: jis0212<<14 | 0x27<<7 | 0x3E, + 28524 - 19968: jis0212<<14 | 0x27<<7 | 0x3F, + 28525 - 19968: jis0208<<14 | 0x3E<<7 | 0x0B, + 28526 - 19968: jis0208<<14 | 0x23<<7 | 0x0B, + 28527 - 19968: jis0208<<14 | 0x3E<<7 | 0x08, + 28528 - 19968: jis0208<<14 | 0x23<<7 | 0x38, + 28532 - 19968: jis0208<<14 | 0x3E<<7 | 0x2B, + 28536 - 19968: jis0208<<14 | 0x3E<<7 | 0x05, + 28538 - 19968: jis0208<<14 | 0x3E<<7 | 0x04, + 28540 - 19968: jis0208<<14 | 0x3E<<7 | 0x0D, + 28541 - 19968: jis0212<<14 | 0x27<<7 | 0x40, + 28542 - 19968: jis0212<<14 | 0x27<<7 | 0x41, + 28544 - 19968: jis0208<<14 | 0x3E<<7 | 0x07, + 28545 - 19968: jis0208<<14 | 0x3E<<7 | 0x06, + 28546 - 19968: jis0208<<14 | 0x3E<<7 | 0x0C, + 28547 - 19968: jis0212<<14 | 0x27<<7 | 0x42, + 28548 - 19968: jis0208<<14 | 0x1F<<7 | 0x00, + 28550 - 19968: jis0208<<14 | 0x3E<<7 | 0x03, + 28551 - 19968: jis0212<<14 | 0x27<<7 | 0x43, + 28552 - 19968: jis0208<<14 | 0x59<<7 | 0x4D, + 28555 - 19968: jis0212<<14 | 0x27<<7 | 0x45, + 28556 - 19968: jis0212<<14 | 0x27<<7 | 0x46, + 28557 - 19968: jis0212<<14 | 0x27<<7 | 0x47, + 28558 - 19968: jis0208<<14 | 0x3E<<7 | 0x0F, + 28560 - 19968: jis0212<<14 | 0x27<<7 | 0x48, + 28561 - 19968: jis0208<<14 | 0x3E<<7 | 0x10, + 28562 - 19968: jis0212<<14 | 0x27<<7 | 0x49, + 28563 - 19968: jis0212<<14 | 0x27<<7 | 0x4A, + 28564 - 19968: jis0212<<14 | 0x27<<7 | 0x4B, + 28566 - 19968: jis0212<<14 | 0x27<<7 | 0x4C, + 28567 - 19968: jis0208<<14 | 0x13<<7 | 0x21, + 28570 - 19968: jis0212<<14 | 0x27<<7 | 0x4D, + 28575 - 19968: jis0212<<14 | 0x27<<7 | 0x4E, + 28576 - 19968: jis0212<<14 | 0x27<<7 | 0x4F, + 28577 - 19968: jis0208<<14 | 0x3E<<7 | 0x15, + 28579 - 19968: jis0208<<14 | 0x3E<<7 | 0x14, + 28580 - 19968: jis0208<<14 | 0x3E<<7 | 0x16, + 28581 - 19968: jis0212<<14 | 0x27<<7 | 0x50, + 28582 - 19968: jis0212<<14 | 0x27<<7 | 0x51, + 28583 - 19968: jis0212<<14 | 0x27<<7 | 0x52, + 28584 - 19968: jis0212<<14 | 0x27<<7 | 0x53, + 28586 - 19968: jis0208<<14 | 0x3E<<7 | 0x19, + 28590 - 19968: jis0212<<14 | 0x27<<7 | 0x54, + 28591 - 19968: jis0212<<14 | 0x27<<7 | 0x55, + 28592 - 19968: jis0212<<14 | 0x27<<7 | 0x56, + 28593 - 19968: jis0208<<14 | 0x24<<7 | 0x22, + 28595 - 19968: jis0208<<14 | 0x3E<<7 | 0x13, + 28597 - 19968: jis0208<<14 | 0x59<<7 | 0x4E, + 28598 - 19968: jis0212<<14 | 0x27<<7 | 0x58, + 28601 - 19968: jis0208<<14 | 0x3E<<7 | 0x17, + 28604 - 19968: jis0212<<14 | 0x27<<7 | 0x59, + 28608 - 19968: jis0208<<14 | 0x16<<7 | 0x42, + 28609 - 19968: jis0208<<14 | 0x21<<7 | 0x58, + 28610 - 19968: jis0208<<14 | 0x3E<<7 | 0x11, + 28611 - 19968: jis0208<<14 | 0x26<<7 | 0x1A, + 28613 - 19968: jis0212<<14 | 0x27<<7 | 0x5A, + 28614 - 19968: jis0208<<14 | 0x3E<<7 | 0x18, + 28615 - 19968: jis0212<<14 | 0x27<<7 | 0x5B, + 28616 - 19968: jis0212<<14 | 0x27<<7 | 0x5C, + 28618 - 19968: jis0212<<14 | 0x27<<7 | 0x5D, + 28628 - 19968: jis0208<<14 | 0x3E<<7 | 0x1D, + 28629 - 19968: jis0208<<14 | 0x3E<<7 | 0x1B, + 28632 - 19968: jis0208<<14 | 0x3E<<7 | 0x1E, + 28634 - 19968: jis0212<<14 | 0x28<<7 | 0x00, + 28635 - 19968: jis0208<<14 | 0x3E<<7 | 0x21, + 28638 - 19968: jis0212<<14 | 0x28<<7 | 0x01, + 28639 - 19968: jis0208<<14 | 0x3E<<7 | 0x1A, + 28640 - 19968: jis0208<<14 | 0x18<<7 | 0x49, + 28641 - 19968: jis0208<<14 | 0x26<<7 | 0x07, + 28644 - 19968: jis0208<<14 | 0x3D<<7 | 0x18, + 28648 - 19968: jis0212<<14 | 0x28<<7 | 0x02, + 28649 - 19968: jis0212<<14 | 0x28<<7 | 0x03, + 28651 - 19968: jis0208<<14 | 0x2C<<7 | 0x53, + 28652 - 19968: jis0208<<14 | 0x3E<<7 | 0x1C, + 28654 - 19968: jis0208<<14 | 0x3E<<7 | 0x20, + 28655 - 19968: jis0208<<14 | 0x21<<7 | 0x54, + 28656 - 19968: jis0212<<14 | 0x28<<7 | 0x04, + 28657 - 19968: jis0208<<14 | 0x3E<<7 | 0x1F, + 28659 - 19968: jis0208<<14 | 0x3E<<7 | 0x0A, + 28661 - 19968: jis0208<<14 | 0x59<<7 | 0x4F, + 28662 - 19968: jis0208<<14 | 0x4E<<7 | 0x48, + 28665 - 19968: jis0212<<14 | 0x28<<7 | 0x06, + 28666 - 19968: jis0208<<14 | 0x3E<<7 | 0x24, + 28668 - 19968: jis0212<<14 | 0x28<<7 | 0x07, + 28669 - 19968: jis0212<<14 | 0x28<<7 | 0x08, + 28670 - 19968: jis0208<<14 | 0x3E<<7 | 0x28, + 28672 - 19968: jis0212<<14 | 0x28<<7 | 0x09, + 28673 - 19968: jis0208<<14 | 0x3E<<7 | 0x26, + 28677 - 19968: jis0208<<14 | 0x59<<7 | 0x50, + 28678 - 19968: jis0212<<14 | 0x28<<7 | 0x0B, + 28679 - 19968: jis0208<<14 | 0x59<<7 | 0x51, + 28681 - 19968: jis0208<<14 | 0x3E<<7 | 0x22, + 28683 - 19968: jis0208<<14 | 0x3E<<7 | 0x23, + 28685 - 19968: jis0212<<14 | 0x28<<7 | 0x0D, + 28687 - 19968: jis0208<<14 | 0x3E<<7 | 0x27, + 28689 - 19968: jis0208<<14 | 0x3E<<7 | 0x25, + 28693 - 19968: jis0208<<14 | 0x28<<7 | 0x2D, + 28695 - 19968: jis0212<<14 | 0x28<<7 | 0x0E, + 28696 - 19968: jis0208<<14 | 0x3E<<7 | 0x2D, + 28698 - 19968: jis0208<<14 | 0x3E<<7 | 0x2A, + 28699 - 19968: jis0208<<14 | 0x3E<<7 | 0x29, + 28701 - 19968: jis0208<<14 | 0x3E<<7 | 0x2C, + 28702 - 19968: jis0208<<14 | 0x25<<7 | 0x33, + 28703 - 19968: jis0208<<14 | 0x3E<<7 | 0x2E, + 28704 - 19968: jis0212<<14 | 0x28<<7 | 0x0F, + 28707 - 19968: jis0212<<14 | 0x28<<7 | 0x10, + 28710 - 19968: jis0208<<14 | 0x22<<7 | 0x54, + 28711 - 19968: jis0208<<14 | 0x21<<7 | 0x4C, + 28712 - 19968: jis0208<<14 | 0x59<<7 | 0x52, + 28716 - 19968: jis0208<<14 | 0x1F<<7 | 0x04, + 28719 - 19968: jis0212<<14 | 0x28<<7 | 0x11, + 28720 - 19968: jis0208<<14 | 0x3E<<7 | 0x2F, + 28722 - 19968: jis0208<<14 | 0x3E<<7 | 0x31, + 28724 - 19968: jis0212<<14 | 0x28<<7 | 0x12, + 28727 - 19968: jis0212<<14 | 0x28<<7 | 0x13, + 28729 - 19968: jis0212<<14 | 0x28<<7 | 0x14, + 28732 - 19968: jis0212<<14 | 0x28<<7 | 0x15, + 28734 - 19968: jis0208<<14 | 0x3E<<7 | 0x30, + 28739 - 19968: jis0212<<14 | 0x28<<7 | 0x16, + 28740 - 19968: jis0212<<14 | 0x28<<7 | 0x17, + 28744 - 19968: jis0212<<14 | 0x28<<7 | 0x18, + 28745 - 19968: jis0212<<14 | 0x28<<7 | 0x19, + 28746 - 19968: jis0212<<14 | 0x28<<7 | 0x1A, + 28747 - 19968: jis0212<<14 | 0x28<<7 | 0x1B, + 28748 - 19968: jis0208<<14 | 0x3D<<7 | 0x54, + 28750 - 19968: jis0212<<14 | 0x28<<7 | 0x20, + 28753 - 19968: jis0208<<14 | 0x3E<<7 | 0x32, + 28756 - 19968: jis0212<<14 | 0x28<<7 | 0x1C, + 28757 - 19968: jis0212<<14 | 0x28<<7 | 0x1D, + 28760 - 19968: jis0208<<14 | 0x25<<7 | 0x46, + 28765 - 19968: jis0212<<14 | 0x28<<7 | 0x1E, + 28766 - 19968: jis0212<<14 | 0x28<<7 | 0x1F, + 28771 - 19968: jis0208<<14 | 0x3E<<7 | 0x33, + 28772 - 19968: jis0212<<14 | 0x28<<7 | 0x21, + 28773 - 19968: jis0212<<14 | 0x28<<7 | 0x22, + 28779 - 19968: jis0208<<14 | 0x11<<7 | 0x2F, + 28780 - 19968: jis0212<<14 | 0x28<<7 | 0x23, + 28782 - 19968: jis0212<<14 | 0x28<<7 | 0x24, + 28783 - 19968: jis0208<<14 | 0x24<<7 | 0x53, + 28784 - 19968: jis0208<<14 | 0x12<<7 | 0x04, + 28789 - 19968: jis0212<<14 | 0x28<<7 | 0x25, + 28790 - 19968: jis0212<<14 | 0x28<<7 | 0x26, + 28792 - 19968: jis0208<<14 | 0x14<<7 | 0x43, + 28796 - 19968: jis0208<<14 | 0x1B<<7 | 0x3D, + 28797 - 19968: jis0208<<14 | 0x19<<7 | 0x31, + 28798 - 19968: jis0212<<14 | 0x28<<7 | 0x27, + 28801 - 19968: jis0212<<14 | 0x28<<7 | 0x28, + 28805 - 19968: jis0208<<14 | 0x59<<7 | 0x53, + 28806 - 19968: jis0212<<14 | 0x28<<7 | 0x2A, + 28809 - 19968: jis0208<<14 | 0x2E<<7 | 0x06, + 28810 - 19968: jis0208<<14 | 0x1E<<7 | 0x45, + 28814 - 19968: jis0208<<14 | 0x10<<7 | 0x49, + 28818 - 19968: jis0208<<14 | 0x3E<<7 | 0x35, + 28820 - 19968: jis0212<<14 | 0x28<<7 | 0x2B, + 28821 - 19968: jis0212<<14 | 0x28<<7 | 0x2C, + 28822 - 19968: jis0212<<14 | 0x28<<7 | 0x2D, + 28823 - 19968: jis0212<<14 | 0x28<<7 | 0x2E, + 28824 - 19968: jis0212<<14 | 0x28<<7 | 0x2F, + 28825 - 19968: jis0208<<14 | 0x3E<<7 | 0x34, + 28827 - 19968: jis0212<<14 | 0x28<<7 | 0x30, + 28836 - 19968: jis0212<<14 | 0x28<<7 | 0x31, + 28843 - 19968: jis0208<<14 | 0x59<<7 | 0x54, + 28844 - 19968: jis0208<<14 | 0x3E<<7 | 0x38, + 28845 - 19968: jis0208<<14 | 0x22<<7 | 0x19, + 28846 - 19968: jis0208<<14 | 0x3E<<7 | 0x3B, + 28847 - 19968: jis0208<<14 | 0x3E<<7 | 0x36, + 28848 - 19968: jis0212<<14 | 0x28<<7 | 0x33, + 28849 - 19968: jis0212<<14 | 0x28<<7 | 0x34, + 28851 - 19968: jis0208<<14 | 0x3E<<7 | 0x3A, + 28852 - 19968: jis0212<<14 | 0x28<<7 | 0x35, + 28855 - 19968: jis0212<<14 | 0x28<<7 | 0x36, + 28856 - 19968: jis0208<<14 | 0x3E<<7 | 0x39, + 28857 - 19968: jis0208<<14 | 0x24<<7 | 0x1F, + 28858 - 19968: jis0208<<14 | 0x0F<<7 | 0x38, + 28859 - 19968: jis0208<<14 | 0x58<<7 | 0x06, + 28872 - 19968: jis0208<<14 | 0x2D<<7 | 0x54, + 28874 - 19968: jis0212<<14 | 0x28<<7 | 0x37, + 28875 - 19968: jis0208<<14 | 0x3E<<7 | 0x3D, + 28879 - 19968: jis0208<<14 | 0x10<<7 | 0x07, + 28881 - 19968: jis0212<<14 | 0x28<<7 | 0x38, + 28883 - 19968: jis0212<<14 | 0x28<<7 | 0x39, + 28884 - 19968: jis0212<<14 | 0x28<<7 | 0x3A, + 28885 - 19968: jis0212<<14 | 0x28<<7 | 0x3B, + 28886 - 19968: jis0212<<14 | 0x28<<7 | 0x3C, + 28888 - 19968: jis0212<<14 | 0x28<<7 | 0x3D, + 28889 - 19968: jis0208<<14 | 0x3E<<7 | 0x3F, + 28892 - 19968: jis0212<<14 | 0x28<<7 | 0x3E, + 28893 - 19968: jis0208<<14 | 0x3E<<7 | 0x3E, + 28895 - 19968: jis0208<<14 | 0x3E<<7 | 0x3C, + 28900 - 19968: jis0212<<14 | 0x28<<7 | 0x3F, + 28913 - 19968: jis0208<<14 | 0x3E<<7 | 0x37, + 28921 - 19968: jis0208<<14 | 0x2A<<7 | 0x02, + 28922 - 19968: jis0212<<14 | 0x28<<7 | 0x40, + 28925 - 19968: jis0208<<14 | 0x3E<<7 | 0x41, + 28931 - 19968: jis0212<<14 | 0x28<<7 | 0x41, + 28932 - 19968: jis0208<<14 | 0x59<<7 | 0x56, + 28933 - 19968: jis0212<<14 | 0x28<<7 | 0x43, + 28934 - 19968: jis0212<<14 | 0x28<<7 | 0x44, + 28935 - 19968: jis0212<<14 | 0x28<<7 | 0x45, + 28937 - 19968: jis0208<<14 | 0x3E<<7 | 0x40, + 28939 - 19968: jis0212<<14 | 0x28<<7 | 0x46, + 28940 - 19968: jis0212<<14 | 0x28<<7 | 0x47, + 28943 - 19968: jis0208<<14 | 0x59<<7 | 0x55, + 28948 - 19968: jis0208<<14 | 0x10<<7 | 0x4A, + 28953 - 19968: jis0208<<14 | 0x3E<<7 | 0x43, + 28954 - 19968: jis0208<<14 | 0x29<<7 | 0x11, + 28956 - 19968: jis0208<<14 | 0x3E<<7 | 0x42, + 28958 - 19968: jis0212<<14 | 0x28<<7 | 0x49, + 28960 - 19968: jis0212<<14 | 0x28<<7 | 0x4A, + 28961 - 19968: jis0208<<14 | 0x2B<<7 | 0x14, + 28966 - 19968: jis0208<<14 | 0x1D<<7 | 0x26, + 28971 - 19968: jis0212<<14 | 0x28<<7 | 0x4B, + 28973 - 19968: jis0212<<14 | 0x28<<7 | 0x4C, + 28975 - 19968: jis0212<<14 | 0x28<<7 | 0x4D, + 28976 - 19968: jis0212<<14 | 0x28<<7 | 0x4E, + 28977 - 19968: jis0212<<14 | 0x28<<7 | 0x4F, + 28982 - 19968: jis0208<<14 | 0x20<<7 | 0x12, + 28984 - 19968: jis0212<<14 | 0x28<<7 | 0x50, + 28988 - 19968: jis0208<<14 | 0x1D<<7 | 0x25, + 28993 - 19968: jis0212<<14 | 0x28<<7 | 0x51, + 28997 - 19968: jis0212<<14 | 0x28<<7 | 0x52, + 28998 - 19968: jis0208<<14 | 0x59<<7 | 0x58, + 28999 - 19968: jis0208<<14 | 0x59<<7 | 0x59, + 29001 - 19968: jis0208<<14 | 0x2D<<7 | 0x5A, + 29002 - 19968: jis0212<<14 | 0x28<<7 | 0x55, + 29003 - 19968: jis0212<<14 | 0x28<<7 | 0x56, + 29004 - 19968: jis0208<<14 | 0x3E<<7 | 0x49, + 29006 - 19968: jis0208<<14 | 0x1F<<7 | 0x58, + 29008 - 19968: jis0212<<14 | 0x28<<7 | 0x57, + 29010 - 19968: jis0212<<14 | 0x28<<7 | 0x58, + 29013 - 19968: jis0208<<14 | 0x3E<<7 | 0x45, + 29014 - 19968: jis0208<<14 | 0x3E<<7 | 0x4A, + 29015 - 19968: jis0212<<14 | 0x28<<7 | 0x59, + 29017 - 19968: jis0208<<14 | 0x10<<7 | 0x4B, + 29018 - 19968: jis0212<<14 | 0x28<<7 | 0x5A, + 29020 - 19968: jis0208<<14 | 0x59<<7 | 0x57, + 29022 - 19968: jis0212<<14 | 0x28<<7 | 0x5C, + 29024 - 19968: jis0212<<14 | 0x28<<7 | 0x5D, + 29026 - 19968: jis0208<<14 | 0x3E<<7 | 0x48, + 29028 - 19968: jis0208<<14 | 0x26<<7 | 0x40, + 29029 - 19968: jis0208<<14 | 0x3E<<7 | 0x44, + 29030 - 19968: jis0208<<14 | 0x3E<<7 | 0x47, + 29031 - 19968: jis0208<<14 | 0x1D<<7 | 0x27, + 29032 - 19968: jis0212<<14 | 0x29<<7 | 0x00, + 29033 - 19968: jis0208<<14 | 0x27<<7 | 0x30, + 29036 - 19968: jis0208<<14 | 0x3E<<7 | 0x4B, + 29038 - 19968: jis0208<<14 | 0x1B<<7 | 0x30, + 29049 - 19968: jis0212<<14 | 0x29<<7 | 0x01, + 29053 - 19968: jis0208<<14 | 0x1F<<7 | 0x59, + 29056 - 19968: jis0212<<14 | 0x29<<7 | 0x02, + 29060 - 19968: jis0208<<14 | 0x3E<<7 | 0x4E, + 29061 - 19968: jis0212<<14 | 0x29<<7 | 0x03, + 29063 - 19968: jis0212<<14 | 0x29<<7 | 0x04, + 29064 - 19968: jis0208<<14 | 0x3E<<7 | 0x46, + 29066 - 19968: jis0208<<14 | 0x16<<7 | 0x06, + 29068 - 19968: jis0212<<14 | 0x29<<7 | 0x05, + 29071 - 19968: jis0208<<14 | 0x3E<<7 | 0x4C, + 29074 - 19968: jis0212<<14 | 0x29<<7 | 0x06, + 29076 - 19968: jis0208<<14 | 0x2C<<7 | 0x2F, + 29077 - 19968: jis0208<<14 | 0x3E<<7 | 0x4F, + 29081 - 19968: jis0208<<14 | 0x53<<7 | 0x05, + 29082 - 19968: jis0212<<14 | 0x29<<7 | 0x07, + 29083 - 19968: jis0212<<14 | 0x29<<7 | 0x08, + 29087 - 19968: jis0208<<14 | 0x1C<<7 | 0x2E, + 29088 - 19968: jis0212<<14 | 0x29<<7 | 0x09, + 29090 - 19968: jis0212<<14 | 0x29<<7 | 0x0A, + 29096 - 19968: jis0208<<14 | 0x3E<<7 | 0x50, + 29100 - 19968: jis0208<<14 | 0x3E<<7 | 0x51, + 29103 - 19968: jis0212<<14 | 0x29<<7 | 0x0B, + 29104 - 19968: jis0212<<14 | 0x29<<7 | 0x0C, + 29105 - 19968: jis0208<<14 | 0x26<<7 | 0x0D, + 29106 - 19968: jis0212<<14 | 0x29<<7 | 0x0D, + 29107 - 19968: jis0212<<14 | 0x29<<7 | 0x0E, + 29113 - 19968: jis0208<<14 | 0x3E<<7 | 0x53, + 29114 - 19968: jis0212<<14 | 0x29<<7 | 0x0F, + 29118 - 19968: jis0208<<14 | 0x3E<<7 | 0x54, + 29119 - 19968: jis0212<<14 | 0x29<<7 | 0x10, + 29120 - 19968: jis0212<<14 | 0x29<<7 | 0x11, + 29121 - 19968: jis0208<<14 | 0x59<<7 | 0x5B, + 29123 - 19968: jis0208<<14 | 0x26<<7 | 0x12, + 29124 - 19968: jis0212<<14 | 0x29<<7 | 0x13, + 29128 - 19968: jis0208<<14 | 0x24<<7 | 0x54, + 29129 - 19968: jis0208<<14 | 0x3E<<7 | 0x56, + 29131 - 19968: jis0212<<14 | 0x29<<7 | 0x14, + 29132 - 19968: jis0212<<14 | 0x29<<7 | 0x15, + 29134 - 19968: jis0208<<14 | 0x3E<<7 | 0x58, + 29136 - 19968: jis0208<<14 | 0x2D<<7 | 0x34, + 29138 - 19968: jis0208<<14 | 0x3E<<7 | 0x55, + 29139 - 19968: jis0212<<14 | 0x29<<7 | 0x16, + 29140 - 19968: jis0208<<14 | 0x3E<<7 | 0x57, + 29141 - 19968: jis0208<<14 | 0x10<<7 | 0x4C, + 29142 - 19968: jis0212<<14 | 0x29<<7 | 0x17, + 29143 - 19968: jis0208<<14 | 0x3E<<7 | 0x52, + 29145 - 19968: jis0212<<14 | 0x29<<7 | 0x18, + 29146 - 19968: jis0212<<14 | 0x29<<7 | 0x19, + 29148 - 19968: jis0212<<14 | 0x29<<7 | 0x1A, + 29151 - 19968: jis0208<<14 | 0x32<<7 | 0x3A, + 29152 - 19968: jis0208<<14 | 0x3E<<7 | 0x59, + 29157 - 19968: jis0208<<14 | 0x20<<7 | 0x46, + 29158 - 19968: jis0208<<14 | 0x1A<<7 | 0x17, + 29159 - 19968: jis0208<<14 | 0x3E<<7 | 0x5B, + 29164 - 19968: jis0208<<14 | 0x3E<<7 | 0x5A, + 29165 - 19968: jis0208<<14 | 0x1E<<7 | 0x03, + 29166 - 19968: jis0208<<14 | 0x31<<7 | 0x38, + 29173 - 19968: jis0208<<14 | 0x3E<<7 | 0x5C, + 29176 - 19968: jis0212<<14 | 0x29<<7 | 0x1B, + 29177 - 19968: jis0208<<14 | 0x3F<<7 | 0x00, + 29179 - 19968: jis0208<<14 | 0x3E<<7 | 0x4D, + 29180 - 19968: jis0208<<14 | 0x3E<<7 | 0x5D, + 29182 - 19968: jis0208<<14 | 0x59<<7 | 0x5C, + 29183 - 19968: jis0208<<14 | 0x3F<<7 | 0x01, + 29184 - 19968: jis0212<<14 | 0x29<<7 | 0x1D, + 29190 - 19968: jis0208<<14 | 0x26<<7 | 0x59, + 29191 - 19968: jis0212<<14 | 0x29<<7 | 0x1E, + 29192 - 19968: jis0212<<14 | 0x29<<7 | 0x1F, + 29193 - 19968: jis0212<<14 | 0x29<<7 | 0x20, + 29197 - 19968: jis0208<<14 | 0x3F<<7 | 0x02, + 29200 - 19968: jis0208<<14 | 0x3F<<7 | 0x03, + 29203 - 19968: jis0212<<14 | 0x29<<7 | 0x21, + 29207 - 19968: jis0212<<14 | 0x29<<7 | 0x22, + 29210 - 19968: jis0212<<14 | 0x29<<7 | 0x23, + 29211 - 19968: jis0208<<14 | 0x3F<<7 | 0x04, + 29213 - 19968: jis0212<<14 | 0x29<<7 | 0x24, + 29215 - 19968: jis0212<<14 | 0x29<<7 | 0x25, + 29220 - 19968: jis0212<<14 | 0x29<<7 | 0x26, + 29224 - 19968: jis0208<<14 | 0x3F<<7 | 0x05, + 29226 - 19968: jis0208<<14 | 0x23<<7 | 0x3D, + 29227 - 19968: jis0212<<14 | 0x29<<7 | 0x27, + 29228 - 19968: jis0208<<14 | 0x3F<<7 | 0x07, + 29229 - 19968: jis0208<<14 | 0x3F<<7 | 0x06, + 29231 - 19968: jis0212<<14 | 0x29<<7 | 0x28, + 29232 - 19968: jis0208<<14 | 0x3F<<7 | 0x08, + 29234 - 19968: jis0208<<14 | 0x3F<<7 | 0x09, + 29236 - 19968: jis0212<<14 | 0x29<<7 | 0x29, + 29237 - 19968: jis0208<<14 | 0x1B<<7 | 0x3E, + 29238 - 19968: jis0208<<14 | 0x28<<7 | 0x42, + 29240 - 19968: jis0212<<14 | 0x29<<7 | 0x2A, + 29241 - 19968: jis0212<<14 | 0x29<<7 | 0x2B, + 29242 - 19968: jis0208<<14 | 0x2B<<7 | 0x4B, + 29243 - 19968: jis0208<<14 | 0x3F<<7 | 0x0A, + 29244 - 19968: jis0208<<14 | 0x3F<<7 | 0x0B, + 29245 - 19968: jis0208<<14 | 0x20<<7 | 0x35, + 29246 - 19968: jis0208<<14 | 0x1B<<7 | 0x03, + 29247 - 19968: jis0208<<14 | 0x3F<<7 | 0x0C, + 29248 - 19968: jis0208<<14 | 0x3F<<7 | 0x0D, + 29249 - 19968: jis0212<<14 | 0x29<<7 | 0x2C, + 29250 - 19968: jis0212<<14 | 0x29<<7 | 0x2D, + 29251 - 19968: jis0212<<14 | 0x29<<7 | 0x2E, + 29253 - 19968: jis0212<<14 | 0x29<<7 | 0x2F, + 29254 - 19968: jis0208<<14 | 0x3F<<7 | 0x0E, + 29255 - 19968: jis0208<<14 | 0x29<<7 | 0x31, + 29256 - 19968: jis0208<<14 | 0x27<<7 | 0x26, + 29259 - 19968: jis0208<<14 | 0x3F<<7 | 0x0F, + 29260 - 19968: jis0208<<14 | 0x26<<7 | 0x36, + 29262 - 19968: jis0212<<14 | 0x29<<7 | 0x30, + 29263 - 19968: jis0212<<14 | 0x29<<7 | 0x31, + 29264 - 19968: jis0212<<14 | 0x29<<7 | 0x32, + 29266 - 19968: jis0208<<14 | 0x23<<7 | 0x0C, + 29267 - 19968: jis0212<<14 | 0x29<<7 | 0x33, + 29269 - 19968: jis0212<<14 | 0x29<<7 | 0x34, + 29270 - 19968: jis0212<<14 | 0x29<<7 | 0x35, + 29272 - 19968: jis0208<<14 | 0x3F<<7 | 0x10, + 29273 - 19968: jis0208<<14 | 0x11<<7 | 0x46, + 29274 - 19968: jis0212<<14 | 0x29<<7 | 0x36, + 29275 - 19968: jis0208<<14 | 0x14<<7 | 0x4C, + 29276 - 19968: jis0212<<14 | 0x29<<7 | 0x37, + 29277 - 19968: jis0208<<14 | 0x2B<<7 | 0x25, + 29278 - 19968: jis0212<<14 | 0x29<<7 | 0x38, + 29279 - 19968: jis0208<<14 | 0x2B<<7 | 0x15, + 29280 - 19968: jis0212<<14 | 0x29<<7 | 0x39, + 29281 - 19968: jis0208<<14 | 0x11<<7 | 0x13, + 29282 - 19968: jis0208<<14 | 0x2E<<7 | 0x13, + 29283 - 19968: jis0212<<14 | 0x29<<7 | 0x3A, + 29287 - 19968: jis0208<<14 | 0x2A<<7 | 0x31, + 29288 - 19968: jis0212<<14 | 0x29<<7 | 0x3B, + 29289 - 19968: jis0208<<14 | 0x29<<7 | 0x09, + 29291 - 19968: jis0212<<14 | 0x29<<7 | 0x3C, + 29294 - 19968: jis0212<<14 | 0x29<<7 | 0x3D, + 29295 - 19968: jis0212<<14 | 0x29<<7 | 0x3E, + 29297 - 19968: jis0212<<14 | 0x29<<7 | 0x3F, + 29298 - 19968: jis0208<<14 | 0x1F<<7 | 0x16, + 29300 - 19968: jis0208<<14 | 0x3F<<7 | 0x11, + 29303 - 19968: jis0212<<14 | 0x29<<7 | 0x40, + 29304 - 19968: jis0212<<14 | 0x29<<7 | 0x41, + 29305 - 19968: jis0208<<14 | 0x25<<7 | 0x22, + 29307 - 19968: jis0212<<14 | 0x29<<7 | 0x42, + 29308 - 19968: jis0212<<14 | 0x29<<7 | 0x43, + 29309 - 19968: jis0208<<14 | 0x17<<7 | 0x02, + 29310 - 19968: jis0208<<14 | 0x3F<<7 | 0x12, + 29311 - 19968: jis0212<<14 | 0x29<<7 | 0x44, + 29312 - 19968: jis0208<<14 | 0x19<<7 | 0x33, + 29313 - 19968: jis0208<<14 | 0x3F<<7 | 0x14, + 29314 - 19968: jis0208<<14 | 0x3F<<7 | 0x13, + 29316 - 19968: jis0212<<14 | 0x29<<7 | 0x45, + 29319 - 19968: jis0208<<14 | 0x3F<<7 | 0x15, + 29321 - 19968: jis0212<<14 | 0x29<<7 | 0x46, + 29325 - 19968: jis0212<<14 | 0x29<<7 | 0x47, + 29326 - 19968: jis0212<<14 | 0x29<<7 | 0x48, + 29330 - 19968: jis0208<<14 | 0x3F<<7 | 0x16, + 29331 - 19968: jis0212<<14 | 0x29<<7 | 0x49, + 29334 - 19968: jis0208<<14 | 0x3F<<7 | 0x17, + 29339 - 19968: jis0212<<14 | 0x29<<7 | 0x4A, + 29344 - 19968: jis0208<<14 | 0x14<<7 | 0x1D, + 29346 - 19968: jis0208<<14 | 0x3F<<7 | 0x18, + 29351 - 19968: jis0208<<14 | 0x3F<<7 | 0x19, + 29352 - 19968: jis0212<<14 | 0x29<<7 | 0x4B, + 29356 - 19968: jis0208<<14 | 0x17<<7 | 0x03, + 29357 - 19968: jis0212<<14 | 0x29<<7 | 0x4C, + 29358 - 19968: jis0212<<14 | 0x29<<7 | 0x4D, + 29359 - 19968: jis0208<<14 | 0x27<<7 | 0x27, + 29361 - 19968: jis0208<<14 | 0x59<<7 | 0x5D, + 29362 - 19968: jis0208<<14 | 0x3F<<7 | 0x1B, + 29364 - 19968: jis0212<<14 | 0x29<<7 | 0x4F, + 29366 - 19968: jis0208<<14 | 0x1D<<7 | 0x54, + 29369 - 19968: jis0208<<14 | 0x3F<<7 | 0x1A, + 29374 - 19968: jis0208<<14 | 0x5A<<7 | 0x00, + 29377 - 19968: jis0212<<14 | 0x29<<7 | 0x51, + 29378 - 19968: jis0208<<14 | 0x15<<7 | 0x17, + 29379 - 19968: jis0208<<14 | 0x3F<<7 | 0x1C, + 29380 - 19968: jis0208<<14 | 0x3F<<7 | 0x1E, + 29382 - 19968: jis0208<<14 | 0x3F<<7 | 0x1D, + 29383 - 19968: jis0212<<14 | 0x29<<7 | 0x52, + 29385 - 19968: jis0212<<14 | 0x29<<7 | 0x53, + 29388 - 19968: jis0212<<14 | 0x29<<7 | 0x54, + 29390 - 19968: jis0208<<14 | 0x3F<<7 | 0x1F, + 29392 - 19968: jis0208<<14 | 0x17<<7 | 0x30, + 29394 - 19968: jis0208<<14 | 0x3F<<7 | 0x20, + 29397 - 19968: jis0212<<14 | 0x29<<7 | 0x55, + 29398 - 19968: jis0212<<14 | 0x29<<7 | 0x56, + 29399 - 19968: jis0208<<14 | 0x15<<7 | 0x48, + 29400 - 19968: jis0212<<14 | 0x29<<7 | 0x57, + 29401 - 19968: jis0208<<14 | 0x20<<7 | 0x1F, + 29403 - 19968: jis0208<<14 | 0x18<<7 | 0x5C, + 29407 - 19968: jis0212<<14 | 0x29<<7 | 0x58, + 29408 - 19968: jis0208<<14 | 0x3F<<7 | 0x22, + 29409 - 19968: jis0208<<14 | 0x3F<<7 | 0x23, + 29410 - 19968: jis0208<<14 | 0x3F<<7 | 0x21, + 29413 - 19968: jis0212<<14 | 0x29<<7 | 0x59, + 29417 - 19968: jis0208<<14 | 0x1B<<7 | 0x4C, + 29420 - 19968: jis0208<<14 | 0x25<<7 | 0x27, + 29421 - 19968: jis0208<<14 | 0x15<<7 | 0x18, + 29427 - 19968: jis0212<<14 | 0x29<<7 | 0x5A, + 29428 - 19968: jis0212<<14 | 0x29<<7 | 0x5B, + 29431 - 19968: jis0208<<14 | 0x3F<<7 | 0x25, + 29432 - 19968: jis0208<<14 | 0x22<<7 | 0x0B, + 29433 - 19968: jis0208<<14 | 0x3F<<7 | 0x24, + 29434 - 19968: jis0212<<14 | 0x29<<7 | 0x5C, + 29435 - 19968: jis0212<<14 | 0x29<<7 | 0x5D, + 29436 - 19968: jis0208<<14 | 0x2E<<7 | 0x14, + 29437 - 19968: jis0208<<14 | 0x26<<7 | 0x41, + 29438 - 19968: jis0212<<14 | 0x2A<<7 | 0x00, + 29442 - 19968: jis0212<<14 | 0x2A<<7 | 0x01, + 29444 - 19968: jis0212<<14 | 0x2A<<7 | 0x02, + 29445 - 19968: jis0212<<14 | 0x2A<<7 | 0x03, + 29447 - 19968: jis0212<<14 | 0x2A<<7 | 0x04, + 29450 - 19968: jis0208<<14 | 0x3F<<7 | 0x28, + 29451 - 19968: jis0212<<14 | 0x2A<<7 | 0x05, + 29453 - 19968: jis0212<<14 | 0x2A<<7 | 0x06, + 29458 - 19968: jis0212<<14 | 0x2A<<7 | 0x07, + 29459 - 19968: jis0212<<14 | 0x2A<<7 | 0x08, + 29462 - 19968: jis0208<<14 | 0x3F<<7 | 0x2A, + 29463 - 19968: jis0208<<14 | 0x3F<<7 | 0x27, + 29464 - 19968: jis0212<<14 | 0x2A<<7 | 0x09, + 29465 - 19968: jis0212<<14 | 0x2A<<7 | 0x0A, + 29467 - 19968: jis0208<<14 | 0x2B<<7 | 0x33, + 29468 - 19968: jis0208<<14 | 0x3F<<7 | 0x29, + 29469 - 19968: jis0208<<14 | 0x3F<<7 | 0x2B, + 29470 - 19968: jis0212<<14 | 0x2A<<7 | 0x0B, + 29471 - 19968: jis0208<<14 | 0x2D<<7 | 0x23, + 29474 - 19968: jis0212<<14 | 0x2A<<7 | 0x0C, + 29476 - 19968: jis0208<<14 | 0x5A<<7 | 0x01, + 29477 - 19968: jis0208<<14 | 0x3F<<7 | 0x2F, + 29479 - 19968: jis0212<<14 | 0x2A<<7 | 0x0E, + 29480 - 19968: jis0212<<14 | 0x2A<<7 | 0x0F, + 29481 - 19968: jis0208<<14 | 0x3F<<7 | 0x2E, + 29482 - 19968: jis0208<<14 | 0x22<<7 | 0x55, + 29483 - 19968: jis0208<<14 | 0x26<<7 | 0x0C, + 29484 - 19968: jis0212<<14 | 0x2A<<7 | 0x10, + 29486 - 19968: jis0208<<14 | 0x17<<7 | 0x04, + 29487 - 19968: jis0208<<14 | 0x3F<<7 | 0x2D, + 29489 - 19968: jis0212<<14 | 0x2A<<7 | 0x11, + 29490 - 19968: jis0212<<14 | 0x2A<<7 | 0x12, + 29492 - 19968: jis0208<<14 | 0x3F<<7 | 0x2C, + 29493 - 19968: jis0212<<14 | 0x2A<<7 | 0x13, + 29494 - 19968: jis0208<<14 | 0x2C<<7 | 0x10, + 29495 - 19968: jis0208<<14 | 0x2C<<7 | 0x11, + 29498 - 19968: jis0212<<14 | 0x2A<<7 | 0x14, + 29499 - 19968: jis0212<<14 | 0x2A<<7 | 0x15, + 29501 - 19968: jis0212<<14 | 0x2A<<7 | 0x16, + 29502 - 19968: jis0208<<14 | 0x3F<<7 | 0x30, + 29503 - 19968: jis0208<<14 | 0x10<<7 | 0x4D, + 29507 - 19968: jis0212<<14 | 0x2A<<7 | 0x17, + 29508 - 19968: jis0208<<14 | 0x18<<7 | 0x55, + 29509 - 19968: jis0208<<14 | 0x1A<<7 | 0x41, + 29517 - 19968: jis0212<<14 | 0x2A<<7 | 0x18, + 29518 - 19968: jis0208<<14 | 0x3F<<7 | 0x31, + 29519 - 19968: jis0208<<14 | 0x3F<<7 | 0x32, + 29520 - 19968: jis0212<<14 | 0x2A<<7 | 0x19, + 29522 - 19968: jis0212<<14 | 0x2A<<7 | 0x1A, + 29526 - 19968: jis0212<<14 | 0x2A<<7 | 0x1B, + 29527 - 19968: jis0208<<14 | 0x3F<<7 | 0x34, + 29528 - 19968: jis0212<<14 | 0x2A<<7 | 0x1C, + 29533 - 19968: jis0212<<14 | 0x2A<<7 | 0x1D, + 29534 - 19968: jis0212<<14 | 0x2A<<7 | 0x1E, + 29535 - 19968: jis0212<<14 | 0x2A<<7 | 0x1F, + 29536 - 19968: jis0212<<14 | 0x2A<<7 | 0x20, + 29539 - 19968: jis0208<<14 | 0x1C<<7 | 0x22, + 29542 - 19968: jis0212<<14 | 0x2A<<7 | 0x21, + 29543 - 19968: jis0212<<14 | 0x2A<<7 | 0x22, + 29544 - 19968: jis0208<<14 | 0x3F<<7 | 0x36, + 29545 - 19968: jis0212<<14 | 0x2A<<7 | 0x23, + 29546 - 19968: jis0208<<14 | 0x3F<<7 | 0x35, + 29547 - 19968: jis0212<<14 | 0x2A<<7 | 0x24, + 29548 - 19968: jis0212<<14 | 0x2A<<7 | 0x25, + 29550 - 19968: jis0212<<14 | 0x2A<<7 | 0x26, + 29551 - 19968: jis0212<<14 | 0x2A<<7 | 0x27, + 29552 - 19968: jis0208<<14 | 0x3F<<7 | 0x37, + 29553 - 19968: jis0212<<14 | 0x2A<<7 | 0x28, + 29554 - 19968: jis0208<<14 | 0x12<<7 | 0x2C, + 29557 - 19968: jis0208<<14 | 0x3F<<7 | 0x39, + 29559 - 19968: jis0208<<14 | 0x5A<<7 | 0x03, + 29560 - 19968: jis0208<<14 | 0x3F<<7 | 0x38, + 29561 - 19968: jis0212<<14 | 0x2A<<7 | 0x2A, + 29562 - 19968: jis0208<<14 | 0x3F<<7 | 0x3B, + 29563 - 19968: jis0208<<14 | 0x3F<<7 | 0x3A, + 29564 - 19968: jis0212<<14 | 0x2A<<7 | 0x2B, + 29568 - 19968: jis0212<<14 | 0x2A<<7 | 0x2C, + 29569 - 19968: jis0212<<14 | 0x2A<<7 | 0x2D, + 29571 - 19968: jis0212<<14 | 0x2A<<7 | 0x2E, + 29572 - 19968: jis0208<<14 | 0x17<<7 | 0x1B, + 29573 - 19968: jis0212<<14 | 0x2A<<7 | 0x2F, + 29574 - 19968: jis0212<<14 | 0x2A<<7 | 0x30, + 29575 - 19968: jis0208<<14 | 0x2D<<7 | 0x07, + 29577 - 19968: jis0208<<14 | 0x15<<7 | 0x2B, + 29579 - 19968: jis0208<<14 | 0x11<<7 | 0x05, + 29582 - 19968: jis0212<<14 | 0x2A<<7 | 0x31, + 29584 - 19968: jis0212<<14 | 0x2A<<7 | 0x32, + 29587 - 19968: jis0212<<14 | 0x2A<<7 | 0x33, + 29589 - 19968: jis0212<<14 | 0x2A<<7 | 0x34, + 29590 - 19968: jis0208<<14 | 0x15<<7 | 0x49, + 29591 - 19968: jis0212<<14 | 0x2A<<7 | 0x35, + 29592 - 19968: jis0212<<14 | 0x2A<<7 | 0x36, + 29596 - 19968: jis0212<<14 | 0x2A<<7 | 0x37, + 29598 - 19968: jis0212<<14 | 0x2A<<7 | 0x38, + 29599 - 19968: jis0212<<14 | 0x2A<<7 | 0x39, + 29600 - 19968: jis0212<<14 | 0x2A<<7 | 0x3A, + 29602 - 19968: jis0212<<14 | 0x2A<<7 | 0x3B, + 29605 - 19968: jis0212<<14 | 0x2A<<7 | 0x3C, + 29606 - 19968: jis0212<<14 | 0x2A<<7 | 0x3D, + 29609 - 19968: jis0208<<14 | 0x13<<7 | 0x40, + 29610 - 19968: jis0212<<14 | 0x2A<<7 | 0x3E, + 29611 - 19968: jis0212<<14 | 0x2A<<7 | 0x3F, + 29613 - 19968: jis0212<<14 | 0x2A<<7 | 0x40, + 29618 - 19968: jis0208<<14 | 0x2D<<7 | 0x47, + 29619 - 19968: jis0208<<14 | 0x3F<<7 | 0x3D, + 29621 - 19968: jis0212<<14 | 0x2A<<7 | 0x41, + 29623 - 19968: jis0212<<14 | 0x2A<<7 | 0x42, + 29625 - 19968: jis0212<<14 | 0x2A<<7 | 0x43, + 29627 - 19968: jis0208<<14 | 0x3F<<7 | 0x3F, + 29628 - 19968: jis0212<<14 | 0x2A<<7 | 0x44, + 29629 - 19968: jis0208<<14 | 0x5A<<7 | 0x04, + 29631 - 19968: jis0212<<14 | 0x2A<<7 | 0x46, + 29632 - 19968: jis0208<<14 | 0x3F<<7 | 0x40, + 29634 - 19968: jis0208<<14 | 0x11<<7 | 0x30, + 29637 - 19968: jis0212<<14 | 0x2A<<7 | 0x47, + 29638 - 19968: jis0212<<14 | 0x2A<<7 | 0x48, + 29640 - 19968: jis0208<<14 | 0x3F<<7 | 0x3C, + 29641 - 19968: jis0208<<14 | 0x5A<<7 | 0x05, + 29642 - 19968: jis0208<<14 | 0x1A<<7 | 0x18, + 29643 - 19968: jis0212<<14 | 0x2A<<7 | 0x4A, + 29644 - 19968: jis0212<<14 | 0x2A<<7 | 0x4B, + 29645 - 19968: jis0208<<14 | 0x23<<7 | 0x20, + 29646 - 19968: jis0208<<14 | 0x3F<<7 | 0x3E, + 29647 - 19968: jis0212<<14 | 0x2A<<7 | 0x4C, + 29650 - 19968: jis0208<<14 | 0x5A<<7 | 0x08, + 29651 - 19968: jis0212<<14 | 0x2A<<7 | 0x4E, + 29654 - 19968: jis0208<<14 | 0x5A<<7 | 0x06, + 29657 - 19968: jis0212<<14 | 0x2A<<7 | 0x50, + 29661 - 19968: jis0212<<14 | 0x2A<<7 | 0x51, + 29662 - 19968: jis0208<<14 | 0x3F<<7 | 0x43, + 29664 - 19968: jis0208<<14 | 0x1B<<7 | 0x4D, + 29665 - 19968: jis0212<<14 | 0x2A<<7 | 0x52, + 29667 - 19968: jis0208<<14 | 0x5A<<7 | 0x07, + 29669 - 19968: jis0208<<14 | 0x3F<<7 | 0x41, + 29670 - 19968: jis0212<<14 | 0x2A<<7 | 0x54, + 29671 - 19968: jis0212<<14 | 0x2A<<7 | 0x55, + 29673 - 19968: jis0212<<14 | 0x2A<<7 | 0x56, + 29674 - 19968: jis0208<<14 | 0x16<<7 | 0x1D, + 29677 - 19968: jis0208<<14 | 0x27<<7 | 0x28, + 29678 - 19968: jis0208<<14 | 0x3F<<7 | 0x42, + 29681 - 19968: jis0208<<14 | 0x3F<<7 | 0x5D, + 29684 - 19968: jis0212<<14 | 0x2A<<7 | 0x57, + 29685 - 19968: jis0208<<14 | 0x5A<<7 | 0x0A, + 29687 - 19968: jis0212<<14 | 0x2A<<7 | 0x59, + 29688 - 19968: jis0208<<14 | 0x3F<<7 | 0x48, + 29689 - 19968: jis0212<<14 | 0x2A<<7 | 0x5A, + 29690 - 19968: jis0212<<14 | 0x2A<<7 | 0x5B, + 29691 - 19968: jis0212<<14 | 0x2A<<7 | 0x5C, + 29693 - 19968: jis0212<<14 | 0x2A<<7 | 0x5D, + 29694 - 19968: jis0208<<14 | 0x17<<7 | 0x1C, + 29695 - 19968: jis0212<<14 | 0x2B<<7 | 0x00, + 29696 - 19968: jis0212<<14 | 0x2B<<7 | 0x01, + 29697 - 19968: jis0212<<14 | 0x2B<<7 | 0x02, + 29699 - 19968: jis0208<<14 | 0x14<<7 | 0x44, + 29700 - 19968: jis0212<<14 | 0x2B<<7 | 0x03, + 29701 - 19968: jis0208<<14 | 0x3F<<7 | 0x45, + 29702 - 19968: jis0208<<14 | 0x2C<<7 | 0x5C, + 29703 - 19968: jis0208<<14 | 0x5A<<7 | 0x09, + 29705 - 19968: jis0208<<14 | 0x2D<<7 | 0x0F, + 29706 - 19968: jis0212<<14 | 0x2B<<7 | 0x05, + 29713 - 19968: jis0212<<14 | 0x2B<<7 | 0x06, + 29722 - 19968: jis0212<<14 | 0x2B<<7 | 0x07, + 29723 - 19968: jis0212<<14 | 0x2B<<7 | 0x08, + 29730 - 19968: jis0208<<14 | 0x21<<7 | 0x55, + 29732 - 19968: jis0212<<14 | 0x2B<<7 | 0x09, + 29733 - 19968: jis0208<<14 | 0x3F<<7 | 0x47, + 29734 - 19968: jis0208<<14 | 0x5A<<7 | 0x0B, + 29736 - 19968: jis0212<<14 | 0x2B<<7 | 0x0B, + 29737 - 19968: jis0208<<14 | 0x5A<<7 | 0x0D, + 29738 - 19968: jis0208<<14 | 0x5A<<7 | 0x0C, + 29739 - 19968: jis0212<<14 | 0x2B<<7 | 0x0E, + 29740 - 19968: jis0212<<14 | 0x2B<<7 | 0x0F, + 29741 - 19968: jis0212<<14 | 0x2B<<7 | 0x10, + 29742 - 19968: jis0208<<14 | 0x5A<<7 | 0x0E, + 29743 - 19968: jis0212<<14 | 0x2B<<7 | 0x12, + 29744 - 19968: jis0212<<14 | 0x2B<<7 | 0x13, + 29745 - 19968: jis0212<<14 | 0x2B<<7 | 0x14, + 29746 - 19968: jis0208<<14 | 0x3F<<7 | 0x49, + 29747 - 19968: jis0208<<14 | 0x2D<<7 | 0x35, + 29748 - 19968: jis0208<<14 | 0x15<<7 | 0x36, + 29749 - 19968: jis0208<<14 | 0x27<<7 | 0x5B, + 29750 - 19968: jis0208<<14 | 0x26<<7 | 0x29, + 29753 - 19968: jis0212<<14 | 0x2B<<7 | 0x15, + 29754 - 19968: jis0208<<14 | 0x3F<<7 | 0x4A, + 29759 - 19968: jis0208<<14 | 0x3F<<7 | 0x4C, + 29760 - 19968: jis0212<<14 | 0x2B<<7 | 0x16, + 29761 - 19968: jis0208<<14 | 0x3F<<7 | 0x4F, + 29763 - 19968: jis0212<<14 | 0x2B<<7 | 0x17, + 29764 - 19968: jis0212<<14 | 0x2B<<7 | 0x18, + 29766 - 19968: jis0212<<14 | 0x2B<<7 | 0x19, + 29767 - 19968: jis0212<<14 | 0x2B<<7 | 0x1A, + 29771 - 19968: jis0212<<14 | 0x2B<<7 | 0x1B, + 29773 - 19968: jis0212<<14 | 0x2B<<7 | 0x1C, + 29777 - 19968: jis0212<<14 | 0x2B<<7 | 0x1D, + 29778 - 19968: jis0212<<14 | 0x2B<<7 | 0x1E, + 29781 - 19968: jis0208<<14 | 0x3F<<7 | 0x4B, + 29783 - 19968: jis0212<<14 | 0x2B<<7 | 0x1F, + 29785 - 19968: jis0208<<14 | 0x3F<<7 | 0x4E, + 29786 - 19968: jis0208<<14 | 0x17<<7 | 0x49, + 29787 - 19968: jis0208<<14 | 0x10<<7 | 0x2C, + 29788 - 19968: jis0208<<14 | 0x3F<<7 | 0x50, + 29789 - 19968: jis0212<<14 | 0x2B<<7 | 0x20, + 29790 - 19968: jis0208<<14 | 0x1E<<7 | 0x4F, + 29791 - 19968: jis0208<<14 | 0x3F<<7 | 0x4D, + 29792 - 19968: jis0208<<14 | 0x2D<<7 | 0x3B, + 29794 - 19968: jis0208<<14 | 0x5A<<7 | 0x0F, + 29795 - 19968: jis0208<<14 | 0x3F<<7 | 0x53, + 29796 - 19968: jis0208<<14 | 0x53<<7 | 0x03, + 29798 - 19968: jis0212<<14 | 0x2B<<7 | 0x22, + 29799 - 19968: jis0212<<14 | 0x2B<<7 | 0x23, + 29800 - 19968: jis0212<<14 | 0x2B<<7 | 0x24, + 29801 - 19968: jis0208<<14 | 0x3F<<7 | 0x51, + 29802 - 19968: jis0208<<14 | 0x3F<<7 | 0x54, + 29803 - 19968: jis0212<<14 | 0x2B<<7 | 0x25, + 29805 - 19968: jis0212<<14 | 0x2B<<7 | 0x26, + 29806 - 19968: jis0212<<14 | 0x2B<<7 | 0x27, + 29807 - 19968: jis0208<<14 | 0x3F<<7 | 0x46, + 29808 - 19968: jis0208<<14 | 0x3F<<7 | 0x52, + 29809 - 19968: jis0212<<14 | 0x2B<<7 | 0x28, + 29810 - 19968: jis0212<<14 | 0x2B<<7 | 0x29, + 29811 - 19968: jis0208<<14 | 0x19<<7 | 0x1B, + 29814 - 19968: jis0208<<14 | 0x3F<<7 | 0x55, + 29822 - 19968: jis0208<<14 | 0x3F<<7 | 0x56, + 29824 - 19968: jis0212<<14 | 0x2B<<7 | 0x2A, + 29825 - 19968: jis0212<<14 | 0x2B<<7 | 0x2B, + 29827 - 19968: jis0208<<14 | 0x2C<<7 | 0x5D, + 29829 - 19968: jis0212<<14 | 0x2B<<7 | 0x2C, + 29830 - 19968: jis0212<<14 | 0x2B<<7 | 0x2D, + 29831 - 19968: jis0212<<14 | 0x2B<<7 | 0x2E, + 29833 - 19968: jis0208<<14 | 0x5A<<7 | 0x10, + 29835 - 19968: jis0208<<14 | 0x3F<<7 | 0x57, + 29839 - 19968: jis0212<<14 | 0x2B<<7 | 0x30, + 29840 - 19968: jis0212<<14 | 0x2B<<7 | 0x31, + 29841 - 19968: jis0212<<14 | 0x2B<<7 | 0x32, + 29842 - 19968: jis0212<<14 | 0x2B<<7 | 0x33, + 29848 - 19968: jis0212<<14 | 0x2B<<7 | 0x34, + 29849 - 19968: jis0212<<14 | 0x2B<<7 | 0x35, + 29850 - 19968: jis0212<<14 | 0x2B<<7 | 0x36, + 29852 - 19968: jis0212<<14 | 0x2B<<7 | 0x37, + 29854 - 19968: jis0208<<14 | 0x3F<<7 | 0x58, + 29855 - 19968: jis0208<<14 | 0x5A<<7 | 0x11, + 29856 - 19968: jis0212<<14 | 0x2B<<7 | 0x39, + 29857 - 19968: jis0212<<14 | 0x2B<<7 | 0x3A, + 29858 - 19968: jis0208<<14 | 0x3F<<7 | 0x44, + 29859 - 19968: jis0212<<14 | 0x2B<<7 | 0x3B, + 29862 - 19968: jis0212<<14 | 0x2B<<7 | 0x3C, + 29863 - 19968: jis0208<<14 | 0x3F<<7 | 0x59, + 29864 - 19968: jis0212<<14 | 0x2B<<7 | 0x3D, + 29865 - 19968: jis0212<<14 | 0x2B<<7 | 0x3E, + 29866 - 19968: jis0212<<14 | 0x2B<<7 | 0x3F, + 29867 - 19968: jis0212<<14 | 0x2B<<7 | 0x40, + 29870 - 19968: jis0212<<14 | 0x2B<<7 | 0x41, + 29871 - 19968: jis0212<<14 | 0x2B<<7 | 0x42, + 29872 - 19968: jis0208<<14 | 0x13<<7 | 0x23, + 29873 - 19968: jis0212<<14 | 0x2B<<7 | 0x43, + 29874 - 19968: jis0212<<14 | 0x2B<<7 | 0x44, + 29877 - 19968: jis0212<<14 | 0x2B<<7 | 0x45, + 29881 - 19968: jis0212<<14 | 0x2B<<7 | 0x46, + 29883 - 19968: jis0212<<14 | 0x2B<<7 | 0x47, + 29885 - 19968: jis0208<<14 | 0x1B<<7 | 0x04, + 29887 - 19968: jis0212<<14 | 0x2B<<7 | 0x48, + 29896 - 19968: jis0212<<14 | 0x2B<<7 | 0x49, + 29897 - 19968: jis0212<<14 | 0x2B<<7 | 0x4A, + 29898 - 19968: jis0208<<14 | 0x3F<<7 | 0x5A, + 29900 - 19968: jis0212<<14 | 0x2B<<7 | 0x4B, + 29903 - 19968: jis0208<<14 | 0x3F<<7 | 0x5B, + 29904 - 19968: jis0212<<14 | 0x2B<<7 | 0x4C, + 29907 - 19968: jis0212<<14 | 0x2B<<7 | 0x4D, + 29908 - 19968: jis0208<<14 | 0x3F<<7 | 0x5C, + 29912 - 19968: jis0212<<14 | 0x2B<<7 | 0x4E, + 29914 - 19968: jis0212<<14 | 0x2B<<7 | 0x4F, + 29915 - 19968: jis0212<<14 | 0x2B<<7 | 0x50, + 29916 - 19968: jis0208<<14 | 0x10<<7 | 0x1A, + 29918 - 19968: jis0212<<14 | 0x2B<<7 | 0x51, + 29919 - 19968: jis0212<<14 | 0x2B<<7 | 0x52, + 29920 - 19968: jis0208<<14 | 0x40<<7 | 0x00, + 29922 - 19968: jis0208<<14 | 0x28<<7 | 0x1A, + 29923 - 19968: jis0208<<14 | 0x40<<7 | 0x01, + 29924 - 19968: jis0212<<14 | 0x2B<<7 | 0x53, + 29926 - 19968: jis0208<<14 | 0x13<<7 | 0x03, + 29927 - 19968: jis0208<<14 | 0x40<<7 | 0x02, + 29928 - 19968: jis0212<<14 | 0x2B<<7 | 0x54, + 29929 - 19968: jis0208<<14 | 0x40<<7 | 0x03, + 29930 - 19968: jis0212<<14 | 0x2B<<7 | 0x55, + 29931 - 19968: jis0212<<14 | 0x2B<<7 | 0x56, + 29934 - 19968: jis0208<<14 | 0x40<<7 | 0x04, + 29935 - 19968: jis0212<<14 | 0x2B<<7 | 0x57, + 29936 - 19968: jis0208<<14 | 0x40<<7 | 0x06, + 29937 - 19968: jis0208<<14 | 0x40<<7 | 0x07, + 29938 - 19968: jis0208<<14 | 0x40<<7 | 0x05, + 29940 - 19968: jis0212<<14 | 0x2B<<7 | 0x58, + 29942 - 19968: jis0208<<14 | 0x28<<7 | 0x32, + 29943 - 19968: jis0208<<14 | 0x40<<7 | 0x09, + 29944 - 19968: jis0208<<14 | 0x40<<7 | 0x08, + 29946 - 19968: jis0212<<14 | 0x2B<<7 | 0x59, + 29947 - 19968: jis0212<<14 | 0x2B<<7 | 0x5A, + 29948 - 19968: jis0212<<14 | 0x2B<<7 | 0x5B, + 29951 - 19968: jis0212<<14 | 0x2B<<7 | 0x5C, + 29953 - 19968: jis0208<<14 | 0x5A<<7 | 0x12, + 29955 - 19968: jis0208<<14 | 0x40<<7 | 0x0B, + 29956 - 19968: jis0208<<14 | 0x40<<7 | 0x0A, + 29957 - 19968: jis0208<<14 | 0x40<<7 | 0x0C, + 29958 - 19968: jis0212<<14 | 0x2B<<7 | 0x5D, + 29964 - 19968: jis0208<<14 | 0x40<<7 | 0x0D, + 29965 - 19968: jis0208<<14 | 0x40<<7 | 0x0F, + 29966 - 19968: jis0208<<14 | 0x40<<7 | 0x0E, + 29969 - 19968: jis0208<<14 | 0x18<<7 | 0x58, + 29970 - 19968: jis0212<<14 | 0x2C<<7 | 0x00, + 29971 - 19968: jis0208<<14 | 0x40<<7 | 0x11, + 29973 - 19968: jis0208<<14 | 0x40<<7 | 0x10, + 29974 - 19968: jis0212<<14 | 0x2C<<7 | 0x01, + 29975 - 19968: jis0212<<14 | 0x2C<<7 | 0x02, + 29976 - 19968: jis0208<<14 | 0x13<<7 | 0x24, + 29978 - 19968: jis0208<<14 | 0x1E<<7 | 0x32, + 29980 - 19968: jis0208<<14 | 0x24<<7 | 0x1B, + 29982 - 19968: jis0208<<14 | 0x40<<7 | 0x12, + 29983 - 19968: jis0208<<14 | 0x1F<<7 | 0x17, + 29984 - 19968: jis0212<<14 | 0x2C<<7 | 0x03, + 29985 - 19968: jis0212<<14 | 0x2C<<7 | 0x04, + 29987 - 19968: jis0208<<14 | 0x1A<<7 | 0x19, + 29988 - 19968: jis0212<<14 | 0x2C<<7 | 0x05, + 29989 - 19968: jis0208<<14 | 0x10<<7 | 0x58, + 29990 - 19968: jis0208<<14 | 0x40<<7 | 0x13, + 29991 - 19968: jis0212<<14 | 0x2C<<7 | 0x06, + 29992 - 19968: jis0208<<14 | 0x2C<<7 | 0x30, + 29993 - 19968: jis0212<<14 | 0x2C<<7 | 0x07, + 29994 - 19968: jis0212<<14 | 0x2C<<7 | 0x08, + 29995 - 19968: jis0208<<14 | 0x29<<7 | 0x42, + 29996 - 19968: jis0208<<14 | 0x40<<7 | 0x14, + 29999 - 19968: jis0208<<14 | 0x58<<7 | 0x4B, + 30000 - 19968: jis0208<<14 | 0x24<<7 | 0x23, + 30001 - 19968: jis0208<<14 | 0x2C<<7 | 0x12, + 30002 - 19968: jis0208<<14 | 0x18<<7 | 0x22, + 30003 - 19968: jis0208<<14 | 0x1E<<7 | 0x1C, + 30006 - 19968: jis0212<<14 | 0x2C<<7 | 0x0A, + 30007 - 19968: jis0208<<14 | 0x22<<7 | 0x2A, + 30008 - 19968: jis0208<<14 | 0x31<<7 | 0x13, + 30009 - 19968: jis0212<<14 | 0x2C<<7 | 0x0B, + 30010 - 19968: jis0208<<14 | 0x23<<7 | 0x0D, + 30011 - 19968: jis0208<<14 | 0x11<<7 | 0x47, + 30012 - 19968: jis0208<<14 | 0x40<<7 | 0x15, + 30013 - 19968: jis0212<<14 | 0x2C<<7 | 0x0C, + 30014 - 19968: jis0212<<14 | 0x2C<<7 | 0x0D, + 30015 - 19968: jis0212<<14 | 0x2C<<7 | 0x0E, + 30016 - 19968: jis0212<<14 | 0x2C<<7 | 0x0F, + 30019 - 19968: jis0212<<14 | 0x2C<<7 | 0x10, + 30020 - 19968: jis0208<<14 | 0x40<<7 | 0x16, + 30022 - 19968: jis0208<<14 | 0x40<<7 | 0x1B, + 30023 - 19968: jis0212<<14 | 0x2C<<7 | 0x11, + 30024 - 19968: jis0212<<14 | 0x2C<<7 | 0x12, + 30025 - 19968: jis0208<<14 | 0x40<<7 | 0x19, + 30026 - 19968: jis0208<<14 | 0x40<<7 | 0x18, + 30027 - 19968: jis0208<<14 | 0x39<<7 | 0x21, + 30028 - 19968: jis0208<<14 | 0x12<<7 | 0x05, + 30029 - 19968: jis0208<<14 | 0x40<<7 | 0x17, + 30030 - 19968: jis0212<<14 | 0x2C<<7 | 0x13, + 30031 - 19968: jis0208<<14 | 0x0F<<7 | 0x39, + 30032 - 19968: jis0212<<14 | 0x2C<<7 | 0x14, + 30033 - 19968: jis0208<<14 | 0x27<<7 | 0x09, + 30034 - 19968: jis0212<<14 | 0x2C<<7 | 0x15, + 30036 - 19968: jis0208<<14 | 0x27<<7 | 0x29, + 30039 - 19968: jis0212<<14 | 0x2C<<7 | 0x16, + 30041 - 19968: jis0208<<14 | 0x2D<<7 | 0x10, + 30042 - 19968: jis0208<<14 | 0x40<<7 | 0x1C, + 30043 - 19968: jis0208<<14 | 0x40<<7 | 0x1A, + 30044 - 19968: jis0208<<14 | 0x22<<7 | 0x3B, + 30045 - 19968: jis0208<<14 | 0x1F<<7 | 0x05, + 30046 - 19968: jis0212<<14 | 0x2C<<7 | 0x17, + 30047 - 19968: jis0212<<14 | 0x2C<<7 | 0x18, + 30048 - 19968: jis0208<<14 | 0x27<<7 | 0x0A, + 30049 - 19968: jis0212<<14 | 0x2C<<7 | 0x19, + 30050 - 19968: jis0208<<14 | 0x28<<7 | 0x0C, + 30052 - 19968: jis0208<<14 | 0x40<<7 | 0x1E, + 30053 - 19968: jis0208<<14 | 0x2D<<7 | 0x0B, + 30054 - 19968: jis0208<<14 | 0x16<<7 | 0x2C, + 30055 - 19968: jis0208<<14 | 0x40<<7 | 0x1F, + 30057 - 19968: jis0208<<14 | 0x40<<7 | 0x1D, + 30058 - 19968: jis0208<<14 | 0x27<<7 | 0x35, + 30059 - 19968: jis0208<<14 | 0x40<<7 | 0x20, + 30061 - 19968: jis0208<<14 | 0x40<<7 | 0x21, + 30063 - 19968: jis0208<<14 | 0x5A<<7 | 0x13, + 30064 - 19968: jis0208<<14 | 0x0F<<7 | 0x3A, + 30065 - 19968: jis0212<<14 | 0x2C<<7 | 0x1B, + 30067 - 19968: jis0208<<14 | 0x1D<<7 | 0x55, + 30068 - 19968: jis0208<<14 | 0x40<<7 | 0x26, + 30070 - 19968: jis0208<<14 | 0x40<<7 | 0x23, + 30071 - 19968: jis0208<<14 | 0x25<<7 | 0x4C, + 30072 - 19968: jis0208<<14 | 0x40<<7 | 0x22, + 30073 - 19968: jis0212<<14 | 0x2C<<7 | 0x1C, + 30074 - 19968: jis0212<<14 | 0x2C<<7 | 0x1D, + 30075 - 19968: jis0212<<14 | 0x2C<<7 | 0x1E, + 30076 - 19968: jis0212<<14 | 0x2C<<7 | 0x1F, + 30077 - 19968: jis0212<<14 | 0x2C<<7 | 0x20, + 30078 - 19968: jis0212<<14 | 0x2C<<7 | 0x21, + 30079 - 19968: jis0208<<14 | 0x14<<7 | 0x05, + 30081 - 19968: jis0212<<14 | 0x2C<<7 | 0x22, + 30082 - 19968: jis0208<<14 | 0x40<<7 | 0x29, + 30085 - 19968: jis0212<<14 | 0x2C<<7 | 0x23, + 30086 - 19968: jis0208<<14 | 0x40<<7 | 0x24, + 30087 - 19968: jis0208<<14 | 0x40<<7 | 0x25, + 30089 - 19968: jis0208<<14 | 0x40<<7 | 0x28, + 30090 - 19968: jis0208<<14 | 0x40<<7 | 0x27, + 30091 - 19968: jis0208<<14 | 0x28<<7 | 0x04, + 30094 - 19968: jis0208<<14 | 0x20<<7 | 0x21, + 30095 - 19968: jis0208<<14 | 0x20<<7 | 0x20, + 30096 - 19968: jis0212<<14 | 0x2C<<7 | 0x24, + 30097 - 19968: jis0208<<14 | 0x14<<7 | 0x1E, + 30098 - 19968: jis0212<<14 | 0x2C<<7 | 0x25, + 30099 - 19968: jis0212<<14 | 0x2C<<7 | 0x26, + 30100 - 19968: jis0208<<14 | 0x40<<7 | 0x2A, + 30101 - 19968: jis0212<<14 | 0x2C<<7 | 0x27, + 30105 - 19968: jis0212<<14 | 0x2C<<7 | 0x28, + 30106 - 19968: jis0208<<14 | 0x40<<7 | 0x2B, + 30108 - 19968: jis0212<<14 | 0x2C<<7 | 0x29, + 30109 - 19968: jis0208<<14 | 0x40<<7 | 0x2C, + 30114 - 19968: jis0212<<14 | 0x2C<<7 | 0x2A, + 30115 - 19968: jis0208<<14 | 0x40<<7 | 0x2E, + 30116 - 19968: jis0212<<14 | 0x2C<<7 | 0x2B, + 30117 - 19968: jis0208<<14 | 0x40<<7 | 0x2D, + 30123 - 19968: jis0208<<14 | 0x10<<7 | 0x35, + 30129 - 19968: jis0208<<14 | 0x40<<7 | 0x36, + 30130 - 19968: jis0208<<14 | 0x27<<7 | 0x47, + 30131 - 19968: jis0208<<14 | 0x40<<7 | 0x30, + 30132 - 19968: jis0212<<14 | 0x2C<<7 | 0x2C, + 30133 - 19968: jis0208<<14 | 0x40<<7 | 0x32, + 30136 - 19968: jis0208<<14 | 0x40<<7 | 0x34, + 30137 - 19968: jis0208<<14 | 0x1E<<7 | 0x1D, + 30138 - 19968: jis0212<<14 | 0x2C<<7 | 0x2D, + 30140 - 19968: jis0208<<14 | 0x40<<7 | 0x35, + 30141 - 19968: jis0208<<14 | 0x40<<7 | 0x33, + 30142 - 19968: jis0208<<14 | 0x1B<<7 | 0x1F, + 30143 - 19968: jis0212<<14 | 0x2C<<7 | 0x2E, + 30144 - 19968: jis0212<<14 | 0x2C<<7 | 0x2F, + 30145 - 19968: jis0212<<14 | 0x2C<<7 | 0x30, + 30146 - 19968: jis0208<<14 | 0x40<<7 | 0x2F, + 30147 - 19968: jis0208<<14 | 0x40<<7 | 0x31, + 30148 - 19968: jis0212<<14 | 0x2C<<7 | 0x31, + 30149 - 19968: jis0208<<14 | 0x28<<7 | 0x21, + 30150 - 19968: jis0212<<14 | 0x2C<<7 | 0x32, + 30151 - 19968: jis0208<<14 | 0x1D<<7 | 0x28, + 30154 - 19968: jis0208<<14 | 0x40<<7 | 0x38, + 30156 - 19968: jis0212<<14 | 0x2C<<7 | 0x33, + 30157 - 19968: jis0208<<14 | 0x40<<7 | 0x37, + 30158 - 19968: jis0212<<14 | 0x2C<<7 | 0x34, + 30159 - 19968: jis0212<<14 | 0x2C<<7 | 0x35, + 30162 - 19968: jis0208<<14 | 0x40<<7 | 0x39, + 30164 - 19968: jis0208<<14 | 0x1B<<7 | 0x05, + 30165 - 19968: jis0208<<14 | 0x19<<7 | 0x0E, + 30167 - 19968: jis0212<<14 | 0x2C<<7 | 0x36, + 30168 - 19968: jis0208<<14 | 0x24<<7 | 0x56, + 30169 - 19968: jis0208<<14 | 0x40<<7 | 0x3A, + 30171 - 19968: jis0208<<14 | 0x23<<7 | 0x2A, + 30172 - 19968: jis0212<<14 | 0x2C<<7 | 0x37, + 30174 - 19968: jis0208<<14 | 0x40<<7 | 0x3C, + 30175 - 19968: jis0212<<14 | 0x2C<<7 | 0x38, + 30176 - 19968: jis0212<<14 | 0x2C<<7 | 0x39, + 30177 - 19968: jis0212<<14 | 0x2C<<7 | 0x3A, + 30178 - 19968: jis0208<<14 | 0x2D<<7 | 0x00, + 30179 - 19968: jis0208<<14 | 0x40<<7 | 0x3B, + 30180 - 19968: jis0212<<14 | 0x2C<<7 | 0x3B, + 30183 - 19968: jis0212<<14 | 0x2C<<7 | 0x3C, + 30185 - 19968: jis0208<<14 | 0x20<<7 | 0x48, + 30188 - 19968: jis0212<<14 | 0x2C<<7 | 0x3D, + 30190 - 19968: jis0212<<14 | 0x2C<<7 | 0x3E, + 30191 - 19968: jis0212<<14 | 0x2C<<7 | 0x3F, + 30192 - 19968: jis0208<<14 | 0x40<<7 | 0x41, + 30193 - 19968: jis0212<<14 | 0x2C<<7 | 0x40, + 30194 - 19968: jis0208<<14 | 0x40<<7 | 0x43, + 30195 - 19968: jis0208<<14 | 0x40<<7 | 0x44, + 30196 - 19968: jis0208<<14 | 0x22<<7 | 0x33, + 30201 - 19968: jis0212<<14 | 0x2C<<7 | 0x41, + 30202 - 19968: jis0208<<14 | 0x40<<7 | 0x42, + 30204 - 19968: jis0208<<14 | 0x40<<7 | 0x3F, + 30206 - 19968: jis0208<<14 | 0x40<<7 | 0x3D, + 30207 - 19968: jis0208<<14 | 0x40<<7 | 0x3E, + 30208 - 19968: jis0212<<14 | 0x2C<<7 | 0x42, + 30209 - 19968: jis0208<<14 | 0x40<<7 | 0x40, + 30210 - 19968: jis0212<<14 | 0x2C<<7 | 0x43, + 30211 - 19968: jis0212<<14 | 0x2C<<7 | 0x44, + 30212 - 19968: jis0212<<14 | 0x2C<<7 | 0x45, + 30215 - 19968: jis0212<<14 | 0x2C<<7 | 0x46, + 30216 - 19968: jis0212<<14 | 0x2C<<7 | 0x47, + 30217 - 19968: jis0208<<14 | 0x40<<7 | 0x47, + 30218 - 19968: jis0212<<14 | 0x2C<<7 | 0x48, + 30219 - 19968: jis0208<<14 | 0x40<<7 | 0x45, + 30220 - 19968: jis0212<<14 | 0x2C<<7 | 0x49, + 30221 - 19968: jis0208<<14 | 0x40<<7 | 0x46, + 30223 - 19968: jis0212<<14 | 0x2C<<7 | 0x4A, + 30226 - 19968: jis0212<<14 | 0x2C<<7 | 0x4B, + 30227 - 19968: jis0212<<14 | 0x2C<<7 | 0x4C, + 30229 - 19968: jis0212<<14 | 0x2C<<7 | 0x4D, + 30230 - 19968: jis0212<<14 | 0x2C<<7 | 0x4E, + 30233 - 19968: jis0212<<14 | 0x2C<<7 | 0x4F, + 30235 - 19968: jis0212<<14 | 0x2C<<7 | 0x50, + 30236 - 19968: jis0212<<14 | 0x2C<<7 | 0x51, + 30237 - 19968: jis0212<<14 | 0x2C<<7 | 0x52, + 30238 - 19968: jis0212<<14 | 0x2C<<7 | 0x53, + 30239 - 19968: jis0208<<14 | 0x40<<7 | 0x48, + 30240 - 19968: jis0208<<14 | 0x40<<7 | 0x4A, + 30241 - 19968: jis0208<<14 | 0x40<<7 | 0x4B, + 30242 - 19968: jis0208<<14 | 0x40<<7 | 0x4C, + 30243 - 19968: jis0212<<14 | 0x2C<<7 | 0x54, + 30244 - 19968: jis0208<<14 | 0x40<<7 | 0x4D, + 30245 - 19968: jis0212<<14 | 0x2C<<7 | 0x55, + 30246 - 19968: jis0212<<14 | 0x2C<<7 | 0x56, + 30247 - 19968: jis0208<<14 | 0x40<<7 | 0x49, + 30249 - 19968: jis0212<<14 | 0x2C<<7 | 0x57, + 30253 - 19968: jis0212<<14 | 0x2C<<7 | 0x58, + 30256 - 19968: jis0208<<14 | 0x40<<7 | 0x4F, + 30258 - 19968: jis0212<<14 | 0x2C<<7 | 0x59, + 30259 - 19968: jis0212<<14 | 0x2C<<7 | 0x5A, + 30260 - 19968: jis0208<<14 | 0x40<<7 | 0x4E, + 30261 - 19968: jis0212<<14 | 0x2C<<7 | 0x5B, + 30264 - 19968: jis0212<<14 | 0x2C<<7 | 0x5C, + 30265 - 19968: jis0212<<14 | 0x2C<<7 | 0x5D, + 30266 - 19968: jis0212<<14 | 0x2D<<7 | 0x00, + 30267 - 19968: jis0208<<14 | 0x40<<7 | 0x50, + 30268 - 19968: jis0212<<14 | 0x2D<<7 | 0x01, + 30272 - 19968: jis0212<<14 | 0x2D<<7 | 0x03, + 30273 - 19968: jis0212<<14 | 0x2D<<7 | 0x04, + 30274 - 19968: jis0208<<14 | 0x2D<<7 | 0x24, + 30275 - 19968: jis0212<<14 | 0x2D<<7 | 0x05, + 30276 - 19968: jis0212<<14 | 0x2D<<7 | 0x06, + 30277 - 19968: jis0212<<14 | 0x2D<<7 | 0x07, + 30278 - 19968: jis0208<<14 | 0x40<<7 | 0x53, + 30279 - 19968: jis0208<<14 | 0x40<<7 | 0x51, + 30280 - 19968: jis0208<<14 | 0x40<<7 | 0x52, + 30281 - 19968: jis0212<<14 | 0x2D<<7 | 0x08, + 30282 - 19968: jis0212<<14 | 0x2D<<7 | 0x02, + 30283 - 19968: jis0212<<14 | 0x2D<<7 | 0x09, + 30284 - 19968: jis0208<<14 | 0x13<<7 | 0x41, + 30290 - 19968: jis0208<<14 | 0x2B<<7 | 0x5D, + 30293 - 19968: jis0212<<14 | 0x2D<<7 | 0x0A, + 30294 - 19968: jis0208<<14 | 0x29<<7 | 0x29, + 30296 - 19968: jis0208<<14 | 0x40<<7 | 0x55, + 30297 - 19968: jis0212<<14 | 0x2D<<7 | 0x0B, + 30300 - 19968: jis0208<<14 | 0x40<<7 | 0x54, + 30303 - 19968: jis0212<<14 | 0x2D<<7 | 0x0C, + 30305 - 19968: jis0208<<14 | 0x40<<7 | 0x56, + 30306 - 19968: jis0208<<14 | 0x40<<7 | 0x57, + 30308 - 19968: jis0212<<14 | 0x2D<<7 | 0x0D, + 30309 - 19968: jis0212<<14 | 0x2D<<7 | 0x0E, + 30311 - 19968: jis0208<<14 | 0x40<<7 | 0x5B, + 30312 - 19968: jis0208<<14 | 0x40<<7 | 0x58, + 30313 - 19968: jis0208<<14 | 0x40<<7 | 0x59, + 30314 - 19968: jis0208<<14 | 0x40<<7 | 0x5A, + 30316 - 19968: jis0208<<14 | 0x40<<7 | 0x5C, + 30317 - 19968: jis0212<<14 | 0x2D<<7 | 0x0F, + 30318 - 19968: jis0212<<14 | 0x2D<<7 | 0x10, + 30319 - 19968: jis0212<<14 | 0x2D<<7 | 0x11, + 30320 - 19968: jis0208<<14 | 0x40<<7 | 0x5D, + 30321 - 19968: jis0212<<14 | 0x2D<<7 | 0x12, + 30322 - 19968: jis0208<<14 | 0x41<<7 | 0x00, + 30324 - 19968: jis0212<<14 | 0x2D<<7 | 0x13, + 30326 - 19968: jis0208<<14 | 0x41<<7 | 0x01, + 30328 - 19968: jis0208<<14 | 0x41<<7 | 0x02, + 30330 - 19968: jis0208<<14 | 0x27<<7 | 0x0E, + 30331 - 19968: jis0208<<14 | 0x24<<7 | 0x2F, + 30332 - 19968: jis0208<<14 | 0x41<<7 | 0x03, + 30333 - 19968: jis0208<<14 | 0x26<<7 | 0x51, + 30334 - 19968: jis0208<<14 | 0x28<<7 | 0x13, + 30336 - 19968: jis0208<<14 | 0x41<<7 | 0x04, + 30337 - 19968: jis0212<<14 | 0x2D<<7 | 0x14, + 30338 - 19968: jis0208<<14 | 0x5A<<7 | 0x14, + 30339 - 19968: jis0208<<14 | 0x41<<7 | 0x05, + 30340 - 19968: jis0208<<14 | 0x24<<7 | 0x09, + 30341 - 19968: jis0212<<14 | 0x2D<<7 | 0x15, + 30342 - 19968: jis0208<<14 | 0x12<<7 | 0x06, + 30343 - 19968: jis0208<<14 | 0x18<<7 | 0x23, + 30344 - 19968: jis0208<<14 | 0x41<<7 | 0x06, + 30347 - 19968: jis0208<<14 | 0x41<<7 | 0x07, + 30348 - 19968: jis0212<<14 | 0x2D<<7 | 0x16, + 30349 - 19968: jis0212<<14 | 0x2D<<7 | 0x17, + 30350 - 19968: jis0208<<14 | 0x41<<7 | 0x08, + 30352 - 19968: jis0208<<14 | 0x1A<<7 | 0x08, + 30355 - 19968: jis0208<<14 | 0x41<<7 | 0x0A, + 30357 - 19968: jis0212<<14 | 0x2D<<7 | 0x18, + 30358 - 19968: jis0208<<14 | 0x41<<7 | 0x09, + 30361 - 19968: jis0208<<14 | 0x41<<7 | 0x0B, + 30362 - 19968: jis0208<<14 | 0x41<<7 | 0x0C, + 30363 - 19968: jis0208<<14 | 0x5A<<7 | 0x17, + 30364 - 19968: jis0208<<14 | 0x5A<<7 | 0x15, + 30365 - 19968: jis0212<<14 | 0x2D<<7 | 0x1B, + 30366 - 19968: jis0208<<14 | 0x5A<<7 | 0x16, + 30367 - 19968: jis0212<<14 | 0x2D<<7 | 0x1C, + 30368 - 19968: jis0212<<14 | 0x2D<<7 | 0x1D, + 30370 - 19968: jis0212<<14 | 0x2D<<7 | 0x1E, + 30371 - 19968: jis0212<<14 | 0x2D<<7 | 0x1F, + 30372 - 19968: jis0212<<14 | 0x2D<<7 | 0x20, + 30373 - 19968: jis0212<<14 | 0x2D<<7 | 0x21, + 30374 - 19968: jis0208<<14 | 0x5A<<7 | 0x18, + 30375 - 19968: jis0212<<14 | 0x2D<<7 | 0x23, + 30376 - 19968: jis0212<<14 | 0x2D<<7 | 0x24, + 30378 - 19968: jis0212<<14 | 0x2D<<7 | 0x25, + 30381 - 19968: jis0212<<14 | 0x2D<<7 | 0x26, + 30382 - 19968: jis0208<<14 | 0x27<<7 | 0x48, + 30384 - 19968: jis0208<<14 | 0x41<<7 | 0x0D, + 30388 - 19968: jis0208<<14 | 0x41<<7 | 0x0E, + 30391 - 19968: jis0208<<14 | 0x52<<7 | 0x48, + 30392 - 19968: jis0208<<14 | 0x41<<7 | 0x0F, + 30393 - 19968: jis0208<<14 | 0x41<<7 | 0x10, + 30394 - 19968: jis0208<<14 | 0x41<<7 | 0x11, + 30397 - 19968: jis0212<<14 | 0x2D<<7 | 0x27, + 30399 - 19968: jis0208<<14 | 0x1A<<7 | 0x0D, + 30401 - 19968: jis0212<<14 | 0x2D<<7 | 0x28, + 30402 - 19968: jis0208<<14 | 0x41<<7 | 0x12, + 30403 - 19968: jis0208<<14 | 0x26<<7 | 0x35, + 30405 - 19968: jis0212<<14 | 0x2D<<7 | 0x29, + 30406 - 19968: jis0208<<14 | 0x2A<<7 | 0x3E, + 30408 - 19968: jis0208<<14 | 0x10<<7 | 0x2D, + 30409 - 19968: jis0212<<14 | 0x2D<<7 | 0x2A, + 30410 - 19968: jis0208<<14 | 0x10<<7 | 0x36, + 30411 - 19968: jis0212<<14 | 0x2D<<7 | 0x2B, + 30412 - 19968: jis0212<<14 | 0x2D<<7 | 0x2C, + 30413 - 19968: jis0208<<14 | 0x41<<7 | 0x13, + 30414 - 19968: jis0212<<14 | 0x2D<<7 | 0x2D, + 30418 - 19968: jis0208<<14 | 0x41<<7 | 0x15, + 30420 - 19968: jis0212<<14 | 0x2D<<7 | 0x2E, + 30422 - 19968: jis0208<<14 | 0x41<<7 | 0x14, + 30423 - 19968: jis0208<<14 | 0x24<<7 | 0x4F, + 30425 - 19968: jis0212<<14 | 0x2D<<7 | 0x2F, + 30427 - 19968: jis0208<<14 | 0x1F<<7 | 0x18, + 30428 - 19968: jis0208<<14 | 0x3C<<7 | 0x18, + 30430 - 19968: jis0208<<14 | 0x41<<7 | 0x16, + 30431 - 19968: jis0208<<14 | 0x2B<<7 | 0x20, + 30432 - 19968: jis0212<<14 | 0x2D<<7 | 0x30, + 30433 - 19968: jis0208<<14 | 0x41<<7 | 0x17, + 30435 - 19968: jis0208<<14 | 0x13<<7 | 0x25, + 30436 - 19968: jis0208<<14 | 0x27<<7 | 0x36, + 30437 - 19968: jis0208<<14 | 0x41<<7 | 0x18, + 30438 - 19968: jis0212<<14 | 0x2D<<7 | 0x31, + 30439 - 19968: jis0208<<14 | 0x41<<7 | 0x19, + 30440 - 19968: jis0212<<14 | 0x2D<<7 | 0x32, + 30442 - 19968: jis0208<<14 | 0x41<<7 | 0x1A, + 30444 - 19968: jis0212<<14 | 0x2D<<7 | 0x33, + 30446 - 19968: jis0208<<14 | 0x2B<<7 | 0x3B, + 30448 - 19968: jis0212<<14 | 0x2D<<7 | 0x34, + 30449 - 19968: jis0212<<14 | 0x2D<<7 | 0x35, + 30450 - 19968: jis0208<<14 | 0x2B<<7 | 0x34, + 30452 - 19968: jis0208<<14 | 0x23<<7 | 0x1D, + 30454 - 19968: jis0212<<14 | 0x2D<<7 | 0x36, + 30456 - 19968: jis0208<<14 | 0x20<<7 | 0x49, + 30457 - 19968: jis0212<<14 | 0x2D<<7 | 0x37, + 30459 - 19968: jis0208<<14 | 0x41<<7 | 0x1C, + 30460 - 19968: jis0212<<14 | 0x2D<<7 | 0x38, + 30462 - 19968: jis0208<<14 | 0x1C<<7 | 0x41, + 30464 - 19968: jis0212<<14 | 0x2D<<7 | 0x39, + 30465 - 19968: jis0208<<14 | 0x1D<<7 | 0x29, + 30468 - 19968: jis0208<<14 | 0x41<<7 | 0x1F, + 30470 - 19968: jis0212<<14 | 0x2D<<7 | 0x3A, + 30471 - 19968: jis0208<<14 | 0x41<<7 | 0x1E, + 30472 - 19968: jis0208<<14 | 0x41<<7 | 0x1D, + 30473 - 19968: jis0208<<14 | 0x27<<7 | 0x5C, + 30474 - 19968: jis0212<<14 | 0x2D<<7 | 0x3B, + 30475 - 19968: jis0208<<14 | 0x13<<7 | 0x26, + 30476 - 19968: jis0208<<14 | 0x17<<7 | 0x08, + 30478 - 19968: jis0212<<14 | 0x2D<<7 | 0x3C, + 30482 - 19968: jis0212<<14 | 0x2D<<7 | 0x3D, + 30484 - 19968: jis0212<<14 | 0x2D<<7 | 0x3E, + 30485 - 19968: jis0212<<14 | 0x2D<<7 | 0x3F, + 30487 - 19968: jis0212<<14 | 0x2D<<7 | 0x40, + 30489 - 19968: jis0212<<14 | 0x2D<<7 | 0x41, + 30490 - 19968: jis0212<<14 | 0x2D<<7 | 0x42, + 30491 - 19968: jis0208<<14 | 0x41<<7 | 0x25, + 30492 - 19968: jis0212<<14 | 0x2D<<7 | 0x43, + 30494 - 19968: jis0208<<14 | 0x41<<7 | 0x22, + 30495 - 19968: jis0208<<14 | 0x1E<<7 | 0x1E, + 30496 - 19968: jis0208<<14 | 0x2B<<7 | 0x11, + 30498 - 19968: jis0212<<14 | 0x2D<<7 | 0x44, + 30500 - 19968: jis0208<<14 | 0x41<<7 | 0x21, + 30501 - 19968: jis0208<<14 | 0x41<<7 | 0x23, + 30502 - 19968: jis0208<<14 | 0x41<<7 | 0x24, + 30504 - 19968: jis0212<<14 | 0x2D<<7 | 0x45, + 30505 - 19968: jis0208<<14 | 0x41<<7 | 0x20, + 30509 - 19968: jis0212<<14 | 0x2D<<7 | 0x46, + 30510 - 19968: jis0212<<14 | 0x2D<<7 | 0x47, + 30511 - 19968: jis0212<<14 | 0x2D<<7 | 0x48, + 30516 - 19968: jis0212<<14 | 0x2D<<7 | 0x49, + 30517 - 19968: jis0212<<14 | 0x2D<<7 | 0x4A, + 30518 - 19968: jis0212<<14 | 0x2D<<7 | 0x4B, + 30519 - 19968: jis0208<<14 | 0x41<<7 | 0x26, + 30520 - 19968: jis0208<<14 | 0x41<<7 | 0x27, + 30521 - 19968: jis0212<<14 | 0x2D<<7 | 0x4C, + 30522 - 19968: jis0208<<14 | 0x23<<7 | 0x0E, + 30524 - 19968: jis0208<<14 | 0x13<<7 | 0x42, + 30525 - 19968: jis0212<<14 | 0x2D<<7 | 0x4D, + 30526 - 19968: jis0212<<14 | 0x2D<<7 | 0x4E, + 30528 - 19968: jis0208<<14 | 0x22<<7 | 0x44, + 30530 - 19968: jis0212<<14 | 0x2D<<7 | 0x4F, + 30533 - 19968: jis0212<<14 | 0x2D<<7 | 0x50, + 30534 - 19968: jis0208<<14 | 0x5A<<7 | 0x1A, + 30535 - 19968: jis0208<<14 | 0x41<<7 | 0x28, + 30538 - 19968: jis0212<<14 | 0x2D<<7 | 0x52, + 30541 - 19968: jis0212<<14 | 0x2D<<7 | 0x53, + 30542 - 19968: jis0212<<14 | 0x2D<<7 | 0x54, + 30543 - 19968: jis0212<<14 | 0x2D<<7 | 0x55, + 30546 - 19968: jis0212<<14 | 0x2D<<7 | 0x56, + 30550 - 19968: jis0212<<14 | 0x2D<<7 | 0x57, + 30551 - 19968: jis0212<<14 | 0x2D<<7 | 0x58, + 30554 - 19968: jis0208<<14 | 0x41<<7 | 0x29, + 30555 - 19968: jis0208<<14 | 0x41<<7 | 0x2C, + 30556 - 19968: jis0212<<14 | 0x2D<<7 | 0x59, + 30558 - 19968: jis0212<<14 | 0x2D<<7 | 0x5A, + 30559 - 19968: jis0212<<14 | 0x2D<<7 | 0x5B, + 30560 - 19968: jis0212<<14 | 0x2D<<7 | 0x5C, + 30561 - 19968: jis0208<<14 | 0x1E<<7 | 0x46, + 30562 - 19968: jis0212<<14 | 0x2D<<7 | 0x5D, + 30563 - 19968: jis0208<<14 | 0x25<<7 | 0x23, + 30564 - 19968: jis0212<<14 | 0x2E<<7 | 0x00, + 30565 - 19968: jis0208<<14 | 0x41<<7 | 0x2D, + 30566 - 19968: jis0208<<14 | 0x2A<<7 | 0x32, + 30567 - 19968: jis0212<<14 | 0x2E<<7 | 0x01, + 30568 - 19968: jis0208<<14 | 0x41<<7 | 0x2A, + 30570 - 19968: jis0212<<14 | 0x2E<<7 | 0x02, + 30571 - 19968: jis0208<<14 | 0x41<<7 | 0x2B, + 30572 - 19968: jis0212<<14 | 0x2E<<7 | 0x03, + 30576 - 19968: jis0212<<14 | 0x2E<<7 | 0x04, + 30578 - 19968: jis0212<<14 | 0x2E<<7 | 0x05, + 30579 - 19968: jis0212<<14 | 0x2E<<7 | 0x06, + 30580 - 19968: jis0212<<14 | 0x2E<<7 | 0x07, + 30585 - 19968: jis0208<<14 | 0x41<<7 | 0x30, + 30586 - 19968: jis0212<<14 | 0x2E<<7 | 0x08, + 30589 - 19968: jis0212<<14 | 0x2E<<7 | 0x09, + 30590 - 19968: jis0208<<14 | 0x41<<7 | 0x2F, + 30591 - 19968: jis0208<<14 | 0x41<<7 | 0x2E, + 30592 - 19968: jis0212<<14 | 0x2E<<7 | 0x0A, + 30596 - 19968: jis0212<<14 | 0x2E<<7 | 0x0B, + 30603 - 19968: jis0208<<14 | 0x41<<7 | 0x32, + 30604 - 19968: jis0212<<14 | 0x2E<<7 | 0x0C, + 30605 - 19968: jis0212<<14 | 0x2E<<7 | 0x0D, + 30606 - 19968: jis0208<<14 | 0x41<<7 | 0x31, + 30609 - 19968: jis0208<<14 | 0x41<<7 | 0x33, + 30612 - 19968: jis0212<<14 | 0x2E<<7 | 0x0E, + 30613 - 19968: jis0212<<14 | 0x2E<<7 | 0x0F, + 30614 - 19968: jis0212<<14 | 0x2E<<7 | 0x10, + 30618 - 19968: jis0212<<14 | 0x2E<<7 | 0x11, + 30622 - 19968: jis0208<<14 | 0x41<<7 | 0x35, + 30623 - 19968: jis0212<<14 | 0x2E<<7 | 0x12, + 30624 - 19968: jis0208<<14 | 0x41<<7 | 0x34, + 30626 - 19968: jis0212<<14 | 0x2E<<7 | 0x13, + 30629 - 19968: jis0208<<14 | 0x29<<7 | 0x2C, + 30631 - 19968: jis0212<<14 | 0x2E<<7 | 0x14, + 30634 - 19968: jis0212<<14 | 0x2E<<7 | 0x15, + 30636 - 19968: jis0208<<14 | 0x1C<<7 | 0x35, + 30637 - 19968: jis0208<<14 | 0x2D<<7 | 0x25, + 30638 - 19968: jis0212<<14 | 0x2E<<7 | 0x16, + 30639 - 19968: jis0212<<14 | 0x2E<<7 | 0x17, + 30640 - 19968: jis0208<<14 | 0x41<<7 | 0x36, + 30641 - 19968: jis0212<<14 | 0x2E<<7 | 0x18, + 30643 - 19968: jis0208<<14 | 0x25<<7 | 0x16, + 30645 - 19968: jis0212<<14 | 0x2E<<7 | 0x19, + 30646 - 19968: jis0208<<14 | 0x41<<7 | 0x37, + 30649 - 19968: jis0208<<14 | 0x41<<7 | 0x38, + 30651 - 19968: jis0208<<14 | 0x41<<7 | 0x3C, + 30652 - 19968: jis0208<<14 | 0x41<<7 | 0x3A, + 30653 - 19968: jis0208<<14 | 0x41<<7 | 0x3B, + 30654 - 19968: jis0212<<14 | 0x2E<<7 | 0x1A, + 30655 - 19968: jis0208<<14 | 0x41<<7 | 0x39, + 30659 - 19968: jis0212<<14 | 0x2E<<7 | 0x1B, + 30663 - 19968: jis0208<<14 | 0x41<<7 | 0x3D, + 30665 - 19968: jis0212<<14 | 0x2E<<7 | 0x1C, + 30669 - 19968: jis0208<<14 | 0x41<<7 | 0x3E, + 30673 - 19968: jis0212<<14 | 0x2E<<7 | 0x1D, + 30674 - 19968: jis0212<<14 | 0x2E<<7 | 0x1E, + 30677 - 19968: jis0212<<14 | 0x2E<<7 | 0x1F, + 30679 - 19968: jis0208<<14 | 0x41<<7 | 0x3F, + 30681 - 19968: jis0212<<14 | 0x2E<<7 | 0x20, + 30682 - 19968: jis0208<<14 | 0x41<<7 | 0x40, + 30683 - 19968: jis0208<<14 | 0x2B<<7 | 0x16, + 30684 - 19968: jis0208<<14 | 0x41<<7 | 0x41, + 30686 - 19968: jis0212<<14 | 0x2E<<7 | 0x21, + 30687 - 19968: jis0212<<14 | 0x2E<<7 | 0x22, + 30688 - 19968: jis0212<<14 | 0x2E<<7 | 0x23, + 30690 - 19968: jis0208<<14 | 0x2B<<7 | 0x4F, + 30691 - 19968: jis0208<<14 | 0x41<<7 | 0x42, + 30692 - 19968: jis0212<<14 | 0x2E<<7 | 0x24, + 30693 - 19968: jis0208<<14 | 0x22<<7 | 0x2D, + 30694 - 19968: jis0212<<14 | 0x2E<<7 | 0x25, + 30695 - 19968: jis0208<<14 | 0x26<<7 | 0x49, + 30697 - 19968: jis0208<<14 | 0x15<<7 | 0x4A, + 30698 - 19968: jis0212<<14 | 0x2E<<7 | 0x26, + 30700 - 19968: jis0212<<14 | 0x2E<<7 | 0x27, + 30701 - 19968: jis0208<<14 | 0x22<<7 | 0x1A, + 30702 - 19968: jis0208<<14 | 0x41<<7 | 0x43, + 30703 - 19968: jis0208<<14 | 0x15<<7 | 0x19, + 30704 - 19968: jis0212<<14 | 0x2E<<7 | 0x28, + 30705 - 19968: jis0212<<14 | 0x2E<<7 | 0x29, + 30707 - 19968: jis0208<<14 | 0x1F<<7 | 0x2F, + 30708 - 19968: jis0212<<14 | 0x2E<<7 | 0x2A, + 30712 - 19968: jis0212<<14 | 0x2E<<7 | 0x2B, + 30715 - 19968: jis0212<<14 | 0x2E<<7 | 0x2C, + 30716 - 19968: jis0208<<14 | 0x41<<7 | 0x44, + 30722 - 19968: jis0208<<14 | 0x19<<7 | 0x1C, + 30725 - 19968: jis0212<<14 | 0x2E<<7 | 0x2D, + 30726 - 19968: jis0212<<14 | 0x2E<<7 | 0x2E, + 30729 - 19968: jis0212<<14 | 0x2E<<7 | 0x2F, + 30732 - 19968: jis0208<<14 | 0x41<<7 | 0x45, + 30733 - 19968: jis0212<<14 | 0x2E<<7 | 0x30, + 30734 - 19968: jis0212<<14 | 0x2E<<7 | 0x31, + 30737 - 19968: jis0212<<14 | 0x2E<<7 | 0x32, + 30738 - 19968: jis0208<<14 | 0x41<<7 | 0x46, + 30740 - 19968: jis0208<<14 | 0x17<<7 | 0x05, + 30741 - 19968: jis0208<<14 | 0x19<<7 | 0x34, + 30749 - 19968: jis0212<<14 | 0x2E<<7 | 0x33, + 30752 - 19968: jis0208<<14 | 0x41<<7 | 0x48, + 30753 - 19968: jis0208<<14 | 0x5A<<7 | 0x1C, + 30754 - 19968: jis0212<<14 | 0x2E<<7 | 0x35, + 30755 - 19968: jis0212<<14 | 0x2E<<7 | 0x36, + 30757 - 19968: jis0208<<14 | 0x24<<7 | 0x35, + 30758 - 19968: jis0208<<14 | 0x19<<7 | 0x35, + 30759 - 19968: jis0208<<14 | 0x14<<7 | 0x2D, + 30765 - 19968: jis0212<<14 | 0x2E<<7 | 0x37, + 30766 - 19968: jis0212<<14 | 0x2E<<7 | 0x38, + 30768 - 19968: jis0212<<14 | 0x2E<<7 | 0x39, + 30770 - 19968: jis0208<<14 | 0x2A<<7 | 0x03, + 30772 - 19968: jis0208<<14 | 0x26<<7 | 0x2A, + 30773 - 19968: jis0212<<14 | 0x2E<<7 | 0x3A, + 30775 - 19968: jis0212<<14 | 0x2E<<7 | 0x3B, + 30778 - 19968: jis0208<<14 | 0x24<<7 | 0x36, + 30783 - 19968: jis0208<<14 | 0x18<<7 | 0x3B, + 30787 - 19968: jis0212<<14 | 0x2E<<7 | 0x3C, + 30788 - 19968: jis0212<<14 | 0x2E<<7 | 0x3D, + 30789 - 19968: jis0208<<14 | 0x41<<7 | 0x4A, + 30791 - 19968: jis0212<<14 | 0x2E<<7 | 0x3E, + 30792 - 19968: jis0212<<14 | 0x2E<<7 | 0x3F, + 30796 - 19968: jis0212<<14 | 0x2E<<7 | 0x40, + 30798 - 19968: jis0208<<14 | 0x5A<<7 | 0x1D, + 30802 - 19968: jis0212<<14 | 0x2E<<7 | 0x42, + 30812 - 19968: jis0212<<14 | 0x2E<<7 | 0x43, + 30813 - 19968: jis0208<<14 | 0x1D<<7 | 0x2A, + 30814 - 19968: jis0212<<14 | 0x2E<<7 | 0x44, + 30816 - 19968: jis0212<<14 | 0x2E<<7 | 0x45, + 30817 - 19968: jis0212<<14 | 0x2E<<7 | 0x46, + 30819 - 19968: jis0212<<14 | 0x2E<<7 | 0x47, + 30820 - 19968: jis0208<<14 | 0x5A<<7 | 0x1E, + 30824 - 19968: jis0212<<14 | 0x2E<<7 | 0x49, + 30826 - 19968: jis0212<<14 | 0x2E<<7 | 0x4A, + 30827 - 19968: jis0208<<14 | 0x2D<<7 | 0x11, + 30828 - 19968: jis0208<<14 | 0x18<<7 | 0x24, + 30830 - 19968: jis0212<<14 | 0x2E<<7 | 0x4B, + 30831 - 19968: jis0208<<14 | 0x17<<7 | 0x06, + 30834 - 19968: jis0208<<14 | 0x27<<7 | 0x02, + 30836 - 19968: jis0208<<14 | 0x41<<7 | 0x4C, + 30842 - 19968: jis0208<<14 | 0x5A<<7 | 0x1F, + 30844 - 19968: jis0208<<14 | 0x41<<7 | 0x4E, + 30846 - 19968: jis0212<<14 | 0x2E<<7 | 0x4D, + 30849 - 19968: jis0208<<14 | 0x17<<7 | 0x4A, + 30854 - 19968: jis0208<<14 | 0x41<<7 | 0x4D, + 30855 - 19968: jis0208<<14 | 0x23<<7 | 0x55, + 30858 - 19968: jis0212<<14 | 0x2E<<7 | 0x4E, + 30860 - 19968: jis0208<<14 | 0x41<<7 | 0x50, + 30861 - 19968: jis0208<<14 | 0x12<<7 | 0x16, + 30862 - 19968: jis0208<<14 | 0x41<<7 | 0x4B, + 30863 - 19968: jis0212<<14 | 0x2E<<7 | 0x4F, + 30865 - 19968: jis0208<<14 | 0x27<<7 | 0x49, + 30867 - 19968: jis0208<<14 | 0x10<<7 | 0x0F, + 30868 - 19968: jis0212<<14 | 0x2E<<7 | 0x50, + 30869 - 19968: jis0208<<14 | 0x19<<7 | 0x4B, + 30871 - 19968: jis0208<<14 | 0x2E<<7 | 0x31, + 30872 - 19968: jis0212<<14 | 0x2E<<7 | 0x51, + 30874 - 19968: jis0208<<14 | 0x41<<7 | 0x4F, + 30877 - 19968: jis0212<<14 | 0x2E<<7 | 0x53, + 30878 - 19968: jis0212<<14 | 0x2E<<7 | 0x54, + 30879 - 19968: jis0212<<14 | 0x2E<<7 | 0x55, + 30881 - 19968: jis0212<<14 | 0x2E<<7 | 0x52, + 30883 - 19968: jis0208<<14 | 0x41<<7 | 0x51, + 30884 - 19968: jis0212<<14 | 0x2E<<7 | 0x56, + 30887 - 19968: jis0208<<14 | 0x29<<7 | 0x2A, + 30888 - 19968: jis0212<<14 | 0x2E<<7 | 0x57, + 30889 - 19968: jis0208<<14 | 0x1F<<7 | 0x38, + 30890 - 19968: jis0208<<14 | 0x41<<7 | 0x53, + 30892 - 19968: jis0212<<14 | 0x2E<<7 | 0x58, + 30893 - 19968: jis0212<<14 | 0x2E<<7 | 0x59, + 30895 - 19968: jis0208<<14 | 0x41<<7 | 0x54, + 30896 - 19968: jis0212<<14 | 0x2E<<7 | 0x5A, + 30897 - 19968: jis0212<<14 | 0x2E<<7 | 0x5B, + 30898 - 19968: jis0212<<14 | 0x2E<<7 | 0x5C, + 30899 - 19968: jis0212<<14 | 0x2E<<7 | 0x5D, + 30901 - 19968: jis0208<<14 | 0x41<<7 | 0x52, + 30906 - 19968: jis0208<<14 | 0x12<<7 | 0x2D, + 30907 - 19968: jis0212<<14 | 0x2F<<7 | 0x00, + 30908 - 19968: jis0208<<14 | 0x41<<7 | 0x5A, + 30909 - 19968: jis0212<<14 | 0x2F<<7 | 0x01, + 30910 - 19968: jis0208<<14 | 0x41<<7 | 0x59, + 30911 - 19968: jis0212<<14 | 0x2F<<7 | 0x02, + 30913 - 19968: jis0208<<14 | 0x1B<<7 | 0x06, + 30917 - 19968: jis0208<<14 | 0x41<<7 | 0x5B, + 30918 - 19968: jis0208<<14 | 0x41<<7 | 0x56, + 30919 - 19968: jis0212<<14 | 0x2F<<7 | 0x03, + 30920 - 19968: jis0212<<14 | 0x2F<<7 | 0x04, + 30921 - 19968: jis0212<<14 | 0x2F<<7 | 0x05, + 30922 - 19968: jis0208<<14 | 0x41<<7 | 0x5C, + 30923 - 19968: jis0208<<14 | 0x41<<7 | 0x57, + 30924 - 19968: jis0212<<14 | 0x2F<<7 | 0x06, + 30926 - 19968: jis0212<<14 | 0x2F<<7 | 0x07, + 30928 - 19968: jis0208<<14 | 0x27<<7 | 0x37, + 30929 - 19968: jis0208<<14 | 0x41<<7 | 0x55, + 30930 - 19968: jis0212<<14 | 0x2F<<7 | 0x08, + 30931 - 19968: jis0212<<14 | 0x2F<<7 | 0x09, + 30932 - 19968: jis0208<<14 | 0x41<<7 | 0x58, + 30933 - 19968: jis0212<<14 | 0x2F<<7 | 0x0A, + 30934 - 19968: jis0212<<14 | 0x2F<<7 | 0x0B, + 30938 - 19968: jis0208<<14 | 0x42<<7 | 0x01, + 30939 - 19968: jis0212<<14 | 0x2F<<7 | 0x0D, + 30943 - 19968: jis0212<<14 | 0x2F<<7 | 0x0E, + 30944 - 19968: jis0212<<14 | 0x2F<<7 | 0x0F, + 30945 - 19968: jis0212<<14 | 0x2F<<7 | 0x10, + 30948 - 19968: jis0212<<14 | 0x2F<<7 | 0x0C, + 30950 - 19968: jis0212<<14 | 0x2F<<7 | 0x11, + 30951 - 19968: jis0208<<14 | 0x42<<7 | 0x00, + 30952 - 19968: jis0208<<14 | 0x2A<<7 | 0x40, + 30954 - 19968: jis0212<<14 | 0x2F<<7 | 0x12, + 30956 - 19968: jis0208<<14 | 0x41<<7 | 0x5D, + 30959 - 19968: jis0208<<14 | 0x0F<<7 | 0x4A, + 30962 - 19968: jis0212<<14 | 0x2F<<7 | 0x13, + 30963 - 19968: jis0212<<14 | 0x2F<<7 | 0x14, + 30964 - 19968: jis0208<<14 | 0x42<<7 | 0x03, + 30966 - 19968: jis0212<<14 | 0x2F<<7 | 0x16, + 30967 - 19968: jis0212<<14 | 0x2F<<7 | 0x17, + 30970 - 19968: jis0212<<14 | 0x2F<<7 | 0x18, + 30971 - 19968: jis0212<<14 | 0x2F<<7 | 0x19, + 30973 - 19968: jis0208<<14 | 0x42<<7 | 0x02, + 30975 - 19968: jis0212<<14 | 0x2F<<7 | 0x1A, + 30976 - 19968: jis0212<<14 | 0x2F<<7 | 0x15, + 30977 - 19968: jis0208<<14 | 0x1D<<7 | 0x2B, + 30982 - 19968: jis0212<<14 | 0x2F<<7 | 0x1B, + 30983 - 19968: jis0208<<14 | 0x42<<7 | 0x04, + 30988 - 19968: jis0212<<14 | 0x2F<<7 | 0x1C, + 30990 - 19968: jis0208<<14 | 0x20<<7 | 0x22, + 30992 - 19968: jis0212<<14 | 0x2F<<7 | 0x1D, + 30993 - 19968: jis0208<<14 | 0x42<<7 | 0x06, + 30994 - 19968: jis0208<<14 | 0x42<<7 | 0x05, + 31001 - 19968: jis0208<<14 | 0x42<<7 | 0x07, + 31002 - 19968: jis0212<<14 | 0x2F<<7 | 0x1E, + 31004 - 19968: jis0212<<14 | 0x2F<<7 | 0x1F, + 31006 - 19968: jis0212<<14 | 0x2F<<7 | 0x20, + 31007 - 19968: jis0212<<14 | 0x2F<<7 | 0x21, + 31008 - 19968: jis0212<<14 | 0x2F<<7 | 0x22, + 31013 - 19968: jis0212<<14 | 0x2F<<7 | 0x23, + 31014 - 19968: jis0208<<14 | 0x41<<7 | 0x47, + 31015 - 19968: jis0212<<14 | 0x2F<<7 | 0x24, + 31017 - 19968: jis0212<<14 | 0x2F<<7 | 0x25, + 31018 - 19968: jis0208<<14 | 0x41<<7 | 0x49, + 31019 - 19968: jis0208<<14 | 0x42<<7 | 0x09, + 31020 - 19968: jis0208<<14 | 0x42<<7 | 0x08, + 31021 - 19968: jis0212<<14 | 0x2F<<7 | 0x26, + 31024 - 19968: jis0208<<14 | 0x5A<<7 | 0x20, + 31025 - 19968: jis0212<<14 | 0x2F<<7 | 0x27, + 31028 - 19968: jis0212<<14 | 0x2F<<7 | 0x28, + 31029 - 19968: jis0212<<14 | 0x2F<<7 | 0x29, + 31034 - 19968: jis0208<<14 | 0x1B<<7 | 0x07, + 31035 - 19968: jis0212<<14 | 0x2F<<7 | 0x2A, + 31036 - 19968: jis0208<<14 | 0x2D<<7 | 0x48, + 31037 - 19968: jis0212<<14 | 0x2F<<7 | 0x2B, + 31038 - 19968: jis0208<<14 | 0x1B<<7 | 0x31, + 31039 - 19968: jis0212<<14 | 0x2F<<7 | 0x2C, + 31040 - 19968: jis0208<<14 | 0x42<<7 | 0x0A, + 31041 - 19968: jis0208<<14 | 0x16<<7 | 0x16, + 31044 - 19968: jis0212<<14 | 0x2F<<7 | 0x2D, + 31045 - 19968: jis0212<<14 | 0x2F<<7 | 0x2E, + 31046 - 19968: jis0212<<14 | 0x2F<<7 | 0x2F, + 31047 - 19968: jis0208<<14 | 0x14<<7 | 0x1F, + 31048 - 19968: jis0208<<14 | 0x14<<7 | 0x06, + 31049 - 19968: jis0208<<14 | 0x1A<<7 | 0x42, + 31050 - 19968: jis0212<<14 | 0x2F<<7 | 0x30, + 31051 - 19968: jis0212<<14 | 0x2F<<7 | 0x31, + 31055 - 19968: jis0212<<14 | 0x2F<<7 | 0x32, + 31056 - 19968: jis0208<<14 | 0x2C<<7 | 0x13, + 31057 - 19968: jis0212<<14 | 0x2F<<7 | 0x33, + 31059 - 19968: jis0208<<14 | 0x42<<7 | 0x10, + 31060 - 19968: jis0212<<14 | 0x2F<<7 | 0x34, + 31061 - 19968: jis0208<<14 | 0x42<<7 | 0x0F, + 31062 - 19968: jis0208<<14 | 0x20<<7 | 0x23, + 31063 - 19968: jis0208<<14 | 0x42<<7 | 0x0C, + 31064 - 19968: jis0212<<14 | 0x2F<<7 | 0x35, + 31066 - 19968: jis0208<<14 | 0x42<<7 | 0x0E, + 31067 - 19968: jis0212<<14 | 0x2F<<7 | 0x36, + 31068 - 19968: jis0212<<14 | 0x2F<<7 | 0x37, + 31069 - 19968: jis0208<<14 | 0x1C<<7 | 0x2A, + 31070 - 19968: jis0208<<14 | 0x1E<<7 | 0x1F, + 31071 - 19968: jis0208<<14 | 0x42<<7 | 0x0D, + 31072 - 19968: jis0208<<14 | 0x42<<7 | 0x0B, + 31074 - 19968: jis0208<<14 | 0x26<<7 | 0x09, + 31077 - 19968: jis0208<<14 | 0x1D<<7 | 0x2C, + 31079 - 19968: jis0212<<14 | 0x2F<<7 | 0x38, + 31080 - 19968: jis0208<<14 | 0x28<<7 | 0x1B, + 31081 - 19968: jis0212<<14 | 0x2F<<7 | 0x39, + 31083 - 19968: jis0212<<14 | 0x2F<<7 | 0x3A, + 31085 - 19968: jis0208<<14 | 0x19<<7 | 0x36, + 31090 - 19968: jis0212<<14 | 0x2F<<7 | 0x3B, + 31095 - 19968: jis0208<<14 | 0x24<<7 | 0x57, + 31097 - 19968: jis0212<<14 | 0x2F<<7 | 0x3C, + 31098 - 19968: jis0208<<14 | 0x42<<7 | 0x11, + 31099 - 19968: jis0212<<14 | 0x2F<<7 | 0x3D, + 31100 - 19968: jis0212<<14 | 0x2F<<7 | 0x3E, + 31102 - 19968: jis0212<<14 | 0x2F<<7 | 0x3F, + 31103 - 19968: jis0208<<14 | 0x42<<7 | 0x12, + 31104 - 19968: jis0208<<14 | 0x42<<7 | 0x28, + 31105 - 19968: jis0208<<14 | 0x15<<7 | 0x37, + 31108 - 19968: jis0208<<14 | 0x2E<<7 | 0x1C, + 31109 - 19968: jis0208<<14 | 0x20<<7 | 0x14, + 31114 - 19968: jis0208<<14 | 0x42<<7 | 0x13, + 31115 - 19968: jis0212<<14 | 0x2F<<7 | 0x40, + 31116 - 19968: jis0212<<14 | 0x2F<<7 | 0x41, + 31117 - 19968: jis0208<<14 | 0x11<<7 | 0x31, + 31118 - 19968: jis0208<<14 | 0x23<<7 | 0x56, + 31119 - 19968: jis0208<<14 | 0x29<<7 | 0x00, + 31121 - 19968: jis0212<<14 | 0x2F<<7 | 0x42, + 31123 - 19968: jis0212<<14 | 0x2F<<7 | 0x43, + 31124 - 19968: jis0208<<14 | 0x5A<<7 | 0x24, + 31125 - 19968: jis0212<<14 | 0x2F<<7 | 0x45, + 31126 - 19968: jis0212<<14 | 0x2F<<7 | 0x46, + 31128 - 19968: jis0212<<14 | 0x2F<<7 | 0x47, + 31131 - 19968: jis0208<<14 | 0x5A<<7 | 0x26, + 31132 - 19968: jis0212<<14 | 0x2F<<7 | 0x49, + 31133 - 19968: jis0208<<14 | 0x42<<7 | 0x14, + 31137 - 19968: jis0212<<14 | 0x2F<<7 | 0x4A, + 31142 - 19968: jis0208<<14 | 0x14<<7 | 0x59, + 31143 - 19968: jis0208<<14 | 0x42<<7 | 0x15, + 31144 - 19968: jis0212<<14 | 0x2F<<7 | 0x4B, + 31145 - 19968: jis0212<<14 | 0x2F<<7 | 0x4C, + 31146 - 19968: jis0208<<14 | 0x42<<7 | 0x17, + 31147 - 19968: jis0212<<14 | 0x2F<<7 | 0x4D, + 31150 - 19968: jis0208<<14 | 0x42<<7 | 0x18, + 31151 - 19968: jis0212<<14 | 0x2F<<7 | 0x4E, + 31152 - 19968: jis0208<<14 | 0x26<<7 | 0x08, + 31153 - 19968: jis0212<<14 | 0x2F<<7 | 0x4F, + 31155 - 19968: jis0208<<14 | 0x42<<7 | 0x19, + 31156 - 19968: jis0212<<14 | 0x2F<<7 | 0x50, + 31160 - 19968: jis0212<<14 | 0x2F<<7 | 0x51, + 31161 - 19968: jis0208<<14 | 0x42<<7 | 0x1A, + 31162 - 19968: jis0208<<14 | 0x42<<7 | 0x1B, + 31163 - 19968: jis0212<<14 | 0x2F<<7 | 0x52, + 31165 - 19968: jis0208<<14 | 0x15<<7 | 0x38, + 31166 - 19968: jis0208<<14 | 0x11<<7 | 0x32, + 31167 - 19968: jis0208<<14 | 0x25<<7 | 0x24, + 31168 - 19968: jis0208<<14 | 0x1C<<7 | 0x07, + 31169 - 19968: jis0208<<14 | 0x1A<<7 | 0x43, + 31170 - 19968: jis0212<<14 | 0x2F<<7 | 0x53, + 31172 - 19968: jis0212<<14 | 0x2F<<7 | 0x54, + 31175 - 19968: jis0212<<14 | 0x2F<<7 | 0x55, + 31176 - 19968: jis0212<<14 | 0x2F<<7 | 0x56, + 31177 - 19968: jis0208<<14 | 0x42<<7 | 0x1C, + 31178 - 19968: jis0212<<14 | 0x2F<<7 | 0x57, + 31179 - 19968: jis0208<<14 | 0x1C<<7 | 0x08, + 31183 - 19968: jis0212<<14 | 0x2F<<7 | 0x58, + 31185 - 19968: jis0208<<14 | 0x11<<7 | 0x29, + 31186 - 19968: jis0208<<14 | 0x28<<7 | 0x22, + 31188 - 19968: jis0212<<14 | 0x2F<<7 | 0x59, + 31189 - 19968: jis0208<<14 | 0x42<<7 | 0x1D, + 31190 - 19968: jis0212<<14 | 0x2F<<7 | 0x5A, + 31192 - 19968: jis0208<<14 | 0x27<<7 | 0x4A, + 31194 - 19968: jis0212<<14 | 0x2F<<7 | 0x5B, + 31197 - 19968: jis0212<<14 | 0x2F<<7 | 0x5C, + 31198 - 19968: jis0212<<14 | 0x2F<<7 | 0x5D, + 31199 - 19968: jis0208<<14 | 0x20<<7 | 0x24, + 31200 - 19968: jis0212<<14 | 0x30<<7 | 0x00, + 31201 - 19968: jis0208<<14 | 0x42<<7 | 0x20, + 31202 - 19968: jis0212<<14 | 0x30<<7 | 0x01, + 31203 - 19968: jis0208<<14 | 0x42<<7 | 0x21, + 31204 - 19968: jis0208<<14 | 0x26<<7 | 0x48, + 31205 - 19968: jis0212<<14 | 0x30<<7 | 0x02, + 31206 - 19968: jis0208<<14 | 0x1E<<7 | 0x20, + 31207 - 19968: jis0208<<14 | 0x42<<7 | 0x1E, + 31209 - 19968: jis0208<<14 | 0x22<<7 | 0x40, + 31210 - 19968: jis0212<<14 | 0x30<<7 | 0x03, + 31211 - 19968: jis0212<<14 | 0x30<<7 | 0x04, + 31212 - 19968: jis0208<<14 | 0x42<<7 | 0x1F, + 31213 - 19968: jis0212<<14 | 0x30<<7 | 0x05, + 31216 - 19968: jis0208<<14 | 0x1D<<7 | 0x2D, + 31217 - 19968: jis0212<<14 | 0x30<<7 | 0x06, + 31224 - 19968: jis0212<<14 | 0x30<<7 | 0x07, + 31227 - 19968: jis0208<<14 | 0x0F<<7 | 0x3B, + 31228 - 19968: jis0212<<14 | 0x30<<7 | 0x08, + 31232 - 19968: jis0208<<14 | 0x14<<7 | 0x08, + 31234 - 19968: jis0212<<14 | 0x30<<7 | 0x09, + 31235 - 19968: jis0212<<14 | 0x30<<7 | 0x0A, + 31239 - 19968: jis0212<<14 | 0x30<<7 | 0x0B, + 31240 - 19968: jis0208<<14 | 0x42<<7 | 0x22, + 31241 - 19968: jis0212<<14 | 0x30<<7 | 0x0C, + 31242 - 19968: jis0212<<14 | 0x30<<7 | 0x0D, + 31243 - 19968: jis0208<<14 | 0x23<<7 | 0x57, + 31244 - 19968: jis0212<<14 | 0x30<<7 | 0x0E, + 31245 - 19968: jis0208<<14 | 0x42<<7 | 0x23, + 31246 - 19968: jis0208<<14 | 0x1F<<7 | 0x26, + 31249 - 19968: jis0212<<14 | 0x30<<7 | 0x0F, + 31252 - 19968: jis0208<<14 | 0x2B<<7 | 0x0C, + 31253 - 19968: jis0212<<14 | 0x30<<7 | 0x10, + 31255 - 19968: jis0208<<14 | 0x28<<7 | 0x02, + 31256 - 19968: jis0208<<14 | 0x42<<7 | 0x24, + 31257 - 19968: jis0208<<14 | 0x42<<7 | 0x25, + 31258 - 19968: jis0208<<14 | 0x22<<7 | 0x34, + 31259 - 19968: jis0212<<14 | 0x30<<7 | 0x11, + 31260 - 19968: jis0208<<14 | 0x2D<<7 | 0x26, + 31262 - 19968: jis0212<<14 | 0x30<<7 | 0x12, + 31263 - 19968: jis0208<<14 | 0x42<<7 | 0x27, + 31264 - 19968: jis0208<<14 | 0x42<<7 | 0x26, + 31265 - 19968: jis0212<<14 | 0x30<<7 | 0x13, + 31271 - 19968: jis0212<<14 | 0x30<<7 | 0x14, + 31275 - 19968: jis0212<<14 | 0x30<<7 | 0x15, + 31277 - 19968: jis0212<<14 | 0x30<<7 | 0x16, + 31278 - 19968: jis0208<<14 | 0x1B<<7 | 0x4E, + 31279 - 19968: jis0212<<14 | 0x30<<7 | 0x17, + 31280 - 19968: jis0212<<14 | 0x30<<7 | 0x18, + 31281 - 19968: jis0208<<14 | 0x42<<7 | 0x29, + 31282 - 19968: jis0208<<14 | 0x0F<<7 | 0x4F, + 31284 - 19968: jis0212<<14 | 0x30<<7 | 0x19, + 31285 - 19968: jis0212<<14 | 0x30<<7 | 0x1A, + 31287 - 19968: jis0208<<14 | 0x42<<7 | 0x2C, + 31288 - 19968: jis0212<<14 | 0x30<<7 | 0x1B, + 31289 - 19968: jis0212<<14 | 0x30<<7 | 0x1C, + 31290 - 19968: jis0212<<14 | 0x30<<7 | 0x1D, + 31291 - 19968: jis0208<<14 | 0x42<<7 | 0x2A, + 31292 - 19968: jis0208<<14 | 0x11<<7 | 0x33, + 31293 - 19968: jis0208<<14 | 0x16<<7 | 0x2D, + 31294 - 19968: jis0208<<14 | 0x42<<7 | 0x2B, + 31295 - 19968: jis0208<<14 | 0x18<<7 | 0x25, + 31296 - 19968: jis0208<<14 | 0x18<<7 | 0x51, + 31298 - 19968: jis0208<<14 | 0x29<<7 | 0x45, + 31299 - 19968: jis0208<<14 | 0x42<<7 | 0x2D, + 31300 - 19968: jis0212<<14 | 0x30<<7 | 0x1E, + 31301 - 19968: jis0212<<14 | 0x30<<7 | 0x1F, + 31302 - 19968: jis0208<<14 | 0x2A<<7 | 0x33, + 31303 - 19968: jis0212<<14 | 0x30<<7 | 0x20, + 31304 - 19968: jis0212<<14 | 0x30<<7 | 0x21, + 31305 - 19968: jis0208<<14 | 0x42<<7 | 0x2F, + 31308 - 19968: jis0212<<14 | 0x30<<7 | 0x22, + 31309 - 19968: jis0208<<14 | 0x1F<<7 | 0x30, + 31310 - 19968: jis0208<<14 | 0x10<<7 | 0x2E, + 31311 - 19968: jis0208<<14 | 0x11<<7 | 0x19, + 31312 - 19968: jis0208<<14 | 0x0F<<7 | 0x0B, + 31317 - 19968: jis0212<<14 | 0x30<<7 | 0x23, + 31318 - 19968: jis0212<<14 | 0x30<<7 | 0x24, + 31319 - 19968: jis0208<<14 | 0x42<<7 | 0x2E, + 31321 - 19968: jis0212<<14 | 0x30<<7 | 0x25, + 31324 - 19968: jis0212<<14 | 0x30<<7 | 0x26, + 31325 - 19968: jis0212<<14 | 0x30<<7 | 0x27, + 31327 - 19968: jis0212<<14 | 0x30<<7 | 0x28, + 31328 - 19968: jis0212<<14 | 0x30<<7 | 0x29, + 31329 - 19968: jis0208<<14 | 0x42<<7 | 0x30, + 31330 - 19968: jis0208<<14 | 0x42<<7 | 0x31, + 31331 - 19968: jis0208<<14 | 0x1D<<7 | 0x56, + 31333 - 19968: jis0212<<14 | 0x30<<7 | 0x2A, + 31335 - 19968: jis0212<<14 | 0x30<<7 | 0x2B, + 31337 - 19968: jis0208<<14 | 0x42<<7 | 0x32, + 31338 - 19968: jis0212<<14 | 0x30<<7 | 0x2C, + 31339 - 19968: jis0208<<14 | 0x12<<7 | 0x2E, + 31341 - 19968: jis0212<<14 | 0x30<<7 | 0x2D, + 31344 - 19968: jis0208<<14 | 0x42<<7 | 0x34, + 31348 - 19968: jis0208<<14 | 0x16<<7 | 0x49, + 31349 - 19968: jis0212<<14 | 0x30<<7 | 0x2E, + 31350 - 19968: jis0208<<14 | 0x14<<7 | 0x45, + 31352 - 19968: jis0212<<14 | 0x30<<7 | 0x2F, + 31353 - 19968: jis0208<<14 | 0x42<<7 | 0x35, + 31354 - 19968: jis0208<<14 | 0x15<<7 | 0x54, + 31357 - 19968: jis0208<<14 | 0x42<<7 | 0x36, + 31358 - 19968: jis0212<<14 | 0x30<<7 | 0x30, + 31359 - 19968: jis0208<<14 | 0x1F<<7 | 0x5B, + 31360 - 19968: jis0212<<14 | 0x30<<7 | 0x31, + 31361 - 19968: jis0208<<14 | 0x25<<7 | 0x2C, + 31362 - 19968: jis0212<<14 | 0x30<<7 | 0x32, + 31363 - 19968: jis0208<<14 | 0x1F<<7 | 0x3F, + 31364 - 19968: jis0208<<14 | 0x19<<7 | 0x54, + 31365 - 19968: jis0212<<14 | 0x30<<7 | 0x33, + 31366 - 19968: jis0212<<14 | 0x30<<7 | 0x34, + 31368 - 19968: jis0208<<14 | 0x42<<7 | 0x37, + 31370 - 19968: jis0212<<14 | 0x30<<7 | 0x35, + 31371 - 19968: jis0212<<14 | 0x30<<7 | 0x36, + 31376 - 19968: jis0212<<14 | 0x30<<7 | 0x37, + 31377 - 19968: jis0212<<14 | 0x30<<7 | 0x38, + 31378 - 19968: jis0208<<14 | 0x22<<7 | 0x41, + 31379 - 19968: jis0208<<14 | 0x20<<7 | 0x4A, + 31380 - 19968: jis0212<<14 | 0x30<<7 | 0x39, + 31381 - 19968: jis0208<<14 | 0x42<<7 | 0x39, + 31382 - 19968: jis0208<<14 | 0x42<<7 | 0x3B, + 31383 - 19968: jis0208<<14 | 0x42<<7 | 0x38, + 31384 - 19968: jis0208<<14 | 0x42<<7 | 0x3A, + 31390 - 19968: jis0212<<14 | 0x30<<7 | 0x3A, + 31391 - 19968: jis0208<<14 | 0x16<<7 | 0x01, + 31392 - 19968: jis0212<<14 | 0x30<<7 | 0x3B, + 31395 - 19968: jis0212<<14 | 0x30<<7 | 0x3C, + 31401 - 19968: jis0208<<14 | 0x42<<7 | 0x3C, + 31402 - 19968: jis0208<<14 | 0x16<<7 | 0x05, + 31404 - 19968: jis0212<<14 | 0x30<<7 | 0x3D, + 31406 - 19968: jis0208<<14 | 0x14<<7 | 0x46, + 31407 - 19968: jis0208<<14 | 0x2C<<7 | 0x31, + 31408 - 19968: jis0208<<14 | 0x42<<7 | 0x3E, + 31411 - 19968: jis0212<<14 | 0x30<<7 | 0x3E, + 31413 - 19968: jis0212<<14 | 0x30<<7 | 0x3F, + 31414 - 19968: jis0208<<14 | 0x42<<7 | 0x3F, + 31417 - 19968: jis0212<<14 | 0x30<<7 | 0x40, + 31418 - 19968: jis0208<<14 | 0x10<<7 | 0x0D, + 31419 - 19968: jis0212<<14 | 0x30<<7 | 0x41, + 31420 - 19968: jis0212<<14 | 0x30<<7 | 0x42, + 31423 - 19968: jis0208<<14 | 0x42<<7 | 0x42, + 31427 - 19968: jis0208<<14 | 0x12<<7 | 0x55, + 31428 - 19968: jis0208<<14 | 0x42<<7 | 0x41, + 31429 - 19968: jis0208<<14 | 0x42<<7 | 0x40, + 31430 - 19968: jis0212<<14 | 0x30<<7 | 0x43, + 31431 - 19968: jis0208<<14 | 0x42<<7 | 0x44, + 31432 - 19968: jis0208<<14 | 0x42<<7 | 0x3D, + 31433 - 19968: jis0212<<14 | 0x30<<7 | 0x44, + 31434 - 19968: jis0208<<14 | 0x42<<7 | 0x45, + 31435 - 19968: jis0208<<14 | 0x2D<<7 | 0x08, + 31436 - 19968: jis0212<<14 | 0x30<<7 | 0x45, + 31437 - 19968: jis0208<<14 | 0x42<<7 | 0x46, + 31438 - 19968: jis0212<<14 | 0x30<<7 | 0x46, + 31439 - 19968: jis0208<<14 | 0x42<<7 | 0x47, + 31441 - 19968: jis0208<<14 | 0x5A<<7 | 0x27, + 31442 - 19968: jis0208<<14 | 0x33<<7 | 0x53, + 31443 - 19968: jis0208<<14 | 0x42<<7 | 0x49, + 31445 - 19968: jis0208<<14 | 0x42<<7 | 0x48, + 31449 - 19968: jis0208<<14 | 0x42<<7 | 0x4A, + 31450 - 19968: jis0208<<14 | 0x42<<7 | 0x4B, + 31451 - 19968: jis0212<<14 | 0x30<<7 | 0x48, + 31452 - 19968: jis0208<<14 | 0x2D<<7 | 0x14, + 31453 - 19968: jis0208<<14 | 0x42<<7 | 0x4C, + 31455 - 19968: jis0208<<14 | 0x4F<<7 | 0x4E, + 31456 - 19968: jis0208<<14 | 0x1D<<7 | 0x2E, + 31457 - 19968: jis0208<<14 | 0x42<<7 | 0x4D, + 31458 - 19968: jis0208<<14 | 0x42<<7 | 0x4E, + 31459 - 19968: jis0208<<14 | 0x1C<<7 | 0x36, + 31461 - 19968: jis0208<<14 | 0x25<<7 | 0x17, + 31462 - 19968: jis0208<<14 | 0x42<<7 | 0x4F, + 31463 - 19968: jis0208<<14 | 0x5A<<7 | 0x28, + 31464 - 19968: jis0212<<14 | 0x30<<7 | 0x49, + 31465 - 19968: jis0212<<14 | 0x30<<7 | 0x4A, + 31466 - 19968: jis0208<<14 | 0x22<<7 | 0x07, + 31467 - 19968: jis0208<<14 | 0x5A<<7 | 0x2A, + 31468 - 19968: jis0212<<14 | 0x30<<7 | 0x4C, + 31469 - 19968: jis0208<<14 | 0x42<<7 | 0x50, + 31471 - 19968: jis0208<<14 | 0x22<<7 | 0x1B, + 31472 - 19968: jis0208<<14 | 0x42<<7 | 0x51, + 31473 - 19968: jis0212<<14 | 0x30<<7 | 0x4D, + 31476 - 19968: jis0212<<14 | 0x30<<7 | 0x4E, + 31478 - 19968: jis0208<<14 | 0x15<<7 | 0x04, + 31480 - 19968: jis0208<<14 | 0x30<<7 | 0x1E, + 31481 - 19968: jis0208<<14 | 0x22<<7 | 0x3C, + 31482 - 19968: jis0208<<14 | 0x1B<<7 | 0x12, + 31483 - 19968: jis0212<<14 | 0x30<<7 | 0x4F, + 31485 - 19968: jis0212<<14 | 0x30<<7 | 0x50, + 31486 - 19968: jis0212<<14 | 0x30<<7 | 0x51, + 31487 - 19968: jis0208<<14 | 0x13<<7 | 0x27, + 31490 - 19968: jis0208<<14 | 0x42<<7 | 0x52, + 31492 - 19968: jis0208<<14 | 0x43<<7 | 0x01, + 31494 - 19968: jis0208<<14 | 0x42<<7 | 0x55, + 31495 - 19968: jis0212<<14 | 0x30<<7 | 0x52, + 31496 - 19968: jis0208<<14 | 0x14<<7 | 0x47, + 31498 - 19968: jis0208<<14 | 0x42<<7 | 0x54, + 31499 - 19968: jis0208<<14 | 0x43<<7 | 0x03, + 31503 - 19968: jis0208<<14 | 0x42<<7 | 0x53, + 31505 - 19968: jis0208<<14 | 0x1D<<7 | 0x2F, + 31508 - 19968: jis0212<<14 | 0x30<<7 | 0x53, + 31512 - 19968: jis0208<<14 | 0x42<<7 | 0x57, + 31513 - 19968: jis0208<<14 | 0x42<<7 | 0x58, + 31515 - 19968: jis0208<<14 | 0x24<<7 | 0x0A, + 31518 - 19968: jis0208<<14 | 0x42<<7 | 0x59, + 31519 - 19968: jis0212<<14 | 0x30<<7 | 0x54, + 31520 - 19968: jis0208<<14 | 0x12<<7 | 0x3D, + 31523 - 19968: jis0212<<14 | 0x30<<7 | 0x55, + 31525 - 19968: jis0208<<14 | 0x1E<<7 | 0x39, + 31526 - 19968: jis0208<<14 | 0x28<<7 | 0x43, + 31527 - 19968: jis0212<<14 | 0x30<<7 | 0x56, + 31528 - 19968: jis0208<<14 | 0x42<<7 | 0x5B, + 31529 - 19968: jis0212<<14 | 0x30<<7 | 0x57, + 31530 - 19968: jis0212<<14 | 0x30<<7 | 0x58, + 31531 - 19968: jis0212<<14 | 0x30<<7 | 0x59, + 31532 - 19968: jis0208<<14 | 0x21<<7 | 0x47, + 31533 - 19968: jis0212<<14 | 0x30<<7 | 0x5A, + 31534 - 19968: jis0212<<14 | 0x30<<7 | 0x5B, + 31535 - 19968: jis0212<<14 | 0x30<<7 | 0x5C, + 31536 - 19968: jis0212<<14 | 0x30<<7 | 0x5D, + 31537 - 19968: jis0212<<14 | 0x31<<7 | 0x00, + 31539 - 19968: jis0208<<14 | 0x42<<7 | 0x56, + 31540 - 19968: jis0212<<14 | 0x31<<7 | 0x01, + 31541 - 19968: jis0208<<14 | 0x42<<7 | 0x5A, + 31542 - 19968: jis0208<<14 | 0x42<<7 | 0x5C, + 31545 - 19968: jis0208<<14 | 0x19<<7 | 0x5A, + 31549 - 19968: jis0212<<14 | 0x31<<7 | 0x02, + 31551 - 19968: jis0212<<14 | 0x31<<7 | 0x03, + 31552 - 19968: jis0212<<14 | 0x31<<7 | 0x04, + 31553 - 19968: jis0212<<14 | 0x31<<7 | 0x05, + 31557 - 19968: jis0208<<14 | 0x43<<7 | 0x05, + 31558 - 19968: jis0208<<14 | 0x28<<7 | 0x0D, + 31559 - 19968: jis0212<<14 | 0x31<<7 | 0x06, + 31560 - 19968: jis0208<<14 | 0x27<<7 | 0x05, + 31561 - 19968: jis0208<<14 | 0x24<<7 | 0x58, + 31563 - 19968: jis0208<<14 | 0x15<<7 | 0x39, + 31564 - 19968: jis0208<<14 | 0x43<<7 | 0x04, + 31565 - 19968: jis0208<<14 | 0x43<<7 | 0x02, + 31566 - 19968: jis0212<<14 | 0x31<<7 | 0x07, + 31567 - 19968: jis0208<<14 | 0x27<<7 | 0x14, + 31568 - 19968: jis0208<<14 | 0x42<<7 | 0x5D, + 31569 - 19968: jis0208<<14 | 0x22<<7 | 0x3D, + 31570 - 19968: jis0208<<14 | 0x24<<7 | 0x5A, + 31572 - 19968: jis0208<<14 | 0x24<<7 | 0x59, + 31573 - 19968: jis0212<<14 | 0x31<<7 | 0x08, + 31574 - 19968: jis0208<<14 | 0x19<<7 | 0x55, + 31581 - 19968: jis0208<<14 | 0x43<<7 | 0x17, + 31584 - 19968: jis0212<<14 | 0x31<<7 | 0x09, + 31588 - 19968: jis0212<<14 | 0x31<<7 | 0x0A, + 31589 - 19968: jis0208<<14 | 0x43<<7 | 0x07, + 31590 - 19968: jis0212<<14 | 0x31<<7 | 0x0B, + 31591 - 19968: jis0208<<14 | 0x43<<7 | 0x09, + 31593 - 19968: jis0212<<14 | 0x31<<7 | 0x0C, + 31594 - 19968: jis0212<<14 | 0x31<<7 | 0x0D, + 31596 - 19968: jis0208<<14 | 0x43<<7 | 0x0C, + 31597 - 19968: jis0212<<14 | 0x31<<7 | 0x0E, + 31598 - 19968: jis0208<<14 | 0x43<<7 | 0x0D, + 31599 - 19968: jis0212<<14 | 0x31<<7 | 0x0F, + 31600 - 19968: jis0208<<14 | 0x43<<7 | 0x0A, + 31601 - 19968: jis0208<<14 | 0x43<<7 | 0x0B, + 31602 - 19968: jis0212<<14 | 0x31<<7 | 0x10, + 31603 - 19968: jis0212<<14 | 0x31<<7 | 0x11, + 31604 - 19968: jis0208<<14 | 0x43<<7 | 0x08, + 31605 - 19968: jis0208<<14 | 0x43<<7 | 0x06, + 31607 - 19968: jis0212<<14 | 0x31<<7 | 0x12, + 31610 - 19968: jis0208<<14 | 0x43<<7 | 0x00, + 31620 - 19968: jis0212<<14 | 0x31<<7 | 0x13, + 31622 - 19968: jis0208<<14 | 0x29<<7 | 0x2E, + 31623 - 19968: jis0208<<14 | 0x11<<7 | 0x34, + 31625 - 19968: jis0212<<14 | 0x31<<7 | 0x14, + 31627 - 19968: jis0208<<14 | 0x43<<7 | 0x14, + 31629 - 19968: jis0208<<14 | 0x43<<7 | 0x11, + 31630 - 19968: jis0212<<14 | 0x31<<7 | 0x15, + 31631 - 19968: jis0208<<14 | 0x43<<7 | 0x16, + 31632 - 19968: jis0212<<14 | 0x31<<7 | 0x16, + 31633 - 19968: jis0212<<14 | 0x31<<7 | 0x17, + 31634 - 19968: jis0208<<14 | 0x43<<7 | 0x15, + 31636 - 19968: jis0208<<14 | 0x26<<7 | 0x52, + 31637 - 19968: jis0208<<14 | 0x2B<<7 | 0x06, + 31638 - 19968: jis0212<<14 | 0x31<<7 | 0x18, + 31639 - 19968: jis0208<<14 | 0x1A<<7 | 0x1A, + 31640 - 19968: jis0208<<14 | 0x43<<7 | 0x0F, + 31641 - 19968: jis0208<<14 | 0x43<<7 | 0x18, + 31642 - 19968: jis0208<<14 | 0x43<<7 | 0x13, + 31643 - 19968: jis0212<<14 | 0x31<<7 | 0x19, + 31644 - 19968: jis0208<<14 | 0x43<<7 | 0x12, + 31645 - 19968: jis0208<<14 | 0x43<<7 | 0x0E, + 31646 - 19968: jis0208<<14 | 0x5A<<7 | 0x2B, + 31647 - 19968: jis0208<<14 | 0x43<<7 | 0x10, + 31648 - 19968: jis0212<<14 | 0x31<<7 | 0x1B, + 31649 - 19968: jis0208<<14 | 0x13<<7 | 0x28, + 31653 - 19968: jis0212<<14 | 0x31<<7 | 0x1C, + 31658 - 19968: jis0208<<14 | 0x22<<7 | 0x1C, + 31660 - 19968: jis0212<<14 | 0x31<<7 | 0x1D, + 31661 - 19968: jis0208<<14 | 0x1F<<7 | 0x5C, + 31663 - 19968: jis0212<<14 | 0x31<<7 | 0x1E, + 31664 - 19968: jis0212<<14 | 0x31<<7 | 0x1F, + 31665 - 19968: jis0208<<14 | 0x27<<7 | 0x01, + 31666 - 19968: jis0212<<14 | 0x31<<7 | 0x20, + 31668 - 19968: jis0208<<14 | 0x43<<7 | 0x1D, + 31669 - 19968: jis0212<<14 | 0x31<<7 | 0x21, + 31670 - 19968: jis0212<<14 | 0x31<<7 | 0x22, + 31672 - 19968: jis0208<<14 | 0x27<<7 | 0x03, + 31674 - 19968: jis0212<<14 | 0x31<<7 | 0x23, + 31675 - 19968: jis0212<<14 | 0x31<<7 | 0x24, + 31676 - 19968: jis0212<<14 | 0x31<<7 | 0x25, + 31677 - 19968: jis0212<<14 | 0x31<<7 | 0x26, + 31680 - 19968: jis0208<<14 | 0x1F<<7 | 0x40, + 31681 - 19968: jis0208<<14 | 0x43<<7 | 0x1A, + 31682 - 19968: jis0212<<14 | 0x31<<7 | 0x27, + 31684 - 19968: jis0208<<14 | 0x27<<7 | 0x2E, + 31685 - 19968: jis0212<<14 | 0x31<<7 | 0x28, + 31686 - 19968: jis0208<<14 | 0x43<<7 | 0x1E, + 31687 - 19968: jis0208<<14 | 0x29<<7 | 0x32, + 31688 - 19968: jis0212<<14 | 0x31<<7 | 0x29, + 31689 - 19968: jis0208<<14 | 0x22<<7 | 0x3A, + 31690 - 19968: jis0212<<14 | 0x31<<7 | 0x2A, + 31691 - 19968: jis0208<<14 | 0x43<<7 | 0x19, + 31692 - 19968: jis0208<<14 | 0x43<<7 | 0x1B, + 31695 - 19968: jis0208<<14 | 0x43<<7 | 0x1C, + 31700 - 19968: jis0212<<14 | 0x31<<7 | 0x2B, + 31702 - 19968: jis0212<<14 | 0x31<<7 | 0x2C, + 31703 - 19968: jis0212<<14 | 0x31<<7 | 0x2D, + 31705 - 19968: jis0212<<14 | 0x31<<7 | 0x2E, + 31706 - 19968: jis0212<<14 | 0x31<<7 | 0x2F, + 31707 - 19968: jis0212<<14 | 0x31<<7 | 0x30, + 31709 - 19968: jis0208<<14 | 0x43<<7 | 0x1F, + 31712 - 19968: jis0208<<14 | 0x1B<<7 | 0x23, + 31716 - 19968: jis0208<<14 | 0x25<<7 | 0x25, + 31717 - 19968: jis0208<<14 | 0x43<<7 | 0x24, + 31718 - 19968: jis0208<<14 | 0x43<<7 | 0x23, + 31720 - 19968: jis0212<<14 | 0x31<<7 | 0x31, + 31721 - 19968: jis0208<<14 | 0x43<<7 | 0x20, + 31722 - 19968: jis0212<<14 | 0x31<<7 | 0x32, + 31725 - 19968: jis0208<<14 | 0x2E<<7 | 0x15, + 31730 - 19968: jis0212<<14 | 0x31<<7 | 0x33, + 31731 - 19968: jis0208<<14 | 0x43<<7 | 0x29, + 31732 - 19968: jis0212<<14 | 0x31<<7 | 0x34, + 31733 - 19968: jis0212<<14 | 0x31<<7 | 0x35, + 31734 - 19968: jis0208<<14 | 0x43<<7 | 0x2D, + 31735 - 19968: jis0208<<14 | 0x43<<7 | 0x2A, + 31736 - 19968: jis0212<<14 | 0x31<<7 | 0x36, + 31737 - 19968: jis0212<<14 | 0x31<<7 | 0x37, + 31738 - 19968: jis0212<<14 | 0x31<<7 | 0x38, + 31740 - 19968: jis0212<<14 | 0x31<<7 | 0x39, + 31742 - 19968: jis0212<<14 | 0x31<<7 | 0x3A, + 31744 - 19968: jis0208<<14 | 0x43<<7 | 0x26, + 31745 - 19968: jis0212<<14 | 0x31<<7 | 0x3B, + 31746 - 19968: jis0212<<14 | 0x31<<7 | 0x3C, + 31747 - 19968: jis0212<<14 | 0x31<<7 | 0x3D, + 31748 - 19968: jis0212<<14 | 0x31<<7 | 0x3E, + 31750 - 19968: jis0212<<14 | 0x31<<7 | 0x3F, + 31751 - 19968: jis0208<<14 | 0x43<<7 | 0x27, + 31753 - 19968: jis0212<<14 | 0x31<<7 | 0x40, + 31755 - 19968: jis0212<<14 | 0x31<<7 | 0x41, + 31756 - 19968: jis0212<<14 | 0x31<<7 | 0x42, + 31757 - 19968: jis0208<<14 | 0x43<<7 | 0x2C, + 31758 - 19968: jis0212<<14 | 0x31<<7 | 0x43, + 31759 - 19968: jis0212<<14 | 0x31<<7 | 0x44, + 31761 - 19968: jis0208<<14 | 0x43<<7 | 0x21, + 31762 - 19968: jis0208<<14 | 0x31<<7 | 0x34, + 31763 - 19968: jis0208<<14 | 0x43<<7 | 0x28, + 31764 - 19968: jis0208<<14 | 0x43<<7 | 0x22, + 31767 - 19968: jis0208<<14 | 0x43<<7 | 0x2B, + 31769 - 19968: jis0212<<14 | 0x31<<7 | 0x45, + 31771 - 19968: jis0212<<14 | 0x31<<7 | 0x46, + 31775 - 19968: jis0208<<14 | 0x43<<7 | 0x31, + 31776 - 19968: jis0212<<14 | 0x31<<7 | 0x47, + 31777 - 19968: jis0208<<14 | 0x13<<7 | 0x29, + 31779 - 19968: jis0208<<14 | 0x43<<7 | 0x2E, + 31781 - 19968: jis0212<<14 | 0x31<<7 | 0x48, + 31782 - 19968: jis0212<<14 | 0x31<<7 | 0x49, + 31783 - 19968: jis0208<<14 | 0x43<<7 | 0x2F, + 31784 - 19968: jis0212<<14 | 0x31<<7 | 0x4A, + 31786 - 19968: jis0208<<14 | 0x43<<7 | 0x30, + 31787 - 19968: jis0208<<14 | 0x43<<7 | 0x33, + 31788 - 19968: jis0212<<14 | 0x31<<7 | 0x4B, + 31793 - 19968: jis0212<<14 | 0x31<<7 | 0x4C, + 31795 - 19968: jis0212<<14 | 0x31<<7 | 0x4D, + 31796 - 19968: jis0212<<14 | 0x31<<7 | 0x4E, + 31798 - 19968: jis0212<<14 | 0x31<<7 | 0x4F, + 31799 - 19968: jis0208<<14 | 0x43<<7 | 0x32, + 31800 - 19968: jis0208<<14 | 0x27<<7 | 0x55, + 31801 - 19968: jis0212<<14 | 0x31<<7 | 0x50, + 31802 - 19968: jis0212<<14 | 0x31<<7 | 0x51, + 31805 - 19968: jis0208<<14 | 0x43<<7 | 0x34, + 31806 - 19968: jis0208<<14 | 0x2D<<7 | 0x5B, + 31807 - 19968: jis0208<<14 | 0x29<<7 | 0x4C, + 31808 - 19968: jis0208<<14 | 0x43<<7 | 0x39, + 31811 - 19968: jis0208<<14 | 0x43<<7 | 0x36, + 31814 - 19968: jis0212<<14 | 0x31<<7 | 0x52, + 31818 - 19968: jis0212<<14 | 0x31<<7 | 0x53, + 31820 - 19968: jis0208<<14 | 0x43<<7 | 0x35, + 31821 - 19968: jis0208<<14 | 0x1F<<7 | 0x31, + 31823 - 19968: jis0208<<14 | 0x43<<7 | 0x38, + 31824 - 19968: jis0208<<14 | 0x43<<7 | 0x3A, + 31825 - 19968: jis0212<<14 | 0x31<<7 | 0x55, + 31826 - 19968: jis0212<<14 | 0x31<<7 | 0x56, + 31827 - 19968: jis0212<<14 | 0x31<<7 | 0x57, + 31828 - 19968: jis0208<<14 | 0x43<<7 | 0x37, + 31829 - 19968: jis0212<<14 | 0x31<<7 | 0x54, + 31830 - 19968: jis0208<<14 | 0x43<<7 | 0x3E, + 31832 - 19968: jis0208<<14 | 0x43<<7 | 0x3B, + 31833 - 19968: jis0212<<14 | 0x31<<7 | 0x58, + 31834 - 19968: jis0212<<14 | 0x31<<7 | 0x59, + 31835 - 19968: jis0212<<14 | 0x31<<7 | 0x5A, + 31836 - 19968: jis0212<<14 | 0x31<<7 | 0x5B, + 31837 - 19968: jis0212<<14 | 0x31<<7 | 0x5C, + 31838 - 19968: jis0212<<14 | 0x31<<7 | 0x5D, + 31839 - 19968: jis0208<<14 | 0x43<<7 | 0x3C, + 31840 - 19968: jis0208<<14 | 0x43<<7 | 0x25, + 31841 - 19968: jis0212<<14 | 0x32<<7 | 0x00, + 31843 - 19968: jis0212<<14 | 0x32<<7 | 0x01, + 31844 - 19968: jis0208<<14 | 0x43<<7 | 0x3D, + 31845 - 19968: jis0208<<14 | 0x43<<7 | 0x3F, + 31847 - 19968: jis0212<<14 | 0x32<<7 | 0x02, + 31849 - 19968: jis0212<<14 | 0x32<<7 | 0x03, + 31852 - 19968: jis0208<<14 | 0x43<<7 | 0x40, + 31853 - 19968: jis0212<<14 | 0x32<<7 | 0x04, + 31854 - 19968: jis0212<<14 | 0x32<<7 | 0x05, + 31856 - 19968: jis0212<<14 | 0x32<<7 | 0x06, + 31858 - 19968: jis0212<<14 | 0x32<<7 | 0x07, + 31859 - 19968: jis0208<<14 | 0x29<<7 | 0x25, + 31861 - 19968: jis0208<<14 | 0x43<<7 | 0x41, + 31865 - 19968: jis0212<<14 | 0x32<<7 | 0x08, + 31868 - 19968: jis0212<<14 | 0x32<<7 | 0x09, + 31869 - 19968: jis0212<<14 | 0x32<<7 | 0x0A, + 31870 - 19968: jis0208<<14 | 0x2B<<7 | 0x41, + 31873 - 19968: jis0208<<14 | 0x15<<7 | 0x2D, + 31874 - 19968: jis0208<<14 | 0x16<<7 | 0x08, + 31875 - 19968: jis0208<<14 | 0x43<<7 | 0x42, + 31878 - 19968: jis0212<<14 | 0x32<<7 | 0x0B, + 31879 - 19968: jis0212<<14 | 0x32<<7 | 0x0C, + 31881 - 19968: jis0208<<14 | 0x29<<7 | 0x13, + 31883 - 19968: jis0208<<14 | 0x1E<<7 | 0x47, + 31885 - 19968: jis0208<<14 | 0x2B<<7 | 0x0F, + 31887 - 19968: jis0212<<14 | 0x32<<7 | 0x0D, + 31888 - 19968: jis0208<<14 | 0x43<<7 | 0x43, + 31890 - 19968: jis0208<<14 | 0x2D<<7 | 0x12, + 31892 - 19968: jis0212<<14 | 0x32<<7 | 0x0E, + 31893 - 19968: jis0208<<14 | 0x26<<7 | 0x53, + 31895 - 19968: jis0208<<14 | 0x20<<7 | 0x25, + 31896 - 19968: jis0208<<14 | 0x26<<7 | 0x13, + 31899 - 19968: jis0208<<14 | 0x1C<<7 | 0x2C, + 31902 - 19968: jis0212<<14 | 0x32<<7 | 0x0F, + 31903 - 19968: jis0208<<14 | 0x0F<<7 | 0x1F, + 31904 - 19968: jis0212<<14 | 0x32<<7 | 0x10, + 31905 - 19968: jis0208<<14 | 0x43<<7 | 0x48, + 31906 - 19968: jis0208<<14 | 0x43<<7 | 0x46, + 31908 - 19968: jis0208<<14 | 0x43<<7 | 0x44, + 31909 - 19968: jis0208<<14 | 0x13<<7 | 0x00, + 31910 - 19968: jis0212<<14 | 0x32<<7 | 0x11, + 31911 - 19968: jis0208<<14 | 0x1D<<7 | 0x30, + 31912 - 19968: jis0208<<14 | 0x43<<7 | 0x49, + 31915 - 19968: jis0208<<14 | 0x43<<7 | 0x47, + 31917 - 19968: jis0208<<14 | 0x43<<7 | 0x45, + 31918 - 19968: jis0208<<14 | 0x43<<7 | 0x4D, + 31920 - 19968: jis0212<<14 | 0x32<<7 | 0x12, + 31921 - 19968: jis0208<<14 | 0x43<<7 | 0x4C, + 31922 - 19968: jis0208<<14 | 0x43<<7 | 0x4B, + 31923 - 19968: jis0208<<14 | 0x43<<7 | 0x4A, + 31926 - 19968: jis0212<<14 | 0x32<<7 | 0x13, + 31927 - 19968: jis0212<<14 | 0x32<<7 | 0x14, + 31929 - 19968: jis0208<<14 | 0x43<<7 | 0x4E, + 31930 - 19968: jis0212<<14 | 0x32<<7 | 0x15, + 31931 - 19968: jis0212<<14 | 0x32<<7 | 0x16, + 31932 - 19968: jis0212<<14 | 0x32<<7 | 0x17, + 31933 - 19968: jis0208<<14 | 0x43<<7 | 0x4F, + 31934 - 19968: jis0208<<14 | 0x1F<<7 | 0x19, + 31935 - 19968: jis0212<<14 | 0x32<<7 | 0x18, + 31936 - 19968: jis0208<<14 | 0x43<<7 | 0x50, + 31938 - 19968: jis0208<<14 | 0x43<<7 | 0x52, + 31940 - 19968: jis0212<<14 | 0x32<<7 | 0x19, + 31941 - 19968: jis0208<<14 | 0x43<<7 | 0x51, + 31943 - 19968: jis0212<<14 | 0x32<<7 | 0x1A, + 31944 - 19968: jis0212<<14 | 0x32<<7 | 0x1B, + 31945 - 19968: jis0212<<14 | 0x32<<7 | 0x1C, + 31946 - 19968: jis0208<<14 | 0x17<<7 | 0x31, + 31949 - 19968: jis0212<<14 | 0x32<<7 | 0x1D, + 31950 - 19968: jis0208<<14 | 0x20<<7 | 0x17, + 31951 - 19968: jis0212<<14 | 0x32<<7 | 0x1E, + 31954 - 19968: jis0208<<14 | 0x43<<7 | 0x54, + 31955 - 19968: jis0212<<14 | 0x32<<7 | 0x1F, + 31956 - 19968: jis0212<<14 | 0x32<<7 | 0x20, + 31957 - 19968: jis0212<<14 | 0x32<<7 | 0x21, + 31958 - 19968: jis0208<<14 | 0x24<<7 | 0x5B, + 31959 - 19968: jis0212<<14 | 0x32<<7 | 0x22, + 31960 - 19968: jis0208<<14 | 0x43<<7 | 0x53, + 31961 - 19968: jis0212<<14 | 0x32<<7 | 0x23, + 31962 - 19968: jis0212<<14 | 0x32<<7 | 0x24, + 31964 - 19968: jis0208<<14 | 0x43<<7 | 0x55, + 31965 - 19968: jis0212<<14 | 0x32<<7 | 0x25, + 31966 - 19968: jis0208<<14 | 0x29<<7 | 0x14, + 31967 - 19968: jis0208<<14 | 0x20<<7 | 0x4B, + 31968 - 19968: jis0208<<14 | 0x18<<7 | 0x26, + 31970 - 19968: jis0208<<14 | 0x43<<7 | 0x56, + 31974 - 19968: jis0212<<14 | 0x32<<7 | 0x26, + 31975 - 19968: jis0208<<14 | 0x2D<<7 | 0x27, + 31977 - 19968: jis0212<<14 | 0x32<<7 | 0x27, + 31979 - 19968: jis0212<<14 | 0x32<<7 | 0x28, + 31983 - 19968: jis0208<<14 | 0x43<<7 | 0x58, + 31986 - 19968: jis0208<<14 | 0x43<<7 | 0x59, + 31988 - 19968: jis0208<<14 | 0x43<<7 | 0x5A, + 31989 - 19968: jis0212<<14 | 0x32<<7 | 0x29, + 31990 - 19968: jis0208<<14 | 0x43<<7 | 0x5B, + 31992 - 19968: jis0208<<14 | 0x1A<<7 | 0x44, + 31994 - 19968: jis0208<<14 | 0x43<<7 | 0x5C, + 31995 - 19968: jis0208<<14 | 0x16<<7 | 0x2E, + 31998 - 19968: jis0208<<14 | 0x14<<7 | 0x49, + 32000 - 19968: jis0208<<14 | 0x14<<7 | 0x09, + 32002 - 19968: jis0208<<14 | 0x44<<7 | 0x00, + 32003 - 19968: jis0212<<14 | 0x32<<7 | 0x2A, + 32004 - 19968: jis0208<<14 | 0x2B<<7 | 0x52, + 32005 - 19968: jis0208<<14 | 0x18<<7 | 0x27, + 32006 - 19968: jis0208<<14 | 0x43<<7 | 0x5D, + 32007 - 19968: jis0212<<14 | 0x32<<7 | 0x2B, + 32008 - 19968: jis0212<<14 | 0x32<<7 | 0x2C, + 32009 - 19968: jis0212<<14 | 0x32<<7 | 0x2D, + 32010 - 19968: jis0208<<14 | 0x44<<7 | 0x03, + 32011 - 19968: jis0208<<14 | 0x2B<<7 | 0x45, + 32013 - 19968: jis0208<<14 | 0x26<<7 | 0x1B, + 32015 - 19968: jis0212<<14 | 0x32<<7 | 0x2E, + 32016 - 19968: jis0208<<14 | 0x28<<7 | 0x12, + 32017 - 19968: jis0212<<14 | 0x32<<7 | 0x2F, + 32018 - 19968: jis0212<<14 | 0x32<<7 | 0x30, + 32019 - 19968: jis0212<<14 | 0x32<<7 | 0x31, + 32020 - 19968: jis0208<<14 | 0x1C<<7 | 0x42, + 32021 - 19968: jis0208<<14 | 0x44<<7 | 0x02, + 32022 - 19968: jis0212<<14 | 0x32<<7 | 0x32, + 32023 - 19968: jis0208<<14 | 0x1B<<7 | 0x32, + 32024 - 19968: jis0208<<14 | 0x18<<7 | 0x28, + 32025 - 19968: jis0208<<14 | 0x1A<<7 | 0x45, + 32026 - 19968: jis0208<<14 | 0x14<<7 | 0x48, + 32027 - 19968: jis0208<<14 | 0x29<<7 | 0x15, + 32028 - 19968: jis0208<<14 | 0x44<<7 | 0x01, + 32029 - 19968: jis0212<<14 | 0x32<<7 | 0x33, + 32030 - 19968: jis0212<<14 | 0x32<<7 | 0x34, + 32032 - 19968: jis0208<<14 | 0x20<<7 | 0x26, + 32033 - 19968: jis0208<<14 | 0x2A<<7 | 0x21, + 32034 - 19968: jis0208<<14 | 0x19<<7 | 0x56, + 32035 - 19968: jis0212<<14 | 0x32<<7 | 0x35, + 32038 - 19968: jis0212<<14 | 0x32<<7 | 0x36, + 32042 - 19968: jis0212<<14 | 0x32<<7 | 0x37, + 32043 - 19968: jis0208<<14 | 0x1A<<7 | 0x46, + 32044 - 19968: jis0208<<14 | 0x23<<7 | 0x3C, + 32045 - 19968: jis0212<<14 | 0x32<<7 | 0x38, + 32046 - 19968: jis0208<<14 | 0x44<<7 | 0x06, + 32047 - 19968: jis0208<<14 | 0x2D<<7 | 0x3E, + 32048 - 19968: jis0208<<14 | 0x19<<7 | 0x38, + 32049 - 19968: jis0212<<14 | 0x32<<7 | 0x39, + 32050 - 19968: jis0208<<14 | 0x44<<7 | 0x07, + 32051 - 19968: jis0208<<14 | 0x1E<<7 | 0x21, + 32053 - 19968: jis0208<<14 | 0x44<<7 | 0x09, + 32057 - 19968: jis0208<<14 | 0x1D<<7 | 0x31, + 32058 - 19968: jis0208<<14 | 0x19<<7 | 0x0F, + 32060 - 19968: jis0212<<14 | 0x32<<7 | 0x3A, + 32061 - 19968: jis0212<<14 | 0x32<<7 | 0x3B, + 32062 - 19968: jis0212<<14 | 0x32<<7 | 0x3C, + 32063 - 19968: jis0208<<14 | 0x44<<7 | 0x08, + 32064 - 19968: jis0212<<14 | 0x32<<7 | 0x3D, + 32065 - 19968: jis0212<<14 | 0x32<<7 | 0x3E, + 32066 - 19968: jis0208<<14 | 0x1C<<7 | 0x09, + 32067 - 19968: jis0208<<14 | 0x17<<7 | 0x1D, + 32068 - 19968: jis0208<<14 | 0x20<<7 | 0x27, + 32069 - 19968: jis0208<<14 | 0x44<<7 | 0x04, + 32070 - 19968: jis0208<<14 | 0x44<<7 | 0x0A, + 32071 - 19968: jis0212<<14 | 0x32<<7 | 0x3F, + 32072 - 19968: jis0208<<14 | 0x5A<<7 | 0x2D, + 32075 - 19968: jis0208<<14 | 0x44<<7 | 0x05, + 32076 - 19968: jis0208<<14 | 0x16<<7 | 0x2F, + 32077 - 19968: jis0212<<14 | 0x32<<7 | 0x41, + 32078 - 19968: jis0208<<14 | 0x44<<7 | 0x0D, + 32079 - 19968: jis0208<<14 | 0x44<<7 | 0x11, + 32080 - 19968: jis0208<<14 | 0x16<<7 | 0x4A, + 32081 - 19968: jis0212<<14 | 0x32<<7 | 0x42, + 32083 - 19968: jis0212<<14 | 0x32<<7 | 0x43, + 32086 - 19968: jis0208<<14 | 0x44<<7 | 0x0C, + 32087 - 19968: jis0212<<14 | 0x32<<7 | 0x44, + 32089 - 19968: jis0212<<14 | 0x32<<7 | 0x45, + 32090 - 19968: jis0212<<14 | 0x32<<7 | 0x46, + 32091 - 19968: jis0208<<14 | 0x44<<7 | 0x15, + 32092 - 19968: jis0208<<14 | 0x5A<<7 | 0x2E, + 32093 - 19968: jis0212<<14 | 0x32<<7 | 0x48, + 32094 - 19968: jis0208<<14 | 0x18<<7 | 0x29, + 32097 - 19968: jis0208<<14 | 0x2C<<7 | 0x4C, + 32098 - 19968: jis0208<<14 | 0x0F<<7 | 0x1B, + 32099 - 19968: jis0208<<14 | 0x44<<7 | 0x12, + 32101 - 19968: jis0212<<14 | 0x32<<7 | 0x49, + 32102 - 19968: jis0208<<14 | 0x14<<7 | 0x4A, + 32103 - 19968: jis0212<<14 | 0x32<<7 | 0x4A, + 32104 - 19968: jis0208<<14 | 0x44<<7 | 0x0F, + 32106 - 19968: jis0212<<14 | 0x32<<7 | 0x4B, + 32110 - 19968: jis0208<<14 | 0x44<<7 | 0x10, + 32112 - 19968: jis0212<<14 | 0x32<<7 | 0x4C, + 32113 - 19968: jis0208<<14 | 0x24<<7 | 0x5C, + 32114 - 19968: jis0208<<14 | 0x44<<7 | 0x0E, + 32115 - 19968: jis0208<<14 | 0x44<<7 | 0x0B, + 32117 - 19968: jis0208<<14 | 0x12<<7 | 0x07, + 32118 - 19968: jis0208<<14 | 0x1F<<7 | 0x43, + 32120 - 19968: jis0212<<14 | 0x32<<7 | 0x4D, + 32121 - 19968: jis0208<<14 | 0x17<<7 | 0x07, + 32122 - 19968: jis0212<<14 | 0x32<<7 | 0x4E, + 32123 - 19968: jis0212<<14 | 0x32<<7 | 0x4F, + 32125 - 19968: jis0208<<14 | 0x44<<7 | 0x17, + 32127 - 19968: jis0212<<14 | 0x32<<7 | 0x50, + 32129 - 19968: jis0212<<14 | 0x32<<7 | 0x51, + 32130 - 19968: jis0212<<14 | 0x32<<7 | 0x52, + 32131 - 19968: jis0212<<14 | 0x32<<7 | 0x53, + 32133 - 19968: jis0212<<14 | 0x32<<7 | 0x54, + 32134 - 19968: jis0212<<14 | 0x32<<7 | 0x55, + 32136 - 19968: jis0212<<14 | 0x32<<7 | 0x56, + 32137 - 19968: jis0208<<14 | 0x44<<7 | 0x14, + 32139 - 19968: jis0212<<14 | 0x32<<7 | 0x57, + 32140 - 19968: jis0212<<14 | 0x32<<7 | 0x58, + 32141 - 19968: jis0212<<14 | 0x32<<7 | 0x59, + 32143 - 19968: jis0208<<14 | 0x44<<7 | 0x16, + 32145 - 19968: jis0212<<14 | 0x32<<7 | 0x5A, + 32147 - 19968: jis0208<<14 | 0x44<<7 | 0x13, + 32150 - 19968: jis0212<<14 | 0x32<<7 | 0x5B, + 32151 - 19968: jis0212<<14 | 0x32<<7 | 0x5C, + 32153 - 19968: jis0208<<14 | 0x16<<7 | 0x30, + 32154 - 19968: jis0208<<14 | 0x21<<7 | 0x12, + 32155 - 19968: jis0208<<14 | 0x44<<7 | 0x18, + 32156 - 19968: jis0208<<14 | 0x20<<7 | 0x4D, + 32157 - 19968: jis0212<<14 | 0x32<<7 | 0x5D, + 32158 - 19968: jis0212<<14 | 0x33<<7 | 0x00, + 32159 - 19968: jis0208<<14 | 0x44<<7 | 0x25, + 32160 - 19968: jis0208<<14 | 0x5A<<7 | 0x30, + 32162 - 19968: jis0208<<14 | 0x44<<7 | 0x21, + 32163 - 19968: jis0208<<14 | 0x44<<7 | 0x1B, + 32166 - 19968: jis0212<<14 | 0x33<<7 | 0x01, + 32167 - 19968: jis0212<<14 | 0x33<<7 | 0x02, + 32170 - 19968: jis0212<<14 | 0x33<<7 | 0x03, + 32171 - 19968: jis0208<<14 | 0x44<<7 | 0x1F, + 32172 - 19968: jis0208<<14 | 0x1B<<7 | 0x59, + 32173 - 19968: jis0208<<14 | 0x0F<<7 | 0x3C, + 32174 - 19968: jis0208<<14 | 0x44<<7 | 0x1A, + 32175 - 19968: jis0208<<14 | 0x44<<7 | 0x22, + 32176 - 19968: jis0208<<14 | 0x44<<7 | 0x26, + 32177 - 19968: jis0208<<14 | 0x18<<7 | 0x2A, + 32178 - 19968: jis0208<<14 | 0x2B<<7 | 0x35, + 32179 - 19968: jis0212<<14 | 0x33<<7 | 0x04, + 32180 - 19968: jis0208<<14 | 0x23<<7 | 0x35, + 32181 - 19968: jis0208<<14 | 0x44<<7 | 0x1C, + 32182 - 19968: jis0212<<14 | 0x33<<7 | 0x05, + 32183 - 19968: jis0208<<14 | 0x5A<<7 | 0x2F, + 32184 - 19968: jis0208<<14 | 0x44<<7 | 0x24, + 32185 - 19968: jis0212<<14 | 0x33<<7 | 0x07, + 32186 - 19968: jis0208<<14 | 0x44<<7 | 0x19, + 32187 - 19968: jis0208<<14 | 0x22<<7 | 0x1D, + 32189 - 19968: jis0208<<14 | 0x44<<7 | 0x1E, + 32190 - 19968: jis0208<<14 | 0x0F<<7 | 0x1C, + 32191 - 19968: jis0208<<14 | 0x2B<<7 | 0x29, + 32194 - 19968: jis0212<<14 | 0x33<<7 | 0x08, + 32195 - 19968: jis0212<<14 | 0x33<<7 | 0x09, + 32196 - 19968: jis0212<<14 | 0x33<<7 | 0x0A, + 32197 - 19968: jis0212<<14 | 0x33<<7 | 0x0B, + 32198 - 19968: jis0212<<14 | 0x33<<7 | 0x0C, + 32199 - 19968: jis0208<<14 | 0x44<<7 | 0x1D, + 32202 - 19968: jis0208<<14 | 0x15<<7 | 0x3A, + 32203 - 19968: jis0208<<14 | 0x27<<7 | 0x4B, + 32204 - 19968: jis0212<<14 | 0x33<<7 | 0x0D, + 32205 - 19968: jis0212<<14 | 0x33<<7 | 0x0E, + 32206 - 19968: jis0212<<14 | 0x33<<7 | 0x0F, + 32207 - 19968: jis0208<<14 | 0x20<<7 | 0x4C, + 32209 - 19968: jis0208<<14 | 0x2D<<7 | 0x2F, + 32210 - 19968: jis0208<<14 | 0x1C<<7 | 0x4E, + 32213 - 19968: jis0208<<14 | 0x44<<7 | 0x4D, + 32214 - 19968: jis0208<<14 | 0x5A<<7 | 0x31, + 32215 - 19968: jis0212<<14 | 0x33<<7 | 0x10, + 32216 - 19968: jis0208<<14 | 0x44<<7 | 0x27, + 32217 - 19968: jis0212<<14 | 0x33<<7 | 0x11, + 32218 - 19968: jis0208<<14 | 0x1F<<7 | 0x5D, + 32220 - 19968: jis0208<<14 | 0x44<<7 | 0x23, + 32221 - 19968: jis0208<<14 | 0x44<<7 | 0x28, + 32222 - 19968: jis0208<<14 | 0x44<<7 | 0x2A, + 32224 - 19968: jis0208<<14 | 0x23<<7 | 0x58, + 32225 - 19968: jis0208<<14 | 0x44<<7 | 0x2D, + 32226 - 19968: jis0212<<14 | 0x33<<7 | 0x13, + 32228 - 19968: jis0208<<14 | 0x44<<7 | 0x29, + 32229 - 19968: jis0212<<14 | 0x33<<7 | 0x14, + 32230 - 19968: jis0212<<14 | 0x33<<7 | 0x15, + 32232 - 19968: jis0208<<14 | 0x29<<7 | 0x33, + 32233 - 19968: jis0208<<14 | 0x13<<7 | 0x2A, + 32234 - 19968: jis0212<<14 | 0x33<<7 | 0x16, + 32235 - 19968: jis0212<<14 | 0x33<<7 | 0x17, + 32236 - 19968: jis0208<<14 | 0x2B<<7 | 0x2A, + 32237 - 19968: jis0212<<14 | 0x33<<7 | 0x18, + 32239 - 19968: jis0208<<14 | 0x0F<<7 | 0x3D, + 32241 - 19968: jis0212<<14 | 0x33<<7 | 0x19, + 32242 - 19968: jis0208<<14 | 0x44<<7 | 0x2C, + 32244 - 19968: jis0208<<14 | 0x2D<<7 | 0x5C, + 32245 - 19968: jis0212<<14 | 0x33<<7 | 0x1A, + 32246 - 19968: jis0212<<14 | 0x33<<7 | 0x1B, + 32249 - 19968: jis0212<<14 | 0x33<<7 | 0x1C, + 32250 - 19968: jis0212<<14 | 0x33<<7 | 0x1D, + 32251 - 19968: jis0208<<14 | 0x44<<7 | 0x2B, + 32256 - 19968: jis0212<<14 | 0x33<<7 | 0x12, + 32257 - 19968: jis0208<<14 | 0x10<<7 | 0x4E, + 32260 - 19968: jis0208<<14 | 0x25<<7 | 0x4B, + 32261 - 19968: jis0208<<14 | 0x44<<7 | 0x2E, + 32264 - 19968: jis0212<<14 | 0x33<<7 | 0x1E, + 32265 - 19968: jis0208<<14 | 0x44<<7 | 0x35, + 32266 - 19968: jis0208<<14 | 0x44<<7 | 0x2F, + 32267 - 19968: jis0208<<14 | 0x44<<7 | 0x36, + 32272 - 19968: jis0212<<14 | 0x33<<7 | 0x1F, + 32273 - 19968: jis0212<<14 | 0x33<<7 | 0x20, + 32274 - 19968: jis0208<<14 | 0x44<<7 | 0x32, + 32277 - 19968: jis0212<<14 | 0x33<<7 | 0x21, + 32279 - 19968: jis0212<<14 | 0x33<<7 | 0x22, + 32283 - 19968: jis0208<<14 | 0x26<<7 | 0x5A, + 32284 - 19968: jis0212<<14 | 0x33<<7 | 0x23, + 32285 - 19968: jis0212<<14 | 0x33<<7 | 0x24, + 32286 - 19968: jis0208<<14 | 0x1B<<7 | 0x29, + 32287 - 19968: jis0208<<14 | 0x44<<7 | 0x34, + 32288 - 19968: jis0212<<14 | 0x33<<7 | 0x25, + 32289 - 19968: jis0208<<14 | 0x44<<7 | 0x31, + 32290 - 19968: jis0208<<14 | 0x44<<7 | 0x37, + 32291 - 19968: jis0208<<14 | 0x44<<7 | 0x30, + 32294 - 19968: jis0208<<14 | 0x1C<<7 | 0x23, + 32295 - 19968: jis0212<<14 | 0x33<<7 | 0x26, + 32296 - 19968: jis0212<<14 | 0x33<<7 | 0x27, + 32299 - 19968: jis0208<<14 | 0x2A<<7 | 0x04, + 32300 - 19968: jis0212<<14 | 0x33<<7 | 0x28, + 32301 - 19968: jis0212<<14 | 0x33<<7 | 0x29, + 32302 - 19968: jis0208<<14 | 0x1C<<7 | 0x2B, + 32303 - 19968: jis0212<<14 | 0x33<<7 | 0x2A, + 32305 - 19968: jis0208<<14 | 0x44<<7 | 0x33, + 32306 - 19968: jis0208<<14 | 0x44<<7 | 0x3F, + 32307 - 19968: jis0212<<14 | 0x33<<7 | 0x2B, + 32309 - 19968: jis0208<<14 | 0x44<<7 | 0x3B, + 32310 - 19968: jis0212<<14 | 0x33<<7 | 0x2C, + 32311 - 19968: jis0208<<14 | 0x44<<7 | 0x3E, + 32313 - 19968: jis0208<<14 | 0x44<<7 | 0x3C, + 32314 - 19968: jis0208<<14 | 0x44<<7 | 0x40, + 32315 - 19968: jis0208<<14 | 0x44<<7 | 0x3A, + 32317 - 19968: jis0208<<14 | 0x44<<7 | 0x20, + 32318 - 19968: jis0208<<14 | 0x1F<<7 | 0x32, + 32319 - 19968: jis0212<<14 | 0x33<<7 | 0x2D, + 32321 - 19968: jis0208<<14 | 0x27<<7 | 0x2A, + 32323 - 19968: jis0208<<14 | 0x44<<7 | 0x3D, + 32324 - 19968: jis0212<<14 | 0x33<<7 | 0x2E, + 32325 - 19968: jis0212<<14 | 0x33<<7 | 0x2F, + 32326 - 19968: jis0208<<14 | 0x44<<7 | 0x38, + 32327 - 19968: jis0212<<14 | 0x33<<7 | 0x30, + 32330 - 19968: jis0208<<14 | 0x20<<7 | 0x00, + 32331 - 19968: jis0208<<14 | 0x16<<7 | 0x31, + 32333 - 19968: jis0208<<14 | 0x1C<<7 | 0x0A, + 32334 - 19968: jis0212<<14 | 0x33<<7 | 0x31, + 32336 - 19968: jis0212<<14 | 0x33<<7 | 0x32, + 32338 - 19968: jis0208<<14 | 0x5A<<7 | 0x32, + 32340 - 19968: jis0208<<14 | 0x1E<<7 | 0x04, + 32341 - 19968: jis0208<<14 | 0x20<<7 | 0x15, + 32342 - 19968: jis0208<<14 | 0x44<<7 | 0x43, + 32344 - 19968: jis0212<<14 | 0x33<<7 | 0x34, + 32345 - 19968: jis0208<<14 | 0x44<<7 | 0x45, + 32346 - 19968: jis0208<<14 | 0x44<<7 | 0x46, + 32349 - 19968: jis0208<<14 | 0x44<<7 | 0x42, + 32350 - 19968: jis0208<<14 | 0x44<<7 | 0x44, + 32351 - 19968: jis0212<<14 | 0x33<<7 | 0x35, + 32353 - 19968: jis0212<<14 | 0x33<<7 | 0x36, + 32354 - 19968: jis0212<<14 | 0x33<<7 | 0x37, + 32357 - 19968: jis0212<<14 | 0x33<<7 | 0x38, + 32358 - 19968: jis0208<<14 | 0x44<<7 | 0x39, + 32359 - 19968: jis0208<<14 | 0x44<<7 | 0x41, + 32361 - 19968: jis0208<<14 | 0x44<<7 | 0x49, + 32362 - 19968: jis0208<<14 | 0x44<<7 | 0x48, + 32363 - 19968: jis0212<<14 | 0x33<<7 | 0x39, + 32365 - 19968: jis0208<<14 | 0x2A<<7 | 0x59, + 32366 - 19968: jis0212<<14 | 0x33<<7 | 0x3A, + 32367 - 19968: jis0212<<14 | 0x33<<7 | 0x3B, + 32368 - 19968: jis0208<<14 | 0x16<<7 | 0x0A, + 32371 - 19968: jis0212<<14 | 0x33<<7 | 0x3C, + 32376 - 19968: jis0212<<14 | 0x33<<7 | 0x3D, + 32377 - 19968: jis0208<<14 | 0x44<<7 | 0x47, + 32379 - 19968: jis0208<<14 | 0x44<<7 | 0x4B, + 32380 - 19968: jis0208<<14 | 0x44<<7 | 0x4A, + 32381 - 19968: jis0208<<14 | 0x44<<7 | 0x4E, + 32382 - 19968: jis0212<<14 | 0x33<<7 | 0x3E, + 32383 - 19968: jis0208<<14 | 0x44<<7 | 0x50, + 32385 - 19968: jis0212<<14 | 0x33<<7 | 0x3F, + 32386 - 19968: jis0208<<14 | 0x1A<<7 | 0x1B, + 32387 - 19968: jis0208<<14 | 0x44<<7 | 0x4C, + 32390 - 19968: jis0212<<14 | 0x33<<7 | 0x40, + 32391 - 19968: jis0212<<14 | 0x33<<7 | 0x41, + 32392 - 19968: jis0208<<14 | 0x44<<7 | 0x51, + 32393 - 19968: jis0208<<14 | 0x44<<7 | 0x52, + 32394 - 19968: jis0208<<14 | 0x58<<7 | 0x00, + 32396 - 19968: jis0208<<14 | 0x44<<7 | 0x53, + 32397 - 19968: jis0212<<14 | 0x33<<7 | 0x43, + 32398 - 19968: jis0208<<14 | 0x44<<7 | 0x59, + 32399 - 19968: jis0208<<14 | 0x24<<7 | 0x1A, + 32400 - 19968: jis0208<<14 | 0x44<<7 | 0x55, + 32401 - 19968: jis0212<<14 | 0x33<<7 | 0x44, + 32402 - 19968: jis0208<<14 | 0x44<<7 | 0x54, + 32403 - 19968: jis0208<<14 | 0x44<<7 | 0x56, + 32404 - 19968: jis0208<<14 | 0x44<<7 | 0x57, + 32405 - 19968: jis0212<<14 | 0x33<<7 | 0x45, + 32406 - 19968: jis0208<<14 | 0x44<<7 | 0x58, + 32408 - 19968: jis0212<<14 | 0x33<<7 | 0x46, + 32410 - 19968: jis0212<<14 | 0x33<<7 | 0x47, + 32411 - 19968: jis0208<<14 | 0x44<<7 | 0x5A, + 32412 - 19968: jis0208<<14 | 0x44<<7 | 0x5B, + 32413 - 19968: jis0212<<14 | 0x33<<7 | 0x48, + 32414 - 19968: jis0212<<14 | 0x33<<7 | 0x49, + 32566 - 19968: jis0208<<14 | 0x13<<7 | 0x2B, + 32568 - 19968: jis0208<<14 | 0x44<<7 | 0x5C, + 32570 - 19968: jis0208<<14 | 0x44<<7 | 0x5D, + 32571 - 19968: jis0212<<14 | 0x33<<7 | 0x4B, + 32572 - 19968: jis0212<<14 | 0x33<<7 | 0x4A, + 32573 - 19968: jis0212<<14 | 0x33<<7 | 0x4C, + 32574 - 19968: jis0212<<14 | 0x33<<7 | 0x4D, + 32575 - 19968: jis0212<<14 | 0x33<<7 | 0x4E, + 32579 - 19968: jis0212<<14 | 0x33<<7 | 0x4F, + 32580 - 19968: jis0212<<14 | 0x33<<7 | 0x50, + 32581 - 19968: jis0208<<14 | 0x45<<7 | 0x00, + 32583 - 19968: jis0208<<14 | 0x5A<<7 | 0x33, + 32588 - 19968: jis0208<<14 | 0x45<<7 | 0x01, + 32589 - 19968: jis0208<<14 | 0x45<<7 | 0x02, + 32590 - 19968: jis0208<<14 | 0x45<<7 | 0x03, + 32591 - 19968: jis0212<<14 | 0x33<<7 | 0x52, + 32592 - 19968: jis0208<<14 | 0x45<<7 | 0x04, + 32593 - 19968: jis0208<<14 | 0x45<<7 | 0x05, + 32594 - 19968: jis0212<<14 | 0x33<<7 | 0x53, + 32595 - 19968: jis0212<<14 | 0x33<<7 | 0x54, + 32596 - 19968: jis0208<<14 | 0x45<<7 | 0x07, + 32597 - 19968: jis0208<<14 | 0x45<<7 | 0x06, + 32600 - 19968: jis0208<<14 | 0x45<<7 | 0x08, + 32603 - 19968: jis0212<<14 | 0x33<<7 | 0x55, + 32604 - 19968: jis0212<<14 | 0x33<<7 | 0x56, + 32605 - 19968: jis0212<<14 | 0x33<<7 | 0x57, + 32607 - 19968: jis0208<<14 | 0x45<<7 | 0x09, + 32608 - 19968: jis0208<<14 | 0x45<<7 | 0x0A, + 32609 - 19968: jis0212<<14 | 0x33<<7 | 0x58, + 32611 - 19968: jis0212<<14 | 0x33<<7 | 0x59, + 32612 - 19968: jis0212<<14 | 0x33<<7 | 0x5A, + 32613 - 19968: jis0212<<14 | 0x33<<7 | 0x5B, + 32614 - 19968: jis0212<<14 | 0x33<<7 | 0x5C, + 32615 - 19968: jis0208<<14 | 0x45<<7 | 0x0D, + 32616 - 19968: jis0208<<14 | 0x45<<7 | 0x0B, + 32617 - 19968: jis0208<<14 | 0x45<<7 | 0x0C, + 32618 - 19968: jis0208<<14 | 0x19<<7 | 0x40, + 32619 - 19968: jis0208<<14 | 0x16<<7 | 0x32, + 32621 - 19968: jis0212<<14 | 0x33<<7 | 0x5D, + 32622 - 19968: jis0208<<14 | 0x22<<7 | 0x35, + 32624 - 19968: jis0208<<14 | 0x27<<7 | 0x12, + 32625 - 19968: jis0212<<14 | 0x34<<7 | 0x00, + 32626 - 19968: jis0208<<14 | 0x1C<<7 | 0x4F, + 32629 - 19968: jis0208<<14 | 0x26<<7 | 0x2C, + 32631 - 19968: jis0208<<14 | 0x27<<7 | 0x4C, + 32632 - 19968: jis0208<<14 | 0x45<<7 | 0x0E, + 32633 - 19968: jis0208<<14 | 0x37<<7 | 0x4C, + 32637 - 19968: jis0212<<14 | 0x34<<7 | 0x01, + 32638 - 19968: jis0212<<14 | 0x34<<7 | 0x02, + 32639 - 19968: jis0212<<14 | 0x34<<7 | 0x03, + 32640 - 19968: jis0212<<14 | 0x34<<7 | 0x04, + 32642 - 19968: jis0208<<14 | 0x45<<7 | 0x0F, + 32643 - 19968: jis0208<<14 | 0x45<<7 | 0x11, + 32645 - 19968: jis0208<<14 | 0x2C<<7 | 0x44, + 32646 - 19968: jis0208<<14 | 0x45<<7 | 0x10, + 32647 - 19968: jis0208<<14 | 0x45<<7 | 0x13, + 32648 - 19968: jis0208<<14 | 0x45<<7 | 0x12, + 32650 - 19968: jis0208<<14 | 0x2C<<7 | 0x32, + 32651 - 19968: jis0212<<14 | 0x34<<7 | 0x05, + 32652 - 19968: jis0208<<14 | 0x45<<7 | 0x14, + 32653 - 19968: jis0212<<14 | 0x34<<7 | 0x06, + 32654 - 19968: jis0208<<14 | 0x27<<7 | 0x5D, + 32655 - 19968: jis0212<<14 | 0x34<<7 | 0x07, + 32656 - 19968: jis0212<<14 | 0x34<<7 | 0x08, + 32657 - 19968: jis0212<<14 | 0x34<<7 | 0x09, + 32660 - 19968: jis0208<<14 | 0x45<<7 | 0x15, + 32662 - 19968: jis0212<<14 | 0x34<<7 | 0x0A, + 32663 - 19968: jis0212<<14 | 0x34<<7 | 0x0B, + 32666 - 19968: jis0208<<14 | 0x45<<7 | 0x18, + 32668 - 19968: jis0212<<14 | 0x34<<7 | 0x0C, + 32669 - 19968: jis0208<<14 | 0x45<<7 | 0x17, + 32670 - 19968: jis0208<<14 | 0x45<<7 | 0x16, + 32673 - 19968: jis0208<<14 | 0x5A<<7 | 0x34, + 32674 - 19968: jis0212<<14 | 0x34<<7 | 0x0E, + 32675 - 19968: jis0208<<14 | 0x45<<7 | 0x19, + 32676 - 19968: jis0208<<14 | 0x16<<7 | 0x11, + 32678 - 19968: jis0212<<14 | 0x34<<7 | 0x0F, + 32680 - 19968: jis0208<<14 | 0x20<<7 | 0x01, + 32681 - 19968: jis0208<<14 | 0x14<<7 | 0x20, + 32682 - 19968: jis0212<<14 | 0x34<<7 | 0x10, + 32685 - 19968: jis0212<<14 | 0x34<<7 | 0x11, + 32686 - 19968: jis0208<<14 | 0x45<<7 | 0x1D, + 32687 - 19968: jis0208<<14 | 0x45<<7 | 0x1A, + 32690 - 19968: jis0208<<14 | 0x45<<7 | 0x1B, + 32692 - 19968: jis0212<<14 | 0x34<<7 | 0x12, + 32694 - 19968: jis0208<<14 | 0x45<<7 | 0x1E, + 32696 - 19968: jis0208<<14 | 0x45<<7 | 0x1F, + 32697 - 19968: jis0208<<14 | 0x45<<7 | 0x1C, + 32700 - 19968: jis0212<<14 | 0x34<<7 | 0x13, + 32701 - 19968: jis0208<<14 | 0x10<<7 | 0x08, + 32703 - 19968: jis0212<<14 | 0x34<<7 | 0x14, + 32704 - 19968: jis0212<<14 | 0x34<<7 | 0x15, + 32705 - 19968: jis0208<<14 | 0x11<<7 | 0x06, + 32707 - 19968: jis0212<<14 | 0x34<<7 | 0x16, + 32709 - 19968: jis0208<<14 | 0x45<<7 | 0x21, + 32710 - 19968: jis0208<<14 | 0x45<<7 | 0x22, + 32712 - 19968: jis0212<<14 | 0x34<<7 | 0x17, + 32714 - 19968: jis0208<<14 | 0x45<<7 | 0x23, + 32716 - 19968: jis0208<<14 | 0x2C<<7 | 0x41, + 32718 - 19968: jis0212<<14 | 0x34<<7 | 0x18, + 32719 - 19968: jis0212<<14 | 0x34<<7 | 0x19, + 32722 - 19968: jis0208<<14 | 0x1C<<7 | 0x0B, + 32724 - 19968: jis0208<<14 | 0x45<<7 | 0x25, + 32725 - 19968: jis0208<<14 | 0x45<<7 | 0x24, + 32731 - 19968: jis0212<<14 | 0x34<<7 | 0x1A, + 32735 - 19968: jis0212<<14 | 0x34<<7 | 0x1B, + 32736 - 19968: jis0208<<14 | 0x1E<<7 | 0x48, + 32737 - 19968: jis0208<<14 | 0x45<<7 | 0x26, + 32739 - 19968: jis0212<<14 | 0x34<<7 | 0x1C, + 32741 - 19968: jis0212<<14 | 0x34<<7 | 0x1D, + 32742 - 19968: jis0208<<14 | 0x45<<7 | 0x27, + 32744 - 19968: jis0212<<14 | 0x34<<7 | 0x1E, + 32745 - 19968: jis0208<<14 | 0x45<<7 | 0x28, + 32747 - 19968: jis0208<<14 | 0x13<<7 | 0x44, + 32748 - 19968: jis0212<<14 | 0x34<<7 | 0x1F, + 32750 - 19968: jis0212<<14 | 0x34<<7 | 0x20, + 32751 - 19968: jis0212<<14 | 0x34<<7 | 0x21, + 32752 - 19968: jis0208<<14 | 0x13<<7 | 0x2C, + 32754 - 19968: jis0212<<14 | 0x34<<7 | 0x22, + 32755 - 19968: jis0208<<14 | 0x45<<7 | 0x29, + 32761 - 19968: jis0208<<14 | 0x45<<7 | 0x2A, + 32762 - 19968: jis0212<<14 | 0x34<<7 | 0x23, + 32763 - 19968: jis0208<<14 | 0x2A<<7 | 0x3C, + 32764 - 19968: jis0208<<14 | 0x2C<<7 | 0x42, + 32765 - 19968: jis0212<<14 | 0x34<<7 | 0x24, + 32766 - 19968: jis0212<<14 | 0x34<<7 | 0x25, + 32767 - 19968: jis0212<<14 | 0x34<<7 | 0x26, + 32768 - 19968: jis0208<<14 | 0x2C<<7 | 0x33, + 32769 - 19968: jis0208<<14 | 0x2E<<7 | 0x16, + 32771 - 19968: jis0208<<14 | 0x18<<7 | 0x2C, + 32772 - 19968: jis0208<<14 | 0x45<<7 | 0x2D, + 32773 - 19968: jis0208<<14 | 0x1B<<7 | 0x33, + 32774 - 19968: jis0208<<14 | 0x45<<7 | 0x2C, + 32775 - 19968: jis0212<<14 | 0x34<<7 | 0x27, + 32776 - 19968: jis0212<<14 | 0x34<<7 | 0x28, + 32778 - 19968: jis0212<<14 | 0x34<<7 | 0x29, + 32779 - 19968: jis0208<<14 | 0x45<<7 | 0x2E, + 32780 - 19968: jis0208<<14 | 0x1B<<7 | 0x08, + 32781 - 19968: jis0212<<14 | 0x34<<7 | 0x2A, + 32782 - 19968: jis0212<<14 | 0x34<<7 | 0x2B, + 32783 - 19968: jis0212<<14 | 0x34<<7 | 0x2C, + 32784 - 19968: jis0208<<14 | 0x21<<7 | 0x30, + 32785 - 19968: jis0212<<14 | 0x34<<7 | 0x2D, + 32786 - 19968: jis0208<<14 | 0x45<<7 | 0x2F, + 32787 - 19968: jis0212<<14 | 0x34<<7 | 0x2E, + 32788 - 19968: jis0212<<14 | 0x34<<7 | 0x2F, + 32789 - 19968: jis0208<<14 | 0x18<<7 | 0x2B, + 32790 - 19968: jis0212<<14 | 0x34<<7 | 0x30, + 32791 - 19968: jis0208<<14 | 0x2B<<7 | 0x36, + 32792 - 19968: jis0208<<14 | 0x45<<7 | 0x30, + 32793 - 19968: jis0208<<14 | 0x45<<7 | 0x31, + 32796 - 19968: jis0208<<14 | 0x45<<7 | 0x32, + 32797 - 19968: jis0212<<14 | 0x34<<7 | 0x31, + 32798 - 19968: jis0212<<14 | 0x34<<7 | 0x32, + 32799 - 19968: jis0212<<14 | 0x34<<7 | 0x33, + 32800 - 19968: jis0212<<14 | 0x34<<7 | 0x34, + 32801 - 19968: jis0208<<14 | 0x45<<7 | 0x33, + 32804 - 19968: jis0212<<14 | 0x34<<7 | 0x35, + 32806 - 19968: jis0212<<14 | 0x34<<7 | 0x36, + 32808 - 19968: jis0208<<14 | 0x45<<7 | 0x34, + 32812 - 19968: jis0212<<14 | 0x34<<7 | 0x37, + 32814 - 19968: jis0212<<14 | 0x34<<7 | 0x38, + 32816 - 19968: jis0212<<14 | 0x34<<7 | 0x39, + 32819 - 19968: jis0208<<14 | 0x1B<<7 | 0x09, + 32820 - 19968: jis0212<<14 | 0x34<<7 | 0x3A, + 32821 - 19968: jis0212<<14 | 0x34<<7 | 0x3B, + 32822 - 19968: jis0208<<14 | 0x2B<<7 | 0x4C, + 32823 - 19968: jis0212<<14 | 0x34<<7 | 0x3C, + 32825 - 19968: jis0212<<14 | 0x34<<7 | 0x3D, + 32826 - 19968: jis0212<<14 | 0x34<<7 | 0x3E, + 32827 - 19968: jis0208<<14 | 0x45<<7 | 0x36, + 32828 - 19968: jis0212<<14 | 0x34<<7 | 0x3F, + 32829 - 19968: jis0208<<14 | 0x22<<7 | 0x1E, + 32830 - 19968: jis0212<<14 | 0x34<<7 | 0x40, + 32831 - 19968: jis0208<<14 | 0x45<<7 | 0x35, + 32832 - 19968: jis0212<<14 | 0x34<<7 | 0x41, + 32836 - 19968: jis0212<<14 | 0x34<<7 | 0x42, + 32838 - 19968: jis0208<<14 | 0x45<<7 | 0x38, + 32842 - 19968: jis0208<<14 | 0x45<<7 | 0x37, + 32850 - 19968: jis0208<<14 | 0x45<<7 | 0x39, + 32854 - 19968: jis0208<<14 | 0x1F<<7 | 0x1A, + 32856 - 19968: jis0208<<14 | 0x45<<7 | 0x3A, + 32858 - 19968: jis0208<<14 | 0x45<<7 | 0x3B, + 32862 - 19968: jis0208<<14 | 0x29<<7 | 0x18, + 32863 - 19968: jis0208<<14 | 0x45<<7 | 0x3C, + 32864 - 19968: jis0212<<14 | 0x34<<7 | 0x43, + 32865 - 19968: jis0208<<14 | 0x20<<7 | 0x4E, + 32866 - 19968: jis0208<<14 | 0x45<<7 | 0x3D, + 32868 - 19968: jis0212<<14 | 0x34<<7 | 0x44, + 32870 - 19968: jis0212<<14 | 0x34<<7 | 0x45, + 32872 - 19968: jis0208<<14 | 0x45<<7 | 0x3E, + 32877 - 19968: jis0212<<14 | 0x34<<7 | 0x46, + 32879 - 19968: jis0208<<14 | 0x2D<<7 | 0x5D, + 32880 - 19968: jis0208<<14 | 0x45<<7 | 0x41, + 32881 - 19968: jis0212<<14 | 0x34<<7 | 0x47, + 32882 - 19968: jis0208<<14 | 0x45<<7 | 0x40, + 32883 - 19968: jis0208<<14 | 0x45<<7 | 0x3F, + 32884 - 19968: jis0208<<14 | 0x23<<7 | 0x0F, + 32885 - 19968: jis0212<<14 | 0x34<<7 | 0x48, + 32886 - 19968: jis0208<<14 | 0x45<<7 | 0x42, + 32887 - 19968: jis0208<<14 | 0x1E<<7 | 0x05, + 32889 - 19968: jis0208<<14 | 0x45<<7 | 0x43, + 32893 - 19968: jis0208<<14 | 0x45<<7 | 0x44, + 32894 - 19968: jis0208<<14 | 0x2E<<7 | 0x17, + 32895 - 19968: jis0208<<14 | 0x45<<7 | 0x45, + 32897 - 19968: jis0212<<14 | 0x34<<7 | 0x49, + 32900 - 19968: jis0208<<14 | 0x45<<7 | 0x46, + 32901 - 19968: jis0208<<14 | 0x45<<7 | 0x48, + 32902 - 19968: jis0208<<14 | 0x45<<7 | 0x47, + 32903 - 19968: jis0208<<14 | 0x27<<7 | 0x04, + 32904 - 19968: jis0212<<14 | 0x34<<7 | 0x4A, + 32905 - 19968: jis0208<<14 | 0x25<<7 | 0x58, + 32907 - 19968: jis0208<<14 | 0x2E<<7 | 0x1D, + 32908 - 19968: jis0208<<14 | 0x27<<7 | 0x08, + 32910 - 19968: jis0212<<14 | 0x34<<7 | 0x4B, + 32915 - 19968: jis0208<<14 | 0x45<<7 | 0x4A, + 32918 - 19968: jis0208<<14 | 0x1D<<7 | 0x32, + 32920 - 19968: jis0208<<14 | 0x28<<7 | 0x09, + 32922 - 19968: jis0208<<14 | 0x45<<7 | 0x4B, + 32923 - 19968: jis0208<<14 | 0x45<<7 | 0x49, + 32924 - 19968: jis0212<<14 | 0x34<<7 | 0x4C, + 32925 - 19968: jis0208<<14 | 0x13<<7 | 0x2D, + 32926 - 19968: jis0212<<14 | 0x34<<7 | 0x4D, + 32929 - 19968: jis0208<<14 | 0x17<<7 | 0x33, + 32930 - 19968: jis0208<<14 | 0x1A<<7 | 0x47, + 32933 - 19968: jis0208<<14 | 0x27<<7 | 0x4D, + 32934 - 19968: jis0212<<14 | 0x34<<7 | 0x4E, + 32935 - 19968: jis0212<<14 | 0x34<<7 | 0x4F, + 32937 - 19968: jis0208<<14 | 0x17<<7 | 0x09, + 32938 - 19968: jis0208<<14 | 0x2A<<7 | 0x22, + 32939 - 19968: jis0212<<14 | 0x34<<7 | 0x50, + 32940 - 19968: jis0208<<14 | 0x45<<7 | 0x4E, + 32941 - 19968: jis0208<<14 | 0x45<<7 | 0x4C, + 32943 - 19968: jis0208<<14 | 0x18<<7 | 0x2D, + 32945 - 19968: jis0208<<14 | 0x18<<7 | 0x2E, + 32946 - 19968: jis0208<<14 | 0x0F<<7 | 0x48, + 32948 - 19968: jis0208<<14 | 0x19<<7 | 0x47, + 32952 - 19968: jis0212<<14 | 0x34<<7 | 0x51, + 32953 - 19968: jis0212<<14 | 0x34<<7 | 0x52, + 32954 - 19968: jis0208<<14 | 0x26<<7 | 0x38, + 32963 - 19968: jis0208<<14 | 0x0F<<7 | 0x3E, + 32964 - 19968: jis0208<<14 | 0x45<<7 | 0x53, + 32966 - 19968: jis0208<<14 | 0x22<<7 | 0x1F, + 32968 - 19968: jis0212<<14 | 0x34<<7 | 0x53, + 32972 - 19968: jis0208<<14 | 0x26<<7 | 0x37, + 32973 - 19968: jis0212<<14 | 0x34<<7 | 0x54, + 32974 - 19968: jis0208<<14 | 0x21<<7 | 0x3A, + 32975 - 19968: jis0212<<14 | 0x34<<7 | 0x55, + 32978 - 19968: jis0212<<14 | 0x34<<7 | 0x56, + 32980 - 19968: jis0212<<14 | 0x34<<7 | 0x57, + 32981 - 19968: jis0212<<14 | 0x34<<7 | 0x58, + 32982 - 19968: jis0208<<14 | 0x45<<7 | 0x55, + 32983 - 19968: jis0212<<14 | 0x34<<7 | 0x59, + 32984 - 19968: jis0212<<14 | 0x34<<7 | 0x5A, + 32985 - 19968: jis0208<<14 | 0x45<<7 | 0x51, + 32986 - 19968: jis0208<<14 | 0x45<<7 | 0x54, + 32987 - 19968: jis0208<<14 | 0x45<<7 | 0x4F, + 32989 - 19968: jis0208<<14 | 0x45<<7 | 0x52, + 32990 - 19968: jis0208<<14 | 0x2A<<7 | 0x05, + 32992 - 19968: jis0212<<14 | 0x34<<7 | 0x5B, + 32993 - 19968: jis0208<<14 | 0x17<<7 | 0x34, + 32996 - 19968: jis0208<<14 | 0x0F<<7 | 0x5C, + 32997 - 19968: jis0208<<14 | 0x45<<7 | 0x50, + 33005 - 19968: jis0212<<14 | 0x34<<7 | 0x5C, + 33006 - 19968: jis0212<<14 | 0x34<<7 | 0x5D, + 33007 - 19968: jis0208<<14 | 0x45<<7 | 0x57, + 33008 - 19968: jis0212<<14 | 0x35<<7 | 0x00, + 33009 - 19968: jis0208<<14 | 0x45<<7 | 0x58, + 33010 - 19968: jis0212<<14 | 0x35<<7 | 0x01, + 33011 - 19968: jis0212<<14 | 0x35<<7 | 0x02, + 33012 - 19968: jis0208<<14 | 0x25<<7 | 0x18, + 33014 - 19968: jis0212<<14 | 0x35<<7 | 0x03, + 33016 - 19968: jis0208<<14 | 0x15<<7 | 0x1A, + 33017 - 19968: jis0212<<14 | 0x35<<7 | 0x04, + 33018 - 19968: jis0212<<14 | 0x35<<7 | 0x05, + 33020 - 19968: jis0208<<14 | 0x46<<7 | 0x05, + 33021 - 19968: jis0208<<14 | 0x26<<7 | 0x1C, + 33022 - 19968: jis0212<<14 | 0x35<<7 | 0x06, + 33026 - 19968: jis0208<<14 | 0x1A<<7 | 0x48, + 33027 - 19968: jis0212<<14 | 0x35<<7 | 0x07, + 33029 - 19968: jis0208<<14 | 0x15<<7 | 0x1B, + 33030 - 19968: jis0208<<14 | 0x1F<<7 | 0x27, + 33031 - 19968: jis0208<<14 | 0x2E<<7 | 0x25, + 33032 - 19968: jis0208<<14 | 0x2B<<7 | 0x0D, + 33033 - 19968: jis0208<<14 | 0x45<<7 | 0x56, + 33034 - 19968: jis0208<<14 | 0x1F<<7 | 0x33, + 33035 - 19968: jis0212<<14 | 0x35<<7 | 0x08, + 33046 - 19968: jis0212<<14 | 0x35<<7 | 0x09, + 33047 - 19968: jis0212<<14 | 0x35<<7 | 0x0A, + 33048 - 19968: jis0212<<14 | 0x35<<7 | 0x0B, + 33050 - 19968: jis0208<<14 | 0x14<<7 | 0x32, + 33051 - 19968: jis0208<<14 | 0x45<<7 | 0x59, + 33052 - 19968: jis0212<<14 | 0x35<<7 | 0x0C, + 33054 - 19968: jis0212<<14 | 0x35<<7 | 0x0D, + 33056 - 19968: jis0212<<14 | 0x35<<7 | 0x0E, + 33059 - 19968: jis0208<<14 | 0x45<<7 | 0x5B, + 33060 - 19968: jis0212<<14 | 0x35<<7 | 0x0F, + 33063 - 19968: jis0212<<14 | 0x35<<7 | 0x10, + 33065 - 19968: jis0208<<14 | 0x45<<7 | 0x5A, + 33068 - 19968: jis0212<<14 | 0x35<<7 | 0x11, + 33071 - 19968: jis0208<<14 | 0x45<<7 | 0x5C, + 33072 - 19968: jis0212<<14 | 0x35<<7 | 0x12, + 33073 - 19968: jis0208<<14 | 0x22<<7 | 0x05, + 33075 - 19968: jis0208<<14 | 0x26<<7 | 0x1D, + 33077 - 19968: jis0212<<14 | 0x35<<7 | 0x13, + 33081 - 19968: jis0208<<14 | 0x23<<7 | 0x10, + 33082 - 19968: jis0212<<14 | 0x35<<7 | 0x14, + 33084 - 19968: jis0212<<14 | 0x35<<7 | 0x15, + 33086 - 19968: jis0208<<14 | 0x46<<7 | 0x02, + 33093 - 19968: jis0212<<14 | 0x35<<7 | 0x16, + 33094 - 19968: jis0208<<14 | 0x46<<7 | 0x01, + 33095 - 19968: jis0212<<14 | 0x35<<7 | 0x17, + 33098 - 19968: jis0212<<14 | 0x35<<7 | 0x18, + 33099 - 19968: jis0208<<14 | 0x45<<7 | 0x5D, + 33100 - 19968: jis0212<<14 | 0x35<<7 | 0x19, + 33102 - 19968: jis0208<<14 | 0x1E<<7 | 0x34, + 33104 - 19968: jis0208<<14 | 0x28<<7 | 0x44, + 33105 - 19968: jis0208<<14 | 0x46<<7 | 0x04, + 33106 - 19968: jis0212<<14 | 0x35<<7 | 0x1A, + 33107 - 19968: jis0208<<14 | 0x46<<7 | 0x03, + 33108 - 19968: jis0208<<14 | 0x18<<7 | 0x2F, + 33109 - 19968: jis0208<<14 | 0x2E<<7 | 0x32, + 33111 - 19968: jis0212<<14 | 0x35<<7 | 0x1B, + 33119 - 19968: jis0208<<14 | 0x46<<7 | 0x14, + 33120 - 19968: jis0212<<14 | 0x35<<7 | 0x1C, + 33121 - 19968: jis0212<<14 | 0x35<<7 | 0x1D, + 33125 - 19968: jis0208<<14 | 0x46<<7 | 0x08, + 33126 - 19968: jis0208<<14 | 0x46<<7 | 0x09, + 33127 - 19968: jis0212<<14 | 0x35<<7 | 0x1E, + 33128 - 19968: jis0212<<14 | 0x35<<7 | 0x1F, + 33129 - 19968: jis0212<<14 | 0x35<<7 | 0x20, + 33131 - 19968: jis0208<<14 | 0x1B<<7 | 0x4F, + 33133 - 19968: jis0212<<14 | 0x35<<7 | 0x21, + 33134 - 19968: jis0208<<14 | 0x46<<7 | 0x07, + 33135 - 19968: jis0212<<14 | 0x35<<7 | 0x22, + 33136 - 19968: jis0208<<14 | 0x18<<7 | 0x57, + 33137 - 19968: jis0208<<14 | 0x46<<7 | 0x06, + 33140 - 19968: jis0208<<14 | 0x46<<7 | 0x0A, + 33143 - 19968: jis0212<<14 | 0x35<<7 | 0x23, + 33144 - 19968: jis0208<<14 | 0x23<<7 | 0x11, + 33145 - 19968: jis0208<<14 | 0x29<<7 | 0x01, + 33146 - 19968: jis0208<<14 | 0x20<<7 | 0x02, + 33151 - 19968: jis0208<<14 | 0x21<<7 | 0x3B, + 33152 - 19968: jis0208<<14 | 0x46<<7 | 0x0E, + 33153 - 19968: jis0212<<14 | 0x35<<7 | 0x24, + 33154 - 19968: jis0208<<14 | 0x46<<7 | 0x0F, + 33155 - 19968: jis0208<<14 | 0x46<<7 | 0x0B, + 33156 - 19968: jis0212<<14 | 0x35<<7 | 0x26, + 33157 - 19968: jis0212<<14 | 0x35<<7 | 0x27, + 33158 - 19968: jis0212<<14 | 0x35<<7 | 0x28, + 33160 - 19968: jis0208<<14 | 0x46<<7 | 0x0C, + 33162 - 19968: jis0208<<14 | 0x46<<7 | 0x0D, + 33163 - 19968: jis0212<<14 | 0x35<<7 | 0x29, + 33166 - 19968: jis0212<<14 | 0x35<<7 | 0x2A, + 33167 - 19968: jis0208<<14 | 0x18<<7 | 0x30, + 33168 - 19968: jis0212<<14 | 0x35<<7 | 0x25, + 33171 - 19968: jis0208<<14 | 0x46<<7 | 0x15, + 33173 - 19968: jis0208<<14 | 0x46<<7 | 0x11, + 33174 - 19968: jis0212<<14 | 0x35<<7 | 0x2B, + 33176 - 19968: jis0212<<14 | 0x35<<7 | 0x2C, + 33178 - 19968: jis0208<<14 | 0x28<<7 | 0x45, + 33179 - 19968: jis0212<<14 | 0x35<<7 | 0x2D, + 33180 - 19968: jis0208<<14 | 0x2A<<7 | 0x4B, + 33181 - 19968: jis0208<<14 | 0x28<<7 | 0x07, + 33182 - 19968: jis0212<<14 | 0x35<<7 | 0x2E, + 33184 - 19968: jis0208<<14 | 0x46<<7 | 0x10, + 33186 - 19968: jis0212<<14 | 0x35<<7 | 0x2F, + 33187 - 19968: jis0208<<14 | 0x46<<7 | 0x13, + 33188 - 19968: jis0208<<14 | 0x46<<7 | 0x12, + 33192 - 19968: jis0208<<14 | 0x2A<<7 | 0x23, + 33193 - 19968: jis0208<<14 | 0x46<<7 | 0x16, + 33198 - 19968: jis0212<<14 | 0x35<<7 | 0x30, + 33200 - 19968: jis0208<<14 | 0x46<<7 | 0x17, + 33202 - 19968: jis0212<<14 | 0x35<<7 | 0x31, + 33203 - 19968: jis0208<<14 | 0x20<<7 | 0x16, + 33204 - 19968: jis0212<<14 | 0x35<<7 | 0x32, + 33205 - 19968: jis0208<<14 | 0x46<<7 | 0x18, + 33208 - 19968: jis0208<<14 | 0x46<<7 | 0x1A, + 33210 - 19968: jis0208<<14 | 0x46<<7 | 0x1E, + 33211 - 19968: jis0212<<14 | 0x35<<7 | 0x33, + 33213 - 19968: jis0208<<14 | 0x46<<7 | 0x1B, + 33214 - 19968: jis0208<<14 | 0x46<<7 | 0x19, + 33215 - 19968: jis0208<<14 | 0x26<<7 | 0x1E, + 33216 - 19968: jis0208<<14 | 0x46<<7 | 0x1C, + 33218 - 19968: jis0208<<14 | 0x46<<7 | 0x1D, + 33219 - 19968: jis0212<<14 | 0x35<<7 | 0x35, + 33221 - 19968: jis0212<<14 | 0x35<<7 | 0x36, + 33222 - 19968: jis0208<<14 | 0x11<<7 | 0x11, + 33224 - 19968: jis0208<<14 | 0x46<<7 | 0x24, + 33225 - 19968: jis0208<<14 | 0x46<<7 | 0x1F, + 33226 - 19968: jis0212<<14 | 0x35<<7 | 0x37, + 33227 - 19968: jis0212<<14 | 0x35<<7 | 0x34, + 33229 - 19968: jis0208<<14 | 0x46<<7 | 0x20, + 33230 - 19968: jis0212<<14 | 0x35<<7 | 0x38, + 33231 - 19968: jis0212<<14 | 0x35<<7 | 0x39, + 33233 - 19968: jis0208<<14 | 0x46<<7 | 0x21, + 33235 - 19968: jis0208<<14 | 0x21<<7 | 0x00, + 33237 - 19968: jis0212<<14 | 0x35<<7 | 0x3A, + 33239 - 19968: jis0212<<14 | 0x35<<7 | 0x3B, + 33240 - 19968: jis0208<<14 | 0x46<<7 | 0x23, + 33241 - 19968: jis0208<<14 | 0x46<<7 | 0x22, + 33242 - 19968: jis0208<<14 | 0x46<<7 | 0x25, + 33243 - 19968: jis0212<<14 | 0x35<<7 | 0x3C, + 33245 - 19968: jis0212<<14 | 0x35<<7 | 0x3D, + 33246 - 19968: jis0212<<14 | 0x35<<7 | 0x3E, + 33247 - 19968: jis0208<<14 | 0x46<<7 | 0x26, + 33248 - 19968: jis0208<<14 | 0x46<<7 | 0x27, + 33249 - 19968: jis0212<<14 | 0x35<<7 | 0x3F, + 33251 - 19968: jis0208<<14 | 0x1E<<7 | 0x22, + 33252 - 19968: jis0212<<14 | 0x35<<7 | 0x40, + 33253 - 19968: jis0208<<14 | 0x11<<7 | 0x48, + 33255 - 19968: jis0208<<14 | 0x46<<7 | 0x28, + 33256 - 19968: jis0208<<14 | 0x2D<<7 | 0x36, + 33258 - 19968: jis0208<<14 | 0x1B<<7 | 0x0A, + 33259 - 19968: jis0212<<14 | 0x35<<7 | 0x41, + 33260 - 19968: jis0212<<14 | 0x35<<7 | 0x42, + 33261 - 19968: jis0208<<14 | 0x1C<<7 | 0x0C, + 33264 - 19968: jis0212<<14 | 0x35<<7 | 0x43, + 33265 - 19968: jis0212<<14 | 0x35<<7 | 0x44, + 33266 - 19968: jis0212<<14 | 0x35<<7 | 0x45, + 33267 - 19968: jis0208<<14 | 0x1A<<7 | 0x49, + 33268 - 19968: jis0208<<14 | 0x22<<7 | 0x36, + 33269 - 19968: jis0212<<14 | 0x35<<7 | 0x46, + 33270 - 19968: jis0212<<14 | 0x35<<7 | 0x47, + 33272 - 19968: jis0212<<14 | 0x35<<7 | 0x48, + 33273 - 19968: jis0212<<14 | 0x35<<7 | 0x49, + 33274 - 19968: jis0208<<14 | 0x46<<7 | 0x29, + 33275 - 19968: jis0208<<14 | 0x46<<7 | 0x2A, + 33276 - 19968: jis0208<<14 | 0x10<<7 | 0x10, + 33277 - 19968: jis0212<<14 | 0x35<<7 | 0x4A, + 33278 - 19968: jis0208<<14 | 0x46<<7 | 0x2B, + 33279 - 19968: jis0212<<14 | 0x35<<7 | 0x4B, + 33280 - 19968: jis0212<<14 | 0x35<<7 | 0x4C, + 33281 - 19968: jis0208<<14 | 0x46<<7 | 0x2C, + 33282 - 19968: jis0208<<14 | 0x46<<7 | 0x2D, + 33283 - 19968: jis0212<<14 | 0x35<<7 | 0x4D, + 33285 - 19968: jis0208<<14 | 0x46<<7 | 0x2E, + 33287 - 19968: jis0208<<14 | 0x46<<7 | 0x2F, + 33288 - 19968: jis0208<<14 | 0x15<<7 | 0x1C, + 33289 - 19968: jis0208<<14 | 0x39<<7 | 0x09, + 33290 - 19968: jis0208<<14 | 0x46<<7 | 0x30, + 33292 - 19968: jis0208<<14 | 0x1F<<7 | 0x44, + 33293 - 19968: jis0208<<14 | 0x46<<7 | 0x31, + 33294 - 19968: jis0208<<14 | 0x1B<<7 | 0x2A, + 33295 - 19968: jis0212<<14 | 0x35<<7 | 0x4E, + 33296 - 19968: jis0208<<14 | 0x46<<7 | 0x32, + 33298 - 19968: jis0208<<14 | 0x2F<<7 | 0x0F, + 33299 - 19968: jis0212<<14 | 0x35<<7 | 0x4F, + 33300 - 19968: jis0212<<14 | 0x35<<7 | 0x50, + 33302 - 19968: jis0208<<14 | 0x46<<7 | 0x33, + 33303 - 19968: jis0208<<14 | 0x29<<7 | 0x3D, + 33304 - 19968: jis0208<<14 | 0x13<<7 | 0x3B, + 33305 - 19968: jis0212<<14 | 0x35<<7 | 0x51, + 33306 - 19968: jis0212<<14 | 0x35<<7 | 0x52, + 33307 - 19968: jis0208<<14 | 0x20<<7 | 0x03, + 33308 - 19968: jis0208<<14 | 0x1C<<7 | 0x37, + 33309 - 19968: jis0212<<14 | 0x35<<7 | 0x53, + 33310 - 19968: jis0208<<14 | 0x28<<7 | 0x50, + 33311 - 19968: jis0208<<14 | 0x1C<<7 | 0x0D, + 33313 - 19968: jis0212<<14 | 0x35<<7 | 0x54, + 33314 - 19968: jis0212<<14 | 0x35<<7 | 0x55, + 33320 - 19968: jis0212<<14 | 0x35<<7 | 0x56, + 33321 - 19968: jis0208<<14 | 0x46<<7 | 0x34, + 33322 - 19968: jis0208<<14 | 0x18<<7 | 0x31, + 33323 - 19968: jis0208<<14 | 0x46<<7 | 0x35, + 33324 - 19968: jis0208<<14 | 0x27<<7 | 0x2B, + 33326 - 19968: jis0208<<14 | 0x46<<7 | 0x43, + 33330 - 19968: jis0212<<14 | 0x35<<7 | 0x57, + 33331 - 19968: jis0208<<14 | 0x46<<7 | 0x37, + 33332 - 19968: jis0212<<14 | 0x35<<7 | 0x58, + 33333 - 19968: jis0208<<14 | 0x21<<7 | 0x28, + 33334 - 19968: jis0208<<14 | 0x26<<7 | 0x54, + 33335 - 19968: jis0208<<14 | 0x17<<7 | 0x1E, + 33336 - 19968: jis0208<<14 | 0x46<<7 | 0x36, + 33337 - 19968: jis0208<<14 | 0x20<<7 | 0x04, + 33338 - 19968: jis0212<<14 | 0x35<<7 | 0x59, + 33344 - 19968: jis0208<<14 | 0x46<<7 | 0x38, + 33347 - 19968: jis0212<<14 | 0x35<<7 | 0x5A, + 33348 - 19968: jis0212<<14 | 0x35<<7 | 0x5B, + 33349 - 19968: jis0212<<14 | 0x35<<7 | 0x5C, + 33350 - 19968: jis0212<<14 | 0x35<<7 | 0x5D, + 33351 - 19968: jis0208<<14 | 0x23<<7 | 0x59, + 33355 - 19968: jis0212<<14 | 0x36<<7 | 0x00, + 33358 - 19968: jis0212<<14 | 0x36<<7 | 0x01, + 33359 - 19968: jis0212<<14 | 0x36<<7 | 0x02, + 33361 - 19968: jis0212<<14 | 0x36<<7 | 0x03, + 33366 - 19968: jis0212<<14 | 0x36<<7 | 0x04, + 33368 - 19968: jis0208<<14 | 0x46<<7 | 0x3A, + 33369 - 19968: jis0208<<14 | 0x46<<7 | 0x39, + 33370 - 19968: jis0208<<14 | 0x46<<7 | 0x3C, + 33372 - 19968: jis0212<<14 | 0x36<<7 | 0x05, + 33373 - 19968: jis0208<<14 | 0x46<<7 | 0x3B, + 33375 - 19968: jis0208<<14 | 0x46<<7 | 0x3D, + 33376 - 19968: jis0212<<14 | 0x36<<7 | 0x06, + 33378 - 19968: jis0208<<14 | 0x46<<7 | 0x3F, + 33379 - 19968: jis0212<<14 | 0x36<<7 | 0x07, + 33380 - 19968: jis0208<<14 | 0x46<<7 | 0x3E, + 33382 - 19968: jis0208<<14 | 0x13<<7 | 0x2E, + 33383 - 19968: jis0212<<14 | 0x36<<7 | 0x08, + 33384 - 19968: jis0208<<14 | 0x46<<7 | 0x40, + 33386 - 19968: jis0208<<14 | 0x46<<7 | 0x41, + 33387 - 19968: jis0208<<14 | 0x46<<7 | 0x42, + 33389 - 19968: jis0212<<14 | 0x36<<7 | 0x09, + 33390 - 19968: jis0208<<14 | 0x19<<7 | 0x10, + 33391 - 19968: jis0208<<14 | 0x2D<<7 | 0x28, + 33393 - 19968: jis0208<<14 | 0x46<<7 | 0x44, + 33394 - 19968: jis0208<<14 | 0x1E<<7 | 0x06, + 33396 - 19968: jis0212<<14 | 0x36<<7 | 0x0A, + 33398 - 19968: jis0208<<14 | 0x10<<7 | 0x4F, + 33399 - 19968: jis0208<<14 | 0x46<<7 | 0x45, + 33400 - 19968: jis0208<<14 | 0x46<<7 | 0x46, + 33403 - 19968: jis0212<<14 | 0x36<<7 | 0x0B, + 33405 - 19968: jis0212<<14 | 0x36<<7 | 0x0C, + 33406 - 19968: jis0208<<14 | 0x46<<7 | 0x47, + 33407 - 19968: jis0212<<14 | 0x36<<7 | 0x0D, + 33408 - 19968: jis0212<<14 | 0x36<<7 | 0x0E, + 33409 - 19968: jis0212<<14 | 0x36<<7 | 0x0F, + 33411 - 19968: jis0212<<14 | 0x36<<7 | 0x10, + 33412 - 19968: jis0212<<14 | 0x36<<7 | 0x11, + 33415 - 19968: jis0212<<14 | 0x36<<7 | 0x12, + 33417 - 19968: jis0212<<14 | 0x36<<7 | 0x13, + 33418 - 19968: jis0212<<14 | 0x36<<7 | 0x14, + 33419 - 19968: jis0208<<14 | 0x0F<<7 | 0x51, + 33421 - 19968: jis0208<<14 | 0x46<<7 | 0x48, + 33422 - 19968: jis0212<<14 | 0x36<<7 | 0x15, + 33425 - 19968: jis0212<<14 | 0x36<<7 | 0x16, + 33426 - 19968: jis0208<<14 | 0x46<<7 | 0x49, + 33428 - 19968: jis0212<<14 | 0x36<<7 | 0x17, + 33430 - 19968: jis0212<<14 | 0x36<<7 | 0x18, + 33432 - 19968: jis0212<<14 | 0x36<<7 | 0x19, + 33433 - 19968: jis0208<<14 | 0x28<<7 | 0x46, + 33434 - 19968: jis0212<<14 | 0x36<<7 | 0x1A, + 33435 - 19968: jis0212<<14 | 0x36<<7 | 0x1B, + 33437 - 19968: jis0208<<14 | 0x1B<<7 | 0x26, + 33439 - 19968: jis0208<<14 | 0x46<<7 | 0x4B, + 33440 - 19968: jis0212<<14 | 0x36<<7 | 0x1C, + 33441 - 19968: jis0212<<14 | 0x36<<7 | 0x1D, + 33443 - 19968: jis0212<<14 | 0x36<<7 | 0x1E, + 33444 - 19968: jis0212<<14 | 0x36<<7 | 0x1F, + 33445 - 19968: jis0208<<14 | 0x12<<7 | 0x08, + 33446 - 19968: jis0208<<14 | 0x0F<<7 | 0x11, + 33447 - 19968: jis0212<<14 | 0x36<<7 | 0x20, + 33448 - 19968: jis0212<<14 | 0x36<<7 | 0x21, + 33449 - 19968: jis0212<<14 | 0x36<<7 | 0x22, + 33450 - 19968: jis0212<<14 | 0x36<<7 | 0x23, + 33451 - 19968: jis0208<<14 | 0x46<<7 | 0x4A, + 33452 - 19968: jis0208<<14 | 0x46<<7 | 0x4D, + 33453 - 19968: jis0208<<14 | 0x26<<7 | 0x2D, + 33454 - 19968: jis0212<<14 | 0x36<<7 | 0x24, + 33455 - 19968: jis0208<<14 | 0x1E<<7 | 0x23, + 33456 - 19968: jis0212<<14 | 0x36<<7 | 0x25, + 33457 - 19968: jis0208<<14 | 0x11<<7 | 0x35, + 33458 - 19968: jis0212<<14 | 0x36<<7 | 0x26, + 33459 - 19968: jis0208<<14 | 0x2A<<7 | 0x06, + 33460 - 19968: jis0212<<14 | 0x36<<7 | 0x27, + 33463 - 19968: jis0212<<14 | 0x36<<7 | 0x28, + 33464 - 19968: jis0208<<14 | 0x16<<7 | 0x3C, + 33465 - 19968: jis0208<<14 | 0x15<<7 | 0x3B, + 33466 - 19968: jis0212<<14 | 0x36<<7 | 0x29, + 33467 - 19968: jis0208<<14 | 0x46<<7 | 0x4C, + 33468 - 19968: jis0212<<14 | 0x36<<7 | 0x2A, + 33469 - 19968: jis0208<<14 | 0x11<<7 | 0x49, + 33470 - 19968: jis0212<<14 | 0x36<<7 | 0x2B, + 33471 - 19968: jis0212<<14 | 0x36<<7 | 0x2C, + 33477 - 19968: jis0208<<14 | 0x13<<7 | 0x02, + 33478 - 19968: jis0212<<14 | 0x36<<7 | 0x2D, + 33488 - 19968: jis0212<<14 | 0x36<<7 | 0x2E, + 33489 - 19968: jis0208<<14 | 0x10<<7 | 0x50, + 33490 - 19968: jis0208<<14 | 0x46<<7 | 0x51, + 33491 - 19968: jis0208<<14 | 0x2D<<7 | 0x49, + 33492 - 19968: jis0208<<14 | 0x21<<7 | 0x3C, + 33493 - 19968: jis0212<<14 | 0x36<<7 | 0x2F, + 33495 - 19968: jis0208<<14 | 0x28<<7 | 0x23, + 33497 - 19968: jis0208<<14 | 0x46<<7 | 0x5D, + 33498 - 19968: jis0212<<14 | 0x36<<7 | 0x30, + 33499 - 19968: jis0208<<14 | 0x11<<7 | 0x36, + 33500 - 19968: jis0208<<14 | 0x46<<7 | 0x5B, + 33502 - 19968: jis0208<<14 | 0x46<<7 | 0x59, + 33503 - 19968: jis0208<<14 | 0x46<<7 | 0x50, + 33504 - 19968: jis0212<<14 | 0x36<<7 | 0x31, + 33505 - 19968: jis0208<<14 | 0x46<<7 | 0x4E, + 33506 - 19968: jis0212<<14 | 0x36<<7 | 0x32, + 33507 - 19968: jis0208<<14 | 0x46<<7 | 0x4F, + 33508 - 19968: jis0212<<14 | 0x36<<7 | 0x33, + 33509 - 19968: jis0208<<14 | 0x1B<<7 | 0x42, + 33510 - 19968: jis0208<<14 | 0x15<<7 | 0x4B, + 33511 - 19968: jis0208<<14 | 0x22<<7 | 0x56, + 33512 - 19968: jis0212<<14 | 0x36<<7 | 0x34, + 33514 - 19968: jis0212<<14 | 0x36<<7 | 0x35, + 33515 - 19968: jis0208<<14 | 0x25<<7 | 0x30, + 33517 - 19968: jis0212<<14 | 0x36<<7 | 0x36, + 33519 - 19968: jis0212<<14 | 0x36<<7 | 0x37, + 33521 - 19968: jis0208<<14 | 0x10<<7 | 0x30, + 33523 - 19968: jis0208<<14 | 0x46<<7 | 0x53, + 33524 - 19968: jis0208<<14 | 0x46<<7 | 0x52, + 33526 - 19968: jis0212<<14 | 0x36<<7 | 0x38, + 33527 - 19968: jis0212<<14 | 0x36<<7 | 0x39, + 33529 - 19968: jis0208<<14 | 0x46<<7 | 0x58, + 33530 - 19968: jis0208<<14 | 0x46<<7 | 0x54, + 33531 - 19968: jis0208<<14 | 0x46<<7 | 0x57, + 33533 - 19968: jis0212<<14 | 0x36<<7 | 0x3A, + 33534 - 19968: jis0212<<14 | 0x36<<7 | 0x3B, + 33536 - 19968: jis0212<<14 | 0x36<<7 | 0x3C, + 33537 - 19968: jis0208<<14 | 0x5A<<7 | 0x36, + 33538 - 19968: jis0208<<14 | 0x2B<<7 | 0x2F, + 33539 - 19968: jis0208<<14 | 0x46<<7 | 0x56, + 33540 - 19968: jis0208<<14 | 0x11<<7 | 0x37, + 33541 - 19968: jis0208<<14 | 0x12<<7 | 0x5C, + 33542 - 19968: jis0208<<14 | 0x46<<7 | 0x5A, + 33543 - 19968: jis0212<<14 | 0x36<<7 | 0x3E, + 33544 - 19968: jis0212<<14 | 0x36<<7 | 0x3F, + 33545 - 19968: jis0208<<14 | 0x46<<7 | 0x5C, + 33546 - 19968: jis0212<<14 | 0x36<<7 | 0x40, + 33547 - 19968: jis0212<<14 | 0x36<<7 | 0x41, + 33550 - 19968: jis0208<<14 | 0x16<<7 | 0x33, + 33558 - 19968: jis0208<<14 | 0x47<<7 | 0x02, + 33559 - 19968: jis0208<<14 | 0x47<<7 | 0x0B, + 33560 - 19968: jis0208<<14 | 0x47<<7 | 0x0C, + 33563 - 19968: jis0212<<14 | 0x36<<7 | 0x43, + 33564 - 19968: jis0208<<14 | 0x0F<<7 | 0x0A, + 33565 - 19968: jis0212<<14 | 0x36<<7 | 0x44, + 33566 - 19968: jis0212<<14 | 0x36<<7 | 0x45, + 33567 - 19968: jis0212<<14 | 0x36<<7 | 0x46, + 33569 - 19968: jis0212<<14 | 0x36<<7 | 0x47, + 33570 - 19968: jis0212<<14 | 0x36<<7 | 0x48, + 33571 - 19968: jis0208<<14 | 0x47<<7 | 0x13, + 33576 - 19968: jis0208<<14 | 0x0F<<7 | 0x50, + 33579 - 19968: jis0208<<14 | 0x47<<7 | 0x0A, + 33580 - 19968: jis0212<<14 | 0x36<<7 | 0x49, + 33581 - 19968: jis0212<<14 | 0x36<<7 | 0x4A, + 33582 - 19968: jis0212<<14 | 0x36<<7 | 0x4B, + 33583 - 19968: jis0208<<14 | 0x47<<7 | 0x09, + 33584 - 19968: jis0212<<14 | 0x36<<7 | 0x4C, + 33585 - 19968: jis0208<<14 | 0x47<<7 | 0x04, + 33586 - 19968: jis0208<<14 | 0x47<<7 | 0x03, + 33587 - 19968: jis0212<<14 | 0x36<<7 | 0x4D, + 33588 - 19968: jis0208<<14 | 0x47<<7 | 0x01, + 33589 - 19968: jis0208<<14 | 0x47<<7 | 0x00, + 33590 - 19968: jis0208<<14 | 0x22<<7 | 0x42, + 33591 - 19968: jis0212<<14 | 0x36<<7 | 0x4E, + 33592 - 19968: jis0208<<14 | 0x21<<7 | 0x5A, + 33593 - 19968: jis0208<<14 | 0x47<<7 | 0x06, + 33594 - 19968: jis0212<<14 | 0x36<<7 | 0x4F, + 33596 - 19968: jis0212<<14 | 0x36<<7 | 0x50, + 33597 - 19968: jis0212<<14 | 0x36<<7 | 0x51, + 33600 - 19968: jis0208<<14 | 0x47<<7 | 0x05, + 33602 - 19968: jis0212<<14 | 0x36<<7 | 0x52, + 33603 - 19968: jis0212<<14 | 0x36<<7 | 0x53, + 33604 - 19968: jis0212<<14 | 0x36<<7 | 0x54, + 33605 - 19968: jis0208<<14 | 0x47<<7 | 0x08, + 33607 - 19968: jis0212<<14 | 0x36<<7 | 0x55, + 33609 - 19968: jis0208<<14 | 0x20<<7 | 0x4F, + 33610 - 19968: jis0208<<14 | 0x16<<7 | 0x34, + 33613 - 19968: jis0212<<14 | 0x36<<7 | 0x56, + 33614 - 19968: jis0212<<14 | 0x36<<7 | 0x57, + 33615 - 19968: jis0208<<14 | 0x10<<7 | 0x20, + 33616 - 19968: jis0208<<14 | 0x47<<7 | 0x07, + 33617 - 19968: jis0212<<14 | 0x36<<7 | 0x58, + 33618 - 19968: jis0208<<14 | 0x18<<7 | 0x32, + 33619 - 19968: jis0212<<14 | 0x37<<7 | 0x1D, + 33620 - 19968: jis0212<<14 | 0x36<<7 | 0x42, + 33621 - 19968: jis0212<<14 | 0x36<<7 | 0x59, + 33622 - 19968: jis0212<<14 | 0x36<<7 | 0x5A, + 33623 - 19968: jis0212<<14 | 0x36<<7 | 0x5B, + 33624 - 19968: jis0208<<14 | 0x20<<7 | 0x50, + 33634 - 19968: jis0208<<14 | 0x5A<<7 | 0x37, + 33648 - 19968: jis0212<<14 | 0x36<<7 | 0x5C, + 33651 - 19968: jis0208<<14 | 0x47<<7 | 0x19, + 33653 - 19968: jis0208<<14 | 0x47<<7 | 0x1A, + 33655 - 19968: jis0208<<14 | 0x11<<7 | 0x38, + 33656 - 19968: jis0212<<14 | 0x36<<7 | 0x5D, + 33659 - 19968: jis0208<<14 | 0x11<<7 | 0x0D, + 33660 - 19968: jis0208<<14 | 0x47<<7 | 0x17, + 33661 - 19968: jis0212<<14 | 0x37<<7 | 0x00, + 33663 - 19968: jis0208<<14 | 0x5A<<7 | 0x38, + 33664 - 19968: jis0212<<14 | 0x37<<7 | 0x02, + 33666 - 19968: jis0212<<14 | 0x37<<7 | 0x03, + 33668 - 19968: jis0212<<14 | 0x37<<7 | 0x04, + 33669 - 19968: jis0208<<14 | 0x47<<7 | 0x0D, + 33670 - 19968: jis0212<<14 | 0x37<<7 | 0x05, + 33671 - 19968: jis0208<<14 | 0x47<<7 | 0x15, + 33673 - 19968: jis0208<<14 | 0x47<<7 | 0x1C, + 33674 - 19968: jis0208<<14 | 0x47<<7 | 0x16, + 33677 - 19968: jis0212<<14 | 0x37<<7 | 0x06, + 33678 - 19968: jis0208<<14 | 0x47<<7 | 0x14, + 33682 - 19968: jis0212<<14 | 0x37<<7 | 0x07, + 33683 - 19968: jis0208<<14 | 0x46<<7 | 0x55, + 33684 - 19968: jis0212<<14 | 0x37<<7 | 0x08, + 33685 - 19968: jis0212<<14 | 0x37<<7 | 0x09, + 33686 - 19968: jis0208<<14 | 0x47<<7 | 0x12, + 33688 - 19968: jis0212<<14 | 0x37<<7 | 0x0A, + 33689 - 19968: jis0212<<14 | 0x37<<7 | 0x0B, + 33690 - 19968: jis0208<<14 | 0x47<<7 | 0x0E, + 33691 - 19968: jis0212<<14 | 0x37<<7 | 0x0C, + 33692 - 19968: jis0212<<14 | 0x37<<7 | 0x0D, + 33693 - 19968: jis0212<<14 | 0x37<<7 | 0x0E, + 33694 - 19968: jis0208<<14 | 0x13<<7 | 0x2F, + 33695 - 19968: jis0208<<14 | 0x47<<7 | 0x10, + 33696 - 19968: jis0208<<14 | 0x47<<7 | 0x1B, + 33698 - 19968: jis0208<<14 | 0x47<<7 | 0x11, + 33702 - 19968: jis0212<<14 | 0x37<<7 | 0x0F, + 33703 - 19968: jis0212<<14 | 0x37<<7 | 0x10, + 33704 - 19968: jis0208<<14 | 0x47<<7 | 0x1D, + 33705 - 19968: jis0212<<14 | 0x37<<7 | 0x11, + 33706 - 19968: jis0208<<14 | 0x47<<7 | 0x0F, + 33707 - 19968: jis0208<<14 | 0x26<<7 | 0x5B, + 33708 - 19968: jis0212<<14 | 0x37<<7 | 0x12, + 33709 - 19968: jis0212<<14 | 0x37<<7 | 0x2B, + 33713 - 19968: jis0208<<14 | 0x2C<<7 | 0x48, + 33717 - 19968: jis0208<<14 | 0x47<<7 | 0x18, + 33725 - 19968: jis0208<<14 | 0x47<<7 | 0x2E, + 33726 - 19968: jis0212<<14 | 0x37<<7 | 0x13, + 33727 - 19968: jis0212<<14 | 0x37<<7 | 0x14, + 33728 - 19968: jis0212<<14 | 0x37<<7 | 0x15, + 33729 - 19968: jis0208<<14 | 0x47<<7 | 0x26, + 33733 - 19968: jis0208<<14 | 0x1E<<7 | 0x5A, + 33735 - 19968: jis0208<<14 | 0x5A<<7 | 0x39, + 33737 - 19968: jis0212<<14 | 0x37<<7 | 0x17, + 33738 - 19968: jis0208<<14 | 0x14<<7 | 0x25, + 33740 - 19968: jis0208<<14 | 0x15<<7 | 0x3C, + 33742 - 19968: jis0208<<14 | 0x47<<7 | 0x21, + 33743 - 19968: jis0212<<14 | 0x37<<7 | 0x18, + 33744 - 19968: jis0212<<14 | 0x37<<7 | 0x19, + 33745 - 19968: jis0212<<14 | 0x37<<7 | 0x1A, + 33747 - 19968: jis0208<<14 | 0x11<<7 | 0x3A, + 33748 - 19968: jis0212<<14 | 0x37<<7 | 0x1B, + 33750 - 19968: jis0208<<14 | 0x1D<<7 | 0x33, + 33752 - 19968: jis0208<<14 | 0x47<<7 | 0x24, + 33756 - 19968: jis0208<<14 | 0x19<<7 | 0x39, + 33757 - 19968: jis0212<<14 | 0x37<<7 | 0x1C, + 33759 - 19968: jis0208<<14 | 0x24<<7 | 0x30, + 33760 - 19968: jis0208<<14 | 0x47<<7 | 0x29, + 33768 - 19968: jis0212<<14 | 0x37<<7 | 0x1E, + 33769 - 19968: jis0208<<14 | 0x29<<7 | 0x4D, + 33770 - 19968: jis0212<<14 | 0x37<<7 | 0x1F, + 33771 - 19968: jis0208<<14 | 0x47<<7 | 0x20, + 33775 - 19968: jis0208<<14 | 0x11<<7 | 0x39, + 33776 - 19968: jis0208<<14 | 0x17<<7 | 0x35, + 33777 - 19968: jis0208<<14 | 0x28<<7 | 0x08, + 33778 - 19968: jis0208<<14 | 0x47<<7 | 0x2A, + 33780 - 19968: jis0208<<14 | 0x47<<7 | 0x1E, + 33782 - 19968: jis0208<<14 | 0x5A<<7 | 0x3A, + 33783 - 19968: jis0208<<14 | 0x47<<7 | 0x27, + 33784 - 19968: jis0212<<14 | 0x37<<7 | 0x21, + 33785 - 19968: jis0212<<14 | 0x37<<7 | 0x22, + 33787 - 19968: jis0208<<14 | 0x47<<7 | 0x31, + 33788 - 19968: jis0212<<14 | 0x37<<7 | 0x23, + 33789 - 19968: jis0208<<14 | 0x47<<7 | 0x22, + 33793 - 19968: jis0212<<14 | 0x37<<7 | 0x24, + 33795 - 19968: jis0208<<14 | 0x47<<7 | 0x23, + 33796 - 19968: jis0208<<14 | 0x25<<7 | 0x19, + 33798 - 19968: jis0212<<14 | 0x37<<7 | 0x25, + 33799 - 19968: jis0208<<14 | 0x47<<7 | 0x28, + 33802 - 19968: jis0212<<14 | 0x37<<7 | 0x26, + 33803 - 19968: jis0208<<14 | 0x47<<7 | 0x25, + 33804 - 19968: jis0208<<14 | 0x2A<<7 | 0x07, + 33805 - 19968: jis0208<<14 | 0x47<<7 | 0x2B, + 33806 - 19968: jis0208<<14 | 0x0F<<7 | 0x3F, + 33807 - 19968: jis0212<<14 | 0x37<<7 | 0x27, + 33809 - 19968: jis0212<<14 | 0x37<<7 | 0x28, + 33811 - 19968: jis0208<<14 | 0x47<<7 | 0x1F, + 33813 - 19968: jis0212<<14 | 0x37<<7 | 0x29, + 33817 - 19968: jis0212<<14 | 0x37<<7 | 0x2A, + 33824 - 19968: jis0208<<14 | 0x47<<7 | 0x2D, + 33826 - 19968: jis0208<<14 | 0x47<<7 | 0x2C, + 33833 - 19968: jis0208<<14 | 0x26<<7 | 0x4A, + 33834 - 19968: jis0208<<14 | 0x47<<7 | 0x33, + 33836 - 19968: jis0208<<14 | 0x47<<7 | 0x3E, + 33839 - 19968: jis0212<<14 | 0x37<<7 | 0x2C, + 33841 - 19968: jis0208<<14 | 0x12<<7 | 0x5D, + 33845 - 19968: jis0208<<14 | 0x47<<7 | 0x41, + 33848 - 19968: jis0208<<14 | 0x47<<7 | 0x2F, + 33849 - 19968: jis0212<<14 | 0x37<<7 | 0x2D, + 33852 - 19968: jis0208<<14 | 0x47<<7 | 0x34, + 33853 - 19968: jis0208<<14 | 0x2C<<7 | 0x4D, + 33861 - 19968: jis0212<<14 | 0x37<<7 | 0x2E, + 33862 - 19968: jis0208<<14 | 0x47<<7 | 0x3D, + 33863 - 19968: jis0212<<14 | 0x37<<7 | 0x2F, + 33864 - 19968: jis0208<<14 | 0x5A<<7 | 0x3B, + 33865 - 19968: jis0208<<14 | 0x2C<<7 | 0x34, + 33866 - 19968: jis0212<<14 | 0x37<<7 | 0x31, + 33869 - 19968: jis0212<<14 | 0x37<<7 | 0x32, + 33870 - 19968: jis0208<<14 | 0x2D<<7 | 0x09, + 33871 - 19968: jis0212<<14 | 0x37<<7 | 0x33, + 33873 - 19968: jis0212<<14 | 0x37<<7 | 0x34, + 33874 - 19968: jis0212<<14 | 0x37<<7 | 0x35, + 33878 - 19968: jis0212<<14 | 0x37<<7 | 0x36, + 33879 - 19968: jis0208<<14 | 0x22<<7 | 0x57, + 33880 - 19968: jis0212<<14 | 0x37<<7 | 0x37, + 33881 - 19968: jis0212<<14 | 0x37<<7 | 0x38, + 33882 - 19968: jis0212<<14 | 0x37<<7 | 0x39, + 33883 - 19968: jis0208<<14 | 0x12<<7 | 0x4A, + 33884 - 19968: jis0212<<14 | 0x37<<7 | 0x3A, + 33888 - 19968: jis0212<<14 | 0x37<<7 | 0x3B, + 33889 - 19968: jis0208<<14 | 0x28<<7 | 0x51, + 33890 - 19968: jis0208<<14 | 0x47<<7 | 0x43, + 33891 - 19968: jis0208<<14 | 0x25<<7 | 0x00, + 33892 - 19968: jis0212<<14 | 0x37<<7 | 0x3C, + 33893 - 19968: jis0212<<14 | 0x37<<7 | 0x3D, + 33894 - 19968: jis0208<<14 | 0x0F<<7 | 0x10, + 33895 - 19968: jis0212<<14 | 0x37<<7 | 0x3E, + 33897 - 19968: jis0208<<14 | 0x47<<7 | 0x3C, + 33898 - 19968: jis0212<<14 | 0x37<<7 | 0x3F, + 33899 - 19968: jis0208<<14 | 0x47<<7 | 0x38, + 33900 - 19968: jis0208<<14 | 0x20<<7 | 0x51, + 33901 - 19968: jis0208<<14 | 0x47<<7 | 0x32, + 33902 - 19968: jis0208<<14 | 0x47<<7 | 0x3A, + 33903 - 19968: jis0208<<14 | 0x47<<7 | 0x3F, + 33904 - 19968: jis0212<<14 | 0x37<<7 | 0x40, + 33905 - 19968: jis0208<<14 | 0x26<<7 | 0x0B, + 33907 - 19968: jis0212<<14 | 0x37<<7 | 0x41, + 33908 - 19968: jis0212<<14 | 0x37<<7 | 0x42, + 33909 - 19968: jis0208<<14 | 0x0F<<7 | 0x09, + 33910 - 19968: jis0212<<14 | 0x37<<7 | 0x43, + 33911 - 19968: jis0208<<14 | 0x47<<7 | 0x37, + 33912 - 19968: jis0212<<14 | 0x37<<7 | 0x44, + 33913 - 19968: jis0208<<14 | 0x47<<7 | 0x40, + 33914 - 19968: jis0208<<14 | 0x28<<7 | 0x57, + 33916 - 19968: jis0212<<14 | 0x37<<7 | 0x45, + 33917 - 19968: jis0212<<14 | 0x37<<7 | 0x46, + 33921 - 19968: jis0212<<14 | 0x37<<7 | 0x47, + 33922 - 19968: jis0208<<14 | 0x47<<7 | 0x3B, + 33924 - 19968: jis0208<<14 | 0x47<<7 | 0x36, + 33925 - 19968: jis0212<<14 | 0x37<<7 | 0x48, + 33931 - 19968: jis0208<<14 | 0x1D<<7 | 0x34, + 33936 - 19968: jis0208<<14 | 0x1C<<7 | 0x0E, + 33938 - 19968: jis0212<<14 | 0x37<<7 | 0x49, + 33939 - 19968: jis0212<<14 | 0x37<<7 | 0x4A, + 33940 - 19968: jis0208<<14 | 0x1B<<7 | 0x0B, + 33941 - 19968: jis0212<<14 | 0x37<<7 | 0x4B, + 33945 - 19968: jis0208<<14 | 0x2B<<7 | 0x37, + 33948 - 19968: jis0208<<14 | 0x28<<7 | 0x26, + 33950 - 19968: jis0212<<14 | 0x37<<7 | 0x4C, + 33951 - 19968: jis0208<<14 | 0x47<<7 | 0x46, + 33953 - 19968: jis0208<<14 | 0x47<<7 | 0x4F, + 33958 - 19968: jis0212<<14 | 0x37<<7 | 0x4D, + 33960 - 19968: jis0212<<14 | 0x37<<7 | 0x4E, + 33961 - 19968: jis0212<<14 | 0x37<<7 | 0x4F, + 33962 - 19968: jis0212<<14 | 0x37<<7 | 0x50, + 33965 - 19968: jis0208<<14 | 0x47<<7 | 0x39, + 33967 - 19968: jis0212<<14 | 0x37<<7 | 0x51, + 33969 - 19968: jis0212<<14 | 0x37<<7 | 0x52, + 33970 - 19968: jis0208<<14 | 0x12<<7 | 0x56, + 33972 - 19968: jis0208<<14 | 0x5A<<7 | 0x3C, + 33976 - 19968: jis0208<<14 | 0x1D<<7 | 0x57, + 33977 - 19968: jis0208<<14 | 0x47<<7 | 0x44, + 33978 - 19968: jis0212<<14 | 0x37<<7 | 0x54, + 33979 - 19968: jis0208<<14 | 0x47<<7 | 0x49, + 33980 - 19968: jis0208<<14 | 0x20<<7 | 0x52, + 33981 - 19968: jis0212<<14 | 0x37<<7 | 0x55, + 33982 - 19968: jis0212<<14 | 0x37<<7 | 0x56, + 33983 - 19968: jis0208<<14 | 0x47<<7 | 0x45, + 33984 - 19968: jis0212<<14 | 0x37<<7 | 0x57, + 33985 - 19968: jis0208<<14 | 0x47<<7 | 0x4C, + 33986 - 19968: jis0212<<14 | 0x37<<7 | 0x58, + 33988 - 19968: jis0208<<14 | 0x22<<7 | 0x3E, + 33990 - 19968: jis0208<<14 | 0x47<<7 | 0x4D, + 33991 - 19968: jis0212<<14 | 0x37<<7 | 0x59, + 33992 - 19968: jis0212<<14 | 0x37<<7 | 0x5A, + 33993 - 19968: jis0208<<14 | 0x2C<<7 | 0x35, + 33994 - 19968: jis0208<<14 | 0x47<<7 | 0x42, + 33995 - 19968: jis0208<<14 | 0x12<<7 | 0x17, + 33996 - 19968: jis0212<<14 | 0x37<<7 | 0x5B, + 33997 - 19968: jis0208<<14 | 0x47<<7 | 0x48, + 33999 - 19968: jis0212<<14 | 0x37<<7 | 0x5C, + 34000 - 19968: jis0208<<14 | 0x47<<7 | 0x4B, + 34001 - 19968: jis0208<<14 | 0x2B<<7 | 0x0B, + 34003 - 19968: jis0212<<14 | 0x37<<7 | 0x5D, + 34006 - 19968: jis0208<<14 | 0x47<<7 | 0x4E, + 34009 - 19968: jis0208<<14 | 0x47<<7 | 0x47, + 34010 - 19968: jis0208<<14 | 0x47<<7 | 0x4A, + 34012 - 19968: jis0208<<14 | 0x58<<7 | 0x04, + 34023 - 19968: jis0212<<14 | 0x38<<7 | 0x01, + 34026 - 19968: jis0212<<14 | 0x38<<7 | 0x02, + 34028 - 19968: jis0208<<14 | 0x2A<<7 | 0x08, + 34030 - 19968: jis0208<<14 | 0x2E<<7 | 0x00, + 34031 - 19968: jis0212<<14 | 0x38<<7 | 0x03, + 34032 - 19968: jis0212<<14 | 0x38<<7 | 0x04, + 34033 - 19968: jis0212<<14 | 0x38<<7 | 0x05, + 34034 - 19968: jis0212<<14 | 0x38<<7 | 0x06, + 34036 - 19968: jis0208<<14 | 0x47<<7 | 0x52, + 34039 - 19968: jis0212<<14 | 0x38<<7 | 0x07, + 34042 - 19968: jis0212<<14 | 0x38<<7 | 0x09, + 34043 - 19968: jis0212<<14 | 0x38<<7 | 0x0A, + 34044 - 19968: jis0208<<14 | 0x47<<7 | 0x59, + 34045 - 19968: jis0212<<14 | 0x38<<7 | 0x0B, + 34047 - 19968: jis0208<<14 | 0x47<<7 | 0x51, + 34048 - 19968: jis0208<<14 | 0x1B<<7 | 0x22, + 34050 - 19968: jis0212<<14 | 0x38<<7 | 0x0C, + 34051 - 19968: jis0212<<14 | 0x38<<7 | 0x0D, + 34054 - 19968: jis0208<<14 | 0x47<<7 | 0x30, + 34055 - 19968: jis0212<<14 | 0x38<<7 | 0x0E, + 34060 - 19968: jis0212<<14 | 0x38<<7 | 0x0F, + 34062 - 19968: jis0212<<14 | 0x38<<7 | 0x10, + 34064 - 19968: jis0212<<14 | 0x38<<7 | 0x11, + 34065 - 19968: jis0208<<14 | 0x29<<7 | 0x2D, + 34067 - 19968: jis0208<<14 | 0x2B<<7 | 0x01, + 34068 - 19968: jis0208<<14 | 0x47<<7 | 0x58, + 34069 - 19968: jis0208<<14 | 0x47<<7 | 0x57, + 34071 - 19968: jis0208<<14 | 0x47<<7 | 0x53, + 34072 - 19968: jis0208<<14 | 0x47<<7 | 0x54, + 34074 - 19968: jis0208<<14 | 0x10<<7 | 0x15, + 34076 - 19968: jis0212<<14 | 0x38<<7 | 0x12, + 34078 - 19968: jis0212<<14 | 0x38<<7 | 0x13, + 34079 - 19968: jis0208<<14 | 0x47<<7 | 0x56, + 34081 - 19968: jis0208<<14 | 0x47<<7 | 0x50, + 34082 - 19968: jis0212<<14 | 0x38<<7 | 0x14, + 34083 - 19968: jis0212<<14 | 0x38<<7 | 0x15, + 34084 - 19968: jis0212<<14 | 0x38<<7 | 0x16, + 34085 - 19968: jis0212<<14 | 0x38<<7 | 0x17, + 34086 - 19968: jis0208<<14 | 0x23<<7 | 0x34, + 34087 - 19968: jis0212<<14 | 0x38<<7 | 0x18, + 34090 - 19968: jis0212<<14 | 0x38<<7 | 0x19, + 34091 - 19968: jis0212<<14 | 0x38<<7 | 0x1A, + 34092 - 19968: jis0208<<14 | 0x47<<7 | 0x55, + 34093 - 19968: jis0208<<14 | 0x0F<<7 | 0x5D, + 34095 - 19968: jis0212<<14 | 0x38<<7 | 0x1B, + 34098 - 19968: jis0212<<14 | 0x38<<7 | 0x08, + 34099 - 19968: jis0212<<14 | 0x38<<7 | 0x1C, + 34100 - 19968: jis0212<<14 | 0x38<<7 | 0x1D, + 34101 - 19968: jis0208<<14 | 0x21<<7 | 0x01, + 34102 - 19968: jis0212<<14 | 0x38<<7 | 0x1E, + 34109 - 19968: jis0208<<14 | 0x29<<7 | 0x22, + 34111 - 19968: jis0212<<14 | 0x38<<7 | 0x1F, + 34112 - 19968: jis0208<<14 | 0x47<<7 | 0x5A, + 34113 - 19968: jis0208<<14 | 0x48<<7 | 0x00, + 34115 - 19968: jis0208<<14 | 0x27<<7 | 0x38, + 34118 - 19968: jis0212<<14 | 0x38<<7 | 0x20, + 34120 - 19968: jis0208<<14 | 0x47<<7 | 0x5D, + 34121 - 19968: jis0208<<14 | 0x1D<<7 | 0x35, + 34122 - 19968: jis0208<<14 | 0x1B<<7 | 0x28, + 34123 - 19968: jis0208<<14 | 0x48<<7 | 0x02, + 34126 - 19968: jis0208<<14 | 0x15<<7 | 0x1D, + 34127 - 19968: jis0212<<14 | 0x38<<7 | 0x21, + 34128 - 19968: jis0212<<14 | 0x38<<7 | 0x22, + 34129 - 19968: jis0212<<14 | 0x38<<7 | 0x23, + 34130 - 19968: jis0212<<14 | 0x38<<7 | 0x24, + 34131 - 19968: jis0208<<14 | 0x5A<<7 | 0x3D, + 34133 - 19968: jis0208<<14 | 0x48<<7 | 0x03, + 34134 - 19968: jis0212<<14 | 0x38<<7 | 0x26, + 34135 - 19968: jis0208<<14 | 0x28<<7 | 0x58, + 34136 - 19968: jis0208<<14 | 0x47<<7 | 0x5C, + 34137 - 19968: jis0208<<14 | 0x5A<<7 | 0x3E, + 34138 - 19968: jis0208<<14 | 0x47<<7 | 0x35, + 34140 - 19968: jis0212<<14 | 0x38<<7 | 0x28, + 34141 - 19968: jis0212<<14 | 0x38<<7 | 0x29, + 34142 - 19968: jis0212<<14 | 0x38<<7 | 0x2A, + 34143 - 19968: jis0212<<14 | 0x38<<7 | 0x2B, + 34144 - 19968: jis0212<<14 | 0x38<<7 | 0x2C, + 34145 - 19968: jis0212<<14 | 0x38<<7 | 0x2D, + 34146 - 19968: jis0212<<14 | 0x38<<7 | 0x2E, + 34147 - 19968: jis0208<<14 | 0x47<<7 | 0x5B, + 34148 - 19968: jis0212<<14 | 0x38<<7 | 0x2F, + 34152 - 19968: jis0208<<14 | 0x2E<<7 | 0x2E, + 34153 - 19968: jis0208<<14 | 0x25<<7 | 0x01, + 34154 - 19968: jis0208<<14 | 0x28<<7 | 0x52, + 34155 - 19968: jis0208<<14 | 0x5A<<7 | 0x3F, + 34157 - 19968: jis0208<<14 | 0x48<<7 | 0x0A, + 34159 - 19968: jis0212<<14 | 0x38<<7 | 0x31, + 34167 - 19968: jis0208<<14 | 0x48<<7 | 0x10, + 34169 - 19968: jis0212<<14 | 0x38<<7 | 0x32, + 34170 - 19968: jis0212<<14 | 0x38<<7 | 0x33, + 34171 - 19968: jis0212<<14 | 0x38<<7 | 0x34, + 34173 - 19968: jis0212<<14 | 0x38<<7 | 0x35, + 34174 - 19968: jis0208<<14 | 0x48<<7 | 0x11, + 34175 - 19968: jis0212<<14 | 0x38<<7 | 0x36, + 34176 - 19968: jis0208<<14 | 0x48<<7 | 0x04, + 34177 - 19968: jis0212<<14 | 0x38<<7 | 0x37, + 34180 - 19968: jis0208<<14 | 0x26<<7 | 0x55, + 34181 - 19968: jis0212<<14 | 0x38<<7 | 0x38, + 34182 - 19968: jis0212<<14 | 0x38<<7 | 0x39, + 34183 - 19968: jis0208<<14 | 0x48<<7 | 0x0E, + 34184 - 19968: jis0208<<14 | 0x48<<7 | 0x06, + 34185 - 19968: jis0212<<14 | 0x38<<7 | 0x3A, + 34186 - 19968: jis0208<<14 | 0x48<<7 | 0x08, + 34187 - 19968: jis0212<<14 | 0x38<<7 | 0x3B, + 34188 - 19968: jis0212<<14 | 0x38<<7 | 0x3C, + 34191 - 19968: jis0212<<14 | 0x38<<7 | 0x3D, + 34192 - 19968: jis0208<<14 | 0x48<<7 | 0x12, + 34193 - 19968: jis0208<<14 | 0x48<<7 | 0x07, + 34195 - 19968: jis0212<<14 | 0x38<<7 | 0x3E, + 34196 - 19968: jis0208<<14 | 0x48<<7 | 0x0B, + 34199 - 19968: jis0208<<14 | 0x10<<7 | 0x51, + 34200 - 19968: jis0212<<14 | 0x38<<7 | 0x3F, + 34201 - 19968: jis0208<<14 | 0x25<<7 | 0x44, + 34203 - 19968: jis0208<<14 | 0x48<<7 | 0x0C, + 34204 - 19968: jis0208<<14 | 0x48<<7 | 0x0F, + 34205 - 19968: jis0212<<14 | 0x38<<7 | 0x40, + 34207 - 19968: jis0212<<14 | 0x38<<7 | 0x41, + 34208 - 19968: jis0212<<14 | 0x38<<7 | 0x42, + 34210 - 19968: jis0212<<14 | 0x38<<7 | 0x43, + 34212 - 19968: jis0208<<14 | 0x48<<7 | 0x05, + 34213 - 19968: jis0212<<14 | 0x38<<7 | 0x44, + 34214 - 19968: jis0208<<14 | 0x20<<7 | 0x05, + 34215 - 19968: jis0212<<14 | 0x38<<7 | 0x45, + 34216 - 19968: jis0208<<14 | 0x48<<7 | 0x09, + 34217 - 19968: jis0208<<14 | 0x1A<<7 | 0x06, + 34218 - 19968: jis0208<<14 | 0x1E<<7 | 0x24, + 34219 - 19968: jis0208<<14 | 0x16<<7 | 0x0F, + 34220 - 19968: jis0208<<14 | 0x2B<<7 | 0x53, + 34221 - 19968: jis0212<<14 | 0x38<<7 | 0x53, + 34222 - 19968: jis0208<<14 | 0x2B<<7 | 0x58, + 34223 - 19968: jis0208<<14 | 0x1C<<7 | 0x51, + 34224 - 19968: jis0208<<14 | 0x5A<<7 | 0x41, + 34228 - 19968: jis0212<<14 | 0x38<<7 | 0x46, + 34230 - 19968: jis0212<<14 | 0x38<<7 | 0x47, + 34231 - 19968: jis0212<<14 | 0x38<<7 | 0x48, + 34232 - 19968: jis0212<<14 | 0x38<<7 | 0x49, + 34233 - 19968: jis0208<<14 | 0x48<<7 | 0x16, + 34234 - 19968: jis0208<<14 | 0x48<<7 | 0x14, + 34236 - 19968: jis0212<<14 | 0x38<<7 | 0x4A, + 34237 - 19968: jis0212<<14 | 0x38<<7 | 0x4B, + 34238 - 19968: jis0212<<14 | 0x38<<7 | 0x4C, + 34239 - 19968: jis0212<<14 | 0x38<<7 | 0x4D, + 34241 - 19968: jis0208<<14 | 0x2E<<7 | 0x2D, + 34242 - 19968: jis0212<<14 | 0x38<<7 | 0x4E, + 34247 - 19968: jis0212<<14 | 0x38<<7 | 0x4F, + 34249 - 19968: jis0208<<14 | 0x48<<7 | 0x13, + 34250 - 19968: jis0212<<14 | 0x38<<7 | 0x50, + 34251 - 19968: jis0212<<14 | 0x38<<7 | 0x51, + 34253 - 19968: jis0208<<14 | 0x2C<<7 | 0x54, + 34254 - 19968: jis0212<<14 | 0x38<<7 | 0x52, + 34255 - 19968: jis0208<<14 | 0x48<<7 | 0x15, + 34256 - 19968: jis0208<<14 | 0x48<<7 | 0x17, + 34261 - 19968: jis0208<<14 | 0x48<<7 | 0x18, + 34264 - 19968: jis0212<<14 | 0x38<<7 | 0x54, + 34266 - 19968: jis0212<<14 | 0x38<<7 | 0x55, + 34268 - 19968: jis0208<<14 | 0x48<<7 | 0x1B, + 34269 - 19968: jis0208<<14 | 0x48<<7 | 0x19, + 34271 - 19968: jis0212<<14 | 0x38<<7 | 0x56, + 34272 - 19968: jis0212<<14 | 0x38<<7 | 0x57, + 34276 - 19968: jis0208<<14 | 0x25<<7 | 0x02, + 34277 - 19968: jis0208<<14 | 0x48<<7 | 0x1A, + 34278 - 19968: jis0212<<14 | 0x38<<7 | 0x58, + 34280 - 19968: jis0212<<14 | 0x38<<7 | 0x59, + 34281 - 19968: jis0208<<14 | 0x27<<7 | 0x2C, + 34282 - 19968: jis0208<<14 | 0x48<<7 | 0x0D, + 34285 - 19968: jis0212<<14 | 0x38<<7 | 0x5A, + 34291 - 19968: jis0212<<14 | 0x38<<7 | 0x5B, + 34294 - 19968: jis0212<<14 | 0x38<<7 | 0x5C, + 34295 - 19968: jis0208<<14 | 0x1C<<7 | 0x52, + 34297 - 19968: jis0208<<14 | 0x48<<7 | 0x1C, + 34298 - 19968: jis0208<<14 | 0x48<<7 | 0x21, + 34299 - 19968: jis0208<<14 | 0x20<<7 | 0x53, + 34300 - 19968: jis0212<<14 | 0x38<<7 | 0x5D, + 34302 - 19968: jis0208<<14 | 0x48<<7 | 0x20, + 34303 - 19968: jis0212<<14 | 0x39<<7 | 0x00, + 34304 - 19968: jis0212<<14 | 0x39<<7 | 0x01, + 34306 - 19968: jis0208<<14 | 0x48<<7 | 0x01, + 34308 - 19968: jis0212<<14 | 0x39<<7 | 0x02, + 34309 - 19968: jis0212<<14 | 0x39<<7 | 0x03, + 34310 - 19968: jis0208<<14 | 0x48<<7 | 0x22, + 34311 - 19968: jis0208<<14 | 0x20<<7 | 0x28, + 34314 - 19968: jis0208<<14 | 0x48<<7 | 0x1D, + 34315 - 19968: jis0208<<14 | 0x48<<7 | 0x1F, + 34317 - 19968: jis0212<<14 | 0x39<<7 | 0x04, + 34318 - 19968: jis0212<<14 | 0x39<<7 | 0x05, + 34320 - 19968: jis0212<<14 | 0x39<<7 | 0x06, + 34321 - 19968: jis0212<<14 | 0x39<<7 | 0x07, + 34322 - 19968: jis0212<<14 | 0x39<<7 | 0x08, + 34323 - 19968: jis0208<<14 | 0x48<<7 | 0x1E, + 34326 - 19968: jis0208<<14 | 0x3C<<7 | 0x10, + 34327 - 19968: jis0208<<14 | 0x3C<<7 | 0x01, + 34328 - 19968: jis0212<<14 | 0x39<<7 | 0x09, + 34329 - 19968: jis0212<<14 | 0x39<<7 | 0x0A, + 34330 - 19968: jis0208<<14 | 0x48<<7 | 0x24, + 34331 - 19968: jis0212<<14 | 0x39<<7 | 0x0B, + 34334 - 19968: jis0212<<14 | 0x39<<7 | 0x0C, + 34337 - 19968: jis0212<<14 | 0x39<<7 | 0x0D, + 34338 - 19968: jis0208<<14 | 0x48<<7 | 0x23, + 34343 - 19968: jis0212<<14 | 0x39<<7 | 0x0E, + 34345 - 19968: jis0212<<14 | 0x39<<7 | 0x0F, + 34349 - 19968: jis0208<<14 | 0x2C<<7 | 0x55, + 34351 - 19968: jis0208<<14 | 0x41<<7 | 0x1B, + 34352 - 19968: jis0208<<14 | 0x48<<7 | 0x25, + 34358 - 19968: jis0212<<14 | 0x39<<7 | 0x10, + 34360 - 19968: jis0212<<14 | 0x39<<7 | 0x11, + 34362 - 19968: jis0212<<14 | 0x39<<7 | 0x12, + 34364 - 19968: jis0212<<14 | 0x39<<7 | 0x13, + 34365 - 19968: jis0212<<14 | 0x39<<7 | 0x14, + 34367 - 19968: jis0208<<14 | 0x48<<7 | 0x26, + 34368 - 19968: jis0212<<14 | 0x39<<7 | 0x15, + 34369 - 19968: jis0212<<14 | 0x17<<7 | 0x45, + 34370 - 19968: jis0212<<14 | 0x39<<7 | 0x16, + 34374 - 19968: jis0212<<14 | 0x39<<7 | 0x17, + 34381 - 19968: jis0208<<14 | 0x48<<7 | 0x27, + 34382 - 19968: jis0208<<14 | 0x17<<7 | 0x36, + 34384 - 19968: jis0208<<14 | 0x14<<7 | 0x33, + 34386 - 19968: jis0212<<14 | 0x39<<7 | 0x18, + 34387 - 19968: jis0212<<14 | 0x39<<7 | 0x19, + 34388 - 19968: jis0208<<14 | 0x48<<7 | 0x29, + 34389 - 19968: jis0208<<14 | 0x30<<7 | 0x3C, + 34390 - 19968: jis0212<<14 | 0x39<<7 | 0x1A, + 34391 - 19968: jis0212<<14 | 0x39<<7 | 0x1B, + 34392 - 19968: jis0212<<14 | 0x39<<7 | 0x1C, + 34393 - 19968: jis0212<<14 | 0x39<<7 | 0x1D, + 34394 - 19968: jis0208<<14 | 0x14<<7 | 0x54, + 34396 - 19968: jis0208<<14 | 0x2D<<7 | 0x19, + 34397 - 19968: jis0212<<14 | 0x39<<7 | 0x1E, + 34398 - 19968: jis0208<<14 | 0x15<<7 | 0x52, + 34399 - 19968: jis0208<<14 | 0x48<<7 | 0x2A, + 34400 - 19968: jis0212<<14 | 0x39<<7 | 0x1F, + 34401 - 19968: jis0212<<14 | 0x39<<7 | 0x20, + 34402 - 19968: jis0212<<14 | 0x39<<7 | 0x21, + 34403 - 19968: jis0212<<14 | 0x39<<7 | 0x22, + 34404 - 19968: jis0212<<14 | 0x39<<7 | 0x23, + 34407 - 19968: jis0208<<14 | 0x48<<7 | 0x2B, + 34409 - 19968: jis0212<<14 | 0x39<<7 | 0x24, + 34411 - 19968: jis0208<<14 | 0x22<<7 | 0x4D, + 34412 - 19968: jis0212<<14 | 0x39<<7 | 0x25, + 34415 - 19968: jis0212<<14 | 0x39<<7 | 0x26, + 34417 - 19968: jis0208<<14 | 0x48<<7 | 0x2C, + 34421 - 19968: jis0212<<14 | 0x39<<7 | 0x27, + 34422 - 19968: jis0212<<14 | 0x39<<7 | 0x28, + 34423 - 19968: jis0212<<14 | 0x39<<7 | 0x29, + 34425 - 19968: jis0208<<14 | 0x25<<7 | 0x59, + 34426 - 19968: jis0212<<14 | 0x39<<7 | 0x2A, + 34427 - 19968: jis0208<<14 | 0x0F<<7 | 0x19, + 34440 - 19968: jis0212<<14 | 0x39<<7 | 0x4C, + 34442 - 19968: jis0208<<14 | 0x11<<7 | 0x42, + 34443 - 19968: jis0208<<14 | 0x48<<7 | 0x31, + 34444 - 19968: jis0208<<14 | 0x48<<7 | 0x32, + 34445 - 19968: jis0212<<14 | 0x39<<7 | 0x2B, + 34449 - 19968: jis0212<<14 | 0x39<<7 | 0x2C, + 34451 - 19968: jis0208<<14 | 0x48<<7 | 0x2D, + 34453 - 19968: jis0208<<14 | 0x1A<<7 | 0x1C, + 34454 - 19968: jis0212<<14 | 0x39<<7 | 0x2D, + 34456 - 19968: jis0212<<14 | 0x39<<7 | 0x2E, + 34458 - 19968: jis0212<<14 | 0x39<<7 | 0x2F, + 34460 - 19968: jis0212<<14 | 0x39<<7 | 0x30, + 34465 - 19968: jis0212<<14 | 0x39<<7 | 0x31, + 34467 - 19968: jis0208<<14 | 0x48<<7 | 0x2E, + 34468 - 19968: jis0208<<14 | 0x26<<7 | 0x21, + 34470 - 19968: jis0212<<14 | 0x39<<7 | 0x32, + 34471 - 19968: jis0212<<14 | 0x39<<7 | 0x33, + 34472 - 19968: jis0212<<14 | 0x39<<7 | 0x34, + 34473 - 19968: jis0208<<14 | 0x48<<7 | 0x2F, + 34474 - 19968: jis0208<<14 | 0x48<<7 | 0x30, + 34475 - 19968: jis0208<<14 | 0x48<<7 | 0x3A, + 34477 - 19968: jis0212<<14 | 0x39<<7 | 0x35, + 34479 - 19968: jis0208<<14 | 0x48<<7 | 0x34, + 34480 - 19968: jis0208<<14 | 0x48<<7 | 0x37, + 34481 - 19968: jis0212<<14 | 0x39<<7 | 0x36, + 34483 - 19968: jis0212<<14 | 0x39<<7 | 0x37, + 34484 - 19968: jis0212<<14 | 0x39<<7 | 0x38, + 34485 - 19968: jis0212<<14 | 0x39<<7 | 0x39, + 34486 - 19968: jis0208<<14 | 0x48<<7 | 0x33, + 34487 - 19968: jis0212<<14 | 0x39<<7 | 0x3A, + 34488 - 19968: jis0212<<14 | 0x39<<7 | 0x3B, + 34489 - 19968: jis0212<<14 | 0x39<<7 | 0x3C, + 34495 - 19968: jis0212<<14 | 0x39<<7 | 0x3D, + 34496 - 19968: jis0212<<14 | 0x39<<7 | 0x3E, + 34497 - 19968: jis0212<<14 | 0x39<<7 | 0x3F, + 34499 - 19968: jis0212<<14 | 0x39<<7 | 0x40, + 34500 - 19968: jis0208<<14 | 0x48<<7 | 0x35, + 34501 - 19968: jis0212<<14 | 0x39<<7 | 0x41, + 34502 - 19968: jis0208<<14 | 0x48<<7 | 0x36, + 34503 - 19968: jis0208<<14 | 0x1B<<7 | 0x37, + 34505 - 19968: jis0208<<14 | 0x48<<7 | 0x38, + 34507 - 19968: jis0208<<14 | 0x22<<7 | 0x20, + 34509 - 19968: jis0208<<14 | 0x16<<7 | 0x35, + 34510 - 19968: jis0208<<14 | 0x12<<7 | 0x21, + 34513 - 19968: jis0212<<14 | 0x39<<7 | 0x42, + 34514 - 19968: jis0212<<14 | 0x39<<7 | 0x43, + 34516 - 19968: jis0208<<14 | 0x48<<7 | 0x3B, + 34517 - 19968: jis0212<<14 | 0x39<<7 | 0x44, + 34519 - 19968: jis0212<<14 | 0x39<<7 | 0x45, + 34521 - 19968: jis0208<<14 | 0x12<<7 | 0x1E, + 34522 - 19968: jis0212<<14 | 0x39<<7 | 0x46, + 34523 - 19968: jis0208<<14 | 0x48<<7 | 0x40, + 34524 - 19968: jis0212<<14 | 0x39<<7 | 0x47, + 34526 - 19968: jis0208<<14 | 0x48<<7 | 0x3C, + 34527 - 19968: jis0208<<14 | 0x48<<7 | 0x3F, + 34528 - 19968: jis0212<<14 | 0x39<<7 | 0x48, + 34531 - 19968: jis0212<<14 | 0x39<<7 | 0x49, + 34532 - 19968: jis0208<<14 | 0x27<<7 | 0x19, + 34533 - 19968: jis0212<<14 | 0x39<<7 | 0x4A, + 34535 - 19968: jis0212<<14 | 0x39<<7 | 0x4B, + 34537 - 19968: jis0208<<14 | 0x48<<7 | 0x3D, + 34540 - 19968: jis0208<<14 | 0x48<<7 | 0x3E, + 34541 - 19968: jis0208<<14 | 0x28<<7 | 0x27, + 34542 - 19968: jis0208<<14 | 0x27<<7 | 0x39, + 34543 - 19968: jis0208<<14 | 0x48<<7 | 0x41, + 34552 - 19968: jis0208<<14 | 0x21<<7 | 0x5C, + 34553 - 19968: jis0208<<14 | 0x48<<7 | 0x4B, + 34554 - 19968: jis0212<<14 | 0x39<<7 | 0x4D, + 34555 - 19968: jis0208<<14 | 0x48<<7 | 0x47, + 34556 - 19968: jis0212<<14 | 0x39<<7 | 0x4E, + 34557 - 19968: jis0212<<14 | 0x39<<7 | 0x4F, + 34558 - 19968: jis0208<<14 | 0x11<<7 | 0x4A, + 34560 - 19968: jis0208<<14 | 0x48<<7 | 0x45, + 34562 - 19968: jis0208<<14 | 0x2A<<7 | 0x09, + 34563 - 19968: jis0208<<14 | 0x48<<7 | 0x46, + 34564 - 19968: jis0212<<14 | 0x39<<7 | 0x50, + 34565 - 19968: jis0212<<14 | 0x39<<7 | 0x51, + 34566 - 19968: jis0208<<14 | 0x48<<7 | 0x43, + 34567 - 19968: jis0212<<14 | 0x39<<7 | 0x52, + 34568 - 19968: jis0208<<14 | 0x48<<7 | 0x44, + 34569 - 19968: jis0208<<14 | 0x48<<7 | 0x49, + 34570 - 19968: jis0208<<14 | 0x48<<7 | 0x4C, + 34571 - 19968: jis0212<<14 | 0x39<<7 | 0x53, + 34573 - 19968: jis0208<<14 | 0x48<<7 | 0x4A, + 34574 - 19968: jis0212<<14 | 0x39<<7 | 0x54, + 34575 - 19968: jis0212<<14 | 0x39<<7 | 0x55, + 34576 - 19968: jis0212<<14 | 0x39<<7 | 0x56, + 34577 - 19968: jis0208<<14 | 0x48<<7 | 0x48, + 34578 - 19968: jis0208<<14 | 0x48<<7 | 0x42, + 34579 - 19968: jis0212<<14 | 0x39<<7 | 0x57, + 34580 - 19968: jis0212<<14 | 0x39<<7 | 0x58, + 34584 - 19968: jis0208<<14 | 0x22<<7 | 0x37, + 34585 - 19968: jis0212<<14 | 0x39<<7 | 0x59, + 34586 - 19968: jis0208<<14 | 0x48<<7 | 0x53, + 34588 - 19968: jis0208<<14 | 0x2B<<7 | 0x09, + 34590 - 19968: jis0212<<14 | 0x39<<7 | 0x5A, + 34591 - 19968: jis0212<<14 | 0x39<<7 | 0x5B, + 34593 - 19968: jis0212<<14 | 0x39<<7 | 0x5C, + 34595 - 19968: jis0212<<14 | 0x39<<7 | 0x5D, + 34597 - 19968: jis0208<<14 | 0x48<<7 | 0x51, + 34600 - 19968: jis0212<<14 | 0x3A<<7 | 0x00, + 34601 - 19968: jis0208<<14 | 0x48<<7 | 0x52, + 34606 - 19968: jis0212<<14 | 0x3A<<7 | 0x01, + 34607 - 19968: jis0212<<14 | 0x3A<<7 | 0x02, + 34609 - 19968: jis0212<<14 | 0x3A<<7 | 0x03, + 34610 - 19968: jis0212<<14 | 0x3A<<7 | 0x04, + 34612 - 19968: jis0208<<14 | 0x48<<7 | 0x4D, + 34615 - 19968: jis0208<<14 | 0x48<<7 | 0x4F, + 34617 - 19968: jis0212<<14 | 0x3A<<7 | 0x05, + 34618 - 19968: jis0212<<14 | 0x3A<<7 | 0x06, + 34619 - 19968: jis0208<<14 | 0x48<<7 | 0x50, + 34620 - 19968: jis0212<<14 | 0x3A<<7 | 0x07, + 34621 - 19968: jis0212<<14 | 0x3A<<7 | 0x08, + 34622 - 19968: jis0212<<14 | 0x3A<<7 | 0x09, + 34623 - 19968: jis0208<<14 | 0x48<<7 | 0x4E, + 34624 - 19968: jis0212<<14 | 0x3A<<7 | 0x0A, + 34627 - 19968: jis0212<<14 | 0x3A<<7 | 0x0B, + 34629 - 19968: jis0212<<14 | 0x3A<<7 | 0x0C, + 34633 - 19968: jis0208<<14 | 0x1F<<7 | 0x45, + 34635 - 19968: jis0208<<14 | 0x2E<<7 | 0x18, + 34636 - 19968: jis0208<<14 | 0x48<<7 | 0x57, + 34637 - 19968: jis0212<<14 | 0x3A<<7 | 0x0D, + 34638 - 19968: jis0208<<14 | 0x48<<7 | 0x58, + 34643 - 19968: jis0208<<14 | 0x49<<7 | 0x00, + 34645 - 19968: jis0208<<14 | 0x1E<<7 | 0x09, + 34647 - 19968: jis0208<<14 | 0x48<<7 | 0x5A, + 34648 - 19968: jis0212<<14 | 0x3A<<7 | 0x0E, + 34649 - 19968: jis0208<<14 | 0x48<<7 | 0x5D, + 34653 - 19968: jis0212<<14 | 0x3A<<7 | 0x0F, + 34655 - 19968: jis0208<<14 | 0x48<<7 | 0x55, + 34656 - 19968: jis0208<<14 | 0x48<<7 | 0x54, + 34657 - 19968: jis0212<<14 | 0x3A<<7 | 0x10, + 34659 - 19968: jis0208<<14 | 0x49<<7 | 0x01, + 34660 - 19968: jis0212<<14 | 0x3A<<7 | 0x11, + 34661 - 19968: jis0212<<14 | 0x3A<<7 | 0x12, + 34662 - 19968: jis0208<<14 | 0x11<<7 | 0x3B, + 34664 - 19968: jis0208<<14 | 0x48<<7 | 0x5B, + 34666 - 19968: jis0208<<14 | 0x49<<7 | 0x02, + 34670 - 19968: jis0208<<14 | 0x48<<7 | 0x5C, + 34671 - 19968: jis0212<<14 | 0x3A<<7 | 0x13, + 34673 - 19968: jis0212<<14 | 0x3A<<7 | 0x14, + 34674 - 19968: jis0212<<14 | 0x3A<<7 | 0x15, + 34676 - 19968: jis0208<<14 | 0x48<<7 | 0x59, + 34678 - 19968: jis0208<<14 | 0x23<<7 | 0x12, + 34680 - 19968: jis0208<<14 | 0x48<<7 | 0x56, + 34683 - 19968: jis0212<<14 | 0x3A<<7 | 0x16, + 34687 - 19968: jis0208<<14 | 0x26<<7 | 0x47, + 34690 - 19968: jis0208<<14 | 0x49<<7 | 0x06, + 34691 - 19968: jis0212<<14 | 0x3A<<7 | 0x17, + 34692 - 19968: jis0212<<14 | 0x3A<<7 | 0x18, + 34693 - 19968: jis0212<<14 | 0x3A<<7 | 0x19, + 34694 - 19968: jis0212<<14 | 0x3A<<7 | 0x1A, + 34695 - 19968: jis0212<<14 | 0x3A<<7 | 0x1B, + 34696 - 19968: jis0212<<14 | 0x3A<<7 | 0x1C, + 34697 - 19968: jis0212<<14 | 0x3A<<7 | 0x1D, + 34699 - 19968: jis0212<<14 | 0x3A<<7 | 0x1E, + 34700 - 19968: jis0212<<14 | 0x3A<<7 | 0x1F, + 34701 - 19968: jis0208<<14 | 0x2C<<7 | 0x1A, + 34704 - 19968: jis0212<<14 | 0x3A<<7 | 0x20, + 34707 - 19968: jis0212<<14 | 0x3A<<7 | 0x21, + 34709 - 19968: jis0212<<14 | 0x3A<<7 | 0x22, + 34711 - 19968: jis0212<<14 | 0x3A<<7 | 0x23, + 34712 - 19968: jis0212<<14 | 0x3A<<7 | 0x24, + 34713 - 19968: jis0212<<14 | 0x3A<<7 | 0x25, + 34718 - 19968: jis0212<<14 | 0x3A<<7 | 0x26, + 34719 - 19968: jis0208<<14 | 0x49<<7 | 0x05, + 34720 - 19968: jis0212<<14 | 0x3A<<7 | 0x27, + 34722 - 19968: jis0208<<14 | 0x49<<7 | 0x04, + 34723 - 19968: jis0212<<14 | 0x3A<<7 | 0x28, + 34727 - 19968: jis0212<<14 | 0x3A<<7 | 0x29, + 34731 - 19968: jis0208<<14 | 0x49<<7 | 0x0D, + 34732 - 19968: jis0212<<14 | 0x3A<<7 | 0x2A, + 34733 - 19968: jis0212<<14 | 0x3A<<7 | 0x2B, + 34734 - 19968: jis0212<<14 | 0x3A<<7 | 0x2C, + 34735 - 19968: jis0208<<14 | 0x49<<7 | 0x07, + 34737 - 19968: jis0212<<14 | 0x3A<<7 | 0x2D, + 34739 - 19968: jis0208<<14 | 0x49<<7 | 0x0F, + 34741 - 19968: jis0212<<14 | 0x3A<<7 | 0x2E, + 34746 - 19968: jis0208<<14 | 0x2C<<7 | 0x45, + 34747 - 19968: jis0208<<14 | 0x49<<7 | 0x12, + 34749 - 19968: jis0208<<14 | 0x49<<7 | 0x09, + 34750 - 19968: jis0212<<14 | 0x3A<<7 | 0x2F, + 34751 - 19968: jis0212<<14 | 0x3A<<7 | 0x30, + 34752 - 19968: jis0208<<14 | 0x49<<7 | 0x0A, + 34753 - 19968: jis0212<<14 | 0x3A<<7 | 0x31, + 34756 - 19968: jis0208<<14 | 0x49<<7 | 0x0E, + 34758 - 19968: jis0208<<14 | 0x49<<7 | 0x11, + 34759 - 19968: jis0208<<14 | 0x49<<7 | 0x10, + 34760 - 19968: jis0212<<14 | 0x3A<<7 | 0x32, + 34761 - 19968: jis0212<<14 | 0x3A<<7 | 0x33, + 34762 - 19968: jis0212<<14 | 0x3A<<7 | 0x34, + 34763 - 19968: jis0208<<14 | 0x49<<7 | 0x08, + 34766 - 19968: jis0212<<14 | 0x3A<<7 | 0x35, + 34768 - 19968: jis0208<<14 | 0x49<<7 | 0x0B, + 34770 - 19968: jis0208<<14 | 0x49<<7 | 0x1C, + 34773 - 19968: jis0212<<14 | 0x3A<<7 | 0x36, + 34774 - 19968: jis0212<<14 | 0x3A<<7 | 0x37, + 34777 - 19968: jis0212<<14 | 0x3A<<7 | 0x38, + 34778 - 19968: jis0212<<14 | 0x3A<<7 | 0x39, + 34780 - 19968: jis0212<<14 | 0x3A<<7 | 0x3A, + 34783 - 19968: jis0212<<14 | 0x3A<<7 | 0x3B, + 34784 - 19968: jis0208<<14 | 0x49<<7 | 0x15, + 34786 - 19968: jis0212<<14 | 0x3A<<7 | 0x3C, + 34787 - 19968: jis0212<<14 | 0x3A<<7 | 0x3D, + 34788 - 19968: jis0212<<14 | 0x3A<<7 | 0x3E, + 34794 - 19968: jis0212<<14 | 0x3A<<7 | 0x3F, + 34795 - 19968: jis0212<<14 | 0x3A<<7 | 0x40, + 34797 - 19968: jis0212<<14 | 0x3A<<7 | 0x41, + 34799 - 19968: jis0208<<14 | 0x49<<7 | 0x13, + 34801 - 19968: jis0212<<14 | 0x3A<<7 | 0x42, + 34802 - 19968: jis0208<<14 | 0x49<<7 | 0x14, + 34803 - 19968: jis0212<<14 | 0x3A<<7 | 0x43, + 34806 - 19968: jis0208<<14 | 0x49<<7 | 0x19, + 34807 - 19968: jis0208<<14 | 0x49<<7 | 0x1A, + 34808 - 19968: jis0212<<14 | 0x3A<<7 | 0x44, + 34809 - 19968: jis0208<<14 | 0x12<<7 | 0x09, + 34810 - 19968: jis0212<<14 | 0x3A<<7 | 0x45, + 34811 - 19968: jis0208<<14 | 0x14<<7 | 0x21, + 34814 - 19968: jis0208<<14 | 0x49<<7 | 0x18, + 34815 - 19968: jis0212<<14 | 0x3A<<7 | 0x46, + 34817 - 19968: jis0212<<14 | 0x3A<<7 | 0x47, + 34819 - 19968: jis0212<<14 | 0x3A<<7 | 0x48, + 34821 - 19968: jis0208<<14 | 0x49<<7 | 0x03, + 34822 - 19968: jis0212<<14 | 0x3A<<7 | 0x49, + 34823 - 19968: jis0208<<14 | 0x5A<<7 | 0x44, + 34825 - 19968: jis0212<<14 | 0x3A<<7 | 0x4A, + 34826 - 19968: jis0212<<14 | 0x3A<<7 | 0x4B, + 34827 - 19968: jis0212<<14 | 0x3A<<7 | 0x4C, + 34829 - 19968: jis0208<<14 | 0x49<<7 | 0x17, + 34830 - 19968: jis0208<<14 | 0x49<<7 | 0x1B, + 34831 - 19968: jis0208<<14 | 0x49<<7 | 0x16, + 34832 - 19968: jis0212<<14 | 0x3A<<7 | 0x4D, + 34833 - 19968: jis0208<<14 | 0x49<<7 | 0x1D, + 34834 - 19968: jis0212<<14 | 0x3A<<7 | 0x4F, + 34835 - 19968: jis0212<<14 | 0x3A<<7 | 0x50, + 34836 - 19968: jis0212<<14 | 0x3A<<7 | 0x51, + 34837 - 19968: jis0208<<14 | 0x49<<7 | 0x1F, + 34838 - 19968: jis0208<<14 | 0x49<<7 | 0x1E, + 34840 - 19968: jis0212<<14 | 0x3A<<7 | 0x52, + 34841 - 19968: jis0212<<14 | 0x3A<<7 | 0x4E, + 34842 - 19968: jis0212<<14 | 0x3A<<7 | 0x53, + 34843 - 19968: jis0212<<14 | 0x3A<<7 | 0x54, + 34844 - 19968: jis0212<<14 | 0x3A<<7 | 0x55, + 34846 - 19968: jis0212<<14 | 0x3A<<7 | 0x56, + 34847 - 19968: jis0212<<14 | 0x3A<<7 | 0x57, + 34849 - 19968: jis0208<<14 | 0x49<<7 | 0x21, + 34850 - 19968: jis0208<<14 | 0x49<<7 | 0x20, + 34851 - 19968: jis0208<<14 | 0x48<<7 | 0x39, + 34855 - 19968: jis0208<<14 | 0x49<<7 | 0x25, + 34856 - 19968: jis0212<<14 | 0x3A<<7 | 0x58, + 34861 - 19968: jis0212<<14 | 0x3A<<7 | 0x59, + 34862 - 19968: jis0212<<14 | 0x3A<<7 | 0x5A, + 34864 - 19968: jis0212<<14 | 0x3A<<7 | 0x5B, + 34865 - 19968: jis0208<<14 | 0x49<<7 | 0x22, + 34866 - 19968: jis0212<<14 | 0x3A<<7 | 0x5C, + 34869 - 19968: jis0212<<14 | 0x3A<<7 | 0x5D, + 34870 - 19968: jis0208<<14 | 0x49<<7 | 0x23, + 34873 - 19968: jis0208<<14 | 0x49<<7 | 0x24, + 34874 - 19968: jis0212<<14 | 0x3B<<7 | 0x00, + 34875 - 19968: jis0208<<14 | 0x49<<7 | 0x26, + 34876 - 19968: jis0212<<14 | 0x3B<<7 | 0x01, + 34880 - 19968: jis0208<<14 | 0x16<<7 | 0x4B, + 34881 - 19968: jis0212<<14 | 0x3B<<7 | 0x02, + 34882 - 19968: jis0208<<14 | 0x49<<7 | 0x28, + 34883 - 19968: jis0212<<14 | 0x3B<<7 | 0x03, + 34884 - 19968: jis0208<<14 | 0x49<<7 | 0x27, + 34885 - 19968: jis0212<<14 | 0x3B<<7 | 0x04, + 34886 - 19968: jis0208<<14 | 0x1C<<7 | 0x0F, + 34888 - 19968: jis0212<<14 | 0x3B<<7 | 0x05, + 34889 - 19968: jis0212<<14 | 0x3B<<7 | 0x06, + 34890 - 19968: jis0212<<14 | 0x3B<<7 | 0x07, + 34891 - 19968: jis0212<<14 | 0x3B<<7 | 0x08, + 34892 - 19968: jis0208<<14 | 0x18<<7 | 0x33, + 34893 - 19968: jis0208<<14 | 0x3D<<7 | 0x06, + 34894 - 19968: jis0212<<14 | 0x3B<<7 | 0x09, + 34897 - 19968: jis0212<<14 | 0x3B<<7 | 0x0A, + 34898 - 19968: jis0208<<14 | 0x49<<7 | 0x29, + 34899 - 19968: jis0208<<14 | 0x1C<<7 | 0x30, + 34901 - 19968: jis0212<<14 | 0x3B<<7 | 0x0B, + 34902 - 19968: jis0212<<14 | 0x3B<<7 | 0x0C, + 34903 - 19968: jis0208<<14 | 0x12<<7 | 0x18, + 34904 - 19968: jis0212<<14 | 0x3B<<7 | 0x0D, + 34905 - 19968: jis0208<<14 | 0x49<<7 | 0x2A, + 34906 - 19968: jis0212<<14 | 0x3B<<7 | 0x0E, + 34907 - 19968: jis0208<<14 | 0x10<<7 | 0x31, + 34908 - 19968: jis0212<<14 | 0x3B<<7 | 0x0F, + 34909 - 19968: jis0208<<14 | 0x1D<<7 | 0x36, + 34910 - 19968: jis0208<<14 | 0x49<<7 | 0x2B, + 34911 - 19968: jis0212<<14 | 0x3B<<7 | 0x10, + 34912 - 19968: jis0212<<14 | 0x3B<<7 | 0x11, + 34913 - 19968: jis0208<<14 | 0x18<<7 | 0x34, + 34914 - 19968: jis0208<<14 | 0x49<<7 | 0x2C, + 34915 - 19968: jis0208<<14 | 0x0F<<7 | 0x40, + 34916 - 19968: jis0212<<14 | 0x3B<<7 | 0x12, + 34920 - 19968: jis0208<<14 | 0x28<<7 | 0x1C, + 34921 - 19968: jis0212<<14 | 0x3B<<7 | 0x13, + 34923 - 19968: jis0208<<14 | 0x49<<7 | 0x2D, + 34928 - 19968: jis0208<<14 | 0x1E<<7 | 0x49, + 34929 - 19968: jis0212<<14 | 0x3B<<7 | 0x14, + 34930 - 19968: jis0208<<14 | 0x49<<7 | 0x34, + 34933 - 19968: jis0208<<14 | 0x49<<7 | 0x31, + 34935 - 19968: jis0208<<14 | 0x22<<7 | 0x4E, + 34937 - 19968: jis0212<<14 | 0x3B<<7 | 0x15, + 34939 - 19968: jis0212<<14 | 0x3B<<7 | 0x16, + 34941 - 19968: jis0208<<14 | 0x49<<7 | 0x32, + 34942 - 19968: jis0208<<14 | 0x49<<7 | 0x2F, + 34943 - 19968: jis0208<<14 | 0x15<<7 | 0x3D, + 34944 - 19968: jis0212<<14 | 0x3B<<7 | 0x17, + 34945 - 19968: jis0208<<14 | 0x49<<7 | 0x2E, + 34946 - 19968: jis0208<<14 | 0x49<<7 | 0x35, + 34952 - 19968: jis0208<<14 | 0x16<<7 | 0x15, + 34955 - 19968: jis0208<<14 | 0x21<<7 | 0x3D, + 34957 - 19968: jis0208<<14 | 0x49<<7 | 0x3B, + 34962 - 19968: jis0208<<14 | 0x49<<7 | 0x37, + 34966 - 19968: jis0208<<14 | 0x21<<7 | 0x14, + 34967 - 19968: jis0208<<14 | 0x49<<7 | 0x36, + 34968 - 19968: jis0212<<14 | 0x3B<<7 | 0x18, + 34969 - 19968: jis0208<<14 | 0x49<<7 | 0x39, + 34970 - 19968: jis0212<<14 | 0x3B<<7 | 0x19, + 34971 - 19968: jis0212<<14 | 0x3B<<7 | 0x1A, + 34972 - 19968: jis0212<<14 | 0x3B<<7 | 0x1B, + 34974 - 19968: jis0208<<14 | 0x49<<7 | 0x30, + 34975 - 19968: jis0212<<14 | 0x3B<<7 | 0x1C, + 34976 - 19968: jis0212<<14 | 0x3B<<7 | 0x1D, + 34978 - 19968: jis0208<<14 | 0x49<<7 | 0x3A, + 34980 - 19968: jis0208<<14 | 0x49<<7 | 0x3C, + 34984 - 19968: jis0212<<14 | 0x3B<<7 | 0x1E, + 34986 - 19968: jis0212<<14 | 0x3B<<7 | 0x1F, + 34987 - 19968: jis0208<<14 | 0x27<<7 | 0x4E, + 34990 - 19968: jis0208<<14 | 0x49<<7 | 0x38, + 34992 - 19968: jis0208<<14 | 0x49<<7 | 0x3D, + 34993 - 19968: jis0208<<14 | 0x49<<7 | 0x3F, + 34996 - 19968: jis0208<<14 | 0x17<<7 | 0x32, + 34997 - 19968: jis0208<<14 | 0x49<<7 | 0x33, + 34999 - 19968: jis0208<<14 | 0x0F<<7 | 0x20, + 35002 - 19968: jis0212<<14 | 0x3B<<7 | 0x20, + 35005 - 19968: jis0212<<14 | 0x3B<<7 | 0x21, + 35006 - 19968: jis0212<<14 | 0x3B<<7 | 0x22, + 35007 - 19968: jis0208<<14 | 0x49<<7 | 0x3E, + 35008 - 19968: jis0212<<14 | 0x3B<<7 | 0x23, + 35009 - 19968: jis0208<<14 | 0x19<<7 | 0x3A, + 35010 - 19968: jis0208<<14 | 0x2D<<7 | 0x55, + 35011 - 19968: jis0208<<14 | 0x49<<7 | 0x40, + 35012 - 19968: jis0208<<14 | 0x49<<7 | 0x41, + 35013 - 19968: jis0208<<14 | 0x20<<7 | 0x54, + 35018 - 19968: jis0212<<14 | 0x3B<<7 | 0x24, + 35019 - 19968: jis0212<<14 | 0x3B<<7 | 0x25, + 35020 - 19968: jis0212<<14 | 0x3B<<7 | 0x26, + 35021 - 19968: jis0212<<14 | 0x3B<<7 | 0x27, + 35022 - 19968: jis0212<<14 | 0x3B<<7 | 0x28, + 35023 - 19968: jis0208<<14 | 0x2D<<7 | 0x01, + 35025 - 19968: jis0212<<14 | 0x3B<<7 | 0x29, + 35026 - 19968: jis0212<<14 | 0x3B<<7 | 0x2A, + 35027 - 19968: jis0212<<14 | 0x3B<<7 | 0x2B, + 35028 - 19968: jis0208<<14 | 0x49<<7 | 0x42, + 35029 - 19968: jis0208<<14 | 0x2C<<7 | 0x14, + 35032 - 19968: jis0208<<14 | 0x49<<7 | 0x43, + 35033 - 19968: jis0208<<14 | 0x49<<7 | 0x44, + 35035 - 19968: jis0212<<14 | 0x3B<<7 | 0x2C, + 35036 - 19968: jis0208<<14 | 0x29<<7 | 0x43, + 35037 - 19968: jis0208<<14 | 0x49<<7 | 0x45, + 35038 - 19968: jis0212<<14 | 0x3B<<7 | 0x2D, + 35039 - 19968: jis0208<<14 | 0x19<<7 | 0x1F, + 35041 - 19968: jis0208<<14 | 0x2D<<7 | 0x02, + 35047 - 19968: jis0212<<14 | 0x3B<<7 | 0x2E, + 35048 - 19968: jis0208<<14 | 0x49<<7 | 0x4A, + 35055 - 19968: jis0212<<14 | 0x3B<<7 | 0x2F, + 35056 - 19968: jis0212<<14 | 0x3B<<7 | 0x30, + 35057 - 19968: jis0212<<14 | 0x3B<<7 | 0x31, + 35058 - 19968: jis0208<<14 | 0x49<<7 | 0x4B, + 35059 - 19968: jis0208<<14 | 0x1D<<7 | 0x37, + 35060 - 19968: jis0208<<14 | 0x49<<7 | 0x49, + 35061 - 19968: jis0208<<14 | 0x5A<<7 | 0x45, + 35063 - 19968: jis0212<<14 | 0x3B<<7 | 0x33, + 35064 - 19968: jis0208<<14 | 0x2C<<7 | 0x46, + 35065 - 19968: jis0208<<14 | 0x49<<7 | 0x46, + 35068 - 19968: jis0208<<14 | 0x49<<7 | 0x48, + 35069 - 19968: jis0208<<14 | 0x1F<<7 | 0x1C, + 35070 - 19968: jis0208<<14 | 0x1E<<7 | 0x5D, + 35073 - 19968: jis0212<<14 | 0x3B<<7 | 0x34, + 35074 - 19968: jis0208<<14 | 0x49<<7 | 0x47, + 35076 - 19968: jis0208<<14 | 0x49<<7 | 0x4C, + 35078 - 19968: jis0212<<14 | 0x3B<<7 | 0x35, + 35079 - 19968: jis0208<<14 | 0x29<<7 | 0x02, + 35082 - 19968: jis0208<<14 | 0x49<<7 | 0x4E, + 35084 - 19968: jis0208<<14 | 0x49<<7 | 0x4D, + 35085 - 19968: jis0212<<14 | 0x3B<<7 | 0x36, + 35086 - 19968: jis0212<<14 | 0x3B<<7 | 0x37, + 35087 - 19968: jis0212<<14 | 0x3B<<7 | 0x38, + 35088 - 19968: jis0208<<14 | 0x12<<7 | 0x4B, + 35090 - 19968: jis0208<<14 | 0x2A<<7 | 0x0A, + 35091 - 19968: jis0208<<14 | 0x49<<7 | 0x4F, + 35093 - 19968: jis0212<<14 | 0x3B<<7 | 0x39, + 35094 - 19968: jis0212<<14 | 0x3B<<7 | 0x3A, + 35096 - 19968: jis0212<<14 | 0x3B<<7 | 0x3B, + 35097 - 19968: jis0212<<14 | 0x3B<<7 | 0x3C, + 35098 - 19968: jis0212<<14 | 0x3B<<7 | 0x3D, + 35100 - 19968: jis0208<<14 | 0x58<<7 | 0x01, + 35101 - 19968: jis0208<<14 | 0x49<<7 | 0x5B, + 35102 - 19968: jis0208<<14 | 0x49<<7 | 0x51, + 35104 - 19968: jis0212<<14 | 0x3B<<7 | 0x3F, + 35109 - 19968: jis0208<<14 | 0x49<<7 | 0x52, + 35110 - 19968: jis0212<<14 | 0x3B<<7 | 0x40, + 35111 - 19968: jis0212<<14 | 0x3B<<7 | 0x41, + 35112 - 19968: jis0212<<14 | 0x3B<<7 | 0x42, + 35114 - 19968: jis0208<<14 | 0x49<<7 | 0x53, + 35115 - 19968: jis0208<<14 | 0x49<<7 | 0x54, + 35120 - 19968: jis0212<<14 | 0x3B<<7 | 0x43, + 35121 - 19968: jis0212<<14 | 0x3B<<7 | 0x44, + 35122 - 19968: jis0212<<14 | 0x3B<<7 | 0x45, + 35125 - 19968: jis0212<<14 | 0x3B<<7 | 0x46, + 35126 - 19968: jis0208<<14 | 0x49<<7 | 0x58, + 35128 - 19968: jis0208<<14 | 0x49<<7 | 0x59, + 35129 - 19968: jis0212<<14 | 0x3B<<7 | 0x47, + 35130 - 19968: jis0212<<14 | 0x3B<<7 | 0x48, + 35131 - 19968: jis0208<<14 | 0x49<<7 | 0x57, + 35134 - 19968: jis0212<<14 | 0x3B<<7 | 0x49, + 35136 - 19968: jis0212<<14 | 0x3B<<7 | 0x4A, + 35137 - 19968: jis0208<<14 | 0x49<<7 | 0x55, + 35138 - 19968: jis0212<<14 | 0x3B<<7 | 0x4B, + 35139 - 19968: jis0208<<14 | 0x49<<7 | 0x50, + 35140 - 19968: jis0208<<14 | 0x49<<7 | 0x56, + 35141 - 19968: jis0212<<14 | 0x3B<<7 | 0x4C, + 35142 - 19968: jis0212<<14 | 0x3B<<7 | 0x4D, + 35145 - 19968: jis0212<<14 | 0x3B<<7 | 0x4E, + 35148 - 19968: jis0208<<14 | 0x49<<7 | 0x5A, + 35149 - 19968: jis0208<<14 | 0x4F<<7 | 0x16, + 35151 - 19968: jis0212<<14 | 0x3B<<7 | 0x4F, + 35154 - 19968: jis0212<<14 | 0x3B<<7 | 0x50, + 35158 - 19968: jis0208<<14 | 0x11<<7 | 0x07, + 35159 - 19968: jis0212<<14 | 0x3B<<7 | 0x51, + 35162 - 19968: jis0212<<14 | 0x3B<<7 | 0x52, + 35163 - 19968: jis0212<<14 | 0x3B<<7 | 0x53, + 35164 - 19968: jis0212<<14 | 0x3B<<7 | 0x54, + 35166 - 19968: jis0208<<14 | 0x49<<7 | 0x5D, + 35167 - 19968: jis0208<<14 | 0x15<<7 | 0x3E, + 35168 - 19968: jis0208<<14 | 0x49<<7 | 0x5C, + 35169 - 19968: jis0212<<14 | 0x3B<<7 | 0x55, + 35170 - 19968: jis0212<<14 | 0x3B<<7 | 0x56, + 35171 - 19968: jis0212<<14 | 0x3B<<7 | 0x57, + 35172 - 19968: jis0208<<14 | 0x4A<<7 | 0x01, + 35174 - 19968: jis0208<<14 | 0x4A<<7 | 0x00, + 35178 - 19968: jis0208<<14 | 0x4A<<7 | 0x03, + 35179 - 19968: jis0212<<14 | 0x3B<<7 | 0x58, + 35181 - 19968: jis0208<<14 | 0x4A<<7 | 0x02, + 35182 - 19968: jis0212<<14 | 0x3B<<7 | 0x59, + 35183 - 19968: jis0208<<14 | 0x4A<<7 | 0x04, + 35184 - 19968: jis0212<<14 | 0x3B<<7 | 0x5A, + 35186 - 19968: jis0208<<14 | 0x1C<<7 | 0x10, + 35187 - 19968: jis0212<<14 | 0x3B<<7 | 0x5B, + 35188 - 19968: jis0208<<14 | 0x4A<<7 | 0x05, + 35189 - 19968: jis0212<<14 | 0x3B<<7 | 0x5C, + 35191 - 19968: jis0208<<14 | 0x4A<<7 | 0x06, + 35194 - 19968: jis0212<<14 | 0x3B<<7 | 0x5D, + 35195 - 19968: jis0212<<14 | 0x3C<<7 | 0x00, + 35196 - 19968: jis0212<<14 | 0x3C<<7 | 0x01, + 35197 - 19968: jis0212<<14 | 0x3C<<7 | 0x02, + 35198 - 19968: jis0208<<14 | 0x4A<<7 | 0x07, + 35199 - 19968: jis0208<<14 | 0x1F<<7 | 0x1D, + 35201 - 19968: jis0208<<14 | 0x2C<<7 | 0x36, + 35203 - 19968: jis0208<<14 | 0x4A<<7 | 0x08, + 35206 - 19968: jis0208<<14 | 0x29<<7 | 0x03, + 35207 - 19968: jis0208<<14 | 0x26<<7 | 0x25, + 35208 - 19968: jis0208<<14 | 0x4A<<7 | 0x09, + 35209 - 19968: jis0212<<14 | 0x3C<<7 | 0x03, + 35210 - 19968: jis0208<<14 | 0x4A<<7 | 0x0A, + 35211 - 19968: jis0208<<14 | 0x17<<7 | 0x0A, + 35213 - 19968: jis0212<<14 | 0x3C<<7 | 0x04, + 35215 - 19968: jis0208<<14 | 0x14<<7 | 0x0B, + 35216 - 19968: jis0212<<14 | 0x3C<<7 | 0x05, + 35219 - 19968: jis0208<<14 | 0x4A<<7 | 0x0B, + 35220 - 19968: jis0212<<14 | 0x3C<<7 | 0x06, + 35221 - 19968: jis0212<<14 | 0x3C<<7 | 0x07, + 35222 - 19968: jis0208<<14 | 0x1A<<7 | 0x4A, + 35223 - 19968: jis0208<<14 | 0x26<<7 | 0x20, + 35224 - 19968: jis0208<<14 | 0x4A<<7 | 0x0C, + 35226 - 19968: jis0208<<14 | 0x12<<7 | 0x2F, + 35227 - 19968: jis0212<<14 | 0x3C<<7 | 0x08, + 35228 - 19968: jis0212<<14 | 0x3C<<7 | 0x09, + 35231 - 19968: jis0212<<14 | 0x3C<<7 | 0x0A, + 35232 - 19968: jis0212<<14 | 0x3C<<7 | 0x0B, + 35233 - 19968: jis0208<<14 | 0x4A<<7 | 0x0D, + 35237 - 19968: jis0212<<14 | 0x3C<<7 | 0x0C, + 35238 - 19968: jis0208<<14 | 0x4A<<7 | 0x0F, + 35239 - 19968: jis0208<<14 | 0x2C<<7 | 0x56, + 35241 - 19968: jis0208<<14 | 0x4A<<7 | 0x0E, + 35242 - 19968: jis0208<<14 | 0x1E<<7 | 0x25, + 35244 - 19968: jis0208<<14 | 0x4A<<7 | 0x10, + 35247 - 19968: jis0208<<14 | 0x4A<<7 | 0x11, + 35248 - 19968: jis0212<<14 | 0x3C<<7 | 0x0D, + 35250 - 19968: jis0208<<14 | 0x4A<<7 | 0x12, + 35251 - 19968: jis0208<<14 | 0x13<<7 | 0x30, + 35252 - 19968: jis0212<<14 | 0x3C<<7 | 0x0E, + 35253 - 19968: jis0212<<14 | 0x3C<<7 | 0x0F, + 35254 - 19968: jis0212<<14 | 0x3C<<7 | 0x10, + 35255 - 19968: jis0212<<14 | 0x3C<<7 | 0x11, + 35258 - 19968: jis0208<<14 | 0x4A<<7 | 0x13, + 35260 - 19968: jis0212<<14 | 0x3C<<7 | 0x12, + 35261 - 19968: jis0208<<14 | 0x4A<<7 | 0x14, + 35263 - 19968: jis0208<<14 | 0x4A<<7 | 0x15, + 35264 - 19968: jis0208<<14 | 0x4A<<7 | 0x16, + 35282 - 19968: jis0208<<14 | 0x12<<7 | 0x30, + 35284 - 19968: jis0212<<14 | 0x3C<<7 | 0x13, + 35285 - 19968: jis0212<<14 | 0x3C<<7 | 0x14, + 35286 - 19968: jis0212<<14 | 0x3C<<7 | 0x15, + 35287 - 19968: jis0212<<14 | 0x3C<<7 | 0x16, + 35288 - 19968: jis0212<<14 | 0x3C<<7 | 0x17, + 35290 - 19968: jis0208<<14 | 0x4A<<7 | 0x17, + 35292 - 19968: jis0208<<14 | 0x4A<<7 | 0x18, + 35293 - 19968: jis0208<<14 | 0x4A<<7 | 0x19, + 35299 - 19968: jis0208<<14 | 0x11<<7 | 0x51, + 35301 - 19968: jis0212<<14 | 0x3C<<7 | 0x18, + 35302 - 19968: jis0208<<14 | 0x1E<<7 | 0x07, + 35303 - 19968: jis0208<<14 | 0x4A<<7 | 0x1A, + 35305 - 19968: jis0212<<14 | 0x3C<<7 | 0x19, + 35307 - 19968: jis0212<<14 | 0x3C<<7 | 0x1A, + 35309 - 19968: jis0212<<14 | 0x3C<<7 | 0x1B, + 35313 - 19968: jis0212<<14 | 0x3C<<7 | 0x1C, + 35315 - 19968: jis0212<<14 | 0x3C<<7 | 0x1D, + 35316 - 19968: jis0208<<14 | 0x4A<<7 | 0x1B, + 35318 - 19968: jis0212<<14 | 0x3C<<7 | 0x1E, + 35320 - 19968: jis0208<<14 | 0x4A<<7 | 0x1C, + 35321 - 19968: jis0212<<14 | 0x3C<<7 | 0x1F, + 35325 - 19968: jis0212<<14 | 0x3C<<7 | 0x20, + 35327 - 19968: jis0212<<14 | 0x3C<<7 | 0x21, + 35328 - 19968: jis0208<<14 | 0x17<<7 | 0x1F, + 35330 - 19968: jis0208<<14 | 0x23<<7 | 0x5A, + 35331 - 19968: jis0208<<14 | 0x4A<<7 | 0x1D, + 35332 - 19968: jis0212<<14 | 0x3C<<7 | 0x22, + 35333 - 19968: jis0212<<14 | 0x3C<<7 | 0x23, + 35335 - 19968: jis0212<<14 | 0x3C<<7 | 0x24, + 35336 - 19968: jis0208<<14 | 0x16<<7 | 0x36, + 35338 - 19968: jis0208<<14 | 0x1E<<7 | 0x35, + 35340 - 19968: jis0208<<14 | 0x4A<<7 | 0x20, + 35342 - 19968: jis0208<<14 | 0x25<<7 | 0x03, + 35343 - 19968: jis0212<<14 | 0x3C<<7 | 0x25, + 35344 - 19968: jis0208<<14 | 0x4A<<7 | 0x1F, + 35345 - 19968: jis0212<<14 | 0x3C<<7 | 0x26, + 35346 - 19968: jis0208<<14 | 0x5A<<7 | 0x46, + 35347 - 19968: jis0208<<14 | 0x16<<7 | 0x10, + 35348 - 19968: jis0212<<14 | 0x3C<<7 | 0x28, + 35349 - 19968: jis0212<<14 | 0x3C<<7 | 0x29, + 35350 - 19968: jis0208<<14 | 0x4A<<7 | 0x1E, + 35351 - 19968: jis0208<<14 | 0x21<<7 | 0x56, + 35352 - 19968: jis0208<<14 | 0x14<<7 | 0x0C, + 35355 - 19968: jis0208<<14 | 0x4A<<7 | 0x21, + 35357 - 19968: jis0208<<14 | 0x4A<<7 | 0x22, + 35358 - 19968: jis0212<<14 | 0x3C<<7 | 0x2A, + 35359 - 19968: jis0208<<14 | 0x1D<<7 | 0x38, + 35360 - 19968: jis0212<<14 | 0x3C<<7 | 0x2B, + 35362 - 19968: jis0212<<14 | 0x3C<<7 | 0x2C, + 35363 - 19968: jis0208<<14 | 0x16<<7 | 0x4C, + 35364 - 19968: jis0212<<14 | 0x3C<<7 | 0x2D, + 35365 - 19968: jis0208<<14 | 0x4A<<7 | 0x23, + 35366 - 19968: jis0212<<14 | 0x3C<<7 | 0x2E, + 35370 - 19968: jis0208<<14 | 0x2A<<7 | 0x0B, + 35371 - 19968: jis0212<<14 | 0x3C<<7 | 0x2F, + 35372 - 19968: jis0212<<14 | 0x3C<<7 | 0x30, + 35373 - 19968: jis0208<<14 | 0x1F<<7 | 0x3E, + 35375 - 19968: jis0212<<14 | 0x3C<<7 | 0x31, + 35377 - 19968: jis0208<<14 | 0x14<<7 | 0x55, + 35379 - 19968: jis0208<<14 | 0x2B<<7 | 0x54, + 35380 - 19968: jis0208<<14 | 0x20<<7 | 0x29, + 35381 - 19968: jis0212<<14 | 0x3C<<7 | 0x32, + 35382 - 19968: jis0208<<14 | 0x4A<<7 | 0x24, + 35383 - 19968: jis0208<<14 | 0x5A<<7 | 0x47, + 35386 - 19968: jis0208<<14 | 0x1E<<7 | 0x26, + 35387 - 19968: jis0208<<14 | 0x22<<7 | 0x4F, + 35388 - 19968: jis0208<<14 | 0x1D<<7 | 0x39, + 35389 - 19968: jis0212<<14 | 0x3C<<7 | 0x34, + 35390 - 19968: jis0212<<14 | 0x3C<<7 | 0x35, + 35392 - 19968: jis0212<<14 | 0x3C<<7 | 0x36, + 35393 - 19968: jis0208<<14 | 0x4A<<7 | 0x25, + 35395 - 19968: jis0212<<14 | 0x3C<<7 | 0x37, + 35397 - 19968: jis0212<<14 | 0x3C<<7 | 0x38, + 35398 - 19968: jis0208<<14 | 0x4A<<7 | 0x28, + 35399 - 19968: jis0212<<14 | 0x3C<<7 | 0x39, + 35400 - 19968: jis0208<<14 | 0x4A<<7 | 0x29, + 35401 - 19968: jis0212<<14 | 0x3C<<7 | 0x3A, + 35405 - 19968: jis0212<<14 | 0x3C<<7 | 0x3B, + 35406 - 19968: jis0212<<14 | 0x3C<<7 | 0x3C, + 35408 - 19968: jis0208<<14 | 0x19<<7 | 0x1D, + 35409 - 19968: jis0208<<14 | 0x21<<7 | 0x21, + 35410 - 19968: jis0208<<14 | 0x4A<<7 | 0x27, + 35411 - 19968: jis0212<<14 | 0x3C<<7 | 0x3D, + 35412 - 19968: jis0208<<14 | 0x1D<<7 | 0x3A, + 35413 - 19968: jis0208<<14 | 0x28<<7 | 0x1D, + 35414 - 19968: jis0212<<14 | 0x3C<<7 | 0x3E, + 35415 - 19968: jis0212<<14 | 0x3C<<7 | 0x3F, + 35416 - 19968: jis0212<<14 | 0x3C<<7 | 0x40, + 35419 - 19968: jis0208<<14 | 0x4A<<7 | 0x26, + 35420 - 19968: jis0212<<14 | 0x3C<<7 | 0x41, + 35421 - 19968: jis0212<<14 | 0x3C<<7 | 0x42, + 35422 - 19968: jis0208<<14 | 0x1A<<7 | 0x4B, + 35424 - 19968: jis0208<<14 | 0x10<<7 | 0x32, + 35425 - 19968: jis0212<<14 | 0x3C<<7 | 0x43, + 35426 - 19968: jis0208<<14 | 0x4A<<7 | 0x2D, + 35427 - 19968: jis0208<<14 | 0x16<<7 | 0x37, + 35429 - 19968: jis0212<<14 | 0x3C<<7 | 0x44, + 35430 - 19968: jis0208<<14 | 0x1A<<7 | 0x4D, + 35431 - 19968: jis0212<<14 | 0x3C<<7 | 0x45, + 35433 - 19968: jis0208<<14 | 0x1A<<7 | 0x4C, + 35435 - 19968: jis0208<<14 | 0x2E<<7 | 0x2C, + 35436 - 19968: jis0208<<14 | 0x4A<<7 | 0x2C, + 35437 - 19968: jis0208<<14 | 0x4A<<7 | 0x2B, + 35438 - 19968: jis0208<<14 | 0x20<<7 | 0x06, + 35440 - 19968: jis0208<<14 | 0x14<<7 | 0x2C, + 35441 - 19968: jis0208<<14 | 0x2E<<7 | 0x22, + 35442 - 19968: jis0208<<14 | 0x12<<7 | 0x19, + 35443 - 19968: jis0208<<14 | 0x1D<<7 | 0x3B, + 35445 - 19968: jis0212<<14 | 0x3C<<7 | 0x46, + 35446 - 19968: jis0212<<14 | 0x3C<<7 | 0x47, + 35447 - 19968: jis0212<<14 | 0x3C<<7 | 0x48, + 35449 - 19968: jis0208<<14 | 0x5A<<7 | 0x48, + 35450 - 19968: jis0212<<14 | 0x3C<<7 | 0x4A, + 35451 - 19968: jis0212<<14 | 0x3C<<7 | 0x4B, + 35452 - 19968: jis0208<<14 | 0x4A<<7 | 0x2A, + 35454 - 19968: jis0212<<14 | 0x3C<<7 | 0x4C, + 35455 - 19968: jis0212<<14 | 0x3C<<7 | 0x4D, + 35456 - 19968: jis0212<<14 | 0x3C<<7 | 0x4E, + 35458 - 19968: jis0208<<14 | 0x4A<<7 | 0x2F, + 35459 - 19968: jis0212<<14 | 0x3C<<7 | 0x4F, + 35460 - 19968: jis0208<<14 | 0x4A<<7 | 0x30, + 35461 - 19968: jis0208<<14 | 0x4A<<7 | 0x2E, + 35462 - 19968: jis0212<<14 | 0x3C<<7 | 0x50, + 35463 - 19968: jis0208<<14 | 0x17<<7 | 0x37, + 35465 - 19968: jis0208<<14 | 0x2C<<7 | 0x1F, + 35467 - 19968: jis0212<<14 | 0x3C<<7 | 0x51, + 35468 - 19968: jis0208<<14 | 0x1A<<7 | 0x4E, + 35469 - 19968: jis0208<<14 | 0x26<<7 | 0x06, + 35471 - 19968: jis0212<<14 | 0x3C<<7 | 0x52, + 35472 - 19968: jis0212<<14 | 0x3C<<7 | 0x53, + 35473 - 19968: jis0208<<14 | 0x4A<<7 | 0x33, + 35474 - 19968: jis0212<<14 | 0x3C<<7 | 0x54, + 35475 - 19968: jis0208<<14 | 0x1F<<7 | 0x1F, + 35477 - 19968: jis0208<<14 | 0x22<<7 | 0x21, + 35478 - 19968: jis0212<<14 | 0x3C<<7 | 0x55, + 35479 - 19968: jis0212<<14 | 0x3C<<7 | 0x56, + 35480 - 19968: jis0208<<14 | 0x2C<<7 | 0x15, + 35481 - 19968: jis0212<<14 | 0x3C<<7 | 0x57, + 35482 - 19968: jis0208<<14 | 0x4A<<7 | 0x36, + 35486 - 19968: jis0208<<14 | 0x17<<7 | 0x4B, + 35487 - 19968: jis0212<<14 | 0x3C<<7 | 0x58, + 35488 - 19968: jis0208<<14 | 0x1F<<7 | 0x1E, + 35489 - 19968: jis0208<<14 | 0x4A<<7 | 0x32, + 35491 - 19968: jis0208<<14 | 0x4A<<7 | 0x37, + 35492 - 19968: jis0208<<14 | 0x17<<7 | 0x4C, + 35493 - 19968: jis0208<<14 | 0x4A<<7 | 0x34, + 35494 - 19968: jis0208<<14 | 0x4A<<7 | 0x35, + 35495 - 19968: jis0208<<14 | 0x5A<<7 | 0x49, + 35496 - 19968: jis0208<<14 | 0x4A<<7 | 0x31, + 35497 - 19968: jis0212<<14 | 0x3C<<7 | 0x5A, + 35500 - 19968: jis0208<<14 | 0x1F<<7 | 0x41, + 35501 - 19968: jis0208<<14 | 0x25<<7 | 0x28, + 35502 - 19968: jis0212<<14 | 0x3C<<7 | 0x5B, + 35503 - 19968: jis0212<<14 | 0x3C<<7 | 0x5C, + 35504 - 19968: jis0208<<14 | 0x22<<7 | 0x0E, + 35506 - 19968: jis0208<<14 | 0x11<<7 | 0x3C, + 35507 - 19968: jis0212<<14 | 0x3C<<7 | 0x5D, + 35510 - 19968: jis0212<<14 | 0x3D<<7 | 0x00, + 35511 - 19968: jis0212<<14 | 0x3D<<7 | 0x01, + 35513 - 19968: jis0208<<14 | 0x27<<7 | 0x4F, + 35515 - 19968: jis0212<<14 | 0x3D<<7 | 0x02, + 35516 - 19968: jis0208<<14 | 0x14<<7 | 0x22, + 35518 - 19968: jis0208<<14 | 0x5A<<7 | 0x4A, + 35519 - 19968: jis0208<<14 | 0x23<<7 | 0x13, + 35522 - 19968: jis0208<<14 | 0x4A<<7 | 0x3A, + 35523 - 19968: jis0212<<14 | 0x3D<<7 | 0x04, + 35524 - 19968: jis0208<<14 | 0x4A<<7 | 0x38, + 35526 - 19968: jis0212<<14 | 0x3D<<7 | 0x05, + 35527 - 19968: jis0208<<14 | 0x22<<7 | 0x2B, + 35528 - 19968: jis0212<<14 | 0x3D<<7 | 0x06, + 35529 - 19968: jis0212<<14 | 0x3D<<7 | 0x07, + 35530 - 19968: jis0212<<14 | 0x3D<<7 | 0x08, + 35531 - 19968: jis0208<<14 | 0x1F<<7 | 0x20, + 35532 - 19968: jis0208<<14 | 0x13<<7 | 0x31, + 35533 - 19968: jis0208<<14 | 0x4A<<7 | 0x39, + 35535 - 19968: jis0208<<14 | 0x1E<<7 | 0x3A, + 35537 - 19968: jis0212<<14 | 0x3D<<7 | 0x09, + 35538 - 19968: jis0208<<14 | 0x2D<<7 | 0x29, + 35539 - 19968: jis0212<<14 | 0x3D<<7 | 0x0A, + 35540 - 19968: jis0212<<14 | 0x3D<<7 | 0x0B, + 35541 - 19968: jis0212<<14 | 0x3D<<7 | 0x0C, + 35542 - 19968: jis0208<<14 | 0x2E<<7 | 0x1F, + 35543 - 19968: jis0212<<14 | 0x3D<<7 | 0x0D, + 35546 - 19968: jis0208<<14 | 0x4A<<7 | 0x3B, + 35547 - 19968: jis0208<<14 | 0x4A<<7 | 0x46, + 35548 - 19968: jis0208<<14 | 0x23<<7 | 0x14, + 35549 - 19968: jis0212<<14 | 0x3D<<7 | 0x0E, + 35550 - 19968: jis0208<<14 | 0x4A<<7 | 0x45, + 35551 - 19968: jis0208<<14 | 0x5A<<7 | 0x4B, + 35552 - 19968: jis0208<<14 | 0x4A<<7 | 0x42, + 35553 - 19968: jis0208<<14 | 0x4A<<7 | 0x4A, + 35554 - 19968: jis0208<<14 | 0x4A<<7 | 0x43, + 35556 - 19968: jis0208<<14 | 0x4A<<7 | 0x3F, + 35558 - 19968: jis0208<<14 | 0x23<<7 | 0x5B, + 35559 - 19968: jis0208<<14 | 0x4A<<7 | 0x3E, + 35563 - 19968: jis0208<<14 | 0x4A<<7 | 0x3C, + 35564 - 19968: jis0212<<14 | 0x3D<<7 | 0x10, + 35565 - 19968: jis0208<<14 | 0x2C<<7 | 0x00, + 35566 - 19968: jis0208<<14 | 0x1A<<7 | 0x4F, + 35568 - 19968: jis0212<<14 | 0x3D<<7 | 0x11, + 35569 - 19968: jis0208<<14 | 0x4A<<7 | 0x40, + 35571 - 19968: jis0208<<14 | 0x4A<<7 | 0x3D, + 35572 - 19968: jis0212<<14 | 0x3D<<7 | 0x12, + 35573 - 19968: jis0212<<14 | 0x3D<<7 | 0x13, + 35574 - 19968: jis0208<<14 | 0x5A<<7 | 0x4D, + 35575 - 19968: jis0208<<14 | 0x4A<<7 | 0x44, + 35576 - 19968: jis0208<<14 | 0x1C<<7 | 0x53, + 35578 - 19968: jis0208<<14 | 0x17<<7 | 0x20, + 35580 - 19968: jis0212<<14 | 0x3D<<7 | 0x15, + 35582 - 19968: jis0208<<14 | 0x21<<7 | 0x59, + 35583 - 19968: jis0212<<14 | 0x3D<<7 | 0x16, + 35584 - 19968: jis0208<<14 | 0x2A<<7 | 0x24, + 35585 - 19968: jis0208<<14 | 0x10<<7 | 0x39, + 35586 - 19968: jis0208<<14 | 0x0F<<7 | 0x41, + 35588 - 19968: jis0208<<14 | 0x25<<7 | 0x04, + 35589 - 19968: jis0212<<14 | 0x3D<<7 | 0x17, + 35590 - 19968: jis0212<<14 | 0x3D<<7 | 0x18, + 35591 - 19968: jis0208<<14 | 0x4A<<7 | 0x48, + 35594 - 19968: jis0212<<14 | 0x3D<<7 | 0x1E, + 35595 - 19968: jis0212<<14 | 0x3D<<7 | 0x19, + 35596 - 19968: jis0208<<14 | 0x4A<<7 | 0x47, + 35598 - 19968: jis0208<<14 | 0x25<<7 | 0x45, + 35600 - 19968: jis0208<<14 | 0x4A<<7 | 0x4C, + 35601 - 19968: jis0212<<14 | 0x3D<<7 | 0x1A, + 35604 - 19968: jis0208<<14 | 0x4A<<7 | 0x41, + 35606 - 19968: jis0208<<14 | 0x4A<<7 | 0x4B, + 35607 - 19968: jis0208<<14 | 0x4A<<7 | 0x4D, + 35609 - 19968: jis0208<<14 | 0x17<<7 | 0x0B, + 35610 - 19968: jis0208<<14 | 0x4A<<7 | 0x49, + 35611 - 19968: jis0208<<14 | 0x18<<7 | 0x35, + 35612 - 19968: jis0212<<14 | 0x3D<<7 | 0x1B, + 35613 - 19968: jis0208<<14 | 0x1B<<7 | 0x34, + 35614 - 19968: jis0212<<14 | 0x3D<<7 | 0x1C, + 35615 - 19968: jis0212<<14 | 0x3D<<7 | 0x1D, + 35616 - 19968: jis0208<<14 | 0x4A<<7 | 0x4E, + 35617 - 19968: jis0208<<14 | 0x2C<<7 | 0x37, + 35622 - 19968: jis0208<<14 | 0x4A<<7 | 0x51, + 35624 - 19968: jis0208<<14 | 0x4A<<7 | 0x54, + 35627 - 19968: jis0208<<14 | 0x4A<<7 | 0x52, + 35628 - 19968: jis0208<<14 | 0x28<<7 | 0x14, + 35629 - 19968: jis0212<<14 | 0x3D<<7 | 0x1F, + 35632 - 19968: jis0212<<14 | 0x3D<<7 | 0x20, + 35635 - 19968: jis0208<<14 | 0x4A<<7 | 0x4F, + 35639 - 19968: jis0212<<14 | 0x3D<<7 | 0x21, + 35641 - 19968: jis0208<<14 | 0x15<<7 | 0x3F, + 35644 - 19968: jis0212<<14 | 0x3D<<7 | 0x22, + 35646 - 19968: jis0208<<14 | 0x4A<<7 | 0x53, + 35649 - 19968: jis0208<<14 | 0x4A<<7 | 0x55, + 35650 - 19968: jis0212<<14 | 0x3D<<7 | 0x23, + 35651 - 19968: jis0212<<14 | 0x3D<<7 | 0x24, + 35652 - 19968: jis0212<<14 | 0x3D<<7 | 0x25, + 35653 - 19968: jis0212<<14 | 0x3D<<7 | 0x26, + 35654 - 19968: jis0212<<14 | 0x3D<<7 | 0x27, + 35656 - 19968: jis0212<<14 | 0x3D<<7 | 0x28, + 35657 - 19968: jis0208<<14 | 0x4A<<7 | 0x59, + 35660 - 19968: jis0208<<14 | 0x4A<<7 | 0x56, + 35661 - 19968: jis0212<<14 | 0x3D<<7 | 0x2D, + 35662 - 19968: jis0208<<14 | 0x4A<<7 | 0x58, + 35663 - 19968: jis0208<<14 | 0x4A<<7 | 0x57, + 35666 - 19968: jis0212<<14 | 0x3D<<7 | 0x29, + 35667 - 19968: jis0208<<14 | 0x5A<<7 | 0x4E, + 35668 - 19968: jis0212<<14 | 0x3D<<7 | 0x2B, + 35670 - 19968: jis0208<<14 | 0x4A<<7 | 0x5A, + 35672 - 19968: jis0208<<14 | 0x1B<<7 | 0x10, + 35673 - 19968: jis0212<<14 | 0x3D<<7 | 0x2C, + 35674 - 19968: jis0208<<14 | 0x4A<<7 | 0x5C, + 35675 - 19968: jis0208<<14 | 0x4A<<7 | 0x5B, + 35676 - 19968: jis0208<<14 | 0x28<<7 | 0x47, + 35678 - 19968: jis0212<<14 | 0x3D<<7 | 0x2E, + 35679 - 19968: jis0208<<14 | 0x4B<<7 | 0x00, + 35683 - 19968: jis0212<<14 | 0x3D<<7 | 0x2F, + 35686 - 19968: jis0208<<14 | 0x16<<7 | 0x38, + 35691 - 19968: jis0208<<14 | 0x4A<<7 | 0x5D, + 35692 - 19968: jis0208<<14 | 0x4B<<7 | 0x01, + 35693 - 19968: jis0212<<14 | 0x3D<<7 | 0x30, + 35695 - 19968: jis0208<<14 | 0x4B<<7 | 0x02, + 35696 - 19968: jis0208<<14 | 0x14<<7 | 0x23, + 35697 - 19968: jis0208<<14 | 0x45<<7 | 0x20, + 35698 - 19968: jis0208<<14 | 0x1D<<7 | 0x58, + 35700 - 19968: jis0208<<14 | 0x4B<<7 | 0x03, + 35702 - 19968: jis0212<<14 | 0x3D<<7 | 0x31, + 35703 - 19968: jis0208<<14 | 0x17<<7 | 0x4D, + 35704 - 19968: jis0212<<14 | 0x3D<<7 | 0x32, + 35705 - 19968: jis0212<<14 | 0x3D<<7 | 0x33, + 35708 - 19968: jis0212<<14 | 0x3D<<7 | 0x34, + 35709 - 19968: jis0208<<14 | 0x4B<<7 | 0x04, + 35710 - 19968: jis0212<<14 | 0x3D<<7 | 0x35, + 35711 - 19968: jis0208<<14 | 0x5A<<7 | 0x4F, + 35712 - 19968: jis0208<<14 | 0x4B<<7 | 0x05, + 35713 - 19968: jis0212<<14 | 0x3D<<7 | 0x36, + 35715 - 19968: jis0208<<14 | 0x1A<<7 | 0x1D, + 35716 - 19968: jis0212<<14 | 0x3D<<7 | 0x37, + 35717 - 19968: jis0212<<14 | 0x3D<<7 | 0x38, + 35722 - 19968: jis0208<<14 | 0x39<<7 | 0x2D, + 35723 - 19968: jis0212<<14 | 0x3D<<7 | 0x39, + 35724 - 19968: jis0208<<14 | 0x4B<<7 | 0x06, + 35725 - 19968: jis0212<<14 | 0x3D<<7 | 0x3A, + 35726 - 19968: jis0208<<14 | 0x4B<<7 | 0x07, + 35727 - 19968: jis0212<<14 | 0x3D<<7 | 0x3B, + 35728 - 19968: jis0208<<14 | 0x1C<<7 | 0x11, + 35730 - 19968: jis0208<<14 | 0x4B<<7 | 0x08, + 35731 - 19968: jis0208<<14 | 0x4B<<7 | 0x09, + 35732 - 19968: jis0212<<14 | 0x3D<<7 | 0x3C, + 35733 - 19968: jis0212<<14 | 0x3D<<7 | 0x3D, + 35734 - 19968: jis0208<<14 | 0x4B<<7 | 0x0A, + 35737 - 19968: jis0208<<14 | 0x4B<<7 | 0x0B, + 35738 - 19968: jis0208<<14 | 0x4B<<7 | 0x0C, + 35740 - 19968: jis0212<<14 | 0x3D<<7 | 0x3E, + 35742 - 19968: jis0212<<14 | 0x3D<<7 | 0x3F, + 35743 - 19968: jis0212<<14 | 0x3D<<7 | 0x40, + 35895 - 19968: jis0208<<14 | 0x22<<7 | 0x0A, + 35896 - 19968: jis0212<<14 | 0x3D<<7 | 0x41, + 35897 - 19968: jis0212<<14 | 0x3D<<7 | 0x42, + 35898 - 19968: jis0208<<14 | 0x4B<<7 | 0x0D, + 35901 - 19968: jis0212<<14 | 0x3D<<7 | 0x43, + 35902 - 19968: jis0212<<14 | 0x3D<<7 | 0x44, + 35903 - 19968: jis0208<<14 | 0x4B<<7 | 0x0F, + 35905 - 19968: jis0208<<14 | 0x4B<<7 | 0x0E, + 35909 - 19968: jis0212<<14 | 0x3D<<7 | 0x45, + 35910 - 19968: jis0208<<14 | 0x25<<7 | 0x05, + 35911 - 19968: jis0212<<14 | 0x3D<<7 | 0x46, + 35912 - 19968: jis0208<<14 | 0x4B<<7 | 0x10, + 35913 - 19968: jis0212<<14 | 0x3D<<7 | 0x47, + 35914 - 19968: jis0208<<14 | 0x2A<<7 | 0x0C, + 35915 - 19968: jis0212<<14 | 0x3D<<7 | 0x48, + 35916 - 19968: jis0208<<14 | 0x4B<<7 | 0x11, + 35918 - 19968: jis0208<<14 | 0x4B<<7 | 0x12, + 35919 - 19968: jis0212<<14 | 0x3D<<7 | 0x49, + 35920 - 19968: jis0208<<14 | 0x4B<<7 | 0x13, + 35921 - 19968: jis0212<<14 | 0x3D<<7 | 0x4A, + 35923 - 19968: jis0212<<14 | 0x3D<<7 | 0x4B, + 35924 - 19968: jis0212<<14 | 0x3D<<7 | 0x4C, + 35925 - 19968: jis0208<<14 | 0x4B<<7 | 0x14, + 35927 - 19968: jis0212<<14 | 0x3D<<7 | 0x4D, + 35928 - 19968: jis0212<<14 | 0x3D<<7 | 0x4E, + 35929 - 19968: jis0212<<14 | 0x3D<<7 | 0x51, + 35930 - 19968: jis0208<<14 | 0x25<<7 | 0x39, + 35931 - 19968: jis0212<<14 | 0x3D<<7 | 0x4F, + 35933 - 19968: jis0212<<14 | 0x3D<<7 | 0x50, + 35937 - 19968: jis0208<<14 | 0x1D<<7 | 0x3C, + 35938 - 19968: jis0208<<14 | 0x4B<<7 | 0x15, + 35939 - 19968: jis0212<<14 | 0x3D<<7 | 0x52, + 35940 - 19968: jis0212<<14 | 0x3D<<7 | 0x53, + 35942 - 19968: jis0212<<14 | 0x3D<<7 | 0x54, + 35944 - 19968: jis0212<<14 | 0x3D<<7 | 0x55, + 35945 - 19968: jis0212<<14 | 0x3D<<7 | 0x56, + 35946 - 19968: jis0208<<14 | 0x18<<7 | 0x4A, + 35947 - 19968: jis0208<<14 | 0x2F<<7 | 0x0D, + 35948 - 19968: jis0208<<14 | 0x4B<<7 | 0x16, + 35949 - 19968: jis0212<<14 | 0x3D<<7 | 0x57, + 35955 - 19968: jis0212<<14 | 0x3D<<7 | 0x58, + 35957 - 19968: jis0212<<14 | 0x3D<<7 | 0x59, + 35958 - 19968: jis0212<<14 | 0x3D<<7 | 0x5A, + 35960 - 19968: jis0208<<14 | 0x4B<<7 | 0x17, + 35961 - 19968: jis0208<<14 | 0x28<<7 | 0x1E, + 35962 - 19968: jis0208<<14 | 0x4B<<7 | 0x18, + 35963 - 19968: jis0212<<14 | 0x3D<<7 | 0x5B, + 35964 - 19968: jis0208<<14 | 0x4B<<7 | 0x20, + 35966 - 19968: jis0212<<14 | 0x3D<<7 | 0x5C, + 35970 - 19968: jis0208<<14 | 0x4B<<7 | 0x19, + 35973 - 19968: jis0208<<14 | 0x4B<<7 | 0x1B, + 35974 - 19968: jis0212<<14 | 0x3D<<7 | 0x5D, + 35975 - 19968: jis0212<<14 | 0x3E<<7 | 0x00, + 35977 - 19968: jis0208<<14 | 0x4B<<7 | 0x1A, + 35978 - 19968: jis0208<<14 | 0x4B<<7 | 0x1C, + 35979 - 19968: jis0212<<14 | 0x3E<<7 | 0x01, + 35980 - 19968: jis0208<<14 | 0x2A<<7 | 0x25, + 35981 - 19968: jis0208<<14 | 0x4B<<7 | 0x1D, + 35982 - 19968: jis0208<<14 | 0x4B<<7 | 0x1E, + 35984 - 19968: jis0212<<14 | 0x3E<<7 | 0x02, + 35986 - 19968: jis0212<<14 | 0x3E<<7 | 0x03, + 35987 - 19968: jis0212<<14 | 0x3E<<7 | 0x04, + 35988 - 19968: jis0208<<14 | 0x4B<<7 | 0x1F, + 35992 - 19968: jis0208<<14 | 0x4B<<7 | 0x21, + 35993 - 19968: jis0212<<14 | 0x3E<<7 | 0x05, + 35995 - 19968: jis0212<<14 | 0x3E<<7 | 0x06, + 35996 - 19968: jis0212<<14 | 0x3E<<7 | 0x07, + 35997 - 19968: jis0208<<14 | 0x12<<7 | 0x0C, + 35998 - 19968: jis0208<<14 | 0x23<<7 | 0x46, + 36000 - 19968: jis0208<<14 | 0x28<<7 | 0x48, + 36001 - 19968: jis0208<<14 | 0x19<<7 | 0x41, + 36002 - 19968: jis0208<<14 | 0x18<<7 | 0x36, + 36004 - 19968: jis0212<<14 | 0x3E<<7 | 0x08, + 36007 - 19968: jis0208<<14 | 0x28<<7 | 0x2E, + 36008 - 19968: jis0208<<14 | 0x11<<7 | 0x3E, + 36009 - 19968: jis0208<<14 | 0x27<<7 | 0x2D, + 36010 - 19968: jis0208<<14 | 0x4B<<7 | 0x24, + 36011 - 19968: jis0208<<14 | 0x13<<7 | 0x32, + 36012 - 19968: jis0208<<14 | 0x1F<<7 | 0x34, + 36013 - 19968: jis0208<<14 | 0x4B<<7 | 0x23, + 36014 - 19968: jis0208<<14 | 0x4B<<7 | 0x28, + 36015 - 19968: jis0208<<14 | 0x22<<7 | 0x58, + 36016 - 19968: jis0208<<14 | 0x2B<<7 | 0x42, + 36018 - 19968: jis0208<<14 | 0x4B<<7 | 0x26, + 36019 - 19968: jis0208<<14 | 0x4B<<7 | 0x27, + 36020 - 19968: jis0208<<14 | 0x14<<7 | 0x0D, + 36022 - 19968: jis0208<<14 | 0x4B<<7 | 0x29, + 36023 - 19968: jis0208<<14 | 0x26<<7 | 0x42, + 36024 - 19968: jis0208<<14 | 0x21<<7 | 0x3E, + 36025 - 19968: jis0212<<14 | 0x3E<<7 | 0x09, + 36026 - 19968: jis0212<<14 | 0x3E<<7 | 0x0A, + 36027 - 19968: jis0208<<14 | 0x27<<7 | 0x50, + 36028 - 19968: jis0208<<14 | 0x24<<7 | 0x1C, + 36029 - 19968: jis0208<<14 | 0x4B<<7 | 0x25, + 36031 - 19968: jis0208<<14 | 0x2A<<7 | 0x26, + 36032 - 19968: jis0208<<14 | 0x11<<7 | 0x4B, + 36033 - 19968: jis0208<<14 | 0x4B<<7 | 0x2B, + 36034 - 19968: jis0208<<14 | 0x2E<<7 | 0x07, + 36035 - 19968: jis0208<<14 | 0x23<<7 | 0x21, + 36036 - 19968: jis0208<<14 | 0x2E<<7 | 0x24, + 36037 - 19968: jis0212<<14 | 0x3E<<7 | 0x0B, + 36038 - 19968: jis0212<<14 | 0x3E<<7 | 0x0C, + 36039 - 19968: jis0208<<14 | 0x1A<<7 | 0x50, + 36040 - 19968: jis0208<<14 | 0x4B<<7 | 0x2A, + 36041 - 19968: jis0212<<14 | 0x3E<<7 | 0x0D, + 36042 - 19968: jis0208<<14 | 0x21<<7 | 0x10, + 36043 - 19968: jis0212<<14 | 0x3E<<7 | 0x0E, + 36045 - 19968: jis0208<<14 | 0x4B<<7 | 0x3B, + 36046 - 19968: jis0208<<14 | 0x20<<7 | 0x07, + 36047 - 19968: jis0212<<14 | 0x3E<<7 | 0x0F, + 36049 - 19968: jis0208<<14 | 0x25<<7 | 0x57, + 36051 - 19968: jis0208<<14 | 0x28<<7 | 0x2F, + 36053 - 19968: jis0212<<14 | 0x3E<<7 | 0x11, + 36054 - 19968: jis0212<<14 | 0x3E<<7 | 0x10, + 36057 - 19968: jis0212<<14 | 0x3E<<7 | 0x12, + 36058 - 19968: jis0208<<14 | 0x4B<<7 | 0x2E, + 36059 - 19968: jis0208<<14 | 0x1A<<7 | 0x1E, + 36060 - 19968: jis0208<<14 | 0x1A<<7 | 0x51, + 36061 - 19968: jis0212<<14 | 0x3E<<7 | 0x13, + 36062 - 19968: jis0208<<14 | 0x1D<<7 | 0x3D, + 36064 - 19968: jis0208<<14 | 0x26<<7 | 0x44, + 36065 - 19968: jis0212<<14 | 0x3E<<7 | 0x14, + 36066 - 19968: jis0208<<14 | 0x17<<7 | 0x0C, + 36067 - 19968: jis0208<<14 | 0x4B<<7 | 0x2D, + 36068 - 19968: jis0208<<14 | 0x4B<<7 | 0x2C, + 36070 - 19968: jis0208<<14 | 0x28<<7 | 0x49, + 36072 - 19968: jis0212<<14 | 0x3E<<7 | 0x15, + 36074 - 19968: jis0208<<14 | 0x1B<<7 | 0x20, + 36076 - 19968: jis0212<<14 | 0x3E<<7 | 0x16, + 36077 - 19968: jis0208<<14 | 0x24<<7 | 0x31, + 36079 - 19968: jis0212<<14 | 0x3E<<7 | 0x17, + 36080 - 19968: jis0208<<14 | 0x5A<<7 | 0x50, + 36082 - 19968: jis0212<<14 | 0x3E<<7 | 0x19, + 36084 - 19968: jis0208<<14 | 0x5A<<7 | 0x51, + 36085 - 19968: jis0212<<14 | 0x3E<<7 | 0x1A, + 36087 - 19968: jis0212<<14 | 0x3E<<7 | 0x1B, + 36088 - 19968: jis0212<<14 | 0x3E<<7 | 0x1C, + 36090 - 19968: jis0208<<14 | 0x4B<<7 | 0x30, + 36091 - 19968: jis0208<<14 | 0x4B<<7 | 0x31, + 36092 - 19968: jis0208<<14 | 0x18<<7 | 0x37, + 36093 - 19968: jis0208<<14 | 0x4B<<7 | 0x2F, + 36094 - 19968: jis0212<<14 | 0x3E<<7 | 0x1D, + 36095 - 19968: jis0212<<14 | 0x3E<<7 | 0x1E, + 36097 - 19968: jis0212<<14 | 0x3E<<7 | 0x1F, + 36099 - 19968: jis0212<<14 | 0x3E<<7 | 0x20, + 36100 - 19968: jis0208<<14 | 0x4B<<7 | 0x32, + 36101 - 19968: jis0208<<14 | 0x4B<<7 | 0x33, + 36103 - 19968: jis0208<<14 | 0x4B<<7 | 0x35, + 36104 - 19968: jis0208<<14 | 0x21<<7 | 0x02, + 36105 - 19968: jis0212<<14 | 0x3E<<7 | 0x21, + 36106 - 19968: jis0208<<14 | 0x4B<<7 | 0x34, + 36107 - 19968: jis0208<<14 | 0x13<<7 | 0x45, + 36109 - 19968: jis0208<<14 | 0x4B<<7 | 0x37, + 36111 - 19968: jis0208<<14 | 0x4B<<7 | 0x36, + 36112 - 19968: jis0208<<14 | 0x4B<<7 | 0x38, + 36114 - 19968: jis0208<<14 | 0x5A<<7 | 0x52, + 36115 - 19968: jis0208<<14 | 0x4B<<7 | 0x3A, + 36116 - 19968: jis0208<<14 | 0x4B<<7 | 0x3C, + 36118 - 19968: jis0208<<14 | 0x4B<<7 | 0x3D, + 36119 - 19968: jis0212<<14 | 0x3E<<7 | 0x23, + 36123 - 19968: jis0212<<14 | 0x3E<<7 | 0x24, + 36196 - 19968: jis0208<<14 | 0x1F<<7 | 0x35, + 36197 - 19968: jis0212<<14 | 0x3E<<7 | 0x25, + 36198 - 19968: jis0208<<14 | 0x1B<<7 | 0x2E, + 36199 - 19968: jis0208<<14 | 0x4B<<7 | 0x3E, + 36201 - 19968: jis0212<<14 | 0x3E<<7 | 0x26, + 36203 - 19968: jis0208<<14 | 0x12<<7 | 0x31, + 36204 - 19968: jis0212<<14 | 0x3E<<7 | 0x27, + 36205 - 19968: jis0208<<14 | 0x4B<<7 | 0x3F, + 36206 - 19968: jis0212<<14 | 0x3E<<7 | 0x28, + 36208 - 19968: jis0208<<14 | 0x20<<7 | 0x55, + 36209 - 19968: jis0208<<14 | 0x4B<<7 | 0x40, + 36211 - 19968: jis0208<<14 | 0x4B<<7 | 0x41, + 36212 - 19968: jis0208<<14 | 0x28<<7 | 0x4A, + 36214 - 19968: jis0208<<14 | 0x5A<<7 | 0x53, + 36215 - 19968: jis0208<<14 | 0x14<<7 | 0x0E, + 36223 - 19968: jis0212<<14 | 0x3E<<7 | 0x29, + 36225 - 19968: jis0208<<14 | 0x4B<<7 | 0x42, + 36226 - 19968: jis0212<<14 | 0x3E<<7 | 0x2A, + 36228 - 19968: jis0212<<14 | 0x3E<<7 | 0x2B, + 36229 - 19968: jis0208<<14 | 0x23<<7 | 0x15, + 36232 - 19968: jis0212<<14 | 0x3E<<7 | 0x2C, + 36234 - 19968: jis0208<<14 | 0x10<<7 | 0x3A, + 36237 - 19968: jis0212<<14 | 0x3E<<7 | 0x2D, + 36240 - 19968: jis0212<<14 | 0x3E<<7 | 0x2E, + 36241 - 19968: jis0212<<14 | 0x3E<<7 | 0x2F, + 36245 - 19968: jis0212<<14 | 0x3E<<7 | 0x30, + 36249 - 19968: jis0208<<14 | 0x4B<<7 | 0x43, + 36254 - 19968: jis0212<<14 | 0x3E<<7 | 0x31, + 36255 - 19968: jis0212<<14 | 0x3E<<7 | 0x32, + 36256 - 19968: jis0212<<14 | 0x3E<<7 | 0x33, + 36259 - 19968: jis0208<<14 | 0x1B<<7 | 0x50, + 36262 - 19968: jis0212<<14 | 0x3E<<7 | 0x34, + 36264 - 19968: jis0208<<14 | 0x1E<<7 | 0x55, + 36267 - 19968: jis0212<<14 | 0x3E<<7 | 0x35, + 36268 - 19968: jis0212<<14 | 0x3E<<7 | 0x36, + 36271 - 19968: jis0212<<14 | 0x3E<<7 | 0x37, + 36274 - 19968: jis0212<<14 | 0x3E<<7 | 0x38, + 36275 - 19968: jis0208<<14 | 0x21<<7 | 0x0C, + 36277 - 19968: jis0212<<14 | 0x3E<<7 | 0x39, + 36279 - 19968: jis0212<<14 | 0x3E<<7 | 0x3A, + 36281 - 19968: jis0212<<14 | 0x3E<<7 | 0x3B, + 36282 - 19968: jis0208<<14 | 0x4B<<7 | 0x46, + 36283 - 19968: jis0212<<14 | 0x3E<<7 | 0x3C, + 36284 - 19968: jis0212<<14 | 0x3E<<7 | 0x4E, + 36286 - 19968: jis0208<<14 | 0x4B<<7 | 0x45, + 36288 - 19968: jis0212<<14 | 0x3E<<7 | 0x3D, + 36290 - 19968: jis0208<<14 | 0x4B<<7 | 0x44, + 36293 - 19968: jis0212<<14 | 0x3E<<7 | 0x3E, + 36294 - 19968: jis0212<<14 | 0x3E<<7 | 0x3F, + 36295 - 19968: jis0212<<14 | 0x3E<<7 | 0x40, + 36296 - 19968: jis0212<<14 | 0x3E<<7 | 0x41, + 36298 - 19968: jis0212<<14 | 0x3E<<7 | 0x42, + 36299 - 19968: jis0208<<14 | 0x4B<<7 | 0x4C, + 36300 - 19968: jis0208<<14 | 0x4B<<7 | 0x4A, + 36302 - 19968: jis0212<<14 | 0x3E<<7 | 0x43, + 36303 - 19968: jis0208<<14 | 0x4B<<7 | 0x47, + 36305 - 19968: jis0212<<14 | 0x3E<<7 | 0x44, + 36308 - 19968: jis0212<<14 | 0x3E<<7 | 0x45, + 36309 - 19968: jis0212<<14 | 0x3E<<7 | 0x46, + 36310 - 19968: jis0208<<14 | 0x4B<<7 | 0x49, + 36311 - 19968: jis0212<<14 | 0x3E<<7 | 0x47, + 36313 - 19968: jis0212<<14 | 0x3E<<7 | 0x48, + 36314 - 19968: jis0208<<14 | 0x4B<<7 | 0x48, + 36315 - 19968: jis0208<<14 | 0x4B<<7 | 0x4B, + 36317 - 19968: jis0208<<14 | 0x14<<7 | 0x56, + 36319 - 19968: jis0208<<14 | 0x4B<<7 | 0x4F, + 36321 - 19968: jis0208<<14 | 0x1F<<7 | 0x36, + 36323 - 19968: jis0208<<14 | 0x4B<<7 | 0x50, + 36324 - 19968: jis0212<<14 | 0x3E<<7 | 0x49, + 36325 - 19968: jis0212<<14 | 0x3E<<7 | 0x4A, + 36327 - 19968: jis0212<<14 | 0x3E<<7 | 0x4B, + 36328 - 19968: jis0208<<14 | 0x17<<7 | 0x38, + 36330 - 19968: jis0208<<14 | 0x4B<<7 | 0x4D, + 36331 - 19968: jis0208<<14 | 0x4B<<7 | 0x4E, + 36332 - 19968: jis0212<<14 | 0x3E<<7 | 0x4C, + 36335 - 19968: jis0208<<14 | 0x2E<<7 | 0x08, + 36336 - 19968: jis0212<<14 | 0x3E<<7 | 0x4D, + 36337 - 19968: jis0212<<14 | 0x3E<<7 | 0x4F, + 36338 - 19968: jis0212<<14 | 0x3E<<7 | 0x50, + 36339 - 19968: jis0208<<14 | 0x23<<7 | 0x16, + 36340 - 19968: jis0212<<14 | 0x3E<<7 | 0x51, + 36341 - 19968: jis0208<<14 | 0x20<<7 | 0x08, + 36348 - 19968: jis0208<<14 | 0x4B<<7 | 0x51, + 36349 - 19968: jis0212<<14 | 0x3E<<7 | 0x52, + 36351 - 19968: jis0208<<14 | 0x4B<<7 | 0x54, + 36353 - 19968: jis0212<<14 | 0x3E<<7 | 0x53, + 36356 - 19968: jis0212<<14 | 0x3E<<7 | 0x54, + 36357 - 19968: jis0212<<14 | 0x3E<<7 | 0x55, + 36358 - 19968: jis0212<<14 | 0x3E<<7 | 0x56, + 36360 - 19968: jis0208<<14 | 0x4B<<7 | 0x52, + 36361 - 19968: jis0208<<14 | 0x4B<<7 | 0x53, + 36362 - 19968: jis0208<<14 | 0x2C<<7 | 0x38, + 36363 - 19968: jis0212<<14 | 0x3E<<7 | 0x57, + 36367 - 19968: jis0208<<14 | 0x25<<7 | 0x06, + 36368 - 19968: jis0208<<14 | 0x4B<<7 | 0x57, + 36369 - 19968: jis0212<<14 | 0x3E<<7 | 0x58, + 36372 - 19968: jis0212<<14 | 0x3E<<7 | 0x59, + 36374 - 19968: jis0212<<14 | 0x3E<<7 | 0x5A, + 36381 - 19968: jis0208<<14 | 0x4B<<7 | 0x55, + 36382 - 19968: jis0208<<14 | 0x4B<<7 | 0x56, + 36383 - 19968: jis0208<<14 | 0x4B<<7 | 0x58, + 36384 - 19968: jis0212<<14 | 0x3E<<7 | 0x5B, + 36385 - 19968: jis0212<<14 | 0x3E<<7 | 0x5C, + 36386 - 19968: jis0212<<14 | 0x3E<<7 | 0x5D, + 36387 - 19968: jis0212<<14 | 0x3F<<7 | 0x00, + 36390 - 19968: jis0212<<14 | 0x3F<<7 | 0x01, + 36391 - 19968: jis0212<<14 | 0x3F<<7 | 0x02, + 36394 - 19968: jis0208<<14 | 0x4C<<7 | 0x08, + 36400 - 19968: jis0208<<14 | 0x4B<<7 | 0x5B, + 36401 - 19968: jis0212<<14 | 0x3F<<7 | 0x03, + 36403 - 19968: jis0212<<14 | 0x3F<<7 | 0x04, + 36404 - 19968: jis0208<<14 | 0x4B<<7 | 0x5C, + 36405 - 19968: jis0208<<14 | 0x4B<<7 | 0x5A, + 36406 - 19968: jis0212<<14 | 0x3F<<7 | 0x05, + 36407 - 19968: jis0212<<14 | 0x3F<<7 | 0x06, + 36408 - 19968: jis0212<<14 | 0x3F<<7 | 0x07, + 36409 - 19968: jis0212<<14 | 0x3F<<7 | 0x08, + 36413 - 19968: jis0212<<14 | 0x3F<<7 | 0x09, + 36416 - 19968: jis0212<<14 | 0x3F<<7 | 0x0A, + 36417 - 19968: jis0212<<14 | 0x3F<<7 | 0x0B, + 36418 - 19968: jis0208<<14 | 0x4B<<7 | 0x59, + 36420 - 19968: jis0208<<14 | 0x23<<7 | 0x5C, + 36423 - 19968: jis0208<<14 | 0x4C<<7 | 0x00, + 36424 - 19968: jis0208<<14 | 0x4C<<7 | 0x04, + 36425 - 19968: jis0208<<14 | 0x4C<<7 | 0x01, + 36426 - 19968: jis0208<<14 | 0x4B<<7 | 0x5D, + 36427 - 19968: jis0212<<14 | 0x3F<<7 | 0x0C, + 36428 - 19968: jis0208<<14 | 0x4C<<7 | 0x02, + 36429 - 19968: jis0212<<14 | 0x3F<<7 | 0x0D, + 36430 - 19968: jis0212<<14 | 0x3F<<7 | 0x0E, + 36431 - 19968: jis0212<<14 | 0x3F<<7 | 0x0F, + 36432 - 19968: jis0208<<14 | 0x4C<<7 | 0x03, + 36436 - 19968: jis0212<<14 | 0x3F<<7 | 0x10, + 36437 - 19968: jis0208<<14 | 0x4C<<7 | 0x0A, + 36441 - 19968: jis0208<<14 | 0x4C<<7 | 0x05, + 36443 - 19968: jis0212<<14 | 0x3F<<7 | 0x11, + 36444 - 19968: jis0212<<14 | 0x3F<<7 | 0x12, + 36445 - 19968: jis0212<<14 | 0x3F<<7 | 0x13, + 36446 - 19968: jis0212<<14 | 0x3F<<7 | 0x14, + 36447 - 19968: jis0208<<14 | 0x1F<<7 | 0x37, + 36448 - 19968: jis0208<<14 | 0x4C<<7 | 0x07, + 36449 - 19968: jis0212<<14 | 0x3F<<7 | 0x15, + 36450 - 19968: jis0212<<14 | 0x3F<<7 | 0x16, + 36451 - 19968: jis0208<<14 | 0x4C<<7 | 0x09, + 36452 - 19968: jis0208<<14 | 0x4C<<7 | 0x06, + 36457 - 19968: jis0212<<14 | 0x3F<<7 | 0x17, + 36460 - 19968: jis0212<<14 | 0x3F<<7 | 0x18, + 36461 - 19968: jis0212<<14 | 0x3F<<7 | 0x19, + 36463 - 19968: jis0212<<14 | 0x3F<<7 | 0x1A, + 36464 - 19968: jis0212<<14 | 0x3F<<7 | 0x1B, + 36465 - 19968: jis0212<<14 | 0x3F<<7 | 0x1C, + 36466 - 19968: jis0208<<14 | 0x4C<<7 | 0x0C, + 36468 - 19968: jis0208<<14 | 0x1C<<7 | 0x12, + 36470 - 19968: jis0208<<14 | 0x4C<<7 | 0x0B, + 36473 - 19968: jis0212<<14 | 0x3F<<7 | 0x1D, + 36474 - 19968: jis0212<<14 | 0x3F<<7 | 0x1E, + 36475 - 19968: jis0212<<14 | 0x3F<<7 | 0x1F, + 36476 - 19968: jis0208<<14 | 0x4C<<7 | 0x0D, + 36481 - 19968: jis0208<<14 | 0x4C<<7 | 0x0E, + 36482 - 19968: jis0212<<14 | 0x3F<<7 | 0x20, + 36483 - 19968: jis0212<<14 | 0x3F<<7 | 0x21, + 36484 - 19968: jis0208<<14 | 0x4C<<7 | 0x11, + 36485 - 19968: jis0208<<14 | 0x4C<<7 | 0x10, + 36487 - 19968: jis0208<<14 | 0x4C<<7 | 0x0F, + 36489 - 19968: jis0212<<14 | 0x3F<<7 | 0x22, + 36490 - 19968: jis0208<<14 | 0x4C<<7 | 0x13, + 36491 - 19968: jis0208<<14 | 0x4C<<7 | 0x12, + 36493 - 19968: jis0208<<14 | 0x2B<<7 | 0x55, + 36496 - 19968: jis0212<<14 | 0x3F<<7 | 0x23, + 36497 - 19968: jis0208<<14 | 0x4C<<7 | 0x15, + 36498 - 19968: jis0212<<14 | 0x3F<<7 | 0x24, + 36499 - 19968: jis0208<<14 | 0x4C<<7 | 0x14, + 36500 - 19968: jis0208<<14 | 0x4C<<7 | 0x16, + 36501 - 19968: jis0212<<14 | 0x3F<<7 | 0x25, + 36505 - 19968: jis0208<<14 | 0x4C<<7 | 0x17, + 36506 - 19968: jis0212<<14 | 0x3F<<7 | 0x26, + 36507 - 19968: jis0212<<14 | 0x3F<<7 | 0x27, + 36509 - 19968: jis0212<<14 | 0x3F<<7 | 0x28, + 36510 - 19968: jis0212<<14 | 0x3F<<7 | 0x29, + 36513 - 19968: jis0208<<14 | 0x4C<<7 | 0x19, + 36514 - 19968: jis0212<<14 | 0x3F<<7 | 0x2A, + 36519 - 19968: jis0212<<14 | 0x3F<<7 | 0x2B, + 36521 - 19968: jis0212<<14 | 0x3F<<7 | 0x2C, + 36522 - 19968: jis0208<<14 | 0x4C<<7 | 0x18, + 36523 - 19968: jis0208<<14 | 0x1E<<7 | 0x27, + 36524 - 19968: jis0208<<14 | 0x4C<<7 | 0x1A, + 36525 - 19968: jis0212<<14 | 0x3F<<7 | 0x2D, + 36526 - 19968: jis0212<<14 | 0x3F<<7 | 0x2E, + 36527 - 19968: jis0208<<14 | 0x15<<7 | 0x4C, + 36528 - 19968: jis0208<<14 | 0x4C<<7 | 0x1B, + 36529 - 19968: jis0208<<14 | 0x4C<<7 | 0x1D, + 36531 - 19968: jis0212<<14 | 0x3F<<7 | 0x2F, + 36533 - 19968: jis0212<<14 | 0x3F<<7 | 0x30, + 36538 - 19968: jis0212<<14 | 0x3F<<7 | 0x31, + 36539 - 19968: jis0212<<14 | 0x3F<<7 | 0x32, + 36542 - 19968: jis0208<<14 | 0x4C<<7 | 0x1E, + 36544 - 19968: jis0212<<14 | 0x3F<<7 | 0x33, + 36545 - 19968: jis0212<<14 | 0x3F<<7 | 0x34, + 36547 - 19968: jis0212<<14 | 0x3F<<7 | 0x35, + 36548 - 19968: jis0212<<14 | 0x3F<<7 | 0x36, + 36549 - 19968: jis0208<<14 | 0x4C<<7 | 0x1F, + 36550 - 19968: jis0208<<14 | 0x4C<<7 | 0x1C, + 36551 - 19968: jis0212<<14 | 0x3F<<7 | 0x37, + 36552 - 19968: jis0208<<14 | 0x4C<<7 | 0x20, + 36554 - 19968: jis0208<<14 | 0x1B<<7 | 0x35, + 36555 - 19968: jis0208<<14 | 0x4C<<7 | 0x21, + 36556 - 19968: jis0208<<14 | 0x14<<7 | 0x0F, + 36557 - 19968: jis0208<<14 | 0x16<<7 | 0x12, + 36559 - 19968: jis0208<<14 | 0x5A<<7 | 0x55, + 36561 - 19968: jis0212<<14 | 0x3F<<7 | 0x39, + 36562 - 19968: jis0208<<14 | 0x17<<7 | 0x0D, + 36564 - 19968: jis0212<<14 | 0x3F<<7 | 0x3A, + 36571 - 19968: jis0208<<14 | 0x4C<<7 | 0x22, + 36572 - 19968: jis0212<<14 | 0x3F<<7 | 0x3B, + 36575 - 19968: jis0208<<14 | 0x25<<7 | 0x4F, + 36578 - 19968: jis0208<<14 | 0x24<<7 | 0x1D, + 36579 - 19968: jis0208<<14 | 0x4C<<7 | 0x23, + 36584 - 19968: jis0212<<14 | 0x3F<<7 | 0x3C, + 36587 - 19968: jis0208<<14 | 0x4C<<7 | 0x26, + 36589 - 19968: jis0212<<14 | 0x3F<<7 | 0x43, + 36590 - 19968: jis0212<<14 | 0x3F<<7 | 0x3D, + 36592 - 19968: jis0212<<14 | 0x3F<<7 | 0x3E, + 36593 - 19968: jis0212<<14 | 0x3F<<7 | 0x3F, + 36599 - 19968: jis0212<<14 | 0x3F<<7 | 0x40, + 36600 - 19968: jis0208<<14 | 0x1B<<7 | 0x13, + 36601 - 19968: jis0212<<14 | 0x3F<<7 | 0x41, + 36602 - 19968: jis0212<<14 | 0x3F<<7 | 0x42, + 36603 - 19968: jis0208<<14 | 0x4C<<7 | 0x25, + 36604 - 19968: jis0208<<14 | 0x4C<<7 | 0x24, + 36605 - 19968: jis0208<<14 | 0x16<<7 | 0x39, + 36606 - 19968: jis0208<<14 | 0x4C<<7 | 0x27, + 36608 - 19968: jis0212<<14 | 0x3F<<7 | 0x44, + 36610 - 19968: jis0212<<14 | 0x3F<<7 | 0x45, + 36611 - 19968: jis0208<<14 | 0x12<<7 | 0x32, + 36613 - 19968: jis0208<<14 | 0x4C<<7 | 0x29, + 36615 - 19968: jis0212<<14 | 0x3F<<7 | 0x46, + 36616 - 19968: jis0212<<14 | 0x3F<<7 | 0x47, + 36617 - 19968: jis0208<<14 | 0x19<<7 | 0x3B, + 36618 - 19968: jis0208<<14 | 0x4C<<7 | 0x28, + 36620 - 19968: jis0208<<14 | 0x4C<<7 | 0x31, + 36623 - 19968: jis0212<<14 | 0x3F<<7 | 0x48, + 36624 - 19968: jis0212<<14 | 0x3F<<7 | 0x49, + 36626 - 19968: jis0208<<14 | 0x4C<<7 | 0x2B, + 36627 - 19968: jis0208<<14 | 0x4C<<7 | 0x2D, + 36628 - 19968: jis0208<<14 | 0x29<<7 | 0x44, + 36629 - 19968: jis0208<<14 | 0x4C<<7 | 0x2A, + 36630 - 19968: jis0212<<14 | 0x3F<<7 | 0x4A, + 36631 - 19968: jis0212<<14 | 0x3F<<7 | 0x4B, + 36632 - 19968: jis0212<<14 | 0x3F<<7 | 0x4C, + 36633 - 19968: jis0208<<14 | 0x4C<<7 | 0x2C, + 36635 - 19968: jis0208<<14 | 0x4C<<7 | 0x30, + 36636 - 19968: jis0208<<14 | 0x4C<<7 | 0x2E, + 36637 - 19968: jis0208<<14 | 0x14<<7 | 0x10, + 36638 - 19968: jis0212<<14 | 0x3F<<7 | 0x4D, + 36639 - 19968: jis0208<<14 | 0x4C<<7 | 0x2F, + 36640 - 19968: jis0212<<14 | 0x3F<<7 | 0x4E, + 36641 - 19968: jis0212<<14 | 0x3F<<7 | 0x4F, + 36643 - 19968: jis0212<<14 | 0x3F<<7 | 0x50, + 36645 - 19968: jis0212<<14 | 0x3F<<7 | 0x51, + 36646 - 19968: jis0208<<14 | 0x4C<<7 | 0x32, + 36647 - 19968: jis0212<<14 | 0x3F<<7 | 0x52, + 36648 - 19968: jis0212<<14 | 0x3F<<7 | 0x53, + 36649 - 19968: jis0208<<14 | 0x26<<7 | 0x39, + 36650 - 19968: jis0208<<14 | 0x2D<<7 | 0x37, + 36652 - 19968: jis0212<<14 | 0x3F<<7 | 0x54, + 36653 - 19968: jis0212<<14 | 0x3F<<7 | 0x55, + 36654 - 19968: jis0212<<14 | 0x3F<<7 | 0x56, + 36655 - 19968: jis0208<<14 | 0x1C<<7 | 0x13, + 36659 - 19968: jis0208<<14 | 0x4C<<7 | 0x33, + 36660 - 19968: jis0212<<14 | 0x3F<<7 | 0x57, + 36661 - 19968: jis0212<<14 | 0x3F<<7 | 0x58, + 36662 - 19968: jis0212<<14 | 0x3F<<7 | 0x59, + 36663 - 19968: jis0212<<14 | 0x3F<<7 | 0x5A, + 36664 - 19968: jis0208<<14 | 0x2C<<7 | 0x01, + 36665 - 19968: jis0208<<14 | 0x4C<<7 | 0x35, + 36666 - 19968: jis0212<<14 | 0x3F<<7 | 0x5B, + 36667 - 19968: jis0208<<14 | 0x4C<<7 | 0x34, + 36670 - 19968: jis0208<<14 | 0x4C<<7 | 0x38, + 36671 - 19968: jis0208<<14 | 0x2C<<7 | 0x20, + 36672 - 19968: jis0212<<14 | 0x3F<<7 | 0x5C, + 36673 - 19968: jis0212<<14 | 0x3F<<7 | 0x5D, + 36674 - 19968: jis0208<<14 | 0x4C<<7 | 0x37, + 36675 - 19968: jis0212<<14 | 0x40<<7 | 0x00, + 36676 - 19968: jis0208<<14 | 0x12<<7 | 0x4C, + 36677 - 19968: jis0208<<14 | 0x4C<<7 | 0x36, + 36678 - 19968: jis0208<<14 | 0x4C<<7 | 0x3B, + 36679 - 19968: jis0212<<14 | 0x40<<7 | 0x01, + 36681 - 19968: jis0208<<14 | 0x4C<<7 | 0x3A, + 36684 - 19968: jis0208<<14 | 0x4C<<7 | 0x39, + 36685 - 19968: jis0208<<14 | 0x24<<7 | 0x11, + 36686 - 19968: jis0208<<14 | 0x4C<<7 | 0x3C, + 36687 - 19968: jis0212<<14 | 0x40<<7 | 0x02, + 36689 - 19968: jis0212<<14 | 0x40<<7 | 0x03, + 36690 - 19968: jis0212<<14 | 0x40<<7 | 0x04, + 36691 - 19968: jis0212<<14 | 0x40<<7 | 0x05, + 36692 - 19968: jis0212<<14 | 0x40<<7 | 0x06, + 36693 - 19968: jis0212<<14 | 0x40<<7 | 0x07, + 36695 - 19968: jis0208<<14 | 0x4C<<7 | 0x3D, + 36696 - 19968: jis0212<<14 | 0x40<<7 | 0x08, + 36700 - 19968: jis0208<<14 | 0x4C<<7 | 0x3E, + 36701 - 19968: jis0212<<14 | 0x40<<7 | 0x09, + 36702 - 19968: jis0212<<14 | 0x40<<7 | 0x0A, + 36703 - 19968: jis0208<<14 | 0x18<<7 | 0x4B, + 36705 - 19968: jis0208<<14 | 0x16<<7 | 0x04, + 36706 - 19968: jis0208<<14 | 0x4C<<7 | 0x3F, + 36707 - 19968: jis0208<<14 | 0x4C<<7 | 0x40, + 36708 - 19968: jis0208<<14 | 0x4C<<7 | 0x41, + 36709 - 19968: jis0212<<14 | 0x40<<7 | 0x0B, + 36763 - 19968: jis0208<<14 | 0x1E<<7 | 0x28, + 36764 - 19968: jis0208<<14 | 0x4C<<7 | 0x42, + 36765 - 19968: jis0212<<14 | 0x40<<7 | 0x0C, + 36766 - 19968: jis0208<<14 | 0x1B<<7 | 0x0C, + 36767 - 19968: jis0208<<14 | 0x4C<<7 | 0x43, + 36768 - 19968: jis0212<<14 | 0x40<<7 | 0x0D, + 36769 - 19968: jis0212<<14 | 0x40<<7 | 0x0E, + 36771 - 19968: jis0208<<14 | 0x4C<<7 | 0x44, + 36772 - 19968: jis0212<<14 | 0x40<<7 | 0x0F, + 36773 - 19968: jis0212<<14 | 0x40<<7 | 0x10, + 36774 - 19968: jis0212<<14 | 0x40<<7 | 0x11, + 36775 - 19968: jis0208<<14 | 0x31<<7 | 0x00, + 36776 - 19968: jis0208<<14 | 0x30<<7 | 0x5D, + 36781 - 19968: jis0208<<14 | 0x4C<<7 | 0x45, + 36782 - 19968: jis0208<<14 | 0x44<<7 | 0x4F, + 36783 - 19968: jis0208<<14 | 0x4C<<7 | 0x46, + 36784 - 19968: jis0208<<14 | 0x22<<7 | 0x03, + 36785 - 19968: jis0208<<14 | 0x1E<<7 | 0x0A, + 36786 - 19968: jis0208<<14 | 0x26<<7 | 0x1F, + 36789 - 19968: jis0212<<14 | 0x40<<7 | 0x12, + 36790 - 19968: jis0212<<14 | 0x40<<7 | 0x13, + 36791 - 19968: jis0208<<14 | 0x4C<<7 | 0x47, + 36792 - 19968: jis0212<<14 | 0x40<<7 | 0x14, + 36794 - 19968: jis0208<<14 | 0x29<<7 | 0x34, + 36795 - 19968: jis0208<<14 | 0x23<<7 | 0x33, + 36796 - 19968: jis0208<<14 | 0x18<<7 | 0x5D, + 36798 - 19968: jis0212<<14 | 0x40<<7 | 0x15, + 36799 - 19968: jis0208<<14 | 0x22<<7 | 0x08, + 36800 - 19968: jis0212<<14 | 0x40<<7 | 0x16, + 36801 - 19968: jis0212<<14 | 0x40<<7 | 0x17, + 36802 - 19968: jis0208<<14 | 0x10<<7 | 0x09, + 36804 - 19968: jis0208<<14 | 0x2A<<7 | 0x57, + 36805 - 19968: jis0208<<14 | 0x1E<<7 | 0x36, + 36806 - 19968: jis0212<<14 | 0x40<<7 | 0x18, + 36810 - 19968: jis0212<<14 | 0x40<<7 | 0x19, + 36811 - 19968: jis0212<<14 | 0x40<<7 | 0x1A, + 36813 - 19968: jis0212<<14 | 0x40<<7 | 0x1B, + 36814 - 19968: jis0208<<14 | 0x16<<7 | 0x3D, + 36816 - 19968: jis0212<<14 | 0x40<<7 | 0x1C, + 36817 - 19968: jis0208<<14 | 0x15<<7 | 0x40, + 36818 - 19968: jis0212<<14 | 0x40<<7 | 0x1D, + 36819 - 19968: jis0212<<14 | 0x40<<7 | 0x1E, + 36820 - 19968: jis0208<<14 | 0x29<<7 | 0x35, + 36821 - 19968: jis0212<<14 | 0x40<<7 | 0x1F, + 36826 - 19968: jis0208<<14 | 0x4C<<7 | 0x48, + 36832 - 19968: jis0212<<14 | 0x40<<7 | 0x20, + 36834 - 19968: jis0208<<14 | 0x4C<<7 | 0x4A, + 36835 - 19968: jis0212<<14 | 0x40<<7 | 0x21, + 36836 - 19968: jis0212<<14 | 0x40<<7 | 0x22, + 36837 - 19968: jis0208<<14 | 0x4C<<7 | 0x49, + 36838 - 19968: jis0208<<14 | 0x11<<7 | 0x3F, + 36840 - 19968: jis0212<<14 | 0x40<<7 | 0x23, + 36841 - 19968: jis0208<<14 | 0x25<<7 | 0x55, + 36842 - 19968: jis0208<<14 | 0x4C<<7 | 0x4B, + 36843 - 19968: jis0208<<14 | 0x26<<7 | 0x56, + 36845 - 19968: jis0208<<14 | 0x24<<7 | 0x12, + 36846 - 19968: jis0212<<14 | 0x40<<7 | 0x24, + 36847 - 19968: jis0208<<14 | 0x4C<<7 | 0x4C, + 36848 - 19968: jis0208<<14 | 0x1C<<7 | 0x31, + 36849 - 19968: jis0212<<14 | 0x40<<7 | 0x25, + 36852 - 19968: jis0208<<14 | 0x4C<<7 | 0x4E, + 36853 - 19968: jis0212<<14 | 0x40<<7 | 0x26, + 36854 - 19968: jis0212<<14 | 0x40<<7 | 0x27, + 36855 - 19968: jis0208<<14 | 0x2B<<7 | 0x21, + 36856 - 19968: jis0208<<14 | 0x4C<<7 | 0x5D, + 36857 - 19968: jis0208<<14 | 0x4C<<7 | 0x50, + 36858 - 19968: jis0208<<14 | 0x4C<<7 | 0x51, + 36859 - 19968: jis0212<<14 | 0x40<<7 | 0x28, + 36861 - 19968: jis0208<<14 | 0x23<<7 | 0x28, + 36862 - 19968: jis0212<<14 | 0x40<<7 | 0x29, + 36864 - 19968: jis0208<<14 | 0x21<<7 | 0x3F, + 36865 - 19968: jis0208<<14 | 0x20<<7 | 0x56, + 36866 - 19968: jis0212<<14 | 0x40<<7 | 0x2A, + 36867 - 19968: jis0208<<14 | 0x25<<7 | 0x07, + 36868 - 19968: jis0212<<14 | 0x40<<7 | 0x2B, + 36869 - 19968: jis0208<<14 | 0x4C<<7 | 0x4F, + 36870 - 19968: jis0208<<14 | 0x14<<7 | 0x34, + 36872 - 19968: jis0212<<14 | 0x40<<7 | 0x2C, + 36875 - 19968: jis0208<<14 | 0x4C<<7 | 0x58, + 36876 - 19968: jis0212<<14 | 0x40<<7 | 0x2D, + 36877 - 19968: jis0208<<14 | 0x4C<<7 | 0x55, + 36878 - 19968: jis0208<<14 | 0x4D<<7 | 0x04, + 36879 - 19968: jis0208<<14 | 0x25<<7 | 0x08, + 36880 - 19968: jis0208<<14 | 0x22<<7 | 0x3F, + 36881 - 19968: jis0208<<14 | 0x4C<<7 | 0x52, + 36883 - 19968: jis0208<<14 | 0x23<<7 | 0x5D, + 36884 - 19968: jis0208<<14 | 0x24<<7 | 0x32, + 36885 - 19968: jis0208<<14 | 0x4C<<7 | 0x53, + 36886 - 19968: jis0208<<14 | 0x4C<<7 | 0x57, + 36887 - 19968: jis0208<<14 | 0x1E<<7 | 0x3F, + 36888 - 19968: jis0212<<14 | 0x40<<7 | 0x2E, + 36889 - 19968: jis0208<<14 | 0x26<<7 | 0x46, + 36890 - 19968: jis0208<<14 | 0x23<<7 | 0x2B, + 36891 - 19968: jis0212<<14 | 0x40<<7 | 0x2F, + 36893 - 19968: jis0208<<14 | 0x1F<<7 | 0x21, + 36894 - 19968: jis0208<<14 | 0x4C<<7 | 0x56, + 36895 - 19968: jis0208<<14 | 0x21<<7 | 0x0D, + 36896 - 19968: jis0208<<14 | 0x21<<7 | 0x03, + 36897 - 19968: jis0208<<14 | 0x4C<<7 | 0x54, + 36898 - 19968: jis0208<<14 | 0x0F<<7 | 0x08, + 36899 - 19968: jis0208<<14 | 0x2E<<7 | 0x01, + 36903 - 19968: jis0208<<14 | 0x4C<<7 | 0x59, + 36904 - 19968: jis0212<<14 | 0x40<<7 | 0x30, + 36905 - 19968: jis0212<<14 | 0x40<<7 | 0x31, + 36906 - 19968: jis0212<<14 | 0x40<<7 | 0x33, + 36908 - 19968: jis0212<<14 | 0x40<<7 | 0x34, + 36909 - 19968: jis0212<<14 | 0x40<<7 | 0x35, + 36910 - 19968: jis0208<<14 | 0x21<<7 | 0x40, + 36911 - 19968: jis0212<<14 | 0x40<<7 | 0x32, + 36913 - 19968: jis0208<<14 | 0x1C<<7 | 0x14, + 36914 - 19968: jis0208<<14 | 0x1E<<7 | 0x29, + 36915 - 19968: jis0212<<14 | 0x40<<7 | 0x36, + 36916 - 19968: jis0212<<14 | 0x40<<7 | 0x37, + 36917 - 19968: jis0208<<14 | 0x4C<<7 | 0x5B, + 36918 - 19968: jis0208<<14 | 0x4C<<7 | 0x5A, + 36919 - 19968: jis0212<<14 | 0x40<<7 | 0x38, + 36920 - 19968: jis0208<<14 | 0x0F<<7 | 0x4E, + 36921 - 19968: jis0208<<14 | 0x4C<<7 | 0x5C, + 36924 - 19968: jis0208<<14 | 0x28<<7 | 0x0E, + 36926 - 19968: jis0208<<14 | 0x4D<<7 | 0x06, + 36927 - 19968: jis0212<<14 | 0x40<<7 | 0x39, + 36929 - 19968: jis0208<<14 | 0x25<<7 | 0x3A, + 36930 - 19968: jis0208<<14 | 0x1E<<7 | 0x4A, + 36931 - 19968: jis0212<<14 | 0x40<<7 | 0x3A, + 36932 - 19968: jis0212<<14 | 0x40<<7 | 0x3B, + 36933 - 19968: jis0208<<14 | 0x22<<7 | 0x38, + 36935 - 19968: jis0208<<14 | 0x15<<7 | 0x57, + 36937 - 19968: jis0208<<14 | 0x4D<<7 | 0x05, + 36938 - 19968: jis0208<<14 | 0x2C<<7 | 0x16, + 36939 - 19968: jis0208<<14 | 0x10<<7 | 0x1E, + 36940 - 19968: jis0212<<14 | 0x40<<7 | 0x3C, + 36941 - 19968: jis0208<<14 | 0x29<<7 | 0x36, + 36942 - 19968: jis0208<<14 | 0x11<<7 | 0x40, + 36943 - 19968: jis0208<<14 | 0x4D<<7 | 0x00, + 36944 - 19968: jis0208<<14 | 0x4D<<7 | 0x01, + 36945 - 19968: jis0208<<14 | 0x4D<<7 | 0x02, + 36946 - 19968: jis0208<<14 | 0x4D<<7 | 0x03, + 36947 - 19968: jis0208<<14 | 0x25<<7 | 0x1A, + 36948 - 19968: jis0208<<14 | 0x22<<7 | 0x02, + 36949 - 19968: jis0208<<14 | 0x0F<<7 | 0x42, + 36950 - 19968: jis0208<<14 | 0x4D<<7 | 0x07, + 36952 - 19968: jis0208<<14 | 0x4D<<7 | 0x08, + 36953 - 19968: jis0208<<14 | 0x53<<7 | 0x02, + 36955 - 19968: jis0212<<14 | 0x40<<7 | 0x3D, + 36956 - 19968: jis0208<<14 | 0x21<<7 | 0x1C, + 36957 - 19968: jis0212<<14 | 0x40<<7 | 0x3E, + 36958 - 19968: jis0208<<14 | 0x4D<<7 | 0x09, + 36960 - 19968: jis0208<<14 | 0x10<<7 | 0x52, + 36961 - 19968: jis0208<<14 | 0x20<<7 | 0x2B, + 36962 - 19968: jis0212<<14 | 0x40<<7 | 0x3F, + 36963 - 19968: jis0208<<14 | 0x17<<7 | 0x0E, + 36965 - 19968: jis0208<<14 | 0x2C<<7 | 0x39, + 36966 - 19968: jis0212<<14 | 0x40<<7 | 0x40, + 36967 - 19968: jis0208<<14 | 0x5A<<7 | 0x58, + 36968 - 19968: jis0208<<14 | 0x4D<<7 | 0x0A, + 36969 - 19968: jis0208<<14 | 0x24<<7 | 0x0B, + 36972 - 19968: jis0212<<14 | 0x40<<7 | 0x42, + 36973 - 19968: jis0208<<14 | 0x20<<7 | 0x57, + 36974 - 19968: jis0208<<14 | 0x1B<<7 | 0x36, + 36975 - 19968: jis0208<<14 | 0x4D<<7 | 0x0B, + 36976 - 19968: jis0212<<14 | 0x40<<7 | 0x43, + 36978 - 19968: jis0208<<14 | 0x4D<<7 | 0x0E, + 36980 - 19968: jis0212<<14 | 0x40<<7 | 0x44, + 36981 - 19968: jis0208<<14 | 0x1C<<7 | 0x44, + 36982 - 19968: jis0208<<14 | 0x4D<<7 | 0x0C, + 36983 - 19968: jis0208<<14 | 0x20<<7 | 0x0A, + 36984 - 19968: jis0208<<14 | 0x20<<7 | 0x09, + 36985 - 19968: jis0212<<14 | 0x40<<7 | 0x45, + 36986 - 19968: jis0208<<14 | 0x0F<<7 | 0x43, + 36988 - 19968: jis0208<<14 | 0x2D<<7 | 0x2A, + 36989 - 19968: jis0208<<14 | 0x4D<<7 | 0x10, + 36991 - 19968: jis0208<<14 | 0x27<<7 | 0x51, + 36992 - 19968: jis0208<<14 | 0x4D<<7 | 0x12, + 36993 - 19968: jis0208<<14 | 0x4D<<7 | 0x11, + 36994 - 19968: jis0208<<14 | 0x4D<<7 | 0x0F, + 36995 - 19968: jis0208<<14 | 0x42<<7 | 0x43, + 36996 - 19968: jis0208<<14 | 0x13<<7 | 0x33, + 36997 - 19968: jis0212<<14 | 0x40<<7 | 0x46, + 36999 - 19968: jis0208<<14 | 0x4C<<7 | 0x4D, + 37000 - 19968: jis0212<<14 | 0x40<<7 | 0x47, + 37001 - 19968: jis0208<<14 | 0x4D<<7 | 0x14, + 37002 - 19968: jis0208<<14 | 0x4D<<7 | 0x13, + 37003 - 19968: jis0212<<14 | 0x40<<7 | 0x48, + 37004 - 19968: jis0212<<14 | 0x40<<7 | 0x49, + 37006 - 19968: jis0212<<14 | 0x40<<7 | 0x4A, + 37007 - 19968: jis0208<<14 | 0x4D<<7 | 0x15, + 37008 - 19968: jis0212<<14 | 0x40<<7 | 0x4B, + 37009 - 19968: jis0208<<14 | 0x2C<<7 | 0x17, + 37013 - 19968: jis0212<<14 | 0x40<<7 | 0x4C, + 37015 - 19968: jis0212<<14 | 0x40<<7 | 0x4D, + 37016 - 19968: jis0212<<14 | 0x40<<7 | 0x4E, + 37017 - 19968: jis0212<<14 | 0x40<<7 | 0x4F, + 37019 - 19968: jis0212<<14 | 0x40<<7 | 0x50, + 37024 - 19968: jis0212<<14 | 0x40<<7 | 0x51, + 37025 - 19968: jis0212<<14 | 0x40<<7 | 0x52, + 37026 - 19968: jis0212<<14 | 0x40<<7 | 0x53, + 37027 - 19968: jis0208<<14 | 0x25<<7 | 0x40, + 37029 - 19968: jis0212<<14 | 0x40<<7 | 0x54, + 37030 - 19968: jis0208<<14 | 0x2A<<7 | 0x0D, + 37032 - 19968: jis0208<<14 | 0x4D<<7 | 0x16, + 37034 - 19968: jis0208<<14 | 0x1B<<7 | 0x38, + 37039 - 19968: jis0208<<14 | 0x4D<<7 | 0x17, + 37040 - 19968: jis0212<<14 | 0x40<<7 | 0x55, + 37041 - 19968: jis0208<<14 | 0x4D<<7 | 0x18, + 37042 - 19968: jis0212<<14 | 0x40<<7 | 0x56, + 37043 - 19968: jis0212<<14 | 0x40<<7 | 0x57, + 37044 - 19968: jis0212<<14 | 0x40<<7 | 0x58, + 37045 - 19968: jis0208<<14 | 0x4D<<7 | 0x19, + 37046 - 19968: jis0212<<14 | 0x40<<7 | 0x59, + 37048 - 19968: jis0208<<14 | 0x24<<7 | 0x00, + 37053 - 19968: jis0212<<14 | 0x40<<7 | 0x5A, + 37054 - 19968: jis0212<<14 | 0x40<<7 | 0x5C, + 37057 - 19968: jis0208<<14 | 0x0F<<7 | 0x49, + 37059 - 19968: jis0212<<14 | 0x40<<7 | 0x5D, + 37060 - 19968: jis0212<<14 | 0x41<<7 | 0x00, + 37061 - 19968: jis0212<<14 | 0x41<<7 | 0x01, + 37063 - 19968: jis0212<<14 | 0x41<<7 | 0x02, + 37064 - 19968: jis0212<<14 | 0x41<<7 | 0x03, + 37066 - 19968: jis0208<<14 | 0x18<<7 | 0x38, + 37068 - 19968: jis0212<<14 | 0x40<<7 | 0x5B, + 37070 - 19968: jis0208<<14 | 0x2E<<7 | 0x19, + 37074 - 19968: jis0212<<14 | 0x41<<7 | 0x0C, + 37077 - 19968: jis0212<<14 | 0x41<<7 | 0x04, + 37079 - 19968: jis0212<<14 | 0x41<<7 | 0x05, + 37080 - 19968: jis0212<<14 | 0x41<<7 | 0x06, + 37081 - 19968: jis0212<<14 | 0x41<<7 | 0x07, + 37083 - 19968: jis0208<<14 | 0x4D<<7 | 0x1D, + 37084 - 19968: jis0212<<14 | 0x41<<7 | 0x08, + 37085 - 19968: jis0212<<14 | 0x41<<7 | 0x09, + 37086 - 19968: jis0208<<14 | 0x5A<<7 | 0x59, + 37087 - 19968: jis0212<<14 | 0x41<<7 | 0x0A, + 37089 - 19968: jis0208<<14 | 0x16<<7 | 0x13, + 37090 - 19968: jis0208<<14 | 0x4D<<7 | 0x1A, + 37092 - 19968: jis0208<<14 | 0x4D<<7 | 0x1B, + 37093 - 19968: jis0212<<14 | 0x41<<7 | 0x0B, + 37096 - 19968: jis0208<<14 | 0x28<<7 | 0x53, + 37099 - 19968: jis0212<<14 | 0x41<<7 | 0x0E, + 37101 - 19968: jis0208<<14 | 0x12<<7 | 0x33, + 37103 - 19968: jis0212<<14 | 0x41<<7 | 0x0F, + 37104 - 19968: jis0212<<14 | 0x41<<7 | 0x10, + 37108 - 19968: jis0212<<14 | 0x41<<7 | 0x11, + 37109 - 19968: jis0208<<14 | 0x2C<<7 | 0x18, + 37110 - 19968: jis0212<<14 | 0x41<<7 | 0x0D, + 37111 - 19968: jis0208<<14 | 0x15<<7 | 0x1E, + 37117 - 19968: jis0208<<14 | 0x24<<7 | 0x33, + 37118 - 19968: jis0212<<14 | 0x41<<7 | 0x12, + 37119 - 19968: jis0212<<14 | 0x41<<7 | 0x13, + 37120 - 19968: jis0212<<14 | 0x41<<7 | 0x14, + 37122 - 19968: jis0208<<14 | 0x4D<<7 | 0x1E, + 37124 - 19968: jis0212<<14 | 0x41<<7 | 0x15, + 37125 - 19968: jis0212<<14 | 0x41<<7 | 0x16, + 37126 - 19968: jis0212<<14 | 0x41<<7 | 0x17, + 37128 - 19968: jis0212<<14 | 0x41<<7 | 0x18, + 37133 - 19968: jis0212<<14 | 0x41<<7 | 0x19, + 37136 - 19968: jis0212<<14 | 0x41<<7 | 0x1A, + 37138 - 19968: jis0208<<14 | 0x4D<<7 | 0x1F, + 37140 - 19968: jis0212<<14 | 0x41<<7 | 0x1B, + 37141 - 19968: jis0208<<14 | 0x5A<<7 | 0x5B, + 37142 - 19968: jis0212<<14 | 0x41<<7 | 0x1C, + 37143 - 19968: jis0212<<14 | 0x41<<7 | 0x1D, + 37144 - 19968: jis0212<<14 | 0x41<<7 | 0x1E, + 37145 - 19968: jis0208<<14 | 0x4D<<7 | 0x20, + 37146 - 19968: jis0212<<14 | 0x41<<7 | 0x1F, + 37148 - 19968: jis0212<<14 | 0x41<<7 | 0x20, + 37150 - 19968: jis0212<<14 | 0x41<<7 | 0x21, + 37152 - 19968: jis0212<<14 | 0x41<<7 | 0x22, + 37154 - 19968: jis0212<<14 | 0x41<<7 | 0x24, + 37155 - 19968: jis0212<<14 | 0x41<<7 | 0x25, + 37157 - 19968: jis0212<<14 | 0x41<<7 | 0x23, + 37159 - 19968: jis0208<<14 | 0x5A<<7 | 0x5C, + 37161 - 19968: jis0212<<14 | 0x41<<7 | 0x27, + 37165 - 19968: jis0208<<14 | 0x24<<7 | 0x01, + 37166 - 19968: jis0212<<14 | 0x41<<7 | 0x28, + 37167 - 19968: jis0212<<14 | 0x41<<7 | 0x29, + 37168 - 19968: jis0208<<14 | 0x4D<<7 | 0x22, + 37169 - 19968: jis0212<<14 | 0x41<<7 | 0x2A, + 37170 - 19968: jis0208<<14 | 0x4D<<7 | 0x21, + 37172 - 19968: jis0212<<14 | 0x41<<7 | 0x2B, + 37174 - 19968: jis0212<<14 | 0x41<<7 | 0x2C, + 37175 - 19968: jis0212<<14 | 0x41<<7 | 0x2D, + 37177 - 19968: jis0212<<14 | 0x41<<7 | 0x2E, + 37178 - 19968: jis0212<<14 | 0x41<<7 | 0x2F, + 37180 - 19968: jis0212<<14 | 0x41<<7 | 0x30, + 37181 - 19968: jis0212<<14 | 0x41<<7 | 0x31, + 37187 - 19968: jis0212<<14 | 0x41<<7 | 0x32, + 37191 - 19968: jis0212<<14 | 0x41<<7 | 0x33, + 37192 - 19968: jis0212<<14 | 0x41<<7 | 0x34, + 37193 - 19968: jis0208<<14 | 0x25<<7 | 0x32, + 37194 - 19968: jis0208<<14 | 0x4D<<7 | 0x23, + 37195 - 19968: jis0208<<14 | 0x1C<<7 | 0x15, + 37196 - 19968: jis0208<<14 | 0x1B<<7 | 0x3F, + 37197 - 19968: jis0208<<14 | 0x26<<7 | 0x3A, + 37198 - 19968: jis0208<<14 | 0x22<<7 | 0x50, + 37199 - 19968: jis0212<<14 | 0x41<<7 | 0x35, + 37202 - 19968: jis0208<<14 | 0x1B<<7 | 0x51, + 37203 - 19968: jis0212<<14 | 0x41<<7 | 0x36, + 37204 - 19968: jis0208<<14 | 0x1E<<7 | 0x4B, + 37206 - 19968: jis0208<<14 | 0x4D<<7 | 0x24, + 37207 - 19968: jis0212<<14 | 0x41<<7 | 0x37, + 37208 - 19968: jis0208<<14 | 0x4D<<7 | 0x25, + 37209 - 19968: jis0212<<14 | 0x41<<7 | 0x38, + 37210 - 19968: jis0212<<14 | 0x41<<7 | 0x39, + 37211 - 19968: jis0212<<14 | 0x41<<7 | 0x3A, + 37217 - 19968: jis0212<<14 | 0x41<<7 | 0x3B, + 37218 - 19968: jis0208<<14 | 0x1E<<7 | 0x3C, + 37219 - 19968: jis0208<<14 | 0x4D<<7 | 0x26, + 37220 - 19968: jis0212<<14 | 0x41<<7 | 0x3C, + 37221 - 19968: jis0208<<14 | 0x4D<<7 | 0x27, + 37223 - 19968: jis0212<<14 | 0x41<<7 | 0x3D, + 37225 - 19968: jis0208<<14 | 0x4D<<7 | 0x28, + 37226 - 19968: jis0208<<14 | 0x2C<<7 | 0x4E, + 37228 - 19968: jis0208<<14 | 0x1C<<7 | 0x16, + 37229 - 19968: jis0212<<14 | 0x41<<7 | 0x3E, + 37234 - 19968: jis0208<<14 | 0x4D<<7 | 0x2A, + 37235 - 19968: jis0208<<14 | 0x4D<<7 | 0x29, + 37236 - 19968: jis0212<<14 | 0x41<<7 | 0x3F, + 37237 - 19968: jis0208<<14 | 0x18<<7 | 0x39, + 37239 - 19968: jis0208<<14 | 0x18<<7 | 0x52, + 37240 - 19968: jis0208<<14 | 0x1A<<7 | 0x1F, + 37241 - 19968: jis0212<<14 | 0x41<<7 | 0x40, + 37242 - 19968: jis0212<<14 | 0x41<<7 | 0x41, + 37243 - 19968: jis0212<<14 | 0x41<<7 | 0x42, + 37249 - 19968: jis0212<<14 | 0x41<<7 | 0x43, + 37250 - 19968: jis0208<<14 | 0x4D<<7 | 0x2D, + 37251 - 19968: jis0212<<14 | 0x41<<7 | 0x44, + 37253 - 19968: jis0212<<14 | 0x41<<7 | 0x45, + 37254 - 19968: jis0212<<14 | 0x41<<7 | 0x46, + 37255 - 19968: jis0208<<14 | 0x1C<<7 | 0x45, + 37257 - 19968: jis0208<<14 | 0x4D<<7 | 0x2C, + 37258 - 19968: jis0212<<14 | 0x41<<7 | 0x47, + 37259 - 19968: jis0208<<14 | 0x4D<<7 | 0x2B, + 37261 - 19968: jis0208<<14 | 0x21<<7 | 0x48, + 37262 - 19968: jis0212<<14 | 0x41<<7 | 0x48, + 37264 - 19968: jis0208<<14 | 0x17<<7 | 0x4E, + 37265 - 19968: jis0212<<14 | 0x41<<7 | 0x49, + 37266 - 19968: jis0208<<14 | 0x1F<<7 | 0x22, + 37267 - 19968: jis0212<<14 | 0x41<<7 | 0x4A, + 37268 - 19968: jis0212<<14 | 0x41<<7 | 0x4B, + 37269 - 19968: jis0212<<14 | 0x41<<7 | 0x4C, + 37271 - 19968: jis0208<<14 | 0x27<<7 | 0x0F, + 37272 - 19968: jis0212<<14 | 0x41<<7 | 0x4D, + 37276 - 19968: jis0208<<14 | 0x1C<<7 | 0x18, + 37278 - 19968: jis0212<<14 | 0x41<<7 | 0x4E, + 37281 - 19968: jis0212<<14 | 0x41<<7 | 0x4F, + 37282 - 19968: jis0208<<14 | 0x4D<<7 | 0x2E, + 37284 - 19968: jis0208<<14 | 0x1D<<7 | 0x3E, + 37286 - 19968: jis0212<<14 | 0x41<<7 | 0x50, + 37288 - 19968: jis0212<<14 | 0x41<<7 | 0x51, + 37290 - 19968: jis0208<<14 | 0x4D<<7 | 0x31, + 37291 - 19968: jis0208<<14 | 0x4D<<7 | 0x2F, + 37292 - 19968: jis0212<<14 | 0x41<<7 | 0x52, + 37293 - 19968: jis0212<<14 | 0x41<<7 | 0x53, + 37294 - 19968: jis0212<<14 | 0x41<<7 | 0x54, + 37295 - 19968: jis0208<<14 | 0x4D<<7 | 0x30, + 37296 - 19968: jis0212<<14 | 0x41<<7 | 0x55, + 37297 - 19968: jis0212<<14 | 0x41<<7 | 0x56, + 37298 - 19968: jis0212<<14 | 0x41<<7 | 0x57, + 37299 - 19968: jis0212<<14 | 0x41<<7 | 0x58, + 37300 - 19968: jis0208<<14 | 0x4D<<7 | 0x33, + 37301 - 19968: jis0208<<14 | 0x4D<<7 | 0x32, + 37302 - 19968: jis0212<<14 | 0x41<<7 | 0x59, + 37304 - 19968: jis0208<<14 | 0x1D<<7 | 0x59, + 37306 - 19968: jis0208<<14 | 0x4D<<7 | 0x34, + 37307 - 19968: jis0212<<14 | 0x41<<7 | 0x5A, + 37308 - 19968: jis0212<<14 | 0x41<<7 | 0x5B, + 37309 - 19968: jis0212<<14 | 0x41<<7 | 0x5C, + 37311 - 19968: jis0212<<14 | 0x41<<7 | 0x5D, + 37312 - 19968: jis0208<<14 | 0x4D<<7 | 0x35, + 37313 - 19968: jis0208<<14 | 0x4D<<7 | 0x36, + 37314 - 19968: jis0212<<14 | 0x42<<7 | 0x00, + 37315 - 19968: jis0212<<14 | 0x42<<7 | 0x01, + 37317 - 19968: jis0212<<14 | 0x42<<7 | 0x02, + 37318 - 19968: jis0208<<14 | 0x27<<7 | 0x2F, + 37319 - 19968: jis0208<<14 | 0x19<<7 | 0x32, + 37320 - 19968: jis0208<<14 | 0x1B<<7 | 0x40, + 37321 - 19968: jis0208<<14 | 0x4D<<7 | 0x37, + 37323 - 19968: jis0208<<14 | 0x4D<<7 | 0x38, + 37324 - 19968: jis0208<<14 | 0x2D<<7 | 0x03, + 37325 - 19968: jis0208<<14 | 0x1C<<7 | 0x24, + 37326 - 19968: jis0208<<14 | 0x2B<<7 | 0x4D, + 37327 - 19968: jis0208<<14 | 0x2D<<7 | 0x2B, + 37328 - 19968: jis0208<<14 | 0x4D<<7 | 0x39, + 37329 - 19968: jis0208<<14 | 0x15<<7 | 0x41, + 37331 - 19968: jis0212<<14 | 0x42<<7 | 0x03, + 37332 - 19968: jis0212<<14 | 0x42<<7 | 0x04, + 37334 - 19968: jis0208<<14 | 0x4D<<7 | 0x3A, + 37335 - 19968: jis0208<<14 | 0x5B<<7 | 0x00, + 37336 - 19968: jis0208<<14 | 0x24<<7 | 0x02, + 37337 - 19968: jis0212<<14 | 0x42<<7 | 0x06, + 37338 - 19968: jis0208<<14 | 0x5A<<7 | 0x5D, + 37339 - 19968: jis0208<<14 | 0x4D<<7 | 0x3D, + 37340 - 19968: jis0208<<14 | 0x12<<7 | 0x57, + 37341 - 19968: jis0208<<14 | 0x1E<<7 | 0x2A, + 37342 - 19968: jis0208<<14 | 0x5B<<7 | 0x01, + 37343 - 19968: jis0208<<14 | 0x4D<<7 | 0x3B, + 37345 - 19968: jis0208<<14 | 0x4D<<7 | 0x3C, + 37347 - 19968: jis0208<<14 | 0x23<<7 | 0x3F, + 37348 - 19968: jis0208<<14 | 0x5B<<7 | 0x04, + 37349 - 19968: jis0208<<14 | 0x5B<<7 | 0x05, + 37350 - 19968: jis0208<<14 | 0x2A<<7 | 0x34, + 37351 - 19968: jis0208<<14 | 0x15<<7 | 0x5B, + 37353 - 19968: jis0212<<14 | 0x42<<7 | 0x0B, + 37354 - 19968: jis0212<<14 | 0x42<<7 | 0x0C, + 37356 - 19968: jis0212<<14 | 0x42<<7 | 0x0D, + 37357 - 19968: jis0208<<14 | 0x5B<<7 | 0x02, + 37358 - 19968: jis0208<<14 | 0x5B<<7 | 0x03, + 37359 - 19968: jis0212<<14 | 0x42<<7 | 0x10, + 37360 - 19968: jis0212<<14 | 0x42<<7 | 0x11, + 37361 - 19968: jis0212<<14 | 0x42<<7 | 0x12, + 37365 - 19968: jis0208<<14 | 0x4D<<7 | 0x3F, + 37366 - 19968: jis0208<<14 | 0x4D<<7 | 0x40, + 37367 - 19968: jis0212<<14 | 0x42<<7 | 0x13, + 37369 - 19968: jis0212<<14 | 0x42<<7 | 0x14, + 37371 - 19968: jis0212<<14 | 0x42<<7 | 0x15, + 37372 - 19968: jis0208<<14 | 0x4D<<7 | 0x3E, + 37373 - 19968: jis0212<<14 | 0x42<<7 | 0x16, + 37375 - 19968: jis0208<<14 | 0x4D<<7 | 0x42, + 37376 - 19968: jis0212<<14 | 0x42<<7 | 0x17, + 37377 - 19968: jis0212<<14 | 0x42<<7 | 0x18, + 37380 - 19968: jis0212<<14 | 0x42<<7 | 0x19, + 37381 - 19968: jis0212<<14 | 0x42<<7 | 0x1A, + 37382 - 19968: jis0208<<14 | 0x5B<<7 | 0x06, + 37383 - 19968: jis0212<<14 | 0x42<<7 | 0x1C, + 37385 - 19968: jis0212<<14 | 0x42<<7 | 0x1D, + 37386 - 19968: jis0208<<14 | 0x5B<<7 | 0x08, + 37388 - 19968: jis0212<<14 | 0x42<<7 | 0x1F, + 37389 - 19968: jis0208<<14 | 0x25<<7 | 0x3E, + 37390 - 19968: jis0208<<14 | 0x12<<7 | 0x22, + 37392 - 19968: jis0208<<14 | 0x5B<<7 | 0x07, + 37393 - 19968: jis0208<<14 | 0x4D<<7 | 0x46, + 37394 - 19968: jis0212<<14 | 0x42<<7 | 0x21, + 37395 - 19968: jis0212<<14 | 0x42<<7 | 0x22, + 37396 - 19968: jis0208<<14 | 0x4D<<7 | 0x43, + 37397 - 19968: jis0208<<14 | 0x4D<<7 | 0x45, + 37398 - 19968: jis0212<<14 | 0x42<<7 | 0x23, + 37400 - 19968: jis0212<<14 | 0x42<<7 | 0x24, + 37404 - 19968: jis0212<<14 | 0x42<<7 | 0x25, + 37405 - 19968: jis0212<<14 | 0x42<<7 | 0x26, + 37406 - 19968: jis0208<<14 | 0x4D<<7 | 0x41, + 37411 - 19968: jis0212<<14 | 0x42<<7 | 0x27, + 37412 - 19968: jis0212<<14 | 0x42<<7 | 0x28, + 37413 - 19968: jis0212<<14 | 0x42<<7 | 0x29, + 37414 - 19968: jis0212<<14 | 0x42<<7 | 0x2A, + 37416 - 19968: jis0212<<14 | 0x42<<7 | 0x2B, + 37417 - 19968: jis0208<<14 | 0x4E<<7 | 0x2E, + 37420 - 19968: jis0208<<14 | 0x4D<<7 | 0x44, + 37422 - 19968: jis0212<<14 | 0x42<<7 | 0x2C, + 37423 - 19968: jis0212<<14 | 0x42<<7 | 0x2D, + 37424 - 19968: jis0212<<14 | 0x42<<7 | 0x2E, + 37427 - 19968: jis0212<<14 | 0x42<<7 | 0x2F, + 37428 - 19968: jis0208<<14 | 0x2D<<7 | 0x4A, + 37429 - 19968: jis0212<<14 | 0x42<<7 | 0x30, + 37430 - 19968: jis0212<<14 | 0x42<<7 | 0x31, + 37431 - 19968: jis0208<<14 | 0x17<<7 | 0x39, + 37432 - 19968: jis0212<<14 | 0x42<<7 | 0x32, + 37433 - 19968: jis0208<<14 | 0x5B<<7 | 0x0F, + 37434 - 19968: jis0208<<14 | 0x5B<<7 | 0x09, + 37436 - 19968: jis0208<<14 | 0x5B<<7 | 0x0B, + 37438 - 19968: jis0212<<14 | 0x42<<7 | 0x36, + 37439 - 19968: jis0208<<14 | 0x4D<<7 | 0x4E, + 37440 - 19968: jis0208<<14 | 0x5B<<7 | 0x0A, + 37442 - 19968: jis0212<<14 | 0x42<<7 | 0x38, + 37443 - 19968: jis0212<<14 | 0x42<<7 | 0x39, + 37444 - 19968: jis0208<<14 | 0x24<<7 | 0x13, + 37445 - 19968: jis0208<<14 | 0x4D<<7 | 0x49, + 37446 - 19968: jis0212<<14 | 0x42<<7 | 0x3A, + 37447 - 19968: jis0212<<14 | 0x42<<7 | 0x3B, + 37448 - 19968: jis0208<<14 | 0x4D<<7 | 0x4C, + 37449 - 19968: jis0208<<14 | 0x4D<<7 | 0x4A, + 37450 - 19968: jis0212<<14 | 0x42<<7 | 0x3C, + 37451 - 19968: jis0208<<14 | 0x4D<<7 | 0x4F, + 37453 - 19968: jis0212<<14 | 0x42<<7 | 0x3D, + 37454 - 19968: jis0208<<14 | 0x5B<<7 | 0x0C, + 37455 - 19968: jis0212<<14 | 0x42<<7 | 0x3F, + 37456 - 19968: jis0208<<14 | 0x4D<<7 | 0x50, + 37457 - 19968: jis0208<<14 | 0x5B<<7 | 0x0E, + 37463 - 19968: jis0208<<14 | 0x4D<<7 | 0x48, + 37464 - 19968: jis0212<<14 | 0x42<<7 | 0x41, + 37465 - 19968: jis0208<<14 | 0x5B<<7 | 0x0D, + 37466 - 19968: jis0208<<14 | 0x4D<<7 | 0x55, + 37467 - 19968: jis0208<<14 | 0x10<<7 | 0x53, + 37468 - 19968: jis0212<<14 | 0x42<<7 | 0x43, + 37469 - 19968: jis0212<<14 | 0x42<<7 | 0x44, + 37470 - 19968: jis0208<<14 | 0x4D<<7 | 0x47, + 37472 - 19968: jis0212<<14 | 0x42<<7 | 0x45, + 37473 - 19968: jis0212<<14 | 0x42<<7 | 0x46, + 37474 - 19968: jis0208<<14 | 0x27<<7 | 0x0C, + 37476 - 19968: jis0208<<14 | 0x4D<<7 | 0x4B, + 37477 - 19968: jis0212<<14 | 0x42<<7 | 0x47, + 37478 - 19968: jis0208<<14 | 0x1D<<7 | 0x3F, + 37479 - 19968: jis0208<<14 | 0x5B<<7 | 0x10, + 37480 - 19968: jis0212<<14 | 0x42<<7 | 0x49, + 37481 - 19968: jis0212<<14 | 0x42<<7 | 0x4A, + 37486 - 19968: jis0212<<14 | 0x42<<7 | 0x4B, + 37487 - 19968: jis0212<<14 | 0x42<<7 | 0x4C, + 37488 - 19968: jis0212<<14 | 0x42<<7 | 0x4D, + 37489 - 19968: jis0208<<14 | 0x18<<7 | 0x3A, + 37493 - 19968: jis0212<<14 | 0x42<<7 | 0x4E, + 37494 - 19968: jis0212<<14 | 0x42<<7 | 0x4F, + 37495 - 19968: jis0208<<14 | 0x5B<<7 | 0x12, + 37496 - 19968: jis0208<<14 | 0x5B<<7 | 0x13, + 37497 - 19968: jis0212<<14 | 0x42<<7 | 0x52, + 37499 - 19968: jis0212<<14 | 0x42<<7 | 0x53, + 37500 - 19968: jis0212<<14 | 0x42<<7 | 0x54, + 37501 - 19968: jis0212<<14 | 0x42<<7 | 0x55, + 37502 - 19968: jis0208<<14 | 0x2A<<7 | 0x27, + 37503 - 19968: jis0212<<14 | 0x42<<7 | 0x56, + 37504 - 19968: jis0208<<14 | 0x15<<7 | 0x43, + 37507 - 19968: jis0208<<14 | 0x1C<<7 | 0x25, + 37509 - 19968: jis0208<<14 | 0x25<<7 | 0x1B, + 37512 - 19968: jis0208<<14 | 0x58<<7 | 0x03, + 37513 - 19968: jis0212<<14 | 0x42<<7 | 0x58, + 37514 - 19968: jis0212<<14 | 0x42<<7 | 0x59, + 37517 - 19968: jis0212<<14 | 0x42<<7 | 0x5A, + 37518 - 19968: jis0212<<14 | 0x42<<7 | 0x5B, + 37521 - 19968: jis0208<<14 | 0x20<<7 | 0x0C, + 37522 - 19968: jis0212<<14 | 0x42<<7 | 0x5C, + 37523 - 19968: jis0208<<14 | 0x4D<<7 | 0x53, + 37525 - 19968: jis0208<<14 | 0x4D<<7 | 0x4D, + 37526 - 19968: jis0208<<14 | 0x4D<<7 | 0x52, + 37527 - 19968: jis0212<<14 | 0x42<<7 | 0x5D, + 37528 - 19968: jis0208<<14 | 0x2B<<7 | 0x22, + 37529 - 19968: jis0212<<14 | 0x43<<7 | 0x00, + 37530 - 19968: jis0208<<14 | 0x23<<7 | 0x17, + 37531 - 19968: jis0208<<14 | 0x4D<<7 | 0x54, + 37532 - 19968: jis0208<<14 | 0x4D<<7 | 0x51, + 37535 - 19968: jis0212<<14 | 0x43<<7 | 0x01, + 37536 - 19968: jis0212<<14 | 0x43<<7 | 0x02, + 37540 - 19968: jis0212<<14 | 0x43<<7 | 0x03, + 37541 - 19968: jis0212<<14 | 0x43<<7 | 0x04, + 37543 - 19968: jis0208<<14 | 0x5B<<7 | 0x11, + 37544 - 19968: jis0212<<14 | 0x43<<7 | 0x06, + 37547 - 19968: jis0212<<14 | 0x43<<7 | 0x07, + 37549 - 19968: jis0208<<14 | 0x20<<7 | 0x0B, + 37551 - 19968: jis0212<<14 | 0x43<<7 | 0x08, + 37554 - 19968: jis0212<<14 | 0x43<<7 | 0x09, + 37558 - 19968: jis0212<<14 | 0x43<<7 | 0x0A, + 37559 - 19968: jis0208<<14 | 0x4D<<7 | 0x58, + 37560 - 19968: jis0212<<14 | 0x43<<7 | 0x0B, + 37561 - 19968: jis0208<<14 | 0x4D<<7 | 0x57, + 37562 - 19968: jis0212<<14 | 0x43<<7 | 0x0C, + 37563 - 19968: jis0212<<14 | 0x43<<7 | 0x0D, + 37564 - 19968: jis0212<<14 | 0x43<<7 | 0x0E, + 37565 - 19968: jis0212<<14 | 0x43<<7 | 0x0F, + 37567 - 19968: jis0212<<14 | 0x43<<7 | 0x10, + 37568 - 19968: jis0212<<14 | 0x43<<7 | 0x11, + 37569 - 19968: jis0212<<14 | 0x43<<7 | 0x12, + 37570 - 19968: jis0212<<14 | 0x43<<7 | 0x13, + 37571 - 19968: jis0212<<14 | 0x43<<7 | 0x14, + 37573 - 19968: jis0212<<14 | 0x43<<7 | 0x15, + 37574 - 19968: jis0212<<14 | 0x43<<7 | 0x16, + 37575 - 19968: jis0212<<14 | 0x43<<7 | 0x17, + 37576 - 19968: jis0212<<14 | 0x43<<7 | 0x18, + 37579 - 19968: jis0212<<14 | 0x43<<7 | 0x19, + 37580 - 19968: jis0212<<14 | 0x43<<7 | 0x1A, + 37581 - 19968: jis0212<<14 | 0x43<<7 | 0x1B, + 37582 - 19968: jis0212<<14 | 0x43<<7 | 0x1C, + 37583 - 19968: jis0208<<14 | 0x4D<<7 | 0x56, + 37584 - 19968: jis0208<<14 | 0x5B<<7 | 0x17, + 37586 - 19968: jis0208<<14 | 0x2A<<7 | 0x0E, + 37587 - 19968: jis0208<<14 | 0x5B<<7 | 0x1B, + 37589 - 19968: jis0208<<14 | 0x5B<<7 | 0x19, + 37591 - 19968: jis0208<<14 | 0x5B<<7 | 0x15, + 37592 - 19968: jis0212<<14 | 0x43<<7 | 0x21, + 37593 - 19968: jis0208<<14 | 0x5B<<7 | 0x16, + 37596 - 19968: jis0212<<14 | 0x43<<7 | 0x23, + 37597 - 19968: jis0212<<14 | 0x43<<7 | 0x24, + 37599 - 19968: jis0212<<14 | 0x43<<7 | 0x25, + 37600 - 19968: jis0208<<14 | 0x5B<<7 | 0x1A, + 37601 - 19968: jis0212<<14 | 0x43<<7 | 0x27, + 37603 - 19968: jis0212<<14 | 0x43<<7 | 0x28, + 37604 - 19968: jis0208<<14 | 0x1C<<7 | 0x5A, + 37605 - 19968: jis0212<<14 | 0x43<<7 | 0x29, + 37607 - 19968: jis0208<<14 | 0x5B<<7 | 0x14, + 37608 - 19968: jis0212<<14 | 0x43<<7 | 0x2B, + 37609 - 19968: jis0208<<14 | 0x4D<<7 | 0x59, + 37610 - 19968: jis0208<<14 | 0x29<<7 | 0x3E, + 37612 - 19968: jis0212<<14 | 0x43<<7 | 0x2C, + 37613 - 19968: jis0208<<14 | 0x10<<7 | 0x33, + 37614 - 19968: jis0212<<14 | 0x43<<7 | 0x2D, + 37616 - 19968: jis0212<<14 | 0x43<<7 | 0x2E, + 37618 - 19968: jis0208<<14 | 0x28<<7 | 0x25, + 37619 - 19968: jis0208<<14 | 0x22<<7 | 0x51, + 37624 - 19968: jis0208<<14 | 0x14<<7 | 0x57, + 37625 - 19968: jis0208<<14 | 0x58<<7 | 0x09, + 37626 - 19968: jis0208<<14 | 0x4D<<7 | 0x5B, + 37627 - 19968: jis0208<<14 | 0x5B<<7 | 0x1E, + 37628 - 19968: jis0208<<14 | 0x18<<7 | 0x3C, + 37631 - 19968: jis0208<<14 | 0x5B<<7 | 0x21, + 37632 - 19968: jis0212<<14 | 0x43<<7 | 0x32, + 37634 - 19968: jis0208<<14 | 0x5B<<7 | 0x23, + 37638 - 19968: jis0208<<14 | 0x1A<<7 | 0x0B, + 37640 - 19968: jis0212<<14 | 0x43<<7 | 0x34, + 37645 - 19968: jis0212<<14 | 0x43<<7 | 0x35, + 37647 - 19968: jis0208<<14 | 0x4D<<7 | 0x5A, + 37648 - 19968: jis0208<<14 | 0x1E<<7 | 0x4C, + 37649 - 19968: jis0212<<14 | 0x43<<7 | 0x36, + 37652 - 19968: jis0212<<14 | 0x43<<7 | 0x37, + 37653 - 19968: jis0212<<14 | 0x43<<7 | 0x38, + 37656 - 19968: jis0208<<14 | 0x1E<<7 | 0x4D, + 37657 - 19968: jis0208<<14 | 0x4E<<7 | 0x00, + 37658 - 19968: jis0208<<14 | 0x4E<<7 | 0x02, + 37660 - 19968: jis0212<<14 | 0x43<<7 | 0x39, + 37661 - 19968: jis0208<<14 | 0x5B<<7 | 0x22, + 37662 - 19968: jis0208<<14 | 0x5B<<7 | 0x20, + 37663 - 19968: jis0212<<14 | 0x43<<7 | 0x3C, + 37664 - 19968: jis0208<<14 | 0x1D<<7 | 0x5A, + 37665 - 19968: jis0208<<14 | 0x5B<<7 | 0x1D, + 37666 - 19968: jis0208<<14 | 0x4E<<7 | 0x01, + 37667 - 19968: jis0208<<14 | 0x4E<<7 | 0x03, + 37668 - 19968: jis0212<<14 | 0x43<<7 | 0x3E, + 37669 - 19968: jis0208<<14 | 0x5B<<7 | 0x1C, + 37670 - 19968: jis0208<<14 | 0x15<<7 | 0x32, + 37671 - 19968: jis0212<<14 | 0x43<<7 | 0x40, + 37672 - 19968: jis0208<<14 | 0x28<<7 | 0x24, + 37673 - 19968: jis0212<<14 | 0x43<<7 | 0x41, + 37674 - 19968: jis0212<<14 | 0x43<<7 | 0x42, + 37675 - 19968: jis0208<<14 | 0x1B<<7 | 0x41, + 37676 - 19968: jis0208<<14 | 0x2E<<7 | 0x02, + 37678 - 19968: jis0208<<14 | 0x4D<<7 | 0x5D, + 37679 - 19968: jis0208<<14 | 0x19<<7 | 0x57, + 37682 - 19968: jis0208<<14 | 0x2E<<7 | 0x1E, + 37683 - 19968: jis0212<<14 | 0x43<<7 | 0x43, + 37684 - 19968: jis0212<<14 | 0x43<<7 | 0x44, + 37685 - 19968: jis0208<<14 | 0x4E<<7 | 0x05, + 37686 - 19968: jis0212<<14 | 0x43<<7 | 0x45, + 37687 - 19968: jis0212<<14 | 0x43<<7 | 0x46, + 37690 - 19968: jis0208<<14 | 0x4E<<7 | 0x04, + 37691 - 19968: jis0208<<14 | 0x4E<<7 | 0x06, + 37700 - 19968: jis0208<<14 | 0x4D<<7 | 0x5C, + 37703 - 19968: jis0212<<14 | 0x43<<7 | 0x47, + 37704 - 19968: jis0208<<14 | 0x58<<7 | 0x02, + 37705 - 19968: jis0212<<14 | 0x43<<7 | 0x49, + 37707 - 19968: jis0208<<14 | 0x25<<7 | 0x48, + 37709 - 19968: jis0208<<14 | 0x24<<7 | 0x34, + 37712 - 19968: jis0212<<14 | 0x43<<7 | 0x4A, + 37713 - 19968: jis0212<<14 | 0x43<<7 | 0x4B, + 37714 - 19968: jis0212<<14 | 0x43<<7 | 0x4C, + 37716 - 19968: jis0208<<14 | 0x23<<7 | 0x36, + 37717 - 19968: jis0212<<14 | 0x43<<7 | 0x4D, + 37718 - 19968: jis0208<<14 | 0x4E<<7 | 0x0B, + 37719 - 19968: jis0208<<14 | 0x5B<<7 | 0x25, + 37720 - 19968: jis0212<<14 | 0x43<<7 | 0x4F, + 37722 - 19968: jis0212<<14 | 0x43<<7 | 0x50, + 37723 - 19968: jis0208<<14 | 0x22<<7 | 0x22, + 37724 - 19968: jis0208<<14 | 0x4E<<7 | 0x07, + 37726 - 19968: jis0212<<14 | 0x43<<7 | 0x51, + 37728 - 19968: jis0208<<14 | 0x4E<<7 | 0x08, + 37732 - 19968: jis0212<<14 | 0x43<<7 | 0x52, + 37733 - 19968: jis0212<<14 | 0x43<<7 | 0x53, + 37735 - 19968: jis0212<<14 | 0x43<<7 | 0x54, + 37737 - 19968: jis0212<<14 | 0x43<<7 | 0x55, + 37738 - 19968: jis0212<<14 | 0x43<<7 | 0x56, + 37740 - 19968: jis0208<<14 | 0x16<<7 | 0x0C, + 37741 - 19968: jis0212<<14 | 0x43<<7 | 0x57, + 37742 - 19968: jis0208<<14 | 0x4E<<7 | 0x0A, + 37743 - 19968: jis0212<<14 | 0x43<<7 | 0x58, + 37744 - 19968: jis0208<<14 | 0x5B<<7 | 0x24, + 37745 - 19968: jis0212<<14 | 0x43<<7 | 0x5A, + 37747 - 19968: jis0212<<14 | 0x43<<7 | 0x5B, + 37748 - 19968: jis0212<<14 | 0x43<<7 | 0x5C, + 37749 - 19968: jis0208<<14 | 0x17<<7 | 0x0F, + 37750 - 19968: jis0212<<14 | 0x43<<7 | 0x5D, + 37754 - 19968: jis0212<<14 | 0x44<<7 | 0x00, + 37756 - 19968: jis0208<<14 | 0x4E<<7 | 0x09, + 37757 - 19968: jis0212<<14 | 0x44<<7 | 0x01, + 37758 - 19968: jis0208<<14 | 0x1D<<7 | 0x40, + 37759 - 19968: jis0212<<14 | 0x44<<7 | 0x02, + 37760 - 19968: jis0212<<14 | 0x44<<7 | 0x03, + 37761 - 19968: jis0212<<14 | 0x44<<7 | 0x04, + 37762 - 19968: jis0212<<14 | 0x44<<7 | 0x05, + 37768 - 19968: jis0212<<14 | 0x44<<7 | 0x06, + 37770 - 19968: jis0212<<14 | 0x44<<7 | 0x07, + 37771 - 19968: jis0212<<14 | 0x44<<7 | 0x08, + 37772 - 19968: jis0208<<14 | 0x12<<7 | 0x58, + 37773 - 19968: jis0212<<14 | 0x44<<7 | 0x09, + 37775 - 19968: jis0212<<14 | 0x44<<7 | 0x0A, + 37778 - 19968: jis0212<<14 | 0x44<<7 | 0x0B, + 37780 - 19968: jis0208<<14 | 0x4E<<7 | 0x0F, + 37781 - 19968: jis0212<<14 | 0x44<<7 | 0x0C, + 37782 - 19968: jis0208<<14 | 0x19<<7 | 0x1E, + 37783 - 19968: jis0208<<14 | 0x20<<7 | 0x58, + 37784 - 19968: jis0212<<14 | 0x44<<7 | 0x0D, + 37786 - 19968: jis0208<<14 | 0x23<<7 | 0x29, + 37787 - 19968: jis0212<<14 | 0x44<<7 | 0x0E, + 37790 - 19968: jis0212<<14 | 0x44<<7 | 0x0F, + 37793 - 19968: jis0212<<14 | 0x44<<7 | 0x10, + 37795 - 19968: jis0212<<14 | 0x44<<7 | 0x11, + 37796 - 19968: jis0208<<14 | 0x5B<<7 | 0x26, + 37798 - 19968: jis0212<<14 | 0x44<<7 | 0x13, + 37799 - 19968: jis0208<<14 | 0x12<<7 | 0x1A, + 37800 - 19968: jis0212<<14 | 0x44<<7 | 0x14, + 37801 - 19968: jis0212<<14 | 0x44<<7 | 0x1A, + 37803 - 19968: jis0212<<14 | 0x44<<7 | 0x15, + 37804 - 19968: jis0208<<14 | 0x4E<<7 | 0x0D, + 37805 - 19968: jis0208<<14 | 0x4E<<7 | 0x0E, + 37806 - 19968: jis0208<<14 | 0x23<<7 | 0x22, + 37808 - 19968: jis0208<<14 | 0x4E<<7 | 0x0C, + 37812 - 19968: jis0212<<14 | 0x44<<7 | 0x16, + 37813 - 19968: jis0212<<14 | 0x44<<7 | 0x17, + 37814 - 19968: jis0212<<14 | 0x44<<7 | 0x18, + 37817 - 19968: jis0208<<14 | 0x4E<<7 | 0x10, + 37818 - 19968: jis0212<<14 | 0x44<<7 | 0x19, + 37825 - 19968: jis0212<<14 | 0x44<<7 | 0x1B, + 37827 - 19968: jis0208<<14 | 0x4E<<7 | 0x16, + 37828 - 19968: jis0212<<14 | 0x44<<7 | 0x1C, + 37829 - 19968: jis0212<<14 | 0x44<<7 | 0x1D, + 37830 - 19968: jis0208<<14 | 0x5B<<7 | 0x27, + 37831 - 19968: jis0212<<14 | 0x44<<7 | 0x1F, + 37832 - 19968: jis0208<<14 | 0x4E<<7 | 0x19, + 37833 - 19968: jis0212<<14 | 0x44<<7 | 0x20, + 37834 - 19968: jis0212<<14 | 0x44<<7 | 0x21, + 37835 - 19968: jis0212<<14 | 0x44<<7 | 0x22, + 37836 - 19968: jis0212<<14 | 0x44<<7 | 0x23, + 37837 - 19968: jis0212<<14 | 0x44<<7 | 0x24, + 37840 - 19968: jis0208<<14 | 0x4E<<7 | 0x18, + 37841 - 19968: jis0208<<14 | 0x24<<7 | 0x0C, + 37843 - 19968: jis0212<<14 | 0x44<<7 | 0x25, + 37846 - 19968: jis0208<<14 | 0x4E<<7 | 0x11, + 37847 - 19968: jis0208<<14 | 0x4E<<7 | 0x12, + 37848 - 19968: jis0208<<14 | 0x4E<<7 | 0x15, + 37849 - 19968: jis0212<<14 | 0x44<<7 | 0x26, + 37852 - 19968: jis0212<<14 | 0x44<<7 | 0x27, + 37853 - 19968: jis0208<<14 | 0x4E<<7 | 0x17, + 37854 - 19968: jis0208<<14 | 0x5B<<7 | 0x28, + 37855 - 19968: jis0212<<14 | 0x44<<7 | 0x29, + 37857 - 19968: jis0208<<14 | 0x15<<7 | 0x1F, + 37858 - 19968: jis0212<<14 | 0x44<<7 | 0x2A, + 37860 - 19968: jis0208<<14 | 0x4E<<7 | 0x1A, + 37861 - 19968: jis0208<<14 | 0x4E<<7 | 0x14, + 37862 - 19968: jis0212<<14 | 0x44<<7 | 0x2B, + 37863 - 19968: jis0212<<14 | 0x44<<7 | 0x2C, + 37864 - 19968: jis0208<<14 | 0x4E<<7 | 0x13, + 37879 - 19968: jis0212<<14 | 0x44<<7 | 0x2E, + 37880 - 19968: jis0208<<14 | 0x5B<<7 | 0x29, + 37881 - 19968: jis0212<<14 | 0x44<<7 | 0x2D, + 37882 - 19968: jis0212<<14 | 0x44<<7 | 0x30, + 37883 - 19968: jis0212<<14 | 0x44<<7 | 0x31, + 37885 - 19968: jis0212<<14 | 0x44<<7 | 0x32, + 37889 - 19968: jis0212<<14 | 0x44<<7 | 0x33, + 37890 - 19968: jis0212<<14 | 0x44<<7 | 0x34, + 37891 - 19968: jis0208<<14 | 0x4E<<7 | 0x1E, + 37892 - 19968: jis0212<<14 | 0x44<<7 | 0x35, + 37895 - 19968: jis0208<<14 | 0x4E<<7 | 0x1F, + 37896 - 19968: jis0212<<14 | 0x44<<7 | 0x36, + 37897 - 19968: jis0212<<14 | 0x44<<7 | 0x37, + 37901 - 19968: jis0212<<14 | 0x44<<7 | 0x38, + 37902 - 19968: jis0212<<14 | 0x44<<7 | 0x39, + 37903 - 19968: jis0212<<14 | 0x44<<7 | 0x3A, + 37904 - 19968: jis0208<<14 | 0x4E<<7 | 0x20, + 37907 - 19968: jis0208<<14 | 0x4E<<7 | 0x1D, + 37908 - 19968: jis0208<<14 | 0x4E<<7 | 0x1C, + 37909 - 19968: jis0212<<14 | 0x44<<7 | 0x3B, + 37910 - 19968: jis0212<<14 | 0x44<<7 | 0x3C, + 37911 - 19968: jis0212<<14 | 0x44<<7 | 0x3D, + 37912 - 19968: jis0208<<14 | 0x1D<<7 | 0x41, + 37913 - 19968: jis0208<<14 | 0x25<<7 | 0x09, + 37914 - 19968: jis0208<<14 | 0x4E<<7 | 0x1B, + 37919 - 19968: jis0212<<14 | 0x44<<7 | 0x3E, + 37921 - 19968: jis0208<<14 | 0x4E<<7 | 0x24, + 37931 - 19968: jis0208<<14 | 0x4E<<7 | 0x22, + 37934 - 19968: jis0212<<14 | 0x44<<7 | 0x3F, + 37935 - 19968: jis0212<<14 | 0x44<<7 | 0x40, + 37937 - 19968: jis0208<<14 | 0x5B<<7 | 0x2A, + 37938 - 19968: jis0212<<14 | 0x44<<7 | 0x42, + 37939 - 19968: jis0212<<14 | 0x44<<7 | 0x43, + 37940 - 19968: jis0212<<14 | 0x44<<7 | 0x44, + 37941 - 19968: jis0208<<14 | 0x4E<<7 | 0x23, + 37942 - 19968: jis0208<<14 | 0x4E<<7 | 0x21, + 37944 - 19968: jis0208<<14 | 0x21<<7 | 0x57, + 37946 - 19968: jis0208<<14 | 0x4E<<7 | 0x25, + 37947 - 19968: jis0212<<14 | 0x44<<7 | 0x45, + 37949 - 19968: jis0212<<14 | 0x44<<7 | 0x47, + 37951 - 19968: jis0212<<14 | 0x44<<7 | 0x46, + 37953 - 19968: jis0208<<14 | 0x4E<<7 | 0x26, + 37955 - 19968: jis0212<<14 | 0x44<<7 | 0x48, + 37956 - 19968: jis0208<<14 | 0x4E<<7 | 0x28, + 37957 - 19968: jis0208<<14 | 0x5B<<7 | 0x2B, + 37960 - 19968: jis0208<<14 | 0x5B<<7 | 0x2C, + 37962 - 19968: jis0212<<14 | 0x44<<7 | 0x4B, + 37964 - 19968: jis0212<<14 | 0x44<<7 | 0x4C, + 37969 - 19968: jis0208<<14 | 0x13<<7 | 0x34, + 37970 - 19968: jis0208<<14 | 0x4E<<7 | 0x27, + 37971 - 19968: jis0208<<14 | 0x2B<<7 | 0x59, + 37973 - 19968: jis0212<<14 | 0x44<<7 | 0x4D, + 37977 - 19968: jis0212<<14 | 0x44<<7 | 0x4E, + 37978 - 19968: jis0208<<14 | 0x4E<<7 | 0x33, + 37979 - 19968: jis0208<<14 | 0x4E<<7 | 0x29, + 37980 - 19968: jis0212<<14 | 0x44<<7 | 0x4F, + 37982 - 19968: jis0208<<14 | 0x4E<<7 | 0x2C, + 37983 - 19968: jis0212<<14 | 0x44<<7 | 0x50, + 37984 - 19968: jis0208<<14 | 0x4E<<7 | 0x2A, + 37985 - 19968: jis0212<<14 | 0x44<<7 | 0x51, + 37986 - 19968: jis0208<<14 | 0x4E<<7 | 0x2B, + 37987 - 19968: jis0212<<14 | 0x44<<7 | 0x52, + 37992 - 19968: jis0212<<14 | 0x44<<7 | 0x53, + 37994 - 19968: jis0208<<14 | 0x4E<<7 | 0x2D, + 37995 - 19968: jis0212<<14 | 0x44<<7 | 0x54, + 37997 - 19968: jis0212<<14 | 0x44<<7 | 0x55, + 37998 - 19968: jis0212<<14 | 0x44<<7 | 0x56, + 37999 - 19968: jis0212<<14 | 0x44<<7 | 0x57, + 38000 - 19968: jis0208<<14 | 0x4E<<7 | 0x2F, + 38001 - 19968: jis0212<<14 | 0x44<<7 | 0x58, + 38002 - 19968: jis0212<<14 | 0x44<<7 | 0x59, + 38005 - 19968: jis0208<<14 | 0x4E<<7 | 0x30, + 38007 - 19968: jis0208<<14 | 0x4E<<7 | 0x31, + 38012 - 19968: jis0208<<14 | 0x4E<<7 | 0x34, + 38013 - 19968: jis0208<<14 | 0x4E<<7 | 0x32, + 38014 - 19968: jis0208<<14 | 0x4E<<7 | 0x35, + 38015 - 19968: jis0208<<14 | 0x4E<<7 | 0x37, + 38017 - 19968: jis0208<<14 | 0x4E<<7 | 0x36, + 38019 - 19968: jis0212<<14 | 0x44<<7 | 0x5B, + 38020 - 19968: jis0212<<14 | 0x44<<7 | 0x5A, + 38263 - 19968: jis0208<<14 | 0x23<<7 | 0x18, + 38264 - 19968: jis0212<<14 | 0x44<<7 | 0x5C, + 38265 - 19968: jis0212<<14 | 0x44<<7 | 0x5D, + 38270 - 19968: jis0212<<14 | 0x45<<7 | 0x00, + 38272 - 19968: jis0208<<14 | 0x2B<<7 | 0x46, + 38274 - 19968: jis0208<<14 | 0x4E<<7 | 0x38, + 38275 - 19968: jis0208<<14 | 0x20<<7 | 0x0D, + 38276 - 19968: jis0212<<14 | 0x45<<7 | 0x01, + 38279 - 19968: jis0208<<14 | 0x4E<<7 | 0x39, + 38280 - 19968: jis0212<<14 | 0x45<<7 | 0x02, + 38281 - 19968: jis0208<<14 | 0x29<<7 | 0x23, + 38282 - 19968: jis0208<<14 | 0x4E<<7 | 0x3A, + 38283 - 19968: jis0208<<14 | 0x12<<7 | 0x0A, + 38284 - 19968: jis0212<<14 | 0x45<<7 | 0x03, + 38285 - 19968: jis0212<<14 | 0x45<<7 | 0x04, + 38286 - 19968: jis0212<<14 | 0x45<<7 | 0x05, + 38287 - 19968: jis0208<<14 | 0x10<<7 | 0x1B, + 38289 - 19968: jis0208<<14 | 0x13<<7 | 0x36, + 38290 - 19968: jis0208<<14 | 0x5B<<7 | 0x2D, + 38291 - 19968: jis0208<<14 | 0x13<<7 | 0x35, + 38292 - 19968: jis0208<<14 | 0x4E<<7 | 0x3B, + 38294 - 19968: jis0208<<14 | 0x4E<<7 | 0x3C, + 38296 - 19968: jis0208<<14 | 0x4E<<7 | 0x3D, + 38297 - 19968: jis0208<<14 | 0x4E<<7 | 0x3E, + 38301 - 19968: jis0212<<14 | 0x45<<7 | 0x06, + 38302 - 19968: jis0212<<14 | 0x45<<7 | 0x07, + 38303 - 19968: jis0212<<14 | 0x45<<7 | 0x08, + 38304 - 19968: jis0208<<14 | 0x4E<<7 | 0x3F, + 38305 - 19968: jis0212<<14 | 0x45<<7 | 0x09, + 38306 - 19968: jis0208<<14 | 0x13<<7 | 0x37, + 38307 - 19968: jis0208<<14 | 0x12<<7 | 0x34, + 38308 - 19968: jis0208<<14 | 0x18<<7 | 0x3D, + 38309 - 19968: jis0208<<14 | 0x27<<7 | 0x15, + 38310 - 19968: jis0212<<14 | 0x45<<7 | 0x0A, + 38311 - 19968: jis0208<<14 | 0x4E<<7 | 0x41, + 38312 - 19968: jis0208<<14 | 0x4E<<7 | 0x40, + 38313 - 19968: jis0212<<14 | 0x45<<7 | 0x0B, + 38315 - 19968: jis0212<<14 | 0x45<<7 | 0x0C, + 38316 - 19968: jis0212<<14 | 0x45<<7 | 0x0D, + 38317 - 19968: jis0208<<14 | 0x4E<<7 | 0x42, + 38322 - 19968: jis0208<<14 | 0x10<<7 | 0x3B, + 38324 - 19968: jis0212<<14 | 0x45<<7 | 0x0E, + 38326 - 19968: jis0212<<14 | 0x45<<7 | 0x0F, + 38329 - 19968: jis0208<<14 | 0x4E<<7 | 0x45, + 38330 - 19968: jis0212<<14 | 0x45<<7 | 0x10, + 38331 - 19968: jis0208<<14 | 0x4E<<7 | 0x44, + 38332 - 19968: jis0208<<14 | 0x4E<<7 | 0x43, + 38333 - 19968: jis0212<<14 | 0x45<<7 | 0x11, + 38334 - 19968: jis0208<<14 | 0x4E<<7 | 0x46, + 38335 - 19968: jis0212<<14 | 0x45<<7 | 0x12, + 38339 - 19968: jis0208<<14 | 0x4E<<7 | 0x49, + 38342 - 19968: jis0212<<14 | 0x45<<7 | 0x13, + 38343 - 19968: jis0208<<14 | 0x0F<<7 | 0x26, + 38344 - 19968: jis0212<<14 | 0x45<<7 | 0x14, + 38345 - 19968: jis0212<<14 | 0x45<<7 | 0x15, + 38346 - 19968: jis0208<<14 | 0x4E<<7 | 0x47, + 38347 - 19968: jis0212<<14 | 0x45<<7 | 0x16, + 38348 - 19968: jis0208<<14 | 0x4E<<7 | 0x4B, + 38349 - 19968: jis0208<<14 | 0x4E<<7 | 0x4A, + 38352 - 19968: jis0212<<14 | 0x45<<7 | 0x17, + 38353 - 19968: jis0212<<14 | 0x45<<7 | 0x18, + 38354 - 19968: jis0212<<14 | 0x45<<7 | 0x19, + 38355 - 19968: jis0212<<14 | 0x45<<7 | 0x1A, + 38356 - 19968: jis0208<<14 | 0x4E<<7 | 0x4D, + 38357 - 19968: jis0208<<14 | 0x4E<<7 | 0x4C, + 38358 - 19968: jis0208<<14 | 0x4E<<7 | 0x4E, + 38360 - 19968: jis0208<<14 | 0x25<<7 | 0x0D, + 38361 - 19968: jis0212<<14 | 0x45<<7 | 0x1B, + 38362 - 19968: jis0212<<14 | 0x45<<7 | 0x1C, + 38364 - 19968: jis0208<<14 | 0x4E<<7 | 0x4F, + 38365 - 19968: jis0212<<14 | 0x45<<7 | 0x1D, + 38366 - 19968: jis0212<<14 | 0x45<<7 | 0x1E, + 38367 - 19968: jis0212<<14 | 0x45<<7 | 0x1F, + 38368 - 19968: jis0212<<14 | 0x45<<7 | 0x20, + 38369 - 19968: jis0208<<14 | 0x4E<<7 | 0x50, + 38370 - 19968: jis0208<<14 | 0x4E<<7 | 0x52, + 38372 - 19968: jis0212<<14 | 0x45<<7 | 0x21, + 38373 - 19968: jis0208<<14 | 0x4E<<7 | 0x51, + 38374 - 19968: jis0212<<14 | 0x45<<7 | 0x22, + 38428 - 19968: jis0208<<14 | 0x28<<7 | 0x4B, + 38429 - 19968: jis0212<<14 | 0x45<<7 | 0x23, + 38430 - 19968: jis0212<<14 | 0x45<<7 | 0x24, + 38433 - 19968: jis0208<<14 | 0x4E<<7 | 0x53, + 38434 - 19968: jis0212<<14 | 0x45<<7 | 0x25, + 38436 - 19968: jis0212<<14 | 0x45<<7 | 0x26, + 38437 - 19968: jis0212<<14 | 0x45<<7 | 0x27, + 38438 - 19968: jis0212<<14 | 0x45<<7 | 0x28, + 38440 - 19968: jis0208<<14 | 0x4E<<7 | 0x54, + 38442 - 19968: jis0208<<14 | 0x19<<7 | 0x44, + 38444 - 19968: jis0212<<14 | 0x45<<7 | 0x29, + 38446 - 19968: jis0208<<14 | 0x4E<<7 | 0x55, + 38447 - 19968: jis0208<<14 | 0x4E<<7 | 0x56, + 38449 - 19968: jis0212<<14 | 0x45<<7 | 0x2A, + 38450 - 19968: jis0208<<14 | 0x2A<<7 | 0x28, + 38451 - 19968: jis0212<<14 | 0x45<<7 | 0x2B, + 38455 - 19968: jis0212<<14 | 0x45<<7 | 0x2C, + 38456 - 19968: jis0212<<14 | 0x45<<7 | 0x2D, + 38457 - 19968: jis0212<<14 | 0x45<<7 | 0x2E, + 38458 - 19968: jis0212<<14 | 0x45<<7 | 0x2F, + 38459 - 19968: jis0208<<14 | 0x20<<7 | 0x2A, + 38460 - 19968: jis0212<<14 | 0x45<<7 | 0x30, + 38461 - 19968: jis0212<<14 | 0x45<<7 | 0x31, + 38463 - 19968: jis0208<<14 | 0x0F<<7 | 0x03, + 38464 - 19968: jis0208<<14 | 0x21<<7 | 0x2A, + 38465 - 19968: jis0212<<14 | 0x45<<7 | 0x32, + 38466 - 19968: jis0208<<14 | 0x4E<<7 | 0x57, + 38468 - 19968: jis0208<<14 | 0x28<<7 | 0x4C, + 38475 - 19968: jis0208<<14 | 0x4E<<7 | 0x5A, + 38476 - 19968: jis0208<<14 | 0x4E<<7 | 0x58, + 38477 - 19968: jis0208<<14 | 0x18<<7 | 0x3E, + 38479 - 19968: jis0208<<14 | 0x4E<<7 | 0x59, + 38480 - 19968: jis0208<<14 | 0x17<<7 | 0x21, + 38482 - 19968: jis0212<<14 | 0x45<<7 | 0x33, + 38484 - 19968: jis0212<<14 | 0x45<<7 | 0x34, + 38486 - 19968: jis0212<<14 | 0x45<<7 | 0x35, + 38487 - 19968: jis0212<<14 | 0x45<<7 | 0x36, + 38488 - 19968: jis0212<<14 | 0x45<<7 | 0x37, + 38491 - 19968: jis0208<<14 | 0x29<<7 | 0x24, + 38492 - 19968: jis0208<<14 | 0x4E<<7 | 0x5C, + 38493 - 19968: jis0208<<14 | 0x4F<<7 | 0x00, + 38494 - 19968: jis0208<<14 | 0x4E<<7 | 0x5D, + 38495 - 19968: jis0208<<14 | 0x4F<<7 | 0x01, + 38497 - 19968: jis0212<<14 | 0x45<<7 | 0x38, + 38498 - 19968: jis0208<<14 | 0x10<<7 | 0x00, + 38499 - 19968: jis0208<<14 | 0x1E<<7 | 0x37, + 38500 - 19968: jis0208<<14 | 0x1C<<7 | 0x5B, + 38501 - 19968: jis0208<<14 | 0x13<<7 | 0x38, + 38502 - 19968: jis0208<<14 | 0x4F<<7 | 0x02, + 38506 - 19968: jis0208<<14 | 0x26<<7 | 0x45, + 38508 - 19968: jis0208<<14 | 0x4F<<7 | 0x04, + 38510 - 19968: jis0212<<14 | 0x45<<7 | 0x39, + 38512 - 19968: jis0208<<14 | 0x10<<7 | 0x01, + 38514 - 19968: jis0208<<14 | 0x4F<<7 | 0x03, + 38515 - 19968: jis0208<<14 | 0x23<<7 | 0x23, + 38516 - 19968: jis0212<<14 | 0x45<<7 | 0x3A, + 38517 - 19968: jis0208<<14 | 0x2D<<7 | 0x2C, + 38518 - 19968: jis0208<<14 | 0x25<<7 | 0x0A, + 38519 - 19968: jis0208<<14 | 0x4E<<7 | 0x5B, + 38520 - 19968: jis0208<<14 | 0x2D<<7 | 0x05, + 38522 - 19968: jis0208<<14 | 0x17<<7 | 0x10, + 38523 - 19968: jis0212<<14 | 0x45<<7 | 0x3B, + 38524 - 19968: jis0212<<14 | 0x45<<7 | 0x3C, + 38525 - 19968: jis0208<<14 | 0x2C<<7 | 0x3A, + 38526 - 19968: jis0212<<14 | 0x45<<7 | 0x3D, + 38527 - 19968: jis0212<<14 | 0x45<<7 | 0x3E, + 38529 - 19968: jis0212<<14 | 0x45<<7 | 0x3F, + 38530 - 19968: jis0212<<14 | 0x45<<7 | 0x40, + 38531 - 19968: jis0212<<14 | 0x45<<7 | 0x41, + 38532 - 19968: jis0212<<14 | 0x45<<7 | 0x42, + 38533 - 19968: jis0208<<14 | 0x15<<7 | 0x58, + 38534 - 19968: jis0208<<14 | 0x2D<<7 | 0x13, + 38536 - 19968: jis0208<<14 | 0x16<<7 | 0x07, + 38537 - 19968: jis0212<<14 | 0x45<<7 | 0x43, + 38538 - 19968: jis0208<<14 | 0x21<<7 | 0x41, + 38539 - 19968: jis0208<<14 | 0x46<<7 | 0x00, + 38541 - 19968: jis0208<<14 | 0x4F<<7 | 0x05, + 38542 - 19968: jis0208<<14 | 0x12<<7 | 0x0B, + 38543 - 19968: jis0208<<14 | 0x1E<<7 | 0x4E, + 38545 - 19968: jis0212<<14 | 0x45<<7 | 0x44, + 38548 - 19968: jis0208<<14 | 0x12<<7 | 0x35, + 38549 - 19968: jis0208<<14 | 0x4F<<7 | 0x07, + 38550 - 19968: jis0212<<14 | 0x45<<7 | 0x45, + 38551 - 19968: jis0208<<14 | 0x4F<<7 | 0x08, + 38552 - 19968: jis0208<<14 | 0x4F<<7 | 0x06, + 38553 - 19968: jis0208<<14 | 0x16<<7 | 0x43, + 38554 - 19968: jis0212<<14 | 0x45<<7 | 0x46, + 38555 - 19968: jis0208<<14 | 0x19<<7 | 0x3C, + 38556 - 19968: jis0208<<14 | 0x1D<<7 | 0x42, + 38557 - 19968: jis0208<<14 | 0x5B<<7 | 0x30, + 38559 - 19968: jis0212<<14 | 0x45<<7 | 0x48, + 38560 - 19968: jis0208<<14 | 0x10<<7 | 0x02, + 38563 - 19968: jis0208<<14 | 0x2D<<7 | 0x38, + 38564 - 19968: jis0212<<14 | 0x45<<7 | 0x49, + 38565 - 19968: jis0212<<14 | 0x45<<7 | 0x4A, + 38566 - 19968: jis0212<<14 | 0x45<<7 | 0x4B, + 38567 - 19968: jis0208<<14 | 0x4F<<7 | 0x0A, + 38568 - 19968: jis0208<<14 | 0x4D<<7 | 0x0D, + 38569 - 19968: jis0212<<14 | 0x45<<7 | 0x4C, + 38570 - 19968: jis0208<<14 | 0x4F<<7 | 0x09, + 38574 - 19968: jis0212<<14 | 0x45<<7 | 0x4D, + 38575 - 19968: jis0208<<14 | 0x5B<<7 | 0x31, + 38576 - 19968: jis0208<<14 | 0x4F<<7 | 0x0D, + 38577 - 19968: jis0208<<14 | 0x4F<<7 | 0x0B, + 38578 - 19968: jis0208<<14 | 0x4F<<7 | 0x0C, + 38579 - 19968: jis0212<<14 | 0x45<<7 | 0x4F, + 38580 - 19968: jis0208<<14 | 0x4F<<7 | 0x0E, + 38582 - 19968: jis0208<<14 | 0x4F<<7 | 0x0F, + 38583 - 19968: jis0208<<14 | 0x2D<<7 | 0x4B, + 38584 - 19968: jis0208<<14 | 0x4F<<7 | 0x10, + 38585 - 19968: jis0208<<14 | 0x4F<<7 | 0x11, + 38586 - 19968: jis0212<<14 | 0x45<<7 | 0x50, + 38587 - 19968: jis0208<<14 | 0x1F<<7 | 0x28, + 38588 - 19968: jis0208<<14 | 0x27<<7 | 0x1A, + 38592 - 19968: jis0208<<14 | 0x1E<<7 | 0x5C, + 38593 - 19968: jis0208<<14 | 0x13<<7 | 0x46, + 38596 - 19968: jis0208<<14 | 0x2C<<7 | 0x19, + 38597 - 19968: jis0208<<14 | 0x11<<7 | 0x4C, + 38598 - 19968: jis0208<<14 | 0x1C<<7 | 0x17, + 38599 - 19968: jis0208<<14 | 0x17<<7 | 0x3A, + 38601 - 19968: jis0208<<14 | 0x4F<<7 | 0x14, + 38602 - 19968: jis0212<<14 | 0x45<<7 | 0x51, + 38603 - 19968: jis0208<<14 | 0x4F<<7 | 0x13, + 38604 - 19968: jis0208<<14 | 0x1A<<7 | 0x52, + 38605 - 19968: jis0208<<14 | 0x4F<<7 | 0x15, + 38606 - 19968: jis0208<<14 | 0x4F<<7 | 0x12, + 38609 - 19968: jis0208<<14 | 0x1A<<7 | 0x07, + 38610 - 19968: jis0212<<14 | 0x45<<7 | 0x52, + 38613 - 19968: jis0208<<14 | 0x4F<<7 | 0x19, + 38614 - 19968: jis0208<<14 | 0x49<<7 | 0x0C, + 38616 - 19968: jis0212<<14 | 0x45<<7 | 0x54, + 38617 - 19968: jis0208<<14 | 0x31<<7 | 0x35, + 38618 - 19968: jis0212<<14 | 0x45<<7 | 0x55, + 38619 - 19968: jis0208<<14 | 0x1E<<7 | 0x56, + 38620 - 19968: jis0208<<14 | 0x4F<<7 | 0x17, + 38621 - 19968: jis0212<<14 | 0x45<<7 | 0x56, + 38622 - 19968: jis0212<<14 | 0x45<<7 | 0x57, + 38623 - 19968: jis0212<<14 | 0x45<<7 | 0x58, + 38626 - 19968: jis0208<<14 | 0x2D<<7 | 0x04, + 38627 - 19968: jis0208<<14 | 0x25<<7 | 0x50, + 38632 - 19968: jis0208<<14 | 0x10<<7 | 0x0A, + 38633 - 19968: jis0212<<14 | 0x45<<7 | 0x59, + 38634 - 19968: jis0208<<14 | 0x1F<<7 | 0x42, + 38635 - 19968: jis0208<<14 | 0x1B<<7 | 0x15, + 38639 - 19968: jis0212<<14 | 0x45<<7 | 0x5A, + 38640 - 19968: jis0208<<14 | 0x29<<7 | 0x16, + 38641 - 19968: jis0212<<14 | 0x45<<7 | 0x5B, + 38642 - 19968: jis0208<<14 | 0x10<<7 | 0x1F, + 38646 - 19968: jis0208<<14 | 0x2D<<7 | 0x4C, + 38647 - 19968: jis0208<<14 | 0x2C<<7 | 0x4A, + 38649 - 19968: jis0208<<14 | 0x4F<<7 | 0x1A, + 38650 - 19968: jis0212<<14 | 0x45<<7 | 0x5C, + 38651 - 19968: jis0208<<14 | 0x24<<7 | 0x24, + 38656 - 19968: jis0208<<14 | 0x1B<<7 | 0x5A, + 38658 - 19968: jis0212<<14 | 0x45<<7 | 0x5D, + 38659 - 19968: jis0212<<14 | 0x46<<7 | 0x00, + 38660 - 19968: jis0208<<14 | 0x4F<<7 | 0x1B, + 38661 - 19968: jis0212<<14 | 0x46<<7 | 0x01, + 38662 - 19968: jis0208<<14 | 0x4F<<7 | 0x1C, + 38663 - 19968: jis0208<<14 | 0x1E<<7 | 0x2B, + 38664 - 19968: jis0208<<14 | 0x4F<<7 | 0x1D, + 38665 - 19968: jis0212<<14 | 0x46<<7 | 0x02, + 38666 - 19968: jis0208<<14 | 0x2D<<7 | 0x4D, + 38669 - 19968: jis0208<<14 | 0x4F<<7 | 0x18, + 38670 - 19968: jis0208<<14 | 0x4F<<7 | 0x1F, + 38671 - 19968: jis0208<<14 | 0x4F<<7 | 0x21, + 38673 - 19968: jis0208<<14 | 0x4F<<7 | 0x20, + 38675 - 19968: jis0208<<14 | 0x4F<<7 | 0x1E, + 38678 - 19968: jis0208<<14 | 0x4F<<7 | 0x22, + 38681 - 19968: jis0208<<14 | 0x4F<<7 | 0x23, + 38682 - 19968: jis0212<<14 | 0x46<<7 | 0x03, + 38683 - 19968: jis0212<<14 | 0x46<<7 | 0x04, + 38684 - 19968: jis0208<<14 | 0x20<<7 | 0x59, + 38685 - 19968: jis0212<<14 | 0x46<<7 | 0x05, + 38686 - 19968: jis0208<<14 | 0x11<<7 | 0x41, + 38689 - 19968: jis0212<<14 | 0x46<<7 | 0x06, + 38690 - 19968: jis0212<<14 | 0x46<<7 | 0x07, + 38691 - 19968: jis0212<<14 | 0x46<<7 | 0x08, + 38692 - 19968: jis0208<<14 | 0x4F<<7 | 0x24, + 38695 - 19968: jis0208<<14 | 0x2B<<7 | 0x17, + 38696 - 19968: jis0212<<14 | 0x46<<7 | 0x09, + 38698 - 19968: jis0208<<14 | 0x4F<<7 | 0x25, + 38704 - 19968: jis0208<<14 | 0x4F<<7 | 0x26, + 38705 - 19968: jis0212<<14 | 0x46<<7 | 0x0A, + 38706 - 19968: jis0208<<14 | 0x2E<<7 | 0x09, + 38707 - 19968: jis0208<<14 | 0x5B<<7 | 0x32, + 38712 - 19968: jis0208<<14 | 0x3A<<7 | 0x10, + 38713 - 19968: jis0208<<14 | 0x4F<<7 | 0x27, + 38715 - 19968: jis0208<<14 | 0x5B<<7 | 0x33, + 38717 - 19968: jis0208<<14 | 0x4F<<7 | 0x28, + 38718 - 19968: jis0208<<14 | 0x4F<<7 | 0x29, + 38721 - 19968: jis0212<<14 | 0x46<<7 | 0x0C, + 38722 - 19968: jis0208<<14 | 0x4F<<7 | 0x2D, + 38723 - 19968: jis0208<<14 | 0x5B<<7 | 0x34, + 38724 - 19968: jis0208<<14 | 0x4F<<7 | 0x2A, + 38726 - 19968: jis0208<<14 | 0x4F<<7 | 0x2B, + 38728 - 19968: jis0208<<14 | 0x4F<<7 | 0x2C, + 38729 - 19968: jis0208<<14 | 0x4F<<7 | 0x2E, + 38730 - 19968: jis0212<<14 | 0x46<<7 | 0x0E, + 38733 - 19968: jis0208<<14 | 0x5B<<7 | 0x35, + 38734 - 19968: jis0212<<14 | 0x46<<7 | 0x0F, + 38735 - 19968: jis0208<<14 | 0x5B<<7 | 0x36, + 38737 - 19968: jis0208<<14 | 0x5B<<7 | 0x37, + 38738 - 19968: jis0208<<14 | 0x1F<<7 | 0x23, + 38741 - 19968: jis0208<<14 | 0x5B<<7 | 0x38, + 38742 - 19968: jis0208<<14 | 0x2B<<7 | 0x56, + 38743 - 19968: jis0212<<14 | 0x46<<7 | 0x12, + 38744 - 19968: jis0212<<14 | 0x46<<7 | 0x13, + 38745 - 19968: jis0208<<14 | 0x1F<<7 | 0x24, + 38746 - 19968: jis0212<<14 | 0x46<<7 | 0x14, + 38747 - 19968: jis0212<<14 | 0x46<<7 | 0x15, + 38748 - 19968: jis0208<<14 | 0x4F<<7 | 0x2F, + 38750 - 19968: jis0208<<14 | 0x27<<7 | 0x52, + 38752 - 19968: jis0208<<14 | 0x4F<<7 | 0x30, + 38753 - 19968: jis0208<<14 | 0x52<<7 | 0x32, + 38754 - 19968: jis0208<<14 | 0x2B<<7 | 0x2B, + 38755 - 19968: jis0212<<14 | 0x46<<7 | 0x16, + 38756 - 19968: jis0208<<14 | 0x4F<<7 | 0x31, + 38758 - 19968: jis0208<<14 | 0x4F<<7 | 0x32, + 38759 - 19968: jis0212<<14 | 0x46<<7 | 0x17, + 38760 - 19968: jis0208<<14 | 0x4F<<7 | 0x33, + 38761 - 19968: jis0208<<14 | 0x12<<7 | 0x36, + 38762 - 19968: jis0212<<14 | 0x46<<7 | 0x18, + 38763 - 19968: jis0208<<14 | 0x4F<<7 | 0x35, + 38765 - 19968: jis0208<<14 | 0x1E<<7 | 0x38, + 38766 - 19968: jis0212<<14 | 0x46<<7 | 0x19, + 38769 - 19968: jis0208<<14 | 0x4F<<7 | 0x36, + 38771 - 19968: jis0212<<14 | 0x46<<7 | 0x1A, + 38772 - 19968: jis0208<<14 | 0x16<<7 | 0x03, + 38774 - 19968: jis0212<<14 | 0x46<<7 | 0x1B, + 38775 - 19968: jis0212<<14 | 0x46<<7 | 0x1C, + 38776 - 19968: jis0212<<14 | 0x46<<7 | 0x1D, + 38777 - 19968: jis0208<<14 | 0x4F<<7 | 0x37, + 38778 - 19968: jis0208<<14 | 0x4F<<7 | 0x3B, + 38779 - 19968: jis0212<<14 | 0x46<<7 | 0x1E, + 38780 - 19968: jis0208<<14 | 0x4F<<7 | 0x39, + 38781 - 19968: jis0212<<14 | 0x46<<7 | 0x1F, + 38783 - 19968: jis0212<<14 | 0x46<<7 | 0x20, + 38784 - 19968: jis0212<<14 | 0x46<<7 | 0x21, + 38785 - 19968: jis0208<<14 | 0x4F<<7 | 0x3A, + 38788 - 19968: jis0208<<14 | 0x12<<7 | 0x52, + 38789 - 19968: jis0208<<14 | 0x4F<<7 | 0x38, + 38790 - 19968: jis0208<<14 | 0x4F<<7 | 0x3C, + 38793 - 19968: jis0212<<14 | 0x46<<7 | 0x22, + 38795 - 19968: jis0208<<14 | 0x4F<<7 | 0x3D, + 38797 - 19968: jis0208<<14 | 0x0F<<7 | 0x27, + 38799 - 19968: jis0208<<14 | 0x4F<<7 | 0x3E, + 38800 - 19968: jis0208<<14 | 0x4F<<7 | 0x3F, + 38805 - 19968: jis0212<<14 | 0x46<<7 | 0x23, + 38806 - 19968: jis0212<<14 | 0x46<<7 | 0x24, + 38807 - 19968: jis0212<<14 | 0x46<<7 | 0x25, + 38808 - 19968: jis0208<<14 | 0x1D<<7 | 0x43, + 38809 - 19968: jis0212<<14 | 0x46<<7 | 0x26, + 38810 - 19968: jis0212<<14 | 0x46<<7 | 0x27, + 38812 - 19968: jis0208<<14 | 0x4F<<7 | 0x40, + 38814 - 19968: jis0212<<14 | 0x46<<7 | 0x28, + 38815 - 19968: jis0212<<14 | 0x46<<7 | 0x29, + 38816 - 19968: jis0208<<14 | 0x14<<7 | 0x26, + 38818 - 19968: jis0212<<14 | 0x46<<7 | 0x2A, + 38819 - 19968: jis0208<<14 | 0x4F<<7 | 0x43, + 38822 - 19968: jis0208<<14 | 0x4F<<7 | 0x42, + 38824 - 19968: jis0208<<14 | 0x4F<<7 | 0x41, + 38827 - 19968: jis0208<<14 | 0x4A<<7 | 0x50, + 38828 - 19968: jis0212<<14 | 0x46<<7 | 0x2B, + 38829 - 19968: jis0208<<14 | 0x29<<7 | 0x3B, + 38830 - 19968: jis0212<<14 | 0x46<<7 | 0x2C, + 38833 - 19968: jis0212<<14 | 0x46<<7 | 0x2D, + 38834 - 19968: jis0212<<14 | 0x46<<7 | 0x2E, + 38835 - 19968: jis0208<<14 | 0x4F<<7 | 0x44, + 38836 - 19968: jis0208<<14 | 0x4F<<7 | 0x45, + 38837 - 19968: jis0212<<14 | 0x46<<7 | 0x2F, + 38838 - 19968: jis0212<<14 | 0x46<<7 | 0x30, + 38840 - 19968: jis0212<<14 | 0x46<<7 | 0x31, + 38841 - 19968: jis0212<<14 | 0x46<<7 | 0x32, + 38842 - 19968: jis0212<<14 | 0x46<<7 | 0x33, + 38844 - 19968: jis0212<<14 | 0x46<<7 | 0x34, + 38846 - 19968: jis0212<<14 | 0x46<<7 | 0x35, + 38847 - 19968: jis0212<<14 | 0x46<<7 | 0x36, + 38849 - 19968: jis0212<<14 | 0x46<<7 | 0x37, + 38851 - 19968: jis0208<<14 | 0x4F<<7 | 0x46, + 38852 - 19968: jis0212<<14 | 0x46<<7 | 0x38, + 38853 - 19968: jis0212<<14 | 0x46<<7 | 0x39, + 38854 - 19968: jis0208<<14 | 0x4F<<7 | 0x47, + 38855 - 19968: jis0212<<14 | 0x46<<7 | 0x3A, + 38856 - 19968: jis0208<<14 | 0x4F<<7 | 0x48, + 38857 - 19968: jis0212<<14 | 0x46<<7 | 0x3B, + 38858 - 19968: jis0212<<14 | 0x46<<7 | 0x3C, + 38859 - 19968: jis0208<<14 | 0x4F<<7 | 0x49, + 38860 - 19968: jis0212<<14 | 0x46<<7 | 0x3D, + 38861 - 19968: jis0212<<14 | 0x46<<7 | 0x3E, + 38862 - 19968: jis0212<<14 | 0x46<<7 | 0x3F, + 38864 - 19968: jis0212<<14 | 0x46<<7 | 0x40, + 38865 - 19968: jis0212<<14 | 0x46<<7 | 0x41, + 38867 - 19968: jis0208<<14 | 0x13<<7 | 0x39, + 38868 - 19968: jis0212<<14 | 0x46<<7 | 0x42, + 38871 - 19968: jis0212<<14 | 0x46<<7 | 0x43, + 38872 - 19968: jis0212<<14 | 0x46<<7 | 0x44, + 38873 - 19968: jis0212<<14 | 0x46<<7 | 0x45, + 38875 - 19968: jis0212<<14 | 0x46<<7 | 0x49, + 38876 - 19968: jis0208<<14 | 0x4F<<7 | 0x4A, + 38877 - 19968: jis0212<<14 | 0x46<<7 | 0x46, + 38878 - 19968: jis0212<<14 | 0x46<<7 | 0x47, + 38880 - 19968: jis0212<<14 | 0x46<<7 | 0x48, + 38881 - 19968: jis0212<<14 | 0x46<<7 | 0x4A, + 38884 - 19968: jis0212<<14 | 0x46<<7 | 0x4B, + 38893 - 19968: jis0208<<14 | 0x4F<<7 | 0x4B, + 38894 - 19968: jis0208<<14 | 0x26<<7 | 0x02, + 38895 - 19968: jis0212<<14 | 0x46<<7 | 0x4C, + 38897 - 19968: jis0212<<14 | 0x46<<7 | 0x4D, + 38898 - 19968: jis0208<<14 | 0x4F<<7 | 0x4D, + 38899 - 19968: jis0208<<14 | 0x11<<7 | 0x1A, + 38900 - 19968: jis0212<<14 | 0x46<<7 | 0x4E, + 38901 - 19968: jis0208<<14 | 0x4F<<7 | 0x50, + 38902 - 19968: jis0208<<14 | 0x4F<<7 | 0x4F, + 38903 - 19968: jis0212<<14 | 0x46<<7 | 0x4F, + 38904 - 19968: jis0212<<14 | 0x46<<7 | 0x50, + 38906 - 19968: jis0212<<14 | 0x46<<7 | 0x51, + 38907 - 19968: jis0208<<14 | 0x10<<7 | 0x03, + 38911 - 19968: jis0208<<14 | 0x15<<7 | 0x20, + 38913 - 19968: jis0208<<14 | 0x29<<7 | 0x26, + 38914 - 19968: jis0208<<14 | 0x23<<7 | 0x19, + 38915 - 19968: jis0208<<14 | 0x19<<7 | 0x01, + 38917 - 19968: jis0208<<14 | 0x18<<7 | 0x3F, + 38918 - 19968: jis0208<<14 | 0x1C<<7 | 0x46, + 38919 - 19968: jis0212<<14 | 0x46<<7 | 0x52, + 38920 - 19968: jis0208<<14 | 0x1E<<7 | 0x3B, + 38922 - 19968: jis0212<<14 | 0x46<<7 | 0x53, + 38924 - 19968: jis0208<<14 | 0x4F<<7 | 0x52, + 38925 - 19968: jis0212<<14 | 0x46<<7 | 0x55, + 38926 - 19968: jis0212<<14 | 0x46<<7 | 0x56, + 38927 - 19968: jis0208<<14 | 0x4F<<7 | 0x51, + 38928 - 19968: jis0208<<14 | 0x2C<<7 | 0x21, + 38929 - 19968: jis0208<<14 | 0x13<<7 | 0x47, + 38930 - 19968: jis0208<<14 | 0x27<<7 | 0x31, + 38931 - 19968: jis0208<<14 | 0x25<<7 | 0x3B, + 38932 - 19968: jis0212<<14 | 0x46<<7 | 0x57, + 38934 - 19968: jis0212<<14 | 0x46<<7 | 0x58, + 38935 - 19968: jis0208<<14 | 0x1E<<7 | 0x5B, + 38936 - 19968: jis0208<<14 | 0x2D<<7 | 0x2D, + 38937 - 19968: jis0212<<14 | 0x46<<7 | 0x54, + 38938 - 19968: jis0208<<14 | 0x16<<7 | 0x3A, + 38940 - 19968: jis0212<<14 | 0x46<<7 | 0x59, + 38942 - 19968: jis0212<<14 | 0x46<<7 | 0x5A, + 38944 - 19968: jis0212<<14 | 0x46<<7 | 0x5B, + 38945 - 19968: jis0208<<14 | 0x4F<<7 | 0x55, + 38947 - 19968: jis0212<<14 | 0x46<<7 | 0x5C, + 38948 - 19968: jis0208<<14 | 0x4F<<7 | 0x54, + 38949 - 19968: jis0212<<14 | 0x47<<7 | 0x07, + 38950 - 19968: jis0212<<14 | 0x46<<7 | 0x5D, + 38955 - 19968: jis0212<<14 | 0x47<<7 | 0x00, + 38956 - 19968: jis0208<<14 | 0x2A<<7 | 0x2A, + 38957 - 19968: jis0208<<14 | 0x25<<7 | 0x0B, + 38958 - 19968: jis0212<<14 | 0x47<<7 | 0x01, + 38959 - 19968: jis0212<<14 | 0x47<<7 | 0x02, + 38960 - 19968: jis0212<<14 | 0x47<<7 | 0x03, + 38962 - 19968: jis0212<<14 | 0x47<<7 | 0x04, + 38963 - 19968: jis0212<<14 | 0x47<<7 | 0x05, + 38964 - 19968: jis0208<<14 | 0x10<<7 | 0x2F, + 38965 - 19968: jis0212<<14 | 0x47<<7 | 0x06, + 38967 - 19968: jis0208<<14 | 0x4F<<7 | 0x56, + 38968 - 19968: jis0208<<14 | 0x4F<<7 | 0x53, + 38971 - 19968: jis0208<<14 | 0x28<<7 | 0x30, + 38972 - 19968: jis0208<<14 | 0x2C<<7 | 0x49, + 38973 - 19968: jis0208<<14 | 0x4F<<7 | 0x57, + 38974 - 19968: jis0212<<14 | 0x47<<7 | 0x08, + 38980 - 19968: jis0212<<14 | 0x47<<7 | 0x09, + 38982 - 19968: jis0208<<14 | 0x4F<<7 | 0x58, + 38983 - 19968: jis0212<<14 | 0x47<<7 | 0x0A, + 38986 - 19968: jis0212<<14 | 0x47<<7 | 0x0B, + 38987 - 19968: jis0208<<14 | 0x4F<<7 | 0x5A, + 38988 - 19968: jis0208<<14 | 0x21<<7 | 0x49, + 38989 - 19968: jis0208<<14 | 0x12<<7 | 0x3A, + 38990 - 19968: jis0208<<14 | 0x12<<7 | 0x3B, + 38991 - 19968: jis0208<<14 | 0x4F<<7 | 0x59, + 38993 - 19968: jis0212<<14 | 0x47<<7 | 0x0C, + 38994 - 19968: jis0212<<14 | 0x47<<7 | 0x0D, + 38995 - 19968: jis0212<<14 | 0x47<<7 | 0x0E, + 38996 - 19968: jis0208<<14 | 0x13<<7 | 0x48, + 38997 - 19968: jis0208<<14 | 0x17<<7 | 0x11, + 38998 - 19968: jis0212<<14 | 0x47<<7 | 0x0F, + 38999 - 19968: jis0208<<14 | 0x5B<<7 | 0x39, + 39000 - 19968: jis0208<<14 | 0x13<<7 | 0x49, + 39001 - 19968: jis0212<<14 | 0x47<<7 | 0x11, + 39002 - 19968: jis0212<<14 | 0x47<<7 | 0x12, + 39003 - 19968: jis0208<<14 | 0x24<<7 | 0x1E, + 39006 - 19968: jis0208<<14 | 0x2D<<7 | 0x3F, + 39010 - 19968: jis0212<<14 | 0x47<<7 | 0x13, + 39011 - 19968: jis0212<<14 | 0x47<<7 | 0x14, + 39013 - 19968: jis0208<<14 | 0x5B<<7 | 0x3A, + 39014 - 19968: jis0212<<14 | 0x47<<7 | 0x16, + 39015 - 19968: jis0208<<14 | 0x17<<7 | 0x3B, + 39018 - 19968: jis0212<<14 | 0x47<<7 | 0x17, + 39019 - 19968: jis0208<<14 | 0x4F<<7 | 0x5B, + 39020 - 19968: jis0212<<14 | 0x47<<7 | 0x18, + 39023 - 19968: jis0208<<14 | 0x4F<<7 | 0x5C, + 39024 - 19968: jis0208<<14 | 0x4F<<7 | 0x5D, + 39025 - 19968: jis0208<<14 | 0x50<<7 | 0x00, + 39027 - 19968: jis0208<<14 | 0x50<<7 | 0x02, + 39028 - 19968: jis0208<<14 | 0x50<<7 | 0x01, + 39080 - 19968: jis0208<<14 | 0x28<<7 | 0x56, + 39082 - 19968: jis0208<<14 | 0x50<<7 | 0x03, + 39083 - 19968: jis0212<<14 | 0x47<<7 | 0x19, + 39085 - 19968: jis0212<<14 | 0x47<<7 | 0x1A, + 39086 - 19968: jis0212<<14 | 0x47<<7 | 0x1B, + 39087 - 19968: jis0208<<14 | 0x50<<7 | 0x04, + 39088 - 19968: jis0212<<14 | 0x47<<7 | 0x1C, + 39089 - 19968: jis0208<<14 | 0x50<<7 | 0x05, + 39092 - 19968: jis0212<<14 | 0x47<<7 | 0x1D, + 39094 - 19968: jis0208<<14 | 0x50<<7 | 0x06, + 39095 - 19968: jis0212<<14 | 0x47<<7 | 0x1E, + 39096 - 19968: jis0212<<14 | 0x47<<7 | 0x1F, + 39098 - 19968: jis0212<<14 | 0x47<<7 | 0x20, + 39099 - 19968: jis0212<<14 | 0x47<<7 | 0x21, + 39103 - 19968: jis0212<<14 | 0x47<<7 | 0x22, + 39106 - 19968: jis0212<<14 | 0x47<<7 | 0x23, + 39107 - 19968: jis0208<<14 | 0x50<<7 | 0x08, + 39108 - 19968: jis0208<<14 | 0x50<<7 | 0x07, + 39109 - 19968: jis0212<<14 | 0x47<<7 | 0x24, + 39110 - 19968: jis0208<<14 | 0x50<<7 | 0x09, + 39112 - 19968: jis0212<<14 | 0x47<<7 | 0x25, + 39116 - 19968: jis0212<<14 | 0x47<<7 | 0x26, + 39131 - 19968: jis0208<<14 | 0x27<<7 | 0x53, + 39132 - 19968: jis0208<<14 | 0x45<<7 | 0x2B, + 39135 - 19968: jis0208<<14 | 0x1E<<7 | 0x08, + 39137 - 19968: jis0212<<14 | 0x47<<7 | 0x27, + 39138 - 19968: jis0208<<14 | 0x14<<7 | 0x11, + 39139 - 19968: jis0212<<14 | 0x47<<7 | 0x28, + 39141 - 19968: jis0212<<14 | 0x47<<7 | 0x29, + 39142 - 19968: jis0212<<14 | 0x47<<7 | 0x2A, + 39143 - 19968: jis0212<<14 | 0x47<<7 | 0x2B, + 39145 - 19968: jis0208<<14 | 0x50<<7 | 0x0A, + 39146 - 19968: jis0212<<14 | 0x47<<7 | 0x2C, + 39147 - 19968: jis0208<<14 | 0x50<<7 | 0x0B, + 39149 - 19968: jis0208<<14 | 0x31<<7 | 0x0B, + 39150 - 19968: jis0208<<14 | 0x3C<<7 | 0x1A, + 39151 - 19968: jis0208<<14 | 0x27<<7 | 0x32, + 39154 - 19968: jis0208<<14 | 0x0F<<7 | 0x5A, + 39155 - 19968: jis0212<<14 | 0x47<<7 | 0x2D, + 39156 - 19968: jis0208<<14 | 0x0F<<7 | 0x1A, + 39158 - 19968: jis0212<<14 | 0x47<<7 | 0x2E, + 39164 - 19968: jis0208<<14 | 0x1A<<7 | 0x53, + 39165 - 19968: jis0208<<14 | 0x2A<<7 | 0x0F, + 39166 - 19968: jis0208<<14 | 0x1D<<7 | 0x5D, + 39170 - 19968: jis0212<<14 | 0x47<<7 | 0x2F, + 39171 - 19968: jis0208<<14 | 0x50<<7 | 0x0C, + 39173 - 19968: jis0208<<14 | 0x2B<<7 | 0x3E, + 39175 - 19968: jis0212<<14 | 0x47<<7 | 0x30, + 39176 - 19968: jis0212<<14 | 0x47<<7 | 0x31, + 39177 - 19968: jis0208<<14 | 0x50<<7 | 0x0D, + 39178 - 19968: jis0208<<14 | 0x2C<<7 | 0x3B, + 39180 - 19968: jis0208<<14 | 0x10<<7 | 0x21, + 39184 - 19968: jis0208<<14 | 0x1A<<7 | 0x20, + 39185 - 19968: jis0212<<14 | 0x47<<7 | 0x32, + 39186 - 19968: jis0208<<14 | 0x50<<7 | 0x0E, + 39187 - 19968: jis0208<<14 | 0x11<<7 | 0x4D, + 39188 - 19968: jis0208<<14 | 0x50<<7 | 0x0F, + 39189 - 19968: jis0212<<14 | 0x47<<7 | 0x33, + 39190 - 19968: jis0212<<14 | 0x47<<7 | 0x34, + 39191 - 19968: jis0212<<14 | 0x47<<7 | 0x35, + 39192 - 19968: jis0208<<14 | 0x50<<7 | 0x10, + 39194 - 19968: jis0212<<14 | 0x47<<7 | 0x36, + 39195 - 19968: jis0212<<14 | 0x47<<7 | 0x37, + 39196 - 19968: jis0212<<14 | 0x47<<7 | 0x38, + 39197 - 19968: jis0208<<14 | 0x50<<7 | 0x12, + 39198 - 19968: jis0208<<14 | 0x50<<7 | 0x13, + 39199 - 19968: jis0212<<14 | 0x47<<7 | 0x39, + 39200 - 19968: jis0208<<14 | 0x50<<7 | 0x15, + 39201 - 19968: jis0208<<14 | 0x50<<7 | 0x11, + 39202 - 19968: jis0212<<14 | 0x47<<7 | 0x3A, + 39204 - 19968: jis0208<<14 | 0x50<<7 | 0x14, + 39206 - 19968: jis0212<<14 | 0x47<<7 | 0x3B, + 39207 - 19968: jis0208<<14 | 0x5B<<7 | 0x3D, + 39208 - 19968: jis0208<<14 | 0x13<<7 | 0x3A, + 39211 - 19968: jis0212<<14 | 0x47<<7 | 0x3D, + 39212 - 19968: jis0208<<14 | 0x50<<7 | 0x16, + 39214 - 19968: jis0208<<14 | 0x50<<7 | 0x17, + 39217 - 19968: jis0212<<14 | 0x47<<7 | 0x3E, + 39218 - 19968: jis0212<<14 | 0x47<<7 | 0x3F, + 39219 - 19968: jis0212<<14 | 0x47<<7 | 0x40, + 39220 - 19968: jis0212<<14 | 0x47<<7 | 0x41, + 39221 - 19968: jis0212<<14 | 0x47<<7 | 0x42, + 39225 - 19968: jis0212<<14 | 0x47<<7 | 0x43, + 39226 - 19968: jis0212<<14 | 0x47<<7 | 0x44, + 39227 - 19968: jis0212<<14 | 0x47<<7 | 0x45, + 39228 - 19968: jis0212<<14 | 0x47<<7 | 0x46, + 39229 - 19968: jis0208<<14 | 0x50<<7 | 0x18, + 39230 - 19968: jis0208<<14 | 0x50<<7 | 0x19, + 39232 - 19968: jis0212<<14 | 0x47<<7 | 0x47, + 39233 - 19968: jis0212<<14 | 0x47<<7 | 0x48, + 39234 - 19968: jis0208<<14 | 0x50<<7 | 0x1A, + 39237 - 19968: jis0208<<14 | 0x50<<7 | 0x1C, + 39238 - 19968: jis0212<<14 | 0x47<<7 | 0x49, + 39239 - 19968: jis0212<<14 | 0x47<<7 | 0x4A, + 39240 - 19968: jis0212<<14 | 0x47<<7 | 0x4B, + 39241 - 19968: jis0208<<14 | 0x50<<7 | 0x1B, + 39243 - 19968: jis0208<<14 | 0x50<<7 | 0x1E, + 39244 - 19968: jis0208<<14 | 0x50<<7 | 0x21, + 39245 - 19968: jis0212<<14 | 0x47<<7 | 0x4C, + 39246 - 19968: jis0212<<14 | 0x47<<7 | 0x4D, + 39248 - 19968: jis0208<<14 | 0x50<<7 | 0x1D, + 39249 - 19968: jis0208<<14 | 0x50<<7 | 0x1F, + 39250 - 19968: jis0208<<14 | 0x50<<7 | 0x20, + 39252 - 19968: jis0212<<14 | 0x47<<7 | 0x4E, + 39253 - 19968: jis0208<<14 | 0x50<<7 | 0x22, + 39255 - 19968: jis0208<<14 | 0x15<<7 | 0x21, + 39256 - 19968: jis0212<<14 | 0x47<<7 | 0x4F, + 39257 - 19968: jis0212<<14 | 0x47<<7 | 0x50, + 39259 - 19968: jis0212<<14 | 0x47<<7 | 0x51, + 39260 - 19968: jis0212<<14 | 0x47<<7 | 0x52, + 39262 - 19968: jis0212<<14 | 0x47<<7 | 0x53, + 39263 - 19968: jis0212<<14 | 0x47<<7 | 0x54, + 39264 - 19968: jis0212<<14 | 0x47<<7 | 0x55, + 39318 - 19968: jis0208<<14 | 0x1B<<7 | 0x52, + 39319 - 19968: jis0208<<14 | 0x50<<7 | 0x23, + 39320 - 19968: jis0208<<14 | 0x50<<7 | 0x24, + 39321 - 19968: jis0208<<14 | 0x18<<7 | 0x40, + 39323 - 19968: jis0212<<14 | 0x47<<7 | 0x56, + 39325 - 19968: jis0212<<14 | 0x47<<7 | 0x57, + 39326 - 19968: jis0208<<14 | 0x5B<<7 | 0x3F, + 39327 - 19968: jis0212<<14 | 0x47<<7 | 0x58, + 39333 - 19968: jis0208<<14 | 0x50<<7 | 0x25, + 39334 - 19968: jis0212<<14 | 0x47<<7 | 0x59, + 39336 - 19968: jis0208<<14 | 0x12<<7 | 0x1D, + 39340 - 19968: jis0208<<14 | 0x26<<7 | 0x2E, + 39341 - 19968: jis0208<<14 | 0x50<<7 | 0x26, + 39342 - 19968: jis0208<<14 | 0x50<<7 | 0x27, + 39344 - 19968: jis0212<<14 | 0x47<<7 | 0x5A, + 39345 - 19968: jis0212<<14 | 0x47<<7 | 0x5B, + 39346 - 19968: jis0212<<14 | 0x47<<7 | 0x5C, + 39347 - 19968: jis0208<<14 | 0x22<<7 | 0x39, + 39348 - 19968: jis0208<<14 | 0x25<<7 | 0x4A, + 39349 - 19968: jis0212<<14 | 0x47<<7 | 0x5D, + 39353 - 19968: jis0212<<14 | 0x48<<7 | 0x00, + 39354 - 19968: jis0212<<14 | 0x48<<7 | 0x01, + 39356 - 19968: jis0208<<14 | 0x50<<7 | 0x28, + 39357 - 19968: jis0212<<14 | 0x48<<7 | 0x02, + 39359 - 19968: jis0212<<14 | 0x48<<7 | 0x03, + 39361 - 19968: jis0208<<14 | 0x26<<7 | 0x5C, + 39363 - 19968: jis0212<<14 | 0x48<<7 | 0x04, + 39364 - 19968: jis0208<<14 | 0x21<<7 | 0x2B, + 39365 - 19968: jis0208<<14 | 0x10<<7 | 0x37, + 39366 - 19968: jis0208<<14 | 0x15<<7 | 0x4D, + 39368 - 19968: jis0208<<14 | 0x15<<7 | 0x4E, + 39369 - 19968: jis0212<<14 | 0x48<<7 | 0x05, + 39376 - 19968: jis0208<<14 | 0x22<<7 | 0x52, + 39377 - 19968: jis0208<<14 | 0x50<<7 | 0x2D, + 39378 - 19968: jis0208<<14 | 0x15<<7 | 0x4F, + 39379 - 19968: jis0212<<14 | 0x48<<7 | 0x06, + 39380 - 19968: jis0212<<14 | 0x48<<7 | 0x07, + 39381 - 19968: jis0208<<14 | 0x11<<7 | 0x4E, + 39384 - 19968: jis0208<<14 | 0x50<<7 | 0x2C, + 39385 - 19968: jis0212<<14 | 0x48<<7 | 0x08, + 39386 - 19968: jis0212<<14 | 0x48<<7 | 0x09, + 39387 - 19968: jis0208<<14 | 0x50<<7 | 0x2A, + 39388 - 19968: jis0212<<14 | 0x48<<7 | 0x0A, + 39389 - 19968: jis0208<<14 | 0x50<<7 | 0x2B, + 39390 - 19968: jis0212<<14 | 0x48<<7 | 0x0B, + 39391 - 19968: jis0208<<14 | 0x50<<7 | 0x29, + 39394 - 19968: jis0208<<14 | 0x50<<7 | 0x37, + 39399 - 19968: jis0212<<14 | 0x48<<7 | 0x0C, + 39402 - 19968: jis0212<<14 | 0x48<<7 | 0x0D, + 39403 - 19968: jis0212<<14 | 0x48<<7 | 0x0E, + 39404 - 19968: jis0212<<14 | 0x48<<7 | 0x0F, + 39405 - 19968: jis0208<<14 | 0x50<<7 | 0x2E, + 39406 - 19968: jis0208<<14 | 0x50<<7 | 0x2F, + 39408 - 19968: jis0212<<14 | 0x48<<7 | 0x10, + 39409 - 19968: jis0208<<14 | 0x50<<7 | 0x30, + 39410 - 19968: jis0208<<14 | 0x50<<7 | 0x31, + 39412 - 19968: jis0212<<14 | 0x48<<7 | 0x11, + 39413 - 19968: jis0212<<14 | 0x48<<7 | 0x12, + 39416 - 19968: jis0208<<14 | 0x50<<7 | 0x33, + 39417 - 19968: jis0212<<14 | 0x48<<7 | 0x13, + 39419 - 19968: jis0208<<14 | 0x50<<7 | 0x32, + 39421 - 19968: jis0212<<14 | 0x48<<7 | 0x14, + 39422 - 19968: jis0212<<14 | 0x48<<7 | 0x15, + 39423 - 19968: jis0208<<14 | 0x1C<<7 | 0x38, + 39425 - 19968: jis0208<<14 | 0x50<<7 | 0x34, + 39426 - 19968: jis0212<<14 | 0x48<<7 | 0x16, + 39427 - 19968: jis0212<<14 | 0x48<<7 | 0x17, + 39428 - 19968: jis0212<<14 | 0x48<<7 | 0x18, + 39429 - 19968: jis0208<<14 | 0x50<<7 | 0x36, + 39435 - 19968: jis0212<<14 | 0x48<<7 | 0x19, + 39436 - 19968: jis0212<<14 | 0x48<<7 | 0x1A, + 39438 - 19968: jis0208<<14 | 0x14<<7 | 0x12, + 39439 - 19968: jis0208<<14 | 0x50<<7 | 0x35, + 39440 - 19968: jis0212<<14 | 0x48<<7 | 0x1B, + 39441 - 19968: jis0212<<14 | 0x48<<7 | 0x1C, + 39442 - 19968: jis0208<<14 | 0x20<<7 | 0x5A, + 39443 - 19968: jis0208<<14 | 0x17<<7 | 0x12, + 39446 - 19968: jis0212<<14 | 0x48<<7 | 0x1D, + 39449 - 19968: jis0208<<14 | 0x50<<7 | 0x38, + 39454 - 19968: jis0212<<14 | 0x48<<7 | 0x1E, + 39456 - 19968: jis0212<<14 | 0x48<<7 | 0x1F, + 39458 - 19968: jis0212<<14 | 0x48<<7 | 0x20, + 39459 - 19968: jis0212<<14 | 0x48<<7 | 0x21, + 39460 - 19968: jis0212<<14 | 0x48<<7 | 0x22, + 39463 - 19968: jis0212<<14 | 0x48<<7 | 0x23, + 39464 - 19968: jis0208<<14 | 0x21<<7 | 0x2C, + 39467 - 19968: jis0208<<14 | 0x50<<7 | 0x39, + 39469 - 19968: jis0212<<14 | 0x48<<7 | 0x24, + 39470 - 19968: jis0212<<14 | 0x48<<7 | 0x25, + 39472 - 19968: jis0208<<14 | 0x25<<7 | 0x0C, + 39475 - 19968: jis0212<<14 | 0x48<<7 | 0x26, + 39477 - 19968: jis0212<<14 | 0x48<<7 | 0x27, + 39478 - 19968: jis0212<<14 | 0x48<<7 | 0x28, + 39479 - 19968: jis0208<<14 | 0x50<<7 | 0x3A, + 39480 - 19968: jis0212<<14 | 0x48<<7 | 0x29, + 39486 - 19968: jis0208<<14 | 0x50<<7 | 0x3F, + 39488 - 19968: jis0208<<14 | 0x50<<7 | 0x3D, + 39489 - 19968: jis0212<<14 | 0x48<<7 | 0x2B, + 39490 - 19968: jis0208<<14 | 0x50<<7 | 0x3C, + 39491 - 19968: jis0208<<14 | 0x50<<7 | 0x3E, + 39492 - 19968: jis0212<<14 | 0x48<<7 | 0x2C, + 39493 - 19968: jis0208<<14 | 0x50<<7 | 0x3B, + 39495 - 19968: jis0212<<14 | 0x48<<7 | 0x2A, + 39498 - 19968: jis0212<<14 | 0x48<<7 | 0x2D, + 39499 - 19968: jis0212<<14 | 0x48<<7 | 0x2E, + 39500 - 19968: jis0212<<14 | 0x48<<7 | 0x2F, + 39501 - 19968: jis0208<<14 | 0x50<<7 | 0x41, + 39502 - 19968: jis0208<<14 | 0x5B<<7 | 0x40, + 39505 - 19968: jis0212<<14 | 0x48<<7 | 0x31, + 39508 - 19968: jis0212<<14 | 0x48<<7 | 0x32, + 39509 - 19968: jis0208<<14 | 0x50<<7 | 0x40, + 39510 - 19968: jis0212<<14 | 0x48<<7 | 0x33, + 39511 - 19968: jis0208<<14 | 0x50<<7 | 0x43, + 39514 - 19968: jis0208<<14 | 0x15<<7 | 0x22, + 39515 - 19968: jis0208<<14 | 0x50<<7 | 0x42, + 39517 - 19968: jis0212<<14 | 0x48<<7 | 0x34, + 39519 - 19968: jis0208<<14 | 0x50<<7 | 0x44, + 39522 - 19968: jis0208<<14 | 0x50<<7 | 0x45, + 39524 - 19968: jis0208<<14 | 0x50<<7 | 0x47, + 39525 - 19968: jis0208<<14 | 0x50<<7 | 0x46, + 39529 - 19968: jis0208<<14 | 0x50<<7 | 0x48, + 39530 - 19968: jis0208<<14 | 0x50<<7 | 0x4A, + 39531 - 19968: jis0208<<14 | 0x50<<7 | 0x49, + 39592 - 19968: jis0208<<14 | 0x18<<7 | 0x5B, + 39594 - 19968: jis0212<<14 | 0x48<<7 | 0x35, + 39596 - 19968: jis0212<<14 | 0x48<<7 | 0x36, + 39597 - 19968: jis0208<<14 | 0x50<<7 | 0x4B, + 39598 - 19968: jis0212<<14 | 0x48<<7 | 0x37, + 39599 - 19968: jis0212<<14 | 0x48<<7 | 0x38, + 39600 - 19968: jis0208<<14 | 0x50<<7 | 0x4C, + 39602 - 19968: jis0212<<14 | 0x48<<7 | 0x39, + 39604 - 19968: jis0212<<14 | 0x48<<7 | 0x3A, + 39605 - 19968: jis0212<<14 | 0x48<<7 | 0x3B, + 39606 - 19968: jis0212<<14 | 0x48<<7 | 0x3C, + 39608 - 19968: jis0208<<14 | 0x12<<7 | 0x1B, + 39609 - 19968: jis0212<<14 | 0x48<<7 | 0x3D, + 39611 - 19968: jis0212<<14 | 0x48<<7 | 0x3E, + 39612 - 19968: jis0208<<14 | 0x50<<7 | 0x4D, + 39614 - 19968: jis0212<<14 | 0x48<<7 | 0x3F, + 39615 - 19968: jis0212<<14 | 0x48<<7 | 0x40, + 39616 - 19968: jis0208<<14 | 0x50<<7 | 0x4E, + 39617 - 19968: jis0212<<14 | 0x48<<7 | 0x41, + 39619 - 19968: jis0212<<14 | 0x48<<7 | 0x42, + 39620 - 19968: jis0208<<14 | 0x1E<<7 | 0x50, + 39622 - 19968: jis0212<<14 | 0x48<<7 | 0x43, + 39624 - 19968: jis0212<<14 | 0x48<<7 | 0x44, + 39630 - 19968: jis0212<<14 | 0x48<<7 | 0x45, + 39631 - 19968: jis0208<<14 | 0x50<<7 | 0x4F, + 39632 - 19968: jis0212<<14 | 0x48<<7 | 0x46, + 39633 - 19968: jis0208<<14 | 0x50<<7 | 0x50, + 39634 - 19968: jis0212<<14 | 0x48<<7 | 0x47, + 39635 - 19968: jis0208<<14 | 0x50<<7 | 0x51, + 39636 - 19968: jis0208<<14 | 0x50<<7 | 0x52, + 39637 - 19968: jis0212<<14 | 0x48<<7 | 0x48, + 39638 - 19968: jis0212<<14 | 0x48<<7 | 0x49, + 39639 - 19968: jis0212<<14 | 0x48<<7 | 0x4A, + 39640 - 19968: jis0208<<14 | 0x18<<7 | 0x41, + 39641 - 19968: jis0208<<14 | 0x5B<<7 | 0x41, + 39643 - 19968: jis0212<<14 | 0x48<<7 | 0x4B, + 39644 - 19968: jis0208<<14 | 0x5B<<7 | 0x42, + 39646 - 19968: jis0208<<14 | 0x50<<7 | 0x53, + 39647 - 19968: jis0208<<14 | 0x50<<7 | 0x54, + 39648 - 19968: jis0212<<14 | 0x48<<7 | 0x4D, + 39650 - 19968: jis0208<<14 | 0x50<<7 | 0x55, + 39651 - 19968: jis0208<<14 | 0x50<<7 | 0x56, + 39652 - 19968: jis0212<<14 | 0x48<<7 | 0x4E, + 39653 - 19968: jis0212<<14 | 0x48<<7 | 0x4F, + 39654 - 19968: jis0208<<14 | 0x50<<7 | 0x57, + 39655 - 19968: jis0212<<14 | 0x48<<7 | 0x50, + 39657 - 19968: jis0212<<14 | 0x48<<7 | 0x51, + 39658 - 19968: jis0208<<14 | 0x27<<7 | 0x10, + 39659 - 19968: jis0208<<14 | 0x50<<7 | 0x59, + 39660 - 19968: jis0212<<14 | 0x48<<7 | 0x52, + 39661 - 19968: jis0208<<14 | 0x28<<7 | 0x05, + 39662 - 19968: jis0208<<14 | 0x50<<7 | 0x5A, + 39663 - 19968: jis0208<<14 | 0x50<<7 | 0x58, + 39665 - 19968: jis0208<<14 | 0x50<<7 | 0x5C, + 39666 - 19968: jis0212<<14 | 0x48<<7 | 0x53, + 39667 - 19968: jis0212<<14 | 0x48<<7 | 0x54, + 39668 - 19968: jis0208<<14 | 0x50<<7 | 0x5B, + 39669 - 19968: jis0212<<14 | 0x48<<7 | 0x55, + 39671 - 19968: jis0208<<14 | 0x50<<7 | 0x5D, + 39673 - 19968: jis0212<<14 | 0x48<<7 | 0x56, + 39674 - 19968: jis0212<<14 | 0x48<<7 | 0x57, + 39675 - 19968: jis0208<<14 | 0x51<<7 | 0x00, + 39677 - 19968: jis0212<<14 | 0x48<<7 | 0x58, + 39679 - 19968: jis0212<<14 | 0x48<<7 | 0x59, + 39680 - 19968: jis0212<<14 | 0x48<<7 | 0x5A, + 39681 - 19968: jis0212<<14 | 0x48<<7 | 0x5B, + 39682 - 19968: jis0212<<14 | 0x48<<7 | 0x5C, + 39683 - 19968: jis0212<<14 | 0x48<<7 | 0x5D, + 39684 - 19968: jis0212<<14 | 0x49<<7 | 0x00, + 39685 - 19968: jis0212<<14 | 0x49<<7 | 0x01, + 39686 - 19968: jis0208<<14 | 0x51<<7 | 0x01, + 39688 - 19968: jis0212<<14 | 0x49<<7 | 0x02, + 39689 - 19968: jis0212<<14 | 0x49<<7 | 0x03, + 39691 - 19968: jis0212<<14 | 0x49<<7 | 0x04, + 39692 - 19968: jis0212<<14 | 0x49<<7 | 0x05, + 39693 - 19968: jis0212<<14 | 0x49<<7 | 0x06, + 39694 - 19968: jis0212<<14 | 0x49<<7 | 0x07, + 39696 - 19968: jis0212<<14 | 0x49<<7 | 0x08, + 39698 - 19968: jis0212<<14 | 0x49<<7 | 0x09, + 39702 - 19968: jis0212<<14 | 0x49<<7 | 0x0A, + 39704 - 19968: jis0208<<14 | 0x51<<7 | 0x02, + 39705 - 19968: jis0212<<14 | 0x49<<7 | 0x0B, + 39706 - 19968: jis0208<<14 | 0x51<<7 | 0x03, + 39707 - 19968: jis0212<<14 | 0x49<<7 | 0x0C, + 39708 - 19968: jis0212<<14 | 0x49<<7 | 0x0D, + 39711 - 19968: jis0208<<14 | 0x51<<7 | 0x04, + 39712 - 19968: jis0212<<14 | 0x49<<7 | 0x0E, + 39714 - 19968: jis0208<<14 | 0x51<<7 | 0x05, + 39715 - 19968: jis0208<<14 | 0x51<<7 | 0x06, + 39717 - 19968: jis0208<<14 | 0x51<<7 | 0x07, + 39718 - 19968: jis0212<<14 | 0x49<<7 | 0x0F, + 39719 - 19968: jis0208<<14 | 0x51<<7 | 0x08, + 39720 - 19968: jis0208<<14 | 0x51<<7 | 0x09, + 39721 - 19968: jis0208<<14 | 0x51<<7 | 0x0A, + 39722 - 19968: jis0208<<14 | 0x51<<7 | 0x0B, + 39723 - 19968: jis0212<<14 | 0x49<<7 | 0x10, + 39725 - 19968: jis0212<<14 | 0x49<<7 | 0x11, + 39726 - 19968: jis0208<<14 | 0x51<<7 | 0x0C, + 39727 - 19968: jis0208<<14 | 0x51<<7 | 0x0D, + 39729 - 19968: jis0208<<14 | 0x3C<<7 | 0x14, + 39730 - 19968: jis0208<<14 | 0x51<<7 | 0x0E, + 39731 - 19968: jis0212<<14 | 0x49<<7 | 0x12, + 39732 - 19968: jis0212<<14 | 0x49<<7 | 0x13, + 39733 - 19968: jis0212<<14 | 0x49<<7 | 0x14, + 39735 - 19968: jis0212<<14 | 0x49<<7 | 0x15, + 39737 - 19968: jis0212<<14 | 0x49<<7 | 0x16, + 39738 - 19968: jis0212<<14 | 0x49<<7 | 0x17, + 39739 - 19968: jis0208<<14 | 0x43<<7 | 0x57, + 39740 - 19968: jis0208<<14 | 0x14<<7 | 0x13, + 39741 - 19968: jis0212<<14 | 0x49<<7 | 0x18, + 39745 - 19968: jis0208<<14 | 0x12<<7 | 0x00, + 39746 - 19968: jis0208<<14 | 0x19<<7 | 0x11, + 39747 - 19968: jis0208<<14 | 0x51<<7 | 0x10, + 39748 - 19968: jis0208<<14 | 0x51<<7 | 0x0F, + 39749 - 19968: jis0208<<14 | 0x2B<<7 | 0x04, + 39752 - 19968: jis0212<<14 | 0x49<<7 | 0x19, + 39755 - 19968: jis0212<<14 | 0x49<<7 | 0x1A, + 39756 - 19968: jis0212<<14 | 0x49<<7 | 0x1B, + 39757 - 19968: jis0208<<14 | 0x51<<7 | 0x12, + 39758 - 19968: jis0208<<14 | 0x51<<7 | 0x13, + 39759 - 19968: jis0208<<14 | 0x51<<7 | 0x11, + 39761 - 19968: jis0208<<14 | 0x51<<7 | 0x14, + 39764 - 19968: jis0208<<14 | 0x2A<<7 | 0x41, + 39765 - 19968: jis0212<<14 | 0x49<<7 | 0x1C, + 39766 - 19968: jis0212<<14 | 0x49<<7 | 0x1D, + 39767 - 19968: jis0212<<14 | 0x49<<7 | 0x1E, + 39768 - 19968: jis0208<<14 | 0x51<<7 | 0x15, + 39770 - 19968: jis0208<<14 | 0x14<<7 | 0x5A, + 39771 - 19968: jis0212<<14 | 0x49<<7 | 0x1F, + 39774 - 19968: jis0212<<14 | 0x49<<7 | 0x20, + 39777 - 19968: jis0212<<14 | 0x49<<7 | 0x21, + 39779 - 19968: jis0212<<14 | 0x49<<7 | 0x22, + 39781 - 19968: jis0212<<14 | 0x49<<7 | 0x23, + 39782 - 19968: jis0212<<14 | 0x49<<7 | 0x24, + 39784 - 19968: jis0212<<14 | 0x49<<7 | 0x25, + 39786 - 19968: jis0212<<14 | 0x49<<7 | 0x26, + 39787 - 19968: jis0212<<14 | 0x49<<7 | 0x27, + 39788 - 19968: jis0212<<14 | 0x49<<7 | 0x28, + 39789 - 19968: jis0212<<14 | 0x49<<7 | 0x29, + 39790 - 19968: jis0212<<14 | 0x49<<7 | 0x2A, + 39791 - 19968: jis0208<<14 | 0x2E<<7 | 0x04, + 39794 - 19968: jis0208<<14 | 0x5B<<7 | 0x44, + 39795 - 19968: jis0212<<14 | 0x49<<7 | 0x2B, + 39796 - 19968: jis0208<<14 | 0x51<<7 | 0x16, + 39797 - 19968: jis0208<<14 | 0x5B<<7 | 0x43, + 39799 - 19968: jis0212<<14 | 0x49<<7 | 0x2D, + 39800 - 19968: jis0212<<14 | 0x49<<7 | 0x2E, + 39801 - 19968: jis0212<<14 | 0x49<<7 | 0x2F, + 39807 - 19968: jis0212<<14 | 0x49<<7 | 0x30, + 39808 - 19968: jis0212<<14 | 0x49<<7 | 0x31, + 39811 - 19968: jis0208<<14 | 0x51<<7 | 0x18, + 39812 - 19968: jis0212<<14 | 0x49<<7 | 0x32, + 39813 - 19968: jis0212<<14 | 0x49<<7 | 0x33, + 39814 - 19968: jis0212<<14 | 0x49<<7 | 0x34, + 39815 - 19968: jis0212<<14 | 0x49<<7 | 0x35, + 39817 - 19968: jis0212<<14 | 0x49<<7 | 0x36, + 39818 - 19968: jis0212<<14 | 0x49<<7 | 0x37, + 39819 - 19968: jis0212<<14 | 0x49<<7 | 0x38, + 39821 - 19968: jis0212<<14 | 0x49<<7 | 0x39, + 39822 - 19968: jis0208<<14 | 0x0F<<7 | 0x1D, + 39823 - 19968: jis0208<<14 | 0x5B<<7 | 0x45, + 39824 - 19968: jis0212<<14 | 0x49<<7 | 0x3B, + 39825 - 19968: jis0208<<14 | 0x51<<7 | 0x19, + 39826 - 19968: jis0208<<14 | 0x29<<7 | 0x0A, + 39827 - 19968: jis0208<<14 | 0x51<<7 | 0x17, + 39828 - 19968: jis0212<<14 | 0x49<<7 | 0x3C, + 39830 - 19968: jis0208<<14 | 0x51<<7 | 0x1A, + 39831 - 19968: jis0208<<14 | 0x51<<7 | 0x1B, + 39834 - 19968: jis0212<<14 | 0x49<<7 | 0x3D, + 39837 - 19968: jis0212<<14 | 0x49<<7 | 0x3E, + 39838 - 19968: jis0212<<14 | 0x49<<7 | 0x3F, + 39839 - 19968: jis0208<<14 | 0x51<<7 | 0x1C, + 39840 - 19968: jis0208<<14 | 0x51<<7 | 0x1D, + 39846 - 19968: jis0212<<14 | 0x49<<7 | 0x40, + 39847 - 19968: jis0212<<14 | 0x49<<7 | 0x41, + 39848 - 19968: jis0208<<14 | 0x51<<7 | 0x1E, + 39849 - 19968: jis0212<<14 | 0x49<<7 | 0x42, + 39850 - 19968: jis0208<<14 | 0x2A<<7 | 0x4D, + 39851 - 19968: jis0208<<14 | 0x1A<<7 | 0x0C, + 39852 - 19968: jis0212<<14 | 0x49<<7 | 0x43, + 39853 - 19968: jis0208<<14 | 0x19<<7 | 0x59, + 39854 - 19968: jis0208<<14 | 0x20<<7 | 0x0E, + 39856 - 19968: jis0212<<14 | 0x49<<7 | 0x44, + 39857 - 19968: jis0208<<14 | 0x5B<<7 | 0x46, + 39858 - 19968: jis0212<<14 | 0x49<<7 | 0x46, + 39860 - 19968: jis0208<<14 | 0x51<<7 | 0x1F, + 39863 - 19968: jis0212<<14 | 0x49<<7 | 0x47, + 39864 - 19968: jis0212<<14 | 0x49<<7 | 0x48, + 39865 - 19968: jis0208<<14 | 0x51<<7 | 0x22, + 39867 - 19968: jis0208<<14 | 0x5B<<7 | 0x47, + 39868 - 19968: jis0212<<14 | 0x49<<7 | 0x4A, + 39870 - 19968: jis0212<<14 | 0x49<<7 | 0x4B, + 39871 - 19968: jis0212<<14 | 0x49<<7 | 0x4C, + 39872 - 19968: jis0208<<14 | 0x51<<7 | 0x20, + 39873 - 19968: jis0212<<14 | 0x49<<7 | 0x4D, + 39878 - 19968: jis0208<<14 | 0x51<<7 | 0x23, + 39879 - 19968: jis0212<<14 | 0x49<<7 | 0x4E, + 39880 - 19968: jis0212<<14 | 0x49<<7 | 0x4F, + 39881 - 19968: jis0208<<14 | 0x17<<7 | 0x50, + 39882 - 19968: jis0208<<14 | 0x51<<7 | 0x21, + 39886 - 19968: jis0212<<14 | 0x49<<7 | 0x50, + 39887 - 19968: jis0208<<14 | 0x51<<7 | 0x24, + 39888 - 19968: jis0212<<14 | 0x49<<7 | 0x51, + 39889 - 19968: jis0208<<14 | 0x51<<7 | 0x25, + 39890 - 19968: jis0208<<14 | 0x51<<7 | 0x26, + 39892 - 19968: jis0208<<14 | 0x51<<7 | 0x2A, + 39894 - 19968: jis0208<<14 | 0x1A<<7 | 0x09, + 39895 - 19968: jis0212<<14 | 0x49<<7 | 0x52, + 39896 - 19968: jis0212<<14 | 0x49<<7 | 0x53, + 39899 - 19968: jis0208<<14 | 0x21<<7 | 0x43, + 39901 - 19968: jis0212<<14 | 0x49<<7 | 0x54, + 39903 - 19968: jis0212<<14 | 0x49<<7 | 0x55, + 39905 - 19968: jis0208<<14 | 0x51<<7 | 0x2B, + 39906 - 19968: jis0208<<14 | 0x51<<7 | 0x28, + 39907 - 19968: jis0208<<14 | 0x51<<7 | 0x27, + 39908 - 19968: jis0208<<14 | 0x51<<7 | 0x29, + 39909 - 19968: jis0212<<14 | 0x49<<7 | 0x56, + 39911 - 19968: jis0212<<14 | 0x49<<7 | 0x57, + 39912 - 19968: jis0208<<14 | 0x16<<7 | 0x3E, + 39914 - 19968: jis0212<<14 | 0x49<<7 | 0x58, + 39915 - 19968: jis0212<<14 | 0x49<<7 | 0x59, + 39919 - 19968: jis0212<<14 | 0x49<<7 | 0x5A, + 39920 - 19968: jis0208<<14 | 0x51<<7 | 0x2F, + 39921 - 19968: jis0208<<14 | 0x51<<7 | 0x2E, + 39922 - 19968: jis0208<<14 | 0x51<<7 | 0x2D, + 39923 - 19968: jis0212<<14 | 0x49<<7 | 0x5B, + 39925 - 19968: jis0208<<14 | 0x0F<<7 | 0x12, + 39927 - 19968: jis0212<<14 | 0x49<<7 | 0x5C, + 39928 - 19968: jis0212<<14 | 0x49<<7 | 0x5D, + 39929 - 19968: jis0212<<14 | 0x4A<<7 | 0x00, + 39930 - 19968: jis0212<<14 | 0x4A<<7 | 0x01, + 39933 - 19968: jis0212<<14 | 0x4A<<7 | 0x02, + 39935 - 19968: jis0212<<14 | 0x4A<<7 | 0x03, + 39936 - 19968: jis0208<<14 | 0x5B<<7 | 0x48, + 39938 - 19968: jis0212<<14 | 0x4A<<7 | 0x05, + 39940 - 19968: jis0208<<14 | 0x51<<7 | 0x39, + 39942 - 19968: jis0208<<14 | 0x51<<7 | 0x35, + 39944 - 19968: jis0208<<14 | 0x51<<7 | 0x36, + 39945 - 19968: jis0208<<14 | 0x51<<7 | 0x32, + 39946 - 19968: jis0208<<14 | 0x51<<7 | 0x38, + 39947 - 19968: jis0212<<14 | 0x4A<<7 | 0x06, + 39948 - 19968: jis0208<<14 | 0x51<<7 | 0x34, + 39949 - 19968: jis0208<<14 | 0x12<<7 | 0x41, + 39951 - 19968: jis0212<<14 | 0x4A<<7 | 0x07, + 39952 - 19968: jis0208<<14 | 0x2E<<7 | 0x2B, + 39953 - 19968: jis0212<<14 | 0x4A<<7 | 0x08, + 39954 - 19968: jis0208<<14 | 0x51<<7 | 0x37, + 39955 - 19968: jis0208<<14 | 0x51<<7 | 0x33, + 39956 - 19968: jis0208<<14 | 0x51<<7 | 0x31, + 39957 - 19968: jis0208<<14 | 0x51<<7 | 0x30, + 39958 - 19968: jis0212<<14 | 0x4A<<7 | 0x09, + 39960 - 19968: jis0212<<14 | 0x4A<<7 | 0x0A, + 39961 - 19968: jis0212<<14 | 0x4A<<7 | 0x0B, + 39962 - 19968: jis0212<<14 | 0x4A<<7 | 0x0C, + 39963 - 19968: jis0208<<14 | 0x51<<7 | 0x3B, + 39964 - 19968: jis0212<<14 | 0x4A<<7 | 0x0D, + 39966 - 19968: jis0212<<14 | 0x4A<<7 | 0x0E, + 39969 - 19968: jis0208<<14 | 0x51<<7 | 0x3E, + 39970 - 19968: jis0212<<14 | 0x4A<<7 | 0x0F, + 39971 - 19968: jis0212<<14 | 0x4A<<7 | 0x10, + 39972 - 19968: jis0208<<14 | 0x51<<7 | 0x3D, + 39973 - 19968: jis0208<<14 | 0x51<<7 | 0x3C, + 39974 - 19968: jis0212<<14 | 0x4A<<7 | 0x11, + 39975 - 19968: jis0212<<14 | 0x4A<<7 | 0x12, + 39976 - 19968: jis0212<<14 | 0x4A<<7 | 0x13, + 39977 - 19968: jis0212<<14 | 0x4A<<7 | 0x14, + 39978 - 19968: jis0212<<14 | 0x4A<<7 | 0x15, + 39981 - 19968: jis0208<<14 | 0x28<<7 | 0x28, + 39982 - 19968: jis0208<<14 | 0x51<<7 | 0x3A, + 39983 - 19968: jis0208<<14 | 0x0F<<7 | 0x52, + 39984 - 19968: jis0208<<14 | 0x51<<7 | 0x3F, + 39985 - 19968: jis0212<<14 | 0x4A<<7 | 0x16, + 39986 - 19968: jis0208<<14 | 0x51<<7 | 0x41, + 39989 - 19968: jis0212<<14 | 0x4A<<7 | 0x17, + 39990 - 19968: jis0212<<14 | 0x4A<<7 | 0x18, + 39991 - 19968: jis0212<<14 | 0x4A<<7 | 0x19, + 39993 - 19968: jis0208<<14 | 0x12<<7 | 0x4E, + 39994 - 19968: jis0208<<14 | 0x51<<7 | 0x2C, + 39995 - 19968: jis0208<<14 | 0x10<<7 | 0x16, + 39997 - 19968: jis0212<<14 | 0x4A<<7 | 0x1A, + 39998 - 19968: jis0208<<14 | 0x51<<7 | 0x43, + 40001 - 19968: jis0212<<14 | 0x4A<<7 | 0x1B, + 40003 - 19968: jis0212<<14 | 0x4A<<7 | 0x1C, + 40004 - 19968: jis0212<<14 | 0x4A<<7 | 0x1D, + 40005 - 19968: jis0212<<14 | 0x4A<<7 | 0x1E, + 40006 - 19968: jis0208<<14 | 0x51<<7 | 0x42, + 40007 - 19968: jis0208<<14 | 0x51<<7 | 0x40, + 40008 - 19968: jis0208<<14 | 0x22<<7 | 0x0C, + 40009 - 19968: jis0212<<14 | 0x4A<<7 | 0x1F, + 40010 - 19968: jis0212<<14 | 0x4A<<7 | 0x20, + 40014 - 19968: jis0212<<14 | 0x4A<<7 | 0x21, + 40015 - 19968: jis0212<<14 | 0x4A<<7 | 0x22, + 40016 - 19968: jis0212<<14 | 0x4A<<7 | 0x23, + 40018 - 19968: jis0208<<14 | 0x2A<<7 | 0x4F, + 40019 - 19968: jis0212<<14 | 0x4A<<7 | 0x24, + 40020 - 19968: jis0212<<14 | 0x4A<<7 | 0x25, + 40022 - 19968: jis0212<<14 | 0x4A<<7 | 0x26, + 40023 - 19968: jis0208<<14 | 0x2D<<7 | 0x39, + 40024 - 19968: jis0212<<14 | 0x4A<<7 | 0x27, + 40026 - 19968: jis0208<<14 | 0x51<<7 | 0x44, + 40027 - 19968: jis0212<<14 | 0x4A<<7 | 0x28, + 40028 - 19968: jis0212<<14 | 0x4A<<7 | 0x2F, + 40029 - 19968: jis0212<<14 | 0x4A<<7 | 0x29, + 40030 - 19968: jis0212<<14 | 0x4A<<7 | 0x2A, + 40031 - 19968: jis0212<<14 | 0x4A<<7 | 0x2B, + 40032 - 19968: jis0208<<14 | 0x51<<7 | 0x45, + 40035 - 19968: jis0212<<14 | 0x4A<<7 | 0x2C, + 40039 - 19968: jis0208<<14 | 0x51<<7 | 0x46, + 40040 - 19968: jis0212<<14 | 0x4A<<7 | 0x31, + 40041 - 19968: jis0212<<14 | 0x4A<<7 | 0x2D, + 40042 - 19968: jis0212<<14 | 0x4A<<7 | 0x2E, + 40043 - 19968: jis0212<<14 | 0x4A<<7 | 0x30, + 40046 - 19968: jis0212<<14 | 0x4A<<7 | 0x32, + 40048 - 19968: jis0212<<14 | 0x4A<<7 | 0x33, + 40050 - 19968: jis0212<<14 | 0x4A<<7 | 0x34, + 40053 - 19968: jis0212<<14 | 0x4A<<7 | 0x35, + 40054 - 19968: jis0208<<14 | 0x51<<7 | 0x47, + 40055 - 19968: jis0212<<14 | 0x4A<<7 | 0x36, + 40056 - 19968: jis0208<<14 | 0x51<<7 | 0x48, + 40059 - 19968: jis0212<<14 | 0x4A<<7 | 0x37, + 40165 - 19968: jis0208<<14 | 0x23<<7 | 0x1A, + 40166 - 19968: jis0212<<14 | 0x4A<<7 | 0x38, + 40167 - 19968: jis0208<<14 | 0x51<<7 | 0x49, + 40169 - 19968: jis0208<<14 | 0x27<<7 | 0x16, + 40171 - 19968: jis0208<<14 | 0x51<<7 | 0x4E, + 40172 - 19968: jis0208<<14 | 0x51<<7 | 0x4A, + 40176 - 19968: jis0208<<14 | 0x51<<7 | 0x4B, + 40178 - 19968: jis0212<<14 | 0x4A<<7 | 0x39, + 40179 - 19968: jis0208<<14 | 0x2A<<7 | 0x10, + 40180 - 19968: jis0208<<14 | 0x2B<<7 | 0x23, + 40182 - 19968: jis0208<<14 | 0x25<<7 | 0x2F, + 40183 - 19968: jis0212<<14 | 0x4A<<7 | 0x3A, + 40185 - 19968: jis0212<<14 | 0x4A<<7 | 0x3B, + 40194 - 19968: jis0212<<14 | 0x4A<<7 | 0x3D, + 40195 - 19968: jis0208<<14 | 0x51<<7 | 0x4F, + 40198 - 19968: jis0208<<14 | 0x51<<7 | 0x50, + 40199 - 19968: jis0208<<14 | 0x25<<7 | 0x1D, + 40200 - 19968: jis0208<<14 | 0x51<<7 | 0x4D, + 40201 - 19968: jis0208<<14 | 0x51<<7 | 0x4C, + 40203 - 19968: jis0212<<14 | 0x4A<<7 | 0x3C, + 40206 - 19968: jis0208<<14 | 0x11<<7 | 0x09, + 40209 - 19968: jis0212<<14 | 0x4A<<7 | 0x3E, + 40210 - 19968: jis0208<<14 | 0x51<<7 | 0x58, + 40213 - 19968: jis0208<<14 | 0x51<<7 | 0x57, + 40215 - 19968: jis0212<<14 | 0x4A<<7 | 0x3F, + 40216 - 19968: jis0212<<14 | 0x4A<<7 | 0x40, + 40219 - 19968: jis0208<<14 | 0x10<<7 | 0x54, + 40220 - 19968: jis0212<<14 | 0x4A<<7 | 0x41, + 40221 - 19968: jis0212<<14 | 0x4A<<7 | 0x42, + 40222 - 19968: jis0212<<14 | 0x4A<<7 | 0x43, + 40223 - 19968: jis0208<<14 | 0x51<<7 | 0x55, + 40227 - 19968: jis0208<<14 | 0x51<<7 | 0x54, + 40230 - 19968: jis0208<<14 | 0x51<<7 | 0x52, + 40232 - 19968: jis0208<<14 | 0x12<<7 | 0x5A, + 40234 - 19968: jis0208<<14 | 0x51<<7 | 0x51, + 40235 - 19968: jis0208<<14 | 0x1B<<7 | 0x11, + 40236 - 19968: jis0208<<14 | 0x11<<7 | 0x08, + 40239 - 19968: jis0212<<14 | 0x4A<<7 | 0x44, + 40240 - 19968: jis0212<<14 | 0x4A<<7 | 0x45, + 40242 - 19968: jis0212<<14 | 0x4A<<7 | 0x46, + 40243 - 19968: jis0212<<14 | 0x4A<<7 | 0x47, + 40244 - 19968: jis0212<<14 | 0x4A<<7 | 0x48, + 40250 - 19968: jis0212<<14 | 0x4A<<7 | 0x49, + 40251 - 19968: jis0208<<14 | 0x18<<7 | 0x42, + 40252 - 19968: jis0212<<14 | 0x4A<<7 | 0x4A, + 40253 - 19968: jis0212<<14 | 0x4A<<7 | 0x4C, + 40254 - 19968: jis0208<<14 | 0x51<<7 | 0x5B, + 40255 - 19968: jis0208<<14 | 0x51<<7 | 0x5A, + 40257 - 19968: jis0208<<14 | 0x51<<7 | 0x59, + 40258 - 19968: jis0212<<14 | 0x4A<<7 | 0x4D, + 40259 - 19968: jis0212<<14 | 0x4A<<7 | 0x4E, + 40260 - 19968: jis0208<<14 | 0x51<<7 | 0x56, + 40261 - 19968: jis0212<<14 | 0x4A<<7 | 0x4B, + 40262 - 19968: jis0208<<14 | 0x51<<7 | 0x5C, + 40263 - 19968: jis0212<<14 | 0x4A<<7 | 0x4F, + 40264 - 19968: jis0208<<14 | 0x51<<7 | 0x5D, + 40266 - 19968: jis0212<<14 | 0x4A<<7 | 0x50, + 40272 - 19968: jis0208<<14 | 0x52<<7 | 0x04, + 40273 - 19968: jis0208<<14 | 0x52<<7 | 0x03, + 40275 - 19968: jis0212<<14 | 0x4A<<7 | 0x51, + 40276 - 19968: jis0212<<14 | 0x4A<<7 | 0x52, + 40281 - 19968: jis0208<<14 | 0x52<<7 | 0x05, + 40284 - 19968: jis0208<<14 | 0x10<<7 | 0x0C, + 40285 - 19968: jis0208<<14 | 0x52<<7 | 0x00, + 40286 - 19968: jis0208<<14 | 0x52<<7 | 0x01, + 40287 - 19968: jis0212<<14 | 0x4A<<7 | 0x53, + 40288 - 19968: jis0208<<14 | 0x18<<7 | 0x53, + 40289 - 19968: jis0208<<14 | 0x2B<<7 | 0x18, + 40290 - 19968: jis0212<<14 | 0x4A<<7 | 0x55, + 40291 - 19968: jis0212<<14 | 0x4A<<7 | 0x54, + 40292 - 19968: jis0208<<14 | 0x52<<7 | 0x02, + 40293 - 19968: jis0212<<14 | 0x4A<<7 | 0x56, + 40297 - 19968: jis0212<<14 | 0x4A<<7 | 0x57, + 40298 - 19968: jis0212<<14 | 0x4A<<7 | 0x58, + 40299 - 19968: jis0208<<14 | 0x5B<<7 | 0x4A, + 40300 - 19968: jis0208<<14 | 0x2A<<7 | 0x11, + 40303 - 19968: jis0208<<14 | 0x52<<7 | 0x0A, + 40304 - 19968: jis0208<<14 | 0x5B<<7 | 0x49, + 40306 - 19968: jis0208<<14 | 0x52<<7 | 0x06, + 40310 - 19968: jis0212<<14 | 0x4A<<7 | 0x5B, + 40311 - 19968: jis0212<<14 | 0x4A<<7 | 0x5C, + 40314 - 19968: jis0208<<14 | 0x52<<7 | 0x0B, + 40315 - 19968: jis0212<<14 | 0x4A<<7 | 0x5D, + 40316 - 19968: jis0212<<14 | 0x4B<<7 | 0x00, + 40318 - 19968: jis0212<<14 | 0x4B<<7 | 0x01, + 40323 - 19968: jis0212<<14 | 0x4B<<7 | 0x02, + 40324 - 19968: jis0212<<14 | 0x4B<<7 | 0x03, + 40326 - 19968: jis0212<<14 | 0x4B<<7 | 0x04, + 40327 - 19968: jis0208<<14 | 0x52<<7 | 0x08, + 40329 - 19968: jis0208<<14 | 0x52<<7 | 0x07, + 40330 - 19968: jis0212<<14 | 0x4B<<7 | 0x05, + 40333 - 19968: jis0212<<14 | 0x4B<<7 | 0x06, + 40334 - 19968: jis0212<<14 | 0x4B<<7 | 0x07, + 40335 - 19968: jis0208<<14 | 0x16<<7 | 0x3B, + 40338 - 19968: jis0212<<14 | 0x4B<<7 | 0x08, + 40339 - 19968: jis0212<<14 | 0x4B<<7 | 0x09, + 40341 - 19968: jis0212<<14 | 0x4B<<7 | 0x0A, + 40342 - 19968: jis0212<<14 | 0x4B<<7 | 0x0B, + 40343 - 19968: jis0212<<14 | 0x4B<<7 | 0x0C, + 40344 - 19968: jis0212<<14 | 0x4B<<7 | 0x0D, + 40346 - 19968: jis0208<<14 | 0x52<<7 | 0x0C, + 40353 - 19968: jis0212<<14 | 0x4B<<7 | 0x0E, + 40356 - 19968: jis0208<<14 | 0x52<<7 | 0x0D, + 40361 - 19968: jis0208<<14 | 0x52<<7 | 0x0E, + 40362 - 19968: jis0212<<14 | 0x4B<<7 | 0x0F, + 40363 - 19968: jis0208<<14 | 0x52<<7 | 0x09, + 40364 - 19968: jis0212<<14 | 0x4B<<7 | 0x10, + 40366 - 19968: jis0212<<14 | 0x4B<<7 | 0x11, + 40367 - 19968: jis0208<<14 | 0x51<<7 | 0x53, + 40369 - 19968: jis0212<<14 | 0x4B<<7 | 0x12, + 40370 - 19968: jis0208<<14 | 0x52<<7 | 0x0F, + 40372 - 19968: jis0208<<14 | 0x23<<7 | 0x40, + 40373 - 19968: jis0212<<14 | 0x4B<<7 | 0x13, + 40376 - 19968: jis0208<<14 | 0x52<<7 | 0x13, + 40377 - 19968: jis0212<<14 | 0x4B<<7 | 0x14, + 40378 - 19968: jis0208<<14 | 0x52<<7 | 0x14, + 40379 - 19968: jis0208<<14 | 0x52<<7 | 0x12, + 40380 - 19968: jis0212<<14 | 0x4B<<7 | 0x15, + 40383 - 19968: jis0212<<14 | 0x4B<<7 | 0x16, + 40385 - 19968: jis0208<<14 | 0x52<<7 | 0x11, + 40386 - 19968: jis0208<<14 | 0x52<<7 | 0x17, + 40387 - 19968: jis0212<<14 | 0x4B<<7 | 0x17, + 40388 - 19968: jis0208<<14 | 0x52<<7 | 0x10, + 40390 - 19968: jis0208<<14 | 0x52<<7 | 0x15, + 40391 - 19968: jis0212<<14 | 0x4B<<7 | 0x18, + 40393 - 19968: jis0212<<14 | 0x4B<<7 | 0x19, + 40394 - 19968: jis0212<<14 | 0x4B<<7 | 0x1A, + 40399 - 19968: jis0208<<14 | 0x52<<7 | 0x16, + 40403 - 19968: jis0208<<14 | 0x52<<7 | 0x19, + 40404 - 19968: jis0212<<14 | 0x4B<<7 | 0x1B, + 40405 - 19968: jis0212<<14 | 0x4B<<7 | 0x1C, + 40406 - 19968: jis0212<<14 | 0x4B<<7 | 0x1D, + 40407 - 19968: jis0212<<14 | 0x4B<<7 | 0x1E, + 40409 - 19968: jis0208<<14 | 0x52<<7 | 0x18, + 40410 - 19968: jis0212<<14 | 0x4B<<7 | 0x1F, + 40414 - 19968: jis0212<<14 | 0x4B<<7 | 0x20, + 40415 - 19968: jis0212<<14 | 0x4B<<7 | 0x21, + 40416 - 19968: jis0212<<14 | 0x4B<<7 | 0x22, + 40421 - 19968: jis0212<<14 | 0x4B<<7 | 0x23, + 40422 - 19968: jis0208<<14 | 0x52<<7 | 0x1B, + 40423 - 19968: jis0212<<14 | 0x4B<<7 | 0x24, + 40425 - 19968: jis0212<<14 | 0x4B<<7 | 0x25, + 40427 - 19968: jis0212<<14 | 0x4B<<7 | 0x26, + 40429 - 19968: jis0208<<14 | 0x52<<7 | 0x1C, + 40430 - 19968: jis0212<<14 | 0x4B<<7 | 0x27, + 40431 - 19968: jis0208<<14 | 0x52<<7 | 0x1D, + 40432 - 19968: jis0212<<14 | 0x4B<<7 | 0x28, + 40434 - 19968: jis0208<<14 | 0x2E<<7 | 0x28, + 40435 - 19968: jis0212<<14 | 0x4B<<7 | 0x29, + 40436 - 19968: jis0212<<14 | 0x4B<<7 | 0x2A, + 40440 - 19968: jis0208<<14 | 0x52<<7 | 0x1A, + 40441 - 19968: jis0208<<14 | 0x21<<7 | 0x4A, + 40442 - 19968: jis0208<<14 | 0x19<<7 | 0x4C, + 40445 - 19968: jis0208<<14 | 0x52<<7 | 0x1E, + 40446 - 19968: jis0212<<14 | 0x4B<<7 | 0x2B, + 40450 - 19968: jis0212<<14 | 0x4B<<7 | 0x2D, + 40455 - 19968: jis0212<<14 | 0x4B<<7 | 0x2E, + 40458 - 19968: jis0212<<14 | 0x4B<<7 | 0x2C, + 40462 - 19968: jis0212<<14 | 0x4B<<7 | 0x2F, + 40464 - 19968: jis0212<<14 | 0x4B<<7 | 0x30, + 40465 - 19968: jis0212<<14 | 0x4B<<7 | 0x31, + 40466 - 19968: jis0212<<14 | 0x4B<<7 | 0x32, + 40469 - 19968: jis0212<<14 | 0x4B<<7 | 0x33, + 40470 - 19968: jis0212<<14 | 0x4B<<7 | 0x34, + 40473 - 19968: jis0208<<14 | 0x5B<<7 | 0x4C, + 40474 - 19968: jis0208<<14 | 0x52<<7 | 0x1F, + 40475 - 19968: jis0208<<14 | 0x52<<7 | 0x20, + 40476 - 19968: jis0212<<14 | 0x4B<<7 | 0x36, + 40477 - 19968: jis0212<<14 | 0x4B<<7 | 0x37, + 40478 - 19968: jis0208<<14 | 0x52<<7 | 0x21, + 40565 - 19968: jis0208<<14 | 0x52<<7 | 0x22, + 40568 - 19968: jis0208<<14 | 0x17<<7 | 0x13, + 40569 - 19968: jis0208<<14 | 0x52<<7 | 0x23, + 40570 - 19968: jis0212<<14 | 0x4B<<7 | 0x38, + 40571 - 19968: jis0212<<14 | 0x4B<<7 | 0x39, + 40572 - 19968: jis0212<<14 | 0x4B<<7 | 0x3A, + 40573 - 19968: jis0208<<14 | 0x52<<7 | 0x24, + 40575 - 19968: jis0208<<14 | 0x1B<<7 | 0x0E, + 40576 - 19968: jis0212<<14 | 0x4B<<7 | 0x3B, + 40577 - 19968: jis0208<<14 | 0x52<<7 | 0x25, + 40578 - 19968: jis0212<<14 | 0x4B<<7 | 0x3C, + 40579 - 19968: jis0212<<14 | 0x4B<<7 | 0x3D, + 40580 - 19968: jis0212<<14 | 0x4B<<7 | 0x3E, + 40581 - 19968: jis0212<<14 | 0x4B<<7 | 0x3F, + 40583 - 19968: jis0212<<14 | 0x4B<<7 | 0x40, + 40584 - 19968: jis0208<<14 | 0x52<<7 | 0x26, + 40587 - 19968: jis0208<<14 | 0x52<<7 | 0x27, + 40588 - 19968: jis0208<<14 | 0x52<<7 | 0x28, + 40590 - 19968: jis0212<<14 | 0x4B<<7 | 0x41, + 40591 - 19968: jis0212<<14 | 0x4B<<7 | 0x42, + 40593 - 19968: jis0208<<14 | 0x52<<7 | 0x2B, + 40594 - 19968: jis0208<<14 | 0x52<<7 | 0x29, + 40595 - 19968: jis0208<<14 | 0x2E<<7 | 0x1B, + 40597 - 19968: jis0208<<14 | 0x52<<7 | 0x2A, + 40598 - 19968: jis0212<<14 | 0x4B<<7 | 0x43, + 40599 - 19968: jis0208<<14 | 0x2D<<7 | 0x4E, + 40600 - 19968: jis0212<<14 | 0x4B<<7 | 0x44, + 40603 - 19968: jis0212<<14 | 0x4B<<7 | 0x45, + 40605 - 19968: jis0208<<14 | 0x52<<7 | 0x2C, + 40606 - 19968: jis0212<<14 | 0x4B<<7 | 0x46, + 40607 - 19968: jis0208<<14 | 0x2D<<7 | 0x3A, + 40612 - 19968: jis0212<<14 | 0x4B<<7 | 0x47, + 40613 - 19968: jis0208<<14 | 0x52<<7 | 0x2D, + 40614 - 19968: jis0208<<14 | 0x26<<7 | 0x5D, + 40616 - 19968: jis0212<<14 | 0x4B<<7 | 0x48, + 40617 - 19968: jis0208<<14 | 0x52<<7 | 0x2E, + 40618 - 19968: jis0208<<14 | 0x52<<7 | 0x30, + 40620 - 19968: jis0212<<14 | 0x4B<<7 | 0x49, + 40621 - 19968: jis0208<<14 | 0x52<<7 | 0x31, + 40622 - 19968: jis0212<<14 | 0x4B<<7 | 0x4A, + 40623 - 19968: jis0212<<14 | 0x4B<<7 | 0x4B, + 40624 - 19968: jis0212<<14 | 0x4B<<7 | 0x4C, + 40627 - 19968: jis0212<<14 | 0x4B<<7 | 0x4D, + 40628 - 19968: jis0212<<14 | 0x4B<<7 | 0x4E, + 40629 - 19968: jis0212<<14 | 0x4B<<7 | 0x4F, + 40632 - 19968: jis0208<<14 | 0x52<<7 | 0x2F, + 40633 - 19968: jis0208<<14 | 0x18<<7 | 0x4C, + 40634 - 19968: jis0208<<14 | 0x2B<<7 | 0x2C, + 40635 - 19968: jis0208<<14 | 0x2A<<7 | 0x42, + 40636 - 19968: jis0208<<14 | 0x35<<7 | 0x56, + 40638 - 19968: jis0208<<14 | 0x3C<<7 | 0x3F, + 40639 - 19968: jis0208<<14 | 0x2A<<7 | 0x5A, + 40644 - 19968: jis0208<<14 | 0x11<<7 | 0x0A, + 40646 - 19968: jis0212<<14 | 0x4B<<7 | 0x50, + 40648 - 19968: jis0212<<14 | 0x4B<<7 | 0x51, + 40651 - 19968: jis0212<<14 | 0x4B<<7 | 0x52, + 40652 - 19968: jis0208<<14 | 0x52<<7 | 0x33, + 40653 - 19968: jis0208<<14 | 0x14<<7 | 0x2F, + 40654 - 19968: jis0208<<14 | 0x52<<7 | 0x34, + 40655 - 19968: jis0208<<14 | 0x52<<7 | 0x35, + 40656 - 19968: jis0208<<14 | 0x52<<7 | 0x36, + 40657 - 19968: jis0208<<14 | 0x5B<<7 | 0x4D, + 40658 - 19968: jis0208<<14 | 0x18<<7 | 0x54, + 40660 - 19968: jis0208<<14 | 0x52<<7 | 0x37, + 40661 - 19968: jis0212<<14 | 0x4B<<7 | 0x53, + 40664 - 19968: jis0208<<14 | 0x3F<<7 | 0x33, + 40665 - 19968: jis0208<<14 | 0x2B<<7 | 0x3A, + 40667 - 19968: jis0208<<14 | 0x21<<7 | 0x42, + 40668 - 19968: jis0208<<14 | 0x52<<7 | 0x38, + 40669 - 19968: jis0208<<14 | 0x52<<7 | 0x3A, + 40670 - 19968: jis0208<<14 | 0x52<<7 | 0x39, + 40671 - 19968: jis0212<<14 | 0x4B<<7 | 0x54, + 40672 - 19968: jis0208<<14 | 0x52<<7 | 0x3B, + 40676 - 19968: jis0212<<14 | 0x4B<<7 | 0x55, + 40677 - 19968: jis0208<<14 | 0x52<<7 | 0x3C, + 40679 - 19968: jis0212<<14 | 0x4B<<7 | 0x56, + 40680 - 19968: jis0208<<14 | 0x52<<7 | 0x3D, + 40684 - 19968: jis0212<<14 | 0x4B<<7 | 0x57, + 40685 - 19968: jis0212<<14 | 0x4B<<7 | 0x58, + 40686 - 19968: jis0212<<14 | 0x4B<<7 | 0x59, + 40687 - 19968: jis0208<<14 | 0x52<<7 | 0x3E, + 40688 - 19968: jis0212<<14 | 0x4B<<7 | 0x5A, + 40689 - 19968: jis0212<<14 | 0x4B<<7 | 0x5B, + 40690 - 19968: jis0212<<14 | 0x4B<<7 | 0x5C, + 40692 - 19968: jis0208<<14 | 0x52<<7 | 0x3F, + 40693 - 19968: jis0212<<14 | 0x4B<<7 | 0x5D, + 40694 - 19968: jis0208<<14 | 0x52<<7 | 0x40, + 40695 - 19968: jis0208<<14 | 0x52<<7 | 0x41, + 40696 - 19968: jis0212<<14 | 0x4C<<7 | 0x00, + 40697 - 19968: jis0208<<14 | 0x52<<7 | 0x42, + 40699 - 19968: jis0208<<14 | 0x52<<7 | 0x43, + 40700 - 19968: jis0208<<14 | 0x52<<7 | 0x44, + 40701 - 19968: jis0208<<14 | 0x52<<7 | 0x45, + 40703 - 19968: jis0212<<14 | 0x4C<<7 | 0x01, + 40706 - 19968: jis0212<<14 | 0x4C<<7 | 0x02, + 40707 - 19968: jis0212<<14 | 0x4C<<7 | 0x03, + 40711 - 19968: jis0208<<14 | 0x52<<7 | 0x46, + 40712 - 19968: jis0208<<14 | 0x52<<7 | 0x47, + 40713 - 19968: jis0212<<14 | 0x4C<<7 | 0x04, + 40718 - 19968: jis0208<<14 | 0x24<<7 | 0x03, + 40719 - 19968: jis0212<<14 | 0x4C<<7 | 0x05, + 40720 - 19968: jis0212<<14 | 0x4C<<7 | 0x06, + 40721 - 19968: jis0212<<14 | 0x4C<<7 | 0x07, + 40722 - 19968: jis0212<<14 | 0x4C<<7 | 0x08, + 40723 - 19968: jis0208<<14 | 0x17<<7 | 0x3C, + 40724 - 19968: jis0212<<14 | 0x4C<<7 | 0x09, + 40725 - 19968: jis0208<<14 | 0x52<<7 | 0x49, + 40726 - 19968: jis0212<<14 | 0x4C<<7 | 0x0A, + 40727 - 19968: jis0212<<14 | 0x4C<<7 | 0x0B, + 40729 - 19968: jis0212<<14 | 0x4C<<7 | 0x0C, + 40730 - 19968: jis0212<<14 | 0x4C<<7 | 0x0D, + 40731 - 19968: jis0212<<14 | 0x4C<<7 | 0x0E, + 40735 - 19968: jis0212<<14 | 0x4C<<7 | 0x0F, + 40736 - 19968: jis0208<<14 | 0x20<<7 | 0x2C, + 40737 - 19968: jis0208<<14 | 0x52<<7 | 0x4A, + 40738 - 19968: jis0212<<14 | 0x4C<<7 | 0x10, + 40742 - 19968: jis0212<<14 | 0x4C<<7 | 0x11, + 40746 - 19968: jis0212<<14 | 0x4C<<7 | 0x12, + 40747 - 19968: jis0212<<14 | 0x4C<<7 | 0x13, + 40748 - 19968: jis0208<<14 | 0x52<<7 | 0x4B, + 40751 - 19968: jis0212<<14 | 0x4C<<7 | 0x14, + 40753 - 19968: jis0212<<14 | 0x4C<<7 | 0x15, + 40754 - 19968: jis0212<<14 | 0x4C<<7 | 0x16, + 40756 - 19968: jis0212<<14 | 0x4C<<7 | 0x17, + 40759 - 19968: jis0212<<14 | 0x4C<<7 | 0x18, + 40761 - 19968: jis0212<<14 | 0x4C<<7 | 0x19, + 40762 - 19968: jis0212<<14 | 0x4C<<7 | 0x1A, + 40763 - 19968: jis0208<<14 | 0x28<<7 | 0x00, + 40764 - 19968: jis0212<<14 | 0x4C<<7 | 0x1B, + 40765 - 19968: jis0212<<14 | 0x4C<<7 | 0x1C, + 40766 - 19968: jis0208<<14 | 0x52<<7 | 0x4C, + 40767 - 19968: jis0212<<14 | 0x4C<<7 | 0x1D, + 40769 - 19968: jis0212<<14 | 0x4C<<7 | 0x1E, + 40771 - 19968: jis0212<<14 | 0x4C<<7 | 0x1F, + 40772 - 19968: jis0212<<14 | 0x4C<<7 | 0x20, + 40773 - 19968: jis0212<<14 | 0x4C<<7 | 0x21, + 40774 - 19968: jis0212<<14 | 0x4C<<7 | 0x22, + 40775 - 19968: jis0212<<14 | 0x4C<<7 | 0x23, + 40778 - 19968: jis0208<<14 | 0x52<<7 | 0x4D, + 40779 - 19968: jis0208<<14 | 0x42<<7 | 0x16, + 40782 - 19968: jis0208<<14 | 0x4B<<7 | 0x39, + 40783 - 19968: jis0208<<14 | 0x4F<<7 | 0x4C, + 40786 - 19968: jis0208<<14 | 0x52<<7 | 0x4E, + 40787 - 19968: jis0212<<14 | 0x4C<<7 | 0x24, + 40788 - 19968: jis0208<<14 | 0x52<<7 | 0x4F, + 40789 - 19968: jis0212<<14 | 0x4C<<7 | 0x25, + 40790 - 19968: jis0212<<14 | 0x4C<<7 | 0x26, + 40791 - 19968: jis0212<<14 | 0x4C<<7 | 0x27, + 40792 - 19968: jis0212<<14 | 0x4C<<7 | 0x28, + 40794 - 19968: jis0212<<14 | 0x4C<<7 | 0x29, + 40797 - 19968: jis0212<<14 | 0x4C<<7 | 0x2A, + 40798 - 19968: jis0212<<14 | 0x4C<<7 | 0x2B, + 40799 - 19968: jis0208<<14 | 0x52<<7 | 0x51, + 40800 - 19968: jis0208<<14 | 0x52<<7 | 0x52, + 40801 - 19968: jis0208<<14 | 0x52<<7 | 0x53, + 40802 - 19968: jis0208<<14 | 0x2D<<7 | 0x4F, + 40803 - 19968: jis0208<<14 | 0x52<<7 | 0x50, + 40806 - 19968: jis0208<<14 | 0x52<<7 | 0x54, + 40807 - 19968: jis0208<<14 | 0x52<<7 | 0x55, + 40808 - 19968: jis0212<<14 | 0x4C<<7 | 0x2C, + 40809 - 19968: jis0212<<14 | 0x4C<<7 | 0x2D, + 40810 - 19968: jis0208<<14 | 0x52<<7 | 0x57, + 40812 - 19968: jis0208<<14 | 0x52<<7 | 0x56, + 40813 - 19968: jis0212<<14 | 0x4C<<7 | 0x2E, + 40814 - 19968: jis0212<<14 | 0x4C<<7 | 0x2F, + 40815 - 19968: jis0212<<14 | 0x4C<<7 | 0x30, + 40816 - 19968: jis0212<<14 | 0x4C<<7 | 0x31, + 40817 - 19968: jis0212<<14 | 0x4C<<7 | 0x32, + 40818 - 19968: jis0208<<14 | 0x52<<7 | 0x59, + 40819 - 19968: jis0212<<14 | 0x4C<<7 | 0x33, + 40821 - 19968: jis0212<<14 | 0x4C<<7 | 0x34, + 40822 - 19968: jis0208<<14 | 0x52<<7 | 0x5A, + 40823 - 19968: jis0208<<14 | 0x52<<7 | 0x58, + 40826 - 19968: jis0212<<14 | 0x4C<<7 | 0x35, + 40829 - 19968: jis0212<<14 | 0x4C<<7 | 0x36, + 40845 - 19968: jis0208<<14 | 0x2D<<7 | 0x15, + 40847 - 19968: jis0212<<14 | 0x4C<<7 | 0x37, + 40848 - 19968: jis0212<<14 | 0x4C<<7 | 0x38, + 40849 - 19968: jis0212<<14 | 0x4C<<7 | 0x39, + 40850 - 19968: jis0212<<14 | 0x4C<<7 | 0x3A, + 40852 - 19968: jis0212<<14 | 0x4C<<7 | 0x3B, + 40853 - 19968: jis0208<<14 | 0x52<<7 | 0x5B, + 40854 - 19968: jis0212<<14 | 0x4C<<7 | 0x3C, + 40855 - 19968: jis0212<<14 | 0x4C<<7 | 0x3D, + 40860 - 19968: jis0208<<14 | 0x52<<7 | 0x5C, + 40861 - 19968: jis0208<<14 | 0x42<<7 | 0x33, + 40862 - 19968: jis0212<<14 | 0x4C<<7 | 0x3E, + 40864 - 19968: jis0208<<14 | 0x52<<7 | 0x5D, + 40865 - 19968: jis0212<<14 | 0x4C<<7 | 0x3F, + 40866 - 19968: jis0212<<14 | 0x4C<<7 | 0x40, + 40867 - 19968: jis0212<<14 | 0x4C<<7 | 0x41, + 40869 - 19968: jis0212<<14 | 0x4C<<7 | 0x42, +} + +const encode1Low, encode1High = 8208, 9840 + +var encode1 = [...]uint16{ + 8208 - 8208: jis0208<<14 | 0x00<<7 | 0x1D, + 8213 - 8208: jis0208<<14 | 0x00<<7 | 0x1C, + 8216 - 8208: jis0208<<14 | 0x00<<7 | 0x25, + 8217 - 8208: jis0208<<14 | 0x00<<7 | 0x26, + 8220 - 8208: jis0208<<14 | 0x00<<7 | 0x27, + 8221 - 8208: jis0208<<14 | 0x00<<7 | 0x28, + 8224 - 8208: jis0208<<14 | 0x01<<7 | 0x56, + 8225 - 8208: jis0208<<14 | 0x01<<7 | 0x57, + 8229 - 8208: jis0208<<14 | 0x00<<7 | 0x24, + 8230 - 8208: jis0208<<14 | 0x00<<7 | 0x23, + 8240 - 8208: jis0208<<14 | 0x01<<7 | 0x52, + 8242 - 8208: jis0208<<14 | 0x00<<7 | 0x4B, + 8243 - 8208: jis0208<<14 | 0x00<<7 | 0x4C, + 8251 - 8208: jis0208<<14 | 0x01<<7 | 0x07, + 8451 - 8208: jis0208<<14 | 0x00<<7 | 0x4D, + 8470 - 8208: jis0208<<14 | 0x0C<<7 | 0x41, + 8481 - 8208: jis0208<<14 | 0x0C<<7 | 0x43, + 8482 - 8208: jis0212<<14 | 0x01<<7 | 0x4E, + 8491 - 8208: jis0208<<14 | 0x01<<7 | 0x51, + 8544 - 8208: jis0208<<14 | 0x0C<<7 | 0x14, + 8545 - 8208: jis0208<<14 | 0x0C<<7 | 0x15, + 8546 - 8208: jis0208<<14 | 0x0C<<7 | 0x16, + 8547 - 8208: jis0208<<14 | 0x0C<<7 | 0x17, + 8548 - 8208: jis0208<<14 | 0x0C<<7 | 0x18, + 8549 - 8208: jis0208<<14 | 0x0C<<7 | 0x19, + 8550 - 8208: jis0208<<14 | 0x0C<<7 | 0x1A, + 8551 - 8208: jis0208<<14 | 0x0C<<7 | 0x1B, + 8552 - 8208: jis0208<<14 | 0x0C<<7 | 0x1C, + 8553 - 8208: jis0208<<14 | 0x0C<<7 | 0x1D, + 8560 - 8208: jis0208<<14 | 0x5B<<7 | 0x50, + 8561 - 8208: jis0208<<14 | 0x5B<<7 | 0x51, + 8562 - 8208: jis0208<<14 | 0x5B<<7 | 0x52, + 8563 - 8208: jis0208<<14 | 0x5B<<7 | 0x53, + 8564 - 8208: jis0208<<14 | 0x5B<<7 | 0x54, + 8565 - 8208: jis0208<<14 | 0x5B<<7 | 0x55, + 8566 - 8208: jis0208<<14 | 0x5B<<7 | 0x56, + 8567 - 8208: jis0208<<14 | 0x5B<<7 | 0x57, + 8568 - 8208: jis0208<<14 | 0x5B<<7 | 0x58, + 8569 - 8208: jis0208<<14 | 0x5B<<7 | 0x59, + 8592 - 8208: jis0208<<14 | 0x01<<7 | 0x0A, + 8593 - 8208: jis0208<<14 | 0x01<<7 | 0x0B, + 8594 - 8208: jis0208<<14 | 0x01<<7 | 0x09, + 8595 - 8208: jis0208<<14 | 0x01<<7 | 0x0C, + 8658 - 8208: jis0208<<14 | 0x01<<7 | 0x2C, + 8660 - 8208: jis0208<<14 | 0x01<<7 | 0x2D, + 8704 - 8208: jis0208<<14 | 0x01<<7 | 0x2E, + 8706 - 8208: jis0208<<14 | 0x01<<7 | 0x3E, + 8707 - 8208: jis0208<<14 | 0x01<<7 | 0x2F, + 8711 - 8208: jis0208<<14 | 0x01<<7 | 0x3F, + 8712 - 8208: jis0208<<14 | 0x01<<7 | 0x19, + 8715 - 8208: jis0208<<14 | 0x01<<7 | 0x1A, + 8721 - 8208: jis0208<<14 | 0x0C<<7 | 0x53, + 8730 - 8208: jis0208<<14 | 0x01<<7 | 0x44, + 8733 - 8208: jis0208<<14 | 0x01<<7 | 0x46, + 8734 - 8208: jis0208<<14 | 0x00<<7 | 0x46, + 8735 - 8208: jis0208<<14 | 0x0C<<7 | 0x57, + 8736 - 8208: jis0208<<14 | 0x01<<7 | 0x3B, + 8741 - 8208: jis0208<<14 | 0x00<<7 | 0x21, + 8743 - 8208: jis0208<<14 | 0x01<<7 | 0x29, + 8744 - 8208: jis0208<<14 | 0x01<<7 | 0x2A, + 8745 - 8208: jis0208<<14 | 0x01<<7 | 0x20, + 8746 - 8208: jis0208<<14 | 0x01<<7 | 0x1F, + 8747 - 8208: jis0208<<14 | 0x01<<7 | 0x48, + 8748 - 8208: jis0208<<14 | 0x01<<7 | 0x49, + 8750 - 8208: jis0208<<14 | 0x0C<<7 | 0x52, + 8756 - 8208: jis0208<<14 | 0x00<<7 | 0x47, + 8757 - 8208: jis0208<<14 | 0x01<<7 | 0x47, + 8765 - 8208: jis0208<<14 | 0x01<<7 | 0x45, + 8786 - 8208: jis0208<<14 | 0x01<<7 | 0x41, + 8800 - 8208: jis0208<<14 | 0x00<<7 | 0x41, + 8801 - 8208: jis0208<<14 | 0x01<<7 | 0x40, + 8806 - 8208: jis0208<<14 | 0x00<<7 | 0x44, + 8807 - 8208: jis0208<<14 | 0x00<<7 | 0x45, + 8810 - 8208: jis0208<<14 | 0x01<<7 | 0x42, + 8811 - 8208: jis0208<<14 | 0x01<<7 | 0x43, + 8834 - 8208: jis0208<<14 | 0x01<<7 | 0x1D, + 8835 - 8208: jis0208<<14 | 0x01<<7 | 0x1E, + 8838 - 8208: jis0208<<14 | 0x01<<7 | 0x1B, + 8839 - 8208: jis0208<<14 | 0x01<<7 | 0x1C, + 8869 - 8208: jis0208<<14 | 0x01<<7 | 0x3C, + 8895 - 8208: jis0208<<14 | 0x0C<<7 | 0x58, + 8978 - 8208: jis0208<<14 | 0x01<<7 | 0x3D, + 9312 - 8208: jis0208<<14 | 0x0C<<7 | 0x00, + 9313 - 8208: jis0208<<14 | 0x0C<<7 | 0x01, + 9314 - 8208: jis0208<<14 | 0x0C<<7 | 0x02, + 9315 - 8208: jis0208<<14 | 0x0C<<7 | 0x03, + 9316 - 8208: jis0208<<14 | 0x0C<<7 | 0x04, + 9317 - 8208: jis0208<<14 | 0x0C<<7 | 0x05, + 9318 - 8208: jis0208<<14 | 0x0C<<7 | 0x06, + 9319 - 8208: jis0208<<14 | 0x0C<<7 | 0x07, + 9320 - 8208: jis0208<<14 | 0x0C<<7 | 0x08, + 9321 - 8208: jis0208<<14 | 0x0C<<7 | 0x09, + 9322 - 8208: jis0208<<14 | 0x0C<<7 | 0x0A, + 9323 - 8208: jis0208<<14 | 0x0C<<7 | 0x0B, + 9324 - 8208: jis0208<<14 | 0x0C<<7 | 0x0C, + 9325 - 8208: jis0208<<14 | 0x0C<<7 | 0x0D, + 9326 - 8208: jis0208<<14 | 0x0C<<7 | 0x0E, + 9327 - 8208: jis0208<<14 | 0x0C<<7 | 0x0F, + 9328 - 8208: jis0208<<14 | 0x0C<<7 | 0x10, + 9329 - 8208: jis0208<<14 | 0x0C<<7 | 0x11, + 9330 - 8208: jis0208<<14 | 0x0C<<7 | 0x12, + 9331 - 8208: jis0208<<14 | 0x0C<<7 | 0x13, + 9472 - 8208: jis0208<<14 | 0x07<<7 | 0x00, + 9473 - 8208: jis0208<<14 | 0x07<<7 | 0x0B, + 9474 - 8208: jis0208<<14 | 0x07<<7 | 0x01, + 9475 - 8208: jis0208<<14 | 0x07<<7 | 0x0C, + 9484 - 8208: jis0208<<14 | 0x07<<7 | 0x02, + 9487 - 8208: jis0208<<14 | 0x07<<7 | 0x0D, + 9488 - 8208: jis0208<<14 | 0x07<<7 | 0x03, + 9491 - 8208: jis0208<<14 | 0x07<<7 | 0x0E, + 9492 - 8208: jis0208<<14 | 0x07<<7 | 0x05, + 9495 - 8208: jis0208<<14 | 0x07<<7 | 0x10, + 9496 - 8208: jis0208<<14 | 0x07<<7 | 0x04, + 9499 - 8208: jis0208<<14 | 0x07<<7 | 0x0F, + 9500 - 8208: jis0208<<14 | 0x07<<7 | 0x06, + 9501 - 8208: jis0208<<14 | 0x07<<7 | 0x1B, + 9504 - 8208: jis0208<<14 | 0x07<<7 | 0x16, + 9507 - 8208: jis0208<<14 | 0x07<<7 | 0x11, + 9508 - 8208: jis0208<<14 | 0x07<<7 | 0x08, + 9509 - 8208: jis0208<<14 | 0x07<<7 | 0x1D, + 9512 - 8208: jis0208<<14 | 0x07<<7 | 0x18, + 9515 - 8208: jis0208<<14 | 0x07<<7 | 0x13, + 9516 - 8208: jis0208<<14 | 0x07<<7 | 0x07, + 9519 - 8208: jis0208<<14 | 0x07<<7 | 0x17, + 9520 - 8208: jis0208<<14 | 0x07<<7 | 0x1C, + 9523 - 8208: jis0208<<14 | 0x07<<7 | 0x12, + 9524 - 8208: jis0208<<14 | 0x07<<7 | 0x09, + 9527 - 8208: jis0208<<14 | 0x07<<7 | 0x19, + 9528 - 8208: jis0208<<14 | 0x07<<7 | 0x1E, + 9531 - 8208: jis0208<<14 | 0x07<<7 | 0x14, + 9532 - 8208: jis0208<<14 | 0x07<<7 | 0x0A, + 9535 - 8208: jis0208<<14 | 0x07<<7 | 0x1A, + 9538 - 8208: jis0208<<14 | 0x07<<7 | 0x1F, + 9547 - 8208: jis0208<<14 | 0x07<<7 | 0x15, + 9632 - 8208: jis0208<<14 | 0x01<<7 | 0x02, + 9633 - 8208: jis0208<<14 | 0x01<<7 | 0x01, + 9650 - 8208: jis0208<<14 | 0x01<<7 | 0x04, + 9651 - 8208: jis0208<<14 | 0x01<<7 | 0x03, + 9660 - 8208: jis0208<<14 | 0x01<<7 | 0x06, + 9661 - 8208: jis0208<<14 | 0x01<<7 | 0x05, + 9670 - 8208: jis0208<<14 | 0x01<<7 | 0x00, + 9671 - 8208: jis0208<<14 | 0x00<<7 | 0x5D, + 9675 - 8208: jis0208<<14 | 0x00<<7 | 0x5A, + 9678 - 8208: jis0208<<14 | 0x00<<7 | 0x5C, + 9679 - 8208: jis0208<<14 | 0x00<<7 | 0x5B, + 9711 - 8208: jis0208<<14 | 0x01<<7 | 0x5D, + 9733 - 8208: jis0208<<14 | 0x00<<7 | 0x59, + 9734 - 8208: jis0208<<14 | 0x00<<7 | 0x58, + 9792 - 8208: jis0208<<14 | 0x00<<7 | 0x49, + 9794 - 8208: jis0208<<14 | 0x00<<7 | 0x48, + 9834 - 8208: jis0208<<14 | 0x01<<7 | 0x55, + 9837 - 8208: jis0208<<14 | 0x01<<7 | 0x54, + 9839 - 8208: jis0208<<14 | 0x01<<7 | 0x53, +} + +const encode2Low, encode2High = 12288, 13262 + +var encode2 = [...]uint16{ + 12288 - 12288: jis0208<<14 | 0x00<<7 | 0x00, + 12289 - 12288: jis0208<<14 | 0x00<<7 | 0x01, + 12290 - 12288: jis0208<<14 | 0x00<<7 | 0x02, + 12291 - 12288: jis0208<<14 | 0x00<<7 | 0x16, + 12293 - 12288: jis0208<<14 | 0x00<<7 | 0x18, + 12294 - 12288: jis0208<<14 | 0x00<<7 | 0x19, + 12295 - 12288: jis0208<<14 | 0x00<<7 | 0x1A, + 12296 - 12288: jis0208<<14 | 0x00<<7 | 0x31, + 12297 - 12288: jis0208<<14 | 0x00<<7 | 0x32, + 12298 - 12288: jis0208<<14 | 0x00<<7 | 0x33, + 12299 - 12288: jis0208<<14 | 0x00<<7 | 0x34, + 12300 - 12288: jis0208<<14 | 0x00<<7 | 0x35, + 12301 - 12288: jis0208<<14 | 0x00<<7 | 0x36, + 12302 - 12288: jis0208<<14 | 0x00<<7 | 0x37, + 12303 - 12288: jis0208<<14 | 0x00<<7 | 0x38, + 12304 - 12288: jis0208<<14 | 0x00<<7 | 0x39, + 12305 - 12288: jis0208<<14 | 0x00<<7 | 0x3A, + 12306 - 12288: jis0208<<14 | 0x01<<7 | 0x08, + 12307 - 12288: jis0208<<14 | 0x01<<7 | 0x0D, + 12308 - 12288: jis0208<<14 | 0x00<<7 | 0x2B, + 12309 - 12288: jis0208<<14 | 0x00<<7 | 0x2C, + 12317 - 12288: jis0208<<14 | 0x0C<<7 | 0x3F, + 12319 - 12288: jis0208<<14 | 0x0C<<7 | 0x40, + 12353 - 12288: jis0208<<14 | 0x03<<7 | 0x00, + 12354 - 12288: jis0208<<14 | 0x03<<7 | 0x01, + 12355 - 12288: jis0208<<14 | 0x03<<7 | 0x02, + 12356 - 12288: jis0208<<14 | 0x03<<7 | 0x03, + 12357 - 12288: jis0208<<14 | 0x03<<7 | 0x04, + 12358 - 12288: jis0208<<14 | 0x03<<7 | 0x05, + 12359 - 12288: jis0208<<14 | 0x03<<7 | 0x06, + 12360 - 12288: jis0208<<14 | 0x03<<7 | 0x07, + 12361 - 12288: jis0208<<14 | 0x03<<7 | 0x08, + 12362 - 12288: jis0208<<14 | 0x03<<7 | 0x09, + 12363 - 12288: jis0208<<14 | 0x03<<7 | 0x0A, + 12364 - 12288: jis0208<<14 | 0x03<<7 | 0x0B, + 12365 - 12288: jis0208<<14 | 0x03<<7 | 0x0C, + 12366 - 12288: jis0208<<14 | 0x03<<7 | 0x0D, + 12367 - 12288: jis0208<<14 | 0x03<<7 | 0x0E, + 12368 - 12288: jis0208<<14 | 0x03<<7 | 0x0F, + 12369 - 12288: jis0208<<14 | 0x03<<7 | 0x10, + 12370 - 12288: jis0208<<14 | 0x03<<7 | 0x11, + 12371 - 12288: jis0208<<14 | 0x03<<7 | 0x12, + 12372 - 12288: jis0208<<14 | 0x03<<7 | 0x13, + 12373 - 12288: jis0208<<14 | 0x03<<7 | 0x14, + 12374 - 12288: jis0208<<14 | 0x03<<7 | 0x15, + 12375 - 12288: jis0208<<14 | 0x03<<7 | 0x16, + 12376 - 12288: jis0208<<14 | 0x03<<7 | 0x17, + 12377 - 12288: jis0208<<14 | 0x03<<7 | 0x18, + 12378 - 12288: jis0208<<14 | 0x03<<7 | 0x19, + 12379 - 12288: jis0208<<14 | 0x03<<7 | 0x1A, + 12380 - 12288: jis0208<<14 | 0x03<<7 | 0x1B, + 12381 - 12288: jis0208<<14 | 0x03<<7 | 0x1C, + 12382 - 12288: jis0208<<14 | 0x03<<7 | 0x1D, + 12383 - 12288: jis0208<<14 | 0x03<<7 | 0x1E, + 12384 - 12288: jis0208<<14 | 0x03<<7 | 0x1F, + 12385 - 12288: jis0208<<14 | 0x03<<7 | 0x20, + 12386 - 12288: jis0208<<14 | 0x03<<7 | 0x21, + 12387 - 12288: jis0208<<14 | 0x03<<7 | 0x22, + 12388 - 12288: jis0208<<14 | 0x03<<7 | 0x23, + 12389 - 12288: jis0208<<14 | 0x03<<7 | 0x24, + 12390 - 12288: jis0208<<14 | 0x03<<7 | 0x25, + 12391 - 12288: jis0208<<14 | 0x03<<7 | 0x26, + 12392 - 12288: jis0208<<14 | 0x03<<7 | 0x27, + 12393 - 12288: jis0208<<14 | 0x03<<7 | 0x28, + 12394 - 12288: jis0208<<14 | 0x03<<7 | 0x29, + 12395 - 12288: jis0208<<14 | 0x03<<7 | 0x2A, + 12396 - 12288: jis0208<<14 | 0x03<<7 | 0x2B, + 12397 - 12288: jis0208<<14 | 0x03<<7 | 0x2C, + 12398 - 12288: jis0208<<14 | 0x03<<7 | 0x2D, + 12399 - 12288: jis0208<<14 | 0x03<<7 | 0x2E, + 12400 - 12288: jis0208<<14 | 0x03<<7 | 0x2F, + 12401 - 12288: jis0208<<14 | 0x03<<7 | 0x30, + 12402 - 12288: jis0208<<14 | 0x03<<7 | 0x31, + 12403 - 12288: jis0208<<14 | 0x03<<7 | 0x32, + 12404 - 12288: jis0208<<14 | 0x03<<7 | 0x33, + 12405 - 12288: jis0208<<14 | 0x03<<7 | 0x34, + 12406 - 12288: jis0208<<14 | 0x03<<7 | 0x35, + 12407 - 12288: jis0208<<14 | 0x03<<7 | 0x36, + 12408 - 12288: jis0208<<14 | 0x03<<7 | 0x37, + 12409 - 12288: jis0208<<14 | 0x03<<7 | 0x38, + 12410 - 12288: jis0208<<14 | 0x03<<7 | 0x39, + 12411 - 12288: jis0208<<14 | 0x03<<7 | 0x3A, + 12412 - 12288: jis0208<<14 | 0x03<<7 | 0x3B, + 12413 - 12288: jis0208<<14 | 0x03<<7 | 0x3C, + 12414 - 12288: jis0208<<14 | 0x03<<7 | 0x3D, + 12415 - 12288: jis0208<<14 | 0x03<<7 | 0x3E, + 12416 - 12288: jis0208<<14 | 0x03<<7 | 0x3F, + 12417 - 12288: jis0208<<14 | 0x03<<7 | 0x40, + 12418 - 12288: jis0208<<14 | 0x03<<7 | 0x41, + 12419 - 12288: jis0208<<14 | 0x03<<7 | 0x42, + 12420 - 12288: jis0208<<14 | 0x03<<7 | 0x43, + 12421 - 12288: jis0208<<14 | 0x03<<7 | 0x44, + 12422 - 12288: jis0208<<14 | 0x03<<7 | 0x45, + 12423 - 12288: jis0208<<14 | 0x03<<7 | 0x46, + 12424 - 12288: jis0208<<14 | 0x03<<7 | 0x47, + 12425 - 12288: jis0208<<14 | 0x03<<7 | 0x48, + 12426 - 12288: jis0208<<14 | 0x03<<7 | 0x49, + 12427 - 12288: jis0208<<14 | 0x03<<7 | 0x4A, + 12428 - 12288: jis0208<<14 | 0x03<<7 | 0x4B, + 12429 - 12288: jis0208<<14 | 0x03<<7 | 0x4C, + 12430 - 12288: jis0208<<14 | 0x03<<7 | 0x4D, + 12431 - 12288: jis0208<<14 | 0x03<<7 | 0x4E, + 12432 - 12288: jis0208<<14 | 0x03<<7 | 0x4F, + 12433 - 12288: jis0208<<14 | 0x03<<7 | 0x50, + 12434 - 12288: jis0208<<14 | 0x03<<7 | 0x51, + 12435 - 12288: jis0208<<14 | 0x03<<7 | 0x52, + 12443 - 12288: jis0208<<14 | 0x00<<7 | 0x0A, + 12444 - 12288: jis0208<<14 | 0x00<<7 | 0x0B, + 12445 - 12288: jis0208<<14 | 0x00<<7 | 0x14, + 12446 - 12288: jis0208<<14 | 0x00<<7 | 0x15, + 12449 - 12288: jis0208<<14 | 0x04<<7 | 0x00, + 12450 - 12288: jis0208<<14 | 0x04<<7 | 0x01, + 12451 - 12288: jis0208<<14 | 0x04<<7 | 0x02, + 12452 - 12288: jis0208<<14 | 0x04<<7 | 0x03, + 12453 - 12288: jis0208<<14 | 0x04<<7 | 0x04, + 12454 - 12288: jis0208<<14 | 0x04<<7 | 0x05, + 12455 - 12288: jis0208<<14 | 0x04<<7 | 0x06, + 12456 - 12288: jis0208<<14 | 0x04<<7 | 0x07, + 12457 - 12288: jis0208<<14 | 0x04<<7 | 0x08, + 12458 - 12288: jis0208<<14 | 0x04<<7 | 0x09, + 12459 - 12288: jis0208<<14 | 0x04<<7 | 0x0A, + 12460 - 12288: jis0208<<14 | 0x04<<7 | 0x0B, + 12461 - 12288: jis0208<<14 | 0x04<<7 | 0x0C, + 12462 - 12288: jis0208<<14 | 0x04<<7 | 0x0D, + 12463 - 12288: jis0208<<14 | 0x04<<7 | 0x0E, + 12464 - 12288: jis0208<<14 | 0x04<<7 | 0x0F, + 12465 - 12288: jis0208<<14 | 0x04<<7 | 0x10, + 12466 - 12288: jis0208<<14 | 0x04<<7 | 0x11, + 12467 - 12288: jis0208<<14 | 0x04<<7 | 0x12, + 12468 - 12288: jis0208<<14 | 0x04<<7 | 0x13, + 12469 - 12288: jis0208<<14 | 0x04<<7 | 0x14, + 12470 - 12288: jis0208<<14 | 0x04<<7 | 0x15, + 12471 - 12288: jis0208<<14 | 0x04<<7 | 0x16, + 12472 - 12288: jis0208<<14 | 0x04<<7 | 0x17, + 12473 - 12288: jis0208<<14 | 0x04<<7 | 0x18, + 12474 - 12288: jis0208<<14 | 0x04<<7 | 0x19, + 12475 - 12288: jis0208<<14 | 0x04<<7 | 0x1A, + 12476 - 12288: jis0208<<14 | 0x04<<7 | 0x1B, + 12477 - 12288: jis0208<<14 | 0x04<<7 | 0x1C, + 12478 - 12288: jis0208<<14 | 0x04<<7 | 0x1D, + 12479 - 12288: jis0208<<14 | 0x04<<7 | 0x1E, + 12480 - 12288: jis0208<<14 | 0x04<<7 | 0x1F, + 12481 - 12288: jis0208<<14 | 0x04<<7 | 0x20, + 12482 - 12288: jis0208<<14 | 0x04<<7 | 0x21, + 12483 - 12288: jis0208<<14 | 0x04<<7 | 0x22, + 12484 - 12288: jis0208<<14 | 0x04<<7 | 0x23, + 12485 - 12288: jis0208<<14 | 0x04<<7 | 0x24, + 12486 - 12288: jis0208<<14 | 0x04<<7 | 0x25, + 12487 - 12288: jis0208<<14 | 0x04<<7 | 0x26, + 12488 - 12288: jis0208<<14 | 0x04<<7 | 0x27, + 12489 - 12288: jis0208<<14 | 0x04<<7 | 0x28, + 12490 - 12288: jis0208<<14 | 0x04<<7 | 0x29, + 12491 - 12288: jis0208<<14 | 0x04<<7 | 0x2A, + 12492 - 12288: jis0208<<14 | 0x04<<7 | 0x2B, + 12493 - 12288: jis0208<<14 | 0x04<<7 | 0x2C, + 12494 - 12288: jis0208<<14 | 0x04<<7 | 0x2D, + 12495 - 12288: jis0208<<14 | 0x04<<7 | 0x2E, + 12496 - 12288: jis0208<<14 | 0x04<<7 | 0x2F, + 12497 - 12288: jis0208<<14 | 0x04<<7 | 0x30, + 12498 - 12288: jis0208<<14 | 0x04<<7 | 0x31, + 12499 - 12288: jis0208<<14 | 0x04<<7 | 0x32, + 12500 - 12288: jis0208<<14 | 0x04<<7 | 0x33, + 12501 - 12288: jis0208<<14 | 0x04<<7 | 0x34, + 12502 - 12288: jis0208<<14 | 0x04<<7 | 0x35, + 12503 - 12288: jis0208<<14 | 0x04<<7 | 0x36, + 12504 - 12288: jis0208<<14 | 0x04<<7 | 0x37, + 12505 - 12288: jis0208<<14 | 0x04<<7 | 0x38, + 12506 - 12288: jis0208<<14 | 0x04<<7 | 0x39, + 12507 - 12288: jis0208<<14 | 0x04<<7 | 0x3A, + 12508 - 12288: jis0208<<14 | 0x04<<7 | 0x3B, + 12509 - 12288: jis0208<<14 | 0x04<<7 | 0x3C, + 12510 - 12288: jis0208<<14 | 0x04<<7 | 0x3D, + 12511 - 12288: jis0208<<14 | 0x04<<7 | 0x3E, + 12512 - 12288: jis0208<<14 | 0x04<<7 | 0x3F, + 12513 - 12288: jis0208<<14 | 0x04<<7 | 0x40, + 12514 - 12288: jis0208<<14 | 0x04<<7 | 0x41, + 12515 - 12288: jis0208<<14 | 0x04<<7 | 0x42, + 12516 - 12288: jis0208<<14 | 0x04<<7 | 0x43, + 12517 - 12288: jis0208<<14 | 0x04<<7 | 0x44, + 12518 - 12288: jis0208<<14 | 0x04<<7 | 0x45, + 12519 - 12288: jis0208<<14 | 0x04<<7 | 0x46, + 12520 - 12288: jis0208<<14 | 0x04<<7 | 0x47, + 12521 - 12288: jis0208<<14 | 0x04<<7 | 0x48, + 12522 - 12288: jis0208<<14 | 0x04<<7 | 0x49, + 12523 - 12288: jis0208<<14 | 0x04<<7 | 0x4A, + 12524 - 12288: jis0208<<14 | 0x04<<7 | 0x4B, + 12525 - 12288: jis0208<<14 | 0x04<<7 | 0x4C, + 12526 - 12288: jis0208<<14 | 0x04<<7 | 0x4D, + 12527 - 12288: jis0208<<14 | 0x04<<7 | 0x4E, + 12528 - 12288: jis0208<<14 | 0x04<<7 | 0x4F, + 12529 - 12288: jis0208<<14 | 0x04<<7 | 0x50, + 12530 - 12288: jis0208<<14 | 0x04<<7 | 0x51, + 12531 - 12288: jis0208<<14 | 0x04<<7 | 0x52, + 12532 - 12288: jis0208<<14 | 0x04<<7 | 0x53, + 12533 - 12288: jis0208<<14 | 0x04<<7 | 0x54, + 12534 - 12288: jis0208<<14 | 0x04<<7 | 0x55, + 12539 - 12288: jis0208<<14 | 0x00<<7 | 0x05, + 12540 - 12288: jis0208<<14 | 0x00<<7 | 0x1B, + 12541 - 12288: jis0208<<14 | 0x00<<7 | 0x12, + 12542 - 12288: jis0208<<14 | 0x00<<7 | 0x13, + 12849 - 12288: jis0208<<14 | 0x0C<<7 | 0x49, + 12850 - 12288: jis0208<<14 | 0x0C<<7 | 0x4A, + 12857 - 12288: jis0208<<14 | 0x0C<<7 | 0x4B, + 12964 - 12288: jis0208<<14 | 0x0C<<7 | 0x44, + 12965 - 12288: jis0208<<14 | 0x0C<<7 | 0x45, + 12966 - 12288: jis0208<<14 | 0x0C<<7 | 0x46, + 12967 - 12288: jis0208<<14 | 0x0C<<7 | 0x47, + 12968 - 12288: jis0208<<14 | 0x0C<<7 | 0x48, + 13059 - 12288: jis0208<<14 | 0x0C<<7 | 0x25, + 13069 - 12288: jis0208<<14 | 0x0C<<7 | 0x29, + 13076 - 12288: jis0208<<14 | 0x0C<<7 | 0x20, + 13080 - 12288: jis0208<<14 | 0x0C<<7 | 0x23, + 13090 - 12288: jis0208<<14 | 0x0C<<7 | 0x21, + 13091 - 12288: jis0208<<14 | 0x0C<<7 | 0x2B, + 13094 - 12288: jis0208<<14 | 0x0C<<7 | 0x2A, + 13095 - 12288: jis0208<<14 | 0x0C<<7 | 0x24, + 13099 - 12288: jis0208<<14 | 0x0C<<7 | 0x2C, + 13110 - 12288: jis0208<<14 | 0x0C<<7 | 0x26, + 13115 - 12288: jis0208<<14 | 0x0C<<7 | 0x2E, + 13129 - 12288: jis0208<<14 | 0x0C<<7 | 0x1F, + 13130 - 12288: jis0208<<14 | 0x0C<<7 | 0x2D, + 13133 - 12288: jis0208<<14 | 0x0C<<7 | 0x22, + 13137 - 12288: jis0208<<14 | 0x0C<<7 | 0x27, + 13143 - 12288: jis0208<<14 | 0x0C<<7 | 0x28, + 13179 - 12288: jis0208<<14 | 0x0C<<7 | 0x3E, + 13180 - 12288: jis0208<<14 | 0x0C<<7 | 0x4E, + 13181 - 12288: jis0208<<14 | 0x0C<<7 | 0x4D, + 13182 - 12288: jis0208<<14 | 0x0C<<7 | 0x4C, + 13198 - 12288: jis0208<<14 | 0x0C<<7 | 0x32, + 13199 - 12288: jis0208<<14 | 0x0C<<7 | 0x33, + 13212 - 12288: jis0208<<14 | 0x0C<<7 | 0x2F, + 13213 - 12288: jis0208<<14 | 0x0C<<7 | 0x30, + 13214 - 12288: jis0208<<14 | 0x0C<<7 | 0x31, + 13217 - 12288: jis0208<<14 | 0x0C<<7 | 0x35, + 13252 - 12288: jis0208<<14 | 0x0C<<7 | 0x34, + 13261 - 12288: jis0208<<14 | 0x0C<<7 | 0x42, +} + +const encode3Low, encode3High = 161, 1120 + +var encode3 = [...]uint16{ + 161 - 161: jis0212<<14 | 0x01<<7 | 0x21, + 164 - 161: jis0212<<14 | 0x01<<7 | 0x4F, + 166 - 161: jis0212<<14 | 0x01<<7 | 0x22, + 167 - 161: jis0208<<14 | 0x00<<7 | 0x57, + 168 - 161: jis0208<<14 | 0x00<<7 | 0x0E, + 169 - 161: jis0212<<14 | 0x01<<7 | 0x4C, + 170 - 161: jis0212<<14 | 0x01<<7 | 0x4B, + 174 - 161: jis0212<<14 | 0x01<<7 | 0x4D, + 175 - 161: jis0212<<14 | 0x01<<7 | 0x13, + 176 - 161: jis0208<<14 | 0x00<<7 | 0x4A, + 177 - 161: jis0208<<14 | 0x00<<7 | 0x3D, + 180 - 161: jis0208<<14 | 0x00<<7 | 0x0C, + 182 - 161: jis0208<<14 | 0x01<<7 | 0x58, + 184 - 161: jis0212<<14 | 0x01<<7 | 0x10, + 186 - 161: jis0212<<14 | 0x01<<7 | 0x4A, + 191 - 161: jis0212<<14 | 0x01<<7 | 0x23, + 192 - 161: jis0212<<14 | 0x09<<7 | 0x01, + 193 - 161: jis0212<<14 | 0x09<<7 | 0x00, + 194 - 161: jis0212<<14 | 0x09<<7 | 0x03, + 195 - 161: jis0212<<14 | 0x09<<7 | 0x09, + 196 - 161: jis0212<<14 | 0x09<<7 | 0x02, + 197 - 161: jis0212<<14 | 0x09<<7 | 0x08, + 198 - 161: jis0212<<14 | 0x08<<7 | 0x00, + 199 - 161: jis0212<<14 | 0x09<<7 | 0x0D, + 200 - 161: jis0212<<14 | 0x09<<7 | 0x11, + 201 - 161: jis0212<<14 | 0x09<<7 | 0x10, + 202 - 161: jis0212<<14 | 0x09<<7 | 0x13, + 203 - 161: jis0212<<14 | 0x09<<7 | 0x12, + 204 - 161: jis0212<<14 | 0x09<<7 | 0x1F, + 205 - 161: jis0212<<14 | 0x09<<7 | 0x1E, + 206 - 161: jis0212<<14 | 0x09<<7 | 0x21, + 207 - 161: jis0212<<14 | 0x09<<7 | 0x20, + 209 - 161: jis0212<<14 | 0x09<<7 | 0x2F, + 210 - 161: jis0212<<14 | 0x09<<7 | 0x31, + 211 - 161: jis0212<<14 | 0x09<<7 | 0x30, + 212 - 161: jis0212<<14 | 0x09<<7 | 0x33, + 213 - 161: jis0212<<14 | 0x09<<7 | 0x37, + 214 - 161: jis0212<<14 | 0x09<<7 | 0x32, + 215 - 161: jis0208<<14 | 0x00<<7 | 0x3E, + 216 - 161: jis0212<<14 | 0x08<<7 | 0x0B, + 217 - 161: jis0212<<14 | 0x09<<7 | 0x42, + 218 - 161: jis0212<<14 | 0x09<<7 | 0x41, + 219 - 161: jis0212<<14 | 0x09<<7 | 0x44, + 220 - 161: jis0212<<14 | 0x09<<7 | 0x43, + 221 - 161: jis0212<<14 | 0x09<<7 | 0x51, + 222 - 161: jis0212<<14 | 0x08<<7 | 0x0F, + 223 - 161: jis0212<<14 | 0x08<<7 | 0x2D, + 224 - 161: jis0212<<14 | 0x0A<<7 | 0x01, + 225 - 161: jis0212<<14 | 0x0A<<7 | 0x00, + 226 - 161: jis0212<<14 | 0x0A<<7 | 0x03, + 227 - 161: jis0212<<14 | 0x0A<<7 | 0x09, + 228 - 161: jis0212<<14 | 0x0A<<7 | 0x02, + 229 - 161: jis0212<<14 | 0x0A<<7 | 0x08, + 230 - 161: jis0212<<14 | 0x08<<7 | 0x20, + 231 - 161: jis0212<<14 | 0x0A<<7 | 0x0D, + 232 - 161: jis0212<<14 | 0x0A<<7 | 0x11, + 233 - 161: jis0212<<14 | 0x0A<<7 | 0x10, + 234 - 161: jis0212<<14 | 0x0A<<7 | 0x13, + 235 - 161: jis0212<<14 | 0x0A<<7 | 0x12, + 236 - 161: jis0212<<14 | 0x0A<<7 | 0x1F, + 237 - 161: jis0212<<14 | 0x0A<<7 | 0x1E, + 238 - 161: jis0212<<14 | 0x0A<<7 | 0x21, + 239 - 161: jis0212<<14 | 0x0A<<7 | 0x20, + 240 - 161: jis0212<<14 | 0x08<<7 | 0x22, + 241 - 161: jis0212<<14 | 0x0A<<7 | 0x2F, + 242 - 161: jis0212<<14 | 0x0A<<7 | 0x31, + 243 - 161: jis0212<<14 | 0x0A<<7 | 0x30, + 244 - 161: jis0212<<14 | 0x0A<<7 | 0x33, + 245 - 161: jis0212<<14 | 0x0A<<7 | 0x37, + 246 - 161: jis0212<<14 | 0x0A<<7 | 0x32, + 247 - 161: jis0208<<14 | 0x00<<7 | 0x3F, + 248 - 161: jis0212<<14 | 0x08<<7 | 0x2B, + 249 - 161: jis0212<<14 | 0x0A<<7 | 0x42, + 250 - 161: jis0212<<14 | 0x0A<<7 | 0x41, + 251 - 161: jis0212<<14 | 0x0A<<7 | 0x44, + 252 - 161: jis0212<<14 | 0x0A<<7 | 0x43, + 253 - 161: jis0212<<14 | 0x0A<<7 | 0x51, + 254 - 161: jis0212<<14 | 0x08<<7 | 0x2F, + 255 - 161: jis0212<<14 | 0x0A<<7 | 0x52, + 256 - 161: jis0212<<14 | 0x09<<7 | 0x06, + 257 - 161: jis0212<<14 | 0x0A<<7 | 0x06, + 258 - 161: jis0212<<14 | 0x09<<7 | 0x04, + 259 - 161: jis0212<<14 | 0x0A<<7 | 0x04, + 260 - 161: jis0212<<14 | 0x09<<7 | 0x07, + 261 - 161: jis0212<<14 | 0x0A<<7 | 0x07, + 262 - 161: jis0212<<14 | 0x09<<7 | 0x0A, + 263 - 161: jis0212<<14 | 0x0A<<7 | 0x0A, + 264 - 161: jis0212<<14 | 0x09<<7 | 0x0B, + 265 - 161: jis0212<<14 | 0x0A<<7 | 0x0B, + 266 - 161: jis0212<<14 | 0x09<<7 | 0x0E, + 267 - 161: jis0212<<14 | 0x0A<<7 | 0x0E, + 268 - 161: jis0212<<14 | 0x09<<7 | 0x0C, + 269 - 161: jis0212<<14 | 0x0A<<7 | 0x0C, + 270 - 161: jis0212<<14 | 0x09<<7 | 0x0F, + 271 - 161: jis0212<<14 | 0x0A<<7 | 0x0F, + 272 - 161: jis0212<<14 | 0x08<<7 | 0x01, + 273 - 161: jis0212<<14 | 0x08<<7 | 0x21, + 274 - 161: jis0212<<14 | 0x09<<7 | 0x16, + 275 - 161: jis0212<<14 | 0x0A<<7 | 0x16, + 278 - 161: jis0212<<14 | 0x09<<7 | 0x15, + 279 - 161: jis0212<<14 | 0x0A<<7 | 0x15, + 280 - 161: jis0212<<14 | 0x09<<7 | 0x17, + 281 - 161: jis0212<<14 | 0x0A<<7 | 0x17, + 282 - 161: jis0212<<14 | 0x09<<7 | 0x14, + 283 - 161: jis0212<<14 | 0x0A<<7 | 0x14, + 284 - 161: jis0212<<14 | 0x09<<7 | 0x19, + 285 - 161: jis0212<<14 | 0x0A<<7 | 0x19, + 286 - 161: jis0212<<14 | 0x09<<7 | 0x1A, + 287 - 161: jis0212<<14 | 0x0A<<7 | 0x1A, + 288 - 161: jis0212<<14 | 0x09<<7 | 0x1C, + 289 - 161: jis0212<<14 | 0x0A<<7 | 0x1C, + 290 - 161: jis0212<<14 | 0x09<<7 | 0x1B, + 292 - 161: jis0212<<14 | 0x09<<7 | 0x1D, + 293 - 161: jis0212<<14 | 0x0A<<7 | 0x1D, + 294 - 161: jis0212<<14 | 0x08<<7 | 0x03, + 295 - 161: jis0212<<14 | 0x08<<7 | 0x23, + 296 - 161: jis0212<<14 | 0x09<<7 | 0x26, + 297 - 161: jis0212<<14 | 0x0A<<7 | 0x26, + 298 - 161: jis0212<<14 | 0x09<<7 | 0x24, + 299 - 161: jis0212<<14 | 0x0A<<7 | 0x24, + 302 - 161: jis0212<<14 | 0x09<<7 | 0x25, + 303 - 161: jis0212<<14 | 0x0A<<7 | 0x25, + 304 - 161: jis0212<<14 | 0x09<<7 | 0x23, + 305 - 161: jis0212<<14 | 0x08<<7 | 0x24, + 306 - 161: jis0212<<14 | 0x08<<7 | 0x05, + 307 - 161: jis0212<<14 | 0x08<<7 | 0x25, + 308 - 161: jis0212<<14 | 0x09<<7 | 0x27, + 309 - 161: jis0212<<14 | 0x0A<<7 | 0x27, + 310 - 161: jis0212<<14 | 0x09<<7 | 0x28, + 311 - 161: jis0212<<14 | 0x0A<<7 | 0x28, + 312 - 161: jis0212<<14 | 0x08<<7 | 0x26, + 313 - 161: jis0212<<14 | 0x09<<7 | 0x29, + 314 - 161: jis0212<<14 | 0x0A<<7 | 0x29, + 315 - 161: jis0212<<14 | 0x09<<7 | 0x2B, + 316 - 161: jis0212<<14 | 0x0A<<7 | 0x2B, + 317 - 161: jis0212<<14 | 0x09<<7 | 0x2A, + 318 - 161: jis0212<<14 | 0x0A<<7 | 0x2A, + 319 - 161: jis0212<<14 | 0x08<<7 | 0x08, + 320 - 161: jis0212<<14 | 0x08<<7 | 0x28, + 321 - 161: jis0212<<14 | 0x08<<7 | 0x07, + 322 - 161: jis0212<<14 | 0x08<<7 | 0x27, + 323 - 161: jis0212<<14 | 0x09<<7 | 0x2C, + 324 - 161: jis0212<<14 | 0x0A<<7 | 0x2C, + 325 - 161: jis0212<<14 | 0x09<<7 | 0x2E, + 326 - 161: jis0212<<14 | 0x0A<<7 | 0x2E, + 327 - 161: jis0212<<14 | 0x09<<7 | 0x2D, + 328 - 161: jis0212<<14 | 0x0A<<7 | 0x2D, + 329 - 161: jis0212<<14 | 0x08<<7 | 0x29, + 330 - 161: jis0212<<14 | 0x08<<7 | 0x0A, + 331 - 161: jis0212<<14 | 0x08<<7 | 0x2A, + 332 - 161: jis0212<<14 | 0x09<<7 | 0x36, + 333 - 161: jis0212<<14 | 0x0A<<7 | 0x36, + 336 - 161: jis0212<<14 | 0x09<<7 | 0x35, + 337 - 161: jis0212<<14 | 0x0A<<7 | 0x35, + 338 - 161: jis0212<<14 | 0x08<<7 | 0x0C, + 339 - 161: jis0212<<14 | 0x08<<7 | 0x2C, + 340 - 161: jis0212<<14 | 0x09<<7 | 0x38, + 341 - 161: jis0212<<14 | 0x0A<<7 | 0x38, + 342 - 161: jis0212<<14 | 0x09<<7 | 0x3A, + 343 - 161: jis0212<<14 | 0x0A<<7 | 0x3A, + 344 - 161: jis0212<<14 | 0x09<<7 | 0x39, + 345 - 161: jis0212<<14 | 0x0A<<7 | 0x39, + 346 - 161: jis0212<<14 | 0x09<<7 | 0x3B, + 347 - 161: jis0212<<14 | 0x0A<<7 | 0x3B, + 348 - 161: jis0212<<14 | 0x09<<7 | 0x3C, + 349 - 161: jis0212<<14 | 0x0A<<7 | 0x3C, + 350 - 161: jis0212<<14 | 0x09<<7 | 0x3E, + 351 - 161: jis0212<<14 | 0x0A<<7 | 0x3E, + 352 - 161: jis0212<<14 | 0x09<<7 | 0x3D, + 353 - 161: jis0212<<14 | 0x0A<<7 | 0x3D, + 354 - 161: jis0212<<14 | 0x09<<7 | 0x40, + 355 - 161: jis0212<<14 | 0x0A<<7 | 0x40, + 356 - 161: jis0212<<14 | 0x09<<7 | 0x3F, + 357 - 161: jis0212<<14 | 0x0A<<7 | 0x3F, + 358 - 161: jis0212<<14 | 0x08<<7 | 0x0E, + 359 - 161: jis0212<<14 | 0x08<<7 | 0x2E, + 360 - 161: jis0212<<14 | 0x09<<7 | 0x4B, + 361 - 161: jis0212<<14 | 0x0A<<7 | 0x4B, + 362 - 161: jis0212<<14 | 0x09<<7 | 0x48, + 363 - 161: jis0212<<14 | 0x0A<<7 | 0x48, + 364 - 161: jis0212<<14 | 0x09<<7 | 0x45, + 365 - 161: jis0212<<14 | 0x0A<<7 | 0x45, + 366 - 161: jis0212<<14 | 0x09<<7 | 0x4A, + 367 - 161: jis0212<<14 | 0x0A<<7 | 0x4A, + 368 - 161: jis0212<<14 | 0x09<<7 | 0x47, + 369 - 161: jis0212<<14 | 0x0A<<7 | 0x47, + 370 - 161: jis0212<<14 | 0x09<<7 | 0x49, + 371 - 161: jis0212<<14 | 0x0A<<7 | 0x49, + 372 - 161: jis0212<<14 | 0x09<<7 | 0x50, + 373 - 161: jis0212<<14 | 0x0A<<7 | 0x50, + 374 - 161: jis0212<<14 | 0x09<<7 | 0x53, + 375 - 161: jis0212<<14 | 0x0A<<7 | 0x53, + 376 - 161: jis0212<<14 | 0x09<<7 | 0x52, + 377 - 161: jis0212<<14 | 0x09<<7 | 0x54, + 378 - 161: jis0212<<14 | 0x0A<<7 | 0x54, + 379 - 161: jis0212<<14 | 0x09<<7 | 0x56, + 380 - 161: jis0212<<14 | 0x0A<<7 | 0x56, + 381 - 161: jis0212<<14 | 0x09<<7 | 0x55, + 382 - 161: jis0212<<14 | 0x0A<<7 | 0x55, + 461 - 161: jis0212<<14 | 0x09<<7 | 0x05, + 462 - 161: jis0212<<14 | 0x0A<<7 | 0x05, + 463 - 161: jis0212<<14 | 0x09<<7 | 0x22, + 464 - 161: jis0212<<14 | 0x0A<<7 | 0x22, + 465 - 161: jis0212<<14 | 0x09<<7 | 0x34, + 466 - 161: jis0212<<14 | 0x0A<<7 | 0x34, + 467 - 161: jis0212<<14 | 0x09<<7 | 0x46, + 468 - 161: jis0212<<14 | 0x0A<<7 | 0x46, + 469 - 161: jis0212<<14 | 0x09<<7 | 0x4F, + 470 - 161: jis0212<<14 | 0x0A<<7 | 0x4F, + 471 - 161: jis0212<<14 | 0x09<<7 | 0x4C, + 472 - 161: jis0212<<14 | 0x0A<<7 | 0x4C, + 473 - 161: jis0212<<14 | 0x09<<7 | 0x4E, + 474 - 161: jis0212<<14 | 0x0A<<7 | 0x4E, + 475 - 161: jis0212<<14 | 0x09<<7 | 0x4D, + 476 - 161: jis0212<<14 | 0x0A<<7 | 0x4D, + 501 - 161: jis0212<<14 | 0x0A<<7 | 0x18, + 711 - 161: jis0212<<14 | 0x01<<7 | 0x0F, + 728 - 161: jis0212<<14 | 0x01<<7 | 0x0E, + 729 - 161: jis0212<<14 | 0x01<<7 | 0x11, + 730 - 161: jis0212<<14 | 0x01<<7 | 0x15, + 731 - 161: jis0212<<14 | 0x01<<7 | 0x14, + 733 - 161: jis0212<<14 | 0x01<<7 | 0x12, + 900 - 161: jis0212<<14 | 0x01<<7 | 0x17, + 901 - 161: jis0212<<14 | 0x01<<7 | 0x18, + 902 - 161: jis0212<<14 | 0x05<<7 | 0x40, + 904 - 161: jis0212<<14 | 0x05<<7 | 0x41, + 905 - 161: jis0212<<14 | 0x05<<7 | 0x42, + 906 - 161: jis0212<<14 | 0x05<<7 | 0x43, + 908 - 161: jis0212<<14 | 0x05<<7 | 0x46, + 910 - 161: jis0212<<14 | 0x05<<7 | 0x48, + 911 - 161: jis0212<<14 | 0x05<<7 | 0x4B, + 912 - 161: jis0212<<14 | 0x05<<7 | 0x55, + 913 - 161: jis0208<<14 | 0x05<<7 | 0x00, + 914 - 161: jis0208<<14 | 0x05<<7 | 0x01, + 915 - 161: jis0208<<14 | 0x05<<7 | 0x02, + 916 - 161: jis0208<<14 | 0x05<<7 | 0x03, + 917 - 161: jis0208<<14 | 0x05<<7 | 0x04, + 918 - 161: jis0208<<14 | 0x05<<7 | 0x05, + 919 - 161: jis0208<<14 | 0x05<<7 | 0x06, + 920 - 161: jis0208<<14 | 0x05<<7 | 0x07, + 921 - 161: jis0208<<14 | 0x05<<7 | 0x08, + 922 - 161: jis0208<<14 | 0x05<<7 | 0x09, + 923 - 161: jis0208<<14 | 0x05<<7 | 0x0A, + 924 - 161: jis0208<<14 | 0x05<<7 | 0x0B, + 925 - 161: jis0208<<14 | 0x05<<7 | 0x0C, + 926 - 161: jis0208<<14 | 0x05<<7 | 0x0D, + 927 - 161: jis0208<<14 | 0x05<<7 | 0x0E, + 928 - 161: jis0208<<14 | 0x05<<7 | 0x0F, + 929 - 161: jis0208<<14 | 0x05<<7 | 0x10, + 931 - 161: jis0208<<14 | 0x05<<7 | 0x11, + 932 - 161: jis0208<<14 | 0x05<<7 | 0x12, + 933 - 161: jis0208<<14 | 0x05<<7 | 0x13, + 934 - 161: jis0208<<14 | 0x05<<7 | 0x14, + 935 - 161: jis0208<<14 | 0x05<<7 | 0x15, + 936 - 161: jis0208<<14 | 0x05<<7 | 0x16, + 937 - 161: jis0208<<14 | 0x05<<7 | 0x17, + 938 - 161: jis0212<<14 | 0x05<<7 | 0x44, + 939 - 161: jis0212<<14 | 0x05<<7 | 0x49, + 940 - 161: jis0212<<14 | 0x05<<7 | 0x50, + 941 - 161: jis0212<<14 | 0x05<<7 | 0x51, + 942 - 161: jis0212<<14 | 0x05<<7 | 0x52, + 943 - 161: jis0212<<14 | 0x05<<7 | 0x53, + 944 - 161: jis0212<<14 | 0x05<<7 | 0x5A, + 945 - 161: jis0208<<14 | 0x05<<7 | 0x20, + 946 - 161: jis0208<<14 | 0x05<<7 | 0x21, + 947 - 161: jis0208<<14 | 0x05<<7 | 0x22, + 948 - 161: jis0208<<14 | 0x05<<7 | 0x23, + 949 - 161: jis0208<<14 | 0x05<<7 | 0x24, + 950 - 161: jis0208<<14 | 0x05<<7 | 0x25, + 951 - 161: jis0208<<14 | 0x05<<7 | 0x26, + 952 - 161: jis0208<<14 | 0x05<<7 | 0x27, + 953 - 161: jis0208<<14 | 0x05<<7 | 0x28, + 954 - 161: jis0208<<14 | 0x05<<7 | 0x29, + 955 - 161: jis0208<<14 | 0x05<<7 | 0x2A, + 956 - 161: jis0208<<14 | 0x05<<7 | 0x2B, + 957 - 161: jis0208<<14 | 0x05<<7 | 0x2C, + 958 - 161: jis0208<<14 | 0x05<<7 | 0x2D, + 959 - 161: jis0208<<14 | 0x05<<7 | 0x2E, + 960 - 161: jis0208<<14 | 0x05<<7 | 0x2F, + 961 - 161: jis0208<<14 | 0x05<<7 | 0x30, + 962 - 161: jis0212<<14 | 0x05<<7 | 0x57, + 963 - 161: jis0208<<14 | 0x05<<7 | 0x31, + 964 - 161: jis0208<<14 | 0x05<<7 | 0x32, + 965 - 161: jis0208<<14 | 0x05<<7 | 0x33, + 966 - 161: jis0208<<14 | 0x05<<7 | 0x34, + 967 - 161: jis0208<<14 | 0x05<<7 | 0x35, + 968 - 161: jis0208<<14 | 0x05<<7 | 0x36, + 969 - 161: jis0208<<14 | 0x05<<7 | 0x37, + 970 - 161: jis0212<<14 | 0x05<<7 | 0x54, + 971 - 161: jis0212<<14 | 0x05<<7 | 0x59, + 972 - 161: jis0212<<14 | 0x05<<7 | 0x56, + 973 - 161: jis0212<<14 | 0x05<<7 | 0x58, + 974 - 161: jis0212<<14 | 0x05<<7 | 0x5B, + 1025 - 161: jis0208<<14 | 0x06<<7 | 0x06, + 1026 - 161: jis0212<<14 | 0x06<<7 | 0x21, + 1027 - 161: jis0212<<14 | 0x06<<7 | 0x22, + 1028 - 161: jis0212<<14 | 0x06<<7 | 0x23, + 1029 - 161: jis0212<<14 | 0x06<<7 | 0x24, + 1030 - 161: jis0212<<14 | 0x06<<7 | 0x25, + 1031 - 161: jis0212<<14 | 0x06<<7 | 0x26, + 1032 - 161: jis0212<<14 | 0x06<<7 | 0x27, + 1033 - 161: jis0212<<14 | 0x06<<7 | 0x28, + 1034 - 161: jis0212<<14 | 0x06<<7 | 0x29, + 1035 - 161: jis0212<<14 | 0x06<<7 | 0x2A, + 1036 - 161: jis0212<<14 | 0x06<<7 | 0x2B, + 1038 - 161: jis0212<<14 | 0x06<<7 | 0x2C, + 1039 - 161: jis0212<<14 | 0x06<<7 | 0x2D, + 1040 - 161: jis0208<<14 | 0x06<<7 | 0x00, + 1041 - 161: jis0208<<14 | 0x06<<7 | 0x01, + 1042 - 161: jis0208<<14 | 0x06<<7 | 0x02, + 1043 - 161: jis0208<<14 | 0x06<<7 | 0x03, + 1044 - 161: jis0208<<14 | 0x06<<7 | 0x04, + 1045 - 161: jis0208<<14 | 0x06<<7 | 0x05, + 1046 - 161: jis0208<<14 | 0x06<<7 | 0x07, + 1047 - 161: jis0208<<14 | 0x06<<7 | 0x08, + 1048 - 161: jis0208<<14 | 0x06<<7 | 0x09, + 1049 - 161: jis0208<<14 | 0x06<<7 | 0x0A, + 1050 - 161: jis0208<<14 | 0x06<<7 | 0x0B, + 1051 - 161: jis0208<<14 | 0x06<<7 | 0x0C, + 1052 - 161: jis0208<<14 | 0x06<<7 | 0x0D, + 1053 - 161: jis0208<<14 | 0x06<<7 | 0x0E, + 1054 - 161: jis0208<<14 | 0x06<<7 | 0x0F, + 1055 - 161: jis0208<<14 | 0x06<<7 | 0x10, + 1056 - 161: jis0208<<14 | 0x06<<7 | 0x11, + 1057 - 161: jis0208<<14 | 0x06<<7 | 0x12, + 1058 - 161: jis0208<<14 | 0x06<<7 | 0x13, + 1059 - 161: jis0208<<14 | 0x06<<7 | 0x14, + 1060 - 161: jis0208<<14 | 0x06<<7 | 0x15, + 1061 - 161: jis0208<<14 | 0x06<<7 | 0x16, + 1062 - 161: jis0208<<14 | 0x06<<7 | 0x17, + 1063 - 161: jis0208<<14 | 0x06<<7 | 0x18, + 1064 - 161: jis0208<<14 | 0x06<<7 | 0x19, + 1065 - 161: jis0208<<14 | 0x06<<7 | 0x1A, + 1066 - 161: jis0208<<14 | 0x06<<7 | 0x1B, + 1067 - 161: jis0208<<14 | 0x06<<7 | 0x1C, + 1068 - 161: jis0208<<14 | 0x06<<7 | 0x1D, + 1069 - 161: jis0208<<14 | 0x06<<7 | 0x1E, + 1070 - 161: jis0208<<14 | 0x06<<7 | 0x1F, + 1071 - 161: jis0208<<14 | 0x06<<7 | 0x20, + 1072 - 161: jis0208<<14 | 0x06<<7 | 0x30, + 1073 - 161: jis0208<<14 | 0x06<<7 | 0x31, + 1074 - 161: jis0208<<14 | 0x06<<7 | 0x32, + 1075 - 161: jis0208<<14 | 0x06<<7 | 0x33, + 1076 - 161: jis0208<<14 | 0x06<<7 | 0x34, + 1077 - 161: jis0208<<14 | 0x06<<7 | 0x35, + 1078 - 161: jis0208<<14 | 0x06<<7 | 0x37, + 1079 - 161: jis0208<<14 | 0x06<<7 | 0x38, + 1080 - 161: jis0208<<14 | 0x06<<7 | 0x39, + 1081 - 161: jis0208<<14 | 0x06<<7 | 0x3A, + 1082 - 161: jis0208<<14 | 0x06<<7 | 0x3B, + 1083 - 161: jis0208<<14 | 0x06<<7 | 0x3C, + 1084 - 161: jis0208<<14 | 0x06<<7 | 0x3D, + 1085 - 161: jis0208<<14 | 0x06<<7 | 0x3E, + 1086 - 161: jis0208<<14 | 0x06<<7 | 0x3F, + 1087 - 161: jis0208<<14 | 0x06<<7 | 0x40, + 1088 - 161: jis0208<<14 | 0x06<<7 | 0x41, + 1089 - 161: jis0208<<14 | 0x06<<7 | 0x42, + 1090 - 161: jis0208<<14 | 0x06<<7 | 0x43, + 1091 - 161: jis0208<<14 | 0x06<<7 | 0x44, + 1092 - 161: jis0208<<14 | 0x06<<7 | 0x45, + 1093 - 161: jis0208<<14 | 0x06<<7 | 0x46, + 1094 - 161: jis0208<<14 | 0x06<<7 | 0x47, + 1095 - 161: jis0208<<14 | 0x06<<7 | 0x48, + 1096 - 161: jis0208<<14 | 0x06<<7 | 0x49, + 1097 - 161: jis0208<<14 | 0x06<<7 | 0x4A, + 1098 - 161: jis0208<<14 | 0x06<<7 | 0x4B, + 1099 - 161: jis0208<<14 | 0x06<<7 | 0x4C, + 1100 - 161: jis0208<<14 | 0x06<<7 | 0x4D, + 1101 - 161: jis0208<<14 | 0x06<<7 | 0x4E, + 1102 - 161: jis0208<<14 | 0x06<<7 | 0x4F, + 1103 - 161: jis0208<<14 | 0x06<<7 | 0x50, + 1105 - 161: jis0208<<14 | 0x06<<7 | 0x36, + 1106 - 161: jis0212<<14 | 0x06<<7 | 0x51, + 1107 - 161: jis0212<<14 | 0x06<<7 | 0x52, + 1108 - 161: jis0212<<14 | 0x06<<7 | 0x53, + 1109 - 161: jis0212<<14 | 0x06<<7 | 0x54, + 1110 - 161: jis0212<<14 | 0x06<<7 | 0x55, + 1111 - 161: jis0212<<14 | 0x06<<7 | 0x56, + 1112 - 161: jis0212<<14 | 0x06<<7 | 0x57, + 1113 - 161: jis0212<<14 | 0x06<<7 | 0x58, + 1114 - 161: jis0212<<14 | 0x06<<7 | 0x59, + 1115 - 161: jis0212<<14 | 0x06<<7 | 0x5A, + 1116 - 161: jis0212<<14 | 0x06<<7 | 0x5B, + 1118 - 161: jis0212<<14 | 0x06<<7 | 0x5C, + 1119 - 161: jis0212<<14 | 0x06<<7 | 0x5D, +} + +const encode4Low, encode4High = 63785, 64046 + +var encode4 = [...]uint16{ + 63785 - 63785: jis0208<<14 | 0x59<<7 | 0x25, + 63964 - 63785: jis0208<<14 | 0x5B<<7 | 0x2E, + 64014 - 63785: jis0208<<14 | 0x58<<7 | 0x33, + 64015 - 63785: jis0208<<14 | 0x58<<7 | 0x3E, + 64016 - 63785: jis0208<<14 | 0x58<<7 | 0x3F, + 64017 - 63785: jis0208<<14 | 0x58<<7 | 0x54, + 64018 - 63785: jis0208<<14 | 0x59<<7 | 0x1D, + 64019 - 63785: jis0208<<14 | 0x59<<7 | 0x2D, + 64020 - 63785: jis0208<<14 | 0x59<<7 | 0x2F, + 64021 - 63785: jis0208<<14 | 0x59<<7 | 0x5A, + 64022 - 63785: jis0208<<14 | 0x5A<<7 | 0x02, + 64023 - 63785: jis0208<<14 | 0x5A<<7 | 0x19, + 64024 - 63785: jis0208<<14 | 0x5A<<7 | 0x21, + 64025 - 63785: jis0208<<14 | 0x5A<<7 | 0x22, + 64026 - 63785: jis0208<<14 | 0x5A<<7 | 0x23, + 64027 - 63785: jis0208<<14 | 0x5A<<7 | 0x25, + 64028 - 63785: jis0208<<14 | 0x5A<<7 | 0x29, + 64029 - 63785: jis0208<<14 | 0x5A<<7 | 0x2C, + 64030 - 63785: jis0208<<14 | 0x5A<<7 | 0x35, + 64031 - 63785: jis0208<<14 | 0x5A<<7 | 0x40, + 64032 - 63785: jis0208<<14 | 0x5A<<7 | 0x42, + 64033 - 63785: jis0208<<14 | 0x5A<<7 | 0x43, + 64034 - 63785: jis0208<<14 | 0x5A<<7 | 0x4C, + 64035 - 63785: jis0208<<14 | 0x5A<<7 | 0x54, + 64036 - 63785: jis0208<<14 | 0x5A<<7 | 0x56, + 64037 - 63785: jis0208<<14 | 0x5A<<7 | 0x57, + 64038 - 63785: jis0208<<14 | 0x5A<<7 | 0x5A, + 64039 - 63785: jis0208<<14 | 0x5B<<7 | 0x18, + 64040 - 63785: jis0208<<14 | 0x5B<<7 | 0x1F, + 64041 - 63785: jis0208<<14 | 0x5B<<7 | 0x2F, + 64042 - 63785: jis0208<<14 | 0x5B<<7 | 0x3B, + 64043 - 63785: jis0208<<14 | 0x5B<<7 | 0x3C, + 64044 - 63785: jis0208<<14 | 0x5B<<7 | 0x3E, + 64045 - 63785: jis0208<<14 | 0x5B<<7 | 0x4B, +} + +const encode5Low, encode5High = 65281, 65510 + +var encode5 = [...]uint16{ + 65281 - 65281: jis0208<<14 | 0x00<<7 | 0x09, + 65282 - 65281: jis0208<<14 | 0x5B<<7 | 0x5D, + 65283 - 65281: jis0208<<14 | 0x00<<7 | 0x53, + 65284 - 65281: jis0208<<14 | 0x00<<7 | 0x4F, + 65285 - 65281: jis0208<<14 | 0x00<<7 | 0x52, + 65286 - 65281: jis0208<<14 | 0x00<<7 | 0x54, + 65287 - 65281: jis0208<<14 | 0x5B<<7 | 0x5C, + 65288 - 65281: jis0208<<14 | 0x00<<7 | 0x29, + 65289 - 65281: jis0208<<14 | 0x00<<7 | 0x2A, + 65290 - 65281: jis0208<<14 | 0x00<<7 | 0x55, + 65291 - 65281: jis0208<<14 | 0x00<<7 | 0x3B, + 65292 - 65281: jis0208<<14 | 0x00<<7 | 0x03, + 65293 - 65281: jis0208<<14 | 0x00<<7 | 0x3C, + 65294 - 65281: jis0208<<14 | 0x00<<7 | 0x04, + 65295 - 65281: jis0208<<14 | 0x00<<7 | 0x1E, + 65296 - 65281: jis0208<<14 | 0x02<<7 | 0x0F, + 65297 - 65281: jis0208<<14 | 0x02<<7 | 0x10, + 65298 - 65281: jis0208<<14 | 0x02<<7 | 0x11, + 65299 - 65281: jis0208<<14 | 0x02<<7 | 0x12, + 65300 - 65281: jis0208<<14 | 0x02<<7 | 0x13, + 65301 - 65281: jis0208<<14 | 0x02<<7 | 0x14, + 65302 - 65281: jis0208<<14 | 0x02<<7 | 0x15, + 65303 - 65281: jis0208<<14 | 0x02<<7 | 0x16, + 65304 - 65281: jis0208<<14 | 0x02<<7 | 0x17, + 65305 - 65281: jis0208<<14 | 0x02<<7 | 0x18, + 65306 - 65281: jis0208<<14 | 0x00<<7 | 0x06, + 65307 - 65281: jis0208<<14 | 0x00<<7 | 0x07, + 65308 - 65281: jis0208<<14 | 0x00<<7 | 0x42, + 65309 - 65281: jis0208<<14 | 0x00<<7 | 0x40, + 65310 - 65281: jis0208<<14 | 0x00<<7 | 0x43, + 65311 - 65281: jis0208<<14 | 0x00<<7 | 0x08, + 65312 - 65281: jis0208<<14 | 0x00<<7 | 0x56, + 65313 - 65281: jis0208<<14 | 0x02<<7 | 0x20, + 65314 - 65281: jis0208<<14 | 0x02<<7 | 0x21, + 65315 - 65281: jis0208<<14 | 0x02<<7 | 0x22, + 65316 - 65281: jis0208<<14 | 0x02<<7 | 0x23, + 65317 - 65281: jis0208<<14 | 0x02<<7 | 0x24, + 65318 - 65281: jis0208<<14 | 0x02<<7 | 0x25, + 65319 - 65281: jis0208<<14 | 0x02<<7 | 0x26, + 65320 - 65281: jis0208<<14 | 0x02<<7 | 0x27, + 65321 - 65281: jis0208<<14 | 0x02<<7 | 0x28, + 65322 - 65281: jis0208<<14 | 0x02<<7 | 0x29, + 65323 - 65281: jis0208<<14 | 0x02<<7 | 0x2A, + 65324 - 65281: jis0208<<14 | 0x02<<7 | 0x2B, + 65325 - 65281: jis0208<<14 | 0x02<<7 | 0x2C, + 65326 - 65281: jis0208<<14 | 0x02<<7 | 0x2D, + 65327 - 65281: jis0208<<14 | 0x02<<7 | 0x2E, + 65328 - 65281: jis0208<<14 | 0x02<<7 | 0x2F, + 65329 - 65281: jis0208<<14 | 0x02<<7 | 0x30, + 65330 - 65281: jis0208<<14 | 0x02<<7 | 0x31, + 65331 - 65281: jis0208<<14 | 0x02<<7 | 0x32, + 65332 - 65281: jis0208<<14 | 0x02<<7 | 0x33, + 65333 - 65281: jis0208<<14 | 0x02<<7 | 0x34, + 65334 - 65281: jis0208<<14 | 0x02<<7 | 0x35, + 65335 - 65281: jis0208<<14 | 0x02<<7 | 0x36, + 65336 - 65281: jis0208<<14 | 0x02<<7 | 0x37, + 65337 - 65281: jis0208<<14 | 0x02<<7 | 0x38, + 65338 - 65281: jis0208<<14 | 0x02<<7 | 0x39, + 65339 - 65281: jis0208<<14 | 0x00<<7 | 0x2D, + 65340 - 65281: jis0208<<14 | 0x00<<7 | 0x1F, + 65341 - 65281: jis0208<<14 | 0x00<<7 | 0x2E, + 65342 - 65281: jis0208<<14 | 0x00<<7 | 0x0F, + 65343 - 65281: jis0208<<14 | 0x00<<7 | 0x11, + 65344 - 65281: jis0208<<14 | 0x00<<7 | 0x0D, + 65345 - 65281: jis0208<<14 | 0x02<<7 | 0x40, + 65346 - 65281: jis0208<<14 | 0x02<<7 | 0x41, + 65347 - 65281: jis0208<<14 | 0x02<<7 | 0x42, + 65348 - 65281: jis0208<<14 | 0x02<<7 | 0x43, + 65349 - 65281: jis0208<<14 | 0x02<<7 | 0x44, + 65350 - 65281: jis0208<<14 | 0x02<<7 | 0x45, + 65351 - 65281: jis0208<<14 | 0x02<<7 | 0x46, + 65352 - 65281: jis0208<<14 | 0x02<<7 | 0x47, + 65353 - 65281: jis0208<<14 | 0x02<<7 | 0x48, + 65354 - 65281: jis0208<<14 | 0x02<<7 | 0x49, + 65355 - 65281: jis0208<<14 | 0x02<<7 | 0x4A, + 65356 - 65281: jis0208<<14 | 0x02<<7 | 0x4B, + 65357 - 65281: jis0208<<14 | 0x02<<7 | 0x4C, + 65358 - 65281: jis0208<<14 | 0x02<<7 | 0x4D, + 65359 - 65281: jis0208<<14 | 0x02<<7 | 0x4E, + 65360 - 65281: jis0208<<14 | 0x02<<7 | 0x4F, + 65361 - 65281: jis0208<<14 | 0x02<<7 | 0x50, + 65362 - 65281: jis0208<<14 | 0x02<<7 | 0x51, + 65363 - 65281: jis0208<<14 | 0x02<<7 | 0x52, + 65364 - 65281: jis0208<<14 | 0x02<<7 | 0x53, + 65365 - 65281: jis0208<<14 | 0x02<<7 | 0x54, + 65366 - 65281: jis0208<<14 | 0x02<<7 | 0x55, + 65367 - 65281: jis0208<<14 | 0x02<<7 | 0x56, + 65368 - 65281: jis0208<<14 | 0x02<<7 | 0x57, + 65369 - 65281: jis0208<<14 | 0x02<<7 | 0x58, + 65370 - 65281: jis0208<<14 | 0x02<<7 | 0x59, + 65371 - 65281: jis0208<<14 | 0x00<<7 | 0x2F, + 65372 - 65281: jis0208<<14 | 0x00<<7 | 0x22, + 65373 - 65281: jis0208<<14 | 0x00<<7 | 0x30, + 65374 - 65281: jis0208<<14 | 0x00<<7 | 0x20, + 65504 - 65281: jis0208<<14 | 0x00<<7 | 0x50, + 65505 - 65281: jis0208<<14 | 0x00<<7 | 0x51, + 65506 - 65281: jis0208<<14 | 0x01<<7 | 0x2B, + 65507 - 65281: jis0208<<14 | 0x00<<7 | 0x10, + 65508 - 65281: jis0208<<14 | 0x5B<<7 | 0x5B, + 65509 - 65281: jis0208<<14 | 0x00<<7 | 0x4E, +} diff --git a/vendor/golang.org/x/text/encoding/korean/euckr.go b/vendor/golang.org/x/text/encoding/korean/euckr.go new file mode 100644 index 000000000..034337f5d --- /dev/null +++ b/vendor/golang.org/x/text/encoding/korean/euckr.go @@ -0,0 +1,177 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package korean + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// All is a list of all defined encodings in this package. +var All = []encoding.Encoding{EUCKR} + +// EUCKR is the EUC-KR encoding, also known as Code Page 949. +var EUCKR encoding.Encoding = &eucKR + +var eucKR = internal.Encoding{ + &internal.SimpleEncoding{eucKRDecoder{}, eucKREncoder{}}, + "EUC-KR", + identifier.EUCKR, +} + +type eucKRDecoder struct{ transform.NopResetter } + +func (eucKRDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case 0x81 <= c0 && c0 < 0xff: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + break + } + c1 := src[nSrc+1] + size = 2 + if c0 < 0xc7 { + r = 178 * rune(c0-0x81) + switch { + case 0x41 <= c1 && c1 < 0x5b: + r += rune(c1) - (0x41 - 0*26) + case 0x61 <= c1 && c1 < 0x7b: + r += rune(c1) - (0x61 - 1*26) + case 0x81 <= c1 && c1 < 0xff: + r += rune(c1) - (0x81 - 2*26) + default: + goto decError + } + } else if 0xa1 <= c1 && c1 < 0xff { + r = 178*(0xc7-0x81) + rune(c0-0xc7)*94 + rune(c1-0xa1) + } else { + goto decError + } + if int(r) < len(decode) { + r = rune(decode[r]) + if r != 0 { + break + } + } + decError: + r = utf8.RuneError + if c1 < utf8.RuneSelf { + size = 1 + } + + default: + r, size = utf8.RuneError, 1 + break + } + + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err +} + +type eucKREncoder struct{ transform.NopResetter } + +func (eucKREncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r != 0 { + goto write2 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r != 0 { + goto write2 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r != 0 { + goto write2 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r != 0 { + goto write2 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r != 0 { + goto write2 + } + case encode5Low <= r && r < encode5High: + if r = rune(encode5[r-encode5Low]); r != 0 { + goto write2 + } + case encode6Low <= r && r < encode6High: + if r = rune(encode6[r-encode6Low]); r != 0 { + goto write2 + } + } + err = internal.ErrASCIIReplacement + break + } + + write2: + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = uint8(r >> 8) + dst[nDst+1] = uint8(r) + nDst += 2 + continue + } + return nDst, nSrc, err +} + +func init() { + // Check that the hard-coded encode switch covers all tables. + if numEncodeTables != 7 { + panic("bad numEncodeTables") + } +} diff --git a/vendor/golang.org/x/text/encoding/korean/tables.go b/vendor/golang.org/x/text/encoding/korean/tables.go new file mode 100644 index 000000000..0480e85c4 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/korean/tables.go @@ -0,0 +1,34152 @@ +// generated by go run maketables.go; DO NOT EDIT + +// Package korean provides Korean encodings such as EUC-KR. +package korean // import "golang.org/x/text/encoding/korean" + +// decode is the decoding table from EUC-KR code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-euc-kr.txt +var decode = [...]uint16{ + 0: 0xAC02, + 1: 0xAC03, + 2: 0xAC05, + 3: 0xAC06, + 4: 0xAC0B, + 5: 0xAC0C, + 6: 0xAC0D, + 7: 0xAC0E, + 8: 0xAC0F, + 9: 0xAC18, + 10: 0xAC1E, + 11: 0xAC1F, + 12: 0xAC21, + 13: 0xAC22, + 14: 0xAC23, + 15: 0xAC25, + 16: 0xAC26, + 17: 0xAC27, + 18: 0xAC28, + 19: 0xAC29, + 20: 0xAC2A, + 21: 0xAC2B, + 22: 0xAC2E, + 23: 0xAC32, + 24: 0xAC33, + 25: 0xAC34, + 26: 0xAC35, + 27: 0xAC36, + 28: 0xAC37, + 29: 0xAC3A, + 30: 0xAC3B, + 31: 0xAC3D, + 32: 0xAC3E, + 33: 0xAC3F, + 34: 0xAC41, + 35: 0xAC42, + 36: 0xAC43, + 37: 0xAC44, + 38: 0xAC45, + 39: 0xAC46, + 40: 0xAC47, + 41: 0xAC48, + 42: 0xAC49, + 43: 0xAC4A, + 44: 0xAC4C, + 45: 0xAC4E, + 46: 0xAC4F, + 47: 0xAC50, + 48: 0xAC51, + 49: 0xAC52, + 50: 0xAC53, + 51: 0xAC55, + 52: 0xAC56, + 53: 0xAC57, + 54: 0xAC59, + 55: 0xAC5A, + 56: 0xAC5B, + 57: 0xAC5D, + 58: 0xAC5E, + 59: 0xAC5F, + 60: 0xAC60, + 61: 0xAC61, + 62: 0xAC62, + 63: 0xAC63, + 64: 0xAC64, + 65: 0xAC65, + 66: 0xAC66, + 67: 0xAC67, + 68: 0xAC68, + 69: 0xAC69, + 70: 0xAC6A, + 71: 0xAC6B, + 72: 0xAC6C, + 73: 0xAC6D, + 74: 0xAC6E, + 75: 0xAC6F, + 76: 0xAC72, + 77: 0xAC73, + 78: 0xAC75, + 79: 0xAC76, + 80: 0xAC79, + 81: 0xAC7B, + 82: 0xAC7C, + 83: 0xAC7D, + 84: 0xAC7E, + 85: 0xAC7F, + 86: 0xAC82, + 87: 0xAC87, + 88: 0xAC88, + 89: 0xAC8D, + 90: 0xAC8E, + 91: 0xAC8F, + 92: 0xAC91, + 93: 0xAC92, + 94: 0xAC93, + 95: 0xAC95, + 96: 0xAC96, + 97: 0xAC97, + 98: 0xAC98, + 99: 0xAC99, + 100: 0xAC9A, + 101: 0xAC9B, + 102: 0xAC9E, + 103: 0xACA2, + 104: 0xACA3, + 105: 0xACA4, + 106: 0xACA5, + 107: 0xACA6, + 108: 0xACA7, + 109: 0xACAB, + 110: 0xACAD, + 111: 0xACAE, + 112: 0xACB1, + 113: 0xACB2, + 114: 0xACB3, + 115: 0xACB4, + 116: 0xACB5, + 117: 0xACB6, + 118: 0xACB7, + 119: 0xACBA, + 120: 0xACBE, + 121: 0xACBF, + 122: 0xACC0, + 123: 0xACC2, + 124: 0xACC3, + 125: 0xACC5, + 126: 0xACC6, + 127: 0xACC7, + 128: 0xACC9, + 129: 0xACCA, + 130: 0xACCB, + 131: 0xACCD, + 132: 0xACCE, + 133: 0xACCF, + 134: 0xACD0, + 135: 0xACD1, + 136: 0xACD2, + 137: 0xACD3, + 138: 0xACD4, + 139: 0xACD6, + 140: 0xACD8, + 141: 0xACD9, + 142: 0xACDA, + 143: 0xACDB, + 144: 0xACDC, + 145: 0xACDD, + 146: 0xACDE, + 147: 0xACDF, + 148: 0xACE2, + 149: 0xACE3, + 150: 0xACE5, + 151: 0xACE6, + 152: 0xACE9, + 153: 0xACEB, + 154: 0xACED, + 155: 0xACEE, + 156: 0xACF2, + 157: 0xACF4, + 158: 0xACF7, + 159: 0xACF8, + 160: 0xACF9, + 161: 0xACFA, + 162: 0xACFB, + 163: 0xACFE, + 164: 0xACFF, + 165: 0xAD01, + 166: 0xAD02, + 167: 0xAD03, + 168: 0xAD05, + 169: 0xAD07, + 170: 0xAD08, + 171: 0xAD09, + 172: 0xAD0A, + 173: 0xAD0B, + 174: 0xAD0E, + 175: 0xAD10, + 176: 0xAD12, + 177: 0xAD13, + 178: 0xAD14, + 179: 0xAD15, + 180: 0xAD16, + 181: 0xAD17, + 182: 0xAD19, + 183: 0xAD1A, + 184: 0xAD1B, + 185: 0xAD1D, + 186: 0xAD1E, + 187: 0xAD1F, + 188: 0xAD21, + 189: 0xAD22, + 190: 0xAD23, + 191: 0xAD24, + 192: 0xAD25, + 193: 0xAD26, + 194: 0xAD27, + 195: 0xAD28, + 196: 0xAD2A, + 197: 0xAD2B, + 198: 0xAD2E, + 199: 0xAD2F, + 200: 0xAD30, + 201: 0xAD31, + 202: 0xAD32, + 203: 0xAD33, + 204: 0xAD36, + 205: 0xAD37, + 206: 0xAD39, + 207: 0xAD3A, + 208: 0xAD3B, + 209: 0xAD3D, + 210: 0xAD3E, + 211: 0xAD3F, + 212: 0xAD40, + 213: 0xAD41, + 214: 0xAD42, + 215: 0xAD43, + 216: 0xAD46, + 217: 0xAD48, + 218: 0xAD4A, + 219: 0xAD4B, + 220: 0xAD4C, + 221: 0xAD4D, + 222: 0xAD4E, + 223: 0xAD4F, + 224: 0xAD51, + 225: 0xAD52, + 226: 0xAD53, + 227: 0xAD55, + 228: 0xAD56, + 229: 0xAD57, + 230: 0xAD59, + 231: 0xAD5A, + 232: 0xAD5B, + 233: 0xAD5C, + 234: 0xAD5D, + 235: 0xAD5E, + 236: 0xAD5F, + 237: 0xAD60, + 238: 0xAD62, + 239: 0xAD64, + 240: 0xAD65, + 241: 0xAD66, + 242: 0xAD67, + 243: 0xAD68, + 244: 0xAD69, + 245: 0xAD6A, + 246: 0xAD6B, + 247: 0xAD6E, + 248: 0xAD6F, + 249: 0xAD71, + 250: 0xAD72, + 251: 0xAD77, + 252: 0xAD78, + 253: 0xAD79, + 254: 0xAD7A, + 255: 0xAD7E, + 256: 0xAD80, + 257: 0xAD83, + 258: 0xAD84, + 259: 0xAD85, + 260: 0xAD86, + 261: 0xAD87, + 262: 0xAD8A, + 263: 0xAD8B, + 264: 0xAD8D, + 265: 0xAD8E, + 266: 0xAD8F, + 267: 0xAD91, + 268: 0xAD92, + 269: 0xAD93, + 270: 0xAD94, + 271: 0xAD95, + 272: 0xAD96, + 273: 0xAD97, + 274: 0xAD98, + 275: 0xAD99, + 276: 0xAD9A, + 277: 0xAD9B, + 278: 0xAD9E, + 279: 0xAD9F, + 280: 0xADA0, + 281: 0xADA1, + 282: 0xADA2, + 283: 0xADA3, + 284: 0xADA5, + 285: 0xADA6, + 286: 0xADA7, + 287: 0xADA8, + 288: 0xADA9, + 289: 0xADAA, + 290: 0xADAB, + 291: 0xADAC, + 292: 0xADAD, + 293: 0xADAE, + 294: 0xADAF, + 295: 0xADB0, + 296: 0xADB1, + 297: 0xADB2, + 298: 0xADB3, + 299: 0xADB4, + 300: 0xADB5, + 301: 0xADB6, + 302: 0xADB8, + 303: 0xADB9, + 304: 0xADBA, + 305: 0xADBB, + 306: 0xADBC, + 307: 0xADBD, + 308: 0xADBE, + 309: 0xADBF, + 310: 0xADC2, + 311: 0xADC3, + 312: 0xADC5, + 313: 0xADC6, + 314: 0xADC7, + 315: 0xADC9, + 316: 0xADCA, + 317: 0xADCB, + 318: 0xADCC, + 319: 0xADCD, + 320: 0xADCE, + 321: 0xADCF, + 322: 0xADD2, + 323: 0xADD4, + 324: 0xADD5, + 325: 0xADD6, + 326: 0xADD7, + 327: 0xADD8, + 328: 0xADD9, + 329: 0xADDA, + 330: 0xADDB, + 331: 0xADDD, + 332: 0xADDE, + 333: 0xADDF, + 334: 0xADE1, + 335: 0xADE2, + 336: 0xADE3, + 337: 0xADE5, + 338: 0xADE6, + 339: 0xADE7, + 340: 0xADE8, + 341: 0xADE9, + 342: 0xADEA, + 343: 0xADEB, + 344: 0xADEC, + 345: 0xADED, + 346: 0xADEE, + 347: 0xADEF, + 348: 0xADF0, + 349: 0xADF1, + 350: 0xADF2, + 351: 0xADF3, + 352: 0xADF4, + 353: 0xADF5, + 354: 0xADF6, + 355: 0xADF7, + 356: 0xADFA, + 357: 0xADFB, + 358: 0xADFD, + 359: 0xADFE, + 360: 0xAE02, + 361: 0xAE03, + 362: 0xAE04, + 363: 0xAE05, + 364: 0xAE06, + 365: 0xAE07, + 366: 0xAE0A, + 367: 0xAE0C, + 368: 0xAE0E, + 369: 0xAE0F, + 370: 0xAE10, + 371: 0xAE11, + 372: 0xAE12, + 373: 0xAE13, + 374: 0xAE15, + 375: 0xAE16, + 376: 0xAE17, + 377: 0xAE18, + 378: 0xAE19, + 379: 0xAE1A, + 380: 0xAE1B, + 381: 0xAE1C, + 382: 0xAE1D, + 383: 0xAE1E, + 384: 0xAE1F, + 385: 0xAE20, + 386: 0xAE21, + 387: 0xAE22, + 388: 0xAE23, + 389: 0xAE24, + 390: 0xAE25, + 391: 0xAE26, + 392: 0xAE27, + 393: 0xAE28, + 394: 0xAE29, + 395: 0xAE2A, + 396: 0xAE2B, + 397: 0xAE2C, + 398: 0xAE2D, + 399: 0xAE2E, + 400: 0xAE2F, + 401: 0xAE32, + 402: 0xAE33, + 403: 0xAE35, + 404: 0xAE36, + 405: 0xAE39, + 406: 0xAE3B, + 407: 0xAE3C, + 408: 0xAE3D, + 409: 0xAE3E, + 410: 0xAE3F, + 411: 0xAE42, + 412: 0xAE44, + 413: 0xAE47, + 414: 0xAE48, + 415: 0xAE49, + 416: 0xAE4B, + 417: 0xAE4F, + 418: 0xAE51, + 419: 0xAE52, + 420: 0xAE53, + 421: 0xAE55, + 422: 0xAE57, + 423: 0xAE58, + 424: 0xAE59, + 425: 0xAE5A, + 426: 0xAE5B, + 427: 0xAE5E, + 428: 0xAE62, + 429: 0xAE63, + 430: 0xAE64, + 431: 0xAE66, + 432: 0xAE67, + 433: 0xAE6A, + 434: 0xAE6B, + 435: 0xAE6D, + 436: 0xAE6E, + 437: 0xAE6F, + 438: 0xAE71, + 439: 0xAE72, + 440: 0xAE73, + 441: 0xAE74, + 442: 0xAE75, + 443: 0xAE76, + 444: 0xAE77, + 445: 0xAE7A, + 446: 0xAE7E, + 447: 0xAE7F, + 448: 0xAE80, + 449: 0xAE81, + 450: 0xAE82, + 451: 0xAE83, + 452: 0xAE86, + 453: 0xAE87, + 454: 0xAE88, + 455: 0xAE89, + 456: 0xAE8A, + 457: 0xAE8B, + 458: 0xAE8D, + 459: 0xAE8E, + 460: 0xAE8F, + 461: 0xAE90, + 462: 0xAE91, + 463: 0xAE92, + 464: 0xAE93, + 465: 0xAE94, + 466: 0xAE95, + 467: 0xAE96, + 468: 0xAE97, + 469: 0xAE98, + 470: 0xAE99, + 471: 0xAE9A, + 472: 0xAE9B, + 473: 0xAE9C, + 474: 0xAE9D, + 475: 0xAE9E, + 476: 0xAE9F, + 477: 0xAEA0, + 478: 0xAEA1, + 479: 0xAEA2, + 480: 0xAEA3, + 481: 0xAEA4, + 482: 0xAEA5, + 483: 0xAEA6, + 484: 0xAEA7, + 485: 0xAEA8, + 486: 0xAEA9, + 487: 0xAEAA, + 488: 0xAEAB, + 489: 0xAEAC, + 490: 0xAEAD, + 491: 0xAEAE, + 492: 0xAEAF, + 493: 0xAEB0, + 494: 0xAEB1, + 495: 0xAEB2, + 496: 0xAEB3, + 497: 0xAEB4, + 498: 0xAEB5, + 499: 0xAEB6, + 500: 0xAEB7, + 501: 0xAEB8, + 502: 0xAEB9, + 503: 0xAEBA, + 504: 0xAEBB, + 505: 0xAEBF, + 506: 0xAEC1, + 507: 0xAEC2, + 508: 0xAEC3, + 509: 0xAEC5, + 510: 0xAEC6, + 511: 0xAEC7, + 512: 0xAEC8, + 513: 0xAEC9, + 514: 0xAECA, + 515: 0xAECB, + 516: 0xAECE, + 517: 0xAED2, + 518: 0xAED3, + 519: 0xAED4, + 520: 0xAED5, + 521: 0xAED6, + 522: 0xAED7, + 523: 0xAEDA, + 524: 0xAEDB, + 525: 0xAEDD, + 526: 0xAEDE, + 527: 0xAEDF, + 528: 0xAEE0, + 529: 0xAEE1, + 530: 0xAEE2, + 531: 0xAEE3, + 532: 0xAEE4, + 533: 0xAEE5, + 534: 0xAEE6, + 535: 0xAEE7, + 536: 0xAEE9, + 537: 0xAEEA, + 538: 0xAEEC, + 539: 0xAEEE, + 540: 0xAEEF, + 541: 0xAEF0, + 542: 0xAEF1, + 543: 0xAEF2, + 544: 0xAEF3, + 545: 0xAEF5, + 546: 0xAEF6, + 547: 0xAEF7, + 548: 0xAEF9, + 549: 0xAEFA, + 550: 0xAEFB, + 551: 0xAEFD, + 552: 0xAEFE, + 553: 0xAEFF, + 554: 0xAF00, + 555: 0xAF01, + 556: 0xAF02, + 557: 0xAF03, + 558: 0xAF04, + 559: 0xAF05, + 560: 0xAF06, + 561: 0xAF09, + 562: 0xAF0A, + 563: 0xAF0B, + 564: 0xAF0C, + 565: 0xAF0E, + 566: 0xAF0F, + 567: 0xAF11, + 568: 0xAF12, + 569: 0xAF13, + 570: 0xAF14, + 571: 0xAF15, + 572: 0xAF16, + 573: 0xAF17, + 574: 0xAF18, + 575: 0xAF19, + 576: 0xAF1A, + 577: 0xAF1B, + 578: 0xAF1C, + 579: 0xAF1D, + 580: 0xAF1E, + 581: 0xAF1F, + 582: 0xAF20, + 583: 0xAF21, + 584: 0xAF22, + 585: 0xAF23, + 586: 0xAF24, + 587: 0xAF25, + 588: 0xAF26, + 589: 0xAF27, + 590: 0xAF28, + 591: 0xAF29, + 592: 0xAF2A, + 593: 0xAF2B, + 594: 0xAF2E, + 595: 0xAF2F, + 596: 0xAF31, + 597: 0xAF33, + 598: 0xAF35, + 599: 0xAF36, + 600: 0xAF37, + 601: 0xAF38, + 602: 0xAF39, + 603: 0xAF3A, + 604: 0xAF3B, + 605: 0xAF3E, + 606: 0xAF40, + 607: 0xAF44, + 608: 0xAF45, + 609: 0xAF46, + 610: 0xAF47, + 611: 0xAF4A, + 612: 0xAF4B, + 613: 0xAF4C, + 614: 0xAF4D, + 615: 0xAF4E, + 616: 0xAF4F, + 617: 0xAF51, + 618: 0xAF52, + 619: 0xAF53, + 620: 0xAF54, + 621: 0xAF55, + 622: 0xAF56, + 623: 0xAF57, + 624: 0xAF58, + 625: 0xAF59, + 626: 0xAF5A, + 627: 0xAF5B, + 628: 0xAF5E, + 629: 0xAF5F, + 630: 0xAF60, + 631: 0xAF61, + 632: 0xAF62, + 633: 0xAF63, + 634: 0xAF66, + 635: 0xAF67, + 636: 0xAF68, + 637: 0xAF69, + 638: 0xAF6A, + 639: 0xAF6B, + 640: 0xAF6C, + 641: 0xAF6D, + 642: 0xAF6E, + 643: 0xAF6F, + 644: 0xAF70, + 645: 0xAF71, + 646: 0xAF72, + 647: 0xAF73, + 648: 0xAF74, + 649: 0xAF75, + 650: 0xAF76, + 651: 0xAF77, + 652: 0xAF78, + 653: 0xAF7A, + 654: 0xAF7B, + 655: 0xAF7C, + 656: 0xAF7D, + 657: 0xAF7E, + 658: 0xAF7F, + 659: 0xAF81, + 660: 0xAF82, + 661: 0xAF83, + 662: 0xAF85, + 663: 0xAF86, + 664: 0xAF87, + 665: 0xAF89, + 666: 0xAF8A, + 667: 0xAF8B, + 668: 0xAF8C, + 669: 0xAF8D, + 670: 0xAF8E, + 671: 0xAF8F, + 672: 0xAF92, + 673: 0xAF93, + 674: 0xAF94, + 675: 0xAF96, + 676: 0xAF97, + 677: 0xAF98, + 678: 0xAF99, + 679: 0xAF9A, + 680: 0xAF9B, + 681: 0xAF9D, + 682: 0xAF9E, + 683: 0xAF9F, + 684: 0xAFA0, + 685: 0xAFA1, + 686: 0xAFA2, + 687: 0xAFA3, + 688: 0xAFA4, + 689: 0xAFA5, + 690: 0xAFA6, + 691: 0xAFA7, + 692: 0xAFA8, + 693: 0xAFA9, + 694: 0xAFAA, + 695: 0xAFAB, + 696: 0xAFAC, + 697: 0xAFAD, + 698: 0xAFAE, + 699: 0xAFAF, + 700: 0xAFB0, + 701: 0xAFB1, + 702: 0xAFB2, + 703: 0xAFB3, + 704: 0xAFB4, + 705: 0xAFB5, + 706: 0xAFB6, + 707: 0xAFB7, + 708: 0xAFBA, + 709: 0xAFBB, + 710: 0xAFBD, + 711: 0xAFBE, + 712: 0xAFBF, + 713: 0xAFC1, + 714: 0xAFC2, + 715: 0xAFC3, + 716: 0xAFC4, + 717: 0xAFC5, + 718: 0xAFC6, + 719: 0xAFCA, + 720: 0xAFCC, + 721: 0xAFCF, + 722: 0xAFD0, + 723: 0xAFD1, + 724: 0xAFD2, + 725: 0xAFD3, + 726: 0xAFD5, + 727: 0xAFD6, + 728: 0xAFD7, + 729: 0xAFD8, + 730: 0xAFD9, + 731: 0xAFDA, + 732: 0xAFDB, + 733: 0xAFDD, + 734: 0xAFDE, + 735: 0xAFDF, + 736: 0xAFE0, + 737: 0xAFE1, + 738: 0xAFE2, + 739: 0xAFE3, + 740: 0xAFE4, + 741: 0xAFE5, + 742: 0xAFE6, + 743: 0xAFE7, + 744: 0xAFEA, + 745: 0xAFEB, + 746: 0xAFEC, + 747: 0xAFED, + 748: 0xAFEE, + 749: 0xAFEF, + 750: 0xAFF2, + 751: 0xAFF3, + 752: 0xAFF5, + 753: 0xAFF6, + 754: 0xAFF7, + 755: 0xAFF9, + 756: 0xAFFA, + 757: 0xAFFB, + 758: 0xAFFC, + 759: 0xAFFD, + 760: 0xAFFE, + 761: 0xAFFF, + 762: 0xB002, + 763: 0xB003, + 764: 0xB005, + 765: 0xB006, + 766: 0xB007, + 767: 0xB008, + 768: 0xB009, + 769: 0xB00A, + 770: 0xB00B, + 771: 0xB00D, + 772: 0xB00E, + 773: 0xB00F, + 774: 0xB011, + 775: 0xB012, + 776: 0xB013, + 777: 0xB015, + 778: 0xB016, + 779: 0xB017, + 780: 0xB018, + 781: 0xB019, + 782: 0xB01A, + 783: 0xB01B, + 784: 0xB01E, + 785: 0xB01F, + 786: 0xB020, + 787: 0xB021, + 788: 0xB022, + 789: 0xB023, + 790: 0xB024, + 791: 0xB025, + 792: 0xB026, + 793: 0xB027, + 794: 0xB029, + 795: 0xB02A, + 796: 0xB02B, + 797: 0xB02C, + 798: 0xB02D, + 799: 0xB02E, + 800: 0xB02F, + 801: 0xB030, + 802: 0xB031, + 803: 0xB032, + 804: 0xB033, + 805: 0xB034, + 806: 0xB035, + 807: 0xB036, + 808: 0xB037, + 809: 0xB038, + 810: 0xB039, + 811: 0xB03A, + 812: 0xB03B, + 813: 0xB03C, + 814: 0xB03D, + 815: 0xB03E, + 816: 0xB03F, + 817: 0xB040, + 818: 0xB041, + 819: 0xB042, + 820: 0xB043, + 821: 0xB046, + 822: 0xB047, + 823: 0xB049, + 824: 0xB04B, + 825: 0xB04D, + 826: 0xB04F, + 827: 0xB050, + 828: 0xB051, + 829: 0xB052, + 830: 0xB056, + 831: 0xB058, + 832: 0xB05A, + 833: 0xB05B, + 834: 0xB05C, + 835: 0xB05E, + 836: 0xB05F, + 837: 0xB060, + 838: 0xB061, + 839: 0xB062, + 840: 0xB063, + 841: 0xB064, + 842: 0xB065, + 843: 0xB066, + 844: 0xB067, + 845: 0xB068, + 846: 0xB069, + 847: 0xB06A, + 848: 0xB06B, + 849: 0xB06C, + 850: 0xB06D, + 851: 0xB06E, + 852: 0xB06F, + 853: 0xB070, + 854: 0xB071, + 855: 0xB072, + 856: 0xB073, + 857: 0xB074, + 858: 0xB075, + 859: 0xB076, + 860: 0xB077, + 861: 0xB078, + 862: 0xB079, + 863: 0xB07A, + 864: 0xB07B, + 865: 0xB07E, + 866: 0xB07F, + 867: 0xB081, + 868: 0xB082, + 869: 0xB083, + 870: 0xB085, + 871: 0xB086, + 872: 0xB087, + 873: 0xB088, + 874: 0xB089, + 875: 0xB08A, + 876: 0xB08B, + 877: 0xB08E, + 878: 0xB090, + 879: 0xB092, + 880: 0xB093, + 881: 0xB094, + 882: 0xB095, + 883: 0xB096, + 884: 0xB097, + 885: 0xB09B, + 886: 0xB09D, + 887: 0xB09E, + 888: 0xB0A3, + 889: 0xB0A4, + 890: 0xB0A5, + 891: 0xB0A6, + 892: 0xB0A7, + 893: 0xB0AA, + 894: 0xB0B0, + 895: 0xB0B2, + 896: 0xB0B6, + 897: 0xB0B7, + 898: 0xB0B9, + 899: 0xB0BA, + 900: 0xB0BB, + 901: 0xB0BD, + 902: 0xB0BE, + 903: 0xB0BF, + 904: 0xB0C0, + 905: 0xB0C1, + 906: 0xB0C2, + 907: 0xB0C3, + 908: 0xB0C6, + 909: 0xB0CA, + 910: 0xB0CB, + 911: 0xB0CC, + 912: 0xB0CD, + 913: 0xB0CE, + 914: 0xB0CF, + 915: 0xB0D2, + 916: 0xB0D3, + 917: 0xB0D5, + 918: 0xB0D6, + 919: 0xB0D7, + 920: 0xB0D9, + 921: 0xB0DA, + 922: 0xB0DB, + 923: 0xB0DC, + 924: 0xB0DD, + 925: 0xB0DE, + 926: 0xB0DF, + 927: 0xB0E1, + 928: 0xB0E2, + 929: 0xB0E3, + 930: 0xB0E4, + 931: 0xB0E6, + 932: 0xB0E7, + 933: 0xB0E8, + 934: 0xB0E9, + 935: 0xB0EA, + 936: 0xB0EB, + 937: 0xB0EC, + 938: 0xB0ED, + 939: 0xB0EE, + 940: 0xB0EF, + 941: 0xB0F0, + 942: 0xB0F1, + 943: 0xB0F2, + 944: 0xB0F3, + 945: 0xB0F4, + 946: 0xB0F5, + 947: 0xB0F6, + 948: 0xB0F7, + 949: 0xB0F8, + 950: 0xB0F9, + 951: 0xB0FA, + 952: 0xB0FB, + 953: 0xB0FC, + 954: 0xB0FD, + 955: 0xB0FE, + 956: 0xB0FF, + 957: 0xB100, + 958: 0xB101, + 959: 0xB102, + 960: 0xB103, + 961: 0xB104, + 962: 0xB105, + 963: 0xB106, + 964: 0xB107, + 965: 0xB10A, + 966: 0xB10D, + 967: 0xB10E, + 968: 0xB10F, + 969: 0xB111, + 970: 0xB114, + 971: 0xB115, + 972: 0xB116, + 973: 0xB117, + 974: 0xB11A, + 975: 0xB11E, + 976: 0xB11F, + 977: 0xB120, + 978: 0xB121, + 979: 0xB122, + 980: 0xB126, + 981: 0xB127, + 982: 0xB129, + 983: 0xB12A, + 984: 0xB12B, + 985: 0xB12D, + 986: 0xB12E, + 987: 0xB12F, + 988: 0xB130, + 989: 0xB131, + 990: 0xB132, + 991: 0xB133, + 992: 0xB136, + 993: 0xB13A, + 994: 0xB13B, + 995: 0xB13C, + 996: 0xB13D, + 997: 0xB13E, + 998: 0xB13F, + 999: 0xB142, + 1000: 0xB143, + 1001: 0xB145, + 1002: 0xB146, + 1003: 0xB147, + 1004: 0xB149, + 1005: 0xB14A, + 1006: 0xB14B, + 1007: 0xB14C, + 1008: 0xB14D, + 1009: 0xB14E, + 1010: 0xB14F, + 1011: 0xB152, + 1012: 0xB153, + 1013: 0xB156, + 1014: 0xB157, + 1015: 0xB159, + 1016: 0xB15A, + 1017: 0xB15B, + 1018: 0xB15D, + 1019: 0xB15E, + 1020: 0xB15F, + 1021: 0xB161, + 1022: 0xB162, + 1023: 0xB163, + 1024: 0xB164, + 1025: 0xB165, + 1026: 0xB166, + 1027: 0xB167, + 1028: 0xB168, + 1029: 0xB169, + 1030: 0xB16A, + 1031: 0xB16B, + 1032: 0xB16C, + 1033: 0xB16D, + 1034: 0xB16E, + 1035: 0xB16F, + 1036: 0xB170, + 1037: 0xB171, + 1038: 0xB172, + 1039: 0xB173, + 1040: 0xB174, + 1041: 0xB175, + 1042: 0xB176, + 1043: 0xB177, + 1044: 0xB17A, + 1045: 0xB17B, + 1046: 0xB17D, + 1047: 0xB17E, + 1048: 0xB17F, + 1049: 0xB181, + 1050: 0xB183, + 1051: 0xB184, + 1052: 0xB185, + 1053: 0xB186, + 1054: 0xB187, + 1055: 0xB18A, + 1056: 0xB18C, + 1057: 0xB18E, + 1058: 0xB18F, + 1059: 0xB190, + 1060: 0xB191, + 1061: 0xB195, + 1062: 0xB196, + 1063: 0xB197, + 1064: 0xB199, + 1065: 0xB19A, + 1066: 0xB19B, + 1067: 0xB19D, + 1068: 0xB19E, + 1069: 0xB19F, + 1070: 0xB1A0, + 1071: 0xB1A1, + 1072: 0xB1A2, + 1073: 0xB1A3, + 1074: 0xB1A4, + 1075: 0xB1A5, + 1076: 0xB1A6, + 1077: 0xB1A7, + 1078: 0xB1A9, + 1079: 0xB1AA, + 1080: 0xB1AB, + 1081: 0xB1AC, + 1082: 0xB1AD, + 1083: 0xB1AE, + 1084: 0xB1AF, + 1085: 0xB1B0, + 1086: 0xB1B1, + 1087: 0xB1B2, + 1088: 0xB1B3, + 1089: 0xB1B4, + 1090: 0xB1B5, + 1091: 0xB1B6, + 1092: 0xB1B7, + 1093: 0xB1B8, + 1094: 0xB1B9, + 1095: 0xB1BA, + 1096: 0xB1BB, + 1097: 0xB1BC, + 1098: 0xB1BD, + 1099: 0xB1BE, + 1100: 0xB1BF, + 1101: 0xB1C0, + 1102: 0xB1C1, + 1103: 0xB1C2, + 1104: 0xB1C3, + 1105: 0xB1C4, + 1106: 0xB1C5, + 1107: 0xB1C6, + 1108: 0xB1C7, + 1109: 0xB1C8, + 1110: 0xB1C9, + 1111: 0xB1CA, + 1112: 0xB1CB, + 1113: 0xB1CD, + 1114: 0xB1CE, + 1115: 0xB1CF, + 1116: 0xB1D1, + 1117: 0xB1D2, + 1118: 0xB1D3, + 1119: 0xB1D5, + 1120: 0xB1D6, + 1121: 0xB1D7, + 1122: 0xB1D8, + 1123: 0xB1D9, + 1124: 0xB1DA, + 1125: 0xB1DB, + 1126: 0xB1DE, + 1127: 0xB1E0, + 1128: 0xB1E1, + 1129: 0xB1E2, + 1130: 0xB1E3, + 1131: 0xB1E4, + 1132: 0xB1E5, + 1133: 0xB1E6, + 1134: 0xB1E7, + 1135: 0xB1EA, + 1136: 0xB1EB, + 1137: 0xB1ED, + 1138: 0xB1EE, + 1139: 0xB1EF, + 1140: 0xB1F1, + 1141: 0xB1F2, + 1142: 0xB1F3, + 1143: 0xB1F4, + 1144: 0xB1F5, + 1145: 0xB1F6, + 1146: 0xB1F7, + 1147: 0xB1F8, + 1148: 0xB1FA, + 1149: 0xB1FC, + 1150: 0xB1FE, + 1151: 0xB1FF, + 1152: 0xB200, + 1153: 0xB201, + 1154: 0xB202, + 1155: 0xB203, + 1156: 0xB206, + 1157: 0xB207, + 1158: 0xB209, + 1159: 0xB20A, + 1160: 0xB20D, + 1161: 0xB20E, + 1162: 0xB20F, + 1163: 0xB210, + 1164: 0xB211, + 1165: 0xB212, + 1166: 0xB213, + 1167: 0xB216, + 1168: 0xB218, + 1169: 0xB21A, + 1170: 0xB21B, + 1171: 0xB21C, + 1172: 0xB21D, + 1173: 0xB21E, + 1174: 0xB21F, + 1175: 0xB221, + 1176: 0xB222, + 1177: 0xB223, + 1178: 0xB224, + 1179: 0xB225, + 1180: 0xB226, + 1181: 0xB227, + 1182: 0xB228, + 1183: 0xB229, + 1184: 0xB22A, + 1185: 0xB22B, + 1186: 0xB22C, + 1187: 0xB22D, + 1188: 0xB22E, + 1189: 0xB22F, + 1190: 0xB230, + 1191: 0xB231, + 1192: 0xB232, + 1193: 0xB233, + 1194: 0xB235, + 1195: 0xB236, + 1196: 0xB237, + 1197: 0xB238, + 1198: 0xB239, + 1199: 0xB23A, + 1200: 0xB23B, + 1201: 0xB23D, + 1202: 0xB23E, + 1203: 0xB23F, + 1204: 0xB240, + 1205: 0xB241, + 1206: 0xB242, + 1207: 0xB243, + 1208: 0xB244, + 1209: 0xB245, + 1210: 0xB246, + 1211: 0xB247, + 1212: 0xB248, + 1213: 0xB249, + 1214: 0xB24A, + 1215: 0xB24B, + 1216: 0xB24C, + 1217: 0xB24D, + 1218: 0xB24E, + 1219: 0xB24F, + 1220: 0xB250, + 1221: 0xB251, + 1222: 0xB252, + 1223: 0xB253, + 1224: 0xB254, + 1225: 0xB255, + 1226: 0xB256, + 1227: 0xB257, + 1228: 0xB259, + 1229: 0xB25A, + 1230: 0xB25B, + 1231: 0xB25D, + 1232: 0xB25E, + 1233: 0xB25F, + 1234: 0xB261, + 1235: 0xB262, + 1236: 0xB263, + 1237: 0xB264, + 1238: 0xB265, + 1239: 0xB266, + 1240: 0xB267, + 1241: 0xB26A, + 1242: 0xB26B, + 1243: 0xB26C, + 1244: 0xB26D, + 1245: 0xB26E, + 1246: 0xB26F, + 1247: 0xB270, + 1248: 0xB271, + 1249: 0xB272, + 1250: 0xB273, + 1251: 0xB276, + 1252: 0xB277, + 1253: 0xB278, + 1254: 0xB279, + 1255: 0xB27A, + 1256: 0xB27B, + 1257: 0xB27D, + 1258: 0xB27E, + 1259: 0xB27F, + 1260: 0xB280, + 1261: 0xB281, + 1262: 0xB282, + 1263: 0xB283, + 1264: 0xB286, + 1265: 0xB287, + 1266: 0xB288, + 1267: 0xB28A, + 1268: 0xB28B, + 1269: 0xB28C, + 1270: 0xB28D, + 1271: 0xB28E, + 1272: 0xB28F, + 1273: 0xB292, + 1274: 0xB293, + 1275: 0xB295, + 1276: 0xB296, + 1277: 0xB297, + 1278: 0xB29B, + 1279: 0xB29C, + 1280: 0xB29D, + 1281: 0xB29E, + 1282: 0xB29F, + 1283: 0xB2A2, + 1284: 0xB2A4, + 1285: 0xB2A7, + 1286: 0xB2A8, + 1287: 0xB2A9, + 1288: 0xB2AB, + 1289: 0xB2AD, + 1290: 0xB2AE, + 1291: 0xB2AF, + 1292: 0xB2B1, + 1293: 0xB2B2, + 1294: 0xB2B3, + 1295: 0xB2B5, + 1296: 0xB2B6, + 1297: 0xB2B7, + 1298: 0xB2B8, + 1299: 0xB2B9, + 1300: 0xB2BA, + 1301: 0xB2BB, + 1302: 0xB2BC, + 1303: 0xB2BD, + 1304: 0xB2BE, + 1305: 0xB2BF, + 1306: 0xB2C0, + 1307: 0xB2C1, + 1308: 0xB2C2, + 1309: 0xB2C3, + 1310: 0xB2C4, + 1311: 0xB2C5, + 1312: 0xB2C6, + 1313: 0xB2C7, + 1314: 0xB2CA, + 1315: 0xB2CB, + 1316: 0xB2CD, + 1317: 0xB2CE, + 1318: 0xB2CF, + 1319: 0xB2D1, + 1320: 0xB2D3, + 1321: 0xB2D4, + 1322: 0xB2D5, + 1323: 0xB2D6, + 1324: 0xB2D7, + 1325: 0xB2DA, + 1326: 0xB2DC, + 1327: 0xB2DE, + 1328: 0xB2DF, + 1329: 0xB2E0, + 1330: 0xB2E1, + 1331: 0xB2E3, + 1332: 0xB2E7, + 1333: 0xB2E9, + 1334: 0xB2EA, + 1335: 0xB2F0, + 1336: 0xB2F1, + 1337: 0xB2F2, + 1338: 0xB2F6, + 1339: 0xB2FC, + 1340: 0xB2FD, + 1341: 0xB2FE, + 1342: 0xB302, + 1343: 0xB303, + 1344: 0xB305, + 1345: 0xB306, + 1346: 0xB307, + 1347: 0xB309, + 1348: 0xB30A, + 1349: 0xB30B, + 1350: 0xB30C, + 1351: 0xB30D, + 1352: 0xB30E, + 1353: 0xB30F, + 1354: 0xB312, + 1355: 0xB316, + 1356: 0xB317, + 1357: 0xB318, + 1358: 0xB319, + 1359: 0xB31A, + 1360: 0xB31B, + 1361: 0xB31D, + 1362: 0xB31E, + 1363: 0xB31F, + 1364: 0xB320, + 1365: 0xB321, + 1366: 0xB322, + 1367: 0xB323, + 1368: 0xB324, + 1369: 0xB325, + 1370: 0xB326, + 1371: 0xB327, + 1372: 0xB328, + 1373: 0xB329, + 1374: 0xB32A, + 1375: 0xB32B, + 1376: 0xB32C, + 1377: 0xB32D, + 1378: 0xB32E, + 1379: 0xB32F, + 1380: 0xB330, + 1381: 0xB331, + 1382: 0xB332, + 1383: 0xB333, + 1384: 0xB334, + 1385: 0xB335, + 1386: 0xB336, + 1387: 0xB337, + 1388: 0xB338, + 1389: 0xB339, + 1390: 0xB33A, + 1391: 0xB33B, + 1392: 0xB33C, + 1393: 0xB33D, + 1394: 0xB33E, + 1395: 0xB33F, + 1396: 0xB340, + 1397: 0xB341, + 1398: 0xB342, + 1399: 0xB343, + 1400: 0xB344, + 1401: 0xB345, + 1402: 0xB346, + 1403: 0xB347, + 1404: 0xB348, + 1405: 0xB349, + 1406: 0xB34A, + 1407: 0xB34B, + 1408: 0xB34C, + 1409: 0xB34D, + 1410: 0xB34E, + 1411: 0xB34F, + 1412: 0xB350, + 1413: 0xB351, + 1414: 0xB352, + 1415: 0xB353, + 1416: 0xB357, + 1417: 0xB359, + 1418: 0xB35A, + 1419: 0xB35D, + 1420: 0xB360, + 1421: 0xB361, + 1422: 0xB362, + 1423: 0xB363, + 1424: 0xB366, + 1425: 0xB368, + 1426: 0xB36A, + 1427: 0xB36C, + 1428: 0xB36D, + 1429: 0xB36F, + 1430: 0xB372, + 1431: 0xB373, + 1432: 0xB375, + 1433: 0xB376, + 1434: 0xB377, + 1435: 0xB379, + 1436: 0xB37A, + 1437: 0xB37B, + 1438: 0xB37C, + 1439: 0xB37D, + 1440: 0xB37E, + 1441: 0xB37F, + 1442: 0xB382, + 1443: 0xB386, + 1444: 0xB387, + 1445: 0xB388, + 1446: 0xB389, + 1447: 0xB38A, + 1448: 0xB38B, + 1449: 0xB38D, + 1450: 0xB38E, + 1451: 0xB38F, + 1452: 0xB391, + 1453: 0xB392, + 1454: 0xB393, + 1455: 0xB395, + 1456: 0xB396, + 1457: 0xB397, + 1458: 0xB398, + 1459: 0xB399, + 1460: 0xB39A, + 1461: 0xB39B, + 1462: 0xB39C, + 1463: 0xB39D, + 1464: 0xB39E, + 1465: 0xB39F, + 1466: 0xB3A2, + 1467: 0xB3A3, + 1468: 0xB3A4, + 1469: 0xB3A5, + 1470: 0xB3A6, + 1471: 0xB3A7, + 1472: 0xB3A9, + 1473: 0xB3AA, + 1474: 0xB3AB, + 1475: 0xB3AD, + 1476: 0xB3AE, + 1477: 0xB3AF, + 1478: 0xB3B0, + 1479: 0xB3B1, + 1480: 0xB3B2, + 1481: 0xB3B3, + 1482: 0xB3B4, + 1483: 0xB3B5, + 1484: 0xB3B6, + 1485: 0xB3B7, + 1486: 0xB3B8, + 1487: 0xB3B9, + 1488: 0xB3BA, + 1489: 0xB3BB, + 1490: 0xB3BC, + 1491: 0xB3BD, + 1492: 0xB3BE, + 1493: 0xB3BF, + 1494: 0xB3C0, + 1495: 0xB3C1, + 1496: 0xB3C2, + 1497: 0xB3C3, + 1498: 0xB3C6, + 1499: 0xB3C7, + 1500: 0xB3C9, + 1501: 0xB3CA, + 1502: 0xB3CD, + 1503: 0xB3CF, + 1504: 0xB3D1, + 1505: 0xB3D2, + 1506: 0xB3D3, + 1507: 0xB3D6, + 1508: 0xB3D8, + 1509: 0xB3DA, + 1510: 0xB3DC, + 1511: 0xB3DE, + 1512: 0xB3DF, + 1513: 0xB3E1, + 1514: 0xB3E2, + 1515: 0xB3E3, + 1516: 0xB3E5, + 1517: 0xB3E6, + 1518: 0xB3E7, + 1519: 0xB3E9, + 1520: 0xB3EA, + 1521: 0xB3EB, + 1522: 0xB3EC, + 1523: 0xB3ED, + 1524: 0xB3EE, + 1525: 0xB3EF, + 1526: 0xB3F0, + 1527: 0xB3F1, + 1528: 0xB3F2, + 1529: 0xB3F3, + 1530: 0xB3F4, + 1531: 0xB3F5, + 1532: 0xB3F6, + 1533: 0xB3F7, + 1534: 0xB3F8, + 1535: 0xB3F9, + 1536: 0xB3FA, + 1537: 0xB3FB, + 1538: 0xB3FD, + 1539: 0xB3FE, + 1540: 0xB3FF, + 1541: 0xB400, + 1542: 0xB401, + 1543: 0xB402, + 1544: 0xB403, + 1545: 0xB404, + 1546: 0xB405, + 1547: 0xB406, + 1548: 0xB407, + 1549: 0xB408, + 1550: 0xB409, + 1551: 0xB40A, + 1552: 0xB40B, + 1553: 0xB40C, + 1554: 0xB40D, + 1555: 0xB40E, + 1556: 0xB40F, + 1557: 0xB411, + 1558: 0xB412, + 1559: 0xB413, + 1560: 0xB414, + 1561: 0xB415, + 1562: 0xB416, + 1563: 0xB417, + 1564: 0xB419, + 1565: 0xB41A, + 1566: 0xB41B, + 1567: 0xB41D, + 1568: 0xB41E, + 1569: 0xB41F, + 1570: 0xB421, + 1571: 0xB422, + 1572: 0xB423, + 1573: 0xB424, + 1574: 0xB425, + 1575: 0xB426, + 1576: 0xB427, + 1577: 0xB42A, + 1578: 0xB42C, + 1579: 0xB42D, + 1580: 0xB42E, + 1581: 0xB42F, + 1582: 0xB430, + 1583: 0xB431, + 1584: 0xB432, + 1585: 0xB433, + 1586: 0xB435, + 1587: 0xB436, + 1588: 0xB437, + 1589: 0xB438, + 1590: 0xB439, + 1591: 0xB43A, + 1592: 0xB43B, + 1593: 0xB43C, + 1594: 0xB43D, + 1595: 0xB43E, + 1596: 0xB43F, + 1597: 0xB440, + 1598: 0xB441, + 1599: 0xB442, + 1600: 0xB443, + 1601: 0xB444, + 1602: 0xB445, + 1603: 0xB446, + 1604: 0xB447, + 1605: 0xB448, + 1606: 0xB449, + 1607: 0xB44A, + 1608: 0xB44B, + 1609: 0xB44C, + 1610: 0xB44D, + 1611: 0xB44E, + 1612: 0xB44F, + 1613: 0xB452, + 1614: 0xB453, + 1615: 0xB455, + 1616: 0xB456, + 1617: 0xB457, + 1618: 0xB459, + 1619: 0xB45A, + 1620: 0xB45B, + 1621: 0xB45C, + 1622: 0xB45D, + 1623: 0xB45E, + 1624: 0xB45F, + 1625: 0xB462, + 1626: 0xB464, + 1627: 0xB466, + 1628: 0xB467, + 1629: 0xB468, + 1630: 0xB469, + 1631: 0xB46A, + 1632: 0xB46B, + 1633: 0xB46D, + 1634: 0xB46E, + 1635: 0xB46F, + 1636: 0xB470, + 1637: 0xB471, + 1638: 0xB472, + 1639: 0xB473, + 1640: 0xB474, + 1641: 0xB475, + 1642: 0xB476, + 1643: 0xB477, + 1644: 0xB478, + 1645: 0xB479, + 1646: 0xB47A, + 1647: 0xB47B, + 1648: 0xB47C, + 1649: 0xB47D, + 1650: 0xB47E, + 1651: 0xB47F, + 1652: 0xB481, + 1653: 0xB482, + 1654: 0xB483, + 1655: 0xB484, + 1656: 0xB485, + 1657: 0xB486, + 1658: 0xB487, + 1659: 0xB489, + 1660: 0xB48A, + 1661: 0xB48B, + 1662: 0xB48C, + 1663: 0xB48D, + 1664: 0xB48E, + 1665: 0xB48F, + 1666: 0xB490, + 1667: 0xB491, + 1668: 0xB492, + 1669: 0xB493, + 1670: 0xB494, + 1671: 0xB495, + 1672: 0xB496, + 1673: 0xB497, + 1674: 0xB498, + 1675: 0xB499, + 1676: 0xB49A, + 1677: 0xB49B, + 1678: 0xB49C, + 1679: 0xB49E, + 1680: 0xB49F, + 1681: 0xB4A0, + 1682: 0xB4A1, + 1683: 0xB4A2, + 1684: 0xB4A3, + 1685: 0xB4A5, + 1686: 0xB4A6, + 1687: 0xB4A7, + 1688: 0xB4A9, + 1689: 0xB4AA, + 1690: 0xB4AB, + 1691: 0xB4AD, + 1692: 0xB4AE, + 1693: 0xB4AF, + 1694: 0xB4B0, + 1695: 0xB4B1, + 1696: 0xB4B2, + 1697: 0xB4B3, + 1698: 0xB4B4, + 1699: 0xB4B6, + 1700: 0xB4B8, + 1701: 0xB4BA, + 1702: 0xB4BB, + 1703: 0xB4BC, + 1704: 0xB4BD, + 1705: 0xB4BE, + 1706: 0xB4BF, + 1707: 0xB4C1, + 1708: 0xB4C2, + 1709: 0xB4C3, + 1710: 0xB4C5, + 1711: 0xB4C6, + 1712: 0xB4C7, + 1713: 0xB4C9, + 1714: 0xB4CA, + 1715: 0xB4CB, + 1716: 0xB4CC, + 1717: 0xB4CD, + 1718: 0xB4CE, + 1719: 0xB4CF, + 1720: 0xB4D1, + 1721: 0xB4D2, + 1722: 0xB4D3, + 1723: 0xB4D4, + 1724: 0xB4D6, + 1725: 0xB4D7, + 1726: 0xB4D8, + 1727: 0xB4D9, + 1728: 0xB4DA, + 1729: 0xB4DB, + 1730: 0xB4DE, + 1731: 0xB4DF, + 1732: 0xB4E1, + 1733: 0xB4E2, + 1734: 0xB4E5, + 1735: 0xB4E7, + 1736: 0xB4E8, + 1737: 0xB4E9, + 1738: 0xB4EA, + 1739: 0xB4EB, + 1740: 0xB4EE, + 1741: 0xB4F0, + 1742: 0xB4F2, + 1743: 0xB4F3, + 1744: 0xB4F4, + 1745: 0xB4F5, + 1746: 0xB4F6, + 1747: 0xB4F7, + 1748: 0xB4F9, + 1749: 0xB4FA, + 1750: 0xB4FB, + 1751: 0xB4FC, + 1752: 0xB4FD, + 1753: 0xB4FE, + 1754: 0xB4FF, + 1755: 0xB500, + 1756: 0xB501, + 1757: 0xB502, + 1758: 0xB503, + 1759: 0xB504, + 1760: 0xB505, + 1761: 0xB506, + 1762: 0xB507, + 1763: 0xB508, + 1764: 0xB509, + 1765: 0xB50A, + 1766: 0xB50B, + 1767: 0xB50C, + 1768: 0xB50D, + 1769: 0xB50E, + 1770: 0xB50F, + 1771: 0xB510, + 1772: 0xB511, + 1773: 0xB512, + 1774: 0xB513, + 1775: 0xB516, + 1776: 0xB517, + 1777: 0xB519, + 1778: 0xB51A, + 1779: 0xB51D, + 1780: 0xB51E, + 1781: 0xB51F, + 1782: 0xB520, + 1783: 0xB521, + 1784: 0xB522, + 1785: 0xB523, + 1786: 0xB526, + 1787: 0xB52B, + 1788: 0xB52C, + 1789: 0xB52D, + 1790: 0xB52E, + 1791: 0xB52F, + 1792: 0xB532, + 1793: 0xB533, + 1794: 0xB535, + 1795: 0xB536, + 1796: 0xB537, + 1797: 0xB539, + 1798: 0xB53A, + 1799: 0xB53B, + 1800: 0xB53C, + 1801: 0xB53D, + 1802: 0xB53E, + 1803: 0xB53F, + 1804: 0xB542, + 1805: 0xB546, + 1806: 0xB547, + 1807: 0xB548, + 1808: 0xB549, + 1809: 0xB54A, + 1810: 0xB54E, + 1811: 0xB54F, + 1812: 0xB551, + 1813: 0xB552, + 1814: 0xB553, + 1815: 0xB555, + 1816: 0xB556, + 1817: 0xB557, + 1818: 0xB558, + 1819: 0xB559, + 1820: 0xB55A, + 1821: 0xB55B, + 1822: 0xB55E, + 1823: 0xB562, + 1824: 0xB563, + 1825: 0xB564, + 1826: 0xB565, + 1827: 0xB566, + 1828: 0xB567, + 1829: 0xB568, + 1830: 0xB569, + 1831: 0xB56A, + 1832: 0xB56B, + 1833: 0xB56C, + 1834: 0xB56D, + 1835: 0xB56E, + 1836: 0xB56F, + 1837: 0xB570, + 1838: 0xB571, + 1839: 0xB572, + 1840: 0xB573, + 1841: 0xB574, + 1842: 0xB575, + 1843: 0xB576, + 1844: 0xB577, + 1845: 0xB578, + 1846: 0xB579, + 1847: 0xB57A, + 1848: 0xB57B, + 1849: 0xB57C, + 1850: 0xB57D, + 1851: 0xB57E, + 1852: 0xB57F, + 1853: 0xB580, + 1854: 0xB581, + 1855: 0xB582, + 1856: 0xB583, + 1857: 0xB584, + 1858: 0xB585, + 1859: 0xB586, + 1860: 0xB587, + 1861: 0xB588, + 1862: 0xB589, + 1863: 0xB58A, + 1864: 0xB58B, + 1865: 0xB58C, + 1866: 0xB58D, + 1867: 0xB58E, + 1868: 0xB58F, + 1869: 0xB590, + 1870: 0xB591, + 1871: 0xB592, + 1872: 0xB593, + 1873: 0xB594, + 1874: 0xB595, + 1875: 0xB596, + 1876: 0xB597, + 1877: 0xB598, + 1878: 0xB599, + 1879: 0xB59A, + 1880: 0xB59B, + 1881: 0xB59C, + 1882: 0xB59D, + 1883: 0xB59E, + 1884: 0xB59F, + 1885: 0xB5A2, + 1886: 0xB5A3, + 1887: 0xB5A5, + 1888: 0xB5A6, + 1889: 0xB5A7, + 1890: 0xB5A9, + 1891: 0xB5AC, + 1892: 0xB5AD, + 1893: 0xB5AE, + 1894: 0xB5AF, + 1895: 0xB5B2, + 1896: 0xB5B6, + 1897: 0xB5B7, + 1898: 0xB5B8, + 1899: 0xB5B9, + 1900: 0xB5BA, + 1901: 0xB5BE, + 1902: 0xB5BF, + 1903: 0xB5C1, + 1904: 0xB5C2, + 1905: 0xB5C3, + 1906: 0xB5C5, + 1907: 0xB5C6, + 1908: 0xB5C7, + 1909: 0xB5C8, + 1910: 0xB5C9, + 1911: 0xB5CA, + 1912: 0xB5CB, + 1913: 0xB5CE, + 1914: 0xB5D2, + 1915: 0xB5D3, + 1916: 0xB5D4, + 1917: 0xB5D5, + 1918: 0xB5D6, + 1919: 0xB5D7, + 1920: 0xB5D9, + 1921: 0xB5DA, + 1922: 0xB5DB, + 1923: 0xB5DC, + 1924: 0xB5DD, + 1925: 0xB5DE, + 1926: 0xB5DF, + 1927: 0xB5E0, + 1928: 0xB5E1, + 1929: 0xB5E2, + 1930: 0xB5E3, + 1931: 0xB5E4, + 1932: 0xB5E5, + 1933: 0xB5E6, + 1934: 0xB5E7, + 1935: 0xB5E8, + 1936: 0xB5E9, + 1937: 0xB5EA, + 1938: 0xB5EB, + 1939: 0xB5ED, + 1940: 0xB5EE, + 1941: 0xB5EF, + 1942: 0xB5F0, + 1943: 0xB5F1, + 1944: 0xB5F2, + 1945: 0xB5F3, + 1946: 0xB5F4, + 1947: 0xB5F5, + 1948: 0xB5F6, + 1949: 0xB5F7, + 1950: 0xB5F8, + 1951: 0xB5F9, + 1952: 0xB5FA, + 1953: 0xB5FB, + 1954: 0xB5FC, + 1955: 0xB5FD, + 1956: 0xB5FE, + 1957: 0xB5FF, + 1958: 0xB600, + 1959: 0xB601, + 1960: 0xB602, + 1961: 0xB603, + 1962: 0xB604, + 1963: 0xB605, + 1964: 0xB606, + 1965: 0xB607, + 1966: 0xB608, + 1967: 0xB609, + 1968: 0xB60A, + 1969: 0xB60B, + 1970: 0xB60C, + 1971: 0xB60D, + 1972: 0xB60E, + 1973: 0xB60F, + 1974: 0xB612, + 1975: 0xB613, + 1976: 0xB615, + 1977: 0xB616, + 1978: 0xB617, + 1979: 0xB619, + 1980: 0xB61A, + 1981: 0xB61B, + 1982: 0xB61C, + 1983: 0xB61D, + 1984: 0xB61E, + 1985: 0xB61F, + 1986: 0xB620, + 1987: 0xB621, + 1988: 0xB622, + 1989: 0xB623, + 1990: 0xB624, + 1991: 0xB626, + 1992: 0xB627, + 1993: 0xB628, + 1994: 0xB629, + 1995: 0xB62A, + 1996: 0xB62B, + 1997: 0xB62D, + 1998: 0xB62E, + 1999: 0xB62F, + 2000: 0xB630, + 2001: 0xB631, + 2002: 0xB632, + 2003: 0xB633, + 2004: 0xB635, + 2005: 0xB636, + 2006: 0xB637, + 2007: 0xB638, + 2008: 0xB639, + 2009: 0xB63A, + 2010: 0xB63B, + 2011: 0xB63C, + 2012: 0xB63D, + 2013: 0xB63E, + 2014: 0xB63F, + 2015: 0xB640, + 2016: 0xB641, + 2017: 0xB642, + 2018: 0xB643, + 2019: 0xB644, + 2020: 0xB645, + 2021: 0xB646, + 2022: 0xB647, + 2023: 0xB649, + 2024: 0xB64A, + 2025: 0xB64B, + 2026: 0xB64C, + 2027: 0xB64D, + 2028: 0xB64E, + 2029: 0xB64F, + 2030: 0xB650, + 2031: 0xB651, + 2032: 0xB652, + 2033: 0xB653, + 2034: 0xB654, + 2035: 0xB655, + 2036: 0xB656, + 2037: 0xB657, + 2038: 0xB658, + 2039: 0xB659, + 2040: 0xB65A, + 2041: 0xB65B, + 2042: 0xB65C, + 2043: 0xB65D, + 2044: 0xB65E, + 2045: 0xB65F, + 2046: 0xB660, + 2047: 0xB661, + 2048: 0xB662, + 2049: 0xB663, + 2050: 0xB665, + 2051: 0xB666, + 2052: 0xB667, + 2053: 0xB669, + 2054: 0xB66A, + 2055: 0xB66B, + 2056: 0xB66C, + 2057: 0xB66D, + 2058: 0xB66E, + 2059: 0xB66F, + 2060: 0xB670, + 2061: 0xB671, + 2062: 0xB672, + 2063: 0xB673, + 2064: 0xB674, + 2065: 0xB675, + 2066: 0xB676, + 2067: 0xB677, + 2068: 0xB678, + 2069: 0xB679, + 2070: 0xB67A, + 2071: 0xB67B, + 2072: 0xB67C, + 2073: 0xB67D, + 2074: 0xB67E, + 2075: 0xB67F, + 2076: 0xB680, + 2077: 0xB681, + 2078: 0xB682, + 2079: 0xB683, + 2080: 0xB684, + 2081: 0xB685, + 2082: 0xB686, + 2083: 0xB687, + 2084: 0xB688, + 2085: 0xB689, + 2086: 0xB68A, + 2087: 0xB68B, + 2088: 0xB68C, + 2089: 0xB68D, + 2090: 0xB68E, + 2091: 0xB68F, + 2092: 0xB690, + 2093: 0xB691, + 2094: 0xB692, + 2095: 0xB693, + 2096: 0xB694, + 2097: 0xB695, + 2098: 0xB696, + 2099: 0xB697, + 2100: 0xB698, + 2101: 0xB699, + 2102: 0xB69A, + 2103: 0xB69B, + 2104: 0xB69E, + 2105: 0xB69F, + 2106: 0xB6A1, + 2107: 0xB6A2, + 2108: 0xB6A3, + 2109: 0xB6A5, + 2110: 0xB6A6, + 2111: 0xB6A7, + 2112: 0xB6A8, + 2113: 0xB6A9, + 2114: 0xB6AA, + 2115: 0xB6AD, + 2116: 0xB6AE, + 2117: 0xB6AF, + 2118: 0xB6B0, + 2119: 0xB6B2, + 2120: 0xB6B3, + 2121: 0xB6B4, + 2122: 0xB6B5, + 2123: 0xB6B6, + 2124: 0xB6B7, + 2125: 0xB6B8, + 2126: 0xB6B9, + 2127: 0xB6BA, + 2128: 0xB6BB, + 2129: 0xB6BC, + 2130: 0xB6BD, + 2131: 0xB6BE, + 2132: 0xB6BF, + 2133: 0xB6C0, + 2134: 0xB6C1, + 2135: 0xB6C2, + 2136: 0xB6C3, + 2137: 0xB6C4, + 2138: 0xB6C5, + 2139: 0xB6C6, + 2140: 0xB6C7, + 2141: 0xB6C8, + 2142: 0xB6C9, + 2143: 0xB6CA, + 2144: 0xB6CB, + 2145: 0xB6CC, + 2146: 0xB6CD, + 2147: 0xB6CE, + 2148: 0xB6CF, + 2149: 0xB6D0, + 2150: 0xB6D1, + 2151: 0xB6D2, + 2152: 0xB6D3, + 2153: 0xB6D5, + 2154: 0xB6D6, + 2155: 0xB6D7, + 2156: 0xB6D8, + 2157: 0xB6D9, + 2158: 0xB6DA, + 2159: 0xB6DB, + 2160: 0xB6DC, + 2161: 0xB6DD, + 2162: 0xB6DE, + 2163: 0xB6DF, + 2164: 0xB6E0, + 2165: 0xB6E1, + 2166: 0xB6E2, + 2167: 0xB6E3, + 2168: 0xB6E4, + 2169: 0xB6E5, + 2170: 0xB6E6, + 2171: 0xB6E7, + 2172: 0xB6E8, + 2173: 0xB6E9, + 2174: 0xB6EA, + 2175: 0xB6EB, + 2176: 0xB6EC, + 2177: 0xB6ED, + 2178: 0xB6EE, + 2179: 0xB6EF, + 2180: 0xB6F1, + 2181: 0xB6F2, + 2182: 0xB6F3, + 2183: 0xB6F5, + 2184: 0xB6F6, + 2185: 0xB6F7, + 2186: 0xB6F9, + 2187: 0xB6FA, + 2188: 0xB6FB, + 2189: 0xB6FC, + 2190: 0xB6FD, + 2191: 0xB6FE, + 2192: 0xB6FF, + 2193: 0xB702, + 2194: 0xB703, + 2195: 0xB704, + 2196: 0xB706, + 2197: 0xB707, + 2198: 0xB708, + 2199: 0xB709, + 2200: 0xB70A, + 2201: 0xB70B, + 2202: 0xB70C, + 2203: 0xB70D, + 2204: 0xB70E, + 2205: 0xB70F, + 2206: 0xB710, + 2207: 0xB711, + 2208: 0xB712, + 2209: 0xB713, + 2210: 0xB714, + 2211: 0xB715, + 2212: 0xB716, + 2213: 0xB717, + 2214: 0xB718, + 2215: 0xB719, + 2216: 0xB71A, + 2217: 0xB71B, + 2218: 0xB71C, + 2219: 0xB71D, + 2220: 0xB71E, + 2221: 0xB71F, + 2222: 0xB720, + 2223: 0xB721, + 2224: 0xB722, + 2225: 0xB723, + 2226: 0xB724, + 2227: 0xB725, + 2228: 0xB726, + 2229: 0xB727, + 2230: 0xB72A, + 2231: 0xB72B, + 2232: 0xB72D, + 2233: 0xB72E, + 2234: 0xB731, + 2235: 0xB732, + 2236: 0xB733, + 2237: 0xB734, + 2238: 0xB735, + 2239: 0xB736, + 2240: 0xB737, + 2241: 0xB73A, + 2242: 0xB73C, + 2243: 0xB73D, + 2244: 0xB73E, + 2245: 0xB73F, + 2246: 0xB740, + 2247: 0xB741, + 2248: 0xB742, + 2249: 0xB743, + 2250: 0xB745, + 2251: 0xB746, + 2252: 0xB747, + 2253: 0xB749, + 2254: 0xB74A, + 2255: 0xB74B, + 2256: 0xB74D, + 2257: 0xB74E, + 2258: 0xB74F, + 2259: 0xB750, + 2260: 0xB751, + 2261: 0xB752, + 2262: 0xB753, + 2263: 0xB756, + 2264: 0xB757, + 2265: 0xB758, + 2266: 0xB759, + 2267: 0xB75A, + 2268: 0xB75B, + 2269: 0xB75C, + 2270: 0xB75D, + 2271: 0xB75E, + 2272: 0xB75F, + 2273: 0xB761, + 2274: 0xB762, + 2275: 0xB763, + 2276: 0xB765, + 2277: 0xB766, + 2278: 0xB767, + 2279: 0xB769, + 2280: 0xB76A, + 2281: 0xB76B, + 2282: 0xB76C, + 2283: 0xB76D, + 2284: 0xB76E, + 2285: 0xB76F, + 2286: 0xB772, + 2287: 0xB774, + 2288: 0xB776, + 2289: 0xB777, + 2290: 0xB778, + 2291: 0xB779, + 2292: 0xB77A, + 2293: 0xB77B, + 2294: 0xB77E, + 2295: 0xB77F, + 2296: 0xB781, + 2297: 0xB782, + 2298: 0xB783, + 2299: 0xB785, + 2300: 0xB786, + 2301: 0xB787, + 2302: 0xB788, + 2303: 0xB789, + 2304: 0xB78A, + 2305: 0xB78B, + 2306: 0xB78E, + 2307: 0xB793, + 2308: 0xB794, + 2309: 0xB795, + 2310: 0xB79A, + 2311: 0xB79B, + 2312: 0xB79D, + 2313: 0xB79E, + 2314: 0xB79F, + 2315: 0xB7A1, + 2316: 0xB7A2, + 2317: 0xB7A3, + 2318: 0xB7A4, + 2319: 0xB7A5, + 2320: 0xB7A6, + 2321: 0xB7A7, + 2322: 0xB7AA, + 2323: 0xB7AE, + 2324: 0xB7AF, + 2325: 0xB7B0, + 2326: 0xB7B1, + 2327: 0xB7B2, + 2328: 0xB7B3, + 2329: 0xB7B6, + 2330: 0xB7B7, + 2331: 0xB7B9, + 2332: 0xB7BA, + 2333: 0xB7BB, + 2334: 0xB7BC, + 2335: 0xB7BD, + 2336: 0xB7BE, + 2337: 0xB7BF, + 2338: 0xB7C0, + 2339: 0xB7C1, + 2340: 0xB7C2, + 2341: 0xB7C3, + 2342: 0xB7C4, + 2343: 0xB7C5, + 2344: 0xB7C6, + 2345: 0xB7C8, + 2346: 0xB7CA, + 2347: 0xB7CB, + 2348: 0xB7CC, + 2349: 0xB7CD, + 2350: 0xB7CE, + 2351: 0xB7CF, + 2352: 0xB7D0, + 2353: 0xB7D1, + 2354: 0xB7D2, + 2355: 0xB7D3, + 2356: 0xB7D4, + 2357: 0xB7D5, + 2358: 0xB7D6, + 2359: 0xB7D7, + 2360: 0xB7D8, + 2361: 0xB7D9, + 2362: 0xB7DA, + 2363: 0xB7DB, + 2364: 0xB7DC, + 2365: 0xB7DD, + 2366: 0xB7DE, + 2367: 0xB7DF, + 2368: 0xB7E0, + 2369: 0xB7E1, + 2370: 0xB7E2, + 2371: 0xB7E3, + 2372: 0xB7E4, + 2373: 0xB7E5, + 2374: 0xB7E6, + 2375: 0xB7E7, + 2376: 0xB7E8, + 2377: 0xB7E9, + 2378: 0xB7EA, + 2379: 0xB7EB, + 2380: 0xB7EE, + 2381: 0xB7EF, + 2382: 0xB7F1, + 2383: 0xB7F2, + 2384: 0xB7F3, + 2385: 0xB7F5, + 2386: 0xB7F6, + 2387: 0xB7F7, + 2388: 0xB7F8, + 2389: 0xB7F9, + 2390: 0xB7FA, + 2391: 0xB7FB, + 2392: 0xB7FE, + 2393: 0xB802, + 2394: 0xB803, + 2395: 0xB804, + 2396: 0xB805, + 2397: 0xB806, + 2398: 0xB80A, + 2399: 0xB80B, + 2400: 0xB80D, + 2401: 0xB80E, + 2402: 0xB80F, + 2403: 0xB811, + 2404: 0xB812, + 2405: 0xB813, + 2406: 0xB814, + 2407: 0xB815, + 2408: 0xB816, + 2409: 0xB817, + 2410: 0xB81A, + 2411: 0xB81C, + 2412: 0xB81E, + 2413: 0xB81F, + 2414: 0xB820, + 2415: 0xB821, + 2416: 0xB822, + 2417: 0xB823, + 2418: 0xB826, + 2419: 0xB827, + 2420: 0xB829, + 2421: 0xB82A, + 2422: 0xB82B, + 2423: 0xB82D, + 2424: 0xB82E, + 2425: 0xB82F, + 2426: 0xB830, + 2427: 0xB831, + 2428: 0xB832, + 2429: 0xB833, + 2430: 0xB836, + 2431: 0xB83A, + 2432: 0xB83B, + 2433: 0xB83C, + 2434: 0xB83D, + 2435: 0xB83E, + 2436: 0xB83F, + 2437: 0xB841, + 2438: 0xB842, + 2439: 0xB843, + 2440: 0xB845, + 2441: 0xB846, + 2442: 0xB847, + 2443: 0xB848, + 2444: 0xB849, + 2445: 0xB84A, + 2446: 0xB84B, + 2447: 0xB84C, + 2448: 0xB84D, + 2449: 0xB84E, + 2450: 0xB84F, + 2451: 0xB850, + 2452: 0xB852, + 2453: 0xB854, + 2454: 0xB855, + 2455: 0xB856, + 2456: 0xB857, + 2457: 0xB858, + 2458: 0xB859, + 2459: 0xB85A, + 2460: 0xB85B, + 2461: 0xB85E, + 2462: 0xB85F, + 2463: 0xB861, + 2464: 0xB862, + 2465: 0xB863, + 2466: 0xB865, + 2467: 0xB866, + 2468: 0xB867, + 2469: 0xB868, + 2470: 0xB869, + 2471: 0xB86A, + 2472: 0xB86B, + 2473: 0xB86E, + 2474: 0xB870, + 2475: 0xB872, + 2476: 0xB873, + 2477: 0xB874, + 2478: 0xB875, + 2479: 0xB876, + 2480: 0xB877, + 2481: 0xB879, + 2482: 0xB87A, + 2483: 0xB87B, + 2484: 0xB87D, + 2485: 0xB87E, + 2486: 0xB87F, + 2487: 0xB880, + 2488: 0xB881, + 2489: 0xB882, + 2490: 0xB883, + 2491: 0xB884, + 2492: 0xB885, + 2493: 0xB886, + 2494: 0xB887, + 2495: 0xB888, + 2496: 0xB889, + 2497: 0xB88A, + 2498: 0xB88B, + 2499: 0xB88C, + 2500: 0xB88E, + 2501: 0xB88F, + 2502: 0xB890, + 2503: 0xB891, + 2504: 0xB892, + 2505: 0xB893, + 2506: 0xB894, + 2507: 0xB895, + 2508: 0xB896, + 2509: 0xB897, + 2510: 0xB898, + 2511: 0xB899, + 2512: 0xB89A, + 2513: 0xB89B, + 2514: 0xB89C, + 2515: 0xB89D, + 2516: 0xB89E, + 2517: 0xB89F, + 2518: 0xB8A0, + 2519: 0xB8A1, + 2520: 0xB8A2, + 2521: 0xB8A3, + 2522: 0xB8A4, + 2523: 0xB8A5, + 2524: 0xB8A6, + 2525: 0xB8A7, + 2526: 0xB8A9, + 2527: 0xB8AA, + 2528: 0xB8AB, + 2529: 0xB8AC, + 2530: 0xB8AD, + 2531: 0xB8AE, + 2532: 0xB8AF, + 2533: 0xB8B1, + 2534: 0xB8B2, + 2535: 0xB8B3, + 2536: 0xB8B5, + 2537: 0xB8B6, + 2538: 0xB8B7, + 2539: 0xB8B9, + 2540: 0xB8BA, + 2541: 0xB8BB, + 2542: 0xB8BC, + 2543: 0xB8BD, + 2544: 0xB8BE, + 2545: 0xB8BF, + 2546: 0xB8C2, + 2547: 0xB8C4, + 2548: 0xB8C6, + 2549: 0xB8C7, + 2550: 0xB8C8, + 2551: 0xB8C9, + 2552: 0xB8CA, + 2553: 0xB8CB, + 2554: 0xB8CD, + 2555: 0xB8CE, + 2556: 0xB8CF, + 2557: 0xB8D1, + 2558: 0xB8D2, + 2559: 0xB8D3, + 2560: 0xB8D5, + 2561: 0xB8D6, + 2562: 0xB8D7, + 2563: 0xB8D8, + 2564: 0xB8D9, + 2565: 0xB8DA, + 2566: 0xB8DB, + 2567: 0xB8DC, + 2568: 0xB8DE, + 2569: 0xB8E0, + 2570: 0xB8E2, + 2571: 0xB8E3, + 2572: 0xB8E4, + 2573: 0xB8E5, + 2574: 0xB8E6, + 2575: 0xB8E7, + 2576: 0xB8EA, + 2577: 0xB8EB, + 2578: 0xB8ED, + 2579: 0xB8EE, + 2580: 0xB8EF, + 2581: 0xB8F1, + 2582: 0xB8F2, + 2583: 0xB8F3, + 2584: 0xB8F4, + 2585: 0xB8F5, + 2586: 0xB8F6, + 2587: 0xB8F7, + 2588: 0xB8FA, + 2589: 0xB8FC, + 2590: 0xB8FE, + 2591: 0xB8FF, + 2592: 0xB900, + 2593: 0xB901, + 2594: 0xB902, + 2595: 0xB903, + 2596: 0xB905, + 2597: 0xB906, + 2598: 0xB907, + 2599: 0xB908, + 2600: 0xB909, + 2601: 0xB90A, + 2602: 0xB90B, + 2603: 0xB90C, + 2604: 0xB90D, + 2605: 0xB90E, + 2606: 0xB90F, + 2607: 0xB910, + 2608: 0xB911, + 2609: 0xB912, + 2610: 0xB913, + 2611: 0xB914, + 2612: 0xB915, + 2613: 0xB916, + 2614: 0xB917, + 2615: 0xB919, + 2616: 0xB91A, + 2617: 0xB91B, + 2618: 0xB91C, + 2619: 0xB91D, + 2620: 0xB91E, + 2621: 0xB91F, + 2622: 0xB921, + 2623: 0xB922, + 2624: 0xB923, + 2625: 0xB924, + 2626: 0xB925, + 2627: 0xB926, + 2628: 0xB927, + 2629: 0xB928, + 2630: 0xB929, + 2631: 0xB92A, + 2632: 0xB92B, + 2633: 0xB92C, + 2634: 0xB92D, + 2635: 0xB92E, + 2636: 0xB92F, + 2637: 0xB930, + 2638: 0xB931, + 2639: 0xB932, + 2640: 0xB933, + 2641: 0xB934, + 2642: 0xB935, + 2643: 0xB936, + 2644: 0xB937, + 2645: 0xB938, + 2646: 0xB939, + 2647: 0xB93A, + 2648: 0xB93B, + 2649: 0xB93E, + 2650: 0xB93F, + 2651: 0xB941, + 2652: 0xB942, + 2653: 0xB943, + 2654: 0xB945, + 2655: 0xB946, + 2656: 0xB947, + 2657: 0xB948, + 2658: 0xB949, + 2659: 0xB94A, + 2660: 0xB94B, + 2661: 0xB94D, + 2662: 0xB94E, + 2663: 0xB950, + 2664: 0xB952, + 2665: 0xB953, + 2666: 0xB954, + 2667: 0xB955, + 2668: 0xB956, + 2669: 0xB957, + 2670: 0xB95A, + 2671: 0xB95B, + 2672: 0xB95D, + 2673: 0xB95E, + 2674: 0xB95F, + 2675: 0xB961, + 2676: 0xB962, + 2677: 0xB963, + 2678: 0xB964, + 2679: 0xB965, + 2680: 0xB966, + 2681: 0xB967, + 2682: 0xB96A, + 2683: 0xB96C, + 2684: 0xB96E, + 2685: 0xB96F, + 2686: 0xB970, + 2687: 0xB971, + 2688: 0xB972, + 2689: 0xB973, + 2690: 0xB976, + 2691: 0xB977, + 2692: 0xB979, + 2693: 0xB97A, + 2694: 0xB97B, + 2695: 0xB97D, + 2696: 0xB97E, + 2697: 0xB97F, + 2698: 0xB980, + 2699: 0xB981, + 2700: 0xB982, + 2701: 0xB983, + 2702: 0xB986, + 2703: 0xB988, + 2704: 0xB98B, + 2705: 0xB98C, + 2706: 0xB98F, + 2707: 0xB990, + 2708: 0xB991, + 2709: 0xB992, + 2710: 0xB993, + 2711: 0xB994, + 2712: 0xB995, + 2713: 0xB996, + 2714: 0xB997, + 2715: 0xB998, + 2716: 0xB999, + 2717: 0xB99A, + 2718: 0xB99B, + 2719: 0xB99C, + 2720: 0xB99D, + 2721: 0xB99E, + 2722: 0xB99F, + 2723: 0xB9A0, + 2724: 0xB9A1, + 2725: 0xB9A2, + 2726: 0xB9A3, + 2727: 0xB9A4, + 2728: 0xB9A5, + 2729: 0xB9A6, + 2730: 0xB9A7, + 2731: 0xB9A8, + 2732: 0xB9A9, + 2733: 0xB9AA, + 2734: 0xB9AB, + 2735: 0xB9AE, + 2736: 0xB9AF, + 2737: 0xB9B1, + 2738: 0xB9B2, + 2739: 0xB9B3, + 2740: 0xB9B5, + 2741: 0xB9B6, + 2742: 0xB9B7, + 2743: 0xB9B8, + 2744: 0xB9B9, + 2745: 0xB9BA, + 2746: 0xB9BB, + 2747: 0xB9BE, + 2748: 0xB9C0, + 2749: 0xB9C2, + 2750: 0xB9C3, + 2751: 0xB9C4, + 2752: 0xB9C5, + 2753: 0xB9C6, + 2754: 0xB9C7, + 2755: 0xB9CA, + 2756: 0xB9CB, + 2757: 0xB9CD, + 2758: 0xB9D3, + 2759: 0xB9D4, + 2760: 0xB9D5, + 2761: 0xB9D6, + 2762: 0xB9D7, + 2763: 0xB9DA, + 2764: 0xB9DC, + 2765: 0xB9DF, + 2766: 0xB9E0, + 2767: 0xB9E2, + 2768: 0xB9E6, + 2769: 0xB9E7, + 2770: 0xB9E9, + 2771: 0xB9EA, + 2772: 0xB9EB, + 2773: 0xB9ED, + 2774: 0xB9EE, + 2775: 0xB9EF, + 2776: 0xB9F0, + 2777: 0xB9F1, + 2778: 0xB9F2, + 2779: 0xB9F3, + 2780: 0xB9F6, + 2781: 0xB9FB, + 2782: 0xB9FC, + 2783: 0xB9FD, + 2784: 0xB9FE, + 2785: 0xB9FF, + 2786: 0xBA02, + 2787: 0xBA03, + 2788: 0xBA04, + 2789: 0xBA05, + 2790: 0xBA06, + 2791: 0xBA07, + 2792: 0xBA09, + 2793: 0xBA0A, + 2794: 0xBA0B, + 2795: 0xBA0C, + 2796: 0xBA0D, + 2797: 0xBA0E, + 2798: 0xBA0F, + 2799: 0xBA10, + 2800: 0xBA11, + 2801: 0xBA12, + 2802: 0xBA13, + 2803: 0xBA14, + 2804: 0xBA16, + 2805: 0xBA17, + 2806: 0xBA18, + 2807: 0xBA19, + 2808: 0xBA1A, + 2809: 0xBA1B, + 2810: 0xBA1C, + 2811: 0xBA1D, + 2812: 0xBA1E, + 2813: 0xBA1F, + 2814: 0xBA20, + 2815: 0xBA21, + 2816: 0xBA22, + 2817: 0xBA23, + 2818: 0xBA24, + 2819: 0xBA25, + 2820: 0xBA26, + 2821: 0xBA27, + 2822: 0xBA28, + 2823: 0xBA29, + 2824: 0xBA2A, + 2825: 0xBA2B, + 2826: 0xBA2C, + 2827: 0xBA2D, + 2828: 0xBA2E, + 2829: 0xBA2F, + 2830: 0xBA30, + 2831: 0xBA31, + 2832: 0xBA32, + 2833: 0xBA33, + 2834: 0xBA34, + 2835: 0xBA35, + 2836: 0xBA36, + 2837: 0xBA37, + 2838: 0xBA3A, + 2839: 0xBA3B, + 2840: 0xBA3D, + 2841: 0xBA3E, + 2842: 0xBA3F, + 2843: 0xBA41, + 2844: 0xBA43, + 2845: 0xBA44, + 2846: 0xBA45, + 2847: 0xBA46, + 2848: 0xBA47, + 2849: 0xBA4A, + 2850: 0xBA4C, + 2851: 0xBA4F, + 2852: 0xBA50, + 2853: 0xBA51, + 2854: 0xBA52, + 2855: 0xBA56, + 2856: 0xBA57, + 2857: 0xBA59, + 2858: 0xBA5A, + 2859: 0xBA5B, + 2860: 0xBA5D, + 2861: 0xBA5E, + 2862: 0xBA5F, + 2863: 0xBA60, + 2864: 0xBA61, + 2865: 0xBA62, + 2866: 0xBA63, + 2867: 0xBA66, + 2868: 0xBA6A, + 2869: 0xBA6B, + 2870: 0xBA6C, + 2871: 0xBA6D, + 2872: 0xBA6E, + 2873: 0xBA6F, + 2874: 0xBA72, + 2875: 0xBA73, + 2876: 0xBA75, + 2877: 0xBA76, + 2878: 0xBA77, + 2879: 0xBA79, + 2880: 0xBA7A, + 2881: 0xBA7B, + 2882: 0xBA7C, + 2883: 0xBA7D, + 2884: 0xBA7E, + 2885: 0xBA7F, + 2886: 0xBA80, + 2887: 0xBA81, + 2888: 0xBA82, + 2889: 0xBA86, + 2890: 0xBA88, + 2891: 0xBA89, + 2892: 0xBA8A, + 2893: 0xBA8B, + 2894: 0xBA8D, + 2895: 0xBA8E, + 2896: 0xBA8F, + 2897: 0xBA90, + 2898: 0xBA91, + 2899: 0xBA92, + 2900: 0xBA93, + 2901: 0xBA94, + 2902: 0xBA95, + 2903: 0xBA96, + 2904: 0xBA97, + 2905: 0xBA98, + 2906: 0xBA99, + 2907: 0xBA9A, + 2908: 0xBA9B, + 2909: 0xBA9C, + 2910: 0xBA9D, + 2911: 0xBA9E, + 2912: 0xBA9F, + 2913: 0xBAA0, + 2914: 0xBAA1, + 2915: 0xBAA2, + 2916: 0xBAA3, + 2917: 0xBAA4, + 2918: 0xBAA5, + 2919: 0xBAA6, + 2920: 0xBAA7, + 2921: 0xBAAA, + 2922: 0xBAAD, + 2923: 0xBAAE, + 2924: 0xBAAF, + 2925: 0xBAB1, + 2926: 0xBAB3, + 2927: 0xBAB4, + 2928: 0xBAB5, + 2929: 0xBAB6, + 2930: 0xBAB7, + 2931: 0xBABA, + 2932: 0xBABC, + 2933: 0xBABE, + 2934: 0xBABF, + 2935: 0xBAC0, + 2936: 0xBAC1, + 2937: 0xBAC2, + 2938: 0xBAC3, + 2939: 0xBAC5, + 2940: 0xBAC6, + 2941: 0xBAC7, + 2942: 0xBAC9, + 2943: 0xBACA, + 2944: 0xBACB, + 2945: 0xBACC, + 2946: 0xBACD, + 2947: 0xBACE, + 2948: 0xBACF, + 2949: 0xBAD0, + 2950: 0xBAD1, + 2951: 0xBAD2, + 2952: 0xBAD3, + 2953: 0xBAD4, + 2954: 0xBAD5, + 2955: 0xBAD6, + 2956: 0xBAD7, + 2957: 0xBADA, + 2958: 0xBADB, + 2959: 0xBADC, + 2960: 0xBADD, + 2961: 0xBADE, + 2962: 0xBADF, + 2963: 0xBAE0, + 2964: 0xBAE1, + 2965: 0xBAE2, + 2966: 0xBAE3, + 2967: 0xBAE4, + 2968: 0xBAE5, + 2969: 0xBAE6, + 2970: 0xBAE7, + 2971: 0xBAE8, + 2972: 0xBAE9, + 2973: 0xBAEA, + 2974: 0xBAEB, + 2975: 0xBAEC, + 2976: 0xBAED, + 2977: 0xBAEE, + 2978: 0xBAEF, + 2979: 0xBAF0, + 2980: 0xBAF1, + 2981: 0xBAF2, + 2982: 0xBAF3, + 2983: 0xBAF4, + 2984: 0xBAF5, + 2985: 0xBAF6, + 2986: 0xBAF7, + 2987: 0xBAF8, + 2988: 0xBAF9, + 2989: 0xBAFA, + 2990: 0xBAFB, + 2991: 0xBAFD, + 2992: 0xBAFE, + 2993: 0xBAFF, + 2994: 0xBB01, + 2995: 0xBB02, + 2996: 0xBB03, + 2997: 0xBB05, + 2998: 0xBB06, + 2999: 0xBB07, + 3000: 0xBB08, + 3001: 0xBB09, + 3002: 0xBB0A, + 3003: 0xBB0B, + 3004: 0xBB0C, + 3005: 0xBB0E, + 3006: 0xBB10, + 3007: 0xBB12, + 3008: 0xBB13, + 3009: 0xBB14, + 3010: 0xBB15, + 3011: 0xBB16, + 3012: 0xBB17, + 3013: 0xBB19, + 3014: 0xBB1A, + 3015: 0xBB1B, + 3016: 0xBB1D, + 3017: 0xBB1E, + 3018: 0xBB1F, + 3019: 0xBB21, + 3020: 0xBB22, + 3021: 0xBB23, + 3022: 0xBB24, + 3023: 0xBB25, + 3024: 0xBB26, + 3025: 0xBB27, + 3026: 0xBB28, + 3027: 0xBB2A, + 3028: 0xBB2C, + 3029: 0xBB2D, + 3030: 0xBB2E, + 3031: 0xBB2F, + 3032: 0xBB30, + 3033: 0xBB31, + 3034: 0xBB32, + 3035: 0xBB33, + 3036: 0xBB37, + 3037: 0xBB39, + 3038: 0xBB3A, + 3039: 0xBB3F, + 3040: 0xBB40, + 3041: 0xBB41, + 3042: 0xBB42, + 3043: 0xBB43, + 3044: 0xBB46, + 3045: 0xBB48, + 3046: 0xBB4A, + 3047: 0xBB4B, + 3048: 0xBB4C, + 3049: 0xBB4E, + 3050: 0xBB51, + 3051: 0xBB52, + 3052: 0xBB53, + 3053: 0xBB55, + 3054: 0xBB56, + 3055: 0xBB57, + 3056: 0xBB59, + 3057: 0xBB5A, + 3058: 0xBB5B, + 3059: 0xBB5C, + 3060: 0xBB5D, + 3061: 0xBB5E, + 3062: 0xBB5F, + 3063: 0xBB60, + 3064: 0xBB62, + 3065: 0xBB64, + 3066: 0xBB65, + 3067: 0xBB66, + 3068: 0xBB67, + 3069: 0xBB68, + 3070: 0xBB69, + 3071: 0xBB6A, + 3072: 0xBB6B, + 3073: 0xBB6D, + 3074: 0xBB6E, + 3075: 0xBB6F, + 3076: 0xBB70, + 3077: 0xBB71, + 3078: 0xBB72, + 3079: 0xBB73, + 3080: 0xBB74, + 3081: 0xBB75, + 3082: 0xBB76, + 3083: 0xBB77, + 3084: 0xBB78, + 3085: 0xBB79, + 3086: 0xBB7A, + 3087: 0xBB7B, + 3088: 0xBB7C, + 3089: 0xBB7D, + 3090: 0xBB7E, + 3091: 0xBB7F, + 3092: 0xBB80, + 3093: 0xBB81, + 3094: 0xBB82, + 3095: 0xBB83, + 3096: 0xBB84, + 3097: 0xBB85, + 3098: 0xBB86, + 3099: 0xBB87, + 3100: 0xBB89, + 3101: 0xBB8A, + 3102: 0xBB8B, + 3103: 0xBB8D, + 3104: 0xBB8E, + 3105: 0xBB8F, + 3106: 0xBB91, + 3107: 0xBB92, + 3108: 0xBB93, + 3109: 0xBB94, + 3110: 0xBB95, + 3111: 0xBB96, + 3112: 0xBB97, + 3113: 0xBB98, + 3114: 0xBB99, + 3115: 0xBB9A, + 3116: 0xBB9B, + 3117: 0xBB9C, + 3118: 0xBB9D, + 3119: 0xBB9E, + 3120: 0xBB9F, + 3121: 0xBBA0, + 3122: 0xBBA1, + 3123: 0xBBA2, + 3124: 0xBBA3, + 3125: 0xBBA5, + 3126: 0xBBA6, + 3127: 0xBBA7, + 3128: 0xBBA9, + 3129: 0xBBAA, + 3130: 0xBBAB, + 3131: 0xBBAD, + 3132: 0xBBAE, + 3133: 0xBBAF, + 3134: 0xBBB0, + 3135: 0xBBB1, + 3136: 0xBBB2, + 3137: 0xBBB3, + 3138: 0xBBB5, + 3139: 0xBBB6, + 3140: 0xBBB8, + 3141: 0xBBB9, + 3142: 0xBBBA, + 3143: 0xBBBB, + 3144: 0xBBBC, + 3145: 0xBBBD, + 3146: 0xBBBE, + 3147: 0xBBBF, + 3148: 0xBBC1, + 3149: 0xBBC2, + 3150: 0xBBC3, + 3151: 0xBBC5, + 3152: 0xBBC6, + 3153: 0xBBC7, + 3154: 0xBBC9, + 3155: 0xBBCA, + 3156: 0xBBCB, + 3157: 0xBBCC, + 3158: 0xBBCD, + 3159: 0xBBCE, + 3160: 0xBBCF, + 3161: 0xBBD1, + 3162: 0xBBD2, + 3163: 0xBBD4, + 3164: 0xBBD5, + 3165: 0xBBD6, + 3166: 0xBBD7, + 3167: 0xBBD8, + 3168: 0xBBD9, + 3169: 0xBBDA, + 3170: 0xBBDB, + 3171: 0xBBDC, + 3172: 0xBBDD, + 3173: 0xBBDE, + 3174: 0xBBDF, + 3175: 0xBBE0, + 3176: 0xBBE1, + 3177: 0xBBE2, + 3178: 0xBBE3, + 3179: 0xBBE4, + 3180: 0xBBE5, + 3181: 0xBBE6, + 3182: 0xBBE7, + 3183: 0xBBE8, + 3184: 0xBBE9, + 3185: 0xBBEA, + 3186: 0xBBEB, + 3187: 0xBBEC, + 3188: 0xBBED, + 3189: 0xBBEE, + 3190: 0xBBEF, + 3191: 0xBBF0, + 3192: 0xBBF1, + 3193: 0xBBF2, + 3194: 0xBBF3, + 3195: 0xBBF4, + 3196: 0xBBF5, + 3197: 0xBBF6, + 3198: 0xBBF7, + 3199: 0xBBFA, + 3200: 0xBBFB, + 3201: 0xBBFD, + 3202: 0xBBFE, + 3203: 0xBC01, + 3204: 0xBC03, + 3205: 0xBC04, + 3206: 0xBC05, + 3207: 0xBC06, + 3208: 0xBC07, + 3209: 0xBC0A, + 3210: 0xBC0E, + 3211: 0xBC10, + 3212: 0xBC12, + 3213: 0xBC13, + 3214: 0xBC19, + 3215: 0xBC1A, + 3216: 0xBC20, + 3217: 0xBC21, + 3218: 0xBC22, + 3219: 0xBC23, + 3220: 0xBC26, + 3221: 0xBC28, + 3222: 0xBC2A, + 3223: 0xBC2B, + 3224: 0xBC2C, + 3225: 0xBC2E, + 3226: 0xBC2F, + 3227: 0xBC32, + 3228: 0xBC33, + 3229: 0xBC35, + 3230: 0xBC36, + 3231: 0xBC37, + 3232: 0xBC39, + 3233: 0xBC3A, + 3234: 0xBC3B, + 3235: 0xBC3C, + 3236: 0xBC3D, + 3237: 0xBC3E, + 3238: 0xBC3F, + 3239: 0xBC42, + 3240: 0xBC46, + 3241: 0xBC47, + 3242: 0xBC48, + 3243: 0xBC4A, + 3244: 0xBC4B, + 3245: 0xBC4E, + 3246: 0xBC4F, + 3247: 0xBC51, + 3248: 0xBC52, + 3249: 0xBC53, + 3250: 0xBC54, + 3251: 0xBC55, + 3252: 0xBC56, + 3253: 0xBC57, + 3254: 0xBC58, + 3255: 0xBC59, + 3256: 0xBC5A, + 3257: 0xBC5B, + 3258: 0xBC5C, + 3259: 0xBC5E, + 3260: 0xBC5F, + 3261: 0xBC60, + 3262: 0xBC61, + 3263: 0xBC62, + 3264: 0xBC63, + 3265: 0xBC64, + 3266: 0xBC65, + 3267: 0xBC66, + 3268: 0xBC67, + 3269: 0xBC68, + 3270: 0xBC69, + 3271: 0xBC6A, + 3272: 0xBC6B, + 3273: 0xBC6C, + 3274: 0xBC6D, + 3275: 0xBC6E, + 3276: 0xBC6F, + 3277: 0xBC70, + 3278: 0xBC71, + 3279: 0xBC72, + 3280: 0xBC73, + 3281: 0xBC74, + 3282: 0xBC75, + 3283: 0xBC76, + 3284: 0xBC77, + 3285: 0xBC78, + 3286: 0xBC79, + 3287: 0xBC7A, + 3288: 0xBC7B, + 3289: 0xBC7C, + 3290: 0xBC7D, + 3291: 0xBC7E, + 3292: 0xBC7F, + 3293: 0xBC80, + 3294: 0xBC81, + 3295: 0xBC82, + 3296: 0xBC83, + 3297: 0xBC86, + 3298: 0xBC87, + 3299: 0xBC89, + 3300: 0xBC8A, + 3301: 0xBC8D, + 3302: 0xBC8F, + 3303: 0xBC90, + 3304: 0xBC91, + 3305: 0xBC92, + 3306: 0xBC93, + 3307: 0xBC96, + 3308: 0xBC98, + 3309: 0xBC9B, + 3310: 0xBC9C, + 3311: 0xBC9D, + 3312: 0xBC9E, + 3313: 0xBC9F, + 3314: 0xBCA2, + 3315: 0xBCA3, + 3316: 0xBCA5, + 3317: 0xBCA6, + 3318: 0xBCA9, + 3319: 0xBCAA, + 3320: 0xBCAB, + 3321: 0xBCAC, + 3322: 0xBCAD, + 3323: 0xBCAE, + 3324: 0xBCAF, + 3325: 0xBCB2, + 3326: 0xBCB6, + 3327: 0xBCB7, + 3328: 0xBCB8, + 3329: 0xBCB9, + 3330: 0xBCBA, + 3331: 0xBCBB, + 3332: 0xBCBE, + 3333: 0xBCBF, + 3334: 0xBCC1, + 3335: 0xBCC2, + 3336: 0xBCC3, + 3337: 0xBCC5, + 3338: 0xBCC6, + 3339: 0xBCC7, + 3340: 0xBCC8, + 3341: 0xBCC9, + 3342: 0xBCCA, + 3343: 0xBCCB, + 3344: 0xBCCC, + 3345: 0xBCCE, + 3346: 0xBCD2, + 3347: 0xBCD3, + 3348: 0xBCD4, + 3349: 0xBCD6, + 3350: 0xBCD7, + 3351: 0xBCD9, + 3352: 0xBCDA, + 3353: 0xBCDB, + 3354: 0xBCDD, + 3355: 0xBCDE, + 3356: 0xBCDF, + 3357: 0xBCE0, + 3358: 0xBCE1, + 3359: 0xBCE2, + 3360: 0xBCE3, + 3361: 0xBCE4, + 3362: 0xBCE5, + 3363: 0xBCE6, + 3364: 0xBCE7, + 3365: 0xBCE8, + 3366: 0xBCE9, + 3367: 0xBCEA, + 3368: 0xBCEB, + 3369: 0xBCEC, + 3370: 0xBCED, + 3371: 0xBCEE, + 3372: 0xBCEF, + 3373: 0xBCF0, + 3374: 0xBCF1, + 3375: 0xBCF2, + 3376: 0xBCF3, + 3377: 0xBCF7, + 3378: 0xBCF9, + 3379: 0xBCFA, + 3380: 0xBCFB, + 3381: 0xBCFD, + 3382: 0xBCFE, + 3383: 0xBCFF, + 3384: 0xBD00, + 3385: 0xBD01, + 3386: 0xBD02, + 3387: 0xBD03, + 3388: 0xBD06, + 3389: 0xBD08, + 3390: 0xBD0A, + 3391: 0xBD0B, + 3392: 0xBD0C, + 3393: 0xBD0D, + 3394: 0xBD0E, + 3395: 0xBD0F, + 3396: 0xBD11, + 3397: 0xBD12, + 3398: 0xBD13, + 3399: 0xBD15, + 3400: 0xBD16, + 3401: 0xBD17, + 3402: 0xBD18, + 3403: 0xBD19, + 3404: 0xBD1A, + 3405: 0xBD1B, + 3406: 0xBD1C, + 3407: 0xBD1D, + 3408: 0xBD1E, + 3409: 0xBD1F, + 3410: 0xBD20, + 3411: 0xBD21, + 3412: 0xBD22, + 3413: 0xBD23, + 3414: 0xBD25, + 3415: 0xBD26, + 3416: 0xBD27, + 3417: 0xBD28, + 3418: 0xBD29, + 3419: 0xBD2A, + 3420: 0xBD2B, + 3421: 0xBD2D, + 3422: 0xBD2E, + 3423: 0xBD2F, + 3424: 0xBD30, + 3425: 0xBD31, + 3426: 0xBD32, + 3427: 0xBD33, + 3428: 0xBD34, + 3429: 0xBD35, + 3430: 0xBD36, + 3431: 0xBD37, + 3432: 0xBD38, + 3433: 0xBD39, + 3434: 0xBD3A, + 3435: 0xBD3B, + 3436: 0xBD3C, + 3437: 0xBD3D, + 3438: 0xBD3E, + 3439: 0xBD3F, + 3440: 0xBD41, + 3441: 0xBD42, + 3442: 0xBD43, + 3443: 0xBD44, + 3444: 0xBD45, + 3445: 0xBD46, + 3446: 0xBD47, + 3447: 0xBD4A, + 3448: 0xBD4B, + 3449: 0xBD4D, + 3450: 0xBD4E, + 3451: 0xBD4F, + 3452: 0xBD51, + 3453: 0xBD52, + 3454: 0xBD53, + 3455: 0xBD54, + 3456: 0xBD55, + 3457: 0xBD56, + 3458: 0xBD57, + 3459: 0xBD5A, + 3460: 0xBD5B, + 3461: 0xBD5C, + 3462: 0xBD5D, + 3463: 0xBD5E, + 3464: 0xBD5F, + 3465: 0xBD60, + 3466: 0xBD61, + 3467: 0xBD62, + 3468: 0xBD63, + 3469: 0xBD65, + 3470: 0xBD66, + 3471: 0xBD67, + 3472: 0xBD69, + 3473: 0xBD6A, + 3474: 0xBD6B, + 3475: 0xBD6C, + 3476: 0xBD6D, + 3477: 0xBD6E, + 3478: 0xBD6F, + 3479: 0xBD70, + 3480: 0xBD71, + 3481: 0xBD72, + 3482: 0xBD73, + 3483: 0xBD74, + 3484: 0xBD75, + 3485: 0xBD76, + 3486: 0xBD77, + 3487: 0xBD78, + 3488: 0xBD79, + 3489: 0xBD7A, + 3490: 0xBD7B, + 3491: 0xBD7C, + 3492: 0xBD7D, + 3493: 0xBD7E, + 3494: 0xBD7F, + 3495: 0xBD82, + 3496: 0xBD83, + 3497: 0xBD85, + 3498: 0xBD86, + 3499: 0xBD8B, + 3500: 0xBD8C, + 3501: 0xBD8D, + 3502: 0xBD8E, + 3503: 0xBD8F, + 3504: 0xBD92, + 3505: 0xBD94, + 3506: 0xBD96, + 3507: 0xBD97, + 3508: 0xBD98, + 3509: 0xBD9B, + 3510: 0xBD9D, + 3511: 0xBD9E, + 3512: 0xBD9F, + 3513: 0xBDA0, + 3514: 0xBDA1, + 3515: 0xBDA2, + 3516: 0xBDA3, + 3517: 0xBDA5, + 3518: 0xBDA6, + 3519: 0xBDA7, + 3520: 0xBDA8, + 3521: 0xBDA9, + 3522: 0xBDAA, + 3523: 0xBDAB, + 3524: 0xBDAC, + 3525: 0xBDAD, + 3526: 0xBDAE, + 3527: 0xBDAF, + 3528: 0xBDB1, + 3529: 0xBDB2, + 3530: 0xBDB3, + 3531: 0xBDB4, + 3532: 0xBDB5, + 3533: 0xBDB6, + 3534: 0xBDB7, + 3535: 0xBDB9, + 3536: 0xBDBA, + 3537: 0xBDBB, + 3538: 0xBDBC, + 3539: 0xBDBD, + 3540: 0xBDBE, + 3541: 0xBDBF, + 3542: 0xBDC0, + 3543: 0xBDC1, + 3544: 0xBDC2, + 3545: 0xBDC3, + 3546: 0xBDC4, + 3547: 0xBDC5, + 3548: 0xBDC6, + 3549: 0xBDC7, + 3550: 0xBDC8, + 3551: 0xBDC9, + 3552: 0xBDCA, + 3553: 0xBDCB, + 3554: 0xBDCC, + 3555: 0xBDCD, + 3556: 0xBDCE, + 3557: 0xBDCF, + 3558: 0xBDD0, + 3559: 0xBDD1, + 3560: 0xBDD2, + 3561: 0xBDD3, + 3562: 0xBDD6, + 3563: 0xBDD7, + 3564: 0xBDD9, + 3565: 0xBDDA, + 3566: 0xBDDB, + 3567: 0xBDDD, + 3568: 0xBDDE, + 3569: 0xBDDF, + 3570: 0xBDE0, + 3571: 0xBDE1, + 3572: 0xBDE2, + 3573: 0xBDE3, + 3574: 0xBDE4, + 3575: 0xBDE5, + 3576: 0xBDE6, + 3577: 0xBDE7, + 3578: 0xBDE8, + 3579: 0xBDEA, + 3580: 0xBDEB, + 3581: 0xBDEC, + 3582: 0xBDED, + 3583: 0xBDEE, + 3584: 0xBDEF, + 3585: 0xBDF1, + 3586: 0xBDF2, + 3587: 0xBDF3, + 3588: 0xBDF5, + 3589: 0xBDF6, + 3590: 0xBDF7, + 3591: 0xBDF9, + 3592: 0xBDFA, + 3593: 0xBDFB, + 3594: 0xBDFC, + 3595: 0xBDFD, + 3596: 0xBDFE, + 3597: 0xBDFF, + 3598: 0xBE01, + 3599: 0xBE02, + 3600: 0xBE04, + 3601: 0xBE06, + 3602: 0xBE07, + 3603: 0xBE08, + 3604: 0xBE09, + 3605: 0xBE0A, + 3606: 0xBE0B, + 3607: 0xBE0E, + 3608: 0xBE0F, + 3609: 0xBE11, + 3610: 0xBE12, + 3611: 0xBE13, + 3612: 0xBE15, + 3613: 0xBE16, + 3614: 0xBE17, + 3615: 0xBE18, + 3616: 0xBE19, + 3617: 0xBE1A, + 3618: 0xBE1B, + 3619: 0xBE1E, + 3620: 0xBE20, + 3621: 0xBE21, + 3622: 0xBE22, + 3623: 0xBE23, + 3624: 0xBE24, + 3625: 0xBE25, + 3626: 0xBE26, + 3627: 0xBE27, + 3628: 0xBE28, + 3629: 0xBE29, + 3630: 0xBE2A, + 3631: 0xBE2B, + 3632: 0xBE2C, + 3633: 0xBE2D, + 3634: 0xBE2E, + 3635: 0xBE2F, + 3636: 0xBE30, + 3637: 0xBE31, + 3638: 0xBE32, + 3639: 0xBE33, + 3640: 0xBE34, + 3641: 0xBE35, + 3642: 0xBE36, + 3643: 0xBE37, + 3644: 0xBE38, + 3645: 0xBE39, + 3646: 0xBE3A, + 3647: 0xBE3B, + 3648: 0xBE3C, + 3649: 0xBE3D, + 3650: 0xBE3E, + 3651: 0xBE3F, + 3652: 0xBE40, + 3653: 0xBE41, + 3654: 0xBE42, + 3655: 0xBE43, + 3656: 0xBE46, + 3657: 0xBE47, + 3658: 0xBE49, + 3659: 0xBE4A, + 3660: 0xBE4B, + 3661: 0xBE4D, + 3662: 0xBE4F, + 3663: 0xBE50, + 3664: 0xBE51, + 3665: 0xBE52, + 3666: 0xBE53, + 3667: 0xBE56, + 3668: 0xBE58, + 3669: 0xBE5C, + 3670: 0xBE5D, + 3671: 0xBE5E, + 3672: 0xBE5F, + 3673: 0xBE62, + 3674: 0xBE63, + 3675: 0xBE65, + 3676: 0xBE66, + 3677: 0xBE67, + 3678: 0xBE69, + 3679: 0xBE6B, + 3680: 0xBE6C, + 3681: 0xBE6D, + 3682: 0xBE6E, + 3683: 0xBE6F, + 3684: 0xBE72, + 3685: 0xBE76, + 3686: 0xBE77, + 3687: 0xBE78, + 3688: 0xBE79, + 3689: 0xBE7A, + 3690: 0xBE7E, + 3691: 0xBE7F, + 3692: 0xBE81, + 3693: 0xBE82, + 3694: 0xBE83, + 3695: 0xBE85, + 3696: 0xBE86, + 3697: 0xBE87, + 3698: 0xBE88, + 3699: 0xBE89, + 3700: 0xBE8A, + 3701: 0xBE8B, + 3702: 0xBE8E, + 3703: 0xBE92, + 3704: 0xBE93, + 3705: 0xBE94, + 3706: 0xBE95, + 3707: 0xBE96, + 3708: 0xBE97, + 3709: 0xBE9A, + 3710: 0xBE9B, + 3711: 0xBE9C, + 3712: 0xBE9D, + 3713: 0xBE9E, + 3714: 0xBE9F, + 3715: 0xBEA0, + 3716: 0xBEA1, + 3717: 0xBEA2, + 3718: 0xBEA3, + 3719: 0xBEA4, + 3720: 0xBEA5, + 3721: 0xBEA6, + 3722: 0xBEA7, + 3723: 0xBEA9, + 3724: 0xBEAA, + 3725: 0xBEAB, + 3726: 0xBEAC, + 3727: 0xBEAD, + 3728: 0xBEAE, + 3729: 0xBEAF, + 3730: 0xBEB0, + 3731: 0xBEB1, + 3732: 0xBEB2, + 3733: 0xBEB3, + 3734: 0xBEB4, + 3735: 0xBEB5, + 3736: 0xBEB6, + 3737: 0xBEB7, + 3738: 0xBEB8, + 3739: 0xBEB9, + 3740: 0xBEBA, + 3741: 0xBEBB, + 3742: 0xBEBC, + 3743: 0xBEBD, + 3744: 0xBEBE, + 3745: 0xBEBF, + 3746: 0xBEC0, + 3747: 0xBEC1, + 3748: 0xBEC2, + 3749: 0xBEC3, + 3750: 0xBEC4, + 3751: 0xBEC5, + 3752: 0xBEC6, + 3753: 0xBEC7, + 3754: 0xBEC8, + 3755: 0xBEC9, + 3756: 0xBECA, + 3757: 0xBECB, + 3758: 0xBECC, + 3759: 0xBECD, + 3760: 0xBECE, + 3761: 0xBECF, + 3762: 0xBED2, + 3763: 0xBED3, + 3764: 0xBED5, + 3765: 0xBED6, + 3766: 0xBED9, + 3767: 0xBEDA, + 3768: 0xBEDB, + 3769: 0xBEDC, + 3770: 0xBEDD, + 3771: 0xBEDE, + 3772: 0xBEDF, + 3773: 0xBEE1, + 3774: 0xBEE2, + 3775: 0xBEE6, + 3776: 0xBEE7, + 3777: 0xBEE8, + 3778: 0xBEE9, + 3779: 0xBEEA, + 3780: 0xBEEB, + 3781: 0xBEED, + 3782: 0xBEEE, + 3783: 0xBEEF, + 3784: 0xBEF0, + 3785: 0xBEF1, + 3786: 0xBEF2, + 3787: 0xBEF3, + 3788: 0xBEF4, + 3789: 0xBEF5, + 3790: 0xBEF6, + 3791: 0xBEF7, + 3792: 0xBEF8, + 3793: 0xBEF9, + 3794: 0xBEFA, + 3795: 0xBEFB, + 3796: 0xBEFC, + 3797: 0xBEFD, + 3798: 0xBEFE, + 3799: 0xBEFF, + 3800: 0xBF00, + 3801: 0xBF02, + 3802: 0xBF03, + 3803: 0xBF04, + 3804: 0xBF05, + 3805: 0xBF06, + 3806: 0xBF07, + 3807: 0xBF0A, + 3808: 0xBF0B, + 3809: 0xBF0C, + 3810: 0xBF0D, + 3811: 0xBF0E, + 3812: 0xBF0F, + 3813: 0xBF10, + 3814: 0xBF11, + 3815: 0xBF12, + 3816: 0xBF13, + 3817: 0xBF14, + 3818: 0xBF15, + 3819: 0xBF16, + 3820: 0xBF17, + 3821: 0xBF1A, + 3822: 0xBF1E, + 3823: 0xBF1F, + 3824: 0xBF20, + 3825: 0xBF21, + 3826: 0xBF22, + 3827: 0xBF23, + 3828: 0xBF24, + 3829: 0xBF25, + 3830: 0xBF26, + 3831: 0xBF27, + 3832: 0xBF28, + 3833: 0xBF29, + 3834: 0xBF2A, + 3835: 0xBF2B, + 3836: 0xBF2C, + 3837: 0xBF2D, + 3838: 0xBF2E, + 3839: 0xBF2F, + 3840: 0xBF30, + 3841: 0xBF31, + 3842: 0xBF32, + 3843: 0xBF33, + 3844: 0xBF34, + 3845: 0xBF35, + 3846: 0xBF36, + 3847: 0xBF37, + 3848: 0xBF38, + 3849: 0xBF39, + 3850: 0xBF3A, + 3851: 0xBF3B, + 3852: 0xBF3C, + 3853: 0xBF3D, + 3854: 0xBF3E, + 3855: 0xBF3F, + 3856: 0xBF42, + 3857: 0xBF43, + 3858: 0xBF45, + 3859: 0xBF46, + 3860: 0xBF47, + 3861: 0xBF49, + 3862: 0xBF4A, + 3863: 0xBF4B, + 3864: 0xBF4C, + 3865: 0xBF4D, + 3866: 0xBF4E, + 3867: 0xBF4F, + 3868: 0xBF52, + 3869: 0xBF53, + 3870: 0xBF54, + 3871: 0xBF56, + 3872: 0xBF57, + 3873: 0xBF58, + 3874: 0xBF59, + 3875: 0xBF5A, + 3876: 0xBF5B, + 3877: 0xBF5C, + 3878: 0xBF5D, + 3879: 0xBF5E, + 3880: 0xBF5F, + 3881: 0xBF60, + 3882: 0xBF61, + 3883: 0xBF62, + 3884: 0xBF63, + 3885: 0xBF64, + 3886: 0xBF65, + 3887: 0xBF66, + 3888: 0xBF67, + 3889: 0xBF68, + 3890: 0xBF69, + 3891: 0xBF6A, + 3892: 0xBF6B, + 3893: 0xBF6C, + 3894: 0xBF6D, + 3895: 0xBF6E, + 3896: 0xBF6F, + 3897: 0xBF70, + 3898: 0xBF71, + 3899: 0xBF72, + 3900: 0xBF73, + 3901: 0xBF74, + 3902: 0xBF75, + 3903: 0xBF76, + 3904: 0xBF77, + 3905: 0xBF78, + 3906: 0xBF79, + 3907: 0xBF7A, + 3908: 0xBF7B, + 3909: 0xBF7C, + 3910: 0xBF7D, + 3911: 0xBF7E, + 3912: 0xBF7F, + 3913: 0xBF80, + 3914: 0xBF81, + 3915: 0xBF82, + 3916: 0xBF83, + 3917: 0xBF84, + 3918: 0xBF85, + 3919: 0xBF86, + 3920: 0xBF87, + 3921: 0xBF88, + 3922: 0xBF89, + 3923: 0xBF8A, + 3924: 0xBF8B, + 3925: 0xBF8C, + 3926: 0xBF8D, + 3927: 0xBF8E, + 3928: 0xBF8F, + 3929: 0xBF90, + 3930: 0xBF91, + 3931: 0xBF92, + 3932: 0xBF93, + 3933: 0xBF95, + 3934: 0xBF96, + 3935: 0xBF97, + 3936: 0xBF98, + 3937: 0xBF99, + 3938: 0xBF9A, + 3939: 0xBF9B, + 3940: 0xBF9C, + 3941: 0xBF9D, + 3942: 0xBF9E, + 3943: 0xBF9F, + 3944: 0xBFA0, + 3945: 0xBFA1, + 3946: 0xBFA2, + 3947: 0xBFA3, + 3948: 0xBFA4, + 3949: 0xBFA5, + 3950: 0xBFA6, + 3951: 0xBFA7, + 3952: 0xBFA8, + 3953: 0xBFA9, + 3954: 0xBFAA, + 3955: 0xBFAB, + 3956: 0xBFAC, + 3957: 0xBFAD, + 3958: 0xBFAE, + 3959: 0xBFAF, + 3960: 0xBFB1, + 3961: 0xBFB2, + 3962: 0xBFB3, + 3963: 0xBFB4, + 3964: 0xBFB5, + 3965: 0xBFB6, + 3966: 0xBFB7, + 3967: 0xBFB8, + 3968: 0xBFB9, + 3969: 0xBFBA, + 3970: 0xBFBB, + 3971: 0xBFBC, + 3972: 0xBFBD, + 3973: 0xBFBE, + 3974: 0xBFBF, + 3975: 0xBFC0, + 3976: 0xBFC1, + 3977: 0xBFC2, + 3978: 0xBFC3, + 3979: 0xBFC4, + 3980: 0xBFC6, + 3981: 0xBFC7, + 3982: 0xBFC8, + 3983: 0xBFC9, + 3984: 0xBFCA, + 3985: 0xBFCB, + 3986: 0xBFCE, + 3987: 0xBFCF, + 3988: 0xBFD1, + 3989: 0xBFD2, + 3990: 0xBFD3, + 3991: 0xBFD5, + 3992: 0xBFD6, + 3993: 0xBFD7, + 3994: 0xBFD8, + 3995: 0xBFD9, + 3996: 0xBFDA, + 3997: 0xBFDB, + 3998: 0xBFDD, + 3999: 0xBFDE, + 4000: 0xBFE0, + 4001: 0xBFE2, + 4002: 0xBFE3, + 4003: 0xBFE4, + 4004: 0xBFE5, + 4005: 0xBFE6, + 4006: 0xBFE7, + 4007: 0xBFE8, + 4008: 0xBFE9, + 4009: 0xBFEA, + 4010: 0xBFEB, + 4011: 0xBFEC, + 4012: 0xBFED, + 4013: 0xBFEE, + 4014: 0xBFEF, + 4015: 0xBFF0, + 4016: 0xBFF1, + 4017: 0xBFF2, + 4018: 0xBFF3, + 4019: 0xBFF4, + 4020: 0xBFF5, + 4021: 0xBFF6, + 4022: 0xBFF7, + 4023: 0xBFF8, + 4024: 0xBFF9, + 4025: 0xBFFA, + 4026: 0xBFFB, + 4027: 0xBFFC, + 4028: 0xBFFD, + 4029: 0xBFFE, + 4030: 0xBFFF, + 4031: 0xC000, + 4032: 0xC001, + 4033: 0xC002, + 4034: 0xC003, + 4035: 0xC004, + 4036: 0xC005, + 4037: 0xC006, + 4038: 0xC007, + 4039: 0xC008, + 4040: 0xC009, + 4041: 0xC00A, + 4042: 0xC00B, + 4043: 0xC00C, + 4044: 0xC00D, + 4045: 0xC00E, + 4046: 0xC00F, + 4047: 0xC010, + 4048: 0xC011, + 4049: 0xC012, + 4050: 0xC013, + 4051: 0xC014, + 4052: 0xC015, + 4053: 0xC016, + 4054: 0xC017, + 4055: 0xC018, + 4056: 0xC019, + 4057: 0xC01A, + 4058: 0xC01B, + 4059: 0xC01C, + 4060: 0xC01D, + 4061: 0xC01E, + 4062: 0xC01F, + 4063: 0xC020, + 4064: 0xC021, + 4065: 0xC022, + 4066: 0xC023, + 4067: 0xC024, + 4068: 0xC025, + 4069: 0xC026, + 4070: 0xC027, + 4071: 0xC028, + 4072: 0xC029, + 4073: 0xC02A, + 4074: 0xC02B, + 4075: 0xC02C, + 4076: 0xC02D, + 4077: 0xC02E, + 4078: 0xC02F, + 4079: 0xC030, + 4080: 0xC031, + 4081: 0xC032, + 4082: 0xC033, + 4083: 0xC034, + 4084: 0xC035, + 4085: 0xC036, + 4086: 0xC037, + 4087: 0xC038, + 4088: 0xC039, + 4089: 0xC03A, + 4090: 0xC03B, + 4091: 0xC03D, + 4092: 0xC03E, + 4093: 0xC03F, + 4094: 0xC040, + 4095: 0xC041, + 4096: 0xC042, + 4097: 0xC043, + 4098: 0xC044, + 4099: 0xC045, + 4100: 0xC046, + 4101: 0xC047, + 4102: 0xC048, + 4103: 0xC049, + 4104: 0xC04A, + 4105: 0xC04B, + 4106: 0xC04C, + 4107: 0xC04D, + 4108: 0xC04E, + 4109: 0xC04F, + 4110: 0xC050, + 4111: 0xC052, + 4112: 0xC053, + 4113: 0xC054, + 4114: 0xC055, + 4115: 0xC056, + 4116: 0xC057, + 4117: 0xC059, + 4118: 0xC05A, + 4119: 0xC05B, + 4120: 0xC05D, + 4121: 0xC05E, + 4122: 0xC05F, + 4123: 0xC061, + 4124: 0xC062, + 4125: 0xC063, + 4126: 0xC064, + 4127: 0xC065, + 4128: 0xC066, + 4129: 0xC067, + 4130: 0xC06A, + 4131: 0xC06B, + 4132: 0xC06C, + 4133: 0xC06D, + 4134: 0xC06E, + 4135: 0xC06F, + 4136: 0xC070, + 4137: 0xC071, + 4138: 0xC072, + 4139: 0xC073, + 4140: 0xC074, + 4141: 0xC075, + 4142: 0xC076, + 4143: 0xC077, + 4144: 0xC078, + 4145: 0xC079, + 4146: 0xC07A, + 4147: 0xC07B, + 4148: 0xC07C, + 4149: 0xC07D, + 4150: 0xC07E, + 4151: 0xC07F, + 4152: 0xC080, + 4153: 0xC081, + 4154: 0xC082, + 4155: 0xC083, + 4156: 0xC084, + 4157: 0xC085, + 4158: 0xC086, + 4159: 0xC087, + 4160: 0xC088, + 4161: 0xC089, + 4162: 0xC08A, + 4163: 0xC08B, + 4164: 0xC08C, + 4165: 0xC08D, + 4166: 0xC08E, + 4167: 0xC08F, + 4168: 0xC092, + 4169: 0xC093, + 4170: 0xC095, + 4171: 0xC096, + 4172: 0xC097, + 4173: 0xC099, + 4174: 0xC09A, + 4175: 0xC09B, + 4176: 0xC09C, + 4177: 0xC09D, + 4178: 0xC09E, + 4179: 0xC09F, + 4180: 0xC0A2, + 4181: 0xC0A4, + 4182: 0xC0A6, + 4183: 0xC0A7, + 4184: 0xC0A8, + 4185: 0xC0A9, + 4186: 0xC0AA, + 4187: 0xC0AB, + 4188: 0xC0AE, + 4189: 0xC0B1, + 4190: 0xC0B2, + 4191: 0xC0B7, + 4192: 0xC0B8, + 4193: 0xC0B9, + 4194: 0xC0BA, + 4195: 0xC0BB, + 4196: 0xC0BE, + 4197: 0xC0C2, + 4198: 0xC0C3, + 4199: 0xC0C4, + 4200: 0xC0C6, + 4201: 0xC0C7, + 4202: 0xC0CA, + 4203: 0xC0CB, + 4204: 0xC0CD, + 4205: 0xC0CE, + 4206: 0xC0CF, + 4207: 0xC0D1, + 4208: 0xC0D2, + 4209: 0xC0D3, + 4210: 0xC0D4, + 4211: 0xC0D5, + 4212: 0xC0D6, + 4213: 0xC0D7, + 4214: 0xC0DA, + 4215: 0xC0DE, + 4216: 0xC0DF, + 4217: 0xC0E0, + 4218: 0xC0E1, + 4219: 0xC0E2, + 4220: 0xC0E3, + 4221: 0xC0E6, + 4222: 0xC0E7, + 4223: 0xC0E9, + 4224: 0xC0EA, + 4225: 0xC0EB, + 4226: 0xC0ED, + 4227: 0xC0EE, + 4228: 0xC0EF, + 4229: 0xC0F0, + 4230: 0xC0F1, + 4231: 0xC0F2, + 4232: 0xC0F3, + 4233: 0xC0F6, + 4234: 0xC0F8, + 4235: 0xC0FA, + 4236: 0xC0FB, + 4237: 0xC0FC, + 4238: 0xC0FD, + 4239: 0xC0FE, + 4240: 0xC0FF, + 4241: 0xC101, + 4242: 0xC102, + 4243: 0xC103, + 4244: 0xC105, + 4245: 0xC106, + 4246: 0xC107, + 4247: 0xC109, + 4248: 0xC10A, + 4249: 0xC10B, + 4250: 0xC10C, + 4251: 0xC10D, + 4252: 0xC10E, + 4253: 0xC10F, + 4254: 0xC111, + 4255: 0xC112, + 4256: 0xC113, + 4257: 0xC114, + 4258: 0xC116, + 4259: 0xC117, + 4260: 0xC118, + 4261: 0xC119, + 4262: 0xC11A, + 4263: 0xC11B, + 4264: 0xC121, + 4265: 0xC122, + 4266: 0xC125, + 4267: 0xC128, + 4268: 0xC129, + 4269: 0xC12A, + 4270: 0xC12B, + 4271: 0xC12E, + 4272: 0xC132, + 4273: 0xC133, + 4274: 0xC134, + 4275: 0xC135, + 4276: 0xC137, + 4277: 0xC13A, + 4278: 0xC13B, + 4279: 0xC13D, + 4280: 0xC13E, + 4281: 0xC13F, + 4282: 0xC141, + 4283: 0xC142, + 4284: 0xC143, + 4285: 0xC144, + 4286: 0xC145, + 4287: 0xC146, + 4288: 0xC147, + 4289: 0xC14A, + 4290: 0xC14E, + 4291: 0xC14F, + 4292: 0xC150, + 4293: 0xC151, + 4294: 0xC152, + 4295: 0xC153, + 4296: 0xC156, + 4297: 0xC157, + 4298: 0xC159, + 4299: 0xC15A, + 4300: 0xC15B, + 4301: 0xC15D, + 4302: 0xC15E, + 4303: 0xC15F, + 4304: 0xC160, + 4305: 0xC161, + 4306: 0xC162, + 4307: 0xC163, + 4308: 0xC166, + 4309: 0xC16A, + 4310: 0xC16B, + 4311: 0xC16C, + 4312: 0xC16D, + 4313: 0xC16E, + 4314: 0xC16F, + 4315: 0xC171, + 4316: 0xC172, + 4317: 0xC173, + 4318: 0xC175, + 4319: 0xC176, + 4320: 0xC177, + 4321: 0xC179, + 4322: 0xC17A, + 4323: 0xC17B, + 4324: 0xC17C, + 4325: 0xC17D, + 4326: 0xC17E, + 4327: 0xC17F, + 4328: 0xC180, + 4329: 0xC181, + 4330: 0xC182, + 4331: 0xC183, + 4332: 0xC184, + 4333: 0xC186, + 4334: 0xC187, + 4335: 0xC188, + 4336: 0xC189, + 4337: 0xC18A, + 4338: 0xC18B, + 4339: 0xC18F, + 4340: 0xC191, + 4341: 0xC192, + 4342: 0xC193, + 4343: 0xC195, + 4344: 0xC197, + 4345: 0xC198, + 4346: 0xC199, + 4347: 0xC19A, + 4348: 0xC19B, + 4349: 0xC19E, + 4350: 0xC1A0, + 4351: 0xC1A2, + 4352: 0xC1A3, + 4353: 0xC1A4, + 4354: 0xC1A6, + 4355: 0xC1A7, + 4356: 0xC1AA, + 4357: 0xC1AB, + 4358: 0xC1AD, + 4359: 0xC1AE, + 4360: 0xC1AF, + 4361: 0xC1B1, + 4362: 0xC1B2, + 4363: 0xC1B3, + 4364: 0xC1B4, + 4365: 0xC1B5, + 4366: 0xC1B6, + 4367: 0xC1B7, + 4368: 0xC1B8, + 4369: 0xC1B9, + 4370: 0xC1BA, + 4371: 0xC1BB, + 4372: 0xC1BC, + 4373: 0xC1BE, + 4374: 0xC1BF, + 4375: 0xC1C0, + 4376: 0xC1C1, + 4377: 0xC1C2, + 4378: 0xC1C3, + 4379: 0xC1C5, + 4380: 0xC1C6, + 4381: 0xC1C7, + 4382: 0xC1C9, + 4383: 0xC1CA, + 4384: 0xC1CB, + 4385: 0xC1CD, + 4386: 0xC1CE, + 4387: 0xC1CF, + 4388: 0xC1D0, + 4389: 0xC1D1, + 4390: 0xC1D2, + 4391: 0xC1D3, + 4392: 0xC1D5, + 4393: 0xC1D6, + 4394: 0xC1D9, + 4395: 0xC1DA, + 4396: 0xC1DB, + 4397: 0xC1DC, + 4398: 0xC1DD, + 4399: 0xC1DE, + 4400: 0xC1DF, + 4401: 0xC1E1, + 4402: 0xC1E2, + 4403: 0xC1E3, + 4404: 0xC1E5, + 4405: 0xC1E6, + 4406: 0xC1E7, + 4407: 0xC1E9, + 4408: 0xC1EA, + 4409: 0xC1EB, + 4410: 0xC1EC, + 4411: 0xC1ED, + 4412: 0xC1EE, + 4413: 0xC1EF, + 4414: 0xC1F2, + 4415: 0xC1F4, + 4416: 0xC1F5, + 4417: 0xC1F6, + 4418: 0xC1F7, + 4419: 0xC1F8, + 4420: 0xC1F9, + 4421: 0xC1FA, + 4422: 0xC1FB, + 4423: 0xC1FE, + 4424: 0xC1FF, + 4425: 0xC201, + 4426: 0xC202, + 4427: 0xC203, + 4428: 0xC205, + 4429: 0xC206, + 4430: 0xC207, + 4431: 0xC208, + 4432: 0xC209, + 4433: 0xC20A, + 4434: 0xC20B, + 4435: 0xC20E, + 4436: 0xC210, + 4437: 0xC212, + 4438: 0xC213, + 4439: 0xC214, + 4440: 0xC215, + 4441: 0xC216, + 4442: 0xC217, + 4443: 0xC21A, + 4444: 0xC21B, + 4445: 0xC21D, + 4446: 0xC21E, + 4447: 0xC221, + 4448: 0xC222, + 4449: 0xC223, + 4450: 0xC224, + 4451: 0xC225, + 4452: 0xC226, + 4453: 0xC227, + 4454: 0xC22A, + 4455: 0xC22C, + 4456: 0xC22E, + 4457: 0xC230, + 4458: 0xC233, + 4459: 0xC235, + 4460: 0xC236, + 4461: 0xC237, + 4462: 0xC238, + 4463: 0xC239, + 4464: 0xC23A, + 4465: 0xC23B, + 4466: 0xC23C, + 4467: 0xC23D, + 4468: 0xC23E, + 4469: 0xC23F, + 4470: 0xC240, + 4471: 0xC241, + 4472: 0xC242, + 4473: 0xC243, + 4474: 0xC244, + 4475: 0xC245, + 4476: 0xC246, + 4477: 0xC247, + 4478: 0xC249, + 4479: 0xC24A, + 4480: 0xC24B, + 4481: 0xC24C, + 4482: 0xC24D, + 4483: 0xC24E, + 4484: 0xC24F, + 4485: 0xC252, + 4486: 0xC253, + 4487: 0xC255, + 4488: 0xC256, + 4489: 0xC257, + 4490: 0xC259, + 4491: 0xC25A, + 4492: 0xC25B, + 4493: 0xC25C, + 4494: 0xC25D, + 4495: 0xC25E, + 4496: 0xC25F, + 4497: 0xC261, + 4498: 0xC262, + 4499: 0xC263, + 4500: 0xC264, + 4501: 0xC266, + 4502: 0xC267, + 4503: 0xC268, + 4504: 0xC269, + 4505: 0xC26A, + 4506: 0xC26B, + 4507: 0xC26E, + 4508: 0xC26F, + 4509: 0xC271, + 4510: 0xC272, + 4511: 0xC273, + 4512: 0xC275, + 4513: 0xC276, + 4514: 0xC277, + 4515: 0xC278, + 4516: 0xC279, + 4517: 0xC27A, + 4518: 0xC27B, + 4519: 0xC27E, + 4520: 0xC280, + 4521: 0xC282, + 4522: 0xC283, + 4523: 0xC284, + 4524: 0xC285, + 4525: 0xC286, + 4526: 0xC287, + 4527: 0xC28A, + 4528: 0xC28B, + 4529: 0xC28C, + 4530: 0xC28D, + 4531: 0xC28E, + 4532: 0xC28F, + 4533: 0xC291, + 4534: 0xC292, + 4535: 0xC293, + 4536: 0xC294, + 4537: 0xC295, + 4538: 0xC296, + 4539: 0xC297, + 4540: 0xC299, + 4541: 0xC29A, + 4542: 0xC29C, + 4543: 0xC29E, + 4544: 0xC29F, + 4545: 0xC2A0, + 4546: 0xC2A1, + 4547: 0xC2A2, + 4548: 0xC2A3, + 4549: 0xC2A6, + 4550: 0xC2A7, + 4551: 0xC2A9, + 4552: 0xC2AA, + 4553: 0xC2AB, + 4554: 0xC2AE, + 4555: 0xC2AF, + 4556: 0xC2B0, + 4557: 0xC2B1, + 4558: 0xC2B2, + 4559: 0xC2B3, + 4560: 0xC2B6, + 4561: 0xC2B8, + 4562: 0xC2BA, + 4563: 0xC2BB, + 4564: 0xC2BC, + 4565: 0xC2BD, + 4566: 0xC2BE, + 4567: 0xC2BF, + 4568: 0xC2C0, + 4569: 0xC2C1, + 4570: 0xC2C2, + 4571: 0xC2C3, + 4572: 0xC2C4, + 4573: 0xC2C5, + 4574: 0xC2C6, + 4575: 0xC2C7, + 4576: 0xC2C8, + 4577: 0xC2C9, + 4578: 0xC2CA, + 4579: 0xC2CB, + 4580: 0xC2CC, + 4581: 0xC2CD, + 4582: 0xC2CE, + 4583: 0xC2CF, + 4584: 0xC2D0, + 4585: 0xC2D1, + 4586: 0xC2D2, + 4587: 0xC2D3, + 4588: 0xC2D4, + 4589: 0xC2D5, + 4590: 0xC2D6, + 4591: 0xC2D7, + 4592: 0xC2D8, + 4593: 0xC2D9, + 4594: 0xC2DA, + 4595: 0xC2DB, + 4596: 0xC2DE, + 4597: 0xC2DF, + 4598: 0xC2E1, + 4599: 0xC2E2, + 4600: 0xC2E5, + 4601: 0xC2E6, + 4602: 0xC2E7, + 4603: 0xC2E8, + 4604: 0xC2E9, + 4605: 0xC2EA, + 4606: 0xC2EE, + 4607: 0xC2F0, + 4608: 0xC2F2, + 4609: 0xC2F3, + 4610: 0xC2F4, + 4611: 0xC2F5, + 4612: 0xC2F7, + 4613: 0xC2FA, + 4614: 0xC2FD, + 4615: 0xC2FE, + 4616: 0xC2FF, + 4617: 0xC301, + 4618: 0xC302, + 4619: 0xC303, + 4620: 0xC304, + 4621: 0xC305, + 4622: 0xC306, + 4623: 0xC307, + 4624: 0xC30A, + 4625: 0xC30B, + 4626: 0xC30E, + 4627: 0xC30F, + 4628: 0xC310, + 4629: 0xC311, + 4630: 0xC312, + 4631: 0xC316, + 4632: 0xC317, + 4633: 0xC319, + 4634: 0xC31A, + 4635: 0xC31B, + 4636: 0xC31D, + 4637: 0xC31E, + 4638: 0xC31F, + 4639: 0xC320, + 4640: 0xC321, + 4641: 0xC322, + 4642: 0xC323, + 4643: 0xC326, + 4644: 0xC327, + 4645: 0xC32A, + 4646: 0xC32B, + 4647: 0xC32C, + 4648: 0xC32D, + 4649: 0xC32E, + 4650: 0xC32F, + 4651: 0xC330, + 4652: 0xC331, + 4653: 0xC332, + 4654: 0xC333, + 4655: 0xC334, + 4656: 0xC335, + 4657: 0xC336, + 4658: 0xC337, + 4659: 0xC338, + 4660: 0xC339, + 4661: 0xC33A, + 4662: 0xC33B, + 4663: 0xC33C, + 4664: 0xC33D, + 4665: 0xC33E, + 4666: 0xC33F, + 4667: 0xC340, + 4668: 0xC341, + 4669: 0xC342, + 4670: 0xC343, + 4671: 0xC344, + 4672: 0xC346, + 4673: 0xC347, + 4674: 0xC348, + 4675: 0xC349, + 4676: 0xC34A, + 4677: 0xC34B, + 4678: 0xC34C, + 4679: 0xC34D, + 4680: 0xC34E, + 4681: 0xC34F, + 4682: 0xC350, + 4683: 0xC351, + 4684: 0xC352, + 4685: 0xC353, + 4686: 0xC354, + 4687: 0xC355, + 4688: 0xC356, + 4689: 0xC357, + 4690: 0xC358, + 4691: 0xC359, + 4692: 0xC35A, + 4693: 0xC35B, + 4694: 0xC35C, + 4695: 0xC35D, + 4696: 0xC35E, + 4697: 0xC35F, + 4698: 0xC360, + 4699: 0xC361, + 4700: 0xC362, + 4701: 0xC363, + 4702: 0xC364, + 4703: 0xC365, + 4704: 0xC366, + 4705: 0xC367, + 4706: 0xC36A, + 4707: 0xC36B, + 4708: 0xC36D, + 4709: 0xC36E, + 4710: 0xC36F, + 4711: 0xC371, + 4712: 0xC373, + 4713: 0xC374, + 4714: 0xC375, + 4715: 0xC376, + 4716: 0xC377, + 4717: 0xC37A, + 4718: 0xC37B, + 4719: 0xC37E, + 4720: 0xC37F, + 4721: 0xC380, + 4722: 0xC381, + 4723: 0xC382, + 4724: 0xC383, + 4725: 0xC385, + 4726: 0xC386, + 4727: 0xC387, + 4728: 0xC389, + 4729: 0xC38A, + 4730: 0xC38B, + 4731: 0xC38D, + 4732: 0xC38E, + 4733: 0xC38F, + 4734: 0xC390, + 4735: 0xC391, + 4736: 0xC392, + 4737: 0xC393, + 4738: 0xC394, + 4739: 0xC395, + 4740: 0xC396, + 4741: 0xC397, + 4742: 0xC398, + 4743: 0xC399, + 4744: 0xC39A, + 4745: 0xC39B, + 4746: 0xC39C, + 4747: 0xC39D, + 4748: 0xC39E, + 4749: 0xC39F, + 4750: 0xC3A0, + 4751: 0xC3A1, + 4752: 0xC3A2, + 4753: 0xC3A3, + 4754: 0xC3A4, + 4755: 0xC3A5, + 4756: 0xC3A6, + 4757: 0xC3A7, + 4758: 0xC3A8, + 4759: 0xC3A9, + 4760: 0xC3AA, + 4761: 0xC3AB, + 4762: 0xC3AC, + 4763: 0xC3AD, + 4764: 0xC3AE, + 4765: 0xC3AF, + 4766: 0xC3B0, + 4767: 0xC3B1, + 4768: 0xC3B2, + 4769: 0xC3B3, + 4770: 0xC3B4, + 4771: 0xC3B5, + 4772: 0xC3B6, + 4773: 0xC3B7, + 4774: 0xC3B8, + 4775: 0xC3B9, + 4776: 0xC3BA, + 4777: 0xC3BB, + 4778: 0xC3BC, + 4779: 0xC3BD, + 4780: 0xC3BE, + 4781: 0xC3BF, + 4782: 0xC3C1, + 4783: 0xC3C2, + 4784: 0xC3C3, + 4785: 0xC3C4, + 4786: 0xC3C5, + 4787: 0xC3C6, + 4788: 0xC3C7, + 4789: 0xC3C8, + 4790: 0xC3C9, + 4791: 0xC3CA, + 4792: 0xC3CB, + 4793: 0xC3CC, + 4794: 0xC3CD, + 4795: 0xC3CE, + 4796: 0xC3CF, + 4797: 0xC3D0, + 4798: 0xC3D1, + 4799: 0xC3D2, + 4800: 0xC3D3, + 4801: 0xC3D4, + 4802: 0xC3D5, + 4803: 0xC3D6, + 4804: 0xC3D7, + 4805: 0xC3DA, + 4806: 0xC3DB, + 4807: 0xC3DD, + 4808: 0xC3DE, + 4809: 0xC3E1, + 4810: 0xC3E3, + 4811: 0xC3E4, + 4812: 0xC3E5, + 4813: 0xC3E6, + 4814: 0xC3E7, + 4815: 0xC3EA, + 4816: 0xC3EB, + 4817: 0xC3EC, + 4818: 0xC3EE, + 4819: 0xC3EF, + 4820: 0xC3F0, + 4821: 0xC3F1, + 4822: 0xC3F2, + 4823: 0xC3F3, + 4824: 0xC3F6, + 4825: 0xC3F7, + 4826: 0xC3F9, + 4827: 0xC3FA, + 4828: 0xC3FB, + 4829: 0xC3FC, + 4830: 0xC3FD, + 4831: 0xC3FE, + 4832: 0xC3FF, + 4833: 0xC400, + 4834: 0xC401, + 4835: 0xC402, + 4836: 0xC403, + 4837: 0xC404, + 4838: 0xC405, + 4839: 0xC406, + 4840: 0xC407, + 4841: 0xC409, + 4842: 0xC40A, + 4843: 0xC40B, + 4844: 0xC40C, + 4845: 0xC40D, + 4846: 0xC40E, + 4847: 0xC40F, + 4848: 0xC411, + 4849: 0xC412, + 4850: 0xC413, + 4851: 0xC414, + 4852: 0xC415, + 4853: 0xC416, + 4854: 0xC417, + 4855: 0xC418, + 4856: 0xC419, + 4857: 0xC41A, + 4858: 0xC41B, + 4859: 0xC41C, + 4860: 0xC41D, + 4861: 0xC41E, + 4862: 0xC41F, + 4863: 0xC420, + 4864: 0xC421, + 4865: 0xC422, + 4866: 0xC423, + 4867: 0xC425, + 4868: 0xC426, + 4869: 0xC427, + 4870: 0xC428, + 4871: 0xC429, + 4872: 0xC42A, + 4873: 0xC42B, + 4874: 0xC42D, + 4875: 0xC42E, + 4876: 0xC42F, + 4877: 0xC431, + 4878: 0xC432, + 4879: 0xC433, + 4880: 0xC435, + 4881: 0xC436, + 4882: 0xC437, + 4883: 0xC438, + 4884: 0xC439, + 4885: 0xC43A, + 4886: 0xC43B, + 4887: 0xC43E, + 4888: 0xC43F, + 4889: 0xC440, + 4890: 0xC441, + 4891: 0xC442, + 4892: 0xC443, + 4893: 0xC444, + 4894: 0xC445, + 4895: 0xC446, + 4896: 0xC447, + 4897: 0xC449, + 4898: 0xC44A, + 4899: 0xC44B, + 4900: 0xC44C, + 4901: 0xC44D, + 4902: 0xC44E, + 4903: 0xC44F, + 4904: 0xC450, + 4905: 0xC451, + 4906: 0xC452, + 4907: 0xC453, + 4908: 0xC454, + 4909: 0xC455, + 4910: 0xC456, + 4911: 0xC457, + 4912: 0xC458, + 4913: 0xC459, + 4914: 0xC45A, + 4915: 0xC45B, + 4916: 0xC45C, + 4917: 0xC45D, + 4918: 0xC45E, + 4919: 0xC45F, + 4920: 0xC460, + 4921: 0xC461, + 4922: 0xC462, + 4923: 0xC463, + 4924: 0xC466, + 4925: 0xC467, + 4926: 0xC469, + 4927: 0xC46A, + 4928: 0xC46B, + 4929: 0xC46D, + 4930: 0xC46E, + 4931: 0xC46F, + 4932: 0xC470, + 4933: 0xC471, + 4934: 0xC472, + 4935: 0xC473, + 4936: 0xC476, + 4937: 0xC477, + 4938: 0xC478, + 4939: 0xC47A, + 4940: 0xC47B, + 4941: 0xC47C, + 4942: 0xC47D, + 4943: 0xC47E, + 4944: 0xC47F, + 4945: 0xC481, + 4946: 0xC482, + 4947: 0xC483, + 4948: 0xC484, + 4949: 0xC485, + 4950: 0xC486, + 4951: 0xC487, + 4952: 0xC488, + 4953: 0xC489, + 4954: 0xC48A, + 4955: 0xC48B, + 4956: 0xC48C, + 4957: 0xC48D, + 4958: 0xC48E, + 4959: 0xC48F, + 4960: 0xC490, + 4961: 0xC491, + 4962: 0xC492, + 4963: 0xC493, + 4964: 0xC495, + 4965: 0xC496, + 4966: 0xC497, + 4967: 0xC498, + 4968: 0xC499, + 4969: 0xC49A, + 4970: 0xC49B, + 4971: 0xC49D, + 4972: 0xC49E, + 4973: 0xC49F, + 4974: 0xC4A0, + 4975: 0xC4A1, + 4976: 0xC4A2, + 4977: 0xC4A3, + 4978: 0xC4A4, + 4979: 0xC4A5, + 4980: 0xC4A6, + 4981: 0xC4A7, + 4982: 0xC4A8, + 4983: 0xC4A9, + 4984: 0xC4AA, + 4985: 0xC4AB, + 4986: 0xC4AC, + 4987: 0xC4AD, + 4988: 0xC4AE, + 4989: 0xC4AF, + 4990: 0xC4B0, + 4991: 0xC4B1, + 4992: 0xC4B2, + 4993: 0xC4B3, + 4994: 0xC4B4, + 4995: 0xC4B5, + 4996: 0xC4B6, + 4997: 0xC4B7, + 4998: 0xC4B9, + 4999: 0xC4BA, + 5000: 0xC4BB, + 5001: 0xC4BD, + 5002: 0xC4BE, + 5003: 0xC4BF, + 5004: 0xC4C0, + 5005: 0xC4C1, + 5006: 0xC4C2, + 5007: 0xC4C3, + 5008: 0xC4C4, + 5009: 0xC4C5, + 5010: 0xC4C6, + 5011: 0xC4C7, + 5012: 0xC4C8, + 5013: 0xC4C9, + 5014: 0xC4CA, + 5015: 0xC4CB, + 5016: 0xC4CC, + 5017: 0xC4CD, + 5018: 0xC4CE, + 5019: 0xC4CF, + 5020: 0xC4D0, + 5021: 0xC4D1, + 5022: 0xC4D2, + 5023: 0xC4D3, + 5024: 0xC4D4, + 5025: 0xC4D5, + 5026: 0xC4D6, + 5027: 0xC4D7, + 5028: 0xC4D8, + 5029: 0xC4D9, + 5030: 0xC4DA, + 5031: 0xC4DB, + 5032: 0xC4DC, + 5033: 0xC4DD, + 5034: 0xC4DE, + 5035: 0xC4DF, + 5036: 0xC4E0, + 5037: 0xC4E1, + 5038: 0xC4E2, + 5039: 0xC4E3, + 5040: 0xC4E4, + 5041: 0xC4E5, + 5042: 0xC4E6, + 5043: 0xC4E7, + 5044: 0xC4E8, + 5045: 0xC4EA, + 5046: 0xC4EB, + 5047: 0xC4EC, + 5048: 0xC4ED, + 5049: 0xC4EE, + 5050: 0xC4EF, + 5051: 0xC4F2, + 5052: 0xC4F3, + 5053: 0xC4F5, + 5054: 0xC4F6, + 5055: 0xC4F7, + 5056: 0xC4F9, + 5057: 0xC4FB, + 5058: 0xC4FC, + 5059: 0xC4FD, + 5060: 0xC4FE, + 5061: 0xC502, + 5062: 0xC503, + 5063: 0xC504, + 5064: 0xC505, + 5065: 0xC506, + 5066: 0xC507, + 5067: 0xC508, + 5068: 0xC509, + 5069: 0xC50A, + 5070: 0xC50B, + 5071: 0xC50D, + 5072: 0xC50E, + 5073: 0xC50F, + 5074: 0xC511, + 5075: 0xC512, + 5076: 0xC513, + 5077: 0xC515, + 5078: 0xC516, + 5079: 0xC517, + 5080: 0xC518, + 5081: 0xC519, + 5082: 0xC51A, + 5083: 0xC51B, + 5084: 0xC51D, + 5085: 0xC51E, + 5086: 0xC51F, + 5087: 0xC520, + 5088: 0xC521, + 5089: 0xC522, + 5090: 0xC523, + 5091: 0xC524, + 5092: 0xC525, + 5093: 0xC526, + 5094: 0xC527, + 5095: 0xC52A, + 5096: 0xC52B, + 5097: 0xC52D, + 5098: 0xC52E, + 5099: 0xC52F, + 5100: 0xC531, + 5101: 0xC532, + 5102: 0xC533, + 5103: 0xC534, + 5104: 0xC535, + 5105: 0xC536, + 5106: 0xC537, + 5107: 0xC53A, + 5108: 0xC53C, + 5109: 0xC53E, + 5110: 0xC53F, + 5111: 0xC540, + 5112: 0xC541, + 5113: 0xC542, + 5114: 0xC543, + 5115: 0xC546, + 5116: 0xC547, + 5117: 0xC54B, + 5118: 0xC54F, + 5119: 0xC550, + 5120: 0xC551, + 5121: 0xC552, + 5122: 0xC556, + 5123: 0xC55A, + 5124: 0xC55B, + 5125: 0xC55C, + 5126: 0xC55F, + 5127: 0xC562, + 5128: 0xC563, + 5129: 0xC565, + 5130: 0xC566, + 5131: 0xC567, + 5132: 0xC569, + 5133: 0xC56A, + 5134: 0xC56B, + 5135: 0xC56C, + 5136: 0xC56D, + 5137: 0xC56E, + 5138: 0xC56F, + 5139: 0xC572, + 5140: 0xC576, + 5141: 0xC577, + 5142: 0xC578, + 5143: 0xC579, + 5144: 0xC57A, + 5145: 0xC57B, + 5146: 0xC57E, + 5147: 0xC57F, + 5148: 0xC581, + 5149: 0xC582, + 5150: 0xC583, + 5151: 0xC585, + 5152: 0xC586, + 5153: 0xC588, + 5154: 0xC589, + 5155: 0xC58A, + 5156: 0xC58B, + 5157: 0xC58E, + 5158: 0xC590, + 5159: 0xC592, + 5160: 0xC593, + 5161: 0xC594, + 5162: 0xC596, + 5163: 0xC599, + 5164: 0xC59A, + 5165: 0xC59B, + 5166: 0xC59D, + 5167: 0xC59E, + 5168: 0xC59F, + 5169: 0xC5A1, + 5170: 0xC5A2, + 5171: 0xC5A3, + 5172: 0xC5A4, + 5173: 0xC5A5, + 5174: 0xC5A6, + 5175: 0xC5A7, + 5176: 0xC5A8, + 5177: 0xC5AA, + 5178: 0xC5AB, + 5179: 0xC5AC, + 5180: 0xC5AD, + 5181: 0xC5AE, + 5182: 0xC5AF, + 5183: 0xC5B0, + 5184: 0xC5B1, + 5185: 0xC5B2, + 5186: 0xC5B3, + 5187: 0xC5B6, + 5188: 0xC5B7, + 5189: 0xC5BA, + 5190: 0xC5BF, + 5191: 0xC5C0, + 5192: 0xC5C1, + 5193: 0xC5C2, + 5194: 0xC5C3, + 5195: 0xC5CB, + 5196: 0xC5CD, + 5197: 0xC5CF, + 5198: 0xC5D2, + 5199: 0xC5D3, + 5200: 0xC5D5, + 5201: 0xC5D6, + 5202: 0xC5D7, + 5203: 0xC5D9, + 5204: 0xC5DA, + 5205: 0xC5DB, + 5206: 0xC5DC, + 5207: 0xC5DD, + 5208: 0xC5DE, + 5209: 0xC5DF, + 5210: 0xC5E2, + 5211: 0xC5E4, + 5212: 0xC5E6, + 5213: 0xC5E7, + 5214: 0xC5E8, + 5215: 0xC5E9, + 5216: 0xC5EA, + 5217: 0xC5EB, + 5218: 0xC5EF, + 5219: 0xC5F1, + 5220: 0xC5F2, + 5221: 0xC5F3, + 5222: 0xC5F5, + 5223: 0xC5F8, + 5224: 0xC5F9, + 5225: 0xC5FA, + 5226: 0xC5FB, + 5227: 0xC602, + 5228: 0xC603, + 5229: 0xC604, + 5230: 0xC609, + 5231: 0xC60A, + 5232: 0xC60B, + 5233: 0xC60D, + 5234: 0xC60E, + 5235: 0xC60F, + 5236: 0xC611, + 5237: 0xC612, + 5238: 0xC613, + 5239: 0xC614, + 5240: 0xC615, + 5241: 0xC616, + 5242: 0xC617, + 5243: 0xC61A, + 5244: 0xC61D, + 5245: 0xC61E, + 5246: 0xC61F, + 5247: 0xC620, + 5248: 0xC621, + 5249: 0xC622, + 5250: 0xC623, + 5251: 0xC626, + 5252: 0xC627, + 5253: 0xC629, + 5254: 0xC62A, + 5255: 0xC62B, + 5256: 0xC62F, + 5257: 0xC631, + 5258: 0xC632, + 5259: 0xC636, + 5260: 0xC638, + 5261: 0xC63A, + 5262: 0xC63C, + 5263: 0xC63D, + 5264: 0xC63E, + 5265: 0xC63F, + 5266: 0xC642, + 5267: 0xC643, + 5268: 0xC645, + 5269: 0xC646, + 5270: 0xC647, + 5271: 0xC649, + 5272: 0xC64A, + 5273: 0xC64B, + 5274: 0xC64C, + 5275: 0xC64D, + 5276: 0xC64E, + 5277: 0xC64F, + 5278: 0xC652, + 5279: 0xC656, + 5280: 0xC657, + 5281: 0xC658, + 5282: 0xC659, + 5283: 0xC65A, + 5284: 0xC65B, + 5285: 0xC65E, + 5286: 0xC65F, + 5287: 0xC661, + 5288: 0xC662, + 5289: 0xC663, + 5290: 0xC664, + 5291: 0xC665, + 5292: 0xC666, + 5293: 0xC667, + 5294: 0xC668, + 5295: 0xC669, + 5296: 0xC66A, + 5297: 0xC66B, + 5298: 0xC66D, + 5299: 0xC66E, + 5300: 0xC670, + 5301: 0xC672, + 5302: 0xC673, + 5303: 0xC674, + 5304: 0xC675, + 5305: 0xC676, + 5306: 0xC677, + 5307: 0xC67A, + 5308: 0xC67B, + 5309: 0xC67D, + 5310: 0xC67E, + 5311: 0xC67F, + 5312: 0xC681, + 5313: 0xC682, + 5314: 0xC683, + 5315: 0xC684, + 5316: 0xC685, + 5317: 0xC686, + 5318: 0xC687, + 5319: 0xC68A, + 5320: 0xC68C, + 5321: 0xC68E, + 5322: 0xC68F, + 5323: 0xC690, + 5324: 0xC691, + 5325: 0xC692, + 5326: 0xC693, + 5327: 0xC696, + 5328: 0xC697, + 5329: 0xC699, + 5330: 0xC69A, + 5331: 0xC69B, + 5332: 0xC69D, + 5333: 0xC69E, + 5334: 0xC69F, + 5335: 0xC6A0, + 5336: 0xC6A1, + 5337: 0xC6A2, + 5338: 0xC6A3, + 5339: 0xC6A6, + 5340: 0xC6A8, + 5341: 0xC6AA, + 5342: 0xC6AB, + 5343: 0xC6AC, + 5344: 0xC6AD, + 5345: 0xC6AE, + 5346: 0xC6AF, + 5347: 0xC6B2, + 5348: 0xC6B3, + 5349: 0xC6B5, + 5350: 0xC6B6, + 5351: 0xC6B7, + 5352: 0xC6BB, + 5353: 0xC6BC, + 5354: 0xC6BD, + 5355: 0xC6BE, + 5356: 0xC6BF, + 5357: 0xC6C2, + 5358: 0xC6C4, + 5359: 0xC6C6, + 5360: 0xC6C7, + 5361: 0xC6C8, + 5362: 0xC6C9, + 5363: 0xC6CA, + 5364: 0xC6CB, + 5365: 0xC6CE, + 5366: 0xC6CF, + 5367: 0xC6D1, + 5368: 0xC6D2, + 5369: 0xC6D3, + 5370: 0xC6D5, + 5371: 0xC6D6, + 5372: 0xC6D7, + 5373: 0xC6D8, + 5374: 0xC6D9, + 5375: 0xC6DA, + 5376: 0xC6DB, + 5377: 0xC6DE, + 5378: 0xC6DF, + 5379: 0xC6E2, + 5380: 0xC6E3, + 5381: 0xC6E4, + 5382: 0xC6E5, + 5383: 0xC6E6, + 5384: 0xC6E7, + 5385: 0xC6EA, + 5386: 0xC6EB, + 5387: 0xC6ED, + 5388: 0xC6EE, + 5389: 0xC6EF, + 5390: 0xC6F1, + 5391: 0xC6F2, + 5392: 0xC6F3, + 5393: 0xC6F4, + 5394: 0xC6F5, + 5395: 0xC6F6, + 5396: 0xC6F7, + 5397: 0xC6FA, + 5398: 0xC6FB, + 5399: 0xC6FC, + 5400: 0xC6FE, + 5401: 0xC6FF, + 5402: 0xC700, + 5403: 0xC701, + 5404: 0xC702, + 5405: 0xC703, + 5406: 0xC706, + 5407: 0xC707, + 5408: 0xC709, + 5409: 0xC70A, + 5410: 0xC70B, + 5411: 0xC70D, + 5412: 0xC70E, + 5413: 0xC70F, + 5414: 0xC710, + 5415: 0xC711, + 5416: 0xC712, + 5417: 0xC713, + 5418: 0xC716, + 5419: 0xC718, + 5420: 0xC71A, + 5421: 0xC71B, + 5422: 0xC71C, + 5423: 0xC71D, + 5424: 0xC71E, + 5425: 0xC71F, + 5426: 0xC722, + 5427: 0xC723, + 5428: 0xC725, + 5429: 0xC726, + 5430: 0xC727, + 5431: 0xC729, + 5432: 0xC72A, + 5433: 0xC72B, + 5434: 0xC72C, + 5435: 0xC72D, + 5436: 0xC72E, + 5437: 0xC72F, + 5438: 0xC732, + 5439: 0xC734, + 5440: 0xC736, + 5441: 0xC738, + 5442: 0xC739, + 5443: 0xC73A, + 5444: 0xC73B, + 5445: 0xC73E, + 5446: 0xC73F, + 5447: 0xC741, + 5448: 0xC742, + 5449: 0xC743, + 5450: 0xC745, + 5451: 0xC746, + 5452: 0xC747, + 5453: 0xC748, + 5454: 0xC749, + 5455: 0xC74B, + 5456: 0xC74E, + 5457: 0xC750, + 5458: 0xC759, + 5459: 0xC75A, + 5460: 0xC75B, + 5461: 0xC75D, + 5462: 0xC75E, + 5463: 0xC75F, + 5464: 0xC761, + 5465: 0xC762, + 5466: 0xC763, + 5467: 0xC764, + 5468: 0xC765, + 5469: 0xC766, + 5470: 0xC767, + 5471: 0xC769, + 5472: 0xC76A, + 5473: 0xC76C, + 5474: 0xC76D, + 5475: 0xC76E, + 5476: 0xC76F, + 5477: 0xC770, + 5478: 0xC771, + 5479: 0xC772, + 5480: 0xC773, + 5481: 0xC776, + 5482: 0xC777, + 5483: 0xC779, + 5484: 0xC77A, + 5485: 0xC77B, + 5486: 0xC77F, + 5487: 0xC780, + 5488: 0xC781, + 5489: 0xC782, + 5490: 0xC786, + 5491: 0xC78B, + 5492: 0xC78C, + 5493: 0xC78D, + 5494: 0xC78F, + 5495: 0xC792, + 5496: 0xC793, + 5497: 0xC795, + 5498: 0xC799, + 5499: 0xC79B, + 5500: 0xC79C, + 5501: 0xC79D, + 5502: 0xC79E, + 5503: 0xC79F, + 5504: 0xC7A2, + 5505: 0xC7A7, + 5506: 0xC7A8, + 5507: 0xC7A9, + 5508: 0xC7AA, + 5509: 0xC7AB, + 5510: 0xC7AE, + 5511: 0xC7AF, + 5512: 0xC7B1, + 5513: 0xC7B2, + 5514: 0xC7B3, + 5515: 0xC7B5, + 5516: 0xC7B6, + 5517: 0xC7B7, + 5518: 0xC7B8, + 5519: 0xC7B9, + 5520: 0xC7BA, + 5521: 0xC7BB, + 5522: 0xC7BE, + 5523: 0xC7C2, + 5524: 0xC7C3, + 5525: 0xC7C4, + 5526: 0xC7C5, + 5527: 0xC7C6, + 5528: 0xC7C7, + 5529: 0xC7CA, + 5530: 0xC7CB, + 5531: 0xC7CD, + 5532: 0xC7CF, + 5533: 0xC7D1, + 5534: 0xC7D2, + 5535: 0xC7D3, + 5536: 0xC7D4, + 5537: 0xC7D5, + 5538: 0xC7D6, + 5539: 0xC7D7, + 5540: 0xC7D9, + 5541: 0xC7DA, + 5542: 0xC7DB, + 5543: 0xC7DC, + 5544: 0xC7DE, + 5545: 0xC7DF, + 5546: 0xC7E0, + 5547: 0xC7E1, + 5548: 0xC7E2, + 5549: 0xC7E3, + 5550: 0xC7E5, + 5551: 0xC7E6, + 5552: 0xC7E7, + 5553: 0xC7E9, + 5554: 0xC7EA, + 5555: 0xC7EB, + 5556: 0xC7ED, + 5557: 0xC7EE, + 5558: 0xC7EF, + 5559: 0xC7F0, + 5560: 0xC7F1, + 5561: 0xC7F2, + 5562: 0xC7F3, + 5563: 0xC7F4, + 5564: 0xC7F5, + 5565: 0xC7F6, + 5566: 0xC7F7, + 5567: 0xC7F8, + 5568: 0xC7F9, + 5569: 0xC7FA, + 5570: 0xC7FB, + 5571: 0xC7FC, + 5572: 0xC7FD, + 5573: 0xC7FE, + 5574: 0xC7FF, + 5575: 0xC802, + 5576: 0xC803, + 5577: 0xC805, + 5578: 0xC806, + 5579: 0xC807, + 5580: 0xC809, + 5581: 0xC80B, + 5582: 0xC80C, + 5583: 0xC80D, + 5584: 0xC80E, + 5585: 0xC80F, + 5586: 0xC812, + 5587: 0xC814, + 5588: 0xC817, + 5589: 0xC818, + 5590: 0xC819, + 5591: 0xC81A, + 5592: 0xC81B, + 5593: 0xC81E, + 5594: 0xC81F, + 5595: 0xC821, + 5596: 0xC822, + 5597: 0xC823, + 5598: 0xC825, + 5599: 0xC826, + 5600: 0xC827, + 5601: 0xC828, + 5602: 0xC829, + 5603: 0xC82A, + 5604: 0xC82B, + 5605: 0xC82E, + 5606: 0xC830, + 5607: 0xC832, + 5608: 0xC833, + 5609: 0xC834, + 5610: 0xC835, + 5611: 0xC836, + 5612: 0xC837, + 5613: 0xC839, + 5614: 0xC83A, + 5615: 0xC83B, + 5616: 0xC83D, + 5617: 0xC83E, + 5618: 0xC83F, + 5619: 0xC841, + 5620: 0xC842, + 5621: 0xC843, + 5622: 0xC844, + 5623: 0xC845, + 5624: 0xC846, + 5625: 0xC847, + 5626: 0xC84A, + 5627: 0xC84B, + 5628: 0xC84E, + 5629: 0xC84F, + 5630: 0xC850, + 5631: 0xC851, + 5632: 0xC852, + 5633: 0xC853, + 5634: 0xC855, + 5635: 0xC856, + 5636: 0xC857, + 5637: 0xC858, + 5638: 0xC859, + 5639: 0xC85A, + 5640: 0xC85B, + 5641: 0xC85C, + 5642: 0xC85D, + 5643: 0xC85E, + 5644: 0xC85F, + 5645: 0xC860, + 5646: 0xC861, + 5647: 0xC862, + 5648: 0xC863, + 5649: 0xC864, + 5650: 0xC865, + 5651: 0xC866, + 5652: 0xC867, + 5653: 0xC868, + 5654: 0xC869, + 5655: 0xC86A, + 5656: 0xC86B, + 5657: 0xC86C, + 5658: 0xC86D, + 5659: 0xC86E, + 5660: 0xC86F, + 5661: 0xC872, + 5662: 0xC873, + 5663: 0xC875, + 5664: 0xC876, + 5665: 0xC877, + 5666: 0xC879, + 5667: 0xC87B, + 5668: 0xC87C, + 5669: 0xC87D, + 5670: 0xC87E, + 5671: 0xC87F, + 5672: 0xC882, + 5673: 0xC884, + 5674: 0xC888, + 5675: 0xC889, + 5676: 0xC88A, + 5677: 0xC88E, + 5678: 0xC88F, + 5679: 0xC890, + 5680: 0xC891, + 5681: 0xC892, + 5682: 0xC893, + 5683: 0xC895, + 5684: 0xC896, + 5685: 0xC897, + 5686: 0xC898, + 5687: 0xC899, + 5688: 0xC89A, + 5689: 0xC89B, + 5690: 0xC89C, + 5691: 0xC89E, + 5692: 0xC8A0, + 5693: 0xC8A2, + 5694: 0xC8A3, + 5695: 0xC8A4, + 5696: 0xC8A5, + 5697: 0xC8A6, + 5698: 0xC8A7, + 5699: 0xC8A9, + 5700: 0xC8AA, + 5701: 0xC8AB, + 5702: 0xC8AC, + 5703: 0xC8AD, + 5704: 0xC8AE, + 5705: 0xC8AF, + 5706: 0xC8B0, + 5707: 0xC8B1, + 5708: 0xC8B2, + 5709: 0xC8B3, + 5710: 0xC8B4, + 5711: 0xC8B5, + 5712: 0xC8B6, + 5713: 0xC8B7, + 5714: 0xC8B8, + 5715: 0xC8B9, + 5716: 0xC8BA, + 5717: 0xC8BB, + 5718: 0xC8BE, + 5719: 0xC8BF, + 5720: 0xC8C0, + 5721: 0xC8C1, + 5722: 0xC8C2, + 5723: 0xC8C3, + 5724: 0xC8C5, + 5725: 0xC8C6, + 5726: 0xC8C7, + 5727: 0xC8C9, + 5728: 0xC8CA, + 5729: 0xC8CB, + 5730: 0xC8CD, + 5731: 0xC8CE, + 5732: 0xC8CF, + 5733: 0xC8D0, + 5734: 0xC8D1, + 5735: 0xC8D2, + 5736: 0xC8D3, + 5737: 0xC8D6, + 5738: 0xC8D8, + 5739: 0xC8DA, + 5740: 0xC8DB, + 5741: 0xC8DC, + 5742: 0xC8DD, + 5743: 0xC8DE, + 5744: 0xC8DF, + 5745: 0xC8E2, + 5746: 0xC8E3, + 5747: 0xC8E5, + 5748: 0xC8E6, + 5749: 0xC8E7, + 5750: 0xC8E8, + 5751: 0xC8E9, + 5752: 0xC8EA, + 5753: 0xC8EB, + 5754: 0xC8EC, + 5755: 0xC8ED, + 5756: 0xC8EE, + 5757: 0xC8EF, + 5758: 0xC8F0, + 5759: 0xC8F1, + 5760: 0xC8F2, + 5761: 0xC8F3, + 5762: 0xC8F4, + 5763: 0xC8F6, + 5764: 0xC8F7, + 5765: 0xC8F8, + 5766: 0xC8F9, + 5767: 0xC8FA, + 5768: 0xC8FB, + 5769: 0xC8FE, + 5770: 0xC8FF, + 5771: 0xC901, + 5772: 0xC902, + 5773: 0xC903, + 5774: 0xC907, + 5775: 0xC908, + 5776: 0xC909, + 5777: 0xC90A, + 5778: 0xC90B, + 5779: 0xC90E, + 5780: 0x3000, + 5781: 0x3001, + 5782: 0x3002, + 5783: 0x00B7, + 5784: 0x2025, + 5785: 0x2026, + 5786: 0x00A8, + 5787: 0x3003, + 5788: 0x00AD, + 5789: 0x2015, + 5790: 0x2225, + 5791: 0xFF3C, + 5792: 0x223C, + 5793: 0x2018, + 5794: 0x2019, + 5795: 0x201C, + 5796: 0x201D, + 5797: 0x3014, + 5798: 0x3015, + 5799: 0x3008, + 5800: 0x3009, + 5801: 0x300A, + 5802: 0x300B, + 5803: 0x300C, + 5804: 0x300D, + 5805: 0x300E, + 5806: 0x300F, + 5807: 0x3010, + 5808: 0x3011, + 5809: 0x00B1, + 5810: 0x00D7, + 5811: 0x00F7, + 5812: 0x2260, + 5813: 0x2264, + 5814: 0x2265, + 5815: 0x221E, + 5816: 0x2234, + 5817: 0x00B0, + 5818: 0x2032, + 5819: 0x2033, + 5820: 0x2103, + 5821: 0x212B, + 5822: 0xFFE0, + 5823: 0xFFE1, + 5824: 0xFFE5, + 5825: 0x2642, + 5826: 0x2640, + 5827: 0x2220, + 5828: 0x22A5, + 5829: 0x2312, + 5830: 0x2202, + 5831: 0x2207, + 5832: 0x2261, + 5833: 0x2252, + 5834: 0x00A7, + 5835: 0x203B, + 5836: 0x2606, + 5837: 0x2605, + 5838: 0x25CB, + 5839: 0x25CF, + 5840: 0x25CE, + 5841: 0x25C7, + 5842: 0x25C6, + 5843: 0x25A1, + 5844: 0x25A0, + 5845: 0x25B3, + 5846: 0x25B2, + 5847: 0x25BD, + 5848: 0x25BC, + 5849: 0x2192, + 5850: 0x2190, + 5851: 0x2191, + 5852: 0x2193, + 5853: 0x2194, + 5854: 0x3013, + 5855: 0x226A, + 5856: 0x226B, + 5857: 0x221A, + 5858: 0x223D, + 5859: 0x221D, + 5860: 0x2235, + 5861: 0x222B, + 5862: 0x222C, + 5863: 0x2208, + 5864: 0x220B, + 5865: 0x2286, + 5866: 0x2287, + 5867: 0x2282, + 5868: 0x2283, + 5869: 0x222A, + 5870: 0x2229, + 5871: 0x2227, + 5872: 0x2228, + 5873: 0xFFE2, + 5874: 0xC910, + 5875: 0xC912, + 5876: 0xC913, + 5877: 0xC914, + 5878: 0xC915, + 5879: 0xC916, + 5880: 0xC917, + 5881: 0xC919, + 5882: 0xC91A, + 5883: 0xC91B, + 5884: 0xC91C, + 5885: 0xC91D, + 5886: 0xC91E, + 5887: 0xC91F, + 5888: 0xC920, + 5889: 0xC921, + 5890: 0xC922, + 5891: 0xC923, + 5892: 0xC924, + 5893: 0xC925, + 5894: 0xC926, + 5895: 0xC927, + 5896: 0xC928, + 5897: 0xC929, + 5898: 0xC92A, + 5899: 0xC92B, + 5900: 0xC92D, + 5901: 0xC92E, + 5902: 0xC92F, + 5903: 0xC930, + 5904: 0xC931, + 5905: 0xC932, + 5906: 0xC933, + 5907: 0xC935, + 5908: 0xC936, + 5909: 0xC937, + 5910: 0xC938, + 5911: 0xC939, + 5912: 0xC93A, + 5913: 0xC93B, + 5914: 0xC93C, + 5915: 0xC93D, + 5916: 0xC93E, + 5917: 0xC93F, + 5918: 0xC940, + 5919: 0xC941, + 5920: 0xC942, + 5921: 0xC943, + 5922: 0xC944, + 5923: 0xC945, + 5924: 0xC946, + 5925: 0xC947, + 5926: 0xC948, + 5927: 0xC949, + 5928: 0xC94A, + 5929: 0xC94B, + 5930: 0xC94C, + 5931: 0xC94D, + 5932: 0xC94E, + 5933: 0xC94F, + 5934: 0xC952, + 5935: 0xC953, + 5936: 0xC955, + 5937: 0xC956, + 5938: 0xC957, + 5939: 0xC959, + 5940: 0xC95A, + 5941: 0xC95B, + 5942: 0xC95C, + 5943: 0xC95D, + 5944: 0xC95E, + 5945: 0xC95F, + 5946: 0xC962, + 5947: 0xC964, + 5948: 0xC965, + 5949: 0xC966, + 5950: 0xC967, + 5951: 0xC968, + 5952: 0xC969, + 5953: 0xC96A, + 5954: 0xC96B, + 5955: 0xC96D, + 5956: 0xC96E, + 5957: 0xC96F, + 5958: 0x21D2, + 5959: 0x21D4, + 5960: 0x2200, + 5961: 0x2203, + 5962: 0x00B4, + 5963: 0xFF5E, + 5964: 0x02C7, + 5965: 0x02D8, + 5966: 0x02DD, + 5967: 0x02DA, + 5968: 0x02D9, + 5969: 0x00B8, + 5970: 0x02DB, + 5971: 0x00A1, + 5972: 0x00BF, + 5973: 0x02D0, + 5974: 0x222E, + 5975: 0x2211, + 5976: 0x220F, + 5977: 0x00A4, + 5978: 0x2109, + 5979: 0x2030, + 5980: 0x25C1, + 5981: 0x25C0, + 5982: 0x25B7, + 5983: 0x25B6, + 5984: 0x2664, + 5985: 0x2660, + 5986: 0x2661, + 5987: 0x2665, + 5988: 0x2667, + 5989: 0x2663, + 5990: 0x2299, + 5991: 0x25C8, + 5992: 0x25A3, + 5993: 0x25D0, + 5994: 0x25D1, + 5995: 0x2592, + 5996: 0x25A4, + 5997: 0x25A5, + 5998: 0x25A8, + 5999: 0x25A7, + 6000: 0x25A6, + 6001: 0x25A9, + 6002: 0x2668, + 6003: 0x260F, + 6004: 0x260E, + 6005: 0x261C, + 6006: 0x261E, + 6007: 0x00B6, + 6008: 0x2020, + 6009: 0x2021, + 6010: 0x2195, + 6011: 0x2197, + 6012: 0x2199, + 6013: 0x2196, + 6014: 0x2198, + 6015: 0x266D, + 6016: 0x2669, + 6017: 0x266A, + 6018: 0x266C, + 6019: 0x327F, + 6020: 0x321C, + 6021: 0x2116, + 6022: 0x33C7, + 6023: 0x2122, + 6024: 0x33C2, + 6025: 0x33D8, + 6026: 0x2121, + 6027: 0x20AC, + 6028: 0x00AE, + 6052: 0xC971, + 6053: 0xC972, + 6054: 0xC973, + 6055: 0xC975, + 6056: 0xC976, + 6057: 0xC977, + 6058: 0xC978, + 6059: 0xC979, + 6060: 0xC97A, + 6061: 0xC97B, + 6062: 0xC97D, + 6063: 0xC97E, + 6064: 0xC97F, + 6065: 0xC980, + 6066: 0xC981, + 6067: 0xC982, + 6068: 0xC983, + 6069: 0xC984, + 6070: 0xC985, + 6071: 0xC986, + 6072: 0xC987, + 6073: 0xC98A, + 6074: 0xC98B, + 6075: 0xC98D, + 6076: 0xC98E, + 6077: 0xC98F, + 6078: 0xC991, + 6079: 0xC992, + 6080: 0xC993, + 6081: 0xC994, + 6082: 0xC995, + 6083: 0xC996, + 6084: 0xC997, + 6085: 0xC99A, + 6086: 0xC99C, + 6087: 0xC99E, + 6088: 0xC99F, + 6089: 0xC9A0, + 6090: 0xC9A1, + 6091: 0xC9A2, + 6092: 0xC9A3, + 6093: 0xC9A4, + 6094: 0xC9A5, + 6095: 0xC9A6, + 6096: 0xC9A7, + 6097: 0xC9A8, + 6098: 0xC9A9, + 6099: 0xC9AA, + 6100: 0xC9AB, + 6101: 0xC9AC, + 6102: 0xC9AD, + 6103: 0xC9AE, + 6104: 0xC9AF, + 6105: 0xC9B0, + 6106: 0xC9B1, + 6107: 0xC9B2, + 6108: 0xC9B3, + 6109: 0xC9B4, + 6110: 0xC9B5, + 6111: 0xC9B6, + 6112: 0xC9B7, + 6113: 0xC9B8, + 6114: 0xC9B9, + 6115: 0xC9BA, + 6116: 0xC9BB, + 6117: 0xC9BC, + 6118: 0xC9BD, + 6119: 0xC9BE, + 6120: 0xC9BF, + 6121: 0xC9C2, + 6122: 0xC9C3, + 6123: 0xC9C5, + 6124: 0xC9C6, + 6125: 0xC9C9, + 6126: 0xC9CB, + 6127: 0xC9CC, + 6128: 0xC9CD, + 6129: 0xC9CE, + 6130: 0xC9CF, + 6131: 0xC9D2, + 6132: 0xC9D4, + 6133: 0xC9D7, + 6134: 0xC9D8, + 6135: 0xC9DB, + 6136: 0xFF01, + 6137: 0xFF02, + 6138: 0xFF03, + 6139: 0xFF04, + 6140: 0xFF05, + 6141: 0xFF06, + 6142: 0xFF07, + 6143: 0xFF08, + 6144: 0xFF09, + 6145: 0xFF0A, + 6146: 0xFF0B, + 6147: 0xFF0C, + 6148: 0xFF0D, + 6149: 0xFF0E, + 6150: 0xFF0F, + 6151: 0xFF10, + 6152: 0xFF11, + 6153: 0xFF12, + 6154: 0xFF13, + 6155: 0xFF14, + 6156: 0xFF15, + 6157: 0xFF16, + 6158: 0xFF17, + 6159: 0xFF18, + 6160: 0xFF19, + 6161: 0xFF1A, + 6162: 0xFF1B, + 6163: 0xFF1C, + 6164: 0xFF1D, + 6165: 0xFF1E, + 6166: 0xFF1F, + 6167: 0xFF20, + 6168: 0xFF21, + 6169: 0xFF22, + 6170: 0xFF23, + 6171: 0xFF24, + 6172: 0xFF25, + 6173: 0xFF26, + 6174: 0xFF27, + 6175: 0xFF28, + 6176: 0xFF29, + 6177: 0xFF2A, + 6178: 0xFF2B, + 6179: 0xFF2C, + 6180: 0xFF2D, + 6181: 0xFF2E, + 6182: 0xFF2F, + 6183: 0xFF30, + 6184: 0xFF31, + 6185: 0xFF32, + 6186: 0xFF33, + 6187: 0xFF34, + 6188: 0xFF35, + 6189: 0xFF36, + 6190: 0xFF37, + 6191: 0xFF38, + 6192: 0xFF39, + 6193: 0xFF3A, + 6194: 0xFF3B, + 6195: 0xFFE6, + 6196: 0xFF3D, + 6197: 0xFF3E, + 6198: 0xFF3F, + 6199: 0xFF40, + 6200: 0xFF41, + 6201: 0xFF42, + 6202: 0xFF43, + 6203: 0xFF44, + 6204: 0xFF45, + 6205: 0xFF46, + 6206: 0xFF47, + 6207: 0xFF48, + 6208: 0xFF49, + 6209: 0xFF4A, + 6210: 0xFF4B, + 6211: 0xFF4C, + 6212: 0xFF4D, + 6213: 0xFF4E, + 6214: 0xFF4F, + 6215: 0xFF50, + 6216: 0xFF51, + 6217: 0xFF52, + 6218: 0xFF53, + 6219: 0xFF54, + 6220: 0xFF55, + 6221: 0xFF56, + 6222: 0xFF57, + 6223: 0xFF58, + 6224: 0xFF59, + 6225: 0xFF5A, + 6226: 0xFF5B, + 6227: 0xFF5C, + 6228: 0xFF5D, + 6229: 0xFFE3, + 6230: 0xC9DE, + 6231: 0xC9DF, + 6232: 0xC9E1, + 6233: 0xC9E3, + 6234: 0xC9E5, + 6235: 0xC9E6, + 6236: 0xC9E8, + 6237: 0xC9E9, + 6238: 0xC9EA, + 6239: 0xC9EB, + 6240: 0xC9EE, + 6241: 0xC9F2, + 6242: 0xC9F3, + 6243: 0xC9F4, + 6244: 0xC9F5, + 6245: 0xC9F6, + 6246: 0xC9F7, + 6247: 0xC9FA, + 6248: 0xC9FB, + 6249: 0xC9FD, + 6250: 0xC9FE, + 6251: 0xC9FF, + 6252: 0xCA01, + 6253: 0xCA02, + 6254: 0xCA03, + 6255: 0xCA04, + 6256: 0xCA05, + 6257: 0xCA06, + 6258: 0xCA07, + 6259: 0xCA0A, + 6260: 0xCA0E, + 6261: 0xCA0F, + 6262: 0xCA10, + 6263: 0xCA11, + 6264: 0xCA12, + 6265: 0xCA13, + 6266: 0xCA15, + 6267: 0xCA16, + 6268: 0xCA17, + 6269: 0xCA19, + 6270: 0xCA1A, + 6271: 0xCA1B, + 6272: 0xCA1C, + 6273: 0xCA1D, + 6274: 0xCA1E, + 6275: 0xCA1F, + 6276: 0xCA20, + 6277: 0xCA21, + 6278: 0xCA22, + 6279: 0xCA23, + 6280: 0xCA24, + 6281: 0xCA25, + 6282: 0xCA26, + 6283: 0xCA27, + 6284: 0xCA28, + 6285: 0xCA2A, + 6286: 0xCA2B, + 6287: 0xCA2C, + 6288: 0xCA2D, + 6289: 0xCA2E, + 6290: 0xCA2F, + 6291: 0xCA30, + 6292: 0xCA31, + 6293: 0xCA32, + 6294: 0xCA33, + 6295: 0xCA34, + 6296: 0xCA35, + 6297: 0xCA36, + 6298: 0xCA37, + 6299: 0xCA38, + 6300: 0xCA39, + 6301: 0xCA3A, + 6302: 0xCA3B, + 6303: 0xCA3C, + 6304: 0xCA3D, + 6305: 0xCA3E, + 6306: 0xCA3F, + 6307: 0xCA40, + 6308: 0xCA41, + 6309: 0xCA42, + 6310: 0xCA43, + 6311: 0xCA44, + 6312: 0xCA45, + 6313: 0xCA46, + 6314: 0x3131, + 6315: 0x3132, + 6316: 0x3133, + 6317: 0x3134, + 6318: 0x3135, + 6319: 0x3136, + 6320: 0x3137, + 6321: 0x3138, + 6322: 0x3139, + 6323: 0x313A, + 6324: 0x313B, + 6325: 0x313C, + 6326: 0x313D, + 6327: 0x313E, + 6328: 0x313F, + 6329: 0x3140, + 6330: 0x3141, + 6331: 0x3142, + 6332: 0x3143, + 6333: 0x3144, + 6334: 0x3145, + 6335: 0x3146, + 6336: 0x3147, + 6337: 0x3148, + 6338: 0x3149, + 6339: 0x314A, + 6340: 0x314B, + 6341: 0x314C, + 6342: 0x314D, + 6343: 0x314E, + 6344: 0x314F, + 6345: 0x3150, + 6346: 0x3151, + 6347: 0x3152, + 6348: 0x3153, + 6349: 0x3154, + 6350: 0x3155, + 6351: 0x3156, + 6352: 0x3157, + 6353: 0x3158, + 6354: 0x3159, + 6355: 0x315A, + 6356: 0x315B, + 6357: 0x315C, + 6358: 0x315D, + 6359: 0x315E, + 6360: 0x315F, + 6361: 0x3160, + 6362: 0x3161, + 6363: 0x3162, + 6364: 0x3163, + 6365: 0x3164, + 6366: 0x3165, + 6367: 0x3166, + 6368: 0x3167, + 6369: 0x3168, + 6370: 0x3169, + 6371: 0x316A, + 6372: 0x316B, + 6373: 0x316C, + 6374: 0x316D, + 6375: 0x316E, + 6376: 0x316F, + 6377: 0x3170, + 6378: 0x3171, + 6379: 0x3172, + 6380: 0x3173, + 6381: 0x3174, + 6382: 0x3175, + 6383: 0x3176, + 6384: 0x3177, + 6385: 0x3178, + 6386: 0x3179, + 6387: 0x317A, + 6388: 0x317B, + 6389: 0x317C, + 6390: 0x317D, + 6391: 0x317E, + 6392: 0x317F, + 6393: 0x3180, + 6394: 0x3181, + 6395: 0x3182, + 6396: 0x3183, + 6397: 0x3184, + 6398: 0x3185, + 6399: 0x3186, + 6400: 0x3187, + 6401: 0x3188, + 6402: 0x3189, + 6403: 0x318A, + 6404: 0x318B, + 6405: 0x318C, + 6406: 0x318D, + 6407: 0x318E, + 6408: 0xCA47, + 6409: 0xCA48, + 6410: 0xCA49, + 6411: 0xCA4A, + 6412: 0xCA4B, + 6413: 0xCA4E, + 6414: 0xCA4F, + 6415: 0xCA51, + 6416: 0xCA52, + 6417: 0xCA53, + 6418: 0xCA55, + 6419: 0xCA56, + 6420: 0xCA57, + 6421: 0xCA58, + 6422: 0xCA59, + 6423: 0xCA5A, + 6424: 0xCA5B, + 6425: 0xCA5E, + 6426: 0xCA62, + 6427: 0xCA63, + 6428: 0xCA64, + 6429: 0xCA65, + 6430: 0xCA66, + 6431: 0xCA67, + 6432: 0xCA69, + 6433: 0xCA6A, + 6434: 0xCA6B, + 6435: 0xCA6C, + 6436: 0xCA6D, + 6437: 0xCA6E, + 6438: 0xCA6F, + 6439: 0xCA70, + 6440: 0xCA71, + 6441: 0xCA72, + 6442: 0xCA73, + 6443: 0xCA74, + 6444: 0xCA75, + 6445: 0xCA76, + 6446: 0xCA77, + 6447: 0xCA78, + 6448: 0xCA79, + 6449: 0xCA7A, + 6450: 0xCA7B, + 6451: 0xCA7C, + 6452: 0xCA7E, + 6453: 0xCA7F, + 6454: 0xCA80, + 6455: 0xCA81, + 6456: 0xCA82, + 6457: 0xCA83, + 6458: 0xCA85, + 6459: 0xCA86, + 6460: 0xCA87, + 6461: 0xCA88, + 6462: 0xCA89, + 6463: 0xCA8A, + 6464: 0xCA8B, + 6465: 0xCA8C, + 6466: 0xCA8D, + 6467: 0xCA8E, + 6468: 0xCA8F, + 6469: 0xCA90, + 6470: 0xCA91, + 6471: 0xCA92, + 6472: 0xCA93, + 6473: 0xCA94, + 6474: 0xCA95, + 6475: 0xCA96, + 6476: 0xCA97, + 6477: 0xCA99, + 6478: 0xCA9A, + 6479: 0xCA9B, + 6480: 0xCA9C, + 6481: 0xCA9D, + 6482: 0xCA9E, + 6483: 0xCA9F, + 6484: 0xCAA0, + 6485: 0xCAA1, + 6486: 0xCAA2, + 6487: 0xCAA3, + 6488: 0xCAA4, + 6489: 0xCAA5, + 6490: 0xCAA6, + 6491: 0xCAA7, + 6492: 0x2170, + 6493: 0x2171, + 6494: 0x2172, + 6495: 0x2173, + 6496: 0x2174, + 6497: 0x2175, + 6498: 0x2176, + 6499: 0x2177, + 6500: 0x2178, + 6501: 0x2179, + 6507: 0x2160, + 6508: 0x2161, + 6509: 0x2162, + 6510: 0x2163, + 6511: 0x2164, + 6512: 0x2165, + 6513: 0x2166, + 6514: 0x2167, + 6515: 0x2168, + 6516: 0x2169, + 6524: 0x0391, + 6525: 0x0392, + 6526: 0x0393, + 6527: 0x0394, + 6528: 0x0395, + 6529: 0x0396, + 6530: 0x0397, + 6531: 0x0398, + 6532: 0x0399, + 6533: 0x039A, + 6534: 0x039B, + 6535: 0x039C, + 6536: 0x039D, + 6537: 0x039E, + 6538: 0x039F, + 6539: 0x03A0, + 6540: 0x03A1, + 6541: 0x03A3, + 6542: 0x03A4, + 6543: 0x03A5, + 6544: 0x03A6, + 6545: 0x03A7, + 6546: 0x03A8, + 6547: 0x03A9, + 6556: 0x03B1, + 6557: 0x03B2, + 6558: 0x03B3, + 6559: 0x03B4, + 6560: 0x03B5, + 6561: 0x03B6, + 6562: 0x03B7, + 6563: 0x03B8, + 6564: 0x03B9, + 6565: 0x03BA, + 6566: 0x03BB, + 6567: 0x03BC, + 6568: 0x03BD, + 6569: 0x03BE, + 6570: 0x03BF, + 6571: 0x03C0, + 6572: 0x03C1, + 6573: 0x03C3, + 6574: 0x03C4, + 6575: 0x03C5, + 6576: 0x03C6, + 6577: 0x03C7, + 6578: 0x03C8, + 6579: 0x03C9, + 6586: 0xCAA8, + 6587: 0xCAA9, + 6588: 0xCAAA, + 6589: 0xCAAB, + 6590: 0xCAAC, + 6591: 0xCAAD, + 6592: 0xCAAE, + 6593: 0xCAAF, + 6594: 0xCAB0, + 6595: 0xCAB1, + 6596: 0xCAB2, + 6597: 0xCAB3, + 6598: 0xCAB4, + 6599: 0xCAB5, + 6600: 0xCAB6, + 6601: 0xCAB7, + 6602: 0xCAB8, + 6603: 0xCAB9, + 6604: 0xCABA, + 6605: 0xCABB, + 6606: 0xCABE, + 6607: 0xCABF, + 6608: 0xCAC1, + 6609: 0xCAC2, + 6610: 0xCAC3, + 6611: 0xCAC5, + 6612: 0xCAC6, + 6613: 0xCAC7, + 6614: 0xCAC8, + 6615: 0xCAC9, + 6616: 0xCACA, + 6617: 0xCACB, + 6618: 0xCACE, + 6619: 0xCAD0, + 6620: 0xCAD2, + 6621: 0xCAD4, + 6622: 0xCAD5, + 6623: 0xCAD6, + 6624: 0xCAD7, + 6625: 0xCADA, + 6626: 0xCADB, + 6627: 0xCADC, + 6628: 0xCADD, + 6629: 0xCADE, + 6630: 0xCADF, + 6631: 0xCAE1, + 6632: 0xCAE2, + 6633: 0xCAE3, + 6634: 0xCAE4, + 6635: 0xCAE5, + 6636: 0xCAE6, + 6637: 0xCAE7, + 6638: 0xCAE8, + 6639: 0xCAE9, + 6640: 0xCAEA, + 6641: 0xCAEB, + 6642: 0xCAED, + 6643: 0xCAEE, + 6644: 0xCAEF, + 6645: 0xCAF0, + 6646: 0xCAF1, + 6647: 0xCAF2, + 6648: 0xCAF3, + 6649: 0xCAF5, + 6650: 0xCAF6, + 6651: 0xCAF7, + 6652: 0xCAF8, + 6653: 0xCAF9, + 6654: 0xCAFA, + 6655: 0xCAFB, + 6656: 0xCAFC, + 6657: 0xCAFD, + 6658: 0xCAFE, + 6659: 0xCAFF, + 6660: 0xCB00, + 6661: 0xCB01, + 6662: 0xCB02, + 6663: 0xCB03, + 6664: 0xCB04, + 6665: 0xCB05, + 6666: 0xCB06, + 6667: 0xCB07, + 6668: 0xCB09, + 6669: 0xCB0A, + 6670: 0x2500, + 6671: 0x2502, + 6672: 0x250C, + 6673: 0x2510, + 6674: 0x2518, + 6675: 0x2514, + 6676: 0x251C, + 6677: 0x252C, + 6678: 0x2524, + 6679: 0x2534, + 6680: 0x253C, + 6681: 0x2501, + 6682: 0x2503, + 6683: 0x250F, + 6684: 0x2513, + 6685: 0x251B, + 6686: 0x2517, + 6687: 0x2523, + 6688: 0x2533, + 6689: 0x252B, + 6690: 0x253B, + 6691: 0x254B, + 6692: 0x2520, + 6693: 0x252F, + 6694: 0x2528, + 6695: 0x2537, + 6696: 0x253F, + 6697: 0x251D, + 6698: 0x2530, + 6699: 0x2525, + 6700: 0x2538, + 6701: 0x2542, + 6702: 0x2512, + 6703: 0x2511, + 6704: 0x251A, + 6705: 0x2519, + 6706: 0x2516, + 6707: 0x2515, + 6708: 0x250E, + 6709: 0x250D, + 6710: 0x251E, + 6711: 0x251F, + 6712: 0x2521, + 6713: 0x2522, + 6714: 0x2526, + 6715: 0x2527, + 6716: 0x2529, + 6717: 0x252A, + 6718: 0x252D, + 6719: 0x252E, + 6720: 0x2531, + 6721: 0x2532, + 6722: 0x2535, + 6723: 0x2536, + 6724: 0x2539, + 6725: 0x253A, + 6726: 0x253D, + 6727: 0x253E, + 6728: 0x2540, + 6729: 0x2541, + 6730: 0x2543, + 6731: 0x2544, + 6732: 0x2545, + 6733: 0x2546, + 6734: 0x2547, + 6735: 0x2548, + 6736: 0x2549, + 6737: 0x254A, + 6764: 0xCB0B, + 6765: 0xCB0C, + 6766: 0xCB0D, + 6767: 0xCB0E, + 6768: 0xCB0F, + 6769: 0xCB11, + 6770: 0xCB12, + 6771: 0xCB13, + 6772: 0xCB15, + 6773: 0xCB16, + 6774: 0xCB17, + 6775: 0xCB19, + 6776: 0xCB1A, + 6777: 0xCB1B, + 6778: 0xCB1C, + 6779: 0xCB1D, + 6780: 0xCB1E, + 6781: 0xCB1F, + 6782: 0xCB22, + 6783: 0xCB23, + 6784: 0xCB24, + 6785: 0xCB25, + 6786: 0xCB26, + 6787: 0xCB27, + 6788: 0xCB28, + 6789: 0xCB29, + 6790: 0xCB2A, + 6791: 0xCB2B, + 6792: 0xCB2C, + 6793: 0xCB2D, + 6794: 0xCB2E, + 6795: 0xCB2F, + 6796: 0xCB30, + 6797: 0xCB31, + 6798: 0xCB32, + 6799: 0xCB33, + 6800: 0xCB34, + 6801: 0xCB35, + 6802: 0xCB36, + 6803: 0xCB37, + 6804: 0xCB38, + 6805: 0xCB39, + 6806: 0xCB3A, + 6807: 0xCB3B, + 6808: 0xCB3C, + 6809: 0xCB3D, + 6810: 0xCB3E, + 6811: 0xCB3F, + 6812: 0xCB40, + 6813: 0xCB42, + 6814: 0xCB43, + 6815: 0xCB44, + 6816: 0xCB45, + 6817: 0xCB46, + 6818: 0xCB47, + 6819: 0xCB4A, + 6820: 0xCB4B, + 6821: 0xCB4D, + 6822: 0xCB4E, + 6823: 0xCB4F, + 6824: 0xCB51, + 6825: 0xCB52, + 6826: 0xCB53, + 6827: 0xCB54, + 6828: 0xCB55, + 6829: 0xCB56, + 6830: 0xCB57, + 6831: 0xCB5A, + 6832: 0xCB5B, + 6833: 0xCB5C, + 6834: 0xCB5E, + 6835: 0xCB5F, + 6836: 0xCB60, + 6837: 0xCB61, + 6838: 0xCB62, + 6839: 0xCB63, + 6840: 0xCB65, + 6841: 0xCB66, + 6842: 0xCB67, + 6843: 0xCB68, + 6844: 0xCB69, + 6845: 0xCB6A, + 6846: 0xCB6B, + 6847: 0xCB6C, + 6848: 0x3395, + 6849: 0x3396, + 6850: 0x3397, + 6851: 0x2113, + 6852: 0x3398, + 6853: 0x33C4, + 6854: 0x33A3, + 6855: 0x33A4, + 6856: 0x33A5, + 6857: 0x33A6, + 6858: 0x3399, + 6859: 0x339A, + 6860: 0x339B, + 6861: 0x339C, + 6862: 0x339D, + 6863: 0x339E, + 6864: 0x339F, + 6865: 0x33A0, + 6866: 0x33A1, + 6867: 0x33A2, + 6868: 0x33CA, + 6869: 0x338D, + 6870: 0x338E, + 6871: 0x338F, + 6872: 0x33CF, + 6873: 0x3388, + 6874: 0x3389, + 6875: 0x33C8, + 6876: 0x33A7, + 6877: 0x33A8, + 6878: 0x33B0, + 6879: 0x33B1, + 6880: 0x33B2, + 6881: 0x33B3, + 6882: 0x33B4, + 6883: 0x33B5, + 6884: 0x33B6, + 6885: 0x33B7, + 6886: 0x33B8, + 6887: 0x33B9, + 6888: 0x3380, + 6889: 0x3381, + 6890: 0x3382, + 6891: 0x3383, + 6892: 0x3384, + 6893: 0x33BA, + 6894: 0x33BB, + 6895: 0x33BC, + 6896: 0x33BD, + 6897: 0x33BE, + 6898: 0x33BF, + 6899: 0x3390, + 6900: 0x3391, + 6901: 0x3392, + 6902: 0x3393, + 6903: 0x3394, + 6904: 0x2126, + 6905: 0x33C0, + 6906: 0x33C1, + 6907: 0x338A, + 6908: 0x338B, + 6909: 0x338C, + 6910: 0x33D6, + 6911: 0x33C5, + 6912: 0x33AD, + 6913: 0x33AE, + 6914: 0x33AF, + 6915: 0x33DB, + 6916: 0x33A9, + 6917: 0x33AA, + 6918: 0x33AB, + 6919: 0x33AC, + 6920: 0x33DD, + 6921: 0x33D0, + 6922: 0x33D3, + 6923: 0x33C3, + 6924: 0x33C9, + 6925: 0x33DC, + 6926: 0x33C6, + 6942: 0xCB6D, + 6943: 0xCB6E, + 6944: 0xCB6F, + 6945: 0xCB70, + 6946: 0xCB71, + 6947: 0xCB72, + 6948: 0xCB73, + 6949: 0xCB74, + 6950: 0xCB75, + 6951: 0xCB76, + 6952: 0xCB77, + 6953: 0xCB7A, + 6954: 0xCB7B, + 6955: 0xCB7C, + 6956: 0xCB7D, + 6957: 0xCB7E, + 6958: 0xCB7F, + 6959: 0xCB80, + 6960: 0xCB81, + 6961: 0xCB82, + 6962: 0xCB83, + 6963: 0xCB84, + 6964: 0xCB85, + 6965: 0xCB86, + 6966: 0xCB87, + 6967: 0xCB88, + 6968: 0xCB89, + 6969: 0xCB8A, + 6970: 0xCB8B, + 6971: 0xCB8C, + 6972: 0xCB8D, + 6973: 0xCB8E, + 6974: 0xCB8F, + 6975: 0xCB90, + 6976: 0xCB91, + 6977: 0xCB92, + 6978: 0xCB93, + 6979: 0xCB94, + 6980: 0xCB95, + 6981: 0xCB96, + 6982: 0xCB97, + 6983: 0xCB98, + 6984: 0xCB99, + 6985: 0xCB9A, + 6986: 0xCB9B, + 6987: 0xCB9D, + 6988: 0xCB9E, + 6989: 0xCB9F, + 6990: 0xCBA0, + 6991: 0xCBA1, + 6992: 0xCBA2, + 6993: 0xCBA3, + 6994: 0xCBA4, + 6995: 0xCBA5, + 6996: 0xCBA6, + 6997: 0xCBA7, + 6998: 0xCBA8, + 6999: 0xCBA9, + 7000: 0xCBAA, + 7001: 0xCBAB, + 7002: 0xCBAC, + 7003: 0xCBAD, + 7004: 0xCBAE, + 7005: 0xCBAF, + 7006: 0xCBB0, + 7007: 0xCBB1, + 7008: 0xCBB2, + 7009: 0xCBB3, + 7010: 0xCBB4, + 7011: 0xCBB5, + 7012: 0xCBB6, + 7013: 0xCBB7, + 7014: 0xCBB9, + 7015: 0xCBBA, + 7016: 0xCBBB, + 7017: 0xCBBC, + 7018: 0xCBBD, + 7019: 0xCBBE, + 7020: 0xCBBF, + 7021: 0xCBC0, + 7022: 0xCBC1, + 7023: 0xCBC2, + 7024: 0xCBC3, + 7025: 0xCBC4, + 7026: 0x00C6, + 7027: 0x00D0, + 7028: 0x00AA, + 7029: 0x0126, + 7031: 0x0132, + 7033: 0x013F, + 7034: 0x0141, + 7035: 0x00D8, + 7036: 0x0152, + 7037: 0x00BA, + 7038: 0x00DE, + 7039: 0x0166, + 7040: 0x014A, + 7042: 0x3260, + 7043: 0x3261, + 7044: 0x3262, + 7045: 0x3263, + 7046: 0x3264, + 7047: 0x3265, + 7048: 0x3266, + 7049: 0x3267, + 7050: 0x3268, + 7051: 0x3269, + 7052: 0x326A, + 7053: 0x326B, + 7054: 0x326C, + 7055: 0x326D, + 7056: 0x326E, + 7057: 0x326F, + 7058: 0x3270, + 7059: 0x3271, + 7060: 0x3272, + 7061: 0x3273, + 7062: 0x3274, + 7063: 0x3275, + 7064: 0x3276, + 7065: 0x3277, + 7066: 0x3278, + 7067: 0x3279, + 7068: 0x327A, + 7069: 0x327B, + 7070: 0x24D0, + 7071: 0x24D1, + 7072: 0x24D2, + 7073: 0x24D3, + 7074: 0x24D4, + 7075: 0x24D5, + 7076: 0x24D6, + 7077: 0x24D7, + 7078: 0x24D8, + 7079: 0x24D9, + 7080: 0x24DA, + 7081: 0x24DB, + 7082: 0x24DC, + 7083: 0x24DD, + 7084: 0x24DE, + 7085: 0x24DF, + 7086: 0x24E0, + 7087: 0x24E1, + 7088: 0x24E2, + 7089: 0x24E3, + 7090: 0x24E4, + 7091: 0x24E5, + 7092: 0x24E6, + 7093: 0x24E7, + 7094: 0x24E8, + 7095: 0x24E9, + 7096: 0x2460, + 7097: 0x2461, + 7098: 0x2462, + 7099: 0x2463, + 7100: 0x2464, + 7101: 0x2465, + 7102: 0x2466, + 7103: 0x2467, + 7104: 0x2468, + 7105: 0x2469, + 7106: 0x246A, + 7107: 0x246B, + 7108: 0x246C, + 7109: 0x246D, + 7110: 0x246E, + 7111: 0x00BD, + 7112: 0x2153, + 7113: 0x2154, + 7114: 0x00BC, + 7115: 0x00BE, + 7116: 0x215B, + 7117: 0x215C, + 7118: 0x215D, + 7119: 0x215E, + 7120: 0xCBC5, + 7121: 0xCBC6, + 7122: 0xCBC7, + 7123: 0xCBC8, + 7124: 0xCBC9, + 7125: 0xCBCA, + 7126: 0xCBCB, + 7127: 0xCBCC, + 7128: 0xCBCD, + 7129: 0xCBCE, + 7130: 0xCBCF, + 7131: 0xCBD0, + 7132: 0xCBD1, + 7133: 0xCBD2, + 7134: 0xCBD3, + 7135: 0xCBD5, + 7136: 0xCBD6, + 7137: 0xCBD7, + 7138: 0xCBD8, + 7139: 0xCBD9, + 7140: 0xCBDA, + 7141: 0xCBDB, + 7142: 0xCBDC, + 7143: 0xCBDD, + 7144: 0xCBDE, + 7145: 0xCBDF, + 7146: 0xCBE0, + 7147: 0xCBE1, + 7148: 0xCBE2, + 7149: 0xCBE3, + 7150: 0xCBE5, + 7151: 0xCBE6, + 7152: 0xCBE8, + 7153: 0xCBEA, + 7154: 0xCBEB, + 7155: 0xCBEC, + 7156: 0xCBED, + 7157: 0xCBEE, + 7158: 0xCBEF, + 7159: 0xCBF0, + 7160: 0xCBF1, + 7161: 0xCBF2, + 7162: 0xCBF3, + 7163: 0xCBF4, + 7164: 0xCBF5, + 7165: 0xCBF6, + 7166: 0xCBF7, + 7167: 0xCBF8, + 7168: 0xCBF9, + 7169: 0xCBFA, + 7170: 0xCBFB, + 7171: 0xCBFC, + 7172: 0xCBFD, + 7173: 0xCBFE, + 7174: 0xCBFF, + 7175: 0xCC00, + 7176: 0xCC01, + 7177: 0xCC02, + 7178: 0xCC03, + 7179: 0xCC04, + 7180: 0xCC05, + 7181: 0xCC06, + 7182: 0xCC07, + 7183: 0xCC08, + 7184: 0xCC09, + 7185: 0xCC0A, + 7186: 0xCC0B, + 7187: 0xCC0E, + 7188: 0xCC0F, + 7189: 0xCC11, + 7190: 0xCC12, + 7191: 0xCC13, + 7192: 0xCC15, + 7193: 0xCC16, + 7194: 0xCC17, + 7195: 0xCC18, + 7196: 0xCC19, + 7197: 0xCC1A, + 7198: 0xCC1B, + 7199: 0xCC1E, + 7200: 0xCC1F, + 7201: 0xCC20, + 7202: 0xCC23, + 7203: 0xCC24, + 7204: 0x00E6, + 7205: 0x0111, + 7206: 0x00F0, + 7207: 0x0127, + 7208: 0x0131, + 7209: 0x0133, + 7210: 0x0138, + 7211: 0x0140, + 7212: 0x0142, + 7213: 0x00F8, + 7214: 0x0153, + 7215: 0x00DF, + 7216: 0x00FE, + 7217: 0x0167, + 7218: 0x014B, + 7219: 0x0149, + 7220: 0x3200, + 7221: 0x3201, + 7222: 0x3202, + 7223: 0x3203, + 7224: 0x3204, + 7225: 0x3205, + 7226: 0x3206, + 7227: 0x3207, + 7228: 0x3208, + 7229: 0x3209, + 7230: 0x320A, + 7231: 0x320B, + 7232: 0x320C, + 7233: 0x320D, + 7234: 0x320E, + 7235: 0x320F, + 7236: 0x3210, + 7237: 0x3211, + 7238: 0x3212, + 7239: 0x3213, + 7240: 0x3214, + 7241: 0x3215, + 7242: 0x3216, + 7243: 0x3217, + 7244: 0x3218, + 7245: 0x3219, + 7246: 0x321A, + 7247: 0x321B, + 7248: 0x249C, + 7249: 0x249D, + 7250: 0x249E, + 7251: 0x249F, + 7252: 0x24A0, + 7253: 0x24A1, + 7254: 0x24A2, + 7255: 0x24A3, + 7256: 0x24A4, + 7257: 0x24A5, + 7258: 0x24A6, + 7259: 0x24A7, + 7260: 0x24A8, + 7261: 0x24A9, + 7262: 0x24AA, + 7263: 0x24AB, + 7264: 0x24AC, + 7265: 0x24AD, + 7266: 0x24AE, + 7267: 0x24AF, + 7268: 0x24B0, + 7269: 0x24B1, + 7270: 0x24B2, + 7271: 0x24B3, + 7272: 0x24B4, + 7273: 0x24B5, + 7274: 0x2474, + 7275: 0x2475, + 7276: 0x2476, + 7277: 0x2477, + 7278: 0x2478, + 7279: 0x2479, + 7280: 0x247A, + 7281: 0x247B, + 7282: 0x247C, + 7283: 0x247D, + 7284: 0x247E, + 7285: 0x247F, + 7286: 0x2480, + 7287: 0x2481, + 7288: 0x2482, + 7289: 0x00B9, + 7290: 0x00B2, + 7291: 0x00B3, + 7292: 0x2074, + 7293: 0x207F, + 7294: 0x2081, + 7295: 0x2082, + 7296: 0x2083, + 7297: 0x2084, + 7298: 0xCC25, + 7299: 0xCC26, + 7300: 0xCC2A, + 7301: 0xCC2B, + 7302: 0xCC2D, + 7303: 0xCC2F, + 7304: 0xCC31, + 7305: 0xCC32, + 7306: 0xCC33, + 7307: 0xCC34, + 7308: 0xCC35, + 7309: 0xCC36, + 7310: 0xCC37, + 7311: 0xCC3A, + 7312: 0xCC3F, + 7313: 0xCC40, + 7314: 0xCC41, + 7315: 0xCC42, + 7316: 0xCC43, + 7317: 0xCC46, + 7318: 0xCC47, + 7319: 0xCC49, + 7320: 0xCC4A, + 7321: 0xCC4B, + 7322: 0xCC4D, + 7323: 0xCC4E, + 7324: 0xCC4F, + 7325: 0xCC50, + 7326: 0xCC51, + 7327: 0xCC52, + 7328: 0xCC53, + 7329: 0xCC56, + 7330: 0xCC5A, + 7331: 0xCC5B, + 7332: 0xCC5C, + 7333: 0xCC5D, + 7334: 0xCC5E, + 7335: 0xCC5F, + 7336: 0xCC61, + 7337: 0xCC62, + 7338: 0xCC63, + 7339: 0xCC65, + 7340: 0xCC67, + 7341: 0xCC69, + 7342: 0xCC6A, + 7343: 0xCC6B, + 7344: 0xCC6C, + 7345: 0xCC6D, + 7346: 0xCC6E, + 7347: 0xCC6F, + 7348: 0xCC71, + 7349: 0xCC72, + 7350: 0xCC73, + 7351: 0xCC74, + 7352: 0xCC76, + 7353: 0xCC77, + 7354: 0xCC78, + 7355: 0xCC79, + 7356: 0xCC7A, + 7357: 0xCC7B, + 7358: 0xCC7C, + 7359: 0xCC7D, + 7360: 0xCC7E, + 7361: 0xCC7F, + 7362: 0xCC80, + 7363: 0xCC81, + 7364: 0xCC82, + 7365: 0xCC83, + 7366: 0xCC84, + 7367: 0xCC85, + 7368: 0xCC86, + 7369: 0xCC87, + 7370: 0xCC88, + 7371: 0xCC89, + 7372: 0xCC8A, + 7373: 0xCC8B, + 7374: 0xCC8C, + 7375: 0xCC8D, + 7376: 0xCC8E, + 7377: 0xCC8F, + 7378: 0xCC90, + 7379: 0xCC91, + 7380: 0xCC92, + 7381: 0xCC93, + 7382: 0x3041, + 7383: 0x3042, + 7384: 0x3043, + 7385: 0x3044, + 7386: 0x3045, + 7387: 0x3046, + 7388: 0x3047, + 7389: 0x3048, + 7390: 0x3049, + 7391: 0x304A, + 7392: 0x304B, + 7393: 0x304C, + 7394: 0x304D, + 7395: 0x304E, + 7396: 0x304F, + 7397: 0x3050, + 7398: 0x3051, + 7399: 0x3052, + 7400: 0x3053, + 7401: 0x3054, + 7402: 0x3055, + 7403: 0x3056, + 7404: 0x3057, + 7405: 0x3058, + 7406: 0x3059, + 7407: 0x305A, + 7408: 0x305B, + 7409: 0x305C, + 7410: 0x305D, + 7411: 0x305E, + 7412: 0x305F, + 7413: 0x3060, + 7414: 0x3061, + 7415: 0x3062, + 7416: 0x3063, + 7417: 0x3064, + 7418: 0x3065, + 7419: 0x3066, + 7420: 0x3067, + 7421: 0x3068, + 7422: 0x3069, + 7423: 0x306A, + 7424: 0x306B, + 7425: 0x306C, + 7426: 0x306D, + 7427: 0x306E, + 7428: 0x306F, + 7429: 0x3070, + 7430: 0x3071, + 7431: 0x3072, + 7432: 0x3073, + 7433: 0x3074, + 7434: 0x3075, + 7435: 0x3076, + 7436: 0x3077, + 7437: 0x3078, + 7438: 0x3079, + 7439: 0x307A, + 7440: 0x307B, + 7441: 0x307C, + 7442: 0x307D, + 7443: 0x307E, + 7444: 0x307F, + 7445: 0x3080, + 7446: 0x3081, + 7447: 0x3082, + 7448: 0x3083, + 7449: 0x3084, + 7450: 0x3085, + 7451: 0x3086, + 7452: 0x3087, + 7453: 0x3088, + 7454: 0x3089, + 7455: 0x308A, + 7456: 0x308B, + 7457: 0x308C, + 7458: 0x308D, + 7459: 0x308E, + 7460: 0x308F, + 7461: 0x3090, + 7462: 0x3091, + 7463: 0x3092, + 7464: 0x3093, + 7476: 0xCC94, + 7477: 0xCC95, + 7478: 0xCC96, + 7479: 0xCC97, + 7480: 0xCC9A, + 7481: 0xCC9B, + 7482: 0xCC9D, + 7483: 0xCC9E, + 7484: 0xCC9F, + 7485: 0xCCA1, + 7486: 0xCCA2, + 7487: 0xCCA3, + 7488: 0xCCA4, + 7489: 0xCCA5, + 7490: 0xCCA6, + 7491: 0xCCA7, + 7492: 0xCCAA, + 7493: 0xCCAE, + 7494: 0xCCAF, + 7495: 0xCCB0, + 7496: 0xCCB1, + 7497: 0xCCB2, + 7498: 0xCCB3, + 7499: 0xCCB6, + 7500: 0xCCB7, + 7501: 0xCCB9, + 7502: 0xCCBA, + 7503: 0xCCBB, + 7504: 0xCCBD, + 7505: 0xCCBE, + 7506: 0xCCBF, + 7507: 0xCCC0, + 7508: 0xCCC1, + 7509: 0xCCC2, + 7510: 0xCCC3, + 7511: 0xCCC6, + 7512: 0xCCC8, + 7513: 0xCCCA, + 7514: 0xCCCB, + 7515: 0xCCCC, + 7516: 0xCCCD, + 7517: 0xCCCE, + 7518: 0xCCCF, + 7519: 0xCCD1, + 7520: 0xCCD2, + 7521: 0xCCD3, + 7522: 0xCCD5, + 7523: 0xCCD6, + 7524: 0xCCD7, + 7525: 0xCCD8, + 7526: 0xCCD9, + 7527: 0xCCDA, + 7528: 0xCCDB, + 7529: 0xCCDC, + 7530: 0xCCDD, + 7531: 0xCCDE, + 7532: 0xCCDF, + 7533: 0xCCE0, + 7534: 0xCCE1, + 7535: 0xCCE2, + 7536: 0xCCE3, + 7537: 0xCCE5, + 7538: 0xCCE6, + 7539: 0xCCE7, + 7540: 0xCCE8, + 7541: 0xCCE9, + 7542: 0xCCEA, + 7543: 0xCCEB, + 7544: 0xCCED, + 7545: 0xCCEE, + 7546: 0xCCEF, + 7547: 0xCCF1, + 7548: 0xCCF2, + 7549: 0xCCF3, + 7550: 0xCCF4, + 7551: 0xCCF5, + 7552: 0xCCF6, + 7553: 0xCCF7, + 7554: 0xCCF8, + 7555: 0xCCF9, + 7556: 0xCCFA, + 7557: 0xCCFB, + 7558: 0xCCFC, + 7559: 0xCCFD, + 7560: 0x30A1, + 7561: 0x30A2, + 7562: 0x30A3, + 7563: 0x30A4, + 7564: 0x30A5, + 7565: 0x30A6, + 7566: 0x30A7, + 7567: 0x30A8, + 7568: 0x30A9, + 7569: 0x30AA, + 7570: 0x30AB, + 7571: 0x30AC, + 7572: 0x30AD, + 7573: 0x30AE, + 7574: 0x30AF, + 7575: 0x30B0, + 7576: 0x30B1, + 7577: 0x30B2, + 7578: 0x30B3, + 7579: 0x30B4, + 7580: 0x30B5, + 7581: 0x30B6, + 7582: 0x30B7, + 7583: 0x30B8, + 7584: 0x30B9, + 7585: 0x30BA, + 7586: 0x30BB, + 7587: 0x30BC, + 7588: 0x30BD, + 7589: 0x30BE, + 7590: 0x30BF, + 7591: 0x30C0, + 7592: 0x30C1, + 7593: 0x30C2, + 7594: 0x30C3, + 7595: 0x30C4, + 7596: 0x30C5, + 7597: 0x30C6, + 7598: 0x30C7, + 7599: 0x30C8, + 7600: 0x30C9, + 7601: 0x30CA, + 7602: 0x30CB, + 7603: 0x30CC, + 7604: 0x30CD, + 7605: 0x30CE, + 7606: 0x30CF, + 7607: 0x30D0, + 7608: 0x30D1, + 7609: 0x30D2, + 7610: 0x30D3, + 7611: 0x30D4, + 7612: 0x30D5, + 7613: 0x30D6, + 7614: 0x30D7, + 7615: 0x30D8, + 7616: 0x30D9, + 7617: 0x30DA, + 7618: 0x30DB, + 7619: 0x30DC, + 7620: 0x30DD, + 7621: 0x30DE, + 7622: 0x30DF, + 7623: 0x30E0, + 7624: 0x30E1, + 7625: 0x30E2, + 7626: 0x30E3, + 7627: 0x30E4, + 7628: 0x30E5, + 7629: 0x30E6, + 7630: 0x30E7, + 7631: 0x30E8, + 7632: 0x30E9, + 7633: 0x30EA, + 7634: 0x30EB, + 7635: 0x30EC, + 7636: 0x30ED, + 7637: 0x30EE, + 7638: 0x30EF, + 7639: 0x30F0, + 7640: 0x30F1, + 7641: 0x30F2, + 7642: 0x30F3, + 7643: 0x30F4, + 7644: 0x30F5, + 7645: 0x30F6, + 7654: 0xCCFE, + 7655: 0xCCFF, + 7656: 0xCD00, + 7657: 0xCD02, + 7658: 0xCD03, + 7659: 0xCD04, + 7660: 0xCD05, + 7661: 0xCD06, + 7662: 0xCD07, + 7663: 0xCD0A, + 7664: 0xCD0B, + 7665: 0xCD0D, + 7666: 0xCD0E, + 7667: 0xCD0F, + 7668: 0xCD11, + 7669: 0xCD12, + 7670: 0xCD13, + 7671: 0xCD14, + 7672: 0xCD15, + 7673: 0xCD16, + 7674: 0xCD17, + 7675: 0xCD1A, + 7676: 0xCD1C, + 7677: 0xCD1E, + 7678: 0xCD1F, + 7679: 0xCD20, + 7680: 0xCD21, + 7681: 0xCD22, + 7682: 0xCD23, + 7683: 0xCD25, + 7684: 0xCD26, + 7685: 0xCD27, + 7686: 0xCD29, + 7687: 0xCD2A, + 7688: 0xCD2B, + 7689: 0xCD2D, + 7690: 0xCD2E, + 7691: 0xCD2F, + 7692: 0xCD30, + 7693: 0xCD31, + 7694: 0xCD32, + 7695: 0xCD33, + 7696: 0xCD34, + 7697: 0xCD35, + 7698: 0xCD36, + 7699: 0xCD37, + 7700: 0xCD38, + 7701: 0xCD3A, + 7702: 0xCD3B, + 7703: 0xCD3C, + 7704: 0xCD3D, + 7705: 0xCD3E, + 7706: 0xCD3F, + 7707: 0xCD40, + 7708: 0xCD41, + 7709: 0xCD42, + 7710: 0xCD43, + 7711: 0xCD44, + 7712: 0xCD45, + 7713: 0xCD46, + 7714: 0xCD47, + 7715: 0xCD48, + 7716: 0xCD49, + 7717: 0xCD4A, + 7718: 0xCD4B, + 7719: 0xCD4C, + 7720: 0xCD4D, + 7721: 0xCD4E, + 7722: 0xCD4F, + 7723: 0xCD50, + 7724: 0xCD51, + 7725: 0xCD52, + 7726: 0xCD53, + 7727: 0xCD54, + 7728: 0xCD55, + 7729: 0xCD56, + 7730: 0xCD57, + 7731: 0xCD58, + 7732: 0xCD59, + 7733: 0xCD5A, + 7734: 0xCD5B, + 7735: 0xCD5D, + 7736: 0xCD5E, + 7737: 0xCD5F, + 7738: 0x0410, + 7739: 0x0411, + 7740: 0x0412, + 7741: 0x0413, + 7742: 0x0414, + 7743: 0x0415, + 7744: 0x0401, + 7745: 0x0416, + 7746: 0x0417, + 7747: 0x0418, + 7748: 0x0419, + 7749: 0x041A, + 7750: 0x041B, + 7751: 0x041C, + 7752: 0x041D, + 7753: 0x041E, + 7754: 0x041F, + 7755: 0x0420, + 7756: 0x0421, + 7757: 0x0422, + 7758: 0x0423, + 7759: 0x0424, + 7760: 0x0425, + 7761: 0x0426, + 7762: 0x0427, + 7763: 0x0428, + 7764: 0x0429, + 7765: 0x042A, + 7766: 0x042B, + 7767: 0x042C, + 7768: 0x042D, + 7769: 0x042E, + 7770: 0x042F, + 7786: 0x0430, + 7787: 0x0431, + 7788: 0x0432, + 7789: 0x0433, + 7790: 0x0434, + 7791: 0x0435, + 7792: 0x0451, + 7793: 0x0436, + 7794: 0x0437, + 7795: 0x0438, + 7796: 0x0439, + 7797: 0x043A, + 7798: 0x043B, + 7799: 0x043C, + 7800: 0x043D, + 7801: 0x043E, + 7802: 0x043F, + 7803: 0x0440, + 7804: 0x0441, + 7805: 0x0442, + 7806: 0x0443, + 7807: 0x0444, + 7808: 0x0445, + 7809: 0x0446, + 7810: 0x0447, + 7811: 0x0448, + 7812: 0x0449, + 7813: 0x044A, + 7814: 0x044B, + 7815: 0x044C, + 7816: 0x044D, + 7817: 0x044E, + 7818: 0x044F, + 7832: 0xCD61, + 7833: 0xCD62, + 7834: 0xCD63, + 7835: 0xCD65, + 7836: 0xCD66, + 7837: 0xCD67, + 7838: 0xCD68, + 7839: 0xCD69, + 7840: 0xCD6A, + 7841: 0xCD6B, + 7842: 0xCD6E, + 7843: 0xCD70, + 7844: 0xCD72, + 7845: 0xCD73, + 7846: 0xCD74, + 7847: 0xCD75, + 7848: 0xCD76, + 7849: 0xCD77, + 7850: 0xCD79, + 7851: 0xCD7A, + 7852: 0xCD7B, + 7853: 0xCD7C, + 7854: 0xCD7D, + 7855: 0xCD7E, + 7856: 0xCD7F, + 7857: 0xCD80, + 7858: 0xCD81, + 7859: 0xCD82, + 7860: 0xCD83, + 7861: 0xCD84, + 7862: 0xCD85, + 7863: 0xCD86, + 7864: 0xCD87, + 7865: 0xCD89, + 7866: 0xCD8A, + 7867: 0xCD8B, + 7868: 0xCD8C, + 7869: 0xCD8D, + 7870: 0xCD8E, + 7871: 0xCD8F, + 7872: 0xCD90, + 7873: 0xCD91, + 7874: 0xCD92, + 7875: 0xCD93, + 7876: 0xCD96, + 7877: 0xCD97, + 7878: 0xCD99, + 7879: 0xCD9A, + 7880: 0xCD9B, + 7881: 0xCD9D, + 7882: 0xCD9E, + 7883: 0xCD9F, + 7884: 0xCDA0, + 7885: 0xCDA1, + 7886: 0xCDA2, + 7887: 0xCDA3, + 7888: 0xCDA6, + 7889: 0xCDA8, + 7890: 0xCDAA, + 7891: 0xCDAB, + 7892: 0xCDAC, + 7893: 0xCDAD, + 7894: 0xCDAE, + 7895: 0xCDAF, + 7896: 0xCDB1, + 7897: 0xCDB2, + 7898: 0xCDB3, + 7899: 0xCDB4, + 7900: 0xCDB5, + 7901: 0xCDB6, + 7902: 0xCDB7, + 7903: 0xCDB8, + 7904: 0xCDB9, + 7905: 0xCDBA, + 7906: 0xCDBB, + 7907: 0xCDBC, + 7908: 0xCDBD, + 7909: 0xCDBE, + 7910: 0xCDBF, + 7911: 0xCDC0, + 7912: 0xCDC1, + 7913: 0xCDC2, + 7914: 0xCDC3, + 7915: 0xCDC5, + 8010: 0xCDC6, + 8011: 0xCDC7, + 8012: 0xCDC8, + 8013: 0xCDC9, + 8014: 0xCDCA, + 8015: 0xCDCB, + 8016: 0xCDCD, + 8017: 0xCDCE, + 8018: 0xCDCF, + 8019: 0xCDD1, + 8020: 0xCDD2, + 8021: 0xCDD3, + 8022: 0xCDD4, + 8023: 0xCDD5, + 8024: 0xCDD6, + 8025: 0xCDD7, + 8026: 0xCDD8, + 8027: 0xCDD9, + 8028: 0xCDDA, + 8029: 0xCDDB, + 8030: 0xCDDC, + 8031: 0xCDDD, + 8032: 0xCDDE, + 8033: 0xCDDF, + 8034: 0xCDE0, + 8035: 0xCDE1, + 8036: 0xCDE2, + 8037: 0xCDE3, + 8038: 0xCDE4, + 8039: 0xCDE5, + 8040: 0xCDE6, + 8041: 0xCDE7, + 8042: 0xCDE9, + 8043: 0xCDEA, + 8044: 0xCDEB, + 8045: 0xCDED, + 8046: 0xCDEE, + 8047: 0xCDEF, + 8048: 0xCDF1, + 8049: 0xCDF2, + 8050: 0xCDF3, + 8051: 0xCDF4, + 8052: 0xCDF5, + 8053: 0xCDF6, + 8054: 0xCDF7, + 8055: 0xCDFA, + 8056: 0xCDFC, + 8057: 0xCDFE, + 8058: 0xCDFF, + 8059: 0xCE00, + 8060: 0xCE01, + 8061: 0xCE02, + 8062: 0xCE03, + 8063: 0xCE05, + 8064: 0xCE06, + 8065: 0xCE07, + 8066: 0xCE09, + 8067: 0xCE0A, + 8068: 0xCE0B, + 8069: 0xCE0D, + 8070: 0xCE0E, + 8071: 0xCE0F, + 8072: 0xCE10, + 8073: 0xCE11, + 8074: 0xCE12, + 8075: 0xCE13, + 8076: 0xCE15, + 8077: 0xCE16, + 8078: 0xCE17, + 8079: 0xCE18, + 8080: 0xCE1A, + 8081: 0xCE1B, + 8082: 0xCE1C, + 8083: 0xCE1D, + 8084: 0xCE1E, + 8085: 0xCE1F, + 8086: 0xCE22, + 8087: 0xCE23, + 8088: 0xCE25, + 8089: 0xCE26, + 8090: 0xCE27, + 8091: 0xCE29, + 8092: 0xCE2A, + 8093: 0xCE2B, + 8188: 0xCE2C, + 8189: 0xCE2D, + 8190: 0xCE2E, + 8191: 0xCE2F, + 8192: 0xCE32, + 8193: 0xCE34, + 8194: 0xCE36, + 8195: 0xCE37, + 8196: 0xCE38, + 8197: 0xCE39, + 8198: 0xCE3A, + 8199: 0xCE3B, + 8200: 0xCE3C, + 8201: 0xCE3D, + 8202: 0xCE3E, + 8203: 0xCE3F, + 8204: 0xCE40, + 8205: 0xCE41, + 8206: 0xCE42, + 8207: 0xCE43, + 8208: 0xCE44, + 8209: 0xCE45, + 8210: 0xCE46, + 8211: 0xCE47, + 8212: 0xCE48, + 8213: 0xCE49, + 8214: 0xCE4A, + 8215: 0xCE4B, + 8216: 0xCE4C, + 8217: 0xCE4D, + 8218: 0xCE4E, + 8219: 0xCE4F, + 8220: 0xCE50, + 8221: 0xCE51, + 8222: 0xCE52, + 8223: 0xCE53, + 8224: 0xCE54, + 8225: 0xCE55, + 8226: 0xCE56, + 8227: 0xCE57, + 8228: 0xCE5A, + 8229: 0xCE5B, + 8230: 0xCE5D, + 8231: 0xCE5E, + 8232: 0xCE62, + 8233: 0xCE63, + 8234: 0xCE64, + 8235: 0xCE65, + 8236: 0xCE66, + 8237: 0xCE67, + 8238: 0xCE6A, + 8239: 0xCE6C, + 8240: 0xCE6E, + 8241: 0xCE6F, + 8242: 0xCE70, + 8243: 0xCE71, + 8244: 0xCE72, + 8245: 0xCE73, + 8246: 0xCE76, + 8247: 0xCE77, + 8248: 0xCE79, + 8249: 0xCE7A, + 8250: 0xCE7B, + 8251: 0xCE7D, + 8252: 0xCE7E, + 8253: 0xCE7F, + 8254: 0xCE80, + 8255: 0xCE81, + 8256: 0xCE82, + 8257: 0xCE83, + 8258: 0xCE86, + 8259: 0xCE88, + 8260: 0xCE8A, + 8261: 0xCE8B, + 8262: 0xCE8C, + 8263: 0xCE8D, + 8264: 0xCE8E, + 8265: 0xCE8F, + 8266: 0xCE92, + 8267: 0xCE93, + 8268: 0xCE95, + 8269: 0xCE96, + 8270: 0xCE97, + 8271: 0xCE99, + 8366: 0xCE9A, + 8367: 0xCE9B, + 8368: 0xCE9C, + 8369: 0xCE9D, + 8370: 0xCE9E, + 8371: 0xCE9F, + 8372: 0xCEA2, + 8373: 0xCEA6, + 8374: 0xCEA7, + 8375: 0xCEA8, + 8376: 0xCEA9, + 8377: 0xCEAA, + 8378: 0xCEAB, + 8379: 0xCEAE, + 8380: 0xCEAF, + 8381: 0xCEB0, + 8382: 0xCEB1, + 8383: 0xCEB2, + 8384: 0xCEB3, + 8385: 0xCEB4, + 8386: 0xCEB5, + 8387: 0xCEB6, + 8388: 0xCEB7, + 8389: 0xCEB8, + 8390: 0xCEB9, + 8391: 0xCEBA, + 8392: 0xCEBB, + 8393: 0xCEBC, + 8394: 0xCEBD, + 8395: 0xCEBE, + 8396: 0xCEBF, + 8397: 0xCEC0, + 8398: 0xCEC2, + 8399: 0xCEC3, + 8400: 0xCEC4, + 8401: 0xCEC5, + 8402: 0xCEC6, + 8403: 0xCEC7, + 8404: 0xCEC8, + 8405: 0xCEC9, + 8406: 0xCECA, + 8407: 0xCECB, + 8408: 0xCECC, + 8409: 0xCECD, + 8410: 0xCECE, + 8411: 0xCECF, + 8412: 0xCED0, + 8413: 0xCED1, + 8414: 0xCED2, + 8415: 0xCED3, + 8416: 0xCED4, + 8417: 0xCED5, + 8418: 0xCED6, + 8419: 0xCED7, + 8420: 0xCED8, + 8421: 0xCED9, + 8422: 0xCEDA, + 8423: 0xCEDB, + 8424: 0xCEDC, + 8425: 0xCEDD, + 8426: 0xCEDE, + 8427: 0xCEDF, + 8428: 0xCEE0, + 8429: 0xCEE1, + 8430: 0xCEE2, + 8431: 0xCEE3, + 8432: 0xCEE6, + 8433: 0xCEE7, + 8434: 0xCEE9, + 8435: 0xCEEA, + 8436: 0xCEED, + 8437: 0xCEEE, + 8438: 0xCEEF, + 8439: 0xCEF0, + 8440: 0xCEF1, + 8441: 0xCEF2, + 8442: 0xCEF3, + 8443: 0xCEF6, + 8444: 0xCEFA, + 8445: 0xCEFB, + 8446: 0xCEFC, + 8447: 0xCEFD, + 8448: 0xCEFE, + 8449: 0xCEFF, + 8450: 0xAC00, + 8451: 0xAC01, + 8452: 0xAC04, + 8453: 0xAC07, + 8454: 0xAC08, + 8455: 0xAC09, + 8456: 0xAC0A, + 8457: 0xAC10, + 8458: 0xAC11, + 8459: 0xAC12, + 8460: 0xAC13, + 8461: 0xAC14, + 8462: 0xAC15, + 8463: 0xAC16, + 8464: 0xAC17, + 8465: 0xAC19, + 8466: 0xAC1A, + 8467: 0xAC1B, + 8468: 0xAC1C, + 8469: 0xAC1D, + 8470: 0xAC20, + 8471: 0xAC24, + 8472: 0xAC2C, + 8473: 0xAC2D, + 8474: 0xAC2F, + 8475: 0xAC30, + 8476: 0xAC31, + 8477: 0xAC38, + 8478: 0xAC39, + 8479: 0xAC3C, + 8480: 0xAC40, + 8481: 0xAC4B, + 8482: 0xAC4D, + 8483: 0xAC54, + 8484: 0xAC58, + 8485: 0xAC5C, + 8486: 0xAC70, + 8487: 0xAC71, + 8488: 0xAC74, + 8489: 0xAC77, + 8490: 0xAC78, + 8491: 0xAC7A, + 8492: 0xAC80, + 8493: 0xAC81, + 8494: 0xAC83, + 8495: 0xAC84, + 8496: 0xAC85, + 8497: 0xAC86, + 8498: 0xAC89, + 8499: 0xAC8A, + 8500: 0xAC8B, + 8501: 0xAC8C, + 8502: 0xAC90, + 8503: 0xAC94, + 8504: 0xAC9C, + 8505: 0xAC9D, + 8506: 0xAC9F, + 8507: 0xACA0, + 8508: 0xACA1, + 8509: 0xACA8, + 8510: 0xACA9, + 8511: 0xACAA, + 8512: 0xACAC, + 8513: 0xACAF, + 8514: 0xACB0, + 8515: 0xACB8, + 8516: 0xACB9, + 8517: 0xACBB, + 8518: 0xACBC, + 8519: 0xACBD, + 8520: 0xACC1, + 8521: 0xACC4, + 8522: 0xACC8, + 8523: 0xACCC, + 8524: 0xACD5, + 8525: 0xACD7, + 8526: 0xACE0, + 8527: 0xACE1, + 8528: 0xACE4, + 8529: 0xACE7, + 8530: 0xACE8, + 8531: 0xACEA, + 8532: 0xACEC, + 8533: 0xACEF, + 8534: 0xACF0, + 8535: 0xACF1, + 8536: 0xACF3, + 8537: 0xACF5, + 8538: 0xACF6, + 8539: 0xACFC, + 8540: 0xACFD, + 8541: 0xAD00, + 8542: 0xAD04, + 8543: 0xAD06, + 8544: 0xCF02, + 8545: 0xCF03, + 8546: 0xCF05, + 8547: 0xCF06, + 8548: 0xCF07, + 8549: 0xCF09, + 8550: 0xCF0A, + 8551: 0xCF0B, + 8552: 0xCF0C, + 8553: 0xCF0D, + 8554: 0xCF0E, + 8555: 0xCF0F, + 8556: 0xCF12, + 8557: 0xCF14, + 8558: 0xCF16, + 8559: 0xCF17, + 8560: 0xCF18, + 8561: 0xCF19, + 8562: 0xCF1A, + 8563: 0xCF1B, + 8564: 0xCF1D, + 8565: 0xCF1E, + 8566: 0xCF1F, + 8567: 0xCF21, + 8568: 0xCF22, + 8569: 0xCF23, + 8570: 0xCF25, + 8571: 0xCF26, + 8572: 0xCF27, + 8573: 0xCF28, + 8574: 0xCF29, + 8575: 0xCF2A, + 8576: 0xCF2B, + 8577: 0xCF2E, + 8578: 0xCF32, + 8579: 0xCF33, + 8580: 0xCF34, + 8581: 0xCF35, + 8582: 0xCF36, + 8583: 0xCF37, + 8584: 0xCF39, + 8585: 0xCF3A, + 8586: 0xCF3B, + 8587: 0xCF3C, + 8588: 0xCF3D, + 8589: 0xCF3E, + 8590: 0xCF3F, + 8591: 0xCF40, + 8592: 0xCF41, + 8593: 0xCF42, + 8594: 0xCF43, + 8595: 0xCF44, + 8596: 0xCF45, + 8597: 0xCF46, + 8598: 0xCF47, + 8599: 0xCF48, + 8600: 0xCF49, + 8601: 0xCF4A, + 8602: 0xCF4B, + 8603: 0xCF4C, + 8604: 0xCF4D, + 8605: 0xCF4E, + 8606: 0xCF4F, + 8607: 0xCF50, + 8608: 0xCF51, + 8609: 0xCF52, + 8610: 0xCF53, + 8611: 0xCF56, + 8612: 0xCF57, + 8613: 0xCF59, + 8614: 0xCF5A, + 8615: 0xCF5B, + 8616: 0xCF5D, + 8617: 0xCF5E, + 8618: 0xCF5F, + 8619: 0xCF60, + 8620: 0xCF61, + 8621: 0xCF62, + 8622: 0xCF63, + 8623: 0xCF66, + 8624: 0xCF68, + 8625: 0xCF6A, + 8626: 0xCF6B, + 8627: 0xCF6C, + 8628: 0xAD0C, + 8629: 0xAD0D, + 8630: 0xAD0F, + 8631: 0xAD11, + 8632: 0xAD18, + 8633: 0xAD1C, + 8634: 0xAD20, + 8635: 0xAD29, + 8636: 0xAD2C, + 8637: 0xAD2D, + 8638: 0xAD34, + 8639: 0xAD35, + 8640: 0xAD38, + 8641: 0xAD3C, + 8642: 0xAD44, + 8643: 0xAD45, + 8644: 0xAD47, + 8645: 0xAD49, + 8646: 0xAD50, + 8647: 0xAD54, + 8648: 0xAD58, + 8649: 0xAD61, + 8650: 0xAD63, + 8651: 0xAD6C, + 8652: 0xAD6D, + 8653: 0xAD70, + 8654: 0xAD73, + 8655: 0xAD74, + 8656: 0xAD75, + 8657: 0xAD76, + 8658: 0xAD7B, + 8659: 0xAD7C, + 8660: 0xAD7D, + 8661: 0xAD7F, + 8662: 0xAD81, + 8663: 0xAD82, + 8664: 0xAD88, + 8665: 0xAD89, + 8666: 0xAD8C, + 8667: 0xAD90, + 8668: 0xAD9C, + 8669: 0xAD9D, + 8670: 0xADA4, + 8671: 0xADB7, + 8672: 0xADC0, + 8673: 0xADC1, + 8674: 0xADC4, + 8675: 0xADC8, + 8676: 0xADD0, + 8677: 0xADD1, + 8678: 0xADD3, + 8679: 0xADDC, + 8680: 0xADE0, + 8681: 0xADE4, + 8682: 0xADF8, + 8683: 0xADF9, + 8684: 0xADFC, + 8685: 0xADFF, + 8686: 0xAE00, + 8687: 0xAE01, + 8688: 0xAE08, + 8689: 0xAE09, + 8690: 0xAE0B, + 8691: 0xAE0D, + 8692: 0xAE14, + 8693: 0xAE30, + 8694: 0xAE31, + 8695: 0xAE34, + 8696: 0xAE37, + 8697: 0xAE38, + 8698: 0xAE3A, + 8699: 0xAE40, + 8700: 0xAE41, + 8701: 0xAE43, + 8702: 0xAE45, + 8703: 0xAE46, + 8704: 0xAE4A, + 8705: 0xAE4C, + 8706: 0xAE4D, + 8707: 0xAE4E, + 8708: 0xAE50, + 8709: 0xAE54, + 8710: 0xAE56, + 8711: 0xAE5C, + 8712: 0xAE5D, + 8713: 0xAE5F, + 8714: 0xAE60, + 8715: 0xAE61, + 8716: 0xAE65, + 8717: 0xAE68, + 8718: 0xAE69, + 8719: 0xAE6C, + 8720: 0xAE70, + 8721: 0xAE78, + 8722: 0xCF6D, + 8723: 0xCF6E, + 8724: 0xCF6F, + 8725: 0xCF72, + 8726: 0xCF73, + 8727: 0xCF75, + 8728: 0xCF76, + 8729: 0xCF77, + 8730: 0xCF79, + 8731: 0xCF7A, + 8732: 0xCF7B, + 8733: 0xCF7C, + 8734: 0xCF7D, + 8735: 0xCF7E, + 8736: 0xCF7F, + 8737: 0xCF81, + 8738: 0xCF82, + 8739: 0xCF83, + 8740: 0xCF84, + 8741: 0xCF86, + 8742: 0xCF87, + 8743: 0xCF88, + 8744: 0xCF89, + 8745: 0xCF8A, + 8746: 0xCF8B, + 8747: 0xCF8D, + 8748: 0xCF8E, + 8749: 0xCF8F, + 8750: 0xCF90, + 8751: 0xCF91, + 8752: 0xCF92, + 8753: 0xCF93, + 8754: 0xCF94, + 8755: 0xCF95, + 8756: 0xCF96, + 8757: 0xCF97, + 8758: 0xCF98, + 8759: 0xCF99, + 8760: 0xCF9A, + 8761: 0xCF9B, + 8762: 0xCF9C, + 8763: 0xCF9D, + 8764: 0xCF9E, + 8765: 0xCF9F, + 8766: 0xCFA0, + 8767: 0xCFA2, + 8768: 0xCFA3, + 8769: 0xCFA4, + 8770: 0xCFA5, + 8771: 0xCFA6, + 8772: 0xCFA7, + 8773: 0xCFA9, + 8774: 0xCFAA, + 8775: 0xCFAB, + 8776: 0xCFAC, + 8777: 0xCFAD, + 8778: 0xCFAE, + 8779: 0xCFAF, + 8780: 0xCFB1, + 8781: 0xCFB2, + 8782: 0xCFB3, + 8783: 0xCFB4, + 8784: 0xCFB5, + 8785: 0xCFB6, + 8786: 0xCFB7, + 8787: 0xCFB8, + 8788: 0xCFB9, + 8789: 0xCFBA, + 8790: 0xCFBB, + 8791: 0xCFBC, + 8792: 0xCFBD, + 8793: 0xCFBE, + 8794: 0xCFBF, + 8795: 0xCFC0, + 8796: 0xCFC1, + 8797: 0xCFC2, + 8798: 0xCFC3, + 8799: 0xCFC5, + 8800: 0xCFC6, + 8801: 0xCFC7, + 8802: 0xCFC8, + 8803: 0xCFC9, + 8804: 0xCFCA, + 8805: 0xCFCB, + 8806: 0xAE79, + 8807: 0xAE7B, + 8808: 0xAE7C, + 8809: 0xAE7D, + 8810: 0xAE84, + 8811: 0xAE85, + 8812: 0xAE8C, + 8813: 0xAEBC, + 8814: 0xAEBD, + 8815: 0xAEBE, + 8816: 0xAEC0, + 8817: 0xAEC4, + 8818: 0xAECC, + 8819: 0xAECD, + 8820: 0xAECF, + 8821: 0xAED0, + 8822: 0xAED1, + 8823: 0xAED8, + 8824: 0xAED9, + 8825: 0xAEDC, + 8826: 0xAEE8, + 8827: 0xAEEB, + 8828: 0xAEED, + 8829: 0xAEF4, + 8830: 0xAEF8, + 8831: 0xAEFC, + 8832: 0xAF07, + 8833: 0xAF08, + 8834: 0xAF0D, + 8835: 0xAF10, + 8836: 0xAF2C, + 8837: 0xAF2D, + 8838: 0xAF30, + 8839: 0xAF32, + 8840: 0xAF34, + 8841: 0xAF3C, + 8842: 0xAF3D, + 8843: 0xAF3F, + 8844: 0xAF41, + 8845: 0xAF42, + 8846: 0xAF43, + 8847: 0xAF48, + 8848: 0xAF49, + 8849: 0xAF50, + 8850: 0xAF5C, + 8851: 0xAF5D, + 8852: 0xAF64, + 8853: 0xAF65, + 8854: 0xAF79, + 8855: 0xAF80, + 8856: 0xAF84, + 8857: 0xAF88, + 8858: 0xAF90, + 8859: 0xAF91, + 8860: 0xAF95, + 8861: 0xAF9C, + 8862: 0xAFB8, + 8863: 0xAFB9, + 8864: 0xAFBC, + 8865: 0xAFC0, + 8866: 0xAFC7, + 8867: 0xAFC8, + 8868: 0xAFC9, + 8869: 0xAFCB, + 8870: 0xAFCD, + 8871: 0xAFCE, + 8872: 0xAFD4, + 8873: 0xAFDC, + 8874: 0xAFE8, + 8875: 0xAFE9, + 8876: 0xAFF0, + 8877: 0xAFF1, + 8878: 0xAFF4, + 8879: 0xAFF8, + 8880: 0xB000, + 8881: 0xB001, + 8882: 0xB004, + 8883: 0xB00C, + 8884: 0xB010, + 8885: 0xB014, + 8886: 0xB01C, + 8887: 0xB01D, + 8888: 0xB028, + 8889: 0xB044, + 8890: 0xB045, + 8891: 0xB048, + 8892: 0xB04A, + 8893: 0xB04C, + 8894: 0xB04E, + 8895: 0xB053, + 8896: 0xB054, + 8897: 0xB055, + 8898: 0xB057, + 8899: 0xB059, + 8900: 0xCFCC, + 8901: 0xCFCD, + 8902: 0xCFCE, + 8903: 0xCFCF, + 8904: 0xCFD0, + 8905: 0xCFD1, + 8906: 0xCFD2, + 8907: 0xCFD3, + 8908: 0xCFD4, + 8909: 0xCFD5, + 8910: 0xCFD6, + 8911: 0xCFD7, + 8912: 0xCFD8, + 8913: 0xCFD9, + 8914: 0xCFDA, + 8915: 0xCFDB, + 8916: 0xCFDC, + 8917: 0xCFDD, + 8918: 0xCFDE, + 8919: 0xCFDF, + 8920: 0xCFE2, + 8921: 0xCFE3, + 8922: 0xCFE5, + 8923: 0xCFE6, + 8924: 0xCFE7, + 8925: 0xCFE9, + 8926: 0xCFEA, + 8927: 0xCFEB, + 8928: 0xCFEC, + 8929: 0xCFED, + 8930: 0xCFEE, + 8931: 0xCFEF, + 8932: 0xCFF2, + 8933: 0xCFF4, + 8934: 0xCFF6, + 8935: 0xCFF7, + 8936: 0xCFF8, + 8937: 0xCFF9, + 8938: 0xCFFA, + 8939: 0xCFFB, + 8940: 0xCFFD, + 8941: 0xCFFE, + 8942: 0xCFFF, + 8943: 0xD001, + 8944: 0xD002, + 8945: 0xD003, + 8946: 0xD005, + 8947: 0xD006, + 8948: 0xD007, + 8949: 0xD008, + 8950: 0xD009, + 8951: 0xD00A, + 8952: 0xD00B, + 8953: 0xD00C, + 8954: 0xD00D, + 8955: 0xD00E, + 8956: 0xD00F, + 8957: 0xD010, + 8958: 0xD012, + 8959: 0xD013, + 8960: 0xD014, + 8961: 0xD015, + 8962: 0xD016, + 8963: 0xD017, + 8964: 0xD019, + 8965: 0xD01A, + 8966: 0xD01B, + 8967: 0xD01C, + 8968: 0xD01D, + 8969: 0xD01E, + 8970: 0xD01F, + 8971: 0xD020, + 8972: 0xD021, + 8973: 0xD022, + 8974: 0xD023, + 8975: 0xD024, + 8976: 0xD025, + 8977: 0xD026, + 8978: 0xD027, + 8979: 0xD028, + 8980: 0xD029, + 8981: 0xD02A, + 8982: 0xD02B, + 8983: 0xD02C, + 8984: 0xB05D, + 8985: 0xB07C, + 8986: 0xB07D, + 8987: 0xB080, + 8988: 0xB084, + 8989: 0xB08C, + 8990: 0xB08D, + 8991: 0xB08F, + 8992: 0xB091, + 8993: 0xB098, + 8994: 0xB099, + 8995: 0xB09A, + 8996: 0xB09C, + 8997: 0xB09F, + 8998: 0xB0A0, + 8999: 0xB0A1, + 9000: 0xB0A2, + 9001: 0xB0A8, + 9002: 0xB0A9, + 9003: 0xB0AB, + 9004: 0xB0AC, + 9005: 0xB0AD, + 9006: 0xB0AE, + 9007: 0xB0AF, + 9008: 0xB0B1, + 9009: 0xB0B3, + 9010: 0xB0B4, + 9011: 0xB0B5, + 9012: 0xB0B8, + 9013: 0xB0BC, + 9014: 0xB0C4, + 9015: 0xB0C5, + 9016: 0xB0C7, + 9017: 0xB0C8, + 9018: 0xB0C9, + 9019: 0xB0D0, + 9020: 0xB0D1, + 9021: 0xB0D4, + 9022: 0xB0D8, + 9023: 0xB0E0, + 9024: 0xB0E5, + 9025: 0xB108, + 9026: 0xB109, + 9027: 0xB10B, + 9028: 0xB10C, + 9029: 0xB110, + 9030: 0xB112, + 9031: 0xB113, + 9032: 0xB118, + 9033: 0xB119, + 9034: 0xB11B, + 9035: 0xB11C, + 9036: 0xB11D, + 9037: 0xB123, + 9038: 0xB124, + 9039: 0xB125, + 9040: 0xB128, + 9041: 0xB12C, + 9042: 0xB134, + 9043: 0xB135, + 9044: 0xB137, + 9045: 0xB138, + 9046: 0xB139, + 9047: 0xB140, + 9048: 0xB141, + 9049: 0xB144, + 9050: 0xB148, + 9051: 0xB150, + 9052: 0xB151, + 9053: 0xB154, + 9054: 0xB155, + 9055: 0xB158, + 9056: 0xB15C, + 9057: 0xB160, + 9058: 0xB178, + 9059: 0xB179, + 9060: 0xB17C, + 9061: 0xB180, + 9062: 0xB182, + 9063: 0xB188, + 9064: 0xB189, + 9065: 0xB18B, + 9066: 0xB18D, + 9067: 0xB192, + 9068: 0xB193, + 9069: 0xB194, + 9070: 0xB198, + 9071: 0xB19C, + 9072: 0xB1A8, + 9073: 0xB1CC, + 9074: 0xB1D0, + 9075: 0xB1D4, + 9076: 0xB1DC, + 9077: 0xB1DD, + 9078: 0xD02E, + 9079: 0xD02F, + 9080: 0xD030, + 9081: 0xD031, + 9082: 0xD032, + 9083: 0xD033, + 9084: 0xD036, + 9085: 0xD037, + 9086: 0xD039, + 9087: 0xD03A, + 9088: 0xD03B, + 9089: 0xD03D, + 9090: 0xD03E, + 9091: 0xD03F, + 9092: 0xD040, + 9093: 0xD041, + 9094: 0xD042, + 9095: 0xD043, + 9096: 0xD046, + 9097: 0xD048, + 9098: 0xD04A, + 9099: 0xD04B, + 9100: 0xD04C, + 9101: 0xD04D, + 9102: 0xD04E, + 9103: 0xD04F, + 9104: 0xD051, + 9105: 0xD052, + 9106: 0xD053, + 9107: 0xD055, + 9108: 0xD056, + 9109: 0xD057, + 9110: 0xD059, + 9111: 0xD05A, + 9112: 0xD05B, + 9113: 0xD05C, + 9114: 0xD05D, + 9115: 0xD05E, + 9116: 0xD05F, + 9117: 0xD061, + 9118: 0xD062, + 9119: 0xD063, + 9120: 0xD064, + 9121: 0xD065, + 9122: 0xD066, + 9123: 0xD067, + 9124: 0xD068, + 9125: 0xD069, + 9126: 0xD06A, + 9127: 0xD06B, + 9128: 0xD06E, + 9129: 0xD06F, + 9130: 0xD071, + 9131: 0xD072, + 9132: 0xD073, + 9133: 0xD075, + 9134: 0xD076, + 9135: 0xD077, + 9136: 0xD078, + 9137: 0xD079, + 9138: 0xD07A, + 9139: 0xD07B, + 9140: 0xD07E, + 9141: 0xD07F, + 9142: 0xD080, + 9143: 0xD082, + 9144: 0xD083, + 9145: 0xD084, + 9146: 0xD085, + 9147: 0xD086, + 9148: 0xD087, + 9149: 0xD088, + 9150: 0xD089, + 9151: 0xD08A, + 9152: 0xD08B, + 9153: 0xD08C, + 9154: 0xD08D, + 9155: 0xD08E, + 9156: 0xD08F, + 9157: 0xD090, + 9158: 0xD091, + 9159: 0xD092, + 9160: 0xD093, + 9161: 0xD094, + 9162: 0xB1DF, + 9163: 0xB1E8, + 9164: 0xB1E9, + 9165: 0xB1EC, + 9166: 0xB1F0, + 9167: 0xB1F9, + 9168: 0xB1FB, + 9169: 0xB1FD, + 9170: 0xB204, + 9171: 0xB205, + 9172: 0xB208, + 9173: 0xB20B, + 9174: 0xB20C, + 9175: 0xB214, + 9176: 0xB215, + 9177: 0xB217, + 9178: 0xB219, + 9179: 0xB220, + 9180: 0xB234, + 9181: 0xB23C, + 9182: 0xB258, + 9183: 0xB25C, + 9184: 0xB260, + 9185: 0xB268, + 9186: 0xB269, + 9187: 0xB274, + 9188: 0xB275, + 9189: 0xB27C, + 9190: 0xB284, + 9191: 0xB285, + 9192: 0xB289, + 9193: 0xB290, + 9194: 0xB291, + 9195: 0xB294, + 9196: 0xB298, + 9197: 0xB299, + 9198: 0xB29A, + 9199: 0xB2A0, + 9200: 0xB2A1, + 9201: 0xB2A3, + 9202: 0xB2A5, + 9203: 0xB2A6, + 9204: 0xB2AA, + 9205: 0xB2AC, + 9206: 0xB2B0, + 9207: 0xB2B4, + 9208: 0xB2C8, + 9209: 0xB2C9, + 9210: 0xB2CC, + 9211: 0xB2D0, + 9212: 0xB2D2, + 9213: 0xB2D8, + 9214: 0xB2D9, + 9215: 0xB2DB, + 9216: 0xB2DD, + 9217: 0xB2E2, + 9218: 0xB2E4, + 9219: 0xB2E5, + 9220: 0xB2E6, + 9221: 0xB2E8, + 9222: 0xB2EB, + 9223: 0xB2EC, + 9224: 0xB2ED, + 9225: 0xB2EE, + 9226: 0xB2EF, + 9227: 0xB2F3, + 9228: 0xB2F4, + 9229: 0xB2F5, + 9230: 0xB2F7, + 9231: 0xB2F8, + 9232: 0xB2F9, + 9233: 0xB2FA, + 9234: 0xB2FB, + 9235: 0xB2FF, + 9236: 0xB300, + 9237: 0xB301, + 9238: 0xB304, + 9239: 0xB308, + 9240: 0xB310, + 9241: 0xB311, + 9242: 0xB313, + 9243: 0xB314, + 9244: 0xB315, + 9245: 0xB31C, + 9246: 0xB354, + 9247: 0xB355, + 9248: 0xB356, + 9249: 0xB358, + 9250: 0xB35B, + 9251: 0xB35C, + 9252: 0xB35E, + 9253: 0xB35F, + 9254: 0xB364, + 9255: 0xB365, + 9256: 0xD095, + 9257: 0xD096, + 9258: 0xD097, + 9259: 0xD098, + 9260: 0xD099, + 9261: 0xD09A, + 9262: 0xD09B, + 9263: 0xD09C, + 9264: 0xD09D, + 9265: 0xD09E, + 9266: 0xD09F, + 9267: 0xD0A0, + 9268: 0xD0A1, + 9269: 0xD0A2, + 9270: 0xD0A3, + 9271: 0xD0A6, + 9272: 0xD0A7, + 9273: 0xD0A9, + 9274: 0xD0AA, + 9275: 0xD0AB, + 9276: 0xD0AD, + 9277: 0xD0AE, + 9278: 0xD0AF, + 9279: 0xD0B0, + 9280: 0xD0B1, + 9281: 0xD0B2, + 9282: 0xD0B3, + 9283: 0xD0B6, + 9284: 0xD0B8, + 9285: 0xD0BA, + 9286: 0xD0BB, + 9287: 0xD0BC, + 9288: 0xD0BD, + 9289: 0xD0BE, + 9290: 0xD0BF, + 9291: 0xD0C2, + 9292: 0xD0C3, + 9293: 0xD0C5, + 9294: 0xD0C6, + 9295: 0xD0C7, + 9296: 0xD0CA, + 9297: 0xD0CB, + 9298: 0xD0CC, + 9299: 0xD0CD, + 9300: 0xD0CE, + 9301: 0xD0CF, + 9302: 0xD0D2, + 9303: 0xD0D6, + 9304: 0xD0D7, + 9305: 0xD0D8, + 9306: 0xD0D9, + 9307: 0xD0DA, + 9308: 0xD0DB, + 9309: 0xD0DE, + 9310: 0xD0DF, + 9311: 0xD0E1, + 9312: 0xD0E2, + 9313: 0xD0E3, + 9314: 0xD0E5, + 9315: 0xD0E6, + 9316: 0xD0E7, + 9317: 0xD0E8, + 9318: 0xD0E9, + 9319: 0xD0EA, + 9320: 0xD0EB, + 9321: 0xD0EE, + 9322: 0xD0F2, + 9323: 0xD0F3, + 9324: 0xD0F4, + 9325: 0xD0F5, + 9326: 0xD0F6, + 9327: 0xD0F7, + 9328: 0xD0F9, + 9329: 0xD0FA, + 9330: 0xD0FB, + 9331: 0xD0FC, + 9332: 0xD0FD, + 9333: 0xD0FE, + 9334: 0xD0FF, + 9335: 0xD100, + 9336: 0xD101, + 9337: 0xD102, + 9338: 0xD103, + 9339: 0xD104, + 9340: 0xB367, + 9341: 0xB369, + 9342: 0xB36B, + 9343: 0xB36E, + 9344: 0xB370, + 9345: 0xB371, + 9346: 0xB374, + 9347: 0xB378, + 9348: 0xB380, + 9349: 0xB381, + 9350: 0xB383, + 9351: 0xB384, + 9352: 0xB385, + 9353: 0xB38C, + 9354: 0xB390, + 9355: 0xB394, + 9356: 0xB3A0, + 9357: 0xB3A1, + 9358: 0xB3A8, + 9359: 0xB3AC, + 9360: 0xB3C4, + 9361: 0xB3C5, + 9362: 0xB3C8, + 9363: 0xB3CB, + 9364: 0xB3CC, + 9365: 0xB3CE, + 9366: 0xB3D0, + 9367: 0xB3D4, + 9368: 0xB3D5, + 9369: 0xB3D7, + 9370: 0xB3D9, + 9371: 0xB3DB, + 9372: 0xB3DD, + 9373: 0xB3E0, + 9374: 0xB3E4, + 9375: 0xB3E8, + 9376: 0xB3FC, + 9377: 0xB410, + 9378: 0xB418, + 9379: 0xB41C, + 9380: 0xB420, + 9381: 0xB428, + 9382: 0xB429, + 9383: 0xB42B, + 9384: 0xB434, + 9385: 0xB450, + 9386: 0xB451, + 9387: 0xB454, + 9388: 0xB458, + 9389: 0xB460, + 9390: 0xB461, + 9391: 0xB463, + 9392: 0xB465, + 9393: 0xB46C, + 9394: 0xB480, + 9395: 0xB488, + 9396: 0xB49D, + 9397: 0xB4A4, + 9398: 0xB4A8, + 9399: 0xB4AC, + 9400: 0xB4B5, + 9401: 0xB4B7, + 9402: 0xB4B9, + 9403: 0xB4C0, + 9404: 0xB4C4, + 9405: 0xB4C8, + 9406: 0xB4D0, + 9407: 0xB4D5, + 9408: 0xB4DC, + 9409: 0xB4DD, + 9410: 0xB4E0, + 9411: 0xB4E3, + 9412: 0xB4E4, + 9413: 0xB4E6, + 9414: 0xB4EC, + 9415: 0xB4ED, + 9416: 0xB4EF, + 9417: 0xB4F1, + 9418: 0xB4F8, + 9419: 0xB514, + 9420: 0xB515, + 9421: 0xB518, + 9422: 0xB51B, + 9423: 0xB51C, + 9424: 0xB524, + 9425: 0xB525, + 9426: 0xB527, + 9427: 0xB528, + 9428: 0xB529, + 9429: 0xB52A, + 9430: 0xB530, + 9431: 0xB531, + 9432: 0xB534, + 9433: 0xB538, + 9434: 0xD105, + 9435: 0xD106, + 9436: 0xD107, + 9437: 0xD108, + 9438: 0xD109, + 9439: 0xD10A, + 9440: 0xD10B, + 9441: 0xD10C, + 9442: 0xD10E, + 9443: 0xD10F, + 9444: 0xD110, + 9445: 0xD111, + 9446: 0xD112, + 9447: 0xD113, + 9448: 0xD114, + 9449: 0xD115, + 9450: 0xD116, + 9451: 0xD117, + 9452: 0xD118, + 9453: 0xD119, + 9454: 0xD11A, + 9455: 0xD11B, + 9456: 0xD11C, + 9457: 0xD11D, + 9458: 0xD11E, + 9459: 0xD11F, + 9460: 0xD120, + 9461: 0xD121, + 9462: 0xD122, + 9463: 0xD123, + 9464: 0xD124, + 9465: 0xD125, + 9466: 0xD126, + 9467: 0xD127, + 9468: 0xD128, + 9469: 0xD129, + 9470: 0xD12A, + 9471: 0xD12B, + 9472: 0xD12C, + 9473: 0xD12D, + 9474: 0xD12E, + 9475: 0xD12F, + 9476: 0xD132, + 9477: 0xD133, + 9478: 0xD135, + 9479: 0xD136, + 9480: 0xD137, + 9481: 0xD139, + 9482: 0xD13B, + 9483: 0xD13C, + 9484: 0xD13D, + 9485: 0xD13E, + 9486: 0xD13F, + 9487: 0xD142, + 9488: 0xD146, + 9489: 0xD147, + 9490: 0xD148, + 9491: 0xD149, + 9492: 0xD14A, + 9493: 0xD14B, + 9494: 0xD14E, + 9495: 0xD14F, + 9496: 0xD151, + 9497: 0xD152, + 9498: 0xD153, + 9499: 0xD155, + 9500: 0xD156, + 9501: 0xD157, + 9502: 0xD158, + 9503: 0xD159, + 9504: 0xD15A, + 9505: 0xD15B, + 9506: 0xD15E, + 9507: 0xD160, + 9508: 0xD162, + 9509: 0xD163, + 9510: 0xD164, + 9511: 0xD165, + 9512: 0xD166, + 9513: 0xD167, + 9514: 0xD169, + 9515: 0xD16A, + 9516: 0xD16B, + 9517: 0xD16D, + 9518: 0xB540, + 9519: 0xB541, + 9520: 0xB543, + 9521: 0xB544, + 9522: 0xB545, + 9523: 0xB54B, + 9524: 0xB54C, + 9525: 0xB54D, + 9526: 0xB550, + 9527: 0xB554, + 9528: 0xB55C, + 9529: 0xB55D, + 9530: 0xB55F, + 9531: 0xB560, + 9532: 0xB561, + 9533: 0xB5A0, + 9534: 0xB5A1, + 9535: 0xB5A4, + 9536: 0xB5A8, + 9537: 0xB5AA, + 9538: 0xB5AB, + 9539: 0xB5B0, + 9540: 0xB5B1, + 9541: 0xB5B3, + 9542: 0xB5B4, + 9543: 0xB5B5, + 9544: 0xB5BB, + 9545: 0xB5BC, + 9546: 0xB5BD, + 9547: 0xB5C0, + 9548: 0xB5C4, + 9549: 0xB5CC, + 9550: 0xB5CD, + 9551: 0xB5CF, + 9552: 0xB5D0, + 9553: 0xB5D1, + 9554: 0xB5D8, + 9555: 0xB5EC, + 9556: 0xB610, + 9557: 0xB611, + 9558: 0xB614, + 9559: 0xB618, + 9560: 0xB625, + 9561: 0xB62C, + 9562: 0xB634, + 9563: 0xB648, + 9564: 0xB664, + 9565: 0xB668, + 9566: 0xB69C, + 9567: 0xB69D, + 9568: 0xB6A0, + 9569: 0xB6A4, + 9570: 0xB6AB, + 9571: 0xB6AC, + 9572: 0xB6B1, + 9573: 0xB6D4, + 9574: 0xB6F0, + 9575: 0xB6F4, + 9576: 0xB6F8, + 9577: 0xB700, + 9578: 0xB701, + 9579: 0xB705, + 9580: 0xB728, + 9581: 0xB729, + 9582: 0xB72C, + 9583: 0xB72F, + 9584: 0xB730, + 9585: 0xB738, + 9586: 0xB739, + 9587: 0xB73B, + 9588: 0xB744, + 9589: 0xB748, + 9590: 0xB74C, + 9591: 0xB754, + 9592: 0xB755, + 9593: 0xB760, + 9594: 0xB764, + 9595: 0xB768, + 9596: 0xB770, + 9597: 0xB771, + 9598: 0xB773, + 9599: 0xB775, + 9600: 0xB77C, + 9601: 0xB77D, + 9602: 0xB780, + 9603: 0xB784, + 9604: 0xB78C, + 9605: 0xB78D, + 9606: 0xB78F, + 9607: 0xB790, + 9608: 0xB791, + 9609: 0xB792, + 9610: 0xB796, + 9611: 0xB797, + 9612: 0xD16E, + 9613: 0xD16F, + 9614: 0xD170, + 9615: 0xD171, + 9616: 0xD172, + 9617: 0xD173, + 9618: 0xD174, + 9619: 0xD175, + 9620: 0xD176, + 9621: 0xD177, + 9622: 0xD178, + 9623: 0xD179, + 9624: 0xD17A, + 9625: 0xD17B, + 9626: 0xD17D, + 9627: 0xD17E, + 9628: 0xD17F, + 9629: 0xD180, + 9630: 0xD181, + 9631: 0xD182, + 9632: 0xD183, + 9633: 0xD185, + 9634: 0xD186, + 9635: 0xD187, + 9636: 0xD189, + 9637: 0xD18A, + 9638: 0xD18B, + 9639: 0xD18C, + 9640: 0xD18D, + 9641: 0xD18E, + 9642: 0xD18F, + 9643: 0xD190, + 9644: 0xD191, + 9645: 0xD192, + 9646: 0xD193, + 9647: 0xD194, + 9648: 0xD195, + 9649: 0xD196, + 9650: 0xD197, + 9651: 0xD198, + 9652: 0xD199, + 9653: 0xD19A, + 9654: 0xD19B, + 9655: 0xD19C, + 9656: 0xD19D, + 9657: 0xD19E, + 9658: 0xD19F, + 9659: 0xD1A2, + 9660: 0xD1A3, + 9661: 0xD1A5, + 9662: 0xD1A6, + 9663: 0xD1A7, + 9664: 0xD1A9, + 9665: 0xD1AA, + 9666: 0xD1AB, + 9667: 0xD1AC, + 9668: 0xD1AD, + 9669: 0xD1AE, + 9670: 0xD1AF, + 9671: 0xD1B2, + 9672: 0xD1B4, + 9673: 0xD1B6, + 9674: 0xD1B7, + 9675: 0xD1B8, + 9676: 0xD1B9, + 9677: 0xD1BB, + 9678: 0xD1BD, + 9679: 0xD1BE, + 9680: 0xD1BF, + 9681: 0xD1C1, + 9682: 0xD1C2, + 9683: 0xD1C3, + 9684: 0xD1C4, + 9685: 0xD1C5, + 9686: 0xD1C6, + 9687: 0xD1C7, + 9688: 0xD1C8, + 9689: 0xD1C9, + 9690: 0xD1CA, + 9691: 0xD1CB, + 9692: 0xD1CC, + 9693: 0xD1CD, + 9694: 0xD1CE, + 9695: 0xD1CF, + 9696: 0xB798, + 9697: 0xB799, + 9698: 0xB79C, + 9699: 0xB7A0, + 9700: 0xB7A8, + 9701: 0xB7A9, + 9702: 0xB7AB, + 9703: 0xB7AC, + 9704: 0xB7AD, + 9705: 0xB7B4, + 9706: 0xB7B5, + 9707: 0xB7B8, + 9708: 0xB7C7, + 9709: 0xB7C9, + 9710: 0xB7EC, + 9711: 0xB7ED, + 9712: 0xB7F0, + 9713: 0xB7F4, + 9714: 0xB7FC, + 9715: 0xB7FD, + 9716: 0xB7FF, + 9717: 0xB800, + 9718: 0xB801, + 9719: 0xB807, + 9720: 0xB808, + 9721: 0xB809, + 9722: 0xB80C, + 9723: 0xB810, + 9724: 0xB818, + 9725: 0xB819, + 9726: 0xB81B, + 9727: 0xB81D, + 9728: 0xB824, + 9729: 0xB825, + 9730: 0xB828, + 9731: 0xB82C, + 9732: 0xB834, + 9733: 0xB835, + 9734: 0xB837, + 9735: 0xB838, + 9736: 0xB839, + 9737: 0xB840, + 9738: 0xB844, + 9739: 0xB851, + 9740: 0xB853, + 9741: 0xB85C, + 9742: 0xB85D, + 9743: 0xB860, + 9744: 0xB864, + 9745: 0xB86C, + 9746: 0xB86D, + 9747: 0xB86F, + 9748: 0xB871, + 9749: 0xB878, + 9750: 0xB87C, + 9751: 0xB88D, + 9752: 0xB8A8, + 9753: 0xB8B0, + 9754: 0xB8B4, + 9755: 0xB8B8, + 9756: 0xB8C0, + 9757: 0xB8C1, + 9758: 0xB8C3, + 9759: 0xB8C5, + 9760: 0xB8CC, + 9761: 0xB8D0, + 9762: 0xB8D4, + 9763: 0xB8DD, + 9764: 0xB8DF, + 9765: 0xB8E1, + 9766: 0xB8E8, + 9767: 0xB8E9, + 9768: 0xB8EC, + 9769: 0xB8F0, + 9770: 0xB8F8, + 9771: 0xB8F9, + 9772: 0xB8FB, + 9773: 0xB8FD, + 9774: 0xB904, + 9775: 0xB918, + 9776: 0xB920, + 9777: 0xB93C, + 9778: 0xB93D, + 9779: 0xB940, + 9780: 0xB944, + 9781: 0xB94C, + 9782: 0xB94F, + 9783: 0xB951, + 9784: 0xB958, + 9785: 0xB959, + 9786: 0xB95C, + 9787: 0xB960, + 9788: 0xB968, + 9789: 0xB969, + 9790: 0xD1D0, + 9791: 0xD1D1, + 9792: 0xD1D2, + 9793: 0xD1D3, + 9794: 0xD1D4, + 9795: 0xD1D5, + 9796: 0xD1D6, + 9797: 0xD1D7, + 9798: 0xD1D9, + 9799: 0xD1DA, + 9800: 0xD1DB, + 9801: 0xD1DC, + 9802: 0xD1DD, + 9803: 0xD1DE, + 9804: 0xD1DF, + 9805: 0xD1E0, + 9806: 0xD1E1, + 9807: 0xD1E2, + 9808: 0xD1E3, + 9809: 0xD1E4, + 9810: 0xD1E5, + 9811: 0xD1E6, + 9812: 0xD1E7, + 9813: 0xD1E8, + 9814: 0xD1E9, + 9815: 0xD1EA, + 9816: 0xD1EB, + 9817: 0xD1EC, + 9818: 0xD1ED, + 9819: 0xD1EE, + 9820: 0xD1EF, + 9821: 0xD1F0, + 9822: 0xD1F1, + 9823: 0xD1F2, + 9824: 0xD1F3, + 9825: 0xD1F5, + 9826: 0xD1F6, + 9827: 0xD1F7, + 9828: 0xD1F9, + 9829: 0xD1FA, + 9830: 0xD1FB, + 9831: 0xD1FC, + 9832: 0xD1FD, + 9833: 0xD1FE, + 9834: 0xD1FF, + 9835: 0xD200, + 9836: 0xD201, + 9837: 0xD202, + 9838: 0xD203, + 9839: 0xD204, + 9840: 0xD205, + 9841: 0xD206, + 9842: 0xD208, + 9843: 0xD20A, + 9844: 0xD20B, + 9845: 0xD20C, + 9846: 0xD20D, + 9847: 0xD20E, + 9848: 0xD20F, + 9849: 0xD211, + 9850: 0xD212, + 9851: 0xD213, + 9852: 0xD214, + 9853: 0xD215, + 9854: 0xD216, + 9855: 0xD217, + 9856: 0xD218, + 9857: 0xD219, + 9858: 0xD21A, + 9859: 0xD21B, + 9860: 0xD21C, + 9861: 0xD21D, + 9862: 0xD21E, + 9863: 0xD21F, + 9864: 0xD220, + 9865: 0xD221, + 9866: 0xD222, + 9867: 0xD223, + 9868: 0xD224, + 9869: 0xD225, + 9870: 0xD226, + 9871: 0xD227, + 9872: 0xD228, + 9873: 0xD229, + 9874: 0xB96B, + 9875: 0xB96D, + 9876: 0xB974, + 9877: 0xB975, + 9878: 0xB978, + 9879: 0xB97C, + 9880: 0xB984, + 9881: 0xB985, + 9882: 0xB987, + 9883: 0xB989, + 9884: 0xB98A, + 9885: 0xB98D, + 9886: 0xB98E, + 9887: 0xB9AC, + 9888: 0xB9AD, + 9889: 0xB9B0, + 9890: 0xB9B4, + 9891: 0xB9BC, + 9892: 0xB9BD, + 9893: 0xB9BF, + 9894: 0xB9C1, + 9895: 0xB9C8, + 9896: 0xB9C9, + 9897: 0xB9CC, + 9898: 0xB9CE, + 9899: 0xB9CF, + 9900: 0xB9D0, + 9901: 0xB9D1, + 9902: 0xB9D2, + 9903: 0xB9D8, + 9904: 0xB9D9, + 9905: 0xB9DB, + 9906: 0xB9DD, + 9907: 0xB9DE, + 9908: 0xB9E1, + 9909: 0xB9E3, + 9910: 0xB9E4, + 9911: 0xB9E5, + 9912: 0xB9E8, + 9913: 0xB9EC, + 9914: 0xB9F4, + 9915: 0xB9F5, + 9916: 0xB9F7, + 9917: 0xB9F8, + 9918: 0xB9F9, + 9919: 0xB9FA, + 9920: 0xBA00, + 9921: 0xBA01, + 9922: 0xBA08, + 9923: 0xBA15, + 9924: 0xBA38, + 9925: 0xBA39, + 9926: 0xBA3C, + 9927: 0xBA40, + 9928: 0xBA42, + 9929: 0xBA48, + 9930: 0xBA49, + 9931: 0xBA4B, + 9932: 0xBA4D, + 9933: 0xBA4E, + 9934: 0xBA53, + 9935: 0xBA54, + 9936: 0xBA55, + 9937: 0xBA58, + 9938: 0xBA5C, + 9939: 0xBA64, + 9940: 0xBA65, + 9941: 0xBA67, + 9942: 0xBA68, + 9943: 0xBA69, + 9944: 0xBA70, + 9945: 0xBA71, + 9946: 0xBA74, + 9947: 0xBA78, + 9948: 0xBA83, + 9949: 0xBA84, + 9950: 0xBA85, + 9951: 0xBA87, + 9952: 0xBA8C, + 9953: 0xBAA8, + 9954: 0xBAA9, + 9955: 0xBAAB, + 9956: 0xBAAC, + 9957: 0xBAB0, + 9958: 0xBAB2, + 9959: 0xBAB8, + 9960: 0xBAB9, + 9961: 0xBABB, + 9962: 0xBABD, + 9963: 0xBAC4, + 9964: 0xBAC8, + 9965: 0xBAD8, + 9966: 0xBAD9, + 9967: 0xBAFC, + 9968: 0xD22A, + 9969: 0xD22B, + 9970: 0xD22E, + 9971: 0xD22F, + 9972: 0xD231, + 9973: 0xD232, + 9974: 0xD233, + 9975: 0xD235, + 9976: 0xD236, + 9977: 0xD237, + 9978: 0xD238, + 9979: 0xD239, + 9980: 0xD23A, + 9981: 0xD23B, + 9982: 0xD23E, + 9983: 0xD240, + 9984: 0xD242, + 9985: 0xD243, + 9986: 0xD244, + 9987: 0xD245, + 9988: 0xD246, + 9989: 0xD247, + 9990: 0xD249, + 9991: 0xD24A, + 9992: 0xD24B, + 9993: 0xD24C, + 9994: 0xD24D, + 9995: 0xD24E, + 9996: 0xD24F, + 9997: 0xD250, + 9998: 0xD251, + 9999: 0xD252, + 10000: 0xD253, + 10001: 0xD254, + 10002: 0xD255, + 10003: 0xD256, + 10004: 0xD257, + 10005: 0xD258, + 10006: 0xD259, + 10007: 0xD25A, + 10008: 0xD25B, + 10009: 0xD25D, + 10010: 0xD25E, + 10011: 0xD25F, + 10012: 0xD260, + 10013: 0xD261, + 10014: 0xD262, + 10015: 0xD263, + 10016: 0xD265, + 10017: 0xD266, + 10018: 0xD267, + 10019: 0xD268, + 10020: 0xD269, + 10021: 0xD26A, + 10022: 0xD26B, + 10023: 0xD26C, + 10024: 0xD26D, + 10025: 0xD26E, + 10026: 0xD26F, + 10027: 0xD270, + 10028: 0xD271, + 10029: 0xD272, + 10030: 0xD273, + 10031: 0xD274, + 10032: 0xD275, + 10033: 0xD276, + 10034: 0xD277, + 10035: 0xD278, + 10036: 0xD279, + 10037: 0xD27A, + 10038: 0xD27B, + 10039: 0xD27C, + 10040: 0xD27D, + 10041: 0xD27E, + 10042: 0xD27F, + 10043: 0xD282, + 10044: 0xD283, + 10045: 0xD285, + 10046: 0xD286, + 10047: 0xD287, + 10048: 0xD289, + 10049: 0xD28A, + 10050: 0xD28B, + 10051: 0xD28C, + 10052: 0xBB00, + 10053: 0xBB04, + 10054: 0xBB0D, + 10055: 0xBB0F, + 10056: 0xBB11, + 10057: 0xBB18, + 10058: 0xBB1C, + 10059: 0xBB20, + 10060: 0xBB29, + 10061: 0xBB2B, + 10062: 0xBB34, + 10063: 0xBB35, + 10064: 0xBB36, + 10065: 0xBB38, + 10066: 0xBB3B, + 10067: 0xBB3C, + 10068: 0xBB3D, + 10069: 0xBB3E, + 10070: 0xBB44, + 10071: 0xBB45, + 10072: 0xBB47, + 10073: 0xBB49, + 10074: 0xBB4D, + 10075: 0xBB4F, + 10076: 0xBB50, + 10077: 0xBB54, + 10078: 0xBB58, + 10079: 0xBB61, + 10080: 0xBB63, + 10081: 0xBB6C, + 10082: 0xBB88, + 10083: 0xBB8C, + 10084: 0xBB90, + 10085: 0xBBA4, + 10086: 0xBBA8, + 10087: 0xBBAC, + 10088: 0xBBB4, + 10089: 0xBBB7, + 10090: 0xBBC0, + 10091: 0xBBC4, + 10092: 0xBBC8, + 10093: 0xBBD0, + 10094: 0xBBD3, + 10095: 0xBBF8, + 10096: 0xBBF9, + 10097: 0xBBFC, + 10098: 0xBBFF, + 10099: 0xBC00, + 10100: 0xBC02, + 10101: 0xBC08, + 10102: 0xBC09, + 10103: 0xBC0B, + 10104: 0xBC0C, + 10105: 0xBC0D, + 10106: 0xBC0F, + 10107: 0xBC11, + 10108: 0xBC14, + 10109: 0xBC15, + 10110: 0xBC16, + 10111: 0xBC17, + 10112: 0xBC18, + 10113: 0xBC1B, + 10114: 0xBC1C, + 10115: 0xBC1D, + 10116: 0xBC1E, + 10117: 0xBC1F, + 10118: 0xBC24, + 10119: 0xBC25, + 10120: 0xBC27, + 10121: 0xBC29, + 10122: 0xBC2D, + 10123: 0xBC30, + 10124: 0xBC31, + 10125: 0xBC34, + 10126: 0xBC38, + 10127: 0xBC40, + 10128: 0xBC41, + 10129: 0xBC43, + 10130: 0xBC44, + 10131: 0xBC45, + 10132: 0xBC49, + 10133: 0xBC4C, + 10134: 0xBC4D, + 10135: 0xBC50, + 10136: 0xBC5D, + 10137: 0xBC84, + 10138: 0xBC85, + 10139: 0xBC88, + 10140: 0xBC8B, + 10141: 0xBC8C, + 10142: 0xBC8E, + 10143: 0xBC94, + 10144: 0xBC95, + 10145: 0xBC97, + 10146: 0xD28D, + 10147: 0xD28E, + 10148: 0xD28F, + 10149: 0xD292, + 10150: 0xD293, + 10151: 0xD294, + 10152: 0xD296, + 10153: 0xD297, + 10154: 0xD298, + 10155: 0xD299, + 10156: 0xD29A, + 10157: 0xD29B, + 10158: 0xD29D, + 10159: 0xD29E, + 10160: 0xD29F, + 10161: 0xD2A1, + 10162: 0xD2A2, + 10163: 0xD2A3, + 10164: 0xD2A5, + 10165: 0xD2A6, + 10166: 0xD2A7, + 10167: 0xD2A8, + 10168: 0xD2A9, + 10169: 0xD2AA, + 10170: 0xD2AB, + 10171: 0xD2AD, + 10172: 0xD2AE, + 10173: 0xD2AF, + 10174: 0xD2B0, + 10175: 0xD2B2, + 10176: 0xD2B3, + 10177: 0xD2B4, + 10178: 0xD2B5, + 10179: 0xD2B6, + 10180: 0xD2B7, + 10181: 0xD2BA, + 10182: 0xD2BB, + 10183: 0xD2BD, + 10184: 0xD2BE, + 10185: 0xD2C1, + 10186: 0xD2C3, + 10187: 0xD2C4, + 10188: 0xD2C5, + 10189: 0xD2C6, + 10190: 0xD2C7, + 10191: 0xD2CA, + 10192: 0xD2CC, + 10193: 0xD2CD, + 10194: 0xD2CE, + 10195: 0xD2CF, + 10196: 0xD2D0, + 10197: 0xD2D1, + 10198: 0xD2D2, + 10199: 0xD2D3, + 10200: 0xD2D5, + 10201: 0xD2D6, + 10202: 0xD2D7, + 10203: 0xD2D9, + 10204: 0xD2DA, + 10205: 0xD2DB, + 10206: 0xD2DD, + 10207: 0xD2DE, + 10208: 0xD2DF, + 10209: 0xD2E0, + 10210: 0xD2E1, + 10211: 0xD2E2, + 10212: 0xD2E3, + 10213: 0xD2E6, + 10214: 0xD2E7, + 10215: 0xD2E8, + 10216: 0xD2E9, + 10217: 0xD2EA, + 10218: 0xD2EB, + 10219: 0xD2EC, + 10220: 0xD2ED, + 10221: 0xD2EE, + 10222: 0xD2EF, + 10223: 0xD2F2, + 10224: 0xD2F3, + 10225: 0xD2F5, + 10226: 0xD2F6, + 10227: 0xD2F7, + 10228: 0xD2F9, + 10229: 0xD2FA, + 10230: 0xBC99, + 10231: 0xBC9A, + 10232: 0xBCA0, + 10233: 0xBCA1, + 10234: 0xBCA4, + 10235: 0xBCA7, + 10236: 0xBCA8, + 10237: 0xBCB0, + 10238: 0xBCB1, + 10239: 0xBCB3, + 10240: 0xBCB4, + 10241: 0xBCB5, + 10242: 0xBCBC, + 10243: 0xBCBD, + 10244: 0xBCC0, + 10245: 0xBCC4, + 10246: 0xBCCD, + 10247: 0xBCCF, + 10248: 0xBCD0, + 10249: 0xBCD1, + 10250: 0xBCD5, + 10251: 0xBCD8, + 10252: 0xBCDC, + 10253: 0xBCF4, + 10254: 0xBCF5, + 10255: 0xBCF6, + 10256: 0xBCF8, + 10257: 0xBCFC, + 10258: 0xBD04, + 10259: 0xBD05, + 10260: 0xBD07, + 10261: 0xBD09, + 10262: 0xBD10, + 10263: 0xBD14, + 10264: 0xBD24, + 10265: 0xBD2C, + 10266: 0xBD40, + 10267: 0xBD48, + 10268: 0xBD49, + 10269: 0xBD4C, + 10270: 0xBD50, + 10271: 0xBD58, + 10272: 0xBD59, + 10273: 0xBD64, + 10274: 0xBD68, + 10275: 0xBD80, + 10276: 0xBD81, + 10277: 0xBD84, + 10278: 0xBD87, + 10279: 0xBD88, + 10280: 0xBD89, + 10281: 0xBD8A, + 10282: 0xBD90, + 10283: 0xBD91, + 10284: 0xBD93, + 10285: 0xBD95, + 10286: 0xBD99, + 10287: 0xBD9A, + 10288: 0xBD9C, + 10289: 0xBDA4, + 10290: 0xBDB0, + 10291: 0xBDB8, + 10292: 0xBDD4, + 10293: 0xBDD5, + 10294: 0xBDD8, + 10295: 0xBDDC, + 10296: 0xBDE9, + 10297: 0xBDF0, + 10298: 0xBDF4, + 10299: 0xBDF8, + 10300: 0xBE00, + 10301: 0xBE03, + 10302: 0xBE05, + 10303: 0xBE0C, + 10304: 0xBE0D, + 10305: 0xBE10, + 10306: 0xBE14, + 10307: 0xBE1C, + 10308: 0xBE1D, + 10309: 0xBE1F, + 10310: 0xBE44, + 10311: 0xBE45, + 10312: 0xBE48, + 10313: 0xBE4C, + 10314: 0xBE4E, + 10315: 0xBE54, + 10316: 0xBE55, + 10317: 0xBE57, + 10318: 0xBE59, + 10319: 0xBE5A, + 10320: 0xBE5B, + 10321: 0xBE60, + 10322: 0xBE61, + 10323: 0xBE64, + 10324: 0xD2FB, + 10325: 0xD2FC, + 10326: 0xD2FD, + 10327: 0xD2FE, + 10328: 0xD2FF, + 10329: 0xD302, + 10330: 0xD304, + 10331: 0xD306, + 10332: 0xD307, + 10333: 0xD308, + 10334: 0xD309, + 10335: 0xD30A, + 10336: 0xD30B, + 10337: 0xD30F, + 10338: 0xD311, + 10339: 0xD312, + 10340: 0xD313, + 10341: 0xD315, + 10342: 0xD317, + 10343: 0xD318, + 10344: 0xD319, + 10345: 0xD31A, + 10346: 0xD31B, + 10347: 0xD31E, + 10348: 0xD322, + 10349: 0xD323, + 10350: 0xD324, + 10351: 0xD326, + 10352: 0xD327, + 10353: 0xD32A, + 10354: 0xD32B, + 10355: 0xD32D, + 10356: 0xD32E, + 10357: 0xD32F, + 10358: 0xD331, + 10359: 0xD332, + 10360: 0xD333, + 10361: 0xD334, + 10362: 0xD335, + 10363: 0xD336, + 10364: 0xD337, + 10365: 0xD33A, + 10366: 0xD33E, + 10367: 0xD33F, + 10368: 0xD340, + 10369: 0xD341, + 10370: 0xD342, + 10371: 0xD343, + 10372: 0xD346, + 10373: 0xD347, + 10374: 0xD348, + 10375: 0xD349, + 10376: 0xD34A, + 10377: 0xD34B, + 10378: 0xD34C, + 10379: 0xD34D, + 10380: 0xD34E, + 10381: 0xD34F, + 10382: 0xD350, + 10383: 0xD351, + 10384: 0xD352, + 10385: 0xD353, + 10386: 0xD354, + 10387: 0xD355, + 10388: 0xD356, + 10389: 0xD357, + 10390: 0xD358, + 10391: 0xD359, + 10392: 0xD35A, + 10393: 0xD35B, + 10394: 0xD35C, + 10395: 0xD35D, + 10396: 0xD35E, + 10397: 0xD35F, + 10398: 0xD360, + 10399: 0xD361, + 10400: 0xD362, + 10401: 0xD363, + 10402: 0xD364, + 10403: 0xD365, + 10404: 0xD366, + 10405: 0xD367, + 10406: 0xD368, + 10407: 0xD369, + 10408: 0xBE68, + 10409: 0xBE6A, + 10410: 0xBE70, + 10411: 0xBE71, + 10412: 0xBE73, + 10413: 0xBE74, + 10414: 0xBE75, + 10415: 0xBE7B, + 10416: 0xBE7C, + 10417: 0xBE7D, + 10418: 0xBE80, + 10419: 0xBE84, + 10420: 0xBE8C, + 10421: 0xBE8D, + 10422: 0xBE8F, + 10423: 0xBE90, + 10424: 0xBE91, + 10425: 0xBE98, + 10426: 0xBE99, + 10427: 0xBEA8, + 10428: 0xBED0, + 10429: 0xBED1, + 10430: 0xBED4, + 10431: 0xBED7, + 10432: 0xBED8, + 10433: 0xBEE0, + 10434: 0xBEE3, + 10435: 0xBEE4, + 10436: 0xBEE5, + 10437: 0xBEEC, + 10438: 0xBF01, + 10439: 0xBF08, + 10440: 0xBF09, + 10441: 0xBF18, + 10442: 0xBF19, + 10443: 0xBF1B, + 10444: 0xBF1C, + 10445: 0xBF1D, + 10446: 0xBF40, + 10447: 0xBF41, + 10448: 0xBF44, + 10449: 0xBF48, + 10450: 0xBF50, + 10451: 0xBF51, + 10452: 0xBF55, + 10453: 0xBF94, + 10454: 0xBFB0, + 10455: 0xBFC5, + 10456: 0xBFCC, + 10457: 0xBFCD, + 10458: 0xBFD0, + 10459: 0xBFD4, + 10460: 0xBFDC, + 10461: 0xBFDF, + 10462: 0xBFE1, + 10463: 0xC03C, + 10464: 0xC051, + 10465: 0xC058, + 10466: 0xC05C, + 10467: 0xC060, + 10468: 0xC068, + 10469: 0xC069, + 10470: 0xC090, + 10471: 0xC091, + 10472: 0xC094, + 10473: 0xC098, + 10474: 0xC0A0, + 10475: 0xC0A1, + 10476: 0xC0A3, + 10477: 0xC0A5, + 10478: 0xC0AC, + 10479: 0xC0AD, + 10480: 0xC0AF, + 10481: 0xC0B0, + 10482: 0xC0B3, + 10483: 0xC0B4, + 10484: 0xC0B5, + 10485: 0xC0B6, + 10486: 0xC0BC, + 10487: 0xC0BD, + 10488: 0xC0BF, + 10489: 0xC0C0, + 10490: 0xC0C1, + 10491: 0xC0C5, + 10492: 0xC0C8, + 10493: 0xC0C9, + 10494: 0xC0CC, + 10495: 0xC0D0, + 10496: 0xC0D8, + 10497: 0xC0D9, + 10498: 0xC0DB, + 10499: 0xC0DC, + 10500: 0xC0DD, + 10501: 0xC0E4, + 10502: 0xD36A, + 10503: 0xD36B, + 10504: 0xD36C, + 10505: 0xD36D, + 10506: 0xD36E, + 10507: 0xD36F, + 10508: 0xD370, + 10509: 0xD371, + 10510: 0xD372, + 10511: 0xD373, + 10512: 0xD374, + 10513: 0xD375, + 10514: 0xD376, + 10515: 0xD377, + 10516: 0xD378, + 10517: 0xD379, + 10518: 0xD37A, + 10519: 0xD37B, + 10520: 0xD37E, + 10521: 0xD37F, + 10522: 0xD381, + 10523: 0xD382, + 10524: 0xD383, + 10525: 0xD385, + 10526: 0xD386, + 10527: 0xD387, + 10528: 0xD388, + 10529: 0xD389, + 10530: 0xD38A, + 10531: 0xD38B, + 10532: 0xD38E, + 10533: 0xD392, + 10534: 0xD393, + 10535: 0xD394, + 10536: 0xD395, + 10537: 0xD396, + 10538: 0xD397, + 10539: 0xD39A, + 10540: 0xD39B, + 10541: 0xD39D, + 10542: 0xD39E, + 10543: 0xD39F, + 10544: 0xD3A1, + 10545: 0xD3A2, + 10546: 0xD3A3, + 10547: 0xD3A4, + 10548: 0xD3A5, + 10549: 0xD3A6, + 10550: 0xD3A7, + 10551: 0xD3AA, + 10552: 0xD3AC, + 10553: 0xD3AE, + 10554: 0xD3AF, + 10555: 0xD3B0, + 10556: 0xD3B1, + 10557: 0xD3B2, + 10558: 0xD3B3, + 10559: 0xD3B5, + 10560: 0xD3B6, + 10561: 0xD3B7, + 10562: 0xD3B9, + 10563: 0xD3BA, + 10564: 0xD3BB, + 10565: 0xD3BD, + 10566: 0xD3BE, + 10567: 0xD3BF, + 10568: 0xD3C0, + 10569: 0xD3C1, + 10570: 0xD3C2, + 10571: 0xD3C3, + 10572: 0xD3C6, + 10573: 0xD3C7, + 10574: 0xD3CA, + 10575: 0xD3CB, + 10576: 0xD3CC, + 10577: 0xD3CD, + 10578: 0xD3CE, + 10579: 0xD3CF, + 10580: 0xD3D1, + 10581: 0xD3D2, + 10582: 0xD3D3, + 10583: 0xD3D4, + 10584: 0xD3D5, + 10585: 0xD3D6, + 10586: 0xC0E5, + 10587: 0xC0E8, + 10588: 0xC0EC, + 10589: 0xC0F4, + 10590: 0xC0F5, + 10591: 0xC0F7, + 10592: 0xC0F9, + 10593: 0xC100, + 10594: 0xC104, + 10595: 0xC108, + 10596: 0xC110, + 10597: 0xC115, + 10598: 0xC11C, + 10599: 0xC11D, + 10600: 0xC11E, + 10601: 0xC11F, + 10602: 0xC120, + 10603: 0xC123, + 10604: 0xC124, + 10605: 0xC126, + 10606: 0xC127, + 10607: 0xC12C, + 10608: 0xC12D, + 10609: 0xC12F, + 10610: 0xC130, + 10611: 0xC131, + 10612: 0xC136, + 10613: 0xC138, + 10614: 0xC139, + 10615: 0xC13C, + 10616: 0xC140, + 10617: 0xC148, + 10618: 0xC149, + 10619: 0xC14B, + 10620: 0xC14C, + 10621: 0xC14D, + 10622: 0xC154, + 10623: 0xC155, + 10624: 0xC158, + 10625: 0xC15C, + 10626: 0xC164, + 10627: 0xC165, + 10628: 0xC167, + 10629: 0xC168, + 10630: 0xC169, + 10631: 0xC170, + 10632: 0xC174, + 10633: 0xC178, + 10634: 0xC185, + 10635: 0xC18C, + 10636: 0xC18D, + 10637: 0xC18E, + 10638: 0xC190, + 10639: 0xC194, + 10640: 0xC196, + 10641: 0xC19C, + 10642: 0xC19D, + 10643: 0xC19F, + 10644: 0xC1A1, + 10645: 0xC1A5, + 10646: 0xC1A8, + 10647: 0xC1A9, + 10648: 0xC1AC, + 10649: 0xC1B0, + 10650: 0xC1BD, + 10651: 0xC1C4, + 10652: 0xC1C8, + 10653: 0xC1CC, + 10654: 0xC1D4, + 10655: 0xC1D7, + 10656: 0xC1D8, + 10657: 0xC1E0, + 10658: 0xC1E4, + 10659: 0xC1E8, + 10660: 0xC1F0, + 10661: 0xC1F1, + 10662: 0xC1F3, + 10663: 0xC1FC, + 10664: 0xC1FD, + 10665: 0xC200, + 10666: 0xC204, + 10667: 0xC20C, + 10668: 0xC20D, + 10669: 0xC20F, + 10670: 0xC211, + 10671: 0xC218, + 10672: 0xC219, + 10673: 0xC21C, + 10674: 0xC21F, + 10675: 0xC220, + 10676: 0xC228, + 10677: 0xC229, + 10678: 0xC22B, + 10679: 0xC22D, + 10680: 0xD3D7, + 10681: 0xD3D9, + 10682: 0xD3DA, + 10683: 0xD3DB, + 10684: 0xD3DC, + 10685: 0xD3DD, + 10686: 0xD3DE, + 10687: 0xD3DF, + 10688: 0xD3E0, + 10689: 0xD3E2, + 10690: 0xD3E4, + 10691: 0xD3E5, + 10692: 0xD3E6, + 10693: 0xD3E7, + 10694: 0xD3E8, + 10695: 0xD3E9, + 10696: 0xD3EA, + 10697: 0xD3EB, + 10698: 0xD3EE, + 10699: 0xD3EF, + 10700: 0xD3F1, + 10701: 0xD3F2, + 10702: 0xD3F3, + 10703: 0xD3F5, + 10704: 0xD3F6, + 10705: 0xD3F7, + 10706: 0xD3F8, + 10707: 0xD3F9, + 10708: 0xD3FA, + 10709: 0xD3FB, + 10710: 0xD3FE, + 10711: 0xD400, + 10712: 0xD402, + 10713: 0xD403, + 10714: 0xD404, + 10715: 0xD405, + 10716: 0xD406, + 10717: 0xD407, + 10718: 0xD409, + 10719: 0xD40A, + 10720: 0xD40B, + 10721: 0xD40C, + 10722: 0xD40D, + 10723: 0xD40E, + 10724: 0xD40F, + 10725: 0xD410, + 10726: 0xD411, + 10727: 0xD412, + 10728: 0xD413, + 10729: 0xD414, + 10730: 0xD415, + 10731: 0xD416, + 10732: 0xD417, + 10733: 0xD418, + 10734: 0xD419, + 10735: 0xD41A, + 10736: 0xD41B, + 10737: 0xD41C, + 10738: 0xD41E, + 10739: 0xD41F, + 10740: 0xD420, + 10741: 0xD421, + 10742: 0xD422, + 10743: 0xD423, + 10744: 0xD424, + 10745: 0xD425, + 10746: 0xD426, + 10747: 0xD427, + 10748: 0xD428, + 10749: 0xD429, + 10750: 0xD42A, + 10751: 0xD42B, + 10752: 0xD42C, + 10753: 0xD42D, + 10754: 0xD42E, + 10755: 0xD42F, + 10756: 0xD430, + 10757: 0xD431, + 10758: 0xD432, + 10759: 0xD433, + 10760: 0xD434, + 10761: 0xD435, + 10762: 0xD436, + 10763: 0xD437, + 10764: 0xC22F, + 10765: 0xC231, + 10766: 0xC232, + 10767: 0xC234, + 10768: 0xC248, + 10769: 0xC250, + 10770: 0xC251, + 10771: 0xC254, + 10772: 0xC258, + 10773: 0xC260, + 10774: 0xC265, + 10775: 0xC26C, + 10776: 0xC26D, + 10777: 0xC270, + 10778: 0xC274, + 10779: 0xC27C, + 10780: 0xC27D, + 10781: 0xC27F, + 10782: 0xC281, + 10783: 0xC288, + 10784: 0xC289, + 10785: 0xC290, + 10786: 0xC298, + 10787: 0xC29B, + 10788: 0xC29D, + 10789: 0xC2A4, + 10790: 0xC2A5, + 10791: 0xC2A8, + 10792: 0xC2AC, + 10793: 0xC2AD, + 10794: 0xC2B4, + 10795: 0xC2B5, + 10796: 0xC2B7, + 10797: 0xC2B9, + 10798: 0xC2DC, + 10799: 0xC2DD, + 10800: 0xC2E0, + 10801: 0xC2E3, + 10802: 0xC2E4, + 10803: 0xC2EB, + 10804: 0xC2EC, + 10805: 0xC2ED, + 10806: 0xC2EF, + 10807: 0xC2F1, + 10808: 0xC2F6, + 10809: 0xC2F8, + 10810: 0xC2F9, + 10811: 0xC2FB, + 10812: 0xC2FC, + 10813: 0xC300, + 10814: 0xC308, + 10815: 0xC309, + 10816: 0xC30C, + 10817: 0xC30D, + 10818: 0xC313, + 10819: 0xC314, + 10820: 0xC315, + 10821: 0xC318, + 10822: 0xC31C, + 10823: 0xC324, + 10824: 0xC325, + 10825: 0xC328, + 10826: 0xC329, + 10827: 0xC345, + 10828: 0xC368, + 10829: 0xC369, + 10830: 0xC36C, + 10831: 0xC370, + 10832: 0xC372, + 10833: 0xC378, + 10834: 0xC379, + 10835: 0xC37C, + 10836: 0xC37D, + 10837: 0xC384, + 10838: 0xC388, + 10839: 0xC38C, + 10840: 0xC3C0, + 10841: 0xC3D8, + 10842: 0xC3D9, + 10843: 0xC3DC, + 10844: 0xC3DF, + 10845: 0xC3E0, + 10846: 0xC3E2, + 10847: 0xC3E8, + 10848: 0xC3E9, + 10849: 0xC3ED, + 10850: 0xC3F4, + 10851: 0xC3F5, + 10852: 0xC3F8, + 10853: 0xC408, + 10854: 0xC410, + 10855: 0xC424, + 10856: 0xC42C, + 10857: 0xC430, + 10858: 0xD438, + 10859: 0xD439, + 10860: 0xD43A, + 10861: 0xD43B, + 10862: 0xD43C, + 10863: 0xD43D, + 10864: 0xD43E, + 10865: 0xD43F, + 10866: 0xD441, + 10867: 0xD442, + 10868: 0xD443, + 10869: 0xD445, + 10870: 0xD446, + 10871: 0xD447, + 10872: 0xD448, + 10873: 0xD449, + 10874: 0xD44A, + 10875: 0xD44B, + 10876: 0xD44C, + 10877: 0xD44D, + 10878: 0xD44E, + 10879: 0xD44F, + 10880: 0xD450, + 10881: 0xD451, + 10882: 0xD452, + 10883: 0xD453, + 10884: 0xD454, + 10885: 0xD455, + 10886: 0xD456, + 10887: 0xD457, + 10888: 0xD458, + 10889: 0xD459, + 10890: 0xD45A, + 10891: 0xD45B, + 10892: 0xD45D, + 10893: 0xD45E, + 10894: 0xD45F, + 10895: 0xD461, + 10896: 0xD462, + 10897: 0xD463, + 10898: 0xD465, + 10899: 0xD466, + 10900: 0xD467, + 10901: 0xD468, + 10902: 0xD469, + 10903: 0xD46A, + 10904: 0xD46B, + 10905: 0xD46C, + 10906: 0xD46E, + 10907: 0xD470, + 10908: 0xD471, + 10909: 0xD472, + 10910: 0xD473, + 10911: 0xD474, + 10912: 0xD475, + 10913: 0xD476, + 10914: 0xD477, + 10915: 0xD47A, + 10916: 0xD47B, + 10917: 0xD47D, + 10918: 0xD47E, + 10919: 0xD481, + 10920: 0xD483, + 10921: 0xD484, + 10922: 0xD485, + 10923: 0xD486, + 10924: 0xD487, + 10925: 0xD48A, + 10926: 0xD48C, + 10927: 0xD48E, + 10928: 0xD48F, + 10929: 0xD490, + 10930: 0xD491, + 10931: 0xD492, + 10932: 0xD493, + 10933: 0xD495, + 10934: 0xD496, + 10935: 0xD497, + 10936: 0xD498, + 10937: 0xD499, + 10938: 0xD49A, + 10939: 0xD49B, + 10940: 0xD49C, + 10941: 0xD49D, + 10942: 0xC434, + 10943: 0xC43C, + 10944: 0xC43D, + 10945: 0xC448, + 10946: 0xC464, + 10947: 0xC465, + 10948: 0xC468, + 10949: 0xC46C, + 10950: 0xC474, + 10951: 0xC475, + 10952: 0xC479, + 10953: 0xC480, + 10954: 0xC494, + 10955: 0xC49C, + 10956: 0xC4B8, + 10957: 0xC4BC, + 10958: 0xC4E9, + 10959: 0xC4F0, + 10960: 0xC4F1, + 10961: 0xC4F4, + 10962: 0xC4F8, + 10963: 0xC4FA, + 10964: 0xC4FF, + 10965: 0xC500, + 10966: 0xC501, + 10967: 0xC50C, + 10968: 0xC510, + 10969: 0xC514, + 10970: 0xC51C, + 10971: 0xC528, + 10972: 0xC529, + 10973: 0xC52C, + 10974: 0xC530, + 10975: 0xC538, + 10976: 0xC539, + 10977: 0xC53B, + 10978: 0xC53D, + 10979: 0xC544, + 10980: 0xC545, + 10981: 0xC548, + 10982: 0xC549, + 10983: 0xC54A, + 10984: 0xC54C, + 10985: 0xC54D, + 10986: 0xC54E, + 10987: 0xC553, + 10988: 0xC554, + 10989: 0xC555, + 10990: 0xC557, + 10991: 0xC558, + 10992: 0xC559, + 10993: 0xC55D, + 10994: 0xC55E, + 10995: 0xC560, + 10996: 0xC561, + 10997: 0xC564, + 10998: 0xC568, + 10999: 0xC570, + 11000: 0xC571, + 11001: 0xC573, + 11002: 0xC574, + 11003: 0xC575, + 11004: 0xC57C, + 11005: 0xC57D, + 11006: 0xC580, + 11007: 0xC584, + 11008: 0xC587, + 11009: 0xC58C, + 11010: 0xC58D, + 11011: 0xC58F, + 11012: 0xC591, + 11013: 0xC595, + 11014: 0xC597, + 11015: 0xC598, + 11016: 0xC59C, + 11017: 0xC5A0, + 11018: 0xC5A9, + 11019: 0xC5B4, + 11020: 0xC5B5, + 11021: 0xC5B8, + 11022: 0xC5B9, + 11023: 0xC5BB, + 11024: 0xC5BC, + 11025: 0xC5BD, + 11026: 0xC5BE, + 11027: 0xC5C4, + 11028: 0xC5C5, + 11029: 0xC5C6, + 11030: 0xC5C7, + 11031: 0xC5C8, + 11032: 0xC5C9, + 11033: 0xC5CA, + 11034: 0xC5CC, + 11035: 0xC5CE, + 11036: 0xD49E, + 11037: 0xD49F, + 11038: 0xD4A0, + 11039: 0xD4A1, + 11040: 0xD4A2, + 11041: 0xD4A3, + 11042: 0xD4A4, + 11043: 0xD4A5, + 11044: 0xD4A6, + 11045: 0xD4A7, + 11046: 0xD4A8, + 11047: 0xD4AA, + 11048: 0xD4AB, + 11049: 0xD4AC, + 11050: 0xD4AD, + 11051: 0xD4AE, + 11052: 0xD4AF, + 11053: 0xD4B0, + 11054: 0xD4B1, + 11055: 0xD4B2, + 11056: 0xD4B3, + 11057: 0xD4B4, + 11058: 0xD4B5, + 11059: 0xD4B6, + 11060: 0xD4B7, + 11061: 0xD4B8, + 11062: 0xD4B9, + 11063: 0xD4BA, + 11064: 0xD4BB, + 11065: 0xD4BC, + 11066: 0xD4BD, + 11067: 0xD4BE, + 11068: 0xD4BF, + 11069: 0xD4C0, + 11070: 0xD4C1, + 11071: 0xD4C2, + 11072: 0xD4C3, + 11073: 0xD4C4, + 11074: 0xD4C5, + 11075: 0xD4C6, + 11076: 0xD4C7, + 11077: 0xD4C8, + 11078: 0xD4C9, + 11079: 0xD4CA, + 11080: 0xD4CB, + 11081: 0xD4CD, + 11082: 0xD4CE, + 11083: 0xD4CF, + 11084: 0xD4D1, + 11085: 0xD4D2, + 11086: 0xD4D3, + 11087: 0xD4D5, + 11088: 0xD4D6, + 11089: 0xD4D7, + 11090: 0xD4D8, + 11091: 0xD4D9, + 11092: 0xD4DA, + 11093: 0xD4DB, + 11094: 0xD4DD, + 11095: 0xD4DE, + 11096: 0xD4E0, + 11097: 0xD4E1, + 11098: 0xD4E2, + 11099: 0xD4E3, + 11100: 0xD4E4, + 11101: 0xD4E5, + 11102: 0xD4E6, + 11103: 0xD4E7, + 11104: 0xD4E9, + 11105: 0xD4EA, + 11106: 0xD4EB, + 11107: 0xD4ED, + 11108: 0xD4EE, + 11109: 0xD4EF, + 11110: 0xD4F1, + 11111: 0xD4F2, + 11112: 0xD4F3, + 11113: 0xD4F4, + 11114: 0xD4F5, + 11115: 0xD4F6, + 11116: 0xD4F7, + 11117: 0xD4F9, + 11118: 0xD4FA, + 11119: 0xD4FC, + 11120: 0xC5D0, + 11121: 0xC5D1, + 11122: 0xC5D4, + 11123: 0xC5D8, + 11124: 0xC5E0, + 11125: 0xC5E1, + 11126: 0xC5E3, + 11127: 0xC5E5, + 11128: 0xC5EC, + 11129: 0xC5ED, + 11130: 0xC5EE, + 11131: 0xC5F0, + 11132: 0xC5F4, + 11133: 0xC5F6, + 11134: 0xC5F7, + 11135: 0xC5FC, + 11136: 0xC5FD, + 11137: 0xC5FE, + 11138: 0xC5FF, + 11139: 0xC600, + 11140: 0xC601, + 11141: 0xC605, + 11142: 0xC606, + 11143: 0xC607, + 11144: 0xC608, + 11145: 0xC60C, + 11146: 0xC610, + 11147: 0xC618, + 11148: 0xC619, + 11149: 0xC61B, + 11150: 0xC61C, + 11151: 0xC624, + 11152: 0xC625, + 11153: 0xC628, + 11154: 0xC62C, + 11155: 0xC62D, + 11156: 0xC62E, + 11157: 0xC630, + 11158: 0xC633, + 11159: 0xC634, + 11160: 0xC635, + 11161: 0xC637, + 11162: 0xC639, + 11163: 0xC63B, + 11164: 0xC640, + 11165: 0xC641, + 11166: 0xC644, + 11167: 0xC648, + 11168: 0xC650, + 11169: 0xC651, + 11170: 0xC653, + 11171: 0xC654, + 11172: 0xC655, + 11173: 0xC65C, + 11174: 0xC65D, + 11175: 0xC660, + 11176: 0xC66C, + 11177: 0xC66F, + 11178: 0xC671, + 11179: 0xC678, + 11180: 0xC679, + 11181: 0xC67C, + 11182: 0xC680, + 11183: 0xC688, + 11184: 0xC689, + 11185: 0xC68B, + 11186: 0xC68D, + 11187: 0xC694, + 11188: 0xC695, + 11189: 0xC698, + 11190: 0xC69C, + 11191: 0xC6A4, + 11192: 0xC6A5, + 11193: 0xC6A7, + 11194: 0xC6A9, + 11195: 0xC6B0, + 11196: 0xC6B1, + 11197: 0xC6B4, + 11198: 0xC6B8, + 11199: 0xC6B9, + 11200: 0xC6BA, + 11201: 0xC6C0, + 11202: 0xC6C1, + 11203: 0xC6C3, + 11204: 0xC6C5, + 11205: 0xC6CC, + 11206: 0xC6CD, + 11207: 0xC6D0, + 11208: 0xC6D4, + 11209: 0xC6DC, + 11210: 0xC6DD, + 11211: 0xC6E0, + 11212: 0xC6E1, + 11213: 0xC6E8, + 11214: 0xD4FE, + 11215: 0xD4FF, + 11216: 0xD500, + 11217: 0xD501, + 11218: 0xD502, + 11219: 0xD503, + 11220: 0xD505, + 11221: 0xD506, + 11222: 0xD507, + 11223: 0xD509, + 11224: 0xD50A, + 11225: 0xD50B, + 11226: 0xD50D, + 11227: 0xD50E, + 11228: 0xD50F, + 11229: 0xD510, + 11230: 0xD511, + 11231: 0xD512, + 11232: 0xD513, + 11233: 0xD516, + 11234: 0xD518, + 11235: 0xD519, + 11236: 0xD51A, + 11237: 0xD51B, + 11238: 0xD51C, + 11239: 0xD51D, + 11240: 0xD51E, + 11241: 0xD51F, + 11242: 0xD520, + 11243: 0xD521, + 11244: 0xD522, + 11245: 0xD523, + 11246: 0xD524, + 11247: 0xD525, + 11248: 0xD526, + 11249: 0xD527, + 11250: 0xD528, + 11251: 0xD529, + 11252: 0xD52A, + 11253: 0xD52B, + 11254: 0xD52C, + 11255: 0xD52D, + 11256: 0xD52E, + 11257: 0xD52F, + 11258: 0xD530, + 11259: 0xD531, + 11260: 0xD532, + 11261: 0xD533, + 11262: 0xD534, + 11263: 0xD535, + 11264: 0xD536, + 11265: 0xD537, + 11266: 0xD538, + 11267: 0xD539, + 11268: 0xD53A, + 11269: 0xD53B, + 11270: 0xD53E, + 11271: 0xD53F, + 11272: 0xD541, + 11273: 0xD542, + 11274: 0xD543, + 11275: 0xD545, + 11276: 0xD546, + 11277: 0xD547, + 11278: 0xD548, + 11279: 0xD549, + 11280: 0xD54A, + 11281: 0xD54B, + 11282: 0xD54E, + 11283: 0xD550, + 11284: 0xD552, + 11285: 0xD553, + 11286: 0xD554, + 11287: 0xD555, + 11288: 0xD556, + 11289: 0xD557, + 11290: 0xD55A, + 11291: 0xD55B, + 11292: 0xD55D, + 11293: 0xD55E, + 11294: 0xD55F, + 11295: 0xD561, + 11296: 0xD562, + 11297: 0xD563, + 11298: 0xC6E9, + 11299: 0xC6EC, + 11300: 0xC6F0, + 11301: 0xC6F8, + 11302: 0xC6F9, + 11303: 0xC6FD, + 11304: 0xC704, + 11305: 0xC705, + 11306: 0xC708, + 11307: 0xC70C, + 11308: 0xC714, + 11309: 0xC715, + 11310: 0xC717, + 11311: 0xC719, + 11312: 0xC720, + 11313: 0xC721, + 11314: 0xC724, + 11315: 0xC728, + 11316: 0xC730, + 11317: 0xC731, + 11318: 0xC733, + 11319: 0xC735, + 11320: 0xC737, + 11321: 0xC73C, + 11322: 0xC73D, + 11323: 0xC740, + 11324: 0xC744, + 11325: 0xC74A, + 11326: 0xC74C, + 11327: 0xC74D, + 11328: 0xC74F, + 11329: 0xC751, + 11330: 0xC752, + 11331: 0xC753, + 11332: 0xC754, + 11333: 0xC755, + 11334: 0xC756, + 11335: 0xC757, + 11336: 0xC758, + 11337: 0xC75C, + 11338: 0xC760, + 11339: 0xC768, + 11340: 0xC76B, + 11341: 0xC774, + 11342: 0xC775, + 11343: 0xC778, + 11344: 0xC77C, + 11345: 0xC77D, + 11346: 0xC77E, + 11347: 0xC783, + 11348: 0xC784, + 11349: 0xC785, + 11350: 0xC787, + 11351: 0xC788, + 11352: 0xC789, + 11353: 0xC78A, + 11354: 0xC78E, + 11355: 0xC790, + 11356: 0xC791, + 11357: 0xC794, + 11358: 0xC796, + 11359: 0xC797, + 11360: 0xC798, + 11361: 0xC79A, + 11362: 0xC7A0, + 11363: 0xC7A1, + 11364: 0xC7A3, + 11365: 0xC7A4, + 11366: 0xC7A5, + 11367: 0xC7A6, + 11368: 0xC7AC, + 11369: 0xC7AD, + 11370: 0xC7B0, + 11371: 0xC7B4, + 11372: 0xC7BC, + 11373: 0xC7BD, + 11374: 0xC7BF, + 11375: 0xC7C0, + 11376: 0xC7C1, + 11377: 0xC7C8, + 11378: 0xC7C9, + 11379: 0xC7CC, + 11380: 0xC7CE, + 11381: 0xC7D0, + 11382: 0xC7D8, + 11383: 0xC7DD, + 11384: 0xC7E4, + 11385: 0xC7E8, + 11386: 0xC7EC, + 11387: 0xC800, + 11388: 0xC801, + 11389: 0xC804, + 11390: 0xC808, + 11391: 0xC80A, + 11392: 0xD564, + 11393: 0xD566, + 11394: 0xD567, + 11395: 0xD56A, + 11396: 0xD56C, + 11397: 0xD56E, + 11398: 0xD56F, + 11399: 0xD570, + 11400: 0xD571, + 11401: 0xD572, + 11402: 0xD573, + 11403: 0xD576, + 11404: 0xD577, + 11405: 0xD579, + 11406: 0xD57A, + 11407: 0xD57B, + 11408: 0xD57D, + 11409: 0xD57E, + 11410: 0xD57F, + 11411: 0xD580, + 11412: 0xD581, + 11413: 0xD582, + 11414: 0xD583, + 11415: 0xD586, + 11416: 0xD58A, + 11417: 0xD58B, + 11418: 0xD58C, + 11419: 0xD58D, + 11420: 0xD58E, + 11421: 0xD58F, + 11422: 0xD591, + 11423: 0xD592, + 11424: 0xD593, + 11425: 0xD594, + 11426: 0xD595, + 11427: 0xD596, + 11428: 0xD597, + 11429: 0xD598, + 11430: 0xD599, + 11431: 0xD59A, + 11432: 0xD59B, + 11433: 0xD59C, + 11434: 0xD59D, + 11435: 0xD59E, + 11436: 0xD59F, + 11437: 0xD5A0, + 11438: 0xD5A1, + 11439: 0xD5A2, + 11440: 0xD5A3, + 11441: 0xD5A4, + 11442: 0xD5A6, + 11443: 0xD5A7, + 11444: 0xD5A8, + 11445: 0xD5A9, + 11446: 0xD5AA, + 11447: 0xD5AB, + 11448: 0xD5AC, + 11449: 0xD5AD, + 11450: 0xD5AE, + 11451: 0xD5AF, + 11452: 0xD5B0, + 11453: 0xD5B1, + 11454: 0xD5B2, + 11455: 0xD5B3, + 11456: 0xD5B4, + 11457: 0xD5B5, + 11458: 0xD5B6, + 11459: 0xD5B7, + 11460: 0xD5B8, + 11461: 0xD5B9, + 11462: 0xD5BA, + 11463: 0xD5BB, + 11464: 0xD5BC, + 11465: 0xD5BD, + 11466: 0xD5BE, + 11467: 0xD5BF, + 11468: 0xD5C0, + 11469: 0xD5C1, + 11470: 0xD5C2, + 11471: 0xD5C3, + 11472: 0xD5C4, + 11473: 0xD5C5, + 11474: 0xD5C6, + 11475: 0xD5C7, + 11476: 0xC810, + 11477: 0xC811, + 11478: 0xC813, + 11479: 0xC815, + 11480: 0xC816, + 11481: 0xC81C, + 11482: 0xC81D, + 11483: 0xC820, + 11484: 0xC824, + 11485: 0xC82C, + 11486: 0xC82D, + 11487: 0xC82F, + 11488: 0xC831, + 11489: 0xC838, + 11490: 0xC83C, + 11491: 0xC840, + 11492: 0xC848, + 11493: 0xC849, + 11494: 0xC84C, + 11495: 0xC84D, + 11496: 0xC854, + 11497: 0xC870, + 11498: 0xC871, + 11499: 0xC874, + 11500: 0xC878, + 11501: 0xC87A, + 11502: 0xC880, + 11503: 0xC881, + 11504: 0xC883, + 11505: 0xC885, + 11506: 0xC886, + 11507: 0xC887, + 11508: 0xC88B, + 11509: 0xC88C, + 11510: 0xC88D, + 11511: 0xC894, + 11512: 0xC89D, + 11513: 0xC89F, + 11514: 0xC8A1, + 11515: 0xC8A8, + 11516: 0xC8BC, + 11517: 0xC8BD, + 11518: 0xC8C4, + 11519: 0xC8C8, + 11520: 0xC8CC, + 11521: 0xC8D4, + 11522: 0xC8D5, + 11523: 0xC8D7, + 11524: 0xC8D9, + 11525: 0xC8E0, + 11526: 0xC8E1, + 11527: 0xC8E4, + 11528: 0xC8F5, + 11529: 0xC8FC, + 11530: 0xC8FD, + 11531: 0xC900, + 11532: 0xC904, + 11533: 0xC905, + 11534: 0xC906, + 11535: 0xC90C, + 11536: 0xC90D, + 11537: 0xC90F, + 11538: 0xC911, + 11539: 0xC918, + 11540: 0xC92C, + 11541: 0xC934, + 11542: 0xC950, + 11543: 0xC951, + 11544: 0xC954, + 11545: 0xC958, + 11546: 0xC960, + 11547: 0xC961, + 11548: 0xC963, + 11549: 0xC96C, + 11550: 0xC970, + 11551: 0xC974, + 11552: 0xC97C, + 11553: 0xC988, + 11554: 0xC989, + 11555: 0xC98C, + 11556: 0xC990, + 11557: 0xC998, + 11558: 0xC999, + 11559: 0xC99B, + 11560: 0xC99D, + 11561: 0xC9C0, + 11562: 0xC9C1, + 11563: 0xC9C4, + 11564: 0xC9C7, + 11565: 0xC9C8, + 11566: 0xC9CA, + 11567: 0xC9D0, + 11568: 0xC9D1, + 11569: 0xC9D3, + 11570: 0xD5CA, + 11571: 0xD5CB, + 11572: 0xD5CD, + 11573: 0xD5CE, + 11574: 0xD5CF, + 11575: 0xD5D1, + 11576: 0xD5D3, + 11577: 0xD5D4, + 11578: 0xD5D5, + 11579: 0xD5D6, + 11580: 0xD5D7, + 11581: 0xD5DA, + 11582: 0xD5DC, + 11583: 0xD5DE, + 11584: 0xD5DF, + 11585: 0xD5E0, + 11586: 0xD5E1, + 11587: 0xD5E2, + 11588: 0xD5E3, + 11589: 0xD5E6, + 11590: 0xD5E7, + 11591: 0xD5E9, + 11592: 0xD5EA, + 11593: 0xD5EB, + 11594: 0xD5ED, + 11595: 0xD5EE, + 11596: 0xD5EF, + 11597: 0xD5F0, + 11598: 0xD5F1, + 11599: 0xD5F2, + 11600: 0xD5F3, + 11601: 0xD5F6, + 11602: 0xD5F8, + 11603: 0xD5FA, + 11604: 0xD5FB, + 11605: 0xD5FC, + 11606: 0xD5FD, + 11607: 0xD5FE, + 11608: 0xD5FF, + 11609: 0xD602, + 11610: 0xD603, + 11611: 0xD605, + 11612: 0xD606, + 11613: 0xD607, + 11614: 0xD609, + 11615: 0xD60A, + 11616: 0xD60B, + 11617: 0xD60C, + 11618: 0xD60D, + 11619: 0xD60E, + 11620: 0xD60F, + 11621: 0xD612, + 11622: 0xD616, + 11623: 0xD617, + 11624: 0xD618, + 11625: 0xD619, + 11626: 0xD61A, + 11627: 0xD61B, + 11628: 0xD61D, + 11629: 0xD61E, + 11630: 0xD61F, + 11631: 0xD621, + 11632: 0xD622, + 11633: 0xD623, + 11634: 0xD625, + 11635: 0xD626, + 11636: 0xD627, + 11637: 0xD628, + 11638: 0xD629, + 11639: 0xD62A, + 11640: 0xD62B, + 11641: 0xD62C, + 11642: 0xD62E, + 11643: 0xD62F, + 11644: 0xD630, + 11645: 0xD631, + 11646: 0xD632, + 11647: 0xD633, + 11648: 0xD634, + 11649: 0xD635, + 11650: 0xD636, + 11651: 0xD637, + 11652: 0xD63A, + 11653: 0xD63B, + 11654: 0xC9D5, + 11655: 0xC9D6, + 11656: 0xC9D9, + 11657: 0xC9DA, + 11658: 0xC9DC, + 11659: 0xC9DD, + 11660: 0xC9E0, + 11661: 0xC9E2, + 11662: 0xC9E4, + 11663: 0xC9E7, + 11664: 0xC9EC, + 11665: 0xC9ED, + 11666: 0xC9EF, + 11667: 0xC9F0, + 11668: 0xC9F1, + 11669: 0xC9F8, + 11670: 0xC9F9, + 11671: 0xC9FC, + 11672: 0xCA00, + 11673: 0xCA08, + 11674: 0xCA09, + 11675: 0xCA0B, + 11676: 0xCA0C, + 11677: 0xCA0D, + 11678: 0xCA14, + 11679: 0xCA18, + 11680: 0xCA29, + 11681: 0xCA4C, + 11682: 0xCA4D, + 11683: 0xCA50, + 11684: 0xCA54, + 11685: 0xCA5C, + 11686: 0xCA5D, + 11687: 0xCA5F, + 11688: 0xCA60, + 11689: 0xCA61, + 11690: 0xCA68, + 11691: 0xCA7D, + 11692: 0xCA84, + 11693: 0xCA98, + 11694: 0xCABC, + 11695: 0xCABD, + 11696: 0xCAC0, + 11697: 0xCAC4, + 11698: 0xCACC, + 11699: 0xCACD, + 11700: 0xCACF, + 11701: 0xCAD1, + 11702: 0xCAD3, + 11703: 0xCAD8, + 11704: 0xCAD9, + 11705: 0xCAE0, + 11706: 0xCAEC, + 11707: 0xCAF4, + 11708: 0xCB08, + 11709: 0xCB10, + 11710: 0xCB14, + 11711: 0xCB18, + 11712: 0xCB20, + 11713: 0xCB21, + 11714: 0xCB41, + 11715: 0xCB48, + 11716: 0xCB49, + 11717: 0xCB4C, + 11718: 0xCB50, + 11719: 0xCB58, + 11720: 0xCB59, + 11721: 0xCB5D, + 11722: 0xCB64, + 11723: 0xCB78, + 11724: 0xCB79, + 11725: 0xCB9C, + 11726: 0xCBB8, + 11727: 0xCBD4, + 11728: 0xCBE4, + 11729: 0xCBE7, + 11730: 0xCBE9, + 11731: 0xCC0C, + 11732: 0xCC0D, + 11733: 0xCC10, + 11734: 0xCC14, + 11735: 0xCC1C, + 11736: 0xCC1D, + 11737: 0xCC21, + 11738: 0xCC22, + 11739: 0xCC27, + 11740: 0xCC28, + 11741: 0xCC29, + 11742: 0xCC2C, + 11743: 0xCC2E, + 11744: 0xCC30, + 11745: 0xCC38, + 11746: 0xCC39, + 11747: 0xCC3B, + 11748: 0xD63D, + 11749: 0xD63E, + 11750: 0xD63F, + 11751: 0xD641, + 11752: 0xD642, + 11753: 0xD643, + 11754: 0xD644, + 11755: 0xD646, + 11756: 0xD647, + 11757: 0xD64A, + 11758: 0xD64C, + 11759: 0xD64E, + 11760: 0xD64F, + 11761: 0xD650, + 11762: 0xD652, + 11763: 0xD653, + 11764: 0xD656, + 11765: 0xD657, + 11766: 0xD659, + 11767: 0xD65A, + 11768: 0xD65B, + 11769: 0xD65D, + 11770: 0xD65E, + 11771: 0xD65F, + 11772: 0xD660, + 11773: 0xD661, + 11774: 0xD662, + 11775: 0xD663, + 11776: 0xD664, + 11777: 0xD665, + 11778: 0xD666, + 11779: 0xD668, + 11780: 0xD66A, + 11781: 0xD66B, + 11782: 0xD66C, + 11783: 0xD66D, + 11784: 0xD66E, + 11785: 0xD66F, + 11786: 0xD672, + 11787: 0xD673, + 11788: 0xD675, + 11789: 0xD676, + 11790: 0xD677, + 11791: 0xD678, + 11792: 0xD679, + 11793: 0xD67A, + 11794: 0xD67B, + 11795: 0xD67C, + 11796: 0xD67D, + 11797: 0xD67E, + 11798: 0xD67F, + 11799: 0xD680, + 11800: 0xD681, + 11801: 0xD682, + 11802: 0xD684, + 11803: 0xD686, + 11804: 0xD687, + 11805: 0xD688, + 11806: 0xD689, + 11807: 0xD68A, + 11808: 0xD68B, + 11809: 0xD68E, + 11810: 0xD68F, + 11811: 0xD691, + 11812: 0xD692, + 11813: 0xD693, + 11814: 0xD695, + 11815: 0xD696, + 11816: 0xD697, + 11817: 0xD698, + 11818: 0xD699, + 11819: 0xD69A, + 11820: 0xD69B, + 11821: 0xD69C, + 11822: 0xD69E, + 11823: 0xD6A0, + 11824: 0xD6A2, + 11825: 0xD6A3, + 11826: 0xD6A4, + 11827: 0xD6A5, + 11828: 0xD6A6, + 11829: 0xD6A7, + 11830: 0xD6A9, + 11831: 0xD6AA, + 11832: 0xCC3C, + 11833: 0xCC3D, + 11834: 0xCC3E, + 11835: 0xCC44, + 11836: 0xCC45, + 11837: 0xCC48, + 11838: 0xCC4C, + 11839: 0xCC54, + 11840: 0xCC55, + 11841: 0xCC57, + 11842: 0xCC58, + 11843: 0xCC59, + 11844: 0xCC60, + 11845: 0xCC64, + 11846: 0xCC66, + 11847: 0xCC68, + 11848: 0xCC70, + 11849: 0xCC75, + 11850: 0xCC98, + 11851: 0xCC99, + 11852: 0xCC9C, + 11853: 0xCCA0, + 11854: 0xCCA8, + 11855: 0xCCA9, + 11856: 0xCCAB, + 11857: 0xCCAC, + 11858: 0xCCAD, + 11859: 0xCCB4, + 11860: 0xCCB5, + 11861: 0xCCB8, + 11862: 0xCCBC, + 11863: 0xCCC4, + 11864: 0xCCC5, + 11865: 0xCCC7, + 11866: 0xCCC9, + 11867: 0xCCD0, + 11868: 0xCCD4, + 11869: 0xCCE4, + 11870: 0xCCEC, + 11871: 0xCCF0, + 11872: 0xCD01, + 11873: 0xCD08, + 11874: 0xCD09, + 11875: 0xCD0C, + 11876: 0xCD10, + 11877: 0xCD18, + 11878: 0xCD19, + 11879: 0xCD1B, + 11880: 0xCD1D, + 11881: 0xCD24, + 11882: 0xCD28, + 11883: 0xCD2C, + 11884: 0xCD39, + 11885: 0xCD5C, + 11886: 0xCD60, + 11887: 0xCD64, + 11888: 0xCD6C, + 11889: 0xCD6D, + 11890: 0xCD6F, + 11891: 0xCD71, + 11892: 0xCD78, + 11893: 0xCD88, + 11894: 0xCD94, + 11895: 0xCD95, + 11896: 0xCD98, + 11897: 0xCD9C, + 11898: 0xCDA4, + 11899: 0xCDA5, + 11900: 0xCDA7, + 11901: 0xCDA9, + 11902: 0xCDB0, + 11903: 0xCDC4, + 11904: 0xCDCC, + 11905: 0xCDD0, + 11906: 0xCDE8, + 11907: 0xCDEC, + 11908: 0xCDF0, + 11909: 0xCDF8, + 11910: 0xCDF9, + 11911: 0xCDFB, + 11912: 0xCDFD, + 11913: 0xCE04, + 11914: 0xCE08, + 11915: 0xCE0C, + 11916: 0xCE14, + 11917: 0xCE19, + 11918: 0xCE20, + 11919: 0xCE21, + 11920: 0xCE24, + 11921: 0xCE28, + 11922: 0xCE30, + 11923: 0xCE31, + 11924: 0xCE33, + 11925: 0xCE35, + 11926: 0xD6AB, + 11927: 0xD6AD, + 11928: 0xD6AE, + 11929: 0xD6AF, + 11930: 0xD6B1, + 11931: 0xD6B2, + 11932: 0xD6B3, + 11933: 0xD6B4, + 11934: 0xD6B5, + 11935: 0xD6B6, + 11936: 0xD6B7, + 11937: 0xD6B8, + 11938: 0xD6BA, + 11939: 0xD6BC, + 11940: 0xD6BD, + 11941: 0xD6BE, + 11942: 0xD6BF, + 11943: 0xD6C0, + 11944: 0xD6C1, + 11945: 0xD6C2, + 11946: 0xD6C3, + 11947: 0xD6C6, + 11948: 0xD6C7, + 11949: 0xD6C9, + 11950: 0xD6CA, + 11951: 0xD6CB, + 11952: 0xD6CD, + 11953: 0xD6CE, + 11954: 0xD6CF, + 11955: 0xD6D0, + 11956: 0xD6D2, + 11957: 0xD6D3, + 11958: 0xD6D5, + 11959: 0xD6D6, + 11960: 0xD6D8, + 11961: 0xD6DA, + 11962: 0xD6DB, + 11963: 0xD6DC, + 11964: 0xD6DD, + 11965: 0xD6DE, + 11966: 0xD6DF, + 11967: 0xD6E1, + 11968: 0xD6E2, + 11969: 0xD6E3, + 11970: 0xD6E5, + 11971: 0xD6E6, + 11972: 0xD6E7, + 11973: 0xD6E9, + 11974: 0xD6EA, + 11975: 0xD6EB, + 11976: 0xD6EC, + 11977: 0xD6ED, + 11978: 0xD6EE, + 11979: 0xD6EF, + 11980: 0xD6F1, + 11981: 0xD6F2, + 11982: 0xD6F3, + 11983: 0xD6F4, + 11984: 0xD6F6, + 11985: 0xD6F7, + 11986: 0xD6F8, + 11987: 0xD6F9, + 11988: 0xD6FA, + 11989: 0xD6FB, + 11990: 0xD6FE, + 11991: 0xD6FF, + 11992: 0xD701, + 11993: 0xD702, + 11994: 0xD703, + 11995: 0xD705, + 11996: 0xD706, + 11997: 0xD707, + 11998: 0xD708, + 11999: 0xD709, + 12000: 0xD70A, + 12001: 0xD70B, + 12002: 0xD70C, + 12003: 0xD70D, + 12004: 0xD70E, + 12005: 0xD70F, + 12006: 0xD710, + 12007: 0xD712, + 12008: 0xD713, + 12009: 0xD714, + 12010: 0xCE58, + 12011: 0xCE59, + 12012: 0xCE5C, + 12013: 0xCE5F, + 12014: 0xCE60, + 12015: 0xCE61, + 12016: 0xCE68, + 12017: 0xCE69, + 12018: 0xCE6B, + 12019: 0xCE6D, + 12020: 0xCE74, + 12021: 0xCE75, + 12022: 0xCE78, + 12023: 0xCE7C, + 12024: 0xCE84, + 12025: 0xCE85, + 12026: 0xCE87, + 12027: 0xCE89, + 12028: 0xCE90, + 12029: 0xCE91, + 12030: 0xCE94, + 12031: 0xCE98, + 12032: 0xCEA0, + 12033: 0xCEA1, + 12034: 0xCEA3, + 12035: 0xCEA4, + 12036: 0xCEA5, + 12037: 0xCEAC, + 12038: 0xCEAD, + 12039: 0xCEC1, + 12040: 0xCEE4, + 12041: 0xCEE5, + 12042: 0xCEE8, + 12043: 0xCEEB, + 12044: 0xCEEC, + 12045: 0xCEF4, + 12046: 0xCEF5, + 12047: 0xCEF7, + 12048: 0xCEF8, + 12049: 0xCEF9, + 12050: 0xCF00, + 12051: 0xCF01, + 12052: 0xCF04, + 12053: 0xCF08, + 12054: 0xCF10, + 12055: 0xCF11, + 12056: 0xCF13, + 12057: 0xCF15, + 12058: 0xCF1C, + 12059: 0xCF20, + 12060: 0xCF24, + 12061: 0xCF2C, + 12062: 0xCF2D, + 12063: 0xCF2F, + 12064: 0xCF30, + 12065: 0xCF31, + 12066: 0xCF38, + 12067: 0xCF54, + 12068: 0xCF55, + 12069: 0xCF58, + 12070: 0xCF5C, + 12071: 0xCF64, + 12072: 0xCF65, + 12073: 0xCF67, + 12074: 0xCF69, + 12075: 0xCF70, + 12076: 0xCF71, + 12077: 0xCF74, + 12078: 0xCF78, + 12079: 0xCF80, + 12080: 0xCF85, + 12081: 0xCF8C, + 12082: 0xCFA1, + 12083: 0xCFA8, + 12084: 0xCFB0, + 12085: 0xCFC4, + 12086: 0xCFE0, + 12087: 0xCFE1, + 12088: 0xCFE4, + 12089: 0xCFE8, + 12090: 0xCFF0, + 12091: 0xCFF1, + 12092: 0xCFF3, + 12093: 0xCFF5, + 12094: 0xCFFC, + 12095: 0xD000, + 12096: 0xD004, + 12097: 0xD011, + 12098: 0xD018, + 12099: 0xD02D, + 12100: 0xD034, + 12101: 0xD035, + 12102: 0xD038, + 12103: 0xD03C, + 12104: 0xD715, + 12105: 0xD716, + 12106: 0xD717, + 12107: 0xD71A, + 12108: 0xD71B, + 12109: 0xD71D, + 12110: 0xD71E, + 12111: 0xD71F, + 12112: 0xD721, + 12113: 0xD722, + 12114: 0xD723, + 12115: 0xD724, + 12116: 0xD725, + 12117: 0xD726, + 12118: 0xD727, + 12119: 0xD72A, + 12120: 0xD72C, + 12121: 0xD72E, + 12122: 0xD72F, + 12123: 0xD730, + 12124: 0xD731, + 12125: 0xD732, + 12126: 0xD733, + 12127: 0xD736, + 12128: 0xD737, + 12129: 0xD739, + 12130: 0xD73A, + 12131: 0xD73B, + 12132: 0xD73D, + 12133: 0xD73E, + 12134: 0xD73F, + 12135: 0xD740, + 12136: 0xD741, + 12137: 0xD742, + 12138: 0xD743, + 12139: 0xD745, + 12140: 0xD746, + 12141: 0xD748, + 12142: 0xD74A, + 12143: 0xD74B, + 12144: 0xD74C, + 12145: 0xD74D, + 12146: 0xD74E, + 12147: 0xD74F, + 12148: 0xD752, + 12149: 0xD753, + 12150: 0xD755, + 12151: 0xD75A, + 12152: 0xD75B, + 12153: 0xD75C, + 12154: 0xD75D, + 12155: 0xD75E, + 12156: 0xD75F, + 12157: 0xD762, + 12158: 0xD764, + 12159: 0xD766, + 12160: 0xD767, + 12161: 0xD768, + 12162: 0xD76A, + 12163: 0xD76B, + 12164: 0xD76D, + 12165: 0xD76E, + 12166: 0xD76F, + 12167: 0xD771, + 12168: 0xD772, + 12169: 0xD773, + 12170: 0xD775, + 12171: 0xD776, + 12172: 0xD777, + 12173: 0xD778, + 12174: 0xD779, + 12175: 0xD77A, + 12176: 0xD77B, + 12177: 0xD77E, + 12178: 0xD77F, + 12179: 0xD780, + 12180: 0xD782, + 12181: 0xD783, + 12182: 0xD784, + 12183: 0xD785, + 12184: 0xD786, + 12185: 0xD787, + 12186: 0xD78A, + 12187: 0xD78B, + 12188: 0xD044, + 12189: 0xD045, + 12190: 0xD047, + 12191: 0xD049, + 12192: 0xD050, + 12193: 0xD054, + 12194: 0xD058, + 12195: 0xD060, + 12196: 0xD06C, + 12197: 0xD06D, + 12198: 0xD070, + 12199: 0xD074, + 12200: 0xD07C, + 12201: 0xD07D, + 12202: 0xD081, + 12203: 0xD0A4, + 12204: 0xD0A5, + 12205: 0xD0A8, + 12206: 0xD0AC, + 12207: 0xD0B4, + 12208: 0xD0B5, + 12209: 0xD0B7, + 12210: 0xD0B9, + 12211: 0xD0C0, + 12212: 0xD0C1, + 12213: 0xD0C4, + 12214: 0xD0C8, + 12215: 0xD0C9, + 12216: 0xD0D0, + 12217: 0xD0D1, + 12218: 0xD0D3, + 12219: 0xD0D4, + 12220: 0xD0D5, + 12221: 0xD0DC, + 12222: 0xD0DD, + 12223: 0xD0E0, + 12224: 0xD0E4, + 12225: 0xD0EC, + 12226: 0xD0ED, + 12227: 0xD0EF, + 12228: 0xD0F0, + 12229: 0xD0F1, + 12230: 0xD0F8, + 12231: 0xD10D, + 12232: 0xD130, + 12233: 0xD131, + 12234: 0xD134, + 12235: 0xD138, + 12236: 0xD13A, + 12237: 0xD140, + 12238: 0xD141, + 12239: 0xD143, + 12240: 0xD144, + 12241: 0xD145, + 12242: 0xD14C, + 12243: 0xD14D, + 12244: 0xD150, + 12245: 0xD154, + 12246: 0xD15C, + 12247: 0xD15D, + 12248: 0xD15F, + 12249: 0xD161, + 12250: 0xD168, + 12251: 0xD16C, + 12252: 0xD17C, + 12253: 0xD184, + 12254: 0xD188, + 12255: 0xD1A0, + 12256: 0xD1A1, + 12257: 0xD1A4, + 12258: 0xD1A8, + 12259: 0xD1B0, + 12260: 0xD1B1, + 12261: 0xD1B3, + 12262: 0xD1B5, + 12263: 0xD1BA, + 12264: 0xD1BC, + 12265: 0xD1C0, + 12266: 0xD1D8, + 12267: 0xD1F4, + 12268: 0xD1F8, + 12269: 0xD207, + 12270: 0xD209, + 12271: 0xD210, + 12272: 0xD22C, + 12273: 0xD22D, + 12274: 0xD230, + 12275: 0xD234, + 12276: 0xD23C, + 12277: 0xD23D, + 12278: 0xD23F, + 12279: 0xD241, + 12280: 0xD248, + 12281: 0xD25C, + 12282: 0xD78D, + 12283: 0xD78E, + 12284: 0xD78F, + 12285: 0xD791, + 12286: 0xD792, + 12287: 0xD793, + 12288: 0xD794, + 12289: 0xD795, + 12290: 0xD796, + 12291: 0xD797, + 12292: 0xD79A, + 12293: 0xD79C, + 12294: 0xD79E, + 12295: 0xD79F, + 12296: 0xD7A0, + 12297: 0xD7A1, + 12298: 0xD7A2, + 12299: 0xD7A3, + 12366: 0xD264, + 12367: 0xD280, + 12368: 0xD281, + 12369: 0xD284, + 12370: 0xD288, + 12371: 0xD290, + 12372: 0xD291, + 12373: 0xD295, + 12374: 0xD29C, + 12375: 0xD2A0, + 12376: 0xD2A4, + 12377: 0xD2AC, + 12378: 0xD2B1, + 12379: 0xD2B8, + 12380: 0xD2B9, + 12381: 0xD2BC, + 12382: 0xD2BF, + 12383: 0xD2C0, + 12384: 0xD2C2, + 12385: 0xD2C8, + 12386: 0xD2C9, + 12387: 0xD2CB, + 12388: 0xD2D4, + 12389: 0xD2D8, + 12390: 0xD2DC, + 12391: 0xD2E4, + 12392: 0xD2E5, + 12393: 0xD2F0, + 12394: 0xD2F1, + 12395: 0xD2F4, + 12396: 0xD2F8, + 12397: 0xD300, + 12398: 0xD301, + 12399: 0xD303, + 12400: 0xD305, + 12401: 0xD30C, + 12402: 0xD30D, + 12403: 0xD30E, + 12404: 0xD310, + 12405: 0xD314, + 12406: 0xD316, + 12407: 0xD31C, + 12408: 0xD31D, + 12409: 0xD31F, + 12410: 0xD320, + 12411: 0xD321, + 12412: 0xD325, + 12413: 0xD328, + 12414: 0xD329, + 12415: 0xD32C, + 12416: 0xD330, + 12417: 0xD338, + 12418: 0xD339, + 12419: 0xD33B, + 12420: 0xD33C, + 12421: 0xD33D, + 12422: 0xD344, + 12423: 0xD345, + 12424: 0xD37C, + 12425: 0xD37D, + 12426: 0xD380, + 12427: 0xD384, + 12428: 0xD38C, + 12429: 0xD38D, + 12430: 0xD38F, + 12431: 0xD390, + 12432: 0xD391, + 12433: 0xD398, + 12434: 0xD399, + 12435: 0xD39C, + 12436: 0xD3A0, + 12437: 0xD3A8, + 12438: 0xD3A9, + 12439: 0xD3AB, + 12440: 0xD3AD, + 12441: 0xD3B4, + 12442: 0xD3B8, + 12443: 0xD3BC, + 12444: 0xD3C4, + 12445: 0xD3C5, + 12446: 0xD3C8, + 12447: 0xD3C9, + 12448: 0xD3D0, + 12449: 0xD3D8, + 12450: 0xD3E1, + 12451: 0xD3E3, + 12452: 0xD3EC, + 12453: 0xD3ED, + 12454: 0xD3F0, + 12455: 0xD3F4, + 12456: 0xD3FC, + 12457: 0xD3FD, + 12458: 0xD3FF, + 12459: 0xD401, + 12460: 0xD408, + 12461: 0xD41D, + 12462: 0xD440, + 12463: 0xD444, + 12464: 0xD45C, + 12465: 0xD460, + 12466: 0xD464, + 12467: 0xD46D, + 12468: 0xD46F, + 12469: 0xD478, + 12470: 0xD479, + 12471: 0xD47C, + 12472: 0xD47F, + 12473: 0xD480, + 12474: 0xD482, + 12475: 0xD488, + 12476: 0xD489, + 12477: 0xD48B, + 12478: 0xD48D, + 12479: 0xD494, + 12480: 0xD4A9, + 12481: 0xD4CC, + 12482: 0xD4D0, + 12483: 0xD4D4, + 12484: 0xD4DC, + 12485: 0xD4DF, + 12486: 0xD4E8, + 12487: 0xD4EC, + 12488: 0xD4F0, + 12489: 0xD4F8, + 12490: 0xD4FB, + 12491: 0xD4FD, + 12492: 0xD504, + 12493: 0xD508, + 12494: 0xD50C, + 12495: 0xD514, + 12496: 0xD515, + 12497: 0xD517, + 12498: 0xD53C, + 12499: 0xD53D, + 12500: 0xD540, + 12501: 0xD544, + 12502: 0xD54C, + 12503: 0xD54D, + 12504: 0xD54F, + 12505: 0xD551, + 12506: 0xD558, + 12507: 0xD559, + 12508: 0xD55C, + 12509: 0xD560, + 12510: 0xD565, + 12511: 0xD568, + 12512: 0xD569, + 12513: 0xD56B, + 12514: 0xD56D, + 12515: 0xD574, + 12516: 0xD575, + 12517: 0xD578, + 12518: 0xD57C, + 12519: 0xD584, + 12520: 0xD585, + 12521: 0xD587, + 12522: 0xD588, + 12523: 0xD589, + 12524: 0xD590, + 12525: 0xD5A5, + 12526: 0xD5C8, + 12527: 0xD5C9, + 12528: 0xD5CC, + 12529: 0xD5D0, + 12530: 0xD5D2, + 12531: 0xD5D8, + 12532: 0xD5D9, + 12533: 0xD5DB, + 12534: 0xD5DD, + 12535: 0xD5E4, + 12536: 0xD5E5, + 12537: 0xD5E8, + 12538: 0xD5EC, + 12539: 0xD5F4, + 12540: 0xD5F5, + 12541: 0xD5F7, + 12542: 0xD5F9, + 12543: 0xD600, + 12544: 0xD601, + 12545: 0xD604, + 12546: 0xD608, + 12547: 0xD610, + 12548: 0xD611, + 12549: 0xD613, + 12550: 0xD614, + 12551: 0xD615, + 12552: 0xD61C, + 12553: 0xD620, + 12554: 0xD624, + 12555: 0xD62D, + 12556: 0xD638, + 12557: 0xD639, + 12558: 0xD63C, + 12559: 0xD640, + 12560: 0xD645, + 12561: 0xD648, + 12562: 0xD649, + 12563: 0xD64B, + 12564: 0xD64D, + 12565: 0xD651, + 12566: 0xD654, + 12567: 0xD655, + 12568: 0xD658, + 12569: 0xD65C, + 12570: 0xD667, + 12571: 0xD669, + 12572: 0xD670, + 12573: 0xD671, + 12574: 0xD674, + 12575: 0xD683, + 12576: 0xD685, + 12577: 0xD68C, + 12578: 0xD68D, + 12579: 0xD690, + 12580: 0xD694, + 12581: 0xD69D, + 12582: 0xD69F, + 12583: 0xD6A1, + 12584: 0xD6A8, + 12585: 0xD6AC, + 12586: 0xD6B0, + 12587: 0xD6B9, + 12588: 0xD6BB, + 12589: 0xD6C4, + 12590: 0xD6C5, + 12591: 0xD6C8, + 12592: 0xD6CC, + 12593: 0xD6D1, + 12594: 0xD6D4, + 12595: 0xD6D7, + 12596: 0xD6D9, + 12597: 0xD6E0, + 12598: 0xD6E4, + 12599: 0xD6E8, + 12600: 0xD6F0, + 12601: 0xD6F5, + 12602: 0xD6FC, + 12603: 0xD6FD, + 12604: 0xD700, + 12605: 0xD704, + 12606: 0xD711, + 12607: 0xD718, + 12608: 0xD719, + 12609: 0xD71C, + 12610: 0xD720, + 12611: 0xD728, + 12612: 0xD729, + 12613: 0xD72B, + 12614: 0xD72D, + 12615: 0xD734, + 12616: 0xD735, + 12617: 0xD738, + 12618: 0xD73C, + 12619: 0xD744, + 12620: 0xD747, + 12621: 0xD749, + 12622: 0xD750, + 12623: 0xD751, + 12624: 0xD754, + 12625: 0xD756, + 12626: 0xD757, + 12627: 0xD758, + 12628: 0xD759, + 12629: 0xD760, + 12630: 0xD761, + 12631: 0xD763, + 12632: 0xD765, + 12633: 0xD769, + 12634: 0xD76C, + 12635: 0xD770, + 12636: 0xD774, + 12637: 0xD77C, + 12638: 0xD77D, + 12639: 0xD781, + 12640: 0xD788, + 12641: 0xD789, + 12642: 0xD78C, + 12643: 0xD790, + 12644: 0xD798, + 12645: 0xD799, + 12646: 0xD79B, + 12647: 0xD79D, + 12742: 0x4F3D, + 12743: 0x4F73, + 12744: 0x5047, + 12745: 0x50F9, + 12746: 0x52A0, + 12747: 0x53EF, + 12748: 0x5475, + 12749: 0x54E5, + 12750: 0x5609, + 12751: 0x5AC1, + 12752: 0x5BB6, + 12753: 0x6687, + 12754: 0x67B6, + 12755: 0x67B7, + 12756: 0x67EF, + 12757: 0x6B4C, + 12758: 0x73C2, + 12759: 0x75C2, + 12760: 0x7A3C, + 12761: 0x82DB, + 12762: 0x8304, + 12763: 0x8857, + 12764: 0x8888, + 12765: 0x8A36, + 12766: 0x8CC8, + 12767: 0x8DCF, + 12768: 0x8EFB, + 12769: 0x8FE6, + 12770: 0x99D5, + 12771: 0x523B, + 12772: 0x5374, + 12773: 0x5404, + 12774: 0x606A, + 12775: 0x6164, + 12776: 0x6BBC, + 12777: 0x73CF, + 12778: 0x811A, + 12779: 0x89BA, + 12780: 0x89D2, + 12781: 0x95A3, + 12782: 0x4F83, + 12783: 0x520A, + 12784: 0x58BE, + 12785: 0x5978, + 12786: 0x59E6, + 12787: 0x5E72, + 12788: 0x5E79, + 12789: 0x61C7, + 12790: 0x63C0, + 12791: 0x6746, + 12792: 0x67EC, + 12793: 0x687F, + 12794: 0x6F97, + 12795: 0x764E, + 12796: 0x770B, + 12797: 0x78F5, + 12798: 0x7A08, + 12799: 0x7AFF, + 12800: 0x7C21, + 12801: 0x809D, + 12802: 0x826E, + 12803: 0x8271, + 12804: 0x8AEB, + 12805: 0x9593, + 12806: 0x4E6B, + 12807: 0x559D, + 12808: 0x66F7, + 12809: 0x6E34, + 12810: 0x78A3, + 12811: 0x7AED, + 12812: 0x845B, + 12813: 0x8910, + 12814: 0x874E, + 12815: 0x97A8, + 12816: 0x52D8, + 12817: 0x574E, + 12818: 0x582A, + 12819: 0x5D4C, + 12820: 0x611F, + 12821: 0x61BE, + 12822: 0x6221, + 12823: 0x6562, + 12824: 0x67D1, + 12825: 0x6A44, + 12826: 0x6E1B, + 12827: 0x7518, + 12828: 0x75B3, + 12829: 0x76E3, + 12830: 0x77B0, + 12831: 0x7D3A, + 12832: 0x90AF, + 12833: 0x9451, + 12834: 0x9452, + 12835: 0x9F95, + 12836: 0x5323, + 12837: 0x5CAC, + 12838: 0x7532, + 12839: 0x80DB, + 12840: 0x9240, + 12841: 0x9598, + 12842: 0x525B, + 12843: 0x5808, + 12844: 0x59DC, + 12845: 0x5CA1, + 12846: 0x5D17, + 12847: 0x5EB7, + 12848: 0x5F3A, + 12849: 0x5F4A, + 12850: 0x6177, + 12851: 0x6C5F, + 12852: 0x757A, + 12853: 0x7586, + 12854: 0x7CE0, + 12855: 0x7D73, + 12856: 0x7DB1, + 12857: 0x7F8C, + 12858: 0x8154, + 12859: 0x8221, + 12860: 0x8591, + 12861: 0x8941, + 12862: 0x8B1B, + 12863: 0x92FC, + 12864: 0x964D, + 12865: 0x9C47, + 12866: 0x4ECB, + 12867: 0x4EF7, + 12868: 0x500B, + 12869: 0x51F1, + 12870: 0x584F, + 12871: 0x6137, + 12872: 0x613E, + 12873: 0x6168, + 12874: 0x6539, + 12875: 0x69EA, + 12876: 0x6F11, + 12877: 0x75A5, + 12878: 0x7686, + 12879: 0x76D6, + 12880: 0x7B87, + 12881: 0x82A5, + 12882: 0x84CB, + 12883: 0xF900, + 12884: 0x93A7, + 12885: 0x958B, + 12886: 0x5580, + 12887: 0x5BA2, + 12888: 0x5751, + 12889: 0xF901, + 12890: 0x7CB3, + 12891: 0x7FB9, + 12892: 0x91B5, + 12893: 0x5028, + 12894: 0x53BB, + 12895: 0x5C45, + 12896: 0x5DE8, + 12897: 0x62D2, + 12898: 0x636E, + 12899: 0x64DA, + 12900: 0x64E7, + 12901: 0x6E20, + 12902: 0x70AC, + 12903: 0x795B, + 12904: 0x8DDD, + 12905: 0x8E1E, + 12906: 0xF902, + 12907: 0x907D, + 12908: 0x9245, + 12909: 0x92F8, + 12910: 0x4E7E, + 12911: 0x4EF6, + 12912: 0x5065, + 12913: 0x5DFE, + 12914: 0x5EFA, + 12915: 0x6106, + 12916: 0x6957, + 12917: 0x8171, + 12918: 0x8654, + 12919: 0x8E47, + 12920: 0x9375, + 12921: 0x9A2B, + 12922: 0x4E5E, + 12923: 0x5091, + 12924: 0x6770, + 12925: 0x6840, + 12926: 0x5109, + 12927: 0x528D, + 12928: 0x5292, + 12929: 0x6AA2, + 12930: 0x77BC, + 12931: 0x9210, + 12932: 0x9ED4, + 12933: 0x52AB, + 12934: 0x602F, + 12935: 0x8FF2, + 12936: 0x5048, + 12937: 0x61A9, + 12938: 0x63ED, + 12939: 0x64CA, + 12940: 0x683C, + 12941: 0x6A84, + 12942: 0x6FC0, + 12943: 0x8188, + 12944: 0x89A1, + 12945: 0x9694, + 12946: 0x5805, + 12947: 0x727D, + 12948: 0x72AC, + 12949: 0x7504, + 12950: 0x7D79, + 12951: 0x7E6D, + 12952: 0x80A9, + 12953: 0x898B, + 12954: 0x8B74, + 12955: 0x9063, + 12956: 0x9D51, + 12957: 0x6289, + 12958: 0x6C7A, + 12959: 0x6F54, + 12960: 0x7D50, + 12961: 0x7F3A, + 12962: 0x8A23, + 12963: 0x517C, + 12964: 0x614A, + 12965: 0x7B9D, + 12966: 0x8B19, + 12967: 0x9257, + 12968: 0x938C, + 12969: 0x4EAC, + 12970: 0x4FD3, + 12971: 0x501E, + 12972: 0x50BE, + 12973: 0x5106, + 12974: 0x52C1, + 12975: 0x52CD, + 12976: 0x537F, + 12977: 0x5770, + 12978: 0x5883, + 12979: 0x5E9A, + 12980: 0x5F91, + 12981: 0x6176, + 12982: 0x61AC, + 12983: 0x64CE, + 12984: 0x656C, + 12985: 0x666F, + 12986: 0x66BB, + 12987: 0x66F4, + 12988: 0x6897, + 12989: 0x6D87, + 12990: 0x7085, + 12991: 0x70F1, + 12992: 0x749F, + 12993: 0x74A5, + 12994: 0x74CA, + 12995: 0x75D9, + 12996: 0x786C, + 12997: 0x78EC, + 12998: 0x7ADF, + 12999: 0x7AF6, + 13000: 0x7D45, + 13001: 0x7D93, + 13002: 0x8015, + 13003: 0x803F, + 13004: 0x811B, + 13005: 0x8396, + 13006: 0x8B66, + 13007: 0x8F15, + 13008: 0x9015, + 13009: 0x93E1, + 13010: 0x9803, + 13011: 0x9838, + 13012: 0x9A5A, + 13013: 0x9BE8, + 13014: 0x4FC2, + 13015: 0x5553, + 13016: 0x583A, + 13017: 0x5951, + 13018: 0x5B63, + 13019: 0x5C46, + 13020: 0x60B8, + 13021: 0x6212, + 13022: 0x6842, + 13023: 0x68B0, + 13024: 0x68E8, + 13025: 0x6EAA, + 13026: 0x754C, + 13027: 0x7678, + 13028: 0x78CE, + 13029: 0x7A3D, + 13030: 0x7CFB, + 13031: 0x7E6B, + 13032: 0x7E7C, + 13033: 0x8A08, + 13034: 0x8AA1, + 13035: 0x8C3F, + 13036: 0x968E, + 13037: 0x9DC4, + 13038: 0x53E4, + 13039: 0x53E9, + 13040: 0x544A, + 13041: 0x5471, + 13042: 0x56FA, + 13043: 0x59D1, + 13044: 0x5B64, + 13045: 0x5C3B, + 13046: 0x5EAB, + 13047: 0x62F7, + 13048: 0x6537, + 13049: 0x6545, + 13050: 0x6572, + 13051: 0x66A0, + 13052: 0x67AF, + 13053: 0x69C1, + 13054: 0x6CBD, + 13055: 0x75FC, + 13056: 0x7690, + 13057: 0x777E, + 13058: 0x7A3F, + 13059: 0x7F94, + 13060: 0x8003, + 13061: 0x80A1, + 13062: 0x818F, + 13063: 0x82E6, + 13064: 0x82FD, + 13065: 0x83F0, + 13066: 0x85C1, + 13067: 0x8831, + 13068: 0x88B4, + 13069: 0x8AA5, + 13070: 0xF903, + 13071: 0x8F9C, + 13072: 0x932E, + 13073: 0x96C7, + 13074: 0x9867, + 13075: 0x9AD8, + 13076: 0x9F13, + 13077: 0x54ED, + 13078: 0x659B, + 13079: 0x66F2, + 13080: 0x688F, + 13081: 0x7A40, + 13082: 0x8C37, + 13083: 0x9D60, + 13084: 0x56F0, + 13085: 0x5764, + 13086: 0x5D11, + 13087: 0x6606, + 13088: 0x68B1, + 13089: 0x68CD, + 13090: 0x6EFE, + 13091: 0x7428, + 13092: 0x889E, + 13093: 0x9BE4, + 13094: 0x6C68, + 13095: 0xF904, + 13096: 0x9AA8, + 13097: 0x4F9B, + 13098: 0x516C, + 13099: 0x5171, + 13100: 0x529F, + 13101: 0x5B54, + 13102: 0x5DE5, + 13103: 0x6050, + 13104: 0x606D, + 13105: 0x62F1, + 13106: 0x63A7, + 13107: 0x653B, + 13108: 0x73D9, + 13109: 0x7A7A, + 13110: 0x86A3, + 13111: 0x8CA2, + 13112: 0x978F, + 13113: 0x4E32, + 13114: 0x5BE1, + 13115: 0x6208, + 13116: 0x679C, + 13117: 0x74DC, + 13118: 0x79D1, + 13119: 0x83D3, + 13120: 0x8A87, + 13121: 0x8AB2, + 13122: 0x8DE8, + 13123: 0x904E, + 13124: 0x934B, + 13125: 0x9846, + 13126: 0x5ED3, + 13127: 0x69E8, + 13128: 0x85FF, + 13129: 0x90ED, + 13130: 0xF905, + 13131: 0x51A0, + 13132: 0x5B98, + 13133: 0x5BEC, + 13134: 0x6163, + 13135: 0x68FA, + 13136: 0x6B3E, + 13137: 0x704C, + 13138: 0x742F, + 13139: 0x74D8, + 13140: 0x7BA1, + 13141: 0x7F50, + 13142: 0x83C5, + 13143: 0x89C0, + 13144: 0x8CAB, + 13145: 0x95DC, + 13146: 0x9928, + 13147: 0x522E, + 13148: 0x605D, + 13149: 0x62EC, + 13150: 0x9002, + 13151: 0x4F8A, + 13152: 0x5149, + 13153: 0x5321, + 13154: 0x58D9, + 13155: 0x5EE3, + 13156: 0x66E0, + 13157: 0x6D38, + 13158: 0x709A, + 13159: 0x72C2, + 13160: 0x73D6, + 13161: 0x7B50, + 13162: 0x80F1, + 13163: 0x945B, + 13164: 0x5366, + 13165: 0x639B, + 13166: 0x7F6B, + 13167: 0x4E56, + 13168: 0x5080, + 13169: 0x584A, + 13170: 0x58DE, + 13171: 0x602A, + 13172: 0x6127, + 13173: 0x62D0, + 13174: 0x69D0, + 13175: 0x9B41, + 13176: 0x5B8F, + 13177: 0x7D18, + 13178: 0x80B1, + 13179: 0x8F5F, + 13180: 0x4EA4, + 13181: 0x50D1, + 13182: 0x54AC, + 13183: 0x55AC, + 13184: 0x5B0C, + 13185: 0x5DA0, + 13186: 0x5DE7, + 13187: 0x652A, + 13188: 0x654E, + 13189: 0x6821, + 13190: 0x6A4B, + 13191: 0x72E1, + 13192: 0x768E, + 13193: 0x77EF, + 13194: 0x7D5E, + 13195: 0x7FF9, + 13196: 0x81A0, + 13197: 0x854E, + 13198: 0x86DF, + 13199: 0x8F03, + 13200: 0x8F4E, + 13201: 0x90CA, + 13202: 0x9903, + 13203: 0x9A55, + 13204: 0x9BAB, + 13205: 0x4E18, + 13206: 0x4E45, + 13207: 0x4E5D, + 13208: 0x4EC7, + 13209: 0x4FF1, + 13210: 0x5177, + 13211: 0x52FE, + 13212: 0x5340, + 13213: 0x53E3, + 13214: 0x53E5, + 13215: 0x548E, + 13216: 0x5614, + 13217: 0x5775, + 13218: 0x57A2, + 13219: 0x5BC7, + 13220: 0x5D87, + 13221: 0x5ED0, + 13222: 0x61FC, + 13223: 0x62D8, + 13224: 0x6551, + 13225: 0x67B8, + 13226: 0x67E9, + 13227: 0x69CB, + 13228: 0x6B50, + 13229: 0x6BC6, + 13230: 0x6BEC, + 13231: 0x6C42, + 13232: 0x6E9D, + 13233: 0x7078, + 13234: 0x72D7, + 13235: 0x7396, + 13236: 0x7403, + 13237: 0x77BF, + 13238: 0x77E9, + 13239: 0x7A76, + 13240: 0x7D7F, + 13241: 0x8009, + 13242: 0x81FC, + 13243: 0x8205, + 13244: 0x820A, + 13245: 0x82DF, + 13246: 0x8862, + 13247: 0x8B33, + 13248: 0x8CFC, + 13249: 0x8EC0, + 13250: 0x9011, + 13251: 0x90B1, + 13252: 0x9264, + 13253: 0x92B6, + 13254: 0x99D2, + 13255: 0x9A45, + 13256: 0x9CE9, + 13257: 0x9DD7, + 13258: 0x9F9C, + 13259: 0x570B, + 13260: 0x5C40, + 13261: 0x83CA, + 13262: 0x97A0, + 13263: 0x97AB, + 13264: 0x9EB4, + 13265: 0x541B, + 13266: 0x7A98, + 13267: 0x7FA4, + 13268: 0x88D9, + 13269: 0x8ECD, + 13270: 0x90E1, + 13271: 0x5800, + 13272: 0x5C48, + 13273: 0x6398, + 13274: 0x7A9F, + 13275: 0x5BAE, + 13276: 0x5F13, + 13277: 0x7A79, + 13278: 0x7AAE, + 13279: 0x828E, + 13280: 0x8EAC, + 13281: 0x5026, + 13282: 0x5238, + 13283: 0x52F8, + 13284: 0x5377, + 13285: 0x5708, + 13286: 0x62F3, + 13287: 0x6372, + 13288: 0x6B0A, + 13289: 0x6DC3, + 13290: 0x7737, + 13291: 0x53A5, + 13292: 0x7357, + 13293: 0x8568, + 13294: 0x8E76, + 13295: 0x95D5, + 13296: 0x673A, + 13297: 0x6AC3, + 13298: 0x6F70, + 13299: 0x8A6D, + 13300: 0x8ECC, + 13301: 0x994B, + 13302: 0xF906, + 13303: 0x6677, + 13304: 0x6B78, + 13305: 0x8CB4, + 13306: 0x9B3C, + 13307: 0xF907, + 13308: 0x53EB, + 13309: 0x572D, + 13310: 0x594E, + 13311: 0x63C6, + 13312: 0x69FB, + 13313: 0x73EA, + 13314: 0x7845, + 13315: 0x7ABA, + 13316: 0x7AC5, + 13317: 0x7CFE, + 13318: 0x8475, + 13319: 0x898F, + 13320: 0x8D73, + 13321: 0x9035, + 13322: 0x95A8, + 13323: 0x52FB, + 13324: 0x5747, + 13325: 0x7547, + 13326: 0x7B60, + 13327: 0x83CC, + 13328: 0x921E, + 13329: 0xF908, + 13330: 0x6A58, + 13331: 0x514B, + 13332: 0x524B, + 13333: 0x5287, + 13334: 0x621F, + 13335: 0x68D8, + 13336: 0x6975, + 13337: 0x9699, + 13338: 0x50C5, + 13339: 0x52A4, + 13340: 0x52E4, + 13341: 0x61C3, + 13342: 0x65A4, + 13343: 0x6839, + 13344: 0x69FF, + 13345: 0x747E, + 13346: 0x7B4B, + 13347: 0x82B9, + 13348: 0x83EB, + 13349: 0x89B2, + 13350: 0x8B39, + 13351: 0x8FD1, + 13352: 0x9949, + 13353: 0xF909, + 13354: 0x4ECA, + 13355: 0x5997, + 13356: 0x64D2, + 13357: 0x6611, + 13358: 0x6A8E, + 13359: 0x7434, + 13360: 0x7981, + 13361: 0x79BD, + 13362: 0x82A9, + 13363: 0x887E, + 13364: 0x887F, + 13365: 0x895F, + 13366: 0xF90A, + 13367: 0x9326, + 13368: 0x4F0B, + 13369: 0x53CA, + 13370: 0x6025, + 13371: 0x6271, + 13372: 0x6C72, + 13373: 0x7D1A, + 13374: 0x7D66, + 13375: 0x4E98, + 13376: 0x5162, + 13377: 0x77DC, + 13378: 0x80AF, + 13379: 0x4F01, + 13380: 0x4F0E, + 13381: 0x5176, + 13382: 0x5180, + 13383: 0x55DC, + 13384: 0x5668, + 13385: 0x573B, + 13386: 0x57FA, + 13387: 0x57FC, + 13388: 0x5914, + 13389: 0x5947, + 13390: 0x5993, + 13391: 0x5BC4, + 13392: 0x5C90, + 13393: 0x5D0E, + 13394: 0x5DF1, + 13395: 0x5E7E, + 13396: 0x5FCC, + 13397: 0x6280, + 13398: 0x65D7, + 13399: 0x65E3, + 13400: 0x671E, + 13401: 0x671F, + 13402: 0x675E, + 13403: 0x68CB, + 13404: 0x68C4, + 13405: 0x6A5F, + 13406: 0x6B3A, + 13407: 0x6C23, + 13408: 0x6C7D, + 13409: 0x6C82, + 13410: 0x6DC7, + 13411: 0x7398, + 13412: 0x7426, + 13413: 0x742A, + 13414: 0x7482, + 13415: 0x74A3, + 13416: 0x7578, + 13417: 0x757F, + 13418: 0x7881, + 13419: 0x78EF, + 13420: 0x7941, + 13421: 0x7947, + 13422: 0x7948, + 13423: 0x797A, + 13424: 0x7B95, + 13425: 0x7D00, + 13426: 0x7DBA, + 13427: 0x7F88, + 13428: 0x8006, + 13429: 0x802D, + 13430: 0x808C, + 13431: 0x8A18, + 13432: 0x8B4F, + 13433: 0x8C48, + 13434: 0x8D77, + 13435: 0x9321, + 13436: 0x9324, + 13437: 0x98E2, + 13438: 0x9951, + 13439: 0x9A0E, + 13440: 0x9A0F, + 13441: 0x9A65, + 13442: 0x9E92, + 13443: 0x7DCA, + 13444: 0x4F76, + 13445: 0x5409, + 13446: 0x62EE, + 13447: 0x6854, + 13448: 0x91D1, + 13449: 0x55AB, + 13450: 0x513A, + 13451: 0xF90B, + 13452: 0xF90C, + 13453: 0x5A1C, + 13454: 0x61E6, + 13455: 0xF90D, + 13456: 0x62CF, + 13457: 0x62FF, + 13458: 0xF90E, + 13459: 0xF90F, + 13460: 0xF910, + 13461: 0xF911, + 13462: 0xF912, + 13463: 0xF913, + 13464: 0x90A3, + 13465: 0xF914, + 13466: 0xF915, + 13467: 0xF916, + 13468: 0xF917, + 13469: 0xF918, + 13470: 0x8AFE, + 13471: 0xF919, + 13472: 0xF91A, + 13473: 0xF91B, + 13474: 0xF91C, + 13475: 0x6696, + 13476: 0xF91D, + 13477: 0x7156, + 13478: 0xF91E, + 13479: 0xF91F, + 13480: 0x96E3, + 13481: 0xF920, + 13482: 0x634F, + 13483: 0x637A, + 13484: 0x5357, + 13485: 0xF921, + 13486: 0x678F, + 13487: 0x6960, + 13488: 0x6E73, + 13489: 0xF922, + 13490: 0x7537, + 13491: 0xF923, + 13492: 0xF924, + 13493: 0xF925, + 13494: 0x7D0D, + 13495: 0xF926, + 13496: 0xF927, + 13497: 0x8872, + 13498: 0x56CA, + 13499: 0x5A18, + 13500: 0xF928, + 13501: 0xF929, + 13502: 0xF92A, + 13503: 0xF92B, + 13504: 0xF92C, + 13505: 0x4E43, + 13506: 0xF92D, + 13507: 0x5167, + 13508: 0x5948, + 13509: 0x67F0, + 13510: 0x8010, + 13511: 0xF92E, + 13512: 0x5973, + 13513: 0x5E74, + 13514: 0x649A, + 13515: 0x79CA, + 13516: 0x5FF5, + 13517: 0x606C, + 13518: 0x62C8, + 13519: 0x637B, + 13520: 0x5BE7, + 13521: 0x5BD7, + 13522: 0x52AA, + 13523: 0xF92F, + 13524: 0x5974, + 13525: 0x5F29, + 13526: 0x6012, + 13527: 0xF930, + 13528: 0xF931, + 13529: 0xF932, + 13530: 0x7459, + 13531: 0xF933, + 13532: 0xF934, + 13533: 0xF935, + 13534: 0xF936, + 13535: 0xF937, + 13536: 0xF938, + 13537: 0x99D1, + 13538: 0xF939, + 13539: 0xF93A, + 13540: 0xF93B, + 13541: 0xF93C, + 13542: 0xF93D, + 13543: 0xF93E, + 13544: 0xF93F, + 13545: 0xF940, + 13546: 0xF941, + 13547: 0xF942, + 13548: 0xF943, + 13549: 0x6FC3, + 13550: 0xF944, + 13551: 0xF945, + 13552: 0x81BF, + 13553: 0x8FB2, + 13554: 0x60F1, + 13555: 0xF946, + 13556: 0xF947, + 13557: 0x8166, + 13558: 0xF948, + 13559: 0xF949, + 13560: 0x5C3F, + 13561: 0xF94A, + 13562: 0xF94B, + 13563: 0xF94C, + 13564: 0xF94D, + 13565: 0xF94E, + 13566: 0xF94F, + 13567: 0xF950, + 13568: 0xF951, + 13569: 0x5AE9, + 13570: 0x8A25, + 13571: 0x677B, + 13572: 0x7D10, + 13573: 0xF952, + 13574: 0xF953, + 13575: 0xF954, + 13576: 0xF955, + 13577: 0xF956, + 13578: 0xF957, + 13579: 0x80FD, + 13580: 0xF958, + 13581: 0xF959, + 13582: 0x5C3C, + 13583: 0x6CE5, + 13584: 0x533F, + 13585: 0x6EBA, + 13586: 0x591A, + 13587: 0x8336, + 13588: 0x4E39, + 13589: 0x4EB6, + 13590: 0x4F46, + 13591: 0x55AE, + 13592: 0x5718, + 13593: 0x58C7, + 13594: 0x5F56, + 13595: 0x65B7, + 13596: 0x65E6, + 13597: 0x6A80, + 13598: 0x6BB5, + 13599: 0x6E4D, + 13600: 0x77ED, + 13601: 0x7AEF, + 13602: 0x7C1E, + 13603: 0x7DDE, + 13604: 0x86CB, + 13605: 0x8892, + 13606: 0x9132, + 13607: 0x935B, + 13608: 0x64BB, + 13609: 0x6FBE, + 13610: 0x737A, + 13611: 0x75B8, + 13612: 0x9054, + 13613: 0x5556, + 13614: 0x574D, + 13615: 0x61BA, + 13616: 0x64D4, + 13617: 0x66C7, + 13618: 0x6DE1, + 13619: 0x6E5B, + 13620: 0x6F6D, + 13621: 0x6FB9, + 13622: 0x75F0, + 13623: 0x8043, + 13624: 0x81BD, + 13625: 0x8541, + 13626: 0x8983, + 13627: 0x8AC7, + 13628: 0x8B5A, + 13629: 0x931F, + 13630: 0x6C93, + 13631: 0x7553, + 13632: 0x7B54, + 13633: 0x8E0F, + 13634: 0x905D, + 13635: 0x5510, + 13636: 0x5802, + 13637: 0x5858, + 13638: 0x5E62, + 13639: 0x6207, + 13640: 0x649E, + 13641: 0x68E0, + 13642: 0x7576, + 13643: 0x7CD6, + 13644: 0x87B3, + 13645: 0x9EE8, + 13646: 0x4EE3, + 13647: 0x5788, + 13648: 0x576E, + 13649: 0x5927, + 13650: 0x5C0D, + 13651: 0x5CB1, + 13652: 0x5E36, + 13653: 0x5F85, + 13654: 0x6234, + 13655: 0x64E1, + 13656: 0x73B3, + 13657: 0x81FA, + 13658: 0x888B, + 13659: 0x8CB8, + 13660: 0x968A, + 13661: 0x9EDB, + 13662: 0x5B85, + 13663: 0x5FB7, + 13664: 0x60B3, + 13665: 0x5012, + 13666: 0x5200, + 13667: 0x5230, + 13668: 0x5716, + 13669: 0x5835, + 13670: 0x5857, + 13671: 0x5C0E, + 13672: 0x5C60, + 13673: 0x5CF6, + 13674: 0x5D8B, + 13675: 0x5EA6, + 13676: 0x5F92, + 13677: 0x60BC, + 13678: 0x6311, + 13679: 0x6389, + 13680: 0x6417, + 13681: 0x6843, + 13682: 0x68F9, + 13683: 0x6AC2, + 13684: 0x6DD8, + 13685: 0x6E21, + 13686: 0x6ED4, + 13687: 0x6FE4, + 13688: 0x71FE, + 13689: 0x76DC, + 13690: 0x7779, + 13691: 0x79B1, + 13692: 0x7A3B, + 13693: 0x8404, + 13694: 0x89A9, + 13695: 0x8CED, + 13696: 0x8DF3, + 13697: 0x8E48, + 13698: 0x9003, + 13699: 0x9014, + 13700: 0x9053, + 13701: 0x90FD, + 13702: 0x934D, + 13703: 0x9676, + 13704: 0x97DC, + 13705: 0x6BD2, + 13706: 0x7006, + 13707: 0x7258, + 13708: 0x72A2, + 13709: 0x7368, + 13710: 0x7763, + 13711: 0x79BF, + 13712: 0x7BE4, + 13713: 0x7E9B, + 13714: 0x8B80, + 13715: 0x58A9, + 13716: 0x60C7, + 13717: 0x6566, + 13718: 0x65FD, + 13719: 0x66BE, + 13720: 0x6C8C, + 13721: 0x711E, + 13722: 0x71C9, + 13723: 0x8C5A, + 13724: 0x9813, + 13725: 0x4E6D, + 13726: 0x7A81, + 13727: 0x4EDD, + 13728: 0x51AC, + 13729: 0x51CD, + 13730: 0x52D5, + 13731: 0x540C, + 13732: 0x61A7, + 13733: 0x6771, + 13734: 0x6850, + 13735: 0x68DF, + 13736: 0x6D1E, + 13737: 0x6F7C, + 13738: 0x75BC, + 13739: 0x77B3, + 13740: 0x7AE5, + 13741: 0x80F4, + 13742: 0x8463, + 13743: 0x9285, + 13744: 0x515C, + 13745: 0x6597, + 13746: 0x675C, + 13747: 0x6793, + 13748: 0x75D8, + 13749: 0x7AC7, + 13750: 0x8373, + 13751: 0xF95A, + 13752: 0x8C46, + 13753: 0x9017, + 13754: 0x982D, + 13755: 0x5C6F, + 13756: 0x81C0, + 13757: 0x829A, + 13758: 0x9041, + 13759: 0x906F, + 13760: 0x920D, + 13761: 0x5F97, + 13762: 0x5D9D, + 13763: 0x6A59, + 13764: 0x71C8, + 13765: 0x767B, + 13766: 0x7B49, + 13767: 0x85E4, + 13768: 0x8B04, + 13769: 0x9127, + 13770: 0x9A30, + 13771: 0x5587, + 13772: 0x61F6, + 13773: 0xF95B, + 13774: 0x7669, + 13775: 0x7F85, + 13776: 0x863F, + 13777: 0x87BA, + 13778: 0x88F8, + 13779: 0x908F, + 13780: 0xF95C, + 13781: 0x6D1B, + 13782: 0x70D9, + 13783: 0x73DE, + 13784: 0x7D61, + 13785: 0x843D, + 13786: 0xF95D, + 13787: 0x916A, + 13788: 0x99F1, + 13789: 0xF95E, + 13790: 0x4E82, + 13791: 0x5375, + 13792: 0x6B04, + 13793: 0x6B12, + 13794: 0x703E, + 13795: 0x721B, + 13796: 0x862D, + 13797: 0x9E1E, + 13798: 0x524C, + 13799: 0x8FA3, + 13800: 0x5D50, + 13801: 0x64E5, + 13802: 0x652C, + 13803: 0x6B16, + 13804: 0x6FEB, + 13805: 0x7C43, + 13806: 0x7E9C, + 13807: 0x85CD, + 13808: 0x8964, + 13809: 0x89BD, + 13810: 0x62C9, + 13811: 0x81D8, + 13812: 0x881F, + 13813: 0x5ECA, + 13814: 0x6717, + 13815: 0x6D6A, + 13816: 0x72FC, + 13817: 0x7405, + 13818: 0x746F, + 13819: 0x8782, + 13820: 0x90DE, + 13821: 0x4F86, + 13822: 0x5D0D, + 13823: 0x5FA0, + 13824: 0x840A, + 13825: 0x51B7, + 13826: 0x63A0, + 13827: 0x7565, + 13828: 0x4EAE, + 13829: 0x5006, + 13830: 0x5169, + 13831: 0x51C9, + 13832: 0x6881, + 13833: 0x6A11, + 13834: 0x7CAE, + 13835: 0x7CB1, + 13836: 0x7CE7, + 13837: 0x826F, + 13838: 0x8AD2, + 13839: 0x8F1B, + 13840: 0x91CF, + 13841: 0x4FB6, + 13842: 0x5137, + 13843: 0x52F5, + 13844: 0x5442, + 13845: 0x5EEC, + 13846: 0x616E, + 13847: 0x623E, + 13848: 0x65C5, + 13849: 0x6ADA, + 13850: 0x6FFE, + 13851: 0x792A, + 13852: 0x85DC, + 13853: 0x8823, + 13854: 0x95AD, + 13855: 0x9A62, + 13856: 0x9A6A, + 13857: 0x9E97, + 13858: 0x9ECE, + 13859: 0x529B, + 13860: 0x66C6, + 13861: 0x6B77, + 13862: 0x701D, + 13863: 0x792B, + 13864: 0x8F62, + 13865: 0x9742, + 13866: 0x6190, + 13867: 0x6200, + 13868: 0x6523, + 13869: 0x6F23, + 13870: 0x7149, + 13871: 0x7489, + 13872: 0x7DF4, + 13873: 0x806F, + 13874: 0x84EE, + 13875: 0x8F26, + 13876: 0x9023, + 13877: 0x934A, + 13878: 0x51BD, + 13879: 0x5217, + 13880: 0x52A3, + 13881: 0x6D0C, + 13882: 0x70C8, + 13883: 0x88C2, + 13884: 0x5EC9, + 13885: 0x6582, + 13886: 0x6BAE, + 13887: 0x6FC2, + 13888: 0x7C3E, + 13889: 0x7375, + 13890: 0x4EE4, + 13891: 0x4F36, + 13892: 0x56F9, + 13893: 0xF95F, + 13894: 0x5CBA, + 13895: 0x5DBA, + 13896: 0x601C, + 13897: 0x73B2, + 13898: 0x7B2D, + 13899: 0x7F9A, + 13900: 0x7FCE, + 13901: 0x8046, + 13902: 0x901E, + 13903: 0x9234, + 13904: 0x96F6, + 13905: 0x9748, + 13906: 0x9818, + 13907: 0x9F61, + 13908: 0x4F8B, + 13909: 0x6FA7, + 13910: 0x79AE, + 13911: 0x91B4, + 13912: 0x96B7, + 13913: 0x52DE, + 13914: 0xF960, + 13915: 0x6488, + 13916: 0x64C4, + 13917: 0x6AD3, + 13918: 0x6F5E, + 13919: 0x7018, + 13920: 0x7210, + 13921: 0x76E7, + 13922: 0x8001, + 13923: 0x8606, + 13924: 0x865C, + 13925: 0x8DEF, + 13926: 0x8F05, + 13927: 0x9732, + 13928: 0x9B6F, + 13929: 0x9DFA, + 13930: 0x9E75, + 13931: 0x788C, + 13932: 0x797F, + 13933: 0x7DA0, + 13934: 0x83C9, + 13935: 0x9304, + 13936: 0x9E7F, + 13937: 0x9E93, + 13938: 0x8AD6, + 13939: 0x58DF, + 13940: 0x5F04, + 13941: 0x6727, + 13942: 0x7027, + 13943: 0x74CF, + 13944: 0x7C60, + 13945: 0x807E, + 13946: 0x5121, + 13947: 0x7028, + 13948: 0x7262, + 13949: 0x78CA, + 13950: 0x8CC2, + 13951: 0x8CDA, + 13952: 0x8CF4, + 13953: 0x96F7, + 13954: 0x4E86, + 13955: 0x50DA, + 13956: 0x5BEE, + 13957: 0x5ED6, + 13958: 0x6599, + 13959: 0x71CE, + 13960: 0x7642, + 13961: 0x77AD, + 13962: 0x804A, + 13963: 0x84FC, + 13964: 0x907C, + 13965: 0x9B27, + 13966: 0x9F8D, + 13967: 0x58D8, + 13968: 0x5A41, + 13969: 0x5C62, + 13970: 0x6A13, + 13971: 0x6DDA, + 13972: 0x6F0F, + 13973: 0x763B, + 13974: 0x7D2F, + 13975: 0x7E37, + 13976: 0x851E, + 13977: 0x8938, + 13978: 0x93E4, + 13979: 0x964B, + 13980: 0x5289, + 13981: 0x65D2, + 13982: 0x67F3, + 13983: 0x69B4, + 13984: 0x6D41, + 13985: 0x6E9C, + 13986: 0x700F, + 13987: 0x7409, + 13988: 0x7460, + 13989: 0x7559, + 13990: 0x7624, + 13991: 0x786B, + 13992: 0x8B2C, + 13993: 0x985E, + 13994: 0x516D, + 13995: 0x622E, + 13996: 0x9678, + 13997: 0x4F96, + 13998: 0x502B, + 13999: 0x5D19, + 14000: 0x6DEA, + 14001: 0x7DB8, + 14002: 0x8F2A, + 14003: 0x5F8B, + 14004: 0x6144, + 14005: 0x6817, + 14006: 0xF961, + 14007: 0x9686, + 14008: 0x52D2, + 14009: 0x808B, + 14010: 0x51DC, + 14011: 0x51CC, + 14012: 0x695E, + 14013: 0x7A1C, + 14014: 0x7DBE, + 14015: 0x83F1, + 14016: 0x9675, + 14017: 0x4FDA, + 14018: 0x5229, + 14019: 0x5398, + 14020: 0x540F, + 14021: 0x550E, + 14022: 0x5C65, + 14023: 0x60A7, + 14024: 0x674E, + 14025: 0x68A8, + 14026: 0x6D6C, + 14027: 0x7281, + 14028: 0x72F8, + 14029: 0x7406, + 14030: 0x7483, + 14031: 0xF962, + 14032: 0x75E2, + 14033: 0x7C6C, + 14034: 0x7F79, + 14035: 0x7FB8, + 14036: 0x8389, + 14037: 0x88CF, + 14038: 0x88E1, + 14039: 0x91CC, + 14040: 0x91D0, + 14041: 0x96E2, + 14042: 0x9BC9, + 14043: 0x541D, + 14044: 0x6F7E, + 14045: 0x71D0, + 14046: 0x7498, + 14047: 0x85FA, + 14048: 0x8EAA, + 14049: 0x96A3, + 14050: 0x9C57, + 14051: 0x9E9F, + 14052: 0x6797, + 14053: 0x6DCB, + 14054: 0x7433, + 14055: 0x81E8, + 14056: 0x9716, + 14057: 0x782C, + 14058: 0x7ACB, + 14059: 0x7B20, + 14060: 0x7C92, + 14061: 0x6469, + 14062: 0x746A, + 14063: 0x75F2, + 14064: 0x78BC, + 14065: 0x78E8, + 14066: 0x99AC, + 14067: 0x9B54, + 14068: 0x9EBB, + 14069: 0x5BDE, + 14070: 0x5E55, + 14071: 0x6F20, + 14072: 0x819C, + 14073: 0x83AB, + 14074: 0x9088, + 14075: 0x4E07, + 14076: 0x534D, + 14077: 0x5A29, + 14078: 0x5DD2, + 14079: 0x5F4E, + 14080: 0x6162, + 14081: 0x633D, + 14082: 0x6669, + 14083: 0x66FC, + 14084: 0x6EFF, + 14085: 0x6F2B, + 14086: 0x7063, + 14087: 0x779E, + 14088: 0x842C, + 14089: 0x8513, + 14090: 0x883B, + 14091: 0x8F13, + 14092: 0x9945, + 14093: 0x9C3B, + 14094: 0x551C, + 14095: 0x62B9, + 14096: 0x672B, + 14097: 0x6CAB, + 14098: 0x8309, + 14099: 0x896A, + 14100: 0x977A, + 14101: 0x4EA1, + 14102: 0x5984, + 14103: 0x5FD8, + 14104: 0x5FD9, + 14105: 0x671B, + 14106: 0x7DB2, + 14107: 0x7F54, + 14108: 0x8292, + 14109: 0x832B, + 14110: 0x83BD, + 14111: 0x8F1E, + 14112: 0x9099, + 14113: 0x57CB, + 14114: 0x59B9, + 14115: 0x5A92, + 14116: 0x5BD0, + 14117: 0x6627, + 14118: 0x679A, + 14119: 0x6885, + 14120: 0x6BCF, + 14121: 0x7164, + 14122: 0x7F75, + 14123: 0x8CB7, + 14124: 0x8CE3, + 14125: 0x9081, + 14126: 0x9B45, + 14127: 0x8108, + 14128: 0x8C8A, + 14129: 0x964C, + 14130: 0x9A40, + 14131: 0x9EA5, + 14132: 0x5B5F, + 14133: 0x6C13, + 14134: 0x731B, + 14135: 0x76F2, + 14136: 0x76DF, + 14137: 0x840C, + 14138: 0x51AA, + 14139: 0x8993, + 14140: 0x514D, + 14141: 0x5195, + 14142: 0x52C9, + 14143: 0x68C9, + 14144: 0x6C94, + 14145: 0x7704, + 14146: 0x7720, + 14147: 0x7DBF, + 14148: 0x7DEC, + 14149: 0x9762, + 14150: 0x9EB5, + 14151: 0x6EC5, + 14152: 0x8511, + 14153: 0x51A5, + 14154: 0x540D, + 14155: 0x547D, + 14156: 0x660E, + 14157: 0x669D, + 14158: 0x6927, + 14159: 0x6E9F, + 14160: 0x76BF, + 14161: 0x7791, + 14162: 0x8317, + 14163: 0x84C2, + 14164: 0x879F, + 14165: 0x9169, + 14166: 0x9298, + 14167: 0x9CF4, + 14168: 0x8882, + 14169: 0x4FAE, + 14170: 0x5192, + 14171: 0x52DF, + 14172: 0x59C6, + 14173: 0x5E3D, + 14174: 0x6155, + 14175: 0x6478, + 14176: 0x6479, + 14177: 0x66AE, + 14178: 0x67D0, + 14179: 0x6A21, + 14180: 0x6BCD, + 14181: 0x6BDB, + 14182: 0x725F, + 14183: 0x7261, + 14184: 0x7441, + 14185: 0x7738, + 14186: 0x77DB, + 14187: 0x8017, + 14188: 0x82BC, + 14189: 0x8305, + 14190: 0x8B00, + 14191: 0x8B28, + 14192: 0x8C8C, + 14193: 0x6728, + 14194: 0x6C90, + 14195: 0x7267, + 14196: 0x76EE, + 14197: 0x7766, + 14198: 0x7A46, + 14199: 0x9DA9, + 14200: 0x6B7F, + 14201: 0x6C92, + 14202: 0x5922, + 14203: 0x6726, + 14204: 0x8499, + 14205: 0x536F, + 14206: 0x5893, + 14207: 0x5999, + 14208: 0x5EDF, + 14209: 0x63CF, + 14210: 0x6634, + 14211: 0x6773, + 14212: 0x6E3A, + 14213: 0x732B, + 14214: 0x7AD7, + 14215: 0x82D7, + 14216: 0x9328, + 14217: 0x52D9, + 14218: 0x5DEB, + 14219: 0x61AE, + 14220: 0x61CB, + 14221: 0x620A, + 14222: 0x62C7, + 14223: 0x64AB, + 14224: 0x65E0, + 14225: 0x6959, + 14226: 0x6B66, + 14227: 0x6BCB, + 14228: 0x7121, + 14229: 0x73F7, + 14230: 0x755D, + 14231: 0x7E46, + 14232: 0x821E, + 14233: 0x8302, + 14234: 0x856A, + 14235: 0x8AA3, + 14236: 0x8CBF, + 14237: 0x9727, + 14238: 0x9D61, + 14239: 0x58A8, + 14240: 0x9ED8, + 14241: 0x5011, + 14242: 0x520E, + 14243: 0x543B, + 14244: 0x554F, + 14245: 0x6587, + 14246: 0x6C76, + 14247: 0x7D0A, + 14248: 0x7D0B, + 14249: 0x805E, + 14250: 0x868A, + 14251: 0x9580, + 14252: 0x96EF, + 14253: 0x52FF, + 14254: 0x6C95, + 14255: 0x7269, + 14256: 0x5473, + 14257: 0x5A9A, + 14258: 0x5C3E, + 14259: 0x5D4B, + 14260: 0x5F4C, + 14261: 0x5FAE, + 14262: 0x672A, + 14263: 0x68B6, + 14264: 0x6963, + 14265: 0x6E3C, + 14266: 0x6E44, + 14267: 0x7709, + 14268: 0x7C73, + 14269: 0x7F8E, + 14270: 0x8587, + 14271: 0x8B0E, + 14272: 0x8FF7, + 14273: 0x9761, + 14274: 0x9EF4, + 14275: 0x5CB7, + 14276: 0x60B6, + 14277: 0x610D, + 14278: 0x61AB, + 14279: 0x654F, + 14280: 0x65FB, + 14281: 0x65FC, + 14282: 0x6C11, + 14283: 0x6CEF, + 14284: 0x739F, + 14285: 0x73C9, + 14286: 0x7DE1, + 14287: 0x9594, + 14288: 0x5BC6, + 14289: 0x871C, + 14290: 0x8B10, + 14291: 0x525D, + 14292: 0x535A, + 14293: 0x62CD, + 14294: 0x640F, + 14295: 0x64B2, + 14296: 0x6734, + 14297: 0x6A38, + 14298: 0x6CCA, + 14299: 0x73C0, + 14300: 0x749E, + 14301: 0x7B94, + 14302: 0x7C95, + 14303: 0x7E1B, + 14304: 0x818A, + 14305: 0x8236, + 14306: 0x8584, + 14307: 0x8FEB, + 14308: 0x96F9, + 14309: 0x99C1, + 14310: 0x4F34, + 14311: 0x534A, + 14312: 0x53CD, + 14313: 0x53DB, + 14314: 0x62CC, + 14315: 0x642C, + 14316: 0x6500, + 14317: 0x6591, + 14318: 0x69C3, + 14319: 0x6CEE, + 14320: 0x6F58, + 14321: 0x73ED, + 14322: 0x7554, + 14323: 0x7622, + 14324: 0x76E4, + 14325: 0x76FC, + 14326: 0x78D0, + 14327: 0x78FB, + 14328: 0x792C, + 14329: 0x7D46, + 14330: 0x822C, + 14331: 0x87E0, + 14332: 0x8FD4, + 14333: 0x9812, + 14334: 0x98EF, + 14335: 0x52C3, + 14336: 0x62D4, + 14337: 0x64A5, + 14338: 0x6E24, + 14339: 0x6F51, + 14340: 0x767C, + 14341: 0x8DCB, + 14342: 0x91B1, + 14343: 0x9262, + 14344: 0x9AEE, + 14345: 0x9B43, + 14346: 0x5023, + 14347: 0x508D, + 14348: 0x574A, + 14349: 0x59A8, + 14350: 0x5C28, + 14351: 0x5E47, + 14352: 0x5F77, + 14353: 0x623F, + 14354: 0x653E, + 14355: 0x65B9, + 14356: 0x65C1, + 14357: 0x6609, + 14358: 0x678B, + 14359: 0x699C, + 14360: 0x6EC2, + 14361: 0x78C5, + 14362: 0x7D21, + 14363: 0x80AA, + 14364: 0x8180, + 14365: 0x822B, + 14366: 0x82B3, + 14367: 0x84A1, + 14368: 0x868C, + 14369: 0x8A2A, + 14370: 0x8B17, + 14371: 0x90A6, + 14372: 0x9632, + 14373: 0x9F90, + 14374: 0x500D, + 14375: 0x4FF3, + 14376: 0xF963, + 14377: 0x57F9, + 14378: 0x5F98, + 14379: 0x62DC, + 14380: 0x6392, + 14381: 0x676F, + 14382: 0x6E43, + 14383: 0x7119, + 14384: 0x76C3, + 14385: 0x80CC, + 14386: 0x80DA, + 14387: 0x88F4, + 14388: 0x88F5, + 14389: 0x8919, + 14390: 0x8CE0, + 14391: 0x8F29, + 14392: 0x914D, + 14393: 0x966A, + 14394: 0x4F2F, + 14395: 0x4F70, + 14396: 0x5E1B, + 14397: 0x67CF, + 14398: 0x6822, + 14399: 0x767D, + 14400: 0x767E, + 14401: 0x9B44, + 14402: 0x5E61, + 14403: 0x6A0A, + 14404: 0x7169, + 14405: 0x71D4, + 14406: 0x756A, + 14407: 0xF964, + 14408: 0x7E41, + 14409: 0x8543, + 14410: 0x85E9, + 14411: 0x98DC, + 14412: 0x4F10, + 14413: 0x7B4F, + 14414: 0x7F70, + 14415: 0x95A5, + 14416: 0x51E1, + 14417: 0x5E06, + 14418: 0x68B5, + 14419: 0x6C3E, + 14420: 0x6C4E, + 14421: 0x6CDB, + 14422: 0x72AF, + 14423: 0x7BC4, + 14424: 0x8303, + 14425: 0x6CD5, + 14426: 0x743A, + 14427: 0x50FB, + 14428: 0x5288, + 14429: 0x58C1, + 14430: 0x64D8, + 14431: 0x6A97, + 14432: 0x74A7, + 14433: 0x7656, + 14434: 0x78A7, + 14435: 0x8617, + 14436: 0x95E2, + 14437: 0x9739, + 14438: 0xF965, + 14439: 0x535E, + 14440: 0x5F01, + 14441: 0x8B8A, + 14442: 0x8FA8, + 14443: 0x8FAF, + 14444: 0x908A, + 14445: 0x5225, + 14446: 0x77A5, + 14447: 0x9C49, + 14448: 0x9F08, + 14449: 0x4E19, + 14450: 0x5002, + 14451: 0x5175, + 14452: 0x5C5B, + 14453: 0x5E77, + 14454: 0x661E, + 14455: 0x663A, + 14456: 0x67C4, + 14457: 0x68C5, + 14458: 0x70B3, + 14459: 0x7501, + 14460: 0x75C5, + 14461: 0x79C9, + 14462: 0x7ADD, + 14463: 0x8F27, + 14464: 0x9920, + 14465: 0x9A08, + 14466: 0x4FDD, + 14467: 0x5821, + 14468: 0x5831, + 14469: 0x5BF6, + 14470: 0x666E, + 14471: 0x6B65, + 14472: 0x6D11, + 14473: 0x6E7A, + 14474: 0x6F7D, + 14475: 0x73E4, + 14476: 0x752B, + 14477: 0x83E9, + 14478: 0x88DC, + 14479: 0x8913, + 14480: 0x8B5C, + 14481: 0x8F14, + 14482: 0x4F0F, + 14483: 0x50D5, + 14484: 0x5310, + 14485: 0x535C, + 14486: 0x5B93, + 14487: 0x5FA9, + 14488: 0x670D, + 14489: 0x798F, + 14490: 0x8179, + 14491: 0x832F, + 14492: 0x8514, + 14493: 0x8907, + 14494: 0x8986, + 14495: 0x8F39, + 14496: 0x8F3B, + 14497: 0x99A5, + 14498: 0x9C12, + 14499: 0x672C, + 14500: 0x4E76, + 14501: 0x4FF8, + 14502: 0x5949, + 14503: 0x5C01, + 14504: 0x5CEF, + 14505: 0x5CF0, + 14506: 0x6367, + 14507: 0x68D2, + 14508: 0x70FD, + 14509: 0x71A2, + 14510: 0x742B, + 14511: 0x7E2B, + 14512: 0x84EC, + 14513: 0x8702, + 14514: 0x9022, + 14515: 0x92D2, + 14516: 0x9CF3, + 14517: 0x4E0D, + 14518: 0x4ED8, + 14519: 0x4FEF, + 14520: 0x5085, + 14521: 0x5256, + 14522: 0x526F, + 14523: 0x5426, + 14524: 0x5490, + 14525: 0x57E0, + 14526: 0x592B, + 14527: 0x5A66, + 14528: 0x5B5A, + 14529: 0x5B75, + 14530: 0x5BCC, + 14531: 0x5E9C, + 14532: 0xF966, + 14533: 0x6276, + 14534: 0x6577, + 14535: 0x65A7, + 14536: 0x6D6E, + 14537: 0x6EA5, + 14538: 0x7236, + 14539: 0x7B26, + 14540: 0x7C3F, + 14541: 0x7F36, + 14542: 0x8150, + 14543: 0x8151, + 14544: 0x819A, + 14545: 0x8240, + 14546: 0x8299, + 14547: 0x83A9, + 14548: 0x8A03, + 14549: 0x8CA0, + 14550: 0x8CE6, + 14551: 0x8CFB, + 14552: 0x8D74, + 14553: 0x8DBA, + 14554: 0x90E8, + 14555: 0x91DC, + 14556: 0x961C, + 14557: 0x9644, + 14558: 0x99D9, + 14559: 0x9CE7, + 14560: 0x5317, + 14561: 0x5206, + 14562: 0x5429, + 14563: 0x5674, + 14564: 0x58B3, + 14565: 0x5954, + 14566: 0x596E, + 14567: 0x5FFF, + 14568: 0x61A4, + 14569: 0x626E, + 14570: 0x6610, + 14571: 0x6C7E, + 14572: 0x711A, + 14573: 0x76C6, + 14574: 0x7C89, + 14575: 0x7CDE, + 14576: 0x7D1B, + 14577: 0x82AC, + 14578: 0x8CC1, + 14579: 0x96F0, + 14580: 0xF967, + 14581: 0x4F5B, + 14582: 0x5F17, + 14583: 0x5F7F, + 14584: 0x62C2, + 14585: 0x5D29, + 14586: 0x670B, + 14587: 0x68DA, + 14588: 0x787C, + 14589: 0x7E43, + 14590: 0x9D6C, + 14591: 0x4E15, + 14592: 0x5099, + 14593: 0x5315, + 14594: 0x532A, + 14595: 0x5351, + 14596: 0x5983, + 14597: 0x5A62, + 14598: 0x5E87, + 14599: 0x60B2, + 14600: 0x618A, + 14601: 0x6249, + 14602: 0x6279, + 14603: 0x6590, + 14604: 0x6787, + 14605: 0x69A7, + 14606: 0x6BD4, + 14607: 0x6BD6, + 14608: 0x6BD7, + 14609: 0x6BD8, + 14610: 0x6CB8, + 14611: 0xF968, + 14612: 0x7435, + 14613: 0x75FA, + 14614: 0x7812, + 14615: 0x7891, + 14616: 0x79D5, + 14617: 0x79D8, + 14618: 0x7C83, + 14619: 0x7DCB, + 14620: 0x7FE1, + 14621: 0x80A5, + 14622: 0x813E, + 14623: 0x81C2, + 14624: 0x83F2, + 14625: 0x871A, + 14626: 0x88E8, + 14627: 0x8AB9, + 14628: 0x8B6C, + 14629: 0x8CBB, + 14630: 0x9119, + 14631: 0x975E, + 14632: 0x98DB, + 14633: 0x9F3B, + 14634: 0x56AC, + 14635: 0x5B2A, + 14636: 0x5F6C, + 14637: 0x658C, + 14638: 0x6AB3, + 14639: 0x6BAF, + 14640: 0x6D5C, + 14641: 0x6FF1, + 14642: 0x7015, + 14643: 0x725D, + 14644: 0x73AD, + 14645: 0x8CA7, + 14646: 0x8CD3, + 14647: 0x983B, + 14648: 0x6191, + 14649: 0x6C37, + 14650: 0x8058, + 14651: 0x9A01, + 14652: 0x4E4D, + 14653: 0x4E8B, + 14654: 0x4E9B, + 14655: 0x4ED5, + 14656: 0x4F3A, + 14657: 0x4F3C, + 14658: 0x4F7F, + 14659: 0x4FDF, + 14660: 0x50FF, + 14661: 0x53F2, + 14662: 0x53F8, + 14663: 0x5506, + 14664: 0x55E3, + 14665: 0x56DB, + 14666: 0x58EB, + 14667: 0x5962, + 14668: 0x5A11, + 14669: 0x5BEB, + 14670: 0x5BFA, + 14671: 0x5C04, + 14672: 0x5DF3, + 14673: 0x5E2B, + 14674: 0x5F99, + 14675: 0x601D, + 14676: 0x6368, + 14677: 0x659C, + 14678: 0x65AF, + 14679: 0x67F6, + 14680: 0x67FB, + 14681: 0x68AD, + 14682: 0x6B7B, + 14683: 0x6C99, + 14684: 0x6CD7, + 14685: 0x6E23, + 14686: 0x7009, + 14687: 0x7345, + 14688: 0x7802, + 14689: 0x793E, + 14690: 0x7940, + 14691: 0x7960, + 14692: 0x79C1, + 14693: 0x7BE9, + 14694: 0x7D17, + 14695: 0x7D72, + 14696: 0x8086, + 14697: 0x820D, + 14698: 0x838E, + 14699: 0x84D1, + 14700: 0x86C7, + 14701: 0x88DF, + 14702: 0x8A50, + 14703: 0x8A5E, + 14704: 0x8B1D, + 14705: 0x8CDC, + 14706: 0x8D66, + 14707: 0x8FAD, + 14708: 0x90AA, + 14709: 0x98FC, + 14710: 0x99DF, + 14711: 0x9E9D, + 14712: 0x524A, + 14713: 0xF969, + 14714: 0x6714, + 14715: 0xF96A, + 14716: 0x5098, + 14717: 0x522A, + 14718: 0x5C71, + 14719: 0x6563, + 14720: 0x6C55, + 14721: 0x73CA, + 14722: 0x7523, + 14723: 0x759D, + 14724: 0x7B97, + 14725: 0x849C, + 14726: 0x9178, + 14727: 0x9730, + 14728: 0x4E77, + 14729: 0x6492, + 14730: 0x6BBA, + 14731: 0x715E, + 14732: 0x85A9, + 14733: 0x4E09, + 14734: 0xF96B, + 14735: 0x6749, + 14736: 0x68EE, + 14737: 0x6E17, + 14738: 0x829F, + 14739: 0x8518, + 14740: 0x886B, + 14741: 0x63F7, + 14742: 0x6F81, + 14743: 0x9212, + 14744: 0x98AF, + 14745: 0x4E0A, + 14746: 0x50B7, + 14747: 0x50CF, + 14748: 0x511F, + 14749: 0x5546, + 14750: 0x55AA, + 14751: 0x5617, + 14752: 0x5B40, + 14753: 0x5C19, + 14754: 0x5CE0, + 14755: 0x5E38, + 14756: 0x5E8A, + 14757: 0x5EA0, + 14758: 0x5EC2, + 14759: 0x60F3, + 14760: 0x6851, + 14761: 0x6A61, + 14762: 0x6E58, + 14763: 0x723D, + 14764: 0x7240, + 14765: 0x72C0, + 14766: 0x76F8, + 14767: 0x7965, + 14768: 0x7BB1, + 14769: 0x7FD4, + 14770: 0x88F3, + 14771: 0x89F4, + 14772: 0x8A73, + 14773: 0x8C61, + 14774: 0x8CDE, + 14775: 0x971C, + 14776: 0x585E, + 14777: 0x74BD, + 14778: 0x8CFD, + 14779: 0x55C7, + 14780: 0xF96C, + 14781: 0x7A61, + 14782: 0x7D22, + 14783: 0x8272, + 14784: 0x7272, + 14785: 0x751F, + 14786: 0x7525, + 14787: 0xF96D, + 14788: 0x7B19, + 14789: 0x5885, + 14790: 0x58FB, + 14791: 0x5DBC, + 14792: 0x5E8F, + 14793: 0x5EB6, + 14794: 0x5F90, + 14795: 0x6055, + 14796: 0x6292, + 14797: 0x637F, + 14798: 0x654D, + 14799: 0x6691, + 14800: 0x66D9, + 14801: 0x66F8, + 14802: 0x6816, + 14803: 0x68F2, + 14804: 0x7280, + 14805: 0x745E, + 14806: 0x7B6E, + 14807: 0x7D6E, + 14808: 0x7DD6, + 14809: 0x7F72, + 14810: 0x80E5, + 14811: 0x8212, + 14812: 0x85AF, + 14813: 0x897F, + 14814: 0x8A93, + 14815: 0x901D, + 14816: 0x92E4, + 14817: 0x9ECD, + 14818: 0x9F20, + 14819: 0x5915, + 14820: 0x596D, + 14821: 0x5E2D, + 14822: 0x60DC, + 14823: 0x6614, + 14824: 0x6673, + 14825: 0x6790, + 14826: 0x6C50, + 14827: 0x6DC5, + 14828: 0x6F5F, + 14829: 0x77F3, + 14830: 0x78A9, + 14831: 0x84C6, + 14832: 0x91CB, + 14833: 0x932B, + 14834: 0x4ED9, + 14835: 0x50CA, + 14836: 0x5148, + 14837: 0x5584, + 14838: 0x5B0B, + 14839: 0x5BA3, + 14840: 0x6247, + 14841: 0x657E, + 14842: 0x65CB, + 14843: 0x6E32, + 14844: 0x717D, + 14845: 0x7401, + 14846: 0x7444, + 14847: 0x7487, + 14848: 0x74BF, + 14849: 0x766C, + 14850: 0x79AA, + 14851: 0x7DDA, + 14852: 0x7E55, + 14853: 0x7FA8, + 14854: 0x817A, + 14855: 0x81B3, + 14856: 0x8239, + 14857: 0x861A, + 14858: 0x87EC, + 14859: 0x8A75, + 14860: 0x8DE3, + 14861: 0x9078, + 14862: 0x9291, + 14863: 0x9425, + 14864: 0x994D, + 14865: 0x9BAE, + 14866: 0x5368, + 14867: 0x5C51, + 14868: 0x6954, + 14869: 0x6CC4, + 14870: 0x6D29, + 14871: 0x6E2B, + 14872: 0x820C, + 14873: 0x859B, + 14874: 0x893B, + 14875: 0x8A2D, + 14876: 0x8AAA, + 14877: 0x96EA, + 14878: 0x9F67, + 14879: 0x5261, + 14880: 0x66B9, + 14881: 0x6BB2, + 14882: 0x7E96, + 14883: 0x87FE, + 14884: 0x8D0D, + 14885: 0x9583, + 14886: 0x965D, + 14887: 0x651D, + 14888: 0x6D89, + 14889: 0x71EE, + 14890: 0xF96E, + 14891: 0x57CE, + 14892: 0x59D3, + 14893: 0x5BAC, + 14894: 0x6027, + 14895: 0x60FA, + 14896: 0x6210, + 14897: 0x661F, + 14898: 0x665F, + 14899: 0x7329, + 14900: 0x73F9, + 14901: 0x76DB, + 14902: 0x7701, + 14903: 0x7B6C, + 14904: 0x8056, + 14905: 0x8072, + 14906: 0x8165, + 14907: 0x8AA0, + 14908: 0x9192, + 14909: 0x4E16, + 14910: 0x52E2, + 14911: 0x6B72, + 14912: 0x6D17, + 14913: 0x7A05, + 14914: 0x7B39, + 14915: 0x7D30, + 14916: 0xF96F, + 14917: 0x8CB0, + 14918: 0x53EC, + 14919: 0x562F, + 14920: 0x5851, + 14921: 0x5BB5, + 14922: 0x5C0F, + 14923: 0x5C11, + 14924: 0x5DE2, + 14925: 0x6240, + 14926: 0x6383, + 14927: 0x6414, + 14928: 0x662D, + 14929: 0x68B3, + 14930: 0x6CBC, + 14931: 0x6D88, + 14932: 0x6EAF, + 14933: 0x701F, + 14934: 0x70A4, + 14935: 0x71D2, + 14936: 0x7526, + 14937: 0x758F, + 14938: 0x758E, + 14939: 0x7619, + 14940: 0x7B11, + 14941: 0x7BE0, + 14942: 0x7C2B, + 14943: 0x7D20, + 14944: 0x7D39, + 14945: 0x852C, + 14946: 0x856D, + 14947: 0x8607, + 14948: 0x8A34, + 14949: 0x900D, + 14950: 0x9061, + 14951: 0x90B5, + 14952: 0x92B7, + 14953: 0x97F6, + 14954: 0x9A37, + 14955: 0x4FD7, + 14956: 0x5C6C, + 14957: 0x675F, + 14958: 0x6D91, + 14959: 0x7C9F, + 14960: 0x7E8C, + 14961: 0x8B16, + 14962: 0x8D16, + 14963: 0x901F, + 14964: 0x5B6B, + 14965: 0x5DFD, + 14966: 0x640D, + 14967: 0x84C0, + 14968: 0x905C, + 14969: 0x98E1, + 14970: 0x7387, + 14971: 0x5B8B, + 14972: 0x609A, + 14973: 0x677E, + 14974: 0x6DDE, + 14975: 0x8A1F, + 14976: 0x8AA6, + 14977: 0x9001, + 14978: 0x980C, + 14979: 0x5237, + 14980: 0xF970, + 14981: 0x7051, + 14982: 0x788E, + 14983: 0x9396, + 14984: 0x8870, + 14985: 0x91D7, + 14986: 0x4FEE, + 14987: 0x53D7, + 14988: 0x55FD, + 14989: 0x56DA, + 14990: 0x5782, + 14991: 0x58FD, + 14992: 0x5AC2, + 14993: 0x5B88, + 14994: 0x5CAB, + 14995: 0x5CC0, + 14996: 0x5E25, + 14997: 0x6101, + 14998: 0x620D, + 14999: 0x624B, + 15000: 0x6388, + 15001: 0x641C, + 15002: 0x6536, + 15003: 0x6578, + 15004: 0x6A39, + 15005: 0x6B8A, + 15006: 0x6C34, + 15007: 0x6D19, + 15008: 0x6F31, + 15009: 0x71E7, + 15010: 0x72E9, + 15011: 0x7378, + 15012: 0x7407, + 15013: 0x74B2, + 15014: 0x7626, + 15015: 0x7761, + 15016: 0x79C0, + 15017: 0x7A57, + 15018: 0x7AEA, + 15019: 0x7CB9, + 15020: 0x7D8F, + 15021: 0x7DAC, + 15022: 0x7E61, + 15023: 0x7F9E, + 15024: 0x8129, + 15025: 0x8331, + 15026: 0x8490, + 15027: 0x84DA, + 15028: 0x85EA, + 15029: 0x8896, + 15030: 0x8AB0, + 15031: 0x8B90, + 15032: 0x8F38, + 15033: 0x9042, + 15034: 0x9083, + 15035: 0x916C, + 15036: 0x9296, + 15037: 0x92B9, + 15038: 0x968B, + 15039: 0x96A7, + 15040: 0x96A8, + 15041: 0x96D6, + 15042: 0x9700, + 15043: 0x9808, + 15044: 0x9996, + 15045: 0x9AD3, + 15046: 0x9B1A, + 15047: 0x53D4, + 15048: 0x587E, + 15049: 0x5919, + 15050: 0x5B70, + 15051: 0x5BBF, + 15052: 0x6DD1, + 15053: 0x6F5A, + 15054: 0x719F, + 15055: 0x7421, + 15056: 0x74B9, + 15057: 0x8085, + 15058: 0x83FD, + 15059: 0x5DE1, + 15060: 0x5F87, + 15061: 0x5FAA, + 15062: 0x6042, + 15063: 0x65EC, + 15064: 0x6812, + 15065: 0x696F, + 15066: 0x6A53, + 15067: 0x6B89, + 15068: 0x6D35, + 15069: 0x6DF3, + 15070: 0x73E3, + 15071: 0x76FE, + 15072: 0x77AC, + 15073: 0x7B4D, + 15074: 0x7D14, + 15075: 0x8123, + 15076: 0x821C, + 15077: 0x8340, + 15078: 0x84F4, + 15079: 0x8563, + 15080: 0x8A62, + 15081: 0x8AC4, + 15082: 0x9187, + 15083: 0x931E, + 15084: 0x9806, + 15085: 0x99B4, + 15086: 0x620C, + 15087: 0x8853, + 15088: 0x8FF0, + 15089: 0x9265, + 15090: 0x5D07, + 15091: 0x5D27, + 15092: 0x5D69, + 15093: 0x745F, + 15094: 0x819D, + 15095: 0x8768, + 15096: 0x6FD5, + 15097: 0x62FE, + 15098: 0x7FD2, + 15099: 0x8936, + 15100: 0x8972, + 15101: 0x4E1E, + 15102: 0x4E58, + 15103: 0x50E7, + 15104: 0x52DD, + 15105: 0x5347, + 15106: 0x627F, + 15107: 0x6607, + 15108: 0x7E69, + 15109: 0x8805, + 15110: 0x965E, + 15111: 0x4F8D, + 15112: 0x5319, + 15113: 0x5636, + 15114: 0x59CB, + 15115: 0x5AA4, + 15116: 0x5C38, + 15117: 0x5C4E, + 15118: 0x5C4D, + 15119: 0x5E02, + 15120: 0x5F11, + 15121: 0x6043, + 15122: 0x65BD, + 15123: 0x662F, + 15124: 0x6642, + 15125: 0x67BE, + 15126: 0x67F4, + 15127: 0x731C, + 15128: 0x77E2, + 15129: 0x793A, + 15130: 0x7FC5, + 15131: 0x8494, + 15132: 0x84CD, + 15133: 0x8996, + 15134: 0x8A66, + 15135: 0x8A69, + 15136: 0x8AE1, + 15137: 0x8C55, + 15138: 0x8C7A, + 15139: 0x57F4, + 15140: 0x5BD4, + 15141: 0x5F0F, + 15142: 0x606F, + 15143: 0x62ED, + 15144: 0x690D, + 15145: 0x6B96, + 15146: 0x6E5C, + 15147: 0x7184, + 15148: 0x7BD2, + 15149: 0x8755, + 15150: 0x8B58, + 15151: 0x8EFE, + 15152: 0x98DF, + 15153: 0x98FE, + 15154: 0x4F38, + 15155: 0x4F81, + 15156: 0x4FE1, + 15157: 0x547B, + 15158: 0x5A20, + 15159: 0x5BB8, + 15160: 0x613C, + 15161: 0x65B0, + 15162: 0x6668, + 15163: 0x71FC, + 15164: 0x7533, + 15165: 0x795E, + 15166: 0x7D33, + 15167: 0x814E, + 15168: 0x81E3, + 15169: 0x8398, + 15170: 0x85AA, + 15171: 0x85CE, + 15172: 0x8703, + 15173: 0x8A0A, + 15174: 0x8EAB, + 15175: 0x8F9B, + 15176: 0xF971, + 15177: 0x8FC5, + 15178: 0x5931, + 15179: 0x5BA4, + 15180: 0x5BE6, + 15181: 0x6089, + 15182: 0x5BE9, + 15183: 0x5C0B, + 15184: 0x5FC3, + 15185: 0x6C81, + 15186: 0xF972, + 15187: 0x6DF1, + 15188: 0x700B, + 15189: 0x751A, + 15190: 0x82AF, + 15191: 0x8AF6, + 15192: 0x4EC0, + 15193: 0x5341, + 15194: 0xF973, + 15195: 0x96D9, + 15196: 0x6C0F, + 15197: 0x4E9E, + 15198: 0x4FC4, + 15199: 0x5152, + 15200: 0x555E, + 15201: 0x5A25, + 15202: 0x5CE8, + 15203: 0x6211, + 15204: 0x7259, + 15205: 0x82BD, + 15206: 0x83AA, + 15207: 0x86FE, + 15208: 0x8859, + 15209: 0x8A1D, + 15210: 0x963F, + 15211: 0x96C5, + 15212: 0x9913, + 15213: 0x9D09, + 15214: 0x9D5D, + 15215: 0x580A, + 15216: 0x5CB3, + 15217: 0x5DBD, + 15218: 0x5E44, + 15219: 0x60E1, + 15220: 0x6115, + 15221: 0x63E1, + 15222: 0x6A02, + 15223: 0x6E25, + 15224: 0x9102, + 15225: 0x9354, + 15226: 0x984E, + 15227: 0x9C10, + 15228: 0x9F77, + 15229: 0x5B89, + 15230: 0x5CB8, + 15231: 0x6309, + 15232: 0x664F, + 15233: 0x6848, + 15234: 0x773C, + 15235: 0x96C1, + 15236: 0x978D, + 15237: 0x9854, + 15238: 0x9B9F, + 15239: 0x65A1, + 15240: 0x8B01, + 15241: 0x8ECB, + 15242: 0x95BC, + 15243: 0x5535, + 15244: 0x5CA9, + 15245: 0x5DD6, + 15246: 0x5EB5, + 15247: 0x6697, + 15248: 0x764C, + 15249: 0x83F4, + 15250: 0x95C7, + 15251: 0x58D3, + 15252: 0x62BC, + 15253: 0x72CE, + 15254: 0x9D28, + 15255: 0x4EF0, + 15256: 0x592E, + 15257: 0x600F, + 15258: 0x663B, + 15259: 0x6B83, + 15260: 0x79E7, + 15261: 0x9D26, + 15262: 0x5393, + 15263: 0x54C0, + 15264: 0x57C3, + 15265: 0x5D16, + 15266: 0x611B, + 15267: 0x66D6, + 15268: 0x6DAF, + 15269: 0x788D, + 15270: 0x827E, + 15271: 0x9698, + 15272: 0x9744, + 15273: 0x5384, + 15274: 0x627C, + 15275: 0x6396, + 15276: 0x6DB2, + 15277: 0x7E0A, + 15278: 0x814B, + 15279: 0x984D, + 15280: 0x6AFB, + 15281: 0x7F4C, + 15282: 0x9DAF, + 15283: 0x9E1A, + 15284: 0x4E5F, + 15285: 0x503B, + 15286: 0x51B6, + 15287: 0x591C, + 15288: 0x60F9, + 15289: 0x63F6, + 15290: 0x6930, + 15291: 0x723A, + 15292: 0x8036, + 15293: 0xF974, + 15294: 0x91CE, + 15295: 0x5F31, + 15296: 0xF975, + 15297: 0xF976, + 15298: 0x7D04, + 15299: 0x82E5, + 15300: 0x846F, + 15301: 0x84BB, + 15302: 0x85E5, + 15303: 0x8E8D, + 15304: 0xF977, + 15305: 0x4F6F, + 15306: 0xF978, + 15307: 0xF979, + 15308: 0x58E4, + 15309: 0x5B43, + 15310: 0x6059, + 15311: 0x63DA, + 15312: 0x6518, + 15313: 0x656D, + 15314: 0x6698, + 15315: 0xF97A, + 15316: 0x694A, + 15317: 0x6A23, + 15318: 0x6D0B, + 15319: 0x7001, + 15320: 0x716C, + 15321: 0x75D2, + 15322: 0x760D, + 15323: 0x79B3, + 15324: 0x7A70, + 15325: 0xF97B, + 15326: 0x7F8A, + 15327: 0xF97C, + 15328: 0x8944, + 15329: 0xF97D, + 15330: 0x8B93, + 15331: 0x91C0, + 15332: 0x967D, + 15333: 0xF97E, + 15334: 0x990A, + 15335: 0x5704, + 15336: 0x5FA1, + 15337: 0x65BC, + 15338: 0x6F01, + 15339: 0x7600, + 15340: 0x79A6, + 15341: 0x8A9E, + 15342: 0x99AD, + 15343: 0x9B5A, + 15344: 0x9F6C, + 15345: 0x5104, + 15346: 0x61B6, + 15347: 0x6291, + 15348: 0x6A8D, + 15349: 0x81C6, + 15350: 0x5043, + 15351: 0x5830, + 15352: 0x5F66, + 15353: 0x7109, + 15354: 0x8A00, + 15355: 0x8AFA, + 15356: 0x5B7C, + 15357: 0x8616, + 15358: 0x4FFA, + 15359: 0x513C, + 15360: 0x56B4, + 15361: 0x5944, + 15362: 0x63A9, + 15363: 0x6DF9, + 15364: 0x5DAA, + 15365: 0x696D, + 15366: 0x5186, + 15367: 0x4E88, + 15368: 0x4F59, + 15369: 0xF97F, + 15370: 0xF980, + 15371: 0xF981, + 15372: 0x5982, + 15373: 0xF982, + 15374: 0xF983, + 15375: 0x6B5F, + 15376: 0x6C5D, + 15377: 0xF984, + 15378: 0x74B5, + 15379: 0x7916, + 15380: 0xF985, + 15381: 0x8207, + 15382: 0x8245, + 15383: 0x8339, + 15384: 0x8F3F, + 15385: 0x8F5D, + 15386: 0xF986, + 15387: 0x9918, + 15388: 0xF987, + 15389: 0xF988, + 15390: 0xF989, + 15391: 0x4EA6, + 15392: 0xF98A, + 15393: 0x57DF, + 15394: 0x5F79, + 15395: 0x6613, + 15396: 0xF98B, + 15397: 0xF98C, + 15398: 0x75AB, + 15399: 0x7E79, + 15400: 0x8B6F, + 15401: 0xF98D, + 15402: 0x9006, + 15403: 0x9A5B, + 15404: 0x56A5, + 15405: 0x5827, + 15406: 0x59F8, + 15407: 0x5A1F, + 15408: 0x5BB4, + 15409: 0xF98E, + 15410: 0x5EF6, + 15411: 0xF98F, + 15412: 0xF990, + 15413: 0x6350, + 15414: 0x633B, + 15415: 0xF991, + 15416: 0x693D, + 15417: 0x6C87, + 15418: 0x6CBF, + 15419: 0x6D8E, + 15420: 0x6D93, + 15421: 0x6DF5, + 15422: 0x6F14, + 15423: 0xF992, + 15424: 0x70DF, + 15425: 0x7136, + 15426: 0x7159, + 15427: 0xF993, + 15428: 0x71C3, + 15429: 0x71D5, + 15430: 0xF994, + 15431: 0x784F, + 15432: 0x786F, + 15433: 0xF995, + 15434: 0x7B75, + 15435: 0x7DE3, + 15436: 0xF996, + 15437: 0x7E2F, + 15438: 0xF997, + 15439: 0x884D, + 15440: 0x8EDF, + 15441: 0xF998, + 15442: 0xF999, + 15443: 0xF99A, + 15444: 0x925B, + 15445: 0xF99B, + 15446: 0x9CF6, + 15447: 0xF99C, + 15448: 0xF99D, + 15449: 0xF99E, + 15450: 0x6085, + 15451: 0x6D85, + 15452: 0xF99F, + 15453: 0x71B1, + 15454: 0xF9A0, + 15455: 0xF9A1, + 15456: 0x95B1, + 15457: 0x53AD, + 15458: 0xF9A2, + 15459: 0xF9A3, + 15460: 0xF9A4, + 15461: 0x67D3, + 15462: 0xF9A5, + 15463: 0x708E, + 15464: 0x7130, + 15465: 0x7430, + 15466: 0x8276, + 15467: 0x82D2, + 15468: 0xF9A6, + 15469: 0x95BB, + 15470: 0x9AE5, + 15471: 0x9E7D, + 15472: 0x66C4, + 15473: 0xF9A7, + 15474: 0x71C1, + 15475: 0x8449, + 15476: 0xF9A8, + 15477: 0xF9A9, + 15478: 0x584B, + 15479: 0xF9AA, + 15480: 0xF9AB, + 15481: 0x5DB8, + 15482: 0x5F71, + 15483: 0xF9AC, + 15484: 0x6620, + 15485: 0x668E, + 15486: 0x6979, + 15487: 0x69AE, + 15488: 0x6C38, + 15489: 0x6CF3, + 15490: 0x6E36, + 15491: 0x6F41, + 15492: 0x6FDA, + 15493: 0x701B, + 15494: 0x702F, + 15495: 0x7150, + 15496: 0x71DF, + 15497: 0x7370, + 15498: 0xF9AD, + 15499: 0x745B, + 15500: 0xF9AE, + 15501: 0x74D4, + 15502: 0x76C8, + 15503: 0x7A4E, + 15504: 0x7E93, + 15505: 0xF9AF, + 15506: 0xF9B0, + 15507: 0x82F1, + 15508: 0x8A60, + 15509: 0x8FCE, + 15510: 0xF9B1, + 15511: 0x9348, + 15512: 0xF9B2, + 15513: 0x9719, + 15514: 0xF9B3, + 15515: 0xF9B4, + 15516: 0x4E42, + 15517: 0x502A, + 15518: 0xF9B5, + 15519: 0x5208, + 15520: 0x53E1, + 15521: 0x66F3, + 15522: 0x6C6D, + 15523: 0x6FCA, + 15524: 0x730A, + 15525: 0x777F, + 15526: 0x7A62, + 15527: 0x82AE, + 15528: 0x85DD, + 15529: 0x8602, + 15530: 0xF9B6, + 15531: 0x88D4, + 15532: 0x8A63, + 15533: 0x8B7D, + 15534: 0x8C6B, + 15535: 0xF9B7, + 15536: 0x92B3, + 15537: 0xF9B8, + 15538: 0x9713, + 15539: 0x9810, + 15540: 0x4E94, + 15541: 0x4F0D, + 15542: 0x4FC9, + 15543: 0x50B2, + 15544: 0x5348, + 15545: 0x543E, + 15546: 0x5433, + 15547: 0x55DA, + 15548: 0x5862, + 15549: 0x58BA, + 15550: 0x5967, + 15551: 0x5A1B, + 15552: 0x5BE4, + 15553: 0x609F, + 15554: 0xF9B9, + 15555: 0x61CA, + 15556: 0x6556, + 15557: 0x65FF, + 15558: 0x6664, + 15559: 0x68A7, + 15560: 0x6C5A, + 15561: 0x6FB3, + 15562: 0x70CF, + 15563: 0x71AC, + 15564: 0x7352, + 15565: 0x7B7D, + 15566: 0x8708, + 15567: 0x8AA4, + 15568: 0x9C32, + 15569: 0x9F07, + 15570: 0x5C4B, + 15571: 0x6C83, + 15572: 0x7344, + 15573: 0x7389, + 15574: 0x923A, + 15575: 0x6EAB, + 15576: 0x7465, + 15577: 0x761F, + 15578: 0x7A69, + 15579: 0x7E15, + 15580: 0x860A, + 15581: 0x5140, + 15582: 0x58C5, + 15583: 0x64C1, + 15584: 0x74EE, + 15585: 0x7515, + 15586: 0x7670, + 15587: 0x7FC1, + 15588: 0x9095, + 15589: 0x96CD, + 15590: 0x9954, + 15591: 0x6E26, + 15592: 0x74E6, + 15593: 0x7AA9, + 15594: 0x7AAA, + 15595: 0x81E5, + 15596: 0x86D9, + 15597: 0x8778, + 15598: 0x8A1B, + 15599: 0x5A49, + 15600: 0x5B8C, + 15601: 0x5B9B, + 15602: 0x68A1, + 15603: 0x6900, + 15604: 0x6D63, + 15605: 0x73A9, + 15606: 0x7413, + 15607: 0x742C, + 15608: 0x7897, + 15609: 0x7DE9, + 15610: 0x7FEB, + 15611: 0x8118, + 15612: 0x8155, + 15613: 0x839E, + 15614: 0x8C4C, + 15615: 0x962E, + 15616: 0x9811, + 15617: 0x66F0, + 15618: 0x5F80, + 15619: 0x65FA, + 15620: 0x6789, + 15621: 0x6C6A, + 15622: 0x738B, + 15623: 0x502D, + 15624: 0x5A03, + 15625: 0x6B6A, + 15626: 0x77EE, + 15627: 0x5916, + 15628: 0x5D6C, + 15629: 0x5DCD, + 15630: 0x7325, + 15631: 0x754F, + 15632: 0xF9BA, + 15633: 0xF9BB, + 15634: 0x50E5, + 15635: 0x51F9, + 15636: 0x582F, + 15637: 0x592D, + 15638: 0x5996, + 15639: 0x59DA, + 15640: 0x5BE5, + 15641: 0xF9BC, + 15642: 0xF9BD, + 15643: 0x5DA2, + 15644: 0x62D7, + 15645: 0x6416, + 15646: 0x6493, + 15647: 0x64FE, + 15648: 0xF9BE, + 15649: 0x66DC, + 15650: 0xF9BF, + 15651: 0x6A48, + 15652: 0xF9C0, + 15653: 0x71FF, + 15654: 0x7464, + 15655: 0xF9C1, + 15656: 0x7A88, + 15657: 0x7AAF, + 15658: 0x7E47, + 15659: 0x7E5E, + 15660: 0x8000, + 15661: 0x8170, + 15662: 0xF9C2, + 15663: 0x87EF, + 15664: 0x8981, + 15665: 0x8B20, + 15666: 0x9059, + 15667: 0xF9C3, + 15668: 0x9080, + 15669: 0x9952, + 15670: 0x617E, + 15671: 0x6B32, + 15672: 0x6D74, + 15673: 0x7E1F, + 15674: 0x8925, + 15675: 0x8FB1, + 15676: 0x4FD1, + 15677: 0x50AD, + 15678: 0x5197, + 15679: 0x52C7, + 15680: 0x57C7, + 15681: 0x5889, + 15682: 0x5BB9, + 15683: 0x5EB8, + 15684: 0x6142, + 15685: 0x6995, + 15686: 0x6D8C, + 15687: 0x6E67, + 15688: 0x6EB6, + 15689: 0x7194, + 15690: 0x7462, + 15691: 0x7528, + 15692: 0x752C, + 15693: 0x8073, + 15694: 0x8338, + 15695: 0x84C9, + 15696: 0x8E0A, + 15697: 0x9394, + 15698: 0x93DE, + 15699: 0xF9C4, + 15700: 0x4E8E, + 15701: 0x4F51, + 15702: 0x5076, + 15703: 0x512A, + 15704: 0x53C8, + 15705: 0x53CB, + 15706: 0x53F3, + 15707: 0x5B87, + 15708: 0x5BD3, + 15709: 0x5C24, + 15710: 0x611A, + 15711: 0x6182, + 15712: 0x65F4, + 15713: 0x725B, + 15714: 0x7397, + 15715: 0x7440, + 15716: 0x76C2, + 15717: 0x7950, + 15718: 0x7991, + 15719: 0x79B9, + 15720: 0x7D06, + 15721: 0x7FBD, + 15722: 0x828B, + 15723: 0x85D5, + 15724: 0x865E, + 15725: 0x8FC2, + 15726: 0x9047, + 15727: 0x90F5, + 15728: 0x91EA, + 15729: 0x9685, + 15730: 0x96E8, + 15731: 0x96E9, + 15732: 0x52D6, + 15733: 0x5F67, + 15734: 0x65ED, + 15735: 0x6631, + 15736: 0x682F, + 15737: 0x715C, + 15738: 0x7A36, + 15739: 0x90C1, + 15740: 0x980A, + 15741: 0x4E91, + 15742: 0xF9C5, + 15743: 0x6A52, + 15744: 0x6B9E, + 15745: 0x6F90, + 15746: 0x7189, + 15747: 0x8018, + 15748: 0x82B8, + 15749: 0x8553, + 15750: 0x904B, + 15751: 0x9695, + 15752: 0x96F2, + 15753: 0x97FB, + 15754: 0x851A, + 15755: 0x9B31, + 15756: 0x4E90, + 15757: 0x718A, + 15758: 0x96C4, + 15759: 0x5143, + 15760: 0x539F, + 15761: 0x54E1, + 15762: 0x5713, + 15763: 0x5712, + 15764: 0x57A3, + 15765: 0x5A9B, + 15766: 0x5AC4, + 15767: 0x5BC3, + 15768: 0x6028, + 15769: 0x613F, + 15770: 0x63F4, + 15771: 0x6C85, + 15772: 0x6D39, + 15773: 0x6E72, + 15774: 0x6E90, + 15775: 0x7230, + 15776: 0x733F, + 15777: 0x7457, + 15778: 0x82D1, + 15779: 0x8881, + 15780: 0x8F45, + 15781: 0x9060, + 15782: 0xF9C6, + 15783: 0x9662, + 15784: 0x9858, + 15785: 0x9D1B, + 15786: 0x6708, + 15787: 0x8D8A, + 15788: 0x925E, + 15789: 0x4F4D, + 15790: 0x5049, + 15791: 0x50DE, + 15792: 0x5371, + 15793: 0x570D, + 15794: 0x59D4, + 15795: 0x5A01, + 15796: 0x5C09, + 15797: 0x6170, + 15798: 0x6690, + 15799: 0x6E2D, + 15800: 0x7232, + 15801: 0x744B, + 15802: 0x7DEF, + 15803: 0x80C3, + 15804: 0x840E, + 15805: 0x8466, + 15806: 0x853F, + 15807: 0x875F, + 15808: 0x885B, + 15809: 0x8918, + 15810: 0x8B02, + 15811: 0x9055, + 15812: 0x97CB, + 15813: 0x9B4F, + 15814: 0x4E73, + 15815: 0x4F91, + 15816: 0x5112, + 15817: 0x516A, + 15818: 0xF9C7, + 15819: 0x552F, + 15820: 0x55A9, + 15821: 0x5B7A, + 15822: 0x5BA5, + 15823: 0x5E7C, + 15824: 0x5E7D, + 15825: 0x5EBE, + 15826: 0x60A0, + 15827: 0x60DF, + 15828: 0x6108, + 15829: 0x6109, + 15830: 0x63C4, + 15831: 0x6538, + 15832: 0x6709, + 15833: 0xF9C8, + 15834: 0x67D4, + 15835: 0x67DA, + 15836: 0xF9C9, + 15837: 0x6961, + 15838: 0x6962, + 15839: 0x6CB9, + 15840: 0x6D27, + 15841: 0xF9CA, + 15842: 0x6E38, + 15843: 0xF9CB, + 15844: 0x6FE1, + 15845: 0x7336, + 15846: 0x7337, + 15847: 0xF9CC, + 15848: 0x745C, + 15849: 0x7531, + 15850: 0xF9CD, + 15851: 0x7652, + 15852: 0xF9CE, + 15853: 0xF9CF, + 15854: 0x7DAD, + 15855: 0x81FE, + 15856: 0x8438, + 15857: 0x88D5, + 15858: 0x8A98, + 15859: 0x8ADB, + 15860: 0x8AED, + 15861: 0x8E30, + 15862: 0x8E42, + 15863: 0x904A, + 15864: 0x903E, + 15865: 0x907A, + 15866: 0x9149, + 15867: 0x91C9, + 15868: 0x936E, + 15869: 0xF9D0, + 15870: 0xF9D1, + 15871: 0x5809, + 15872: 0xF9D2, + 15873: 0x6BD3, + 15874: 0x8089, + 15875: 0x80B2, + 15876: 0xF9D3, + 15877: 0xF9D4, + 15878: 0x5141, + 15879: 0x596B, + 15880: 0x5C39, + 15881: 0xF9D5, + 15882: 0xF9D6, + 15883: 0x6F64, + 15884: 0x73A7, + 15885: 0x80E4, + 15886: 0x8D07, + 15887: 0xF9D7, + 15888: 0x9217, + 15889: 0x958F, + 15890: 0xF9D8, + 15891: 0xF9D9, + 15892: 0xF9DA, + 15893: 0xF9DB, + 15894: 0x807F, + 15895: 0x620E, + 15896: 0x701C, + 15897: 0x7D68, + 15898: 0x878D, + 15899: 0xF9DC, + 15900: 0x57A0, + 15901: 0x6069, + 15902: 0x6147, + 15903: 0x6BB7, + 15904: 0x8ABE, + 15905: 0x9280, + 15906: 0x96B1, + 15907: 0x4E59, + 15908: 0x541F, + 15909: 0x6DEB, + 15910: 0x852D, + 15911: 0x9670, + 15912: 0x97F3, + 15913: 0x98EE, + 15914: 0x63D6, + 15915: 0x6CE3, + 15916: 0x9091, + 15917: 0x51DD, + 15918: 0x61C9, + 15919: 0x81BA, + 15920: 0x9DF9, + 15921: 0x4F9D, + 15922: 0x501A, + 15923: 0x5100, + 15924: 0x5B9C, + 15925: 0x610F, + 15926: 0x61FF, + 15927: 0x64EC, + 15928: 0x6905, + 15929: 0x6BC5, + 15930: 0x7591, + 15931: 0x77E3, + 15932: 0x7FA9, + 15933: 0x8264, + 15934: 0x858F, + 15935: 0x87FB, + 15936: 0x8863, + 15937: 0x8ABC, + 15938: 0x8B70, + 15939: 0x91AB, + 15940: 0x4E8C, + 15941: 0x4EE5, + 15942: 0x4F0A, + 15943: 0xF9DD, + 15944: 0xF9DE, + 15945: 0x5937, + 15946: 0x59E8, + 15947: 0xF9DF, + 15948: 0x5DF2, + 15949: 0x5F1B, + 15950: 0x5F5B, + 15951: 0x6021, + 15952: 0xF9E0, + 15953: 0xF9E1, + 15954: 0xF9E2, + 15955: 0xF9E3, + 15956: 0x723E, + 15957: 0x73E5, + 15958: 0xF9E4, + 15959: 0x7570, + 15960: 0x75CD, + 15961: 0xF9E5, + 15962: 0x79FB, + 15963: 0xF9E6, + 15964: 0x800C, + 15965: 0x8033, + 15966: 0x8084, + 15967: 0x82E1, + 15968: 0x8351, + 15969: 0xF9E7, + 15970: 0xF9E8, + 15971: 0x8CBD, + 15972: 0x8CB3, + 15973: 0x9087, + 15974: 0xF9E9, + 15975: 0xF9EA, + 15976: 0x98F4, + 15977: 0x990C, + 15978: 0xF9EB, + 15979: 0xF9EC, + 15980: 0x7037, + 15981: 0x76CA, + 15982: 0x7FCA, + 15983: 0x7FCC, + 15984: 0x7FFC, + 15985: 0x8B1A, + 15986: 0x4EBA, + 15987: 0x4EC1, + 15988: 0x5203, + 15989: 0x5370, + 15990: 0xF9ED, + 15991: 0x54BD, + 15992: 0x56E0, + 15993: 0x59FB, + 15994: 0x5BC5, + 15995: 0x5F15, + 15996: 0x5FCD, + 15997: 0x6E6E, + 15998: 0xF9EE, + 15999: 0xF9EF, + 16000: 0x7D6A, + 16001: 0x8335, + 16002: 0xF9F0, + 16003: 0x8693, + 16004: 0x8A8D, + 16005: 0xF9F1, + 16006: 0x976D, + 16007: 0x9777, + 16008: 0xF9F2, + 16009: 0xF9F3, + 16010: 0x4E00, + 16011: 0x4F5A, + 16012: 0x4F7E, + 16013: 0x58F9, + 16014: 0x65E5, + 16015: 0x6EA2, + 16016: 0x9038, + 16017: 0x93B0, + 16018: 0x99B9, + 16019: 0x4EFB, + 16020: 0x58EC, + 16021: 0x598A, + 16022: 0x59D9, + 16023: 0x6041, + 16024: 0xF9F4, + 16025: 0xF9F5, + 16026: 0x7A14, + 16027: 0xF9F6, + 16028: 0x834F, + 16029: 0x8CC3, + 16030: 0x5165, + 16031: 0x5344, + 16032: 0xF9F7, + 16033: 0xF9F8, + 16034: 0xF9F9, + 16035: 0x4ECD, + 16036: 0x5269, + 16037: 0x5B55, + 16038: 0x82BF, + 16039: 0x4ED4, + 16040: 0x523A, + 16041: 0x54A8, + 16042: 0x59C9, + 16043: 0x59FF, + 16044: 0x5B50, + 16045: 0x5B57, + 16046: 0x5B5C, + 16047: 0x6063, + 16048: 0x6148, + 16049: 0x6ECB, + 16050: 0x7099, + 16051: 0x716E, + 16052: 0x7386, + 16053: 0x74F7, + 16054: 0x75B5, + 16055: 0x78C1, + 16056: 0x7D2B, + 16057: 0x8005, + 16058: 0x81EA, + 16059: 0x8328, + 16060: 0x8517, + 16061: 0x85C9, + 16062: 0x8AEE, + 16063: 0x8CC7, + 16064: 0x96CC, + 16065: 0x4F5C, + 16066: 0x52FA, + 16067: 0x56BC, + 16068: 0x65AB, + 16069: 0x6628, + 16070: 0x707C, + 16071: 0x70B8, + 16072: 0x7235, + 16073: 0x7DBD, + 16074: 0x828D, + 16075: 0x914C, + 16076: 0x96C0, + 16077: 0x9D72, + 16078: 0x5B71, + 16079: 0x68E7, + 16080: 0x6B98, + 16081: 0x6F7A, + 16082: 0x76DE, + 16083: 0x5C91, + 16084: 0x66AB, + 16085: 0x6F5B, + 16086: 0x7BB4, + 16087: 0x7C2A, + 16088: 0x8836, + 16089: 0x96DC, + 16090: 0x4E08, + 16091: 0x4ED7, + 16092: 0x5320, + 16093: 0x5834, + 16094: 0x58BB, + 16095: 0x58EF, + 16096: 0x596C, + 16097: 0x5C07, + 16098: 0x5E33, + 16099: 0x5E84, + 16100: 0x5F35, + 16101: 0x638C, + 16102: 0x66B2, + 16103: 0x6756, + 16104: 0x6A1F, + 16105: 0x6AA3, + 16106: 0x6B0C, + 16107: 0x6F3F, + 16108: 0x7246, + 16109: 0xF9FA, + 16110: 0x7350, + 16111: 0x748B, + 16112: 0x7AE0, + 16113: 0x7CA7, + 16114: 0x8178, + 16115: 0x81DF, + 16116: 0x81E7, + 16117: 0x838A, + 16118: 0x846C, + 16119: 0x8523, + 16120: 0x8594, + 16121: 0x85CF, + 16122: 0x88DD, + 16123: 0x8D13, + 16124: 0x91AC, + 16125: 0x9577, + 16126: 0x969C, + 16127: 0x518D, + 16128: 0x54C9, + 16129: 0x5728, + 16130: 0x5BB0, + 16131: 0x624D, + 16132: 0x6750, + 16133: 0x683D, + 16134: 0x6893, + 16135: 0x6E3D, + 16136: 0x6ED3, + 16137: 0x707D, + 16138: 0x7E21, + 16139: 0x88C1, + 16140: 0x8CA1, + 16141: 0x8F09, + 16142: 0x9F4B, + 16143: 0x9F4E, + 16144: 0x722D, + 16145: 0x7B8F, + 16146: 0x8ACD, + 16147: 0x931A, + 16148: 0x4F47, + 16149: 0x4F4E, + 16150: 0x5132, + 16151: 0x5480, + 16152: 0x59D0, + 16153: 0x5E95, + 16154: 0x62B5, + 16155: 0x6775, + 16156: 0x696E, + 16157: 0x6A17, + 16158: 0x6CAE, + 16159: 0x6E1A, + 16160: 0x72D9, + 16161: 0x732A, + 16162: 0x75BD, + 16163: 0x7BB8, + 16164: 0x7D35, + 16165: 0x82E7, + 16166: 0x83F9, + 16167: 0x8457, + 16168: 0x85F7, + 16169: 0x8A5B, + 16170: 0x8CAF, + 16171: 0x8E87, + 16172: 0x9019, + 16173: 0x90B8, + 16174: 0x96CE, + 16175: 0x9F5F, + 16176: 0x52E3, + 16177: 0x540A, + 16178: 0x5AE1, + 16179: 0x5BC2, + 16180: 0x6458, + 16181: 0x6575, + 16182: 0x6EF4, + 16183: 0x72C4, + 16184: 0xF9FB, + 16185: 0x7684, + 16186: 0x7A4D, + 16187: 0x7B1B, + 16188: 0x7C4D, + 16189: 0x7E3E, + 16190: 0x7FDF, + 16191: 0x837B, + 16192: 0x8B2B, + 16193: 0x8CCA, + 16194: 0x8D64, + 16195: 0x8DE1, + 16196: 0x8E5F, + 16197: 0x8FEA, + 16198: 0x8FF9, + 16199: 0x9069, + 16200: 0x93D1, + 16201: 0x4F43, + 16202: 0x4F7A, + 16203: 0x50B3, + 16204: 0x5168, + 16205: 0x5178, + 16206: 0x524D, + 16207: 0x526A, + 16208: 0x5861, + 16209: 0x587C, + 16210: 0x5960, + 16211: 0x5C08, + 16212: 0x5C55, + 16213: 0x5EDB, + 16214: 0x609B, + 16215: 0x6230, + 16216: 0x6813, + 16217: 0x6BBF, + 16218: 0x6C08, + 16219: 0x6FB1, + 16220: 0x714E, + 16221: 0x7420, + 16222: 0x7530, + 16223: 0x7538, + 16224: 0x7551, + 16225: 0x7672, + 16226: 0x7B4C, + 16227: 0x7B8B, + 16228: 0x7BAD, + 16229: 0x7BC6, + 16230: 0x7E8F, + 16231: 0x8A6E, + 16232: 0x8F3E, + 16233: 0x8F49, + 16234: 0x923F, + 16235: 0x9293, + 16236: 0x9322, + 16237: 0x942B, + 16238: 0x96FB, + 16239: 0x985A, + 16240: 0x986B, + 16241: 0x991E, + 16242: 0x5207, + 16243: 0x622A, + 16244: 0x6298, + 16245: 0x6D59, + 16246: 0x7664, + 16247: 0x7ACA, + 16248: 0x7BC0, + 16249: 0x7D76, + 16250: 0x5360, + 16251: 0x5CBE, + 16252: 0x5E97, + 16253: 0x6F38, + 16254: 0x70B9, + 16255: 0x7C98, + 16256: 0x9711, + 16257: 0x9B8E, + 16258: 0x9EDE, + 16259: 0x63A5, + 16260: 0x647A, + 16261: 0x8776, + 16262: 0x4E01, + 16263: 0x4E95, + 16264: 0x4EAD, + 16265: 0x505C, + 16266: 0x5075, + 16267: 0x5448, + 16268: 0x59C3, + 16269: 0x5B9A, + 16270: 0x5E40, + 16271: 0x5EAD, + 16272: 0x5EF7, + 16273: 0x5F81, + 16274: 0x60C5, + 16275: 0x633A, + 16276: 0x653F, + 16277: 0x6574, + 16278: 0x65CC, + 16279: 0x6676, + 16280: 0x6678, + 16281: 0x67FE, + 16282: 0x6968, + 16283: 0x6A89, + 16284: 0x6B63, + 16285: 0x6C40, + 16286: 0x6DC0, + 16287: 0x6DE8, + 16288: 0x6E1F, + 16289: 0x6E5E, + 16290: 0x701E, + 16291: 0x70A1, + 16292: 0x738E, + 16293: 0x73FD, + 16294: 0x753A, + 16295: 0x775B, + 16296: 0x7887, + 16297: 0x798E, + 16298: 0x7A0B, + 16299: 0x7A7D, + 16300: 0x7CBE, + 16301: 0x7D8E, + 16302: 0x8247, + 16303: 0x8A02, + 16304: 0x8AEA, + 16305: 0x8C9E, + 16306: 0x912D, + 16307: 0x914A, + 16308: 0x91D8, + 16309: 0x9266, + 16310: 0x92CC, + 16311: 0x9320, + 16312: 0x9706, + 16313: 0x9756, + 16314: 0x975C, + 16315: 0x9802, + 16316: 0x9F0E, + 16317: 0x5236, + 16318: 0x5291, + 16319: 0x557C, + 16320: 0x5824, + 16321: 0x5E1D, + 16322: 0x5F1F, + 16323: 0x608C, + 16324: 0x63D0, + 16325: 0x68AF, + 16326: 0x6FDF, + 16327: 0x796D, + 16328: 0x7B2C, + 16329: 0x81CD, + 16330: 0x85BA, + 16331: 0x88FD, + 16332: 0x8AF8, + 16333: 0x8E44, + 16334: 0x918D, + 16335: 0x9664, + 16336: 0x969B, + 16337: 0x973D, + 16338: 0x984C, + 16339: 0x9F4A, + 16340: 0x4FCE, + 16341: 0x5146, + 16342: 0x51CB, + 16343: 0x52A9, + 16344: 0x5632, + 16345: 0x5F14, + 16346: 0x5F6B, + 16347: 0x63AA, + 16348: 0x64CD, + 16349: 0x65E9, + 16350: 0x6641, + 16351: 0x66FA, + 16352: 0x66F9, + 16353: 0x671D, + 16354: 0x689D, + 16355: 0x68D7, + 16356: 0x69FD, + 16357: 0x6F15, + 16358: 0x6F6E, + 16359: 0x7167, + 16360: 0x71E5, + 16361: 0x722A, + 16362: 0x74AA, + 16363: 0x773A, + 16364: 0x7956, + 16365: 0x795A, + 16366: 0x79DF, + 16367: 0x7A20, + 16368: 0x7A95, + 16369: 0x7C97, + 16370: 0x7CDF, + 16371: 0x7D44, + 16372: 0x7E70, + 16373: 0x8087, + 16374: 0x85FB, + 16375: 0x86A4, + 16376: 0x8A54, + 16377: 0x8ABF, + 16378: 0x8D99, + 16379: 0x8E81, + 16380: 0x9020, + 16381: 0x906D, + 16382: 0x91E3, + 16383: 0x963B, + 16384: 0x96D5, + 16385: 0x9CE5, + 16386: 0x65CF, + 16387: 0x7C07, + 16388: 0x8DB3, + 16389: 0x93C3, + 16390: 0x5B58, + 16391: 0x5C0A, + 16392: 0x5352, + 16393: 0x62D9, + 16394: 0x731D, + 16395: 0x5027, + 16396: 0x5B97, + 16397: 0x5F9E, + 16398: 0x60B0, + 16399: 0x616B, + 16400: 0x68D5, + 16401: 0x6DD9, + 16402: 0x742E, + 16403: 0x7A2E, + 16404: 0x7D42, + 16405: 0x7D9C, + 16406: 0x7E31, + 16407: 0x816B, + 16408: 0x8E2A, + 16409: 0x8E35, + 16410: 0x937E, + 16411: 0x9418, + 16412: 0x4F50, + 16413: 0x5750, + 16414: 0x5DE6, + 16415: 0x5EA7, + 16416: 0x632B, + 16417: 0x7F6A, + 16418: 0x4E3B, + 16419: 0x4F4F, + 16420: 0x4F8F, + 16421: 0x505A, + 16422: 0x59DD, + 16423: 0x80C4, + 16424: 0x546A, + 16425: 0x5468, + 16426: 0x55FE, + 16427: 0x594F, + 16428: 0x5B99, + 16429: 0x5DDE, + 16430: 0x5EDA, + 16431: 0x665D, + 16432: 0x6731, + 16433: 0x67F1, + 16434: 0x682A, + 16435: 0x6CE8, + 16436: 0x6D32, + 16437: 0x6E4A, + 16438: 0x6F8D, + 16439: 0x70B7, + 16440: 0x73E0, + 16441: 0x7587, + 16442: 0x7C4C, + 16443: 0x7D02, + 16444: 0x7D2C, + 16445: 0x7DA2, + 16446: 0x821F, + 16447: 0x86DB, + 16448: 0x8A3B, + 16449: 0x8A85, + 16450: 0x8D70, + 16451: 0x8E8A, + 16452: 0x8F33, + 16453: 0x9031, + 16454: 0x914E, + 16455: 0x9152, + 16456: 0x9444, + 16457: 0x99D0, + 16458: 0x7AF9, + 16459: 0x7CA5, + 16460: 0x4FCA, + 16461: 0x5101, + 16462: 0x51C6, + 16463: 0x57C8, + 16464: 0x5BEF, + 16465: 0x5CFB, + 16466: 0x6659, + 16467: 0x6A3D, + 16468: 0x6D5A, + 16469: 0x6E96, + 16470: 0x6FEC, + 16471: 0x710C, + 16472: 0x756F, + 16473: 0x7AE3, + 16474: 0x8822, + 16475: 0x9021, + 16476: 0x9075, + 16477: 0x96CB, + 16478: 0x99FF, + 16479: 0x8301, + 16480: 0x4E2D, + 16481: 0x4EF2, + 16482: 0x8846, + 16483: 0x91CD, + 16484: 0x537D, + 16485: 0x6ADB, + 16486: 0x696B, + 16487: 0x6C41, + 16488: 0x847A, + 16489: 0x589E, + 16490: 0x618E, + 16491: 0x66FE, + 16492: 0x62EF, + 16493: 0x70DD, + 16494: 0x7511, + 16495: 0x75C7, + 16496: 0x7E52, + 16497: 0x84B8, + 16498: 0x8B49, + 16499: 0x8D08, + 16500: 0x4E4B, + 16501: 0x53EA, + 16502: 0x54AB, + 16503: 0x5730, + 16504: 0x5740, + 16505: 0x5FD7, + 16506: 0x6301, + 16507: 0x6307, + 16508: 0x646F, + 16509: 0x652F, + 16510: 0x65E8, + 16511: 0x667A, + 16512: 0x679D, + 16513: 0x67B3, + 16514: 0x6B62, + 16515: 0x6C60, + 16516: 0x6C9A, + 16517: 0x6F2C, + 16518: 0x77E5, + 16519: 0x7825, + 16520: 0x7949, + 16521: 0x7957, + 16522: 0x7D19, + 16523: 0x80A2, + 16524: 0x8102, + 16525: 0x81F3, + 16526: 0x829D, + 16527: 0x82B7, + 16528: 0x8718, + 16529: 0x8A8C, + 16530: 0xF9FC, + 16531: 0x8D04, + 16532: 0x8DBE, + 16533: 0x9072, + 16534: 0x76F4, + 16535: 0x7A19, + 16536: 0x7A37, + 16537: 0x7E54, + 16538: 0x8077, + 16539: 0x5507, + 16540: 0x55D4, + 16541: 0x5875, + 16542: 0x632F, + 16543: 0x6422, + 16544: 0x6649, + 16545: 0x664B, + 16546: 0x686D, + 16547: 0x699B, + 16548: 0x6B84, + 16549: 0x6D25, + 16550: 0x6EB1, + 16551: 0x73CD, + 16552: 0x7468, + 16553: 0x74A1, + 16554: 0x755B, + 16555: 0x75B9, + 16556: 0x76E1, + 16557: 0x771E, + 16558: 0x778B, + 16559: 0x79E6, + 16560: 0x7E09, + 16561: 0x7E1D, + 16562: 0x81FB, + 16563: 0x852F, + 16564: 0x8897, + 16565: 0x8A3A, + 16566: 0x8CD1, + 16567: 0x8EEB, + 16568: 0x8FB0, + 16569: 0x9032, + 16570: 0x93AD, + 16571: 0x9663, + 16572: 0x9673, + 16573: 0x9707, + 16574: 0x4F84, + 16575: 0x53F1, + 16576: 0x59EA, + 16577: 0x5AC9, + 16578: 0x5E19, + 16579: 0x684E, + 16580: 0x74C6, + 16581: 0x75BE, + 16582: 0x79E9, + 16583: 0x7A92, + 16584: 0x81A3, + 16585: 0x86ED, + 16586: 0x8CEA, + 16587: 0x8DCC, + 16588: 0x8FED, + 16589: 0x659F, + 16590: 0x6715, + 16591: 0xF9FD, + 16592: 0x57F7, + 16593: 0x6F57, + 16594: 0x7DDD, + 16595: 0x8F2F, + 16596: 0x93F6, + 16597: 0x96C6, + 16598: 0x5FB5, + 16599: 0x61F2, + 16600: 0x6F84, + 16601: 0x4E14, + 16602: 0x4F98, + 16603: 0x501F, + 16604: 0x53C9, + 16605: 0x55DF, + 16606: 0x5D6F, + 16607: 0x5DEE, + 16608: 0x6B21, + 16609: 0x6B64, + 16610: 0x78CB, + 16611: 0x7B9A, + 16612: 0xF9FE, + 16613: 0x8E49, + 16614: 0x8ECA, + 16615: 0x906E, + 16616: 0x6349, + 16617: 0x643E, + 16618: 0x7740, + 16619: 0x7A84, + 16620: 0x932F, + 16621: 0x947F, + 16622: 0x9F6A, + 16623: 0x64B0, + 16624: 0x6FAF, + 16625: 0x71E6, + 16626: 0x74A8, + 16627: 0x74DA, + 16628: 0x7AC4, + 16629: 0x7C12, + 16630: 0x7E82, + 16631: 0x7CB2, + 16632: 0x7E98, + 16633: 0x8B9A, + 16634: 0x8D0A, + 16635: 0x947D, + 16636: 0x9910, + 16637: 0x994C, + 16638: 0x5239, + 16639: 0x5BDF, + 16640: 0x64E6, + 16641: 0x672D, + 16642: 0x7D2E, + 16643: 0x50ED, + 16644: 0x53C3, + 16645: 0x5879, + 16646: 0x6158, + 16647: 0x6159, + 16648: 0x61FA, + 16649: 0x65AC, + 16650: 0x7AD9, + 16651: 0x8B92, + 16652: 0x8B96, + 16653: 0x5009, + 16654: 0x5021, + 16655: 0x5275, + 16656: 0x5531, + 16657: 0x5A3C, + 16658: 0x5EE0, + 16659: 0x5F70, + 16660: 0x6134, + 16661: 0x655E, + 16662: 0x660C, + 16663: 0x6636, + 16664: 0x66A2, + 16665: 0x69CD, + 16666: 0x6EC4, + 16667: 0x6F32, + 16668: 0x7316, + 16669: 0x7621, + 16670: 0x7A93, + 16671: 0x8139, + 16672: 0x8259, + 16673: 0x83D6, + 16674: 0x84BC, + 16675: 0x50B5, + 16676: 0x57F0, + 16677: 0x5BC0, + 16678: 0x5BE8, + 16679: 0x5F69, + 16680: 0x63A1, + 16681: 0x7826, + 16682: 0x7DB5, + 16683: 0x83DC, + 16684: 0x8521, + 16685: 0x91C7, + 16686: 0x91F5, + 16687: 0x518A, + 16688: 0x67F5, + 16689: 0x7B56, + 16690: 0x8CAC, + 16691: 0x51C4, + 16692: 0x59BB, + 16693: 0x60BD, + 16694: 0x8655, + 16695: 0x501C, + 16696: 0xF9FF, + 16697: 0x5254, + 16698: 0x5C3A, + 16699: 0x617D, + 16700: 0x621A, + 16701: 0x62D3, + 16702: 0x64F2, + 16703: 0x65A5, + 16704: 0x6ECC, + 16705: 0x7620, + 16706: 0x810A, + 16707: 0x8E60, + 16708: 0x965F, + 16709: 0x96BB, + 16710: 0x4EDF, + 16711: 0x5343, + 16712: 0x5598, + 16713: 0x5929, + 16714: 0x5DDD, + 16715: 0x64C5, + 16716: 0x6CC9, + 16717: 0x6DFA, + 16718: 0x7394, + 16719: 0x7A7F, + 16720: 0x821B, + 16721: 0x85A6, + 16722: 0x8CE4, + 16723: 0x8E10, + 16724: 0x9077, + 16725: 0x91E7, + 16726: 0x95E1, + 16727: 0x9621, + 16728: 0x97C6, + 16729: 0x51F8, + 16730: 0x54F2, + 16731: 0x5586, + 16732: 0x5FB9, + 16733: 0x64A4, + 16734: 0x6F88, + 16735: 0x7DB4, + 16736: 0x8F1F, + 16737: 0x8F4D, + 16738: 0x9435, + 16739: 0x50C9, + 16740: 0x5C16, + 16741: 0x6CBE, + 16742: 0x6DFB, + 16743: 0x751B, + 16744: 0x77BB, + 16745: 0x7C3D, + 16746: 0x7C64, + 16747: 0x8A79, + 16748: 0x8AC2, + 16749: 0x581E, + 16750: 0x59BE, + 16751: 0x5E16, + 16752: 0x6377, + 16753: 0x7252, + 16754: 0x758A, + 16755: 0x776B, + 16756: 0x8ADC, + 16757: 0x8CBC, + 16758: 0x8F12, + 16759: 0x5EF3, + 16760: 0x6674, + 16761: 0x6DF8, + 16762: 0x807D, + 16763: 0x83C1, + 16764: 0x8ACB, + 16765: 0x9751, + 16766: 0x9BD6, + 16767: 0xFA00, + 16768: 0x5243, + 16769: 0x66FF, + 16770: 0x6D95, + 16771: 0x6EEF, + 16772: 0x7DE0, + 16773: 0x8AE6, + 16774: 0x902E, + 16775: 0x905E, + 16776: 0x9AD4, + 16777: 0x521D, + 16778: 0x527F, + 16779: 0x54E8, + 16780: 0x6194, + 16781: 0x6284, + 16782: 0x62DB, + 16783: 0x68A2, + 16784: 0x6912, + 16785: 0x695A, + 16786: 0x6A35, + 16787: 0x7092, + 16788: 0x7126, + 16789: 0x785D, + 16790: 0x7901, + 16791: 0x790E, + 16792: 0x79D2, + 16793: 0x7A0D, + 16794: 0x8096, + 16795: 0x8278, + 16796: 0x82D5, + 16797: 0x8349, + 16798: 0x8549, + 16799: 0x8C82, + 16800: 0x8D85, + 16801: 0x9162, + 16802: 0x918B, + 16803: 0x91AE, + 16804: 0x4FC3, + 16805: 0x56D1, + 16806: 0x71ED, + 16807: 0x77D7, + 16808: 0x8700, + 16809: 0x89F8, + 16810: 0x5BF8, + 16811: 0x5FD6, + 16812: 0x6751, + 16813: 0x90A8, + 16814: 0x53E2, + 16815: 0x585A, + 16816: 0x5BF5, + 16817: 0x60A4, + 16818: 0x6181, + 16819: 0x6460, + 16820: 0x7E3D, + 16821: 0x8070, + 16822: 0x8525, + 16823: 0x9283, + 16824: 0x64AE, + 16825: 0x50AC, + 16826: 0x5D14, + 16827: 0x6700, + 16828: 0x589C, + 16829: 0x62BD, + 16830: 0x63A8, + 16831: 0x690E, + 16832: 0x6978, + 16833: 0x6A1E, + 16834: 0x6E6B, + 16835: 0x76BA, + 16836: 0x79CB, + 16837: 0x82BB, + 16838: 0x8429, + 16839: 0x8ACF, + 16840: 0x8DA8, + 16841: 0x8FFD, + 16842: 0x9112, + 16843: 0x914B, + 16844: 0x919C, + 16845: 0x9310, + 16846: 0x9318, + 16847: 0x939A, + 16848: 0x96DB, + 16849: 0x9A36, + 16850: 0x9C0D, + 16851: 0x4E11, + 16852: 0x755C, + 16853: 0x795D, + 16854: 0x7AFA, + 16855: 0x7B51, + 16856: 0x7BC9, + 16857: 0x7E2E, + 16858: 0x84C4, + 16859: 0x8E59, + 16860: 0x8E74, + 16861: 0x8EF8, + 16862: 0x9010, + 16863: 0x6625, + 16864: 0x693F, + 16865: 0x7443, + 16866: 0x51FA, + 16867: 0x672E, + 16868: 0x9EDC, + 16869: 0x5145, + 16870: 0x5FE0, + 16871: 0x6C96, + 16872: 0x87F2, + 16873: 0x885D, + 16874: 0x8877, + 16875: 0x60B4, + 16876: 0x81B5, + 16877: 0x8403, + 16878: 0x8D05, + 16879: 0x53D6, + 16880: 0x5439, + 16881: 0x5634, + 16882: 0x5A36, + 16883: 0x5C31, + 16884: 0x708A, + 16885: 0x7FE0, + 16886: 0x805A, + 16887: 0x8106, + 16888: 0x81ED, + 16889: 0x8DA3, + 16890: 0x9189, + 16891: 0x9A5F, + 16892: 0x9DF2, + 16893: 0x5074, + 16894: 0x4EC4, + 16895: 0x53A0, + 16896: 0x60FB, + 16897: 0x6E2C, + 16898: 0x5C64, + 16899: 0x4F88, + 16900: 0x5024, + 16901: 0x55E4, + 16902: 0x5CD9, + 16903: 0x5E5F, + 16904: 0x6065, + 16905: 0x6894, + 16906: 0x6CBB, + 16907: 0x6DC4, + 16908: 0x71BE, + 16909: 0x75D4, + 16910: 0x75F4, + 16911: 0x7661, + 16912: 0x7A1A, + 16913: 0x7A49, + 16914: 0x7DC7, + 16915: 0x7DFB, + 16916: 0x7F6E, + 16917: 0x81F4, + 16918: 0x86A9, + 16919: 0x8F1C, + 16920: 0x96C9, + 16921: 0x99B3, + 16922: 0x9F52, + 16923: 0x5247, + 16924: 0x52C5, + 16925: 0x98ED, + 16926: 0x89AA, + 16927: 0x4E03, + 16928: 0x67D2, + 16929: 0x6F06, + 16930: 0x4FB5, + 16931: 0x5BE2, + 16932: 0x6795, + 16933: 0x6C88, + 16934: 0x6D78, + 16935: 0x741B, + 16936: 0x7827, + 16937: 0x91DD, + 16938: 0x937C, + 16939: 0x87C4, + 16940: 0x79E4, + 16941: 0x7A31, + 16942: 0x5FEB, + 16943: 0x4ED6, + 16944: 0x54A4, + 16945: 0x553E, + 16946: 0x58AE, + 16947: 0x59A5, + 16948: 0x60F0, + 16949: 0x6253, + 16950: 0x62D6, + 16951: 0x6736, + 16952: 0x6955, + 16953: 0x8235, + 16954: 0x9640, + 16955: 0x99B1, + 16956: 0x99DD, + 16957: 0x502C, + 16958: 0x5353, + 16959: 0x5544, + 16960: 0x577C, + 16961: 0xFA01, + 16962: 0x6258, + 16963: 0xFA02, + 16964: 0x64E2, + 16965: 0x666B, + 16966: 0x67DD, + 16967: 0x6FC1, + 16968: 0x6FEF, + 16969: 0x7422, + 16970: 0x7438, + 16971: 0x8A17, + 16972: 0x9438, + 16973: 0x5451, + 16974: 0x5606, + 16975: 0x5766, + 16976: 0x5F48, + 16977: 0x619A, + 16978: 0x6B4E, + 16979: 0x7058, + 16980: 0x70AD, + 16981: 0x7DBB, + 16982: 0x8A95, + 16983: 0x596A, + 16984: 0x812B, + 16985: 0x63A2, + 16986: 0x7708, + 16987: 0x803D, + 16988: 0x8CAA, + 16989: 0x5854, + 16990: 0x642D, + 16991: 0x69BB, + 16992: 0x5B95, + 16993: 0x5E11, + 16994: 0x6E6F, + 16995: 0xFA03, + 16996: 0x8569, + 16997: 0x514C, + 16998: 0x53F0, + 16999: 0x592A, + 17000: 0x6020, + 17001: 0x614B, + 17002: 0x6B86, + 17003: 0x6C70, + 17004: 0x6CF0, + 17005: 0x7B1E, + 17006: 0x80CE, + 17007: 0x82D4, + 17008: 0x8DC6, + 17009: 0x90B0, + 17010: 0x98B1, + 17011: 0xFA04, + 17012: 0x64C7, + 17013: 0x6FA4, + 17014: 0x6491, + 17015: 0x6504, + 17016: 0x514E, + 17017: 0x5410, + 17018: 0x571F, + 17019: 0x8A0E, + 17020: 0x615F, + 17021: 0x6876, + 17022: 0xFA05, + 17023: 0x75DB, + 17024: 0x7B52, + 17025: 0x7D71, + 17026: 0x901A, + 17027: 0x5806, + 17028: 0x69CC, + 17029: 0x817F, + 17030: 0x892A, + 17031: 0x9000, + 17032: 0x9839, + 17033: 0x5078, + 17034: 0x5957, + 17035: 0x59AC, + 17036: 0x6295, + 17037: 0x900F, + 17038: 0x9B2A, + 17039: 0x615D, + 17040: 0x7279, + 17041: 0x95D6, + 17042: 0x5761, + 17043: 0x5A46, + 17044: 0x5DF4, + 17045: 0x628A, + 17046: 0x64AD, + 17047: 0x64FA, + 17048: 0x6777, + 17049: 0x6CE2, + 17050: 0x6D3E, + 17051: 0x722C, + 17052: 0x7436, + 17053: 0x7834, + 17054: 0x7F77, + 17055: 0x82AD, + 17056: 0x8DDB, + 17057: 0x9817, + 17058: 0x5224, + 17059: 0x5742, + 17060: 0x677F, + 17061: 0x7248, + 17062: 0x74E3, + 17063: 0x8CA9, + 17064: 0x8FA6, + 17065: 0x9211, + 17066: 0x962A, + 17067: 0x516B, + 17068: 0x53ED, + 17069: 0x634C, + 17070: 0x4F69, + 17071: 0x5504, + 17072: 0x6096, + 17073: 0x6557, + 17074: 0x6C9B, + 17075: 0x6D7F, + 17076: 0x724C, + 17077: 0x72FD, + 17078: 0x7A17, + 17079: 0x8987, + 17080: 0x8C9D, + 17081: 0x5F6D, + 17082: 0x6F8E, + 17083: 0x70F9, + 17084: 0x81A8, + 17085: 0x610E, + 17086: 0x4FBF, + 17087: 0x504F, + 17088: 0x6241, + 17089: 0x7247, + 17090: 0x7BC7, + 17091: 0x7DE8, + 17092: 0x7FE9, + 17093: 0x904D, + 17094: 0x97AD, + 17095: 0x9A19, + 17096: 0x8CB6, + 17097: 0x576A, + 17098: 0x5E73, + 17099: 0x67B0, + 17100: 0x840D, + 17101: 0x8A55, + 17102: 0x5420, + 17103: 0x5B16, + 17104: 0x5E63, + 17105: 0x5EE2, + 17106: 0x5F0A, + 17107: 0x6583, + 17108: 0x80BA, + 17109: 0x853D, + 17110: 0x9589, + 17111: 0x965B, + 17112: 0x4F48, + 17113: 0x5305, + 17114: 0x530D, + 17115: 0x530F, + 17116: 0x5486, + 17117: 0x54FA, + 17118: 0x5703, + 17119: 0x5E03, + 17120: 0x6016, + 17121: 0x629B, + 17122: 0x62B1, + 17123: 0x6355, + 17124: 0xFA06, + 17125: 0x6CE1, + 17126: 0x6D66, + 17127: 0x75B1, + 17128: 0x7832, + 17129: 0x80DE, + 17130: 0x812F, + 17131: 0x82DE, + 17132: 0x8461, + 17133: 0x84B2, + 17134: 0x888D, + 17135: 0x8912, + 17136: 0x900B, + 17137: 0x92EA, + 17138: 0x98FD, + 17139: 0x9B91, + 17140: 0x5E45, + 17141: 0x66B4, + 17142: 0x66DD, + 17143: 0x7011, + 17144: 0x7206, + 17145: 0xFA07, + 17146: 0x4FF5, + 17147: 0x527D, + 17148: 0x5F6A, + 17149: 0x6153, + 17150: 0x6753, + 17151: 0x6A19, + 17152: 0x6F02, + 17153: 0x74E2, + 17154: 0x7968, + 17155: 0x8868, + 17156: 0x8C79, + 17157: 0x98C7, + 17158: 0x98C4, + 17159: 0x9A43, + 17160: 0x54C1, + 17161: 0x7A1F, + 17162: 0x6953, + 17163: 0x8AF7, + 17164: 0x8C4A, + 17165: 0x98A8, + 17166: 0x99AE, + 17167: 0x5F7C, + 17168: 0x62AB, + 17169: 0x75B2, + 17170: 0x76AE, + 17171: 0x88AB, + 17172: 0x907F, + 17173: 0x9642, + 17174: 0x5339, + 17175: 0x5F3C, + 17176: 0x5FC5, + 17177: 0x6CCC, + 17178: 0x73CC, + 17179: 0x7562, + 17180: 0x758B, + 17181: 0x7B46, + 17182: 0x82FE, + 17183: 0x999D, + 17184: 0x4E4F, + 17185: 0x903C, + 17186: 0x4E0B, + 17187: 0x4F55, + 17188: 0x53A6, + 17189: 0x590F, + 17190: 0x5EC8, + 17191: 0x6630, + 17192: 0x6CB3, + 17193: 0x7455, + 17194: 0x8377, + 17195: 0x8766, + 17196: 0x8CC0, + 17197: 0x9050, + 17198: 0x971E, + 17199: 0x9C15, + 17200: 0x58D1, + 17201: 0x5B78, + 17202: 0x8650, + 17203: 0x8B14, + 17204: 0x9DB4, + 17205: 0x5BD2, + 17206: 0x6068, + 17207: 0x608D, + 17208: 0x65F1, + 17209: 0x6C57, + 17210: 0x6F22, + 17211: 0x6FA3, + 17212: 0x701A, + 17213: 0x7F55, + 17214: 0x7FF0, + 17215: 0x9591, + 17216: 0x9592, + 17217: 0x9650, + 17218: 0x97D3, + 17219: 0x5272, + 17220: 0x8F44, + 17221: 0x51FD, + 17222: 0x542B, + 17223: 0x54B8, + 17224: 0x5563, + 17225: 0x558A, + 17226: 0x6ABB, + 17227: 0x6DB5, + 17228: 0x7DD8, + 17229: 0x8266, + 17230: 0x929C, + 17231: 0x9677, + 17232: 0x9E79, + 17233: 0x5408, + 17234: 0x54C8, + 17235: 0x76D2, + 17236: 0x86E4, + 17237: 0x95A4, + 17238: 0x95D4, + 17239: 0x965C, + 17240: 0x4EA2, + 17241: 0x4F09, + 17242: 0x59EE, + 17243: 0x5AE6, + 17244: 0x5DF7, + 17245: 0x6052, + 17246: 0x6297, + 17247: 0x676D, + 17248: 0x6841, + 17249: 0x6C86, + 17250: 0x6E2F, + 17251: 0x7F38, + 17252: 0x809B, + 17253: 0x822A, + 17254: 0xFA08, + 17255: 0xFA09, + 17256: 0x9805, + 17257: 0x4EA5, + 17258: 0x5055, + 17259: 0x54B3, + 17260: 0x5793, + 17261: 0x595A, + 17262: 0x5B69, + 17263: 0x5BB3, + 17264: 0x61C8, + 17265: 0x6977, + 17266: 0x6D77, + 17267: 0x7023, + 17268: 0x87F9, + 17269: 0x89E3, + 17270: 0x8A72, + 17271: 0x8AE7, + 17272: 0x9082, + 17273: 0x99ED, + 17274: 0x9AB8, + 17275: 0x52BE, + 17276: 0x6838, + 17277: 0x5016, + 17278: 0x5E78, + 17279: 0x674F, + 17280: 0x8347, + 17281: 0x884C, + 17282: 0x4EAB, + 17283: 0x5411, + 17284: 0x56AE, + 17285: 0x73E6, + 17286: 0x9115, + 17287: 0x97FF, + 17288: 0x9909, + 17289: 0x9957, + 17290: 0x9999, + 17291: 0x5653, + 17292: 0x589F, + 17293: 0x865B, + 17294: 0x8A31, + 17295: 0x61B2, + 17296: 0x6AF6, + 17297: 0x737B, + 17298: 0x8ED2, + 17299: 0x6B47, + 17300: 0x96AA, + 17301: 0x9A57, + 17302: 0x5955, + 17303: 0x7200, + 17304: 0x8D6B, + 17305: 0x9769, + 17306: 0x4FD4, + 17307: 0x5CF4, + 17308: 0x5F26, + 17309: 0x61F8, + 17310: 0x665B, + 17311: 0x6CEB, + 17312: 0x70AB, + 17313: 0x7384, + 17314: 0x73B9, + 17315: 0x73FE, + 17316: 0x7729, + 17317: 0x774D, + 17318: 0x7D43, + 17319: 0x7D62, + 17320: 0x7E23, + 17321: 0x8237, + 17322: 0x8852, + 17323: 0xFA0A, + 17324: 0x8CE2, + 17325: 0x9249, + 17326: 0x986F, + 17327: 0x5B51, + 17328: 0x7A74, + 17329: 0x8840, + 17330: 0x9801, + 17331: 0x5ACC, + 17332: 0x4FE0, + 17333: 0x5354, + 17334: 0x593E, + 17335: 0x5CFD, + 17336: 0x633E, + 17337: 0x6D79, + 17338: 0x72F9, + 17339: 0x8105, + 17340: 0x8107, + 17341: 0x83A2, + 17342: 0x92CF, + 17343: 0x9830, + 17344: 0x4EA8, + 17345: 0x5144, + 17346: 0x5211, + 17347: 0x578B, + 17348: 0x5F62, + 17349: 0x6CC2, + 17350: 0x6ECE, + 17351: 0x7005, + 17352: 0x7050, + 17353: 0x70AF, + 17354: 0x7192, + 17355: 0x73E9, + 17356: 0x7469, + 17357: 0x834A, + 17358: 0x87A2, + 17359: 0x8861, + 17360: 0x9008, + 17361: 0x90A2, + 17362: 0x93A3, + 17363: 0x99A8, + 17364: 0x516E, + 17365: 0x5F57, + 17366: 0x60E0, + 17367: 0x6167, + 17368: 0x66B3, + 17369: 0x8559, + 17370: 0x8E4A, + 17371: 0x91AF, + 17372: 0x978B, + 17373: 0x4E4E, + 17374: 0x4E92, + 17375: 0x547C, + 17376: 0x58D5, + 17377: 0x58FA, + 17378: 0x597D, + 17379: 0x5CB5, + 17380: 0x5F27, + 17381: 0x6236, + 17382: 0x6248, + 17383: 0x660A, + 17384: 0x6667, + 17385: 0x6BEB, + 17386: 0x6D69, + 17387: 0x6DCF, + 17388: 0x6E56, + 17389: 0x6EF8, + 17390: 0x6F94, + 17391: 0x6FE0, + 17392: 0x6FE9, + 17393: 0x705D, + 17394: 0x72D0, + 17395: 0x7425, + 17396: 0x745A, + 17397: 0x74E0, + 17398: 0x7693, + 17399: 0x795C, + 17400: 0x7CCA, + 17401: 0x7E1E, + 17402: 0x80E1, + 17403: 0x82A6, + 17404: 0x846B, + 17405: 0x84BF, + 17406: 0x864E, + 17407: 0x865F, + 17408: 0x8774, + 17409: 0x8B77, + 17410: 0x8C6A, + 17411: 0x93AC, + 17412: 0x9800, + 17413: 0x9865, + 17414: 0x60D1, + 17415: 0x6216, + 17416: 0x9177, + 17417: 0x5A5A, + 17418: 0x660F, + 17419: 0x6DF7, + 17420: 0x6E3E, + 17421: 0x743F, + 17422: 0x9B42, + 17423: 0x5FFD, + 17424: 0x60DA, + 17425: 0x7B0F, + 17426: 0x54C4, + 17427: 0x5F18, + 17428: 0x6C5E, + 17429: 0x6CD3, + 17430: 0x6D2A, + 17431: 0x70D8, + 17432: 0x7D05, + 17433: 0x8679, + 17434: 0x8A0C, + 17435: 0x9D3B, + 17436: 0x5316, + 17437: 0x548C, + 17438: 0x5B05, + 17439: 0x6A3A, + 17440: 0x706B, + 17441: 0x7575, + 17442: 0x798D, + 17443: 0x79BE, + 17444: 0x82B1, + 17445: 0x83EF, + 17446: 0x8A71, + 17447: 0x8B41, + 17448: 0x8CA8, + 17449: 0x9774, + 17450: 0xFA0B, + 17451: 0x64F4, + 17452: 0x652B, + 17453: 0x78BA, + 17454: 0x78BB, + 17455: 0x7A6B, + 17456: 0x4E38, + 17457: 0x559A, + 17458: 0x5950, + 17459: 0x5BA6, + 17460: 0x5E7B, + 17461: 0x60A3, + 17462: 0x63DB, + 17463: 0x6B61, + 17464: 0x6665, + 17465: 0x6853, + 17466: 0x6E19, + 17467: 0x7165, + 17468: 0x74B0, + 17469: 0x7D08, + 17470: 0x9084, + 17471: 0x9A69, + 17472: 0x9C25, + 17473: 0x6D3B, + 17474: 0x6ED1, + 17475: 0x733E, + 17476: 0x8C41, + 17477: 0x95CA, + 17478: 0x51F0, + 17479: 0x5E4C, + 17480: 0x5FA8, + 17481: 0x604D, + 17482: 0x60F6, + 17483: 0x6130, + 17484: 0x614C, + 17485: 0x6643, + 17486: 0x6644, + 17487: 0x69A5, + 17488: 0x6CC1, + 17489: 0x6E5F, + 17490: 0x6EC9, + 17491: 0x6F62, + 17492: 0x714C, + 17493: 0x749C, + 17494: 0x7687, + 17495: 0x7BC1, + 17496: 0x7C27, + 17497: 0x8352, + 17498: 0x8757, + 17499: 0x9051, + 17500: 0x968D, + 17501: 0x9EC3, + 17502: 0x532F, + 17503: 0x56DE, + 17504: 0x5EFB, + 17505: 0x5F8A, + 17506: 0x6062, + 17507: 0x6094, + 17508: 0x61F7, + 17509: 0x6666, + 17510: 0x6703, + 17511: 0x6A9C, + 17512: 0x6DEE, + 17513: 0x6FAE, + 17514: 0x7070, + 17515: 0x736A, + 17516: 0x7E6A, + 17517: 0x81BE, + 17518: 0x8334, + 17519: 0x86D4, + 17520: 0x8AA8, + 17521: 0x8CC4, + 17522: 0x5283, + 17523: 0x7372, + 17524: 0x5B96, + 17525: 0x6A6B, + 17526: 0x9404, + 17527: 0x54EE, + 17528: 0x5686, + 17529: 0x5B5D, + 17530: 0x6548, + 17531: 0x6585, + 17532: 0x66C9, + 17533: 0x689F, + 17534: 0x6D8D, + 17535: 0x6DC6, + 17536: 0x723B, + 17537: 0x80B4, + 17538: 0x9175, + 17539: 0x9A4D, + 17540: 0x4FAF, + 17541: 0x5019, + 17542: 0x539A, + 17543: 0x540E, + 17544: 0x543C, + 17545: 0x5589, + 17546: 0x55C5, + 17547: 0x5E3F, + 17548: 0x5F8C, + 17549: 0x673D, + 17550: 0x7166, + 17551: 0x73DD, + 17552: 0x9005, + 17553: 0x52DB, + 17554: 0x52F3, + 17555: 0x5864, + 17556: 0x58CE, + 17557: 0x7104, + 17558: 0x718F, + 17559: 0x71FB, + 17560: 0x85B0, + 17561: 0x8A13, + 17562: 0x6688, + 17563: 0x85A8, + 17564: 0x55A7, + 17565: 0x6684, + 17566: 0x714A, + 17567: 0x8431, + 17568: 0x5349, + 17569: 0x5599, + 17570: 0x6BC1, + 17571: 0x5F59, + 17572: 0x5FBD, + 17573: 0x63EE, + 17574: 0x6689, + 17575: 0x7147, + 17576: 0x8AF1, + 17577: 0x8F1D, + 17578: 0x9EBE, + 17579: 0x4F11, + 17580: 0x643A, + 17581: 0x70CB, + 17582: 0x7566, + 17583: 0x8667, + 17584: 0x6064, + 17585: 0x8B4E, + 17586: 0x9DF8, + 17587: 0x5147, + 17588: 0x51F6, + 17589: 0x5308, + 17590: 0x6D36, + 17591: 0x80F8, + 17592: 0x9ED1, + 17593: 0x6615, + 17594: 0x6B23, + 17595: 0x7098, + 17596: 0x75D5, + 17597: 0x5403, + 17598: 0x5C79, + 17599: 0x7D07, + 17600: 0x8A16, + 17601: 0x6B20, + 17602: 0x6B3D, + 17603: 0x6B46, + 17604: 0x5438, + 17605: 0x6070, + 17606: 0x6D3D, + 17607: 0x7FD5, + 17608: 0x8208, + 17609: 0x50D6, + 17610: 0x51DE, + 17611: 0x559C, + 17612: 0x566B, + 17613: 0x56CD, + 17614: 0x59EC, + 17615: 0x5B09, + 17616: 0x5E0C, + 17617: 0x6199, + 17618: 0x6198, + 17619: 0x6231, + 17620: 0x665E, + 17621: 0x66E6, + 17622: 0x7199, + 17623: 0x71B9, + 17624: 0x71BA, + 17625: 0x72A7, + 17626: 0x79A7, + 17627: 0x7A00, + 17628: 0x7FB2, + 17629: 0x8A70, +} + +const numEncodeTables = 7 + +// encodeX are the encoding tables from Unicode to EUC-KR code, +// sorted by decreasing length. +// encode0: 20893 entries for runes in [19968, 40861). +// encode1: 11172 entries for runes in [44032, 55204). +// encode2: 1625 entries for runes in [ 8213, 9838). +// encode3: 990 entries for runes in [12288, 13278). +// encode4: 945 entries for runes in [ 161, 1106). +// encode5: 268 entries for runes in [63744, 64012). +// encode6: 230 entries for runes in [65281, 65511). + +const encode0Low, encode0High = 19968, 40861 + +var encode0 = [...]uint16{ + 19968 - 19968: 0xECE9, + 19969 - 19968: 0xEFCB, + 19971 - 19968: 0xF6D2, + 19975 - 19968: 0xD8B2, + 19976 - 19968: 0xEDDB, + 19977 - 19968: 0xDFB2, + 19978 - 19968: 0xDFBE, + 19979 - 19968: 0xF9BB, + 19981 - 19968: 0xDCF4, + 19985 - 19968: 0xF5E4, + 19988 - 19968: 0xF3A6, + 19989 - 19968: 0xDDE0, + 19990 - 19968: 0xE1A6, + 19992 - 19968: 0xCEF8, + 19993 - 19968: 0xDCB0, + 19998 - 19968: 0xE3AA, + 20013 - 19968: 0xF1E9, + 20018 - 19968: 0xCDFA, + 20024 - 19968: 0xFCAF, + 20025 - 19968: 0xD3A1, + 20027 - 19968: 0xF1AB, + 20034 - 19968: 0xE7D1, + 20035 - 19968: 0xD2AC, + 20037 - 19968: 0xCEF9, + 20043 - 19968: 0xF1FD, + 20045 - 19968: 0xDEBF, + 20046 - 19968: 0xFBBA, + 20047 - 19968: 0xF9B9, + 20054 - 19968: 0xCED2, + 20056 - 19968: 0xE3AB, + 20057 - 19968: 0xEBE0, + 20061 - 19968: 0xCEFA, + 20062 - 19968: 0xCBF7, + 20063 - 19968: 0xE5A5, + 20075 - 19968: 0xCAE1, + 20077 - 19968: 0xD4CC, + 20083 - 19968: 0xEAE1, + 20086 - 19968: 0xDCE3, + 20087 - 19968: 0xDFAD, + 20094 - 19968: 0xCBEB, + 20098 - 19968: 0xD5AF, + 20102 - 19968: 0xD6F5, + 20104 - 19968: 0xE5F8, + 20107 - 19968: 0xDEC0, + 20108 - 19968: 0xECA3, + 20110 - 19968: 0xE9CD, + 20112 - 19968: 0xEAA7, + 20113 - 19968: 0xE9F6, + 20114 - 19968: 0xFBBB, + 20116 - 19968: 0xE7E9, + 20117 - 19968: 0xEFCC, + 20120 - 19968: 0xD0E6, + 20123 - 19968: 0xDEC1, + 20126 - 19968: 0xE4AC, + 20129 - 19968: 0xD8CC, + 20130 - 19968: 0xF9F1, + 20132 - 19968: 0xCEDF, + 20133 - 19968: 0xFAA4, + 20134 - 19968: 0xE6B2, + 20136 - 19968: 0xFAFB, + 20139 - 19968: 0xFABD, + 20140 - 19968: 0xCCC8, + 20141 - 19968: 0xEFCD, + 20142 - 19968: 0xD5D5, + 20150 - 19968: 0xD3A2, + 20154 - 19968: 0xECD1, + 20160 - 19968: 0xE4A7, + 20161 - 19968: 0xECD2, + 20164 - 19968: 0xF6B1, + 20167 - 19968: 0xCEFB, + 20170 - 19968: 0xD0D1, + 20171 - 19968: 0xCBBF, + 20173 - 19968: 0xEDA4, + 20180 - 19968: 0xEDA8, + 20181 - 19968: 0xDEC2, + 20182 - 19968: 0xF6E2, + 20183 - 19968: 0xEDDC, + 20184 - 19968: 0xDCF5, + 20185 - 19968: 0xE0B9, + 20189 - 19968: 0xD4CE, + 20191 - 19968: 0xF4B5, + 20195 - 19968: 0xD3DB, + 20196 - 19968: 0xD6B5, + 20197 - 19968: 0xECA4, + 20208 - 19968: 0xE4E6, + 20210 - 19968: 0xF1EA, + 20214 - 19968: 0xCBEC, + 20215 - 19968: 0xCBC0, + 20219 - 19968: 0xECF2, + 20225 - 19968: 0xD0EA, + 20233 - 19968: 0xF9F2, + 20234 - 19968: 0xECA5, + 20235 - 19968: 0xD0DF, + 20237 - 19968: 0xE7EA, + 20238 - 19968: 0xD0EB, + 20239 - 19968: 0xDCD1, + 20240 - 19968: 0xDBE9, + 20241 - 19968: 0xFDCC, + 20271 - 19968: 0xDBD7, + 20276 - 19968: 0xDAE1, + 20278 - 19968: 0xD6B6, + 20280 - 19968: 0xE3DF, + 20282 - 19968: 0xDEC3, + 20284 - 19968: 0xDEC4, + 20285 - 19968: 0xCAA1, + 20291 - 19968: 0xEEEC, + 20294 - 19968: 0xD3A3, + 20295 - 19968: 0xEEB7, + 20296 - 19968: 0xF8CF, + 20301 - 19968: 0xEAC8, + 20302 - 19968: 0xEEB8, + 20303 - 19968: 0xF1AC, + 20304 - 19968: 0xF1A5, + 20305 - 19968: 0xE9CE, + 20309 - 19968: 0xF9BC, + 20313 - 19968: 0xE5F9, + 20314 - 19968: 0xECEA, + 20315 - 19968: 0xDDD6, + 20316 - 19968: 0xEDC2, + 20329 - 19968: 0xF8A5, + 20335 - 19968: 0xE5BA, + 20336 - 19968: 0xDBD8, + 20339 - 19968: 0xCAA2, + 20342 - 19968: 0xD1CD, + 20346 - 19968: 0xEEED, + 20350 - 19968: 0xECEB, + 20351 - 19968: 0xDEC5, + 20353 - 19968: 0xE3E0, + 20355 - 19968: 0xCAC9, + 20356 - 19968: 0xF2E9, + 20358 - 19968: 0xD5CE, + 20360 - 19968: 0xF6B6, + 20362 - 19968: 0xCEC2, + 20363 - 19968: 0xD6C7, + 20365 - 19968: 0xE3B4, + 20367 - 19968: 0xF1AD, + 20369 - 19968: 0xEAE2, + 20374 - 19968: 0xD7C2, + 20376 - 19968: 0xF3A7, + 20379 - 19968: 0xCDEA, + 20381 - 19968: 0xEBEE, + 20398 - 19968: 0xD9B2, + 20399 - 19968: 0xFDA5, + 20405 - 19968: 0xF6D5, + 20406 - 19968: 0xD5E2, + 20415 - 19968: 0xF8B5, + 20418 - 19968: 0xCCF5, + 20419 - 19968: 0xF5B5, + 20420 - 19968: 0xE4AD, + 20425 - 19968: 0xE7EB, + 20426 - 19968: 0xF1D5, + 20430 - 19968: 0xF0BB, + 20433 - 19968: 0xE9B5, + 20435 - 19968: 0xCCC9, + 20436 - 19968: 0xFAD5, + 20439 - 19968: 0xE1D4, + 20442 - 19968: 0xD7D6, + 20445 - 19968: 0xDCC1, + 20447 - 19968: 0xDEC6, + 20448 - 19968: 0xFAEF, + 20449 - 19968: 0xE3E1, + 20462 - 19968: 0xE1F3, + 20463 - 19968: 0xDCF6, + 20465 - 19968: 0xCEFC, + 20467 - 19968: 0xDBC4, + 20469 - 19968: 0xF8F1, + 20472 - 19968: 0xDCE4, + 20474 - 19968: 0xE5EF, + 20482 - 19968: 0xDCB1, + 20486 - 19968: 0xD5D6, + 20489 - 19968: 0xF3DA, + 20491 - 19968: 0xCBC1, + 20493 - 19968: 0xDBC3, + 20497 - 19968: 0xD9FA, + 20498 - 19968: 0xD3EE, + 20502 - 19968: 0xFAB8, + 20505 - 19968: 0xFDA6, + 20506 - 19968: 0xEBEF, + 20508 - 19968: 0xF4A6, + 20510 - 19968: 0xCCCA, + 20511 - 19968: 0xF3A8, + 20513 - 19968: 0xF3DB, + 20515 - 19968: 0xDBA7, + 20516 - 19968: 0xF6B7, + 20518 - 19968: 0xCFE6, + 20519 - 19968: 0xF0F2, + 20520 - 19968: 0xCBDA, + 20522 - 19968: 0xE7D2, + 20523 - 19968: 0xD7C3, + 20524 - 19968: 0xF6F0, + 20525 - 19968: 0xE8DE, + 20539 - 19968: 0xE5A6, + 20547 - 19968: 0xE5E7, + 20551 - 19968: 0xCAA3, + 20552 - 19968: 0xCCA7, + 20553 - 19968: 0xEAC9, + 20559 - 19968: 0xF8B6, + 20565 - 19968: 0xFAA5, + 20570 - 19968: 0xF1AE, + 20572 - 19968: 0xEFCE, + 20581 - 19968: 0xCBED, + 20596 - 19968: 0xF6B0, + 20597 - 19968: 0xEFCF, + 20598 - 19968: 0xE9CF, + 20600 - 19968: 0xF7DE, + 20608 - 19968: 0xCED3, + 20613 - 19968: 0xDCF7, + 20621 - 19968: 0xDBA8, + 20625 - 19968: 0xCBF8, + 20632 - 19968: 0xDFA1, + 20633 - 19968: 0xDDE1, + 20652 - 19968: 0xF5CA, + 20653 - 19968: 0xE9B6, + 20658 - 19968: 0xE7EC, + 20659 - 19968: 0xEEEE, + 20661 - 19968: 0xF3F0, + 20663 - 19968: 0xDFBF, + 20670 - 19968: 0xCCCB, + 20677 - 19968: 0xD0C1, + 20681 - 19968: 0xF4D2, + 20682 - 19968: 0xE0BA, + 20687 - 19968: 0xDFC0, + 20689 - 19968: 0xCEE0, + 20693 - 19968: 0xDCD2, + 20694 - 19968: 0xFDEA, + 20698 - 19968: 0xD6F6, + 20702 - 19968: 0xEACA, + 20709 - 19968: 0xE8E9, + 20711 - 19968: 0xE3AC, + 20717 - 19968: 0xF3D0, + 20729 - 19968: 0xCAA4, + 20731 - 19968: 0xDBF8, + 20735 - 19968: 0xDEC7, + 20736 - 19968: 0xEBF0, + 20737 - 19968: 0xF1D6, + 20740 - 19968: 0xE5E2, + 20742 - 19968: 0xCCCC, + 20745 - 19968: 0xCBFB, + 20754 - 19968: 0xEAE3, + 20767 - 19968: 0xDFC1, + 20769 - 19968: 0xD6ED, + 20778 - 19968: 0xE9D0, + 20786 - 19968: 0xEEB9, + 20791 - 19968: 0xD5E3, + 20794 - 19968: 0xD1D3, + 20796 - 19968: 0xE5F0, + 20800 - 19968: 0xE8B4, + 20801 - 19968: 0xEBC3, + 20803 - 19968: 0xEAAA, + 20804 - 19968: 0xFAFC, + 20805 - 19968: 0xF5F6, + 20806 - 19968: 0xF0BC, + 20807 - 19968: 0xFDD4, + 20808 - 19968: 0xE0BB, + 20809 - 19968: 0xCEC3, + 20811 - 19968: 0xD0BA, + 20812 - 19968: 0xF7BA, + 20813 - 19968: 0xD8F3, + 20814 - 19968: 0xF7CD, + 20818 - 19968: 0xE4AE, + 20828 - 19968: 0xD4DF, + 20834 - 19968: 0xD0E7, + 20837 - 19968: 0xECFD, + 20839 - 19968: 0xD2AE, + 20840 - 19968: 0xEEEF, + 20841 - 19968: 0xD5D7, + 20842 - 19968: 0xEAE4, + 20843 - 19968: 0xF8A2, + 20844 - 19968: 0xCDEB, + 20845 - 19968: 0xD7BF, + 20846 - 19968: 0xFBB1, + 20849 - 19968: 0xCDEC, + 20853 - 19968: 0xDCB2, + 20854 - 19968: 0xD0EC, + 20855 - 19968: 0xCEFD, + 20856 - 19968: 0xEEF0, + 20860 - 19968: 0xCCC2, + 20864 - 19968: 0xD0ED, + 20870 - 19968: 0xE5F7, + 20874 - 19968: 0xF3FC, + 20877 - 19968: 0xEEA2, + 20882 - 19968: 0xD9B3, + 20885 - 19968: 0xD8F4, + 20887 - 19968: 0xE9B7, + 20896 - 19968: 0xCEAE, + 20901 - 19968: 0xD9A2, + 20906 - 19968: 0xD8F1, + 20908 - 19968: 0xD4CF, + 20918 - 19968: 0xE5A7, + 20919 - 19968: 0xD5D2, + 20925 - 19968: 0xD6A9, + 20932 - 19968: 0xF4A2, + 20934 - 19968: 0xF1D7, + 20937 - 19968: 0xD5D8, + 20939 - 19968: 0xF0BD, + 20940 - 19968: 0xD7D0, + 20941 - 19968: 0xD4D0, + 20956 - 19968: 0xD7CF, + 20957 - 19968: 0xEBEA, + 20958 - 19968: 0xFDEB, + 20961 - 19968: 0xDBED, + 20976 - 19968: 0xFCC5, + 20977 - 19968: 0xCBC2, + 20982 - 19968: 0xFDD5, + 20984 - 19968: 0xF4C8, + 20985 - 19968: 0xE8EA, + 20986 - 19968: 0xF5F3, + 20989 - 19968: 0xF9DE, + 20992 - 19968: 0xD3EF, + 20995 - 19968: 0xECD3, + 20998 - 19968: 0xDDC2, + 20999 - 19968: 0xEFB7, + 21000 - 19968: 0xE7D4, + 21002 - 19968: 0xCACA, + 21006 - 19968: 0xD9FB, + 21009 - 19968: 0xFAFD, + 21015 - 19968: 0xD6AA, + 21021 - 19968: 0xF4F8, + 21028 - 19968: 0xF7F7, + 21029 - 19968: 0xDCAC, + 21033 - 19968: 0xD7D7, + 21034 - 19968: 0xDFA2, + 21038 - 19968: 0xCEBE, + 21040 - 19968: 0xD3F0, + 21046 - 19968: 0xF0A4, + 21047 - 19968: 0xE1EC, + 21048 - 19968: 0xCFE7, + 21049 - 19968: 0xF3CB, + 21050 - 19968: 0xEDA9, + 21051 - 19968: 0xCABE, + 21059 - 19968: 0xF4EF, + 21063 - 19968: 0xF6CE, + 21066 - 19968: 0xDEFB, + 21067 - 19968: 0xD0BB, + 21068 - 19968: 0xD5B7, + 21069 - 19968: 0xEEF1, + 21076 - 19968: 0xF4A8, + 21078 - 19968: 0xDCF8, + 21083 - 19968: 0xCBA7, + 21085 - 19968: 0xDACE, + 21089 - 19968: 0xE0E6, + 21097 - 19968: 0xEDA5, + 21098 - 19968: 0xEEF2, + 21103 - 19968: 0xDCF9, + 21106 - 19968: 0xF9DC, + 21109 - 19968: 0xF3DC, + 21117 - 19968: 0xF8F2, + 21119 - 19968: 0xF4F9, + 21123 - 19968: 0xFCF1, + 21127 - 19968: 0xD0BC, + 21128 - 19968: 0xDBF9, + 21129 - 19968: 0xD7B1, + 21133 - 19968: 0xCBFC, + 21137 - 19968: 0xF0A5, + 21138 - 19968: 0xCBFD, + 21147 - 19968: 0xD5F4, + 21151 - 19968: 0xCDED, + 21152 - 19968: 0xCAA5, + 21155 - 19968: 0xD6AB, + 21156 - 19968: 0xD0C2, + 21161 - 19968: 0xF0BE, + 21162 - 19968: 0xD2BD, + 21163 - 19968: 0xCCA4, + 21182 - 19968: 0xFAB6, + 21185 - 19968: 0xCCCD, + 21187 - 19968: 0xDAFA, + 21189 - 19968: 0xF6CF, + 21191 - 19968: 0xE9B8, + 21193 - 19968: 0xD8F5, + 21197 - 19968: 0xCCCE, + 21202 - 19968: 0xD7CD, + 21205 - 19968: 0xD4D1, + 21206 - 19968: 0xE9ED, + 21208 - 19968: 0xCAEB, + 21209 - 19968: 0xD9E2, + 21211 - 19968: 0xFDB2, + 21213 - 19968: 0xE3AD, + 21214 - 19968: 0xD6CC, + 21215 - 19968: 0xD9B4, + 21218 - 19968: 0xE1A7, + 21219 - 19968: 0xEED3, + 21220 - 19968: 0xD0C3, + 21235 - 19968: 0xFDB3, + 21237 - 19968: 0xD5E4, + 21240 - 19968: 0xCFE8, + 21242 - 19968: 0xEDC3, + 21243 - 19968: 0xD0B2, + 21246 - 19968: 0xCEFE, + 21247 - 19968: 0xDAA8, + 21253 - 19968: 0xF8D0, + 21256 - 19968: 0xFDD6, + 21261 - 19968: 0xF8D1, + 21263 - 19968: 0xF8D2, + 21264 - 19968: 0xDCD3, + 21269 - 19968: 0xDDE2, + 21270 - 19968: 0xFBF9, + 21271 - 19968: 0xDDC1, + 21273 - 19968: 0xE3B5, + 21280 - 19968: 0xEDDD, + 21281 - 19968: 0xCEC4, + 21283 - 19968: 0xCBA1, + 21290 - 19968: 0xDDE3, + 21295 - 19968: 0xFCDD, + 21305 - 19968: 0xF9AF, + 21311 - 19968: 0xD2FB, + 21312 - 19968: 0xCFA1, + 21313 - 19968: 0xE4A8, + 21315 - 19968: 0xF4B6, + 21316 - 19968: 0xECFE, + 21319 - 19968: 0xE3AE, + 21320 - 19968: 0xE7ED, + 21321 - 19968: 0xFDC1, + 21322 - 19968: 0xDAE2, + 21325 - 19968: 0xD8B3, + 21329 - 19968: 0xDDE4, + 21330 - 19968: 0xF0EF, + 21331 - 19968: 0xF6F1, + 21332 - 19968: 0xFAF0, + 21335 - 19968: 0xD1F5, + 21338 - 19968: 0xDACF, + 21340 - 19968: 0xDCD4, + 21342 - 19968: 0xDCA6, + 21344 - 19968: 0xEFBF, + 21350 - 19968: 0xCECF, + 21352 - 19968: 0xE0D9, + 21359 - 19968: 0xD9D6, + 21360 - 19968: 0xECD4, + 21361 - 19968: 0xEACB, + 21364 - 19968: 0xCABF, + 21365 - 19968: 0xD5B0, + 21367 - 19968: 0xCFE9, + 21373 - 19968: 0xF1ED, + 21375 - 19968: 0xCCCF, + 21380 - 19968: 0xE4F8, + 21395 - 19968: 0xE4ED, + 21400 - 19968: 0xD7D8, + 21402 - 19968: 0xFDA7, + 21407 - 19968: 0xEAAB, + 21408 - 19968: 0xF6B2, + 21413 - 19968: 0xCFF0, + 21414 - 19968: 0xF9BD, + 21421 - 19968: 0xE6F4, + 21435 - 19968: 0xCBDB, + 21443 - 19968: 0xF3D1, + 21448 - 19968: 0xE9D1, + 21449 - 19968: 0xF3A9, + 21450 - 19968: 0xD0E0, + 21451 - 19968: 0xE9D2, + 21453 - 19968: 0xDAE3, + 21460 - 19968: 0xE2D2, + 21462 - 19968: 0xF6A2, + 21463 - 19968: 0xE1F4, + 21467 - 19968: 0xDAE4, + 21473 - 19968: 0xE7D5, + 21474 - 19968: 0xF5BF, + 21475 - 19968: 0xCFA2, + 21476 - 19968: 0xCDAF, + 21477 - 19968: 0xCFA3, + 21481 - 19968: 0xCDB0, + 21482 - 19968: 0xF1FE, + 21483 - 19968: 0xD0A3, + 21484 - 19968: 0xE1AF, + 21485 - 19968: 0xF8A3, + 21487 - 19968: 0xCAA6, + 21488 - 19968: 0xF7BB, + 21489 - 19968: 0xF2EA, + 21490 - 19968: 0xDEC8, + 21491 - 19968: 0xE9D3, + 21496 - 19968: 0xDEC9, + 21507 - 19968: 0xFDDE, + 21508 - 19968: 0xCAC0, + 21512 - 19968: 0xF9EA, + 21513 - 19968: 0xD1CE, + 21514 - 19968: 0xEED4, + 21516 - 19968: 0xD4D2, + 21517 - 19968: 0xD9A3, + 21518 - 19968: 0xFDA8, + 21519 - 19968: 0xD7D9, + 21520 - 19968: 0xF7CE, + 21521 - 19968: 0xFABE, + 21531 - 19968: 0xCFD6, + 21533 - 19968: 0xD7F0, + 21535 - 19968: 0xEBE1, + 21536 - 19968: 0xF8C5, + 21542 - 19968: 0xDCFA, + 21545 - 19968: 0xDDC3, + 21547 - 19968: 0xF9DF, + 21555 - 19968: 0xE7EF, + 21560 - 19968: 0xFDE5, + 21561 - 19968: 0xF6A3, + 21563 - 19968: 0xD9FC, + 21564 - 19968: 0xFDA9, + 21566 - 19968: 0xE7EE, + 21570 - 19968: 0xD5E5, + 21576 - 19968: 0xEFD0, + 21578 - 19968: 0xCDB1, + 21585 - 19968: 0xF7A2, + 21608 - 19968: 0xF1B2, + 21610 - 19968: 0xF1B1, + 21617 - 19968: 0xCDB2, + 21619 - 19968: 0xDAAB, + 21621 - 19968: 0xCAA7, + 21627 - 19968: 0xE3E2, + 21628 - 19968: 0xFBBC, + 21629 - 19968: 0xD9A4, + 21632 - 19968: 0xEEBA, + 21638 - 19968: 0xF8D3, + 21644 - 19968: 0xFBFA, + 21646 - 19968: 0xCFA4, + 21648 - 19968: 0xDCFB, + 21668 - 19968: 0xF6E3, + 21672 - 19968: 0xEDAA, + 21675 - 19968: 0xF2A1, + 21676 - 19968: 0xCEE1, + 21683 - 19968: 0xFAA6, + 21688 - 19968: 0xF9E0, + 21693 - 19968: 0xECD6, + 21696 - 19968: 0xE4EE, + 21697 - 19968: 0xF9A1, + 21700 - 19968: 0xFBEF, + 21704 - 19968: 0xF9EB, + 21705 - 19968: 0xEEA3, + 21729 - 19968: 0xEAAC, + 21733 - 19968: 0xCAA8, + 21736 - 19968: 0xF4FA, + 21741 - 19968: 0xCDD6, + 21742 - 19968: 0xFCF6, + 21746 - 19968: 0xF4C9, + 21754 - 19968: 0xF8D4, + 21764 - 19968: 0xF8A6, + 21766 - 19968: 0xDECA, + 21767 - 19968: 0xF2C6, + 21774 - 19968: 0xD7DA, + 21776 - 19968: 0xD3D0, + 21788 - 19968: 0xD8C5, + 21807 - 19968: 0xEAE6, + 21809 - 19968: 0xF3DD, + 21813 - 19968: 0xE4DA, + 21822 - 19968: 0xF6E4, + 21828 - 19968: 0xF6F2, + 21830 - 19968: 0xDFC2, + 21839 - 19968: 0xD9FD, + 21843 - 19968: 0xCCF6, + 21846 - 19968: 0xD3BA, + 21854 - 19968: 0xE4AF, + 21859 - 19968: 0xF9E1, + 21884 - 19968: 0xF0A6, + 21888 - 19968: 0xCBD3, + 21892 - 19968: 0xE0BC, + 21894 - 19968: 0xF4CA, + 21895 - 19968: 0xD4FA, + 21897 - 19968: 0xFDAA, + 21898 - 19968: 0xF9E2, + 21912 - 19968: 0xF4B7, + 21913 - 19968: 0xFDC2, + 21914 - 19968: 0xFCB0, + 21916 - 19968: 0xFDEC, + 21917 - 19968: 0xCAE2, + 21927 - 19968: 0xFDBD, + 21929 - 19968: 0xEAE7, + 21930 - 19968: 0xDFC3, + 21931 - 19968: 0xD1D2, + 21932 - 19968: 0xCEE2, + 21934 - 19968: 0xD3A4, + 21957 - 19968: 0xFDAB, + 21959 - 19968: 0xDFE0, + 21972 - 19968: 0xF2C7, + 21978 - 19968: 0xE7F0, + 21980 - 19968: 0xD0EE, + 21983 - 19968: 0xF3AA, + 21987 - 19968: 0xDECB, + 21988 - 19968: 0xF6B8, + 22013 - 19968: 0xE1F5, + 22014 - 19968: 0xF1B3, + 22022 - 19968: 0xF7A3, + 22025 - 19968: 0xCAA9, + 22036 - 19968: 0xCFA5, + 22039 - 19968: 0xDFC4, + 22063 - 19968: 0xE1B0, + 22066 - 19968: 0xF0BF, + 22068 - 19968: 0xF6A4, + 22070 - 19968: 0xE3B6, + 22099 - 19968: 0xFAC6, + 22120 - 19968: 0xD0EF, + 22123 - 19968: 0xFDED, + 22132 - 19968: 0xDDC4, + 22150 - 19968: 0xFCF7, + 22181 - 19968: 0xE6BF, + 22188 - 19968: 0xDEAD, + 22190 - 19968: 0xFABF, + 22196 - 19968: 0xE5F1, + 22204 - 19968: 0xEDC4, + 22218 - 19968: 0xD2A5, + 22221 - 19968: 0xFDEE, + 22225 - 19968: 0xF5B6, + 22234 - 19968: 0xE1F6, + 22235 - 19968: 0xDECC, + 22238 - 19968: 0xFCDE, + 22240 - 19968: 0xECD7, + 22256 - 19968: 0xCDDD, + 22265 - 19968: 0xD6B7, + 22266 - 19968: 0xCDB3, + 22275 - 19968: 0xF8D5, + 22276 - 19968: 0xE5D8, + 22280 - 19968: 0xCFEA, + 22283 - 19968: 0xCFD0, + 22285 - 19968: 0xEACC, + 22290 - 19968: 0xEAAE, + 22291 - 19968: 0xEAAD, + 22294 - 19968: 0xD3F1, + 22296 - 19968: 0xD3A5, + 22303 - 19968: 0xF7CF, + 22312 - 19968: 0xEEA4, + 22317 - 19968: 0xD0A4, + 22320 - 19968: 0xF2A2, + 22331 - 19968: 0xD0F0, + 22336 - 19968: 0xF2A3, + 22338 - 19968: 0xF7F8, + 22343 - 19968: 0xD0B3, + 22346 - 19968: 0xDBA9, + 22349 - 19968: 0xD3BB, + 22350 - 19968: 0xCAEC, + 22352 - 19968: 0xF1A6, + 22353 - 19968: 0xCBD5, + 22369 - 19968: 0xF7E7, + 22372 - 19968: 0xCDDE, + 22374 - 19968: 0xF7A4, + 22378 - 19968: 0xF8C0, + 22382 - 19968: 0xD3DD, + 22384 - 19968: 0xCCD0, + 22389 - 19968: 0xCFA6, + 22396 - 19968: 0xF6F3, + 22402 - 19968: 0xE1F7, + 22408 - 19968: 0xD3DC, + 22411 - 19968: 0xFAFE, + 22419 - 19968: 0xFAA7, + 22432 - 19968: 0xEBD9, + 22434 - 19968: 0xCFA7, + 22435 - 19968: 0xEAAF, + 22467 - 19968: 0xE4EF, + 22471 - 19968: 0xE9B9, + 22472 - 19968: 0xF1D8, + 22475 - 19968: 0xD8D8, + 22478 - 19968: 0xE0F2, + 22495 - 19968: 0xE6B4, + 22496 - 19968: 0xDCFC, + 22512 - 19968: 0xF3F1, + 22516 - 19968: 0xE3D0, + 22519 - 19968: 0xF2FB, + 22521 - 19968: 0xDBC6, + 22522 - 19968: 0xD0F1, + 22524 - 19968: 0xD0F2, + 22528 - 19968: 0xCFDC, + 22530 - 19968: 0xD3D1, + 22533 - 19968: 0xCCB1, + 22534 - 19968: 0xF7D8, + 22536 - 19968: 0xCBA8, + 22537 - 19968: 0xEBBC, + 22538 - 19968: 0xE4BE, + 22558 - 19968: 0xF4DC, + 22561 - 19968: 0xDCC2, + 22564 - 19968: 0xF0A7, + 22567 - 19968: 0xE6C0, + 22570 - 19968: 0xCAED, + 22575 - 19968: 0xE8EB, + 22576 - 19968: 0xE5E8, + 22577 - 19968: 0xDCC3, + 22580 - 19968: 0xEDDE, + 22581 - 19968: 0xD3F2, + 22586 - 19968: 0xCCF7, + 22602 - 19968: 0xCED4, + 22603 - 19968: 0xE7AB, + 22607 - 19968: 0xCBC3, + 22609 - 19968: 0xE1B1, + 22612 - 19968: 0xF7B2, + 22615 - 19968: 0xD3F3, + 22616 - 19968: 0xD3D2, + 22618 - 19968: 0xF5C0, + 22622 - 19968: 0xDFDD, + 22625 - 19968: 0xEEF3, + 22626 - 19968: 0xE7F1, + 22628 - 19968: 0xFDB4, + 22645 - 19968: 0xF2C8, + 22649 - 19968: 0xF3D2, + 22652 - 19968: 0xEEF4, + 22654 - 19968: 0xE2D3, + 22659 - 19968: 0xCCD1, + 22661 - 19968: 0xDFEA, + 22665 - 19968: 0xE9BA, + 22675 - 19968: 0xD9D7, + 22684 - 19968: 0xF5CD, + 22686 - 19968: 0xF1F2, + 22687 - 19968: 0xFAC7, + 22696 - 19968: 0xD9F8, + 22697 - 19968: 0xD4C2, + 22702 - 19968: 0xF6E5, + 22707 - 19968: 0xDDC5, + 22714 - 19968: 0xE7F2, + 22715 - 19968: 0xEDDF, + 22718 - 19968: 0xCACB, + 22721 - 19968: 0xDBFA, + 22725 - 19968: 0xE8B5, + 22727 - 19968: 0xD3A6, + 22734 - 19968: 0xFDB5, + 22737 - 19968: 0xF9C9, + 22739 - 19968: 0xE4E2, + 22741 - 19968: 0xFBBD, + 22744 - 19968: 0xD7A4, + 22745 - 19968: 0xCEC5, + 22750 - 19968: 0xCED5, + 22751 - 19968: 0xD6E6, + 22756 - 19968: 0xE5BD, + 22763 - 19968: 0xDECD, + 22764 - 19968: 0xECF3, + 22767 - 19968: 0xEDE0, + 22777 - 19968: 0xECEC, + 22778 - 19968: 0xFBBE, + 22779 - 19968: 0xDFEB, + 22781 - 19968: 0xE1F8, + 22799 - 19968: 0xF9BE, + 22804 - 19968: 0xD0F3, + 22805 - 19968: 0xE0AA, + 22806 - 19968: 0xE8E2, + 22809 - 19968: 0xE2D4, + 22810 - 19968: 0xD2FD, + 22812 - 19968: 0xE5A8, + 22818 - 19968: 0xD9D3, + 22823 - 19968: 0xD3DE, + 22825 - 19968: 0xF4B8, + 22826 - 19968: 0xF7BC, + 22827 - 19968: 0xDCFD, + 22829 - 19968: 0xE8EC, + 22830 - 19968: 0xE4E7, + 22833 - 19968: 0xE3F7, + 22839 - 19968: 0xECA8, + 22846 - 19968: 0xFAF1, + 22852 - 19968: 0xE5F2, + 22855 - 19968: 0xD0F4, + 22856 - 19968: 0xD2AF, + 22857 - 19968: 0xDCE5, + 22862 - 19968: 0xD0A5, + 22863 - 19968: 0xF1B4, + 22864 - 19968: 0xFCB1, + 22865 - 19968: 0xCCF8, + 22868 - 19968: 0xDDC6, + 22869 - 19968: 0xFAD1, + 22871 - 19968: 0xF7DF, + 22874 - 19968: 0xFAA8, + 22880 - 19968: 0xEEF5, + 22882 - 19968: 0xDECE, + 22887 - 19968: 0xE7F3, + 22890 - 19968: 0xF7AC, + 22891 - 19968: 0xEBC4, + 22892 - 19968: 0xEDE1, + 22893 - 19968: 0xE0AB, + 22894 - 19968: 0xDDC7, + 22899 - 19968: 0xD2B3, + 22900 - 19968: 0xD2BF, + 22904 - 19968: 0xCACC, + 22909 - 19968: 0xFBBF, + 22914 - 19968: 0xE5FD, + 22915 - 19968: 0xDDE5, + 22916 - 19968: 0xD8CD, + 22922 - 19968: 0xECF4, + 22931 - 19968: 0xD0F5, + 22934 - 19968: 0xE8ED, + 22935 - 19968: 0xD0D2, + 22937 - 19968: 0xD9D8, + 22949 - 19968: 0xF6E6, + 22952 - 19968: 0xDBAA, + 22956 - 19968: 0xF7E0, + 22969 - 19968: 0xD8D9, + 22971 - 19968: 0xF4A3, + 22974 - 19968: 0xF4DD, + 22979 - 19968: 0xEFD1, + 22982 - 19968: 0xD9B5, + 22985 - 19968: 0xEDAB, + 22987 - 19968: 0xE3B7, + 22992 - 19968: 0xEEBB, + 22993 - 19968: 0xCDB4, + 22995 - 19968: 0xE0F3, + 22996 - 19968: 0xEACD, + 23001 - 19968: 0xECF5, + 23002 - 19968: 0xE8EE, + 23004 - 19968: 0xCBA9, + 23005 - 19968: 0xF1AF, + 23014 - 19968: 0xCACD, + 23016 - 19968: 0xECA9, + 23018 - 19968: 0xF2EB, + 23020 - 19968: 0xFDEF, + 23022 - 19968: 0xF9F3, + 23032 - 19968: 0xE6C1, + 23035 - 19968: 0xECD8, + 23039 - 19968: 0xEDAC, + 23041 - 19968: 0xEACE, + 23043 - 19968: 0xE8DF, + 23057 - 19968: 0xDECF, + 23064 - 19968: 0xD2A6, + 23067 - 19968: 0xE7F4, + 23068 - 19968: 0xD1D6, + 23071 - 19968: 0xE6C2, + 23072 - 19968: 0xE3E3, + 23077 - 19968: 0xE4B0, + 23081 - 19968: 0xD8B4, + 23094 - 19968: 0xF6A5, + 23100 - 19968: 0xF3DE, + 23105 - 19968: 0xD7A5, + 23110 - 19968: 0xF7E8, + 23113 - 19968: 0xE8C6, + 23130 - 19968: 0xFBE6, + 23138 - 19968: 0xDDE6, + 23142 - 19968: 0xDCFE, + 23186 - 19968: 0xD8DA, + 23194 - 19968: 0xDAAC, + 23195 - 19968: 0xEAB0, + 23204 - 19968: 0xE3B8, + 23233 - 19968: 0xCAAA, + 23234 - 19968: 0xE1F9, + 23236 - 19968: 0xEAB1, + 23241 - 19968: 0xF2EC, + 23244 - 19968: 0xFAEE, + 23265 - 19968: 0xEED5, + 23270 - 19968: 0xF9F4, + 23273 - 19968: 0xD2EC, + 23301 - 19968: 0xFBFB, + 23305 - 19968: 0xFDF0, + 23307 - 19968: 0xE0BD, + 23308 - 19968: 0xCEE3, + 23318 - 19968: 0xF8C6, + 23338 - 19968: 0xDEAE, + 23360 - 19968: 0xDFC5, + 23363 - 19968: 0xE5BE, + 23376 - 19968: 0xEDAD, + 23377 - 19968: 0xFAEA, + 23380 - 19968: 0xCDEE, + 23381 - 19968: 0xEDA6, + 23383 - 19968: 0xEDAE, + 23384 - 19968: 0xF0ED, + 23386 - 19968: 0xDDA1, + 23388 - 19968: 0xEDAF, + 23389 - 19968: 0xFCF8, + 23391 - 19968: 0xD8EB, + 23395 - 19968: 0xCCF9, + 23396 - 19968: 0xCDB5, + 23401 - 19968: 0xFAA9, + 23403 - 19968: 0xE1DD, + 23408 - 19968: 0xE2D5, + 23409 - 19968: 0xEDCF, + 23413 - 19968: 0xDDA2, + 23416 - 19968: 0xF9CA, + 23418 - 19968: 0xEAE8, + 23420 - 19968: 0xE5ED, + 23429 - 19968: 0xD3EB, + 23431 - 19968: 0xE9D4, + 23432 - 19968: 0xE1FA, + 23433 - 19968: 0xE4CC, + 23435 - 19968: 0xE1E4, + 23436 - 19968: 0xE8C7, + 23439 - 19968: 0xCEDB, + 23443 - 19968: 0xDCD5, + 23445 - 19968: 0xF7B5, + 23446 - 19968: 0xFCF3, + 23447 - 19968: 0xF0F3, + 23448 - 19968: 0xCEAF, + 23449 - 19968: 0xF1B5, + 23450 - 19968: 0xEFD2, + 23451 - 19968: 0xE8C8, + 23452 - 19968: 0xEBF1, + 23458 - 19968: 0xCBD4, + 23459 - 19968: 0xE0BE, + 23460 - 19968: 0xE3F8, + 23461 - 19968: 0xEAE9, + 23462 - 19968: 0xFCB2, + 23468 - 19968: 0xE0F4, + 23470 - 19968: 0xCFE0, + 23472 - 19968: 0xEEA5, + 23475 - 19968: 0xFAAA, + 23476 - 19968: 0xE6C3, + 23477 - 19968: 0xE1B2, + 23478 - 19968: 0xCAAB, + 23480 - 19968: 0xE3E4, + 23481 - 19968: 0xE9BB, + 23487 - 19968: 0xE2D6, + 23488 - 19968: 0xF3F2, + 23490 - 19968: 0xEED6, + 23491 - 19968: 0xEAB2, + 23492 - 19968: 0xD0F6, + 23493 - 19968: 0xECD9, + 23494 - 19968: 0xDACB, + 23495 - 19968: 0xCFA8, + 23500 - 19968: 0xDDA3, + 23504 - 19968: 0xD8DB, + 23506 - 19968: 0xF9CE, + 23507 - 19968: 0xE9D5, + 23508 - 19968: 0xE3D1, + 23511 - 19968: 0xD2BC, + 23518 - 19968: 0xD8AC, + 23519 - 19968: 0xF3CC, + 23521 - 19968: 0xCDFB, + 23522 - 19968: 0xF6D6, + 23524 - 19968: 0xE7F5, + 23525 - 19968: 0xE8EF, + 23526 - 19968: 0xE3F9, + 23527 - 19968: 0xD2BB, + 23528 - 19968: 0xF3F3, + 23529 - 19968: 0xE3FB, + 23531 - 19968: 0xDED0, + 23532 - 19968: 0xCEB0, + 23534 - 19968: 0xD6F7, + 23535 - 19968: 0xF1D9, + 23541 - 19968: 0xF5C1, + 23542 - 19968: 0xDCC4, + 23544 - 19968: 0xF5BB, + 23546 - 19968: 0xDED1, + 23553 - 19968: 0xDCE6, + 23556 - 19968: 0xDED2, + 23559 - 19968: 0xEDE2, + 23560 - 19968: 0xEEF6, + 23561 - 19968: 0xEACF, + 23562 - 19968: 0xF0EE, + 23563 - 19968: 0xE3FC, + 23565 - 19968: 0xD3DF, + 23566 - 19968: 0xD3F4, + 23567 - 19968: 0xE1B3, + 23569 - 19968: 0xE1B4, + 23574 - 19968: 0xF4D3, + 23577 - 19968: 0xDFC6, + 23588 - 19968: 0xE9D6, + 23592 - 19968: 0xDBAB, + 23601 - 19968: 0xF6A6, + 23608 - 19968: 0xE3B9, + 23609 - 19968: 0xEBC5, + 23610 - 19968: 0xF4A9, + 23611 - 19968: 0xCDB6, + 23612 - 19968: 0xD2F9, + 23614 - 19968: 0xDAAD, + 23615 - 19968: 0xD2E3, + 23616 - 19968: 0xCFD1, + 23621 - 19968: 0xCBDC, + 23622 - 19968: 0xCCFA, + 23624 - 19968: 0xCFDD, + 23627 - 19968: 0xE8A9, + 23629 - 19968: 0xE3BB, + 23630 - 19968: 0xE3BA, + 23633 - 19968: 0xE0DA, + 23637 - 19968: 0xEEF7, + 23643 - 19968: 0xDCB3, + 23648 - 19968: 0xD3F5, + 23650 - 19968: 0xD7A6, + 23652 - 19968: 0xF6B5, + 23653 - 19968: 0xD7DB, + 23660 - 19968: 0xE1D5, + 23663 - 19968: 0xD4EA, + 23665 - 19968: 0xDFA3, + 23673 - 19968: 0xFDDF, + 23696 - 19968: 0xD0F7, + 23697 - 19968: 0xEDD4, + 23713 - 19968: 0xCBAA, + 23721 - 19968: 0xE4DB, + 23723 - 19968: 0xE1FB, + 23724 - 19968: 0xCBA2, + 23729 - 19968: 0xD3E0, + 23731 - 19968: 0xE4BF, + 23733 - 19968: 0xFBC0, + 23735 - 19968: 0xDABE, + 23736 - 19968: 0xE4CD, + 23738 - 19968: 0xD6B9, + 23742 - 19968: 0xEFC0, + 23744 - 19968: 0xE1FC, + 23769 - 19968: 0xF6B9, + 23776 - 19968: 0xDFC7, + 23784 - 19968: 0xE4B1, + 23791 - 19968: 0xDCE7, + 23792 - 19968: 0xDCE8, + 23796 - 19968: 0xFAD6, + 23798 - 19968: 0xD3F6, + 23803 - 19968: 0xF1DA, + 23805 - 19968: 0xFAF2, + 23815 - 19968: 0xE2FD, + 23821 - 19968: 0xD5CF, + 23822 - 19968: 0xD0F8, + 23825 - 19968: 0xCDDF, + 23828 - 19968: 0xF5CB, + 23830 - 19968: 0xE4F0, + 23831 - 19968: 0xCBAB, + 23833 - 19968: 0xD7C4, + 23847 - 19968: 0xE2FE, + 23849 - 19968: 0xDDDA, + 23883 - 19968: 0xDAAE, + 23884 - 19968: 0xCAEE, + 23888 - 19968: 0xD5B9, + 23913 - 19968: 0xE3A1, + 23916 - 19968: 0xE8E3, + 23919 - 19968: 0xF3AB, + 23943 - 19968: 0xCFA9, + 23947 - 19968: 0xD3F7, + 23965 - 19968: 0xD4F1, + 23968 - 19968: 0xCEE4, + 23970 - 19968: 0xE8F2, + 23978 - 19968: 0xE5F5, + 23992 - 19968: 0xE7AE, + 23994 - 19968: 0xD6BA, + 23996 - 19968: 0xDFEC, + 23997 - 19968: 0xE4C0, + 24013 - 19968: 0xE8E4, + 24018 - 19968: 0xD8B5, + 24022 - 19968: 0xE4DC, + 24029 - 19968: 0xF4B9, + 24030 - 19968: 0xF1B6, + 24033 - 19968: 0xE2DE, + 24034 - 19968: 0xE1B5, + 24037 - 19968: 0xCDEF, + 24038 - 19968: 0xF1A7, + 24039 - 19968: 0xCEE5, + 24040 - 19968: 0xCBDD, + 24043 - 19968: 0xD9E3, + 24046 - 19968: 0xF3AC, + 24049 - 19968: 0xD0F9, + 24050 - 19968: 0xECAB, + 24051 - 19968: 0xDED3, + 24052 - 19968: 0xF7E9, + 24055 - 19968: 0xF9F5, + 24061 - 19968: 0xE1DE, + 24062 - 19968: 0xCBEE, + 24066 - 19968: 0xE3BC, + 24067 - 19968: 0xF8D6, + 24070 - 19968: 0xDBEE, + 24076 - 19968: 0xFDF1, + 24081 - 19968: 0xF7B6, + 24086 - 19968: 0xF4DE, + 24089 - 19968: 0xF2ED, + 24091 - 19968: 0xDBD9, + 24093 - 19968: 0xF0A8, + 24101 - 19968: 0xE1FD, + 24107 - 19968: 0xDED4, + 24109 - 19968: 0xE0AC, + 24115 - 19968: 0xEDE3, + 24118 - 19968: 0xD3E1, + 24120 - 19968: 0xDFC8, + 24125 - 19968: 0xD9B6, + 24127 - 19968: 0xFDAC, + 24128 - 19968: 0xEFD3, + 24132 - 19968: 0xE4C1, + 24133 - 19968: 0xF8EB, + 24135 - 19968: 0xDBAC, + 24140 - 19968: 0xFCC6, + 24149 - 19968: 0xD8AD, + 24159 - 19968: 0xF6BA, + 24161 - 19968: 0xDBDF, + 24162 - 19968: 0xD3D3, + 24163 - 19968: 0xF8C7, + 24178 - 19968: 0xCACE, + 24179 - 19968: 0xF8C1, + 24180 - 19968: 0xD2B4, + 24183 - 19968: 0xDCB4, + 24184 - 19968: 0xFAB9, + 24185 - 19968: 0xCACF, + 24187 - 19968: 0xFCB3, + 24188 - 19968: 0xEAEA, + 24189 - 19968: 0xEAEB, + 24190 - 19968: 0xD0FA, + 24196 - 19968: 0xEDE4, + 24199 - 19968: 0xDDE7, + 24202 - 19968: 0xDFC9, + 24207 - 19968: 0xDFED, + 24213 - 19968: 0xEEBC, + 24215 - 19968: 0xEFC1, + 24218 - 19968: 0xCCD2, + 24220 - 19968: 0xDDA4, + 24224 - 19968: 0xDFCA, + 24230 - 19968: 0xD3F8, + 24231 - 19968: 0xF1A8, + 24235 - 19968: 0xCDB7, + 24237 - 19968: 0xEFD4, + 24245 - 19968: 0xE4DD, + 24246 - 19968: 0xDFEE, + 24247 - 19968: 0xCBAC, + 24248 - 19968: 0xE9BC, + 24254 - 19968: 0xEAEC, + 24258 - 19968: 0xDFCB, + 24264 - 19968: 0xF9BF, + 24265 - 19968: 0xD6AF, + 24266 - 19968: 0xD5C6, + 24272 - 19968: 0xCFAA, + 24275 - 19968: 0xCEA9, + 24278 - 19968: 0xD6F8, + 24282 - 19968: 0xF1B7, + 24283 - 19968: 0xEEF8, + 24287 - 19968: 0xD9D9, + 24288 - 19968: 0xF3DF, + 24290 - 19968: 0xF8C8, + 24291 - 19968: 0xCEC6, + 24300 - 19968: 0xD5E6, + 24307 - 19968: 0xF4E6, + 24310 - 19968: 0xE6C5, + 24311 - 19968: 0xEFD5, + 24314 - 19968: 0xCBEF, + 24315 - 19968: 0xFCDF, + 24321 - 19968: 0xDCA7, + 24324 - 19968: 0xD6E7, + 24330 - 19968: 0xF8C9, + 24335 - 19968: 0xE3D2, + 24337 - 19968: 0xE3BD, + 24339 - 19968: 0xCFE1, + 24340 - 19968: 0xF0C0, + 24341 - 19968: 0xECDA, + 24343 - 19968: 0xDDD7, + 24344 - 19968: 0xFBF0, + 24347 - 19968: 0xECAC, + 24351 - 19968: 0xF0A9, + 24358 - 19968: 0xFAD7, + 24359 - 19968: 0xFBC1, + 24361 - 19968: 0xD2C0, + 24369 - 19968: 0xE5B0, + 24373 - 19968: 0xEDE5, + 24378 - 19968: 0xCBAD, + 24380 - 19968: 0xF9B0, + 24392 - 19968: 0xF7A5, + 24394 - 19968: 0xCBAE, + 24396 - 19968: 0xDAAF, + 24398 - 19968: 0xD8B6, + 24406 - 19968: 0xD3A7, + 24407 - 19968: 0xFBB2, + 24409 - 19968: 0xFDC4, + 24411 - 19968: 0xECAD, + 24418 - 19968: 0xFBA1, + 24422 - 19968: 0xE5E9, + 24423 - 19968: 0xE9EE, + 24425 - 19968: 0xF3F4, + 24426 - 19968: 0xF8F3, + 24427 - 19968: 0xF0C1, + 24428 - 19968: 0xDEAF, + 24429 - 19968: 0xF8B0, + 24432 - 19968: 0xF3E0, + 24433 - 19968: 0xE7AF, + 24439 - 19968: 0xDBAD, + 24441 - 19968: 0xE6B5, + 24444 - 19968: 0xF9A8, + 24447 - 19968: 0xDDD8, + 24448 - 19968: 0xE8D9, + 24449 - 19968: 0xEFD6, + 24453 - 19968: 0xD3E2, + 24455 - 19968: 0xE2DF, + 24458 - 19968: 0xFCE0, + 24459 - 19968: 0xD7C8, + 24460 - 19968: 0xFDAD, + 24464 - 19968: 0xDFEF, + 24465 - 19968: 0xCCD3, + 24466 - 19968: 0xD3F9, + 24471 - 19968: 0xD4F0, + 24472 - 19968: 0xDBC7, + 24473 - 19968: 0xDED5, + 24478 - 19968: 0xF0F4, + 24480 - 19968: 0xD5D0, + 24481 - 19968: 0xE5D9, + 24488 - 19968: 0xFCC7, + 24489 - 19968: 0xDCD6, + 24490 - 19968: 0xE2E0, + 24494 - 19968: 0xDAB0, + 24501 - 19968: 0xF3A3, + 24503 - 19968: 0xD3EC, + 24505 - 19968: 0xF4CB, + 24509 - 19968: 0xFDC5, + 24515 - 19968: 0xE3FD, + 24517 - 19968: 0xF9B1, + 24524 - 19968: 0xD0FB, + 24525 - 19968: 0xECDB, + 24534 - 19968: 0xF5BC, + 24535 - 19968: 0xF2A4, + 24536 - 19968: 0xD8CE, + 24537 - 19968: 0xD8CF, + 24544 - 19968: 0xF5F7, + 24555 - 19968: 0xF6E1, + 24565 - 19968: 0xD2B7, + 24573 - 19968: 0xFBEC, + 24575 - 19968: 0xDDC8, + 24591 - 19968: 0xE4E8, + 24594 - 19968: 0xD2C1, + 24598 - 19968: 0xF8D7, + 24604 - 19968: 0xD6BB, + 24605 - 19968: 0xDED6, + 24608 - 19968: 0xF7BD, + 24609 - 19968: 0xECAE, + 24613 - 19968: 0xD0E1, + 24615 - 19968: 0xE0F5, + 24616 - 19968: 0xEAB3, + 24618 - 19968: 0xCED6, + 24623 - 19968: 0xCCA5, + 24641 - 19968: 0xECF6, + 24642 - 19968: 0xE2E1, + 24643 - 19968: 0xE3BE, + 24653 - 19968: 0xFCC8, + 24656 - 19968: 0xCDF0, + 24658 - 19968: 0xF9F6, + 24661 - 19968: 0xDFF0, + 24665 - 19968: 0xE5BF, + 24669 - 19968: 0xCEBF, + 24674 - 19968: 0xFCE1, + 24675 - 19968: 0xEDB0, + 24676 - 19968: 0xFDD1, + 24677 - 19968: 0xF6BB, + 24680 - 19968: 0xF9CF, + 24681 - 19968: 0xEBDA, + 24682 - 19968: 0xCAC1, + 24684 - 19968: 0xD2B8, + 24685 - 19968: 0xCDF1, + 24687 - 19968: 0xE3D3, + 24688 - 19968: 0xFDE6, + 24709 - 19968: 0xE6ED, + 24713 - 19968: 0xE3FA, + 24716 - 19968: 0xF0AA, + 24717 - 19968: 0xF9D0, + 24724 - 19968: 0xFCE2, + 24726 - 19968: 0xF8A7, + 24730 - 19968: 0xE1E5, + 24731 - 19968: 0xEEF9, + 24735 - 19968: 0xE7F6, + 24736 - 19968: 0xEAED, + 24739 - 19968: 0xFCB4, + 24740 - 19968: 0xF5C2, + 24743 - 19968: 0xD7DC, + 24752 - 19968: 0xF0F5, + 24754 - 19968: 0xDDE8, + 24755 - 19968: 0xD3ED, + 24756 - 19968: 0xF5FC, + 24758 - 19968: 0xDABF, + 24760 - 19968: 0xCCFB, + 24764 - 19968: 0xD3FA, + 24765 - 19968: 0xF4A4, + 24773 - 19968: 0xEFD7, + 24775 - 19968: 0xD4C3, + 24785 - 19968: 0xFBE3, + 24794 - 19968: 0xFBED, + 24796 - 19968: 0xE0AD, + 24799 - 19968: 0xEAEE, + 24800 - 19968: 0xFBB3, + 24801 - 19968: 0xE4C2, + 24816 - 19968: 0xF6E7, + 24817 - 19968: 0xD2DD, + 24819 - 19968: 0xDFCC, + 24822 - 19968: 0xFCC9, + 24825 - 19968: 0xE5A9, + 24826 - 19968: 0xE0F6, + 24827 - 19968: 0xF6B3, + 24833 - 19968: 0xE1FE, + 24838 - 19968: 0xCBF0, + 24840 - 19968: 0xEAEF, + 24841 - 19968: 0xEAF0, + 24845 - 19968: 0xDAC0, + 24846 - 19968: 0xF8B4, + 24847 - 19968: 0xEBF2, + 24853 - 19968: 0xE4C3, + 24858 - 19968: 0xE9D7, + 24859 - 19968: 0xE4F1, + 24863 - 19968: 0xCAEF, + 24871 - 19968: 0xCED7, + 24880 - 19968: 0xFCCA, + 24884 - 19968: 0xF3E1, + 24887 - 19968: 0xCBC4, + 24892 - 19968: 0xE3E5, + 24894 - 19968: 0xCBC5, + 24895 - 19968: 0xEAB4, + 24898 - 19968: 0xE9BD, + 24900 - 19968: 0xD7C9, + 24903 - 19968: 0xEBDB, + 24904 - 19968: 0xEDB1, + 24906 - 19968: 0xCCC3, + 24907 - 19968: 0xF7BE, + 24908 - 19968: 0xFCCB, + 24915 - 19968: 0xF8F4, + 24917 - 19968: 0xD9B7, + 24920 - 19968: 0xF3D3, + 24921 - 19968: 0xF3D4, + 24925 - 19968: 0xF7E4, + 24927 - 19968: 0xF7D1, + 24930 - 19968: 0xD8B7, + 24931 - 19968: 0xCEB1, + 24932 - 19968: 0xCAC2, + 24935 - 19968: 0xFBB4, + 24936 - 19968: 0xCBC6, + 24939 - 19968: 0xF0F6, + 24942 - 19968: 0xD5E7, + 24944 - 19968: 0xEAD0, + 24950 - 19968: 0xCCD4, + 24951 - 19968: 0xCBAF, + 24957 - 19968: 0xF4AA, + 24958 - 19968: 0xE9AF, + 24961 - 19968: 0xF5C3, + 24962 - 19968: 0xE9D8, + 24970 - 19968: 0xDDE9, + 24974 - 19968: 0xF1F3, + 24976 - 19968: 0xD5FB, + 24977 - 19968: 0xDEBB, + 24980 - 19968: 0xF4FB, + 24984 - 19968: 0xFDF3, + 24985 - 19968: 0xFDF2, + 24986 - 19968: 0xF7A6, + 24996 - 19968: 0xDDC9, + 24999 - 19968: 0xD4D3, + 25001 - 19968: 0xCCA8, + 25003 - 19968: 0xDAC1, + 25004 - 19968: 0xCCD5, + 25006 - 19968: 0xD9E4, + 25010 - 19968: 0xFACA, + 25014 - 19968: 0xE5E3, + 25018 - 19968: 0xD3BC, + 25022 - 19968: 0xCAF0, + 25027 - 19968: 0xD0C4, + 25031 - 19968: 0xCAD0, + 25032 - 19968: 0xFAAB, + 25033 - 19968: 0xEBEB, + 25034 - 19968: 0xE7F8, + 25035 - 19968: 0xD9E5, + 25062 - 19968: 0xD1D7, + 25074 - 19968: 0xF3A4, + 25078 - 19968: 0xD4FB, + 25079 - 19968: 0xFCE3, + 25080 - 19968: 0xFAD8, + 25082 - 19968: 0xF3D5, + 25084 - 19968: 0xCFAB, + 25087 - 19968: 0xEBF3, + 25088 - 19968: 0xD5FC, + 25095 - 19968: 0xD3D4, + 25096 - 19968: 0xCDFC, + 25098 - 19968: 0xD9E6, + 25100 - 19968: 0xE2F9, + 25101 - 19968: 0xE2A1, + 25102 - 19968: 0xEBD4, + 25104 - 19968: 0xE0F7, + 25105 - 19968: 0xE4B2, + 25106 - 19968: 0xCCFC, + 25110 - 19968: 0xFBE4, + 25114 - 19968: 0xF4AB, + 25119 - 19968: 0xD0BD, + 25121 - 19968: 0xCAF1, + 25130 - 19968: 0xEFB8, + 25134 - 19968: 0xD7C0, + 25136 - 19968: 0xEEFA, + 25137 - 19968: 0xFDF4, + 25140 - 19968: 0xD3E3, + 25142 - 19968: 0xFBC2, + 25150 - 19968: 0xD5E8, + 25151 - 19968: 0xDBAE, + 25152 - 19968: 0xE1B6, + 25153 - 19968: 0xF8B7, + 25159 - 19968: 0xE0BF, + 25160 - 19968: 0xFBC3, + 25161 - 19968: 0xDDEA, + 25163 - 19968: 0xE2A2, + 25165 - 19968: 0xEEA6, + 25171 - 19968: 0xF6E8, + 25176 - 19968: 0xF6F5, + 25198 - 19968: 0xDDCA, + 25201 - 19968: 0xD0E2, + 25206 - 19968: 0xDDA6, + 25209 - 19968: 0xDDEB, + 25212 - 19968: 0xE4F9, + 25215 - 19968: 0xE3AF, + 25216 - 19968: 0xD0FC, + 25220 - 19968: 0xF4FC, + 25225 - 19968: 0xCCBC, + 25226 - 19968: 0xF7EA, + 25233 - 19968: 0xE5E4, + 25234 - 19968: 0xDFF1, + 25237 - 19968: 0xF7E1, + 25239 - 19968: 0xF9F7, + 25240 - 19968: 0xEFB9, + 25243 - 19968: 0xF8D8, + 25259 - 19968: 0xF9A9, + 25265 - 19968: 0xF8D9, + 25269 - 19968: 0xEEBD, + 25273 - 19968: 0xD8C6, + 25276 - 19968: 0xE4E3, + 25277 - 19968: 0xF5CE, + 25282 - 19968: 0xDDD9, + 25287 - 19968: 0xD9E7, + 25288 - 19968: 0xD2B9, + 25289 - 19968: 0xD5C3, + 25292 - 19968: 0xDAE5, + 25293 - 19968: 0xDAD0, + 25295 - 19968: 0xD1D9, + 25296 - 19968: 0xCED8, + 25298 - 19968: 0xCBDE, + 25299 - 19968: 0xF4AC, + 25300 - 19968: 0xDAFB, + 25302 - 19968: 0xF6E9, + 25303 - 19968: 0xE8F3, + 25304 - 19968: 0xCFAC, + 25305 - 19968: 0xF0F0, + 25307 - 19968: 0xF4FD, + 25308 - 19968: 0xDBC8, + 25324 - 19968: 0xCEC0, + 25325 - 19968: 0xE3D4, + 25326 - 19968: 0xD1CF, + 25327 - 19968: 0xF1F5, + 25329 - 19968: 0xCDF2, + 25331 - 19968: 0xCFEB, + 25335 - 19968: 0xCDB8, + 25342 - 19968: 0xE3A6, + 25343 - 19968: 0xD1DA, + 25345 - 19968: 0xF2A5, + 25351 - 19968: 0xF2A6, + 25353 - 19968: 0xE4CE, + 25361 - 19968: 0xD3FB, + 25387 - 19968: 0xF1A9, + 25391 - 19968: 0xF2C9, + 25402 - 19968: 0xEFD8, + 25403 - 19968: 0xE6C9, + 25405 - 19968: 0xD8B8, + 25406 - 19968: 0xFAF3, + 25417 - 19968: 0xF3B5, + 25420 - 19968: 0xF8A4, + 25423 - 19968: 0xD1F3, + 25424 - 19968: 0xE6C8, + 25429 - 19968: 0xF8DA, + 25447 - 19968: 0xDCE9, + 25448 - 19968: 0xDED7, + 25454 - 19968: 0xCBDF, + 25458 - 19968: 0xCFEC, + 25463 - 19968: 0xF4DF, + 25466 - 19968: 0xD1F4, + 25467 - 19968: 0xD2BA, + 25471 - 19968: 0xDFF2, + 25475 - 19968: 0xE1B7, + 25480 - 19968: 0xE2A3, + 25481 - 19968: 0xD3FC, + 25484 - 19968: 0xEDE6, + 25490 - 19968: 0xDBC9, + 25494 - 19968: 0xE4FA, + 25496 - 19968: 0xCFDE, + 25499 - 19968: 0xCED0, + 25504 - 19968: 0xD5D3, + 25505 - 19968: 0xF3F5, + 25506 - 19968: 0xF7AE, + 25509 - 19968: 0xEFC8, + 25511 - 19968: 0xCDF3, + 25512 - 19968: 0xF5CF, + 25513 - 19968: 0xE5F3, + 25514 - 19968: 0xF0C2, + 25536 - 19968: 0xCAD1, + 25540 - 19968: 0xEAF1, + 25542 - 19968: 0xD0A6, + 25551 - 19968: 0xD9DA, + 25552 - 19968: 0xF0AB, + 25558 - 19968: 0xEBE7, + 25562 - 19968: 0xE5C0, + 25563 - 19968: 0xFCB5, + 25569 - 19968: 0xE4C4, + 25581 - 19968: 0xCCA9, + 25582 - 19968: 0xFDC6, + 25588 - 19968: 0xEAB5, + 25590 - 19968: 0xE5AA, + 25591 - 19968: 0xDFBA, + 25613 - 19968: 0xE1DF, + 25615 - 19968: 0xDAD1, + 25620 - 19968: 0xE1B8, + 25622 - 19968: 0xE8F4, + 25623 - 19968: 0xD3FD, + 25628 - 19968: 0xE2A4, + 25634 - 19968: 0xF2CA, + 25644 - 19968: 0xDAE6, + 25645 - 19968: 0xF7B3, + 25658 - 19968: 0xFDCD, + 25662 - 19968: 0xF3B6, + 25688 - 19968: 0xEED7, + 25696 - 19968: 0xF5C4, + 25705 - 19968: 0xD8A4, + 25711 - 19968: 0xF2A7, + 25720 - 19968: 0xD9B8, + 25721 - 19968: 0xD9B9, + 25722 - 19968: 0xEFC9, + 25736 - 19968: 0xD6CE, + 25745 - 19968: 0xF7CB, + 25746 - 19968: 0xDFAE, + 25747 - 19968: 0xE8F5, + 25754 - 19968: 0xD2B5, + 25758 - 19968: 0xD3D5, + 25764 - 19968: 0xF4CC, + 25765 - 19968: 0xDAFC, + 25771 - 19968: 0xD9E8, + 25773 - 19968: 0xF7EB, + 25774 - 19968: 0xF5C9, + 25776 - 19968: 0xF3BC, + 25778 - 19968: 0xDAD2, + 25787 - 19968: 0xD3B5, + 25793 - 19968: 0xE8B6, + 25796 - 19968: 0xD6CF, + 25797 - 19968: 0xF4BA, + 25799 - 19968: 0xF7C9, + 25802 - 19968: 0xCCAA, + 25805 - 19968: 0xF0C3, + 25806 - 19968: 0xCCD6, + 25810 - 19968: 0xD0D3, + 25812 - 19968: 0xD3BD, + 25816 - 19968: 0xDBFB, + 25818 - 19968: 0xCBE0, + 25825 - 19968: 0xD3E4, + 25826 - 19968: 0xF6F7, + 25829 - 19968: 0xD5BA, + 25830 - 19968: 0xF3CD, + 25831 - 19968: 0xCBE1, + 25836 - 19968: 0xEBF4, + 25842 - 19968: 0xF4AD, + 25844 - 19968: 0xFCAA, + 25850 - 19968: 0xF7EC, + 25854 - 19968: 0xE8F6, + 25856 - 19968: 0xDAE7, + 25860 - 19968: 0xF7CC, + 25880 - 19968: 0xE5C1, + 25885 - 19968: 0xE0EE, + 25891 - 19968: 0xD5FD, + 25898 - 19968: 0xCEE6, + 25899 - 19968: 0xFCAB, + 25900 - 19968: 0xD5BB, + 25903 - 19968: 0xF2A8, + 25910 - 19968: 0xE2A5, + 25911 - 19968: 0xCDB9, + 25912 - 19968: 0xEAF2, + 25913 - 19968: 0xCBC7, + 25915 - 19968: 0xCDF4, + 25918 - 19968: 0xDBAF, + 25919 - 19968: 0xEFD9, + 25925 - 19968: 0xCDBA, + 25928 - 19968: 0xFCF9, + 25933 - 19968: 0xDFF3, + 25934 - 19968: 0xCEE7, + 25935 - 19968: 0xDAC2, + 25937 - 19968: 0xCFAD, + 25942 - 19968: 0xE7F9, + 25943 - 19968: 0xF8A8, + 25950 - 19968: 0xF3E2, + 25954 - 19968: 0xCAF2, + 25955 - 19968: 0xDFA4, + 25958 - 19968: 0xD4C4, + 25964 - 19968: 0xCCD7, + 25965 - 19968: 0xE5C2, + 25970 - 19968: 0xCDBB, + 25972 - 19968: 0xEFDA, + 25973 - 19968: 0xEED8, + 25975 - 19968: 0xDDA7, + 25976 - 19968: 0xE2A6, + 25982 - 19968: 0xE0C0, + 25986 - 19968: 0xD6B0, + 25987 - 19968: 0xF8CA, + 25989 - 19968: 0xFCFA, + 25991 - 19968: 0xD9FE, + 25996 - 19968: 0xDEB0, + 26000 - 19968: 0xDDEC, + 26001 - 19968: 0xDAE8, + 26007 - 19968: 0xD4E0, + 26009 - 19968: 0xD6F9, + 26011 - 19968: 0xCDD7, + 26012 - 19968: 0xDED8, + 26015 - 19968: 0xF2F8, + 26017 - 19968: 0xE4D6, + 26020 - 19968: 0xD0C5, + 26021 - 19968: 0xF4AE, + 26023 - 19968: 0xDDA8, + 26027 - 19968: 0xEDC5, + 26028 - 19968: 0xF3D6, + 26031 - 19968: 0xDED9, + 26032 - 19968: 0xE3E6, + 26039 - 19968: 0xD3A8, + 26041 - 19968: 0xDBB0, + 26044 - 19968: 0xE5DA, + 26045 - 19968: 0xE3BF, + 26049 - 19968: 0xDBB1, + 26053 - 19968: 0xD5E9, + 26059 - 19968: 0xE0C1, + 26060 - 19968: 0xEFDB, + 26063 - 19968: 0xF0E9, + 26066 - 19968: 0xD7B2, + 26071 - 19968: 0xD0FD, + 26080 - 19968: 0xD9E9, + 26083 - 19968: 0xD0FE, + 26085 - 19968: 0xECED, + 26086 - 19968: 0xD3A9, + 26088 - 19968: 0xF2A9, + 26089 - 19968: 0xF0C4, + 26092 - 19968: 0xE2E2, + 26093 - 19968: 0xE9EF, + 26097 - 19968: 0xF9D1, + 26100 - 19968: 0xE9D9, + 26106 - 19968: 0xE8DA, + 26107 - 19968: 0xDAC3, + 26108 - 19968: 0xDAC4, + 26109 - 19968: 0xD4C5, + 26111 - 19968: 0xE7FA, + 26118 - 19968: 0xCDE0, + 26119 - 19968: 0xE3B0, + 26121 - 19968: 0xDBB2, + 26122 - 19968: 0xFBC4, + 26124 - 19968: 0xF3E3, + 26126 - 19968: 0xD9A5, + 26127 - 19968: 0xFBE7, + 26128 - 19968: 0xDDCB, + 26129 - 19968: 0xD0D4, + 26131 - 19968: 0xE6B6, + 26132 - 19968: 0xE0AE, + 26133 - 19968: 0xFDDA, + 26142 - 19968: 0xDCB5, + 26143 - 19968: 0xE0F8, + 26144 - 19968: 0xE7B1, + 26149 - 19968: 0xF5F0, + 26151 - 19968: 0xD8DC, + 26152 - 19968: 0xEDC6, + 26157 - 19968: 0xE1B9, + 26159 - 19968: 0xE3C0, + 26160 - 19968: 0xF9C0, + 26161 - 19968: 0xE9F0, + 26164 - 19968: 0xD9DB, + 26166 - 19968: 0xF3E4, + 26170 - 19968: 0xDCB6, + 26171 - 19968: 0xE4E9, + 26177 - 19968: 0xF0C5, + 26178 - 19968: 0xE3C1, + 26179 - 19968: 0xFCCC, + 26180 - 19968: 0xFCCD, + 26185 - 19968: 0xF2CB, + 26187 - 19968: 0xF2CC, + 26191 - 19968: 0xE4CF, + 26201 - 19968: 0xF1DB, + 26203 - 19968: 0xFAD9, + 26205 - 19968: 0xF1B8, + 26206 - 19968: 0xFDF5, + 26207 - 19968: 0xE0F9, + 26212 - 19968: 0xE7FB, + 26213 - 19968: 0xFCB7, + 26214 - 19968: 0xFCE4, + 26215 - 19968: 0xFBC5, + 26216 - 19968: 0xE3E7, + 26217 - 19968: 0xD8B9, + 26219 - 19968: 0xF6F8, + 26222 - 19968: 0xDCC5, + 26223 - 19968: 0xCCD8, + 26227 - 19968: 0xE0AF, + 26228 - 19968: 0xF4E7, + 26230 - 19968: 0xEFDC, + 26231 - 19968: 0xCFFC, + 26232 - 19968: 0xEFDD, + 26234 - 19968: 0xF2AA, + 26244 - 19968: 0xFDBE, + 26247 - 19968: 0xCAAC, + 26248 - 19968: 0xFDBB, + 26249 - 19968: 0xFDC7, + 26254 - 19968: 0xE7B2, + 26256 - 19968: 0xEAD1, + 26257 - 19968: 0xDFF4, + 26262 - 19968: 0xD1EC, + 26263 - 19968: 0xE4DE, + 26264 - 19968: 0xE5C3, + 26269 - 19968: 0xD9A6, + 26272 - 19968: 0xCDBC, + 26274 - 19968: 0xF3E5, + 26283 - 19968: 0xEDD5, + 26286 - 19968: 0xD9BA, + 26290 - 19968: 0xEDE7, + 26291 - 19968: 0xFBB5, + 26292 - 19968: 0xF8EC, + 26297 - 19968: 0xE0E7, + 26299 - 19968: 0xCCD9, + 26302 - 19968: 0xD4C6, + 26308 - 19968: 0xE7A5, + 26310 - 19968: 0xD5F5, + 26311 - 19968: 0xD3BE, + 26313 - 19968: 0xFCFB, + 26326 - 19968: 0xE4F2, + 26329 - 19968: 0xDFF5, + 26332 - 19968: 0xE8F8, + 26333 - 19968: 0xF8ED, + 26336 - 19968: 0xCEC7, + 26342 - 19968: 0xFDF6, + 26352 - 19968: 0xE8D8, + 26354 - 19968: 0xCDD8, + 26355 - 19968: 0xE7D6, + 26356 - 19968: 0xCCDA, + 26359 - 19968: 0xCAE3, + 26360 - 19968: 0xDFF6, + 26361 - 19968: 0xF0C7, + 26362 - 19968: 0xF0C6, + 26364 - 19968: 0xD8BA, + 26366 - 19968: 0xF1F4, + 26367 - 19968: 0xF4F0, + 26368 - 19968: 0xF5CC, + 26371 - 19968: 0xFCE5, + 26376 - 19968: 0xEAC5, + 26377 - 19968: 0xEAF3, + 26379 - 19968: 0xDDDB, + 26381 - 19968: 0xDCD7, + 26388 - 19968: 0xDEFD, + 26389 - 19968: 0xF2F9, + 26391 - 19968: 0xD5C7, + 26395 - 19968: 0xD8D0, + 26397 - 19968: 0xF0C8, + 26398 - 19968: 0xD1A1, + 26399 - 19968: 0xD1A2, + 26406 - 19968: 0xD9D4, + 26407 - 19968: 0xD6E8, + 26408 - 19968: 0xD9CA, + 26410 - 19968: 0xDAB1, + 26411 - 19968: 0xD8C7, + 26412 - 19968: 0xDCE2, + 26413 - 19968: 0xF3CE, + 26414 - 19968: 0xF5F4, + 26417 - 19968: 0xF1B9, + 26420 - 19968: 0xDAD3, + 26422 - 19968: 0xF6EA, + 26426 - 19968: 0xCFF5, + 26429 - 19968: 0xFDAE, + 26438 - 19968: 0xCAD2, + 26441 - 19968: 0xDFB4, + 26446 - 19968: 0xD7DD, + 26447 - 19968: 0xFABA, + 26448 - 19968: 0xEEA7, + 26449 - 19968: 0xF5BD, + 26451 - 19968: 0xF8F5, + 26454 - 19968: 0xEDE8, + 26460 - 19968: 0xD4E1, + 26462 - 19968: 0xD1A3, + 26463 - 19968: 0xE1D6, + 26477 - 19968: 0xF9F8, + 26479 - 19968: 0xDBCA, + 26480 - 19968: 0xCBF9, + 26481 - 19968: 0xD4D4, + 26483 - 19968: 0xD9DC, + 26485 - 19968: 0xEEBE, + 26487 - 19968: 0xF7ED, + 26491 - 19968: 0xD2EE, + 26494 - 19968: 0xE1E6, + 26495 - 19968: 0xF7F9, + 26503 - 19968: 0xDDED, + 26505 - 19968: 0xE8DB, + 26507 - 19968: 0xDBB3, + 26511 - 19968: 0xD1F7, + 26512 - 19968: 0xE0B0, + 26515 - 19968: 0xD4E2, + 26517 - 19968: 0xF6D7, + 26519 - 19968: 0xD7F9, + 26522 - 19968: 0xD8DD, + 26524 - 19968: 0xCDFD, + 26525 - 19968: 0xF2AB, + 26543 - 19968: 0xCDBD, + 26544 - 19968: 0xF8C2, + 26547 - 19968: 0xF2AC, + 26550 - 19968: 0xCAAD, + 26551 - 19968: 0xCAAE, + 26552 - 19968: 0xCFAE, + 26558 - 19968: 0xE3C2, + 26564 - 19968: 0xDCB7, + 26575 - 19968: 0xDBDA, + 26576 - 19968: 0xD9BB, + 26577 - 19968: 0xCAF3, + 26578 - 19968: 0xF6D3, + 26579 - 19968: 0xE6F8, + 26580 - 19968: 0xEAF5, + 26586 - 19968: 0xEAF6, + 26589 - 19968: 0xF6F9, + 26601 - 19968: 0xCFAF, + 26604 - 19968: 0xCAD3, + 26607 - 19968: 0xCAAF, + 26608 - 19968: 0xD2B0, + 26609 - 19968: 0xF1BA, + 26611 - 19968: 0xD7B3, + 26612 - 19968: 0xE3C3, + 26613 - 19968: 0xF3FD, + 26614 - 19968: 0xDEDA, + 26619 - 19968: 0xDEDB, + 26622 - 19968: 0xEFDE, + 26642 - 19968: 0xE2E3, + 26643 - 19968: 0xEEFB, + 26646 - 19968: 0xDFF7, + 26647 - 19968: 0xD7CA, + 26657 - 19968: 0xCEE8, + 26658 - 19968: 0xDBDB, + 26666 - 19968: 0xF1BB, + 26671 - 19968: 0xE9F1, + 26680 - 19968: 0xFAB7, + 26681 - 19968: 0xD0C6, + 26684 - 19968: 0xCCAB, + 26685 - 19968: 0xEEA8, + 26688 - 19968: 0xCBFA, + 26689 - 19968: 0xF9F9, + 26690 - 19968: 0xCCFD, + 26691 - 19968: 0xD3FE, + 26696 - 19968: 0xE4D0, + 26702 - 19968: 0xF2EE, + 26704 - 19968: 0xD4D5, + 26705 - 19968: 0xDFCD, + 26707 - 19968: 0xFCB8, + 26708 - 19968: 0xD1D0, + 26733 - 19968: 0xF2CD, + 26742 - 19968: 0xF7D2, + 26751 - 19968: 0xCAD4, + 26753 - 19968: 0xD5D9, + 26757 - 19968: 0xD8DE, + 26767 - 19968: 0xCDD9, + 26771 - 19968: 0xEEA9, + 26772 - 19968: 0xF6BC, + 26775 - 19968: 0xCCDB, + 26781 - 19968: 0xF0C9, + 26783 - 19968: 0xFCFC, + 26785 - 19968: 0xE8C9, + 26786 - 19968: 0xF4FE, + 26791 - 19968: 0xE7FC, + 26792 - 19968: 0xD7DE, + 26797 - 19968: 0xDEDC, + 26799 - 19968: 0xF0AC, + 26800 - 19968: 0xCCFE, + 26801 - 19968: 0xCDE1, + 26803 - 19968: 0xE1BA, + 26805 - 19968: 0xDBEF, + 26806 - 19968: 0xDAB2, + 26820 - 19968: 0xD1A5, + 26821 - 19968: 0xDCB8, + 26825 - 19968: 0xD8F6, + 26827 - 19968: 0xD1A4, + 26829 - 19968: 0xCDE2, + 26834 - 19968: 0xDCEA, + 26837 - 19968: 0xF0F7, + 26839 - 19968: 0xF0CA, + 26840 - 19968: 0xD0BE, + 26842 - 19968: 0xDDDC, + 26847 - 19968: 0xD4D6, + 26848 - 19968: 0xD3D6, + 26855 - 19968: 0xEDD0, + 26856 - 19968: 0xCDA1, + 26862 - 19968: 0xDFB5, + 26866 - 19968: 0xDFF8, + 26873 - 19968: 0xD4A1, + 26874 - 19968: 0xCEB2, + 26880 - 19968: 0xE8CA, + 26885 - 19968: 0xEBF5, + 26893 - 19968: 0xE3D5, + 26894 - 19968: 0xF5D0, + 26898 - 19968: 0xF5A1, + 26919 - 19968: 0xD9A7, + 26928 - 19968: 0xE5AB, + 26941 - 19968: 0xE6CB, + 26943 - 19968: 0xF5F1, + 26954 - 19968: 0xE5C5, + 26963 - 19968: 0xF9A3, + 26964 - 19968: 0xE0DB, + 26965 - 19968: 0xF6EB, + 26967 - 19968: 0xCBF1, + 26969 - 19968: 0xD9EA, + 26970 - 19968: 0xF5A2, + 26974 - 19968: 0xD7D1, + 26976 - 19968: 0xD1F8, + 26977 - 19968: 0xEAF8, + 26978 - 19968: 0xEAF9, + 26979 - 19968: 0xDAB3, + 26984 - 19968: 0xEFDF, + 26987 - 19968: 0xF1EF, + 26989 - 19968: 0xE5F6, + 26990 - 19968: 0xEEBF, + 26991 - 19968: 0xE2E4, + 26997 - 19968: 0xD0BF, + 26999 - 19968: 0xFAAC, + 27000 - 19968: 0xF5D1, + 27001 - 19968: 0xE7B3, + 27029 - 19968: 0xE9BE, + 27035 - 19968: 0xF2CE, + 27036 - 19968: 0xDBB4, + 27045 - 19968: 0xFCCE, + 27047 - 19968: 0xDDEE, + 27054 - 19968: 0xE7B4, + 27060 - 19968: 0xD7B4, + 27067 - 19968: 0xF7B4, + 27073 - 19968: 0xCDBE, + 27075 - 19968: 0xDAE9, + 27083 - 19968: 0xCFB0, + 27084 - 19968: 0xF7D9, + 27085 - 19968: 0xF3E6, + 27088 - 19968: 0xCED9, + 27112 - 19968: 0xCEAA, + 27114 - 19968: 0xCBC8, + 27131 - 19968: 0xD0A7, + 27133 - 19968: 0xF0CB, + 27135 - 19968: 0xD0C7, + 27138 - 19968: 0xE4C5, + 27146 - 19968: 0xDBE0, + 27153 - 19968: 0xD5DA, + 27155 - 19968: 0xD7A7, + 27159 - 19968: 0xEEC0, + 27161 - 19968: 0xF8F6, + 27166 - 19968: 0xF5D2, + 27167 - 19968: 0xEDE9, + 27169 - 19968: 0xD9BC, + 27171 - 19968: 0xE5C6, + 27189 - 19968: 0xF5A3, + 27192 - 19968: 0xDAD4, + 27193 - 19968: 0xE2A7, + 27194 - 19968: 0xFBFC, + 27197 - 19968: 0xF1DC, + 27204 - 19968: 0xCAF4, + 27208 - 19968: 0xE8FA, + 27211 - 19968: 0xCEE9, + 27218 - 19968: 0xE9F8, + 27219 - 19968: 0xE2E5, + 27224 - 19968: 0xD0B9, + 27225 - 19968: 0xD4F2, + 27231 - 19968: 0xD1A6, + 27233 - 19968: 0xDFCE, + 27243 - 19968: 0xFCF4, + 27264 - 19968: 0xD3AA, + 27268 - 19968: 0xCCAC, + 27273 - 19968: 0xEFE0, + 27277 - 19968: 0xE5E5, + 27278 - 19968: 0xD0D5, + 27287 - 19968: 0xDBFC, + 27292 - 19968: 0xFCE6, + 27298 - 19968: 0xCBFE, + 27299 - 19968: 0xEDEA, + 27315 - 19968: 0xDEB1, + 27323 - 19968: 0xF9E3, + 27330 - 19968: 0xD4A2, + 27331 - 19968: 0xCFF6, + 27347 - 19968: 0xD6D0, + 27354 - 19968: 0xD5EA, + 27355 - 19968: 0xF1EE, + 27382 - 19968: 0xFACB, + 27387 - 19968: 0xE5A1, + 27396 - 19968: 0xD5B1, + 27402 - 19968: 0xCFED, + 27404 - 19968: 0xEDEB, + 27410 - 19968: 0xD5B2, + 27414 - 19968: 0xD5BC, + 27424 - 19968: 0xFDE2, + 27425 - 19968: 0xF3AD, + 27427 - 19968: 0xFDDB, + 27442 - 19968: 0xE9B0, + 27450 - 19968: 0xD1A7, + 27453 - 19968: 0xFDE3, + 27454 - 19968: 0xCEB3, + 27462 - 19968: 0xFDE4, + 27463 - 19968: 0xFACE, + 27468 - 19968: 0xCAB0, + 27470 - 19968: 0xF7A7, + 27472 - 19968: 0xCFB1, + 27487 - 19968: 0xE6A2, + 27489 - 19968: 0xFCB6, + 27490 - 19968: 0xF2AD, + 27491 - 19968: 0xEFE1, + 27492 - 19968: 0xF3AE, + 27493 - 19968: 0xDCC6, + 27494 - 19968: 0xD9EB, + 27498 - 19968: 0xE8E0, + 27506 - 19968: 0xE1A8, + 27511 - 19968: 0xD5F6, + 27512 - 19968: 0xCFFD, + 27515 - 19968: 0xDEDD, + 27519 - 19968: 0xD9D1, + 27523 - 19968: 0xE4EA, + 27524 - 19968: 0xF2CF, + 27526 - 19968: 0xF7BF, + 27529 - 19968: 0xE2E6, + 27530 - 19968: 0xE2A8, + 27542 - 19968: 0xE3D6, + 27544 - 19968: 0xEDD1, + 27550 - 19968: 0xE9F9, + 27566 - 19968: 0xD6B1, + 27567 - 19968: 0xDEB2, + 27570 - 19968: 0xE0E8, + 27573 - 19968: 0xD3AB, + 27575 - 19968: 0xEBDC, + 27578 - 19968: 0xDFAF, + 27580 - 19968: 0xCAC3, + 27583 - 19968: 0xEEFC, + 27585 - 19968: 0xFDC3, + 27589 - 19968: 0xEBF6, + 27590 - 19968: 0xCFB2, + 27595 - 19968: 0xD9EC, + 27597 - 19968: 0xD9BD, + 27599 - 19968: 0xD8DF, + 27602 - 19968: 0xD4B8, + 27603 - 19968: 0xEBBE, + 27604 - 19968: 0xDDEF, + 27606 - 19968: 0xDDF0, + 27607 - 19968: 0xDDF1, + 27608 - 19968: 0xDDF2, + 27611 - 19968: 0xD9BE, + 27627 - 19968: 0xFBC6, + 27628 - 19968: 0xCFB3, + 27656 - 19968: 0xEEFD, + 27663 - 19968: 0xE4AB, + 27665 - 19968: 0xDAC5, + 27667 - 19968: 0xD8EC, + 27683 - 19968: 0xD1A8, + 27700 - 19968: 0xE2A9, + 27703 - 19968: 0xDEBC, + 27704 - 19968: 0xE7B5, + 27710 - 19968: 0xDBF0, + 27712 - 19968: 0xEFE2, + 27713 - 19968: 0xF1F0, + 27714 - 19968: 0xCFB4, + 27726 - 19968: 0xDBF1, + 27728 - 19968: 0xE0B1, + 27733 - 19968: 0xDFA5, + 27735 - 19968: 0xF9D2, + 27738 - 19968: 0xE7FD, + 27741 - 19968: 0xE6A3, + 27742 - 19968: 0xFBF1, + 27743 - 19968: 0xCBB0, + 27744 - 19968: 0xF2AE, + 27752 - 19968: 0xCDE7, + 27754 - 19968: 0xE8DC, + 27757 - 19968: 0xE7D7, + 27760 - 19968: 0xF7C0, + 27762 - 19968: 0xD0E3, + 27766 - 19968: 0xDAA1, + 27770 - 19968: 0xCCBD, + 27773 - 19968: 0xD1A9, + 27774 - 19968: 0xDDCC, + 27777 - 19968: 0xE3FE, + 27778 - 19968: 0xD1AA, + 27779 - 19968: 0xE8AA, + 27781 - 19968: 0xEAB6, + 27782 - 19968: 0xF9FA, + 27783 - 19968: 0xE6CC, + 27784 - 19968: 0xF6D8, + 27788 - 19968: 0xD4C7, + 27792 - 19968: 0xD9CB, + 27794 - 19968: 0xD9D2, + 27795 - 19968: 0xD3CB, + 27796 - 19968: 0xD8F7, + 27797 - 19968: 0xDAA9, + 27798 - 19968: 0xF5F8, + 27801 - 19968: 0xDEDE, + 27802 - 19968: 0xF2AF, + 27803 - 19968: 0xF8A9, + 27819 - 19968: 0xD8C8, + 27822 - 19968: 0xEEC1, + 27827 - 19968: 0xF9C1, + 27832 - 19968: 0xDDF3, + 27833 - 19968: 0xEAFA, + 27835 - 19968: 0xF6BD, + 27836 - 19968: 0xE1BB, + 27837 - 19968: 0xCDBF, + 27838 - 19968: 0xF4D4, + 27839 - 19968: 0xE6CD, + 27841 - 19968: 0xFCCF, + 27842 - 19968: 0xFBA2, + 27844 - 19968: 0xE0DC, + 27849 - 19968: 0xF4BB, + 27850 - 19968: 0xDAD5, + 27852 - 19968: 0xF9B2, + 27859 - 19968: 0xFBF2, + 27861 - 19968: 0xDBF6, + 27863 - 19968: 0xDEDF, + 27867 - 19968: 0xDBF2, + 27873 - 19968: 0xF8DC, + 27874 - 19968: 0xF7EE, + 27875 - 19968: 0xEBE8, + 27877 - 19968: 0xD2FA, + 27880 - 19968: 0xF1BC, + 27883 - 19968: 0xFADA, + 27886 - 19968: 0xDAEA, + 27887 - 19968: 0xDAC6, + 27888 - 19968: 0xF7C1, + 27891 - 19968: 0xE7B6, + 27915 - 19968: 0xE5C7, + 27916 - 19968: 0xD6AC, + 27921 - 19968: 0xDCC7, + 27927 - 19968: 0xE1A9, + 27929 - 19968: 0xE2AA, + 27931 - 19968: 0xD5A6, + 27934 - 19968: 0xD4D7, + 27941 - 19968: 0xF2D0, + 27943 - 19968: 0xEAFB, + 27945 - 19968: 0xE0DD, + 27946 - 19968: 0xFBF3, + 27954 - 19968: 0xF1BD, + 27957 - 19968: 0xE2E7, + 27958 - 19968: 0xFDD7, + 27960 - 19968: 0xCEC8, + 27961 - 19968: 0xEAB7, + 27963 - 19968: 0xFCC0, + 27965 - 19968: 0xFDE7, + 27966 - 19968: 0xF7EF, + 27969 - 19968: 0xD7B5, + 27993 - 19968: 0xEFBA, + 27994 - 19968: 0xF1DD, + 27996 - 19968: 0xDEB3, + 28003 - 19968: 0xE8CB, + 28006 - 19968: 0xF8DD, + 28009 - 19968: 0xFBC7, + 28010 - 19968: 0xD5C8, + 28012 - 19968: 0xD7DF, + 28014 - 19968: 0xDDA9, + 28020 - 19968: 0xE9B1, + 28023 - 19968: 0xFAAD, + 28024 - 19968: 0xF6D9, + 28025 - 19968: 0xFAF4, + 28031 - 19968: 0xF8AA, + 28037 - 19968: 0xE6EE, + 28039 - 19968: 0xCCDC, + 28040 - 19968: 0xE1BC, + 28041 - 19968: 0xE0EF, + 28044 - 19968: 0xE9BF, + 28045 - 19968: 0xFCFD, + 28046 - 19968: 0xE6CE, + 28049 - 19968: 0xE1D7, + 28051 - 19968: 0xE6CF, + 28053 - 19968: 0xF4F1, + 28079 - 19968: 0xE4F3, + 28082 - 19968: 0xE4FB, + 28085 - 19968: 0xF9E4, + 28096 - 19968: 0xEFE3, + 28099 - 19968: 0xCFEE, + 28100 - 19968: 0xF6BE, + 28101 - 19968: 0xE0B2, + 28102 - 19968: 0xFCFE, + 28103 - 19968: 0xD1AB, + 28107 - 19968: 0xD7FA, + 28111 - 19968: 0xFBC8, + 28113 - 19968: 0xE2D7, + 28120 - 19968: 0xD4A3, + 28121 - 19968: 0xF0F8, + 28122 - 19968: 0xD7A8, + 28126 - 19968: 0xE1E7, + 28129 - 19968: 0xD3BF, + 28136 - 19968: 0xEFE4, + 28138 - 19968: 0xD7C5, + 28139 - 19968: 0xEBE2, + 28142 - 19968: 0xFCE7, + 28145 - 19968: 0xE4A2, + 28147 - 19968: 0xE2E8, + 28149 - 19968: 0xE6D0, + 28151 - 19968: 0xFBE8, + 28152 - 19968: 0xF4E8, + 28153 - 19968: 0xE5F4, + 28154 - 19968: 0xF4BC, + 28155 - 19968: 0xF4D5, + 28183 - 19968: 0xDFB6, + 28185 - 19968: 0xFCB9, + 28186 - 19968: 0xEEC2, + 28187 - 19968: 0xCAF5, + 28191 - 19968: 0xEFE5, + 28192 - 19968: 0xCBE2, + 28193 - 19968: 0xD4A4, + 28195 - 19968: 0xDEE0, + 28196 - 19968: 0xDAFD, + 28197 - 19968: 0xE4C6, + 28198 - 19968: 0xE8BE, + 28203 - 19968: 0xE0DE, + 28204 - 19968: 0xF6B4, + 28205 - 19968: 0xEAD2, + 28207 - 19968: 0xF9FB, + 28210 - 19968: 0xE0C2, + 28212 - 19968: 0xCAE4, + 28214 - 19968: 0xE7B7, + 28216 - 19968: 0xEAFD, + 28218 - 19968: 0xD9DD, + 28220 - 19968: 0xDAB4, + 28221 - 19968: 0xEEAA, + 28222 - 19968: 0xFBE9, + 28227 - 19968: 0xDBCB, + 28228 - 19968: 0xDAB5, + 28234 - 19968: 0xF1BE, + 28237 - 19968: 0xD3AC, + 28246 - 19968: 0xFBC9, + 28248 - 19968: 0xDFCF, + 28251 - 19968: 0xD3C0, + 28252 - 19968: 0xE3D7, + 28254 - 19968: 0xEFE6, + 28255 - 19968: 0xFCD0, + 28263 - 19968: 0xE9C0, + 28267 - 19968: 0xF5D3, + 28270 - 19968: 0xECDC, + 28271 - 19968: 0xF7B7, + 28274 - 19968: 0xEAB8, + 28275 - 19968: 0xD1F9, + 28282 - 19968: 0xDCC8, + 28304 - 19968: 0xEAB9, + 28310 - 19968: 0xF1DE, + 28316 - 19968: 0xD7B6, + 28317 - 19968: 0xCFB5, + 28319 - 19968: 0xD9A8, + 28322 - 19968: 0xECEE, + 28325 - 19968: 0xDDAA, + 28330 - 19968: 0xCDA2, + 28331 - 19968: 0xE8AE, + 28335 - 19968: 0xE1BD, + 28337 - 19968: 0xF2D1, + 28342 - 19968: 0xE9C1, + 28346 - 19968: 0xD2FC, + 28354 - 19968: 0xDBB5, + 28356 - 19968: 0xF3E7, + 28357 - 19968: 0xD8FE, + 28361 - 19968: 0xFCD1, + 28363 - 19968: 0xEDB2, + 28364 - 19968: 0xF4AF, + 28366 - 19968: 0xFBA3, + 28369 - 19968: 0xFCC1, + 28371 - 19968: 0xEEAB, + 28372 - 19968: 0xD4A5, + 28399 - 19968: 0xF4F2, + 28404 - 19968: 0xEED9, + 28408 - 19968: 0xFBCA, + 28414 - 19968: 0xCDE3, + 28415 - 19968: 0xD8BB, + 28417 - 19968: 0xE5DB, + 28418 - 19968: 0xF8F7, + 28422 - 19968: 0xF6D4, + 28431 - 19968: 0xD7A9, + 28433 - 19968: 0xCBC9, + 28436 - 19968: 0xE6D1, + 28437 - 19968: 0xF0CC, + 28448 - 19968: 0xD8AE, + 28450 - 19968: 0xF9D3, + 28451 - 19968: 0xD5FE, + 28459 - 19968: 0xD8BC, + 28460 - 19968: 0xF2B0, + 28465 - 19968: 0xE2AB, + 28466 - 19968: 0xF3E8, + 28472 - 19968: 0xEFC2, + 28479 - 19968: 0xEDEC, + 28481 - 19968: 0xE7B8, + 28497 - 19968: 0xDAFE, + 28500 - 19968: 0xCCBE, + 28503 - 19968: 0xF2FC, + 28504 - 19968: 0xDAEB, + 28506 - 19968: 0xE2D8, + 28507 - 19968: 0xEDD6, + 28510 - 19968: 0xD6D1, + 28511 - 19968: 0xE0B3, + 28514 - 19968: 0xFCD2, + 28516 - 19968: 0xEBC8, + 28525 - 19968: 0xD3C1, + 28526 - 19968: 0xF0CD, + 28528 - 19968: 0xCFF7, + 28538 - 19968: 0xEDD2, + 28540 - 19968: 0xD4D8, + 28541 - 19968: 0xDCC9, + 28542 - 19968: 0xD7F1, + 28545 - 19968: 0xDFBB, + 28548 - 19968: 0xF3A5, + 28552 - 19968: 0xF4CD, + 28557 - 19968: 0xF1BF, + 28558 - 19968: 0xF8B1, + 28560 - 19968: 0xE9FA, + 28564 - 19968: 0xFBCB, + 28567 - 19968: 0xCAD5, + 28579 - 19968: 0xF9D4, + 28580 - 19968: 0xF7CA, + 28583 - 19968: 0xD6C8, + 28590 - 19968: 0xFCE8, + 28591 - 19968: 0xF3BD, + 28593 - 19968: 0xEEFE, + 28595 - 19968: 0xE7FE, + 28601 - 19968: 0xD3C2, + 28606 - 19968: 0xD3B6, + 28608 - 19968: 0xCCAD, + 28609 - 19968: 0xF6FA, + 28610 - 19968: 0xD6B2, + 28611 - 19968: 0xD2D8, + 28618 - 19968: 0xE7D8, + 28629 - 19968: 0xE3A5, + 28634 - 19968: 0xE7B9, + 28639 - 19968: 0xF0AD, + 28640 - 19968: 0xFBCC, + 28641 - 19968: 0xEBA1, + 28644 - 19968: 0xD4A6, + 28649 - 19968: 0xFBCD, + 28651 - 19968: 0xD5BD, + 28652 - 19968: 0xF1DF, + 28655 - 19968: 0xF6FB, + 28657 - 19968: 0xDEB4, + 28670 - 19968: 0xD5EB, + 28673 - 19968: 0xE5C8, + 28677 - 19968: 0xFBA4, + 28678 - 19968: 0xD4B9, + 28681 - 19968: 0xDEE1, + 28683 - 19968: 0xE4A3, + 28687 - 19968: 0xD7B7, + 28689 - 19968: 0xF8EE, + 28693 - 19968: 0xDEB5, + 28696 - 19968: 0xD6D2, + 28698 - 19968: 0xF9D5, + 28699 - 19968: 0xE7BA, + 28700 - 19968: 0xEBD5, + 28701 - 19968: 0xD5F7, + 28702 - 19968: 0xEFE7, + 28703 - 19968: 0xE1BE, + 28707 - 19968: 0xFAAE, + 28711 - 19968: 0xD6E9, + 28712 - 19968: 0xD6EE, + 28719 - 19968: 0xE7BB, + 28727 - 19968: 0xECCB, + 28734 - 19968: 0xD5B3, + 28748 - 19968: 0xCEB4, + 28752 - 19968: 0xFBA5, + 28753 - 19968: 0xE1EE, + 28760 - 19968: 0xF7A8, + 28765 - 19968: 0xFBCE, + 28771 - 19968: 0xD8BD, + 28779 - 19968: 0xFBFD, + 28784 - 19968: 0xFCE9, + 28792 - 19968: 0xCFB6, + 28796 - 19968: 0xEDC7, + 28797 - 19968: 0xEEAC, + 28805 - 19968: 0xCCDD, + 28810 - 19968: 0xF6A7, + 28814 - 19968: 0xE6FA, + 28818 - 19968: 0xF5A4, + 28824 - 19968: 0xFDDC, + 28825 - 19968: 0xEDB3, + 28826 - 19968: 0xCEC9, + 28833 - 19968: 0xEFE8, + 28836 - 19968: 0xE1BF, + 28843 - 19968: 0xFADB, + 28844 - 19968: 0xCBE3, + 28845 - 19968: 0xF7A9, + 28847 - 19968: 0xFBA6, + 28851 - 19968: 0xDCB9, + 28855 - 19968: 0xF1C0, + 28856 - 19968: 0xEDC8, + 28857 - 19968: 0xEFC3, + 28872 - 19968: 0xD6AD, + 28875 - 19968: 0xFDCE, + 28879 - 19968: 0xE8A1, + 28888 - 19968: 0xFBF4, + 28889 - 19968: 0xD5A7, + 28893 - 19968: 0xF1F6, + 28895 - 19968: 0xE6D3, + 28913 - 19968: 0xCCDE, + 28921 - 19968: 0xF8B2, + 28925 - 19968: 0xDCEB, + 28932 - 19968: 0xFDB6, + 28937 - 19968: 0xE5EA, + 28940 - 19968: 0xF1E0, + 28953 - 19968: 0xDBCC, + 28954 - 19968: 0xDDCD, + 28958 - 19968: 0xD4C8, + 28961 - 19968: 0xD9ED, + 28966 - 19968: 0xF5A5, + 28976 - 19968: 0xE6FB, + 28982 - 19968: 0xE6D4, + 28999 - 19968: 0xFDC8, + 29001 - 19968: 0xD6A1, + 29002 - 19968: 0xFDBF, + 29004 - 19968: 0xFCD3, + 29006 - 19968: 0xEFA1, + 29008 - 19968: 0xE7BC, + 29014 - 19968: 0xD1EE, + 29017 - 19968: 0xE6D5, + 29020 - 19968: 0xE9F2, + 29022 - 19968: 0xDFB0, + 29028 - 19968: 0xD8E0, + 29029 - 19968: 0xFCBA, + 29030 - 19968: 0xFDAF, + 29031 - 19968: 0xF0CE, + 29033 - 19968: 0xDBE1, + 29036 - 19968: 0xE5C9, + 29038 - 19968: 0xEDB4, + 29053 - 19968: 0xE0C3, + 29060 - 19968: 0xE3D8, + 29065 - 19968: 0xE9FB, + 29066 - 19968: 0xEAA8, + 29071 - 19968: 0xFDB7, + 29074 - 19968: 0xFBA7, + 29076 - 19968: 0xE9C2, + 29081 - 19968: 0xFDF7, + 29087 - 19968: 0xE2D9, + 29090 - 19968: 0xDCEC, + 29100 - 19968: 0xE8A2, + 29105 - 19968: 0xE6F0, + 29113 - 19968: 0xFDF8, + 29114 - 19968: 0xFDF9, + 29118 - 19968: 0xF6BF, + 29121 - 19968: 0xE7A7, + 29123 - 19968: 0xE6D7, + 29128 - 19968: 0xD4F3, + 29129 - 19968: 0xD4C9, + 29134 - 19968: 0xD6FA, + 29136 - 19968: 0xD7F2, + 29138 - 19968: 0xE1C0, + 29140 - 19968: 0xDBE2, + 29141 - 19968: 0xE6D8, + 29151 - 19968: 0xE7BD, + 29157 - 19968: 0xF0CF, + 29158 - 19968: 0xF3BE, + 29159 - 19968: 0xE2AC, + 29165 - 19968: 0xF5B7, + 29166 - 19968: 0xE0F0, + 29179 - 19968: 0xFDB8, + 29180 - 19968: 0xE3E8, + 29182 - 19968: 0xD4A7, + 29183 - 19968: 0xE8FC, + 29184 - 19968: 0xFAD2, + 29190 - 19968: 0xF8EF, + 29200 - 19968: 0xD6D3, + 29211 - 19968: 0xD5B4, + 29226 - 19968: 0xF0D0, + 29228 - 19968: 0xF7F0, + 29229 - 19968: 0xEEB3, + 29232 - 19968: 0xEABA, + 29234 - 19968: 0xEAD3, + 29237 - 19968: 0xEDC9, + 29238 - 19968: 0xDDAB, + 29242 - 19968: 0xE5AC, + 29243 - 19968: 0xFDA1, + 29245 - 19968: 0xDFD0, + 29246 - 19968: 0xECB3, + 29248 - 19968: 0xDFD1, + 29254 - 19968: 0xEDED, + 29255 - 19968: 0xF8B8, + 29256 - 19968: 0xF7FA, + 29260 - 19968: 0xF8AB, + 29266 - 19968: 0xF4E0, + 29272 - 19968: 0xD4BA, + 29273 - 19968: 0xE4B3, + 29275 - 19968: 0xE9DA, + 29277 - 19968: 0xDEB6, + 29279 - 19968: 0xD9BF, + 29281 - 19968: 0xD9C0, + 29282 - 19968: 0xD6EF, + 29287 - 19968: 0xD9CC, + 29289 - 19968: 0xDAAA, + 29298 - 19968: 0xDFE5, + 29305 - 19968: 0xF7E5, + 29309 - 19968: 0xCCB2, + 29312 - 19968: 0xDFF9, + 29313 - 19968: 0xD7E0, + 29346 - 19968: 0xD4BB, + 29351 - 19968: 0xFDFA, + 29356 - 19968: 0xCCB3, + 29359 - 19968: 0xDBF3, + 29376 - 19968: 0xDFD2, + 29378 - 19968: 0xCECA, + 29380 - 19968: 0xEEDA, + 29390 - 19968: 0xE4E4, + 29392 - 19968: 0xFBCF, + 29399 - 19968: 0xCFB7, + 29401 - 19968: 0xEEC3, + 29409 - 19968: 0xCEEA, + 29417 - 19968: 0xE2AD, + 29432 - 19968: 0xD7E1, + 29433 - 19968: 0xFAF5, + 29436 - 19968: 0xD5C9, + 29437 - 19968: 0xF8AC, + 29450 - 19968: 0xE7D9, + 29462 - 19968: 0xF3E9, + 29467 - 19968: 0xD8ED, + 29468 - 19968: 0xE3C4, + 29469 - 19968: 0xF0F1, + 29477 - 19968: 0xE8E5, + 29481 - 19968: 0xE0FA, + 29482 - 19968: 0xEEC4, + 29483 - 19968: 0xD9DE, + 29494 - 19968: 0xEBA2, + 29495 - 19968: 0xEBA3, + 29502 - 19968: 0xFCC2, + 29503 - 19968: 0xEABB, + 29508 - 19968: 0xE8AB, + 29509 - 19968: 0xDEE2, + 29520 - 19968: 0xEDEF, + 29522 - 19968: 0xE8A3, + 29527 - 19968: 0xCFF1, + 29544 - 19968: 0xD4BC, + 29546 - 19968: 0xFCEA, + 29552 - 19968: 0xE7BE, + 29554 - 19968: 0xFCF2, + 29557 - 19968: 0xD6B4, + 29560 - 19968: 0xE2AE, + 29562 - 19968: 0xD3B7, + 29563 - 19968: 0xFACC, + 29572 - 19968: 0xFADC, + 29574 - 19968: 0xEDB5, + 29575 - 19968: 0xE1E3, + 29577 - 19968: 0xE8AC, + 29579 - 19968: 0xE8DD, + 29582 - 19968: 0xEFE9, + 29588 - 19968: 0xF4BD, + 29590 - 19968: 0xCFB8, + 29591 - 19968: 0xE9DB, + 29592 - 19968: 0xD1AC, + 29599 - 19968: 0xDAC7, + 29607 - 19968: 0xEBC9, + 29609 - 19968: 0xE8CC, + 29613 - 19968: 0xDEB7, + 29618 - 19968: 0xD6BC, + 29619 - 19968: 0xD3E5, + 29625 - 19968: 0xFADD, + 29632 - 19968: 0xDAD6, + 29634 - 19968: 0xCAB1, + 29641 - 19968: 0xDAC8, + 29642 - 19968: 0xDFA6, + 29644 - 19968: 0xF9B3, + 29645 - 19968: 0xF2D2, + 29647 - 19968: 0xCAC4, + 29654 - 19968: 0xCECB, + 29657 - 19968: 0xCDF5, + 29661 - 19968: 0xFDB0, + 29662 - 19968: 0xD5A8, + 29664 - 19968: 0xF1C1, + 29667 - 19968: 0xE2E9, + 29668 - 19968: 0xDCCA, + 29669 - 19968: 0xECB4, + 29670 - 19968: 0xFAC0, + 29673 - 19968: 0xFBA8, + 29674 - 19968: 0xD0A8, + 29677 - 19968: 0xDAEC, + 29687 - 19968: 0xD9EE, + 29689 - 19968: 0xE0FB, + 29693 - 19968: 0xEFEA, + 29694 - 19968: 0xFADE, + 29697 - 19968: 0xE0C4, + 29699 - 19968: 0xCFB9, + 29701 - 19968: 0xD5CA, + 29702 - 19968: 0xD7E2, + 29703 - 19968: 0xE2AF, + 29705 - 19968: 0xD7B8, + 29715 - 19968: 0xE8CD, + 29723 - 19968: 0xF6DA, + 29728 - 19968: 0xEFA2, + 29729 - 19968: 0xE2DA, + 29730 - 19968: 0xF6FC, + 29733 - 19968: 0xFBD0, + 29734 - 19968: 0xD1AD, + 29736 - 19968: 0xCDE4, + 29738 - 19968: 0xD1AE, + 29739 - 19968: 0xDCED, + 29740 - 19968: 0xE8CE, + 29742 - 19968: 0xF0F9, + 29743 - 19968: 0xCEB5, + 29744 - 19968: 0xE6FC, + 29747 - 19968: 0xD7FB, + 29748 - 19968: 0xD0D6, + 29749 - 19968: 0xDDF5, + 29750 - 19968: 0xF7F1, + 29752 - 19968: 0xF6FD, + 29754 - 19968: 0xDBF7, + 29759 - 19968: 0xFBEA, + 29760 - 19968: 0xE9DC, + 29761 - 19968: 0xD9C1, + 29763 - 19968: 0xF5F2, + 29764 - 19968: 0xE0C5, + 29771 - 19968: 0xEAD4, + 29781 - 19968: 0xF9C2, + 29783 - 19968: 0xEABC, + 29785 - 19968: 0xD2C5, + 29786 - 19968: 0xFBD1, + 29787 - 19968: 0xE7C0, + 29788 - 19968: 0xEBA5, + 29790 - 19968: 0xDFFA, + 29791 - 19968: 0xE3A2, + 29792 - 19968: 0xD7B9, + 29794 - 19968: 0xE9C3, + 29796 - 19968: 0xE8FD, + 29797 - 19968: 0xE8AF, + 29800 - 19968: 0xF2D3, + 29801 - 19968: 0xFBA9, + 29802 - 19968: 0xD8A5, + 29807 - 19968: 0xD5CB, + 29822 - 19968: 0xD0C8, + 29826 - 19968: 0xD1AF, + 29827 - 19968: 0xD7E3, + 29831 - 19968: 0xE0C6, + 29833 - 19968: 0xD6A2, + 29835 - 19968: 0xEDF0, + 29848 - 19968: 0xD7F3, + 29852 - 19968: 0xFCD4, + 29854 - 19968: 0xDAD7, + 29855 - 19968: 0xCCDF, + 29857 - 19968: 0xF2D4, + 29859 - 19968: 0xD1B0, + 29861 - 19968: 0xCCE0, + 29863 - 19968: 0xDBFD, + 29864 - 19968: 0xF3BF, + 29866 - 19968: 0xF0D1, + 29872 - 19968: 0xFCBB, + 29874 - 19968: 0xE2B0, + 29877 - 19968: 0xE6A5, + 29881 - 19968: 0xE2DB, + 29885 - 19968: 0xDFDE, + 29887 - 19968: 0xE0C7, + 29894 - 19968: 0xF2EF, + 29898 - 19968: 0xCCE1, + 29903 - 19968: 0xD6EA, + 29908 - 19968: 0xE7C2, + 29912 - 19968: 0xCEB6, + 29914 - 19968: 0xF3C0, + 29916 - 19968: 0xCDFE, + 29920 - 19968: 0xFBD2, + 29922 - 19968: 0xF8F8, + 29923 - 19968: 0xF7FB, + 29926 - 19968: 0xE8BF, + 29934 - 19968: 0xE8B7, + 29943 - 19968: 0xEDB6, + 29953 - 19968: 0xDCBA, + 29956 - 19968: 0xCCB4, + 29969 - 19968: 0xF1F7, + 29973 - 19968: 0xE8B8, + 29976 - 19968: 0xCAF6, + 29978 - 19968: 0xE4A4, + 29979 - 19968: 0xF4D6, + 29983 - 19968: 0xDFE6, + 29987 - 19968: 0xDFA7, + 29989 - 19968: 0xDFE7, + 29990 - 19968: 0xE1C1, + 29992 - 19968: 0xE9C4, + 29995 - 19968: 0xDCCB, + 29996 - 19968: 0xE9C5, + 30000 - 19968: 0xEFA3, + 30001 - 19968: 0xEBA6, + 30002 - 19968: 0xCBA3, + 30003 - 19968: 0xE3E9, + 30007 - 19968: 0xD1FB, + 30008 - 19968: 0xEFA4, + 30010 - 19968: 0xEFEB, + 30023 - 19968: 0xD0B4, + 30028 - 19968: 0xCDA3, + 30031 - 19968: 0xE8E6, + 30033 - 19968: 0xEFA5, + 30035 - 19968: 0xD3CC, + 30036 - 19968: 0xDAED, + 30041 - 19968: 0xD7BA, + 30043 - 19968: 0xF2D5, + 30044 - 19968: 0xF5E5, + 30045 - 19968: 0xD9EF, + 30050 - 19968: 0xF9B4, + 30053 - 19968: 0xD5D4, + 30054 - 19968: 0xFDCF, + 30058 - 19968: 0xDBE3, + 30063 - 19968: 0xF1E1, + 30064 - 19968: 0xECB6, + 30069 - 19968: 0xFBFE, + 30070 - 19968: 0xD3D7, + 30072 - 19968: 0xD1B1, + 30074 - 19968: 0xCBB1, + 30079 - 19968: 0xD1B2, + 30086 - 19968: 0xCBB2, + 30087 - 19968: 0xF1C2, + 30090 - 19968: 0xF4E1, + 30091 - 19968: 0xF9B5, + 30094 - 19968: 0xE1C3, + 30095 - 19968: 0xE1C2, + 30097 - 19968: 0xEBF7, + 30109 - 19968: 0xDFA8, + 30117 - 19968: 0xCBCA, + 30123 - 19968: 0xE6B9, + 30129 - 19968: 0xF8DE, + 30130 - 19968: 0xF9AA, + 30131 - 19968: 0xCAF7, + 30133 - 19968: 0xEDB7, + 30136 - 19968: 0xD3B8, + 30137 - 19968: 0xF2D6, + 30140 - 19968: 0xD4D9, + 30141 - 19968: 0xEEC5, + 30142 - 19968: 0xF2F0, + 30146 - 19968: 0xCAB2, + 30149 - 19968: 0xDCBB, + 30151 - 19968: 0xF1F8, + 30157 - 19968: 0xECB7, + 30162 - 19968: 0xE5CA, + 30164 - 19968: 0xF6C0, + 30165 - 19968: 0xFDDD, + 30168 - 19968: 0xD4E3, + 30169 - 19968: 0xCCE2, + 30171 - 19968: 0xF7D4, + 30178 - 19968: 0xD7E5, + 30192 - 19968: 0xD3C3, + 30194 - 19968: 0xD8A6, + 30196 - 19968: 0xF6C1, + 30202 - 19968: 0xDDF6, + 30204 - 19968: 0xCDC0, + 30208 - 19968: 0xE5DC, + 30221 - 19968: 0xE5CB, + 30233 - 19968: 0xE1C4, + 30239 - 19968: 0xE8B0, + 30240 - 19968: 0xF4B0, + 30241 - 19968: 0xF3EA, + 30242 - 19968: 0xDAEE, + 30244 - 19968: 0xD7BB, + 30246 - 19968: 0xE2B1, + 30267 - 19968: 0xD7AA, + 30274 - 19968: 0xD6FB, + 30284 - 19968: 0xE4DF, + 30286 - 19968: 0xCAD6, + 30290 - 19968: 0xEBA8, + 30294 - 19968: 0xDBFE, + 30305 - 19968: 0xF6C2, + 30308 - 19968: 0xEFBB, + 30313 - 19968: 0xD4FD, + 30316 - 19968: 0xE0C8, + 30320 - 19968: 0xE8B9, + 30322 - 19968: 0xEFA6, + 30328 - 19968: 0xCDA4, + 30331 - 19968: 0xD4F4, + 30332 - 19968: 0xDBA1, + 30333 - 19968: 0xDBDC, + 30334 - 19968: 0xDBDD, + 30340 - 19968: 0xEEDC, + 30342 - 19968: 0xCBCB, + 30343 - 19968: 0xFCD5, + 30350 - 19968: 0xCEEB, + 30352 - 19968: 0xCDC1, + 30355 - 19968: 0xFBD3, + 30382 - 19968: 0xF9AB, + 30394 - 19968: 0xF5D4, + 30399 - 19968: 0xD9A9, + 30402 - 19968: 0xE9DD, + 30403 - 19968: 0xDBCD, + 30406 - 19968: 0xDDCE, + 30408 - 19968: 0xE7C3, + 30410 - 19968: 0xECCC, + 30418 - 19968: 0xF9EC, + 30422 - 19968: 0xCBCC, + 30427 - 19968: 0xE0FC, + 30428 - 19968: 0xD4A8, + 30430 - 19968: 0xEDD3, + 30431 - 19968: 0xD8EF, + 30433 - 19968: 0xF2D7, + 30435 - 19968: 0xCAF8, + 30436 - 19968: 0xDAEF, + 30439 - 19968: 0xD6D4, + 30446 - 19968: 0xD9CD, + 30450 - 19968: 0xD8EE, + 30452 - 19968: 0xF2C1, + 30456 - 19968: 0xDFD3, + 30460 - 19968: 0xDAF0, + 30462 - 19968: 0xE2EA, + 30465 - 19968: 0xE0FD, + 30468 - 19968: 0xD8F8, + 30472 - 19968: 0xF7AF, + 30473 - 19968: 0xDAB6, + 30475 - 19968: 0xCAD7, + 30494 - 19968: 0xF2D8, + 30496 - 19968: 0xD8F9, + 30505 - 19968: 0xFADF, + 30519 - 19968: 0xCFEF, + 30520 - 19968: 0xD9C2, + 30522 - 19968: 0xF0D2, + 30524 - 19968: 0xE4D1, + 30528 - 19968: 0xF3B7, + 30541 - 19968: 0xFAE0, + 30555 - 19968: 0xEFEC, + 30561 - 19968: 0xE2B2, + 30563 - 19968: 0xD4BD, + 30566 - 19968: 0xD9CE, + 30571 - 19968: 0xF4E2, + 30585 - 19968: 0xD4A9, + 30590 - 19968: 0xCDC2, + 30591 - 19968: 0xE7DA, + 30603 - 19968: 0xF2D9, + 30609 - 19968: 0xD9AA, + 30622 - 19968: 0xD8BE, + 30629 - 19968: 0xDCAD, + 30636 - 19968: 0xE2EB, + 30637 - 19968: 0xD6FC, + 30640 - 19968: 0xCAF9, + 30643 - 19968: 0xD4DA, + 30651 - 19968: 0xF4D7, + 30652 - 19968: 0xCCA1, + 30655 - 19968: 0xCFBA, + 30679 - 19968: 0xF5B8, + 30683 - 19968: 0xD9C3, + 30684 - 19968: 0xD0E8, + 30690 - 19968: 0xE3C5, + 30691 - 19968: 0xEBF8, + 30693 - 19968: 0xF2B1, + 30697 - 19968: 0xCFBB, + 30701 - 19968: 0xD3AD, + 30702 - 19968: 0xE8E1, + 30703 - 19968: 0xCEEC, + 30707 - 19968: 0xE0B4, + 30722 - 19968: 0xDEE3, + 30738 - 19968: 0xDDF7, + 30757 - 19968: 0xF2B2, + 30758 - 19968: 0xF3F6, + 30759 - 19968: 0xF6DB, + 30764 - 19968: 0xD7FE, + 30770 - 19968: 0xF8DF, + 30772 - 19968: 0xF7F2, + 30789 - 19968: 0xD0A9, + 30799 - 19968: 0xE6DA, + 30813 - 19968: 0xF5A6, + 30827 - 19968: 0xD7BC, + 30828 - 19968: 0xCCE3, + 30831 - 19968: 0xE6DB, + 30844 - 19968: 0xDDDD, + 30849 - 19968: 0xD1B3, + 30855 - 19968: 0xEFED, + 30860 - 19968: 0xD6DE, + 30861 - 19968: 0xE4F4, + 30862 - 19968: 0xE1EF, + 30865 - 19968: 0xDDF8, + 30871 - 19968: 0xE8CF, + 30883 - 19968: 0xCAE5, + 30887 - 19968: 0xDCA1, + 30889 - 19968: 0xE0B5, + 30906 - 19968: 0xFCAC, + 30907 - 19968: 0xFCAD, + 30908 - 19968: 0xD8A7, + 30913 - 19968: 0xEDB8, + 30917 - 19968: 0xDBB6, + 30922 - 19968: 0xD6F0, + 30923 - 19968: 0xF3AF, + 30926 - 19968: 0xCDA5, + 30928 - 19968: 0xDAF1, + 30952 - 19968: 0xD8A8, + 30956 - 19968: 0xCCE4, + 30959 - 19968: 0xD1B4, + 30965 - 19968: 0xCAD8, + 30971 - 19968: 0xDAF2, + 30977 - 19968: 0xF5A7, + 30990 - 19968: 0xF5A8, + 30998 - 19968: 0xE6A6, + 31018 - 19968: 0xD5EC, + 31019 - 19968: 0xD5F8, + 31020 - 19968: 0xDAF3, + 31034 - 19968: 0xE3C6, + 31038 - 19968: 0xDEE4, + 31040 - 19968: 0xDEE5, + 31041 - 19968: 0xD1B5, + 31047 - 19968: 0xD1B6, + 31048 - 19968: 0xD1B7, + 31049 - 19968: 0xF2B3, + 31056 - 19968: 0xE9DE, + 31062 - 19968: 0xF0D3, + 31063 - 19968: 0xF2B4, + 31066 - 19968: 0xF0D4, + 31067 - 19968: 0xCBE4, + 31068 - 19968: 0xFBD4, + 31069 - 19968: 0xF5E6, + 31070 - 19968: 0xE3EA, + 31072 - 19968: 0xDEE6, + 31077 - 19968: 0xDFD4, + 31080 - 19968: 0xF8F9, + 31085 - 19968: 0xF0AE, + 31098 - 19968: 0xD1B8, + 31103 - 19968: 0xD6DF, + 31105 - 19968: 0xD0D7, + 31117 - 19968: 0xFCA1, + 31118 - 19968: 0xEFEE, + 31119 - 19968: 0xDCD8, + 31121 - 19968: 0xE9DF, + 31142 - 19968: 0xE5DD, + 31143 - 19968: 0xFDFB, + 31146 - 19968: 0xE0C9, + 31150 - 19968: 0xD6C9, + 31153 - 19968: 0xD4AA, + 31155 - 19968: 0xE5CC, + 31161 - 19968: 0xE9E0, + 31165 - 19968: 0xD0D8, + 31166 - 19968: 0xFCA2, + 31167 - 19968: 0xD4BE, + 31168 - 19968: 0xE2B3, + 31169 - 19968: 0xDEE7, + 31177 - 19968: 0xDCBC, + 31178 - 19968: 0xD2B6, + 31179 - 19968: 0xF5D5, + 31185 - 19968: 0xCEA1, + 31186 - 19968: 0xF5A9, + 31189 - 19968: 0xDDF9, + 31192 - 19968: 0xDDFA, + 31199 - 19968: 0xF0D5, + 31204 - 19968: 0xF6DF, + 31206 - 19968: 0xF2DA, + 31207 - 19968: 0xE4EB, + 31209 - 19968: 0xF2F1, + 31227 - 19968: 0xECB9, + 31232 - 19968: 0xFDFC, + 31237 - 19968: 0xE1AA, + 31240 - 19968: 0xCAD9, + 31243 - 19968: 0xEFEF, + 31245 - 19968: 0xF5AA, + 31252 - 19968: 0xECF9, + 31255 - 19968: 0xF8AD, + 31257 - 19968: 0xF2C2, + 31258 - 19968: 0xF6C3, + 31260 - 19968: 0xD7D2, + 31263 - 19968: 0xF9A2, + 31264 - 19968: 0xF0D6, + 31278 - 19968: 0xF0FA, + 31281 - 19968: 0xF6E0, + 31286 - 19968: 0xE9F3, + 31287 - 19968: 0xF2C3, + 31291 - 19968: 0xD4AB, + 31292 - 19968: 0xCAB3, + 31293 - 19968: 0xCDA6, + 31295 - 19968: 0xCDC3, + 31296 - 19968: 0xCDDA, + 31302 - 19968: 0xD9CF, + 31305 - 19968: 0xF6C4, + 31309 - 19968: 0xEEDD, + 31310 - 19968: 0xE7C4, + 31319 - 19968: 0xE2B4, + 31329 - 19968: 0xDFE2, + 31330 - 19968: 0xE7DB, + 31337 - 19968: 0xE8B1, + 31339 - 19968: 0xFCAE, + 31344 - 19968: 0xE5CD, + 31348 - 19968: 0xFAEB, + 31350 - 19968: 0xCFBC, + 31353 - 19968: 0xCFE2, + 31354 - 19968: 0xCDF6, + 31357 - 19968: 0xEFF0, + 31359 - 19968: 0xF4BE, + 31361 - 19968: 0xD4CD, + 31364 - 19968: 0xF3B8, + 31368 - 19968: 0xE9A1, + 31378 - 19968: 0xF2F2, + 31379 - 19968: 0xF3EB, + 31381 - 19968: 0xF0D7, + 31384 - 19968: 0xCFD7, + 31391 - 19968: 0xCFDF, + 31401 - 19968: 0xE8C0, + 31402 - 19968: 0xE8C1, + 31406 - 19968: 0xCFE3, + 31407 - 19968: 0xE9A2, + 31418 - 19968: 0xD0AA, + 31428 - 19968: 0xF3C1, + 31429 - 19968: 0xD0AB, + 31431 - 19968: 0xD4E4, + 31434 - 19968: 0xEFBC, + 31435 - 19968: 0xD8A1, + 31447 - 19968: 0xD9DF, + 31449 - 19968: 0xF3D7, + 31453 - 19968: 0xDCBD, + 31455 - 19968: 0xCCE5, + 31456 - 19968: 0xEDF1, + 31459 - 19968: 0xF1E2, + 31461 - 19968: 0xD4DB, + 31466 - 19968: 0xE2B5, + 31469 - 19968: 0xCAE6, + 31471 - 19968: 0xD3AE, + 31478 - 19968: 0xCCE6, + 31481 - 19968: 0xF1D3, + 31482 - 19968: 0xF5E7, + 31487 - 19968: 0xCADA, + 31503 - 19968: 0xFBEE, + 31505 - 19968: 0xE1C5, + 31513 - 19968: 0xDFE9, + 31515 - 19968: 0xEEDE, + 31518 - 19968: 0xF7C2, + 31520 - 19968: 0xD8A2, + 31526 - 19968: 0xDDAC, + 31532 - 19968: 0xF0AF, + 31533 - 19968: 0xD6BD, + 31545 - 19968: 0xE1AB, + 31558 - 19968: 0xF9B6, + 31561 - 19968: 0xD4F5, + 31563 - 19968: 0xD0C9, + 31564 - 19968: 0xEFA7, + 31565 - 19968: 0xE2EC, + 31567 - 19968: 0xDBEA, + 31568 - 19968: 0xCECC, + 31569 - 19968: 0xF5E8, + 31570 - 19968: 0xF7D5, + 31572 - 19968: 0xD3CD, + 31574 - 19968: 0xF3FE, + 31584 - 19968: 0xD0B5, + 31596 - 19968: 0xE0FE, + 31598 - 19968: 0xDFFB, + 31605 - 19968: 0xE6DD, + 31613 - 19968: 0xE8A4, + 31623 - 19968: 0xCBCD, + 31627 - 19968: 0xEFA8, + 31631 - 19968: 0xEEB4, + 31636 - 19968: 0xDAD8, + 31637 - 19968: 0xD1B9, + 31639 - 19968: 0xDFA9, + 31642 - 19968: 0xF3B0, + 31645 - 19968: 0xCCC4, + 31649 - 19968: 0xCEB7, + 31661 - 19968: 0xEFA9, + 31665 - 19968: 0xDFD5, + 31668 - 19968: 0xEDD7, + 31672 - 19968: 0xEEC6, + 31680 - 19968: 0xEFBD, + 31681 - 19968: 0xFCD6, + 31684 - 19968: 0xDBF4, + 31686 - 19968: 0xEFAA, + 31687 - 19968: 0xF8B9, + 31689 - 19968: 0xF5E9, + 31698 - 19968: 0xE3D9, + 31712 - 19968: 0xE1C6, + 31716 - 19968: 0xD4BF, + 31721 - 19968: 0xDEE8, + 31751 - 19968: 0xF0EA, + 31762 - 19968: 0xF3C2, + 31774 - 19968: 0xD3AF, + 31777 - 19968: 0xCADB, + 31783 - 19968: 0xFCD7, + 31786 - 19968: 0xEDD8, + 31787 - 19968: 0xE1C7, + 31805 - 19968: 0xF4D8, + 31806 - 19968: 0xD6B3, + 31807 - 19968: 0xDDAD, + 31811 - 19968: 0xD5BE, + 31820 - 19968: 0xF1C3, + 31821 - 19968: 0xEEDF, + 31840 - 19968: 0xD6EB, + 31844 - 19968: 0xF4D9, + 31852 - 19968: 0xD7E6, + 31859 - 19968: 0xDAB7, + 31875 - 19968: 0xDDFB, + 31881 - 19968: 0xDDCF, + 31890 - 19968: 0xD8A3, + 31893 - 19968: 0xDAD9, + 31895 - 19968: 0xF0D8, + 31896 - 19968: 0xEFC4, + 31903 - 19968: 0xE1D8, + 31909 - 19968: 0xF1D4, + 31911 - 19968: 0xEDF2, + 31918 - 19968: 0xD5DB, + 31921 - 19968: 0xD5DC, + 31922 - 19968: 0xF3C4, + 31923 - 19968: 0xCBD7, + 31929 - 19968: 0xE2B6, + 31934 - 19968: 0xEFF1, + 31946 - 19968: 0xFBD5, + 31958 - 19968: 0xD3D8, + 31966 - 19968: 0xDDD0, + 31967 - 19968: 0xF0D9, + 31968 - 19968: 0xCBB3, + 31975 - 19968: 0xD5DD, + 31995 - 19968: 0xCDA7, + 31998 - 19968: 0xD0AC, + 32000 - 19968: 0xD1BA, + 32002 - 19968: 0xF1C4, + 32004 - 19968: 0xE5B3, + 32005 - 19968: 0xFBF5, + 32006 - 19968: 0xE9E1, + 32007 - 19968: 0xFDE0, + 32008 - 19968: 0xFCBC, + 32010 - 19968: 0xDAA2, + 32011 - 19968: 0xDAA3, + 32013 - 19968: 0xD2A1, + 32016 - 19968: 0xD2EF, + 32020 - 19968: 0xE2ED, + 32023 - 19968: 0xDEE9, + 32024 - 19968: 0xCEDC, + 32025 - 19968: 0xF2B5, + 32026 - 19968: 0xD0E4, + 32027 - 19968: 0xDDD1, + 32032 - 19968: 0xE1C8, + 32033 - 19968: 0xDBB7, + 32034 - 19968: 0xDFE3, + 32043 - 19968: 0xEDB9, + 32044 - 19968: 0xF1C5, + 32046 - 19968: 0xF3CF, + 32047 - 19968: 0xD7AB, + 32048 - 19968: 0xE1AC, + 32051 - 19968: 0xE3EB, + 32053 - 19968: 0xEEC7, + 32057 - 19968: 0xE1C9, + 32058 - 19968: 0xCAFA, + 32066 - 19968: 0xF0FB, + 32067 - 19968: 0xFAE1, + 32068 - 19968: 0xF0DA, + 32069 - 19968: 0xCCE7, + 32070 - 19968: 0xDAF4, + 32080 - 19968: 0xCCBF, + 32094 - 19968: 0xCEED, + 32097 - 19968: 0xD5A9, + 32098 - 19968: 0xFAE2, + 32102 - 19968: 0xD0E5, + 32104 - 19968: 0xEBD6, + 32106 - 19968: 0xECDF, + 32110 - 19968: 0xDFFC, + 32113 - 19968: 0xF7D6, + 32114 - 19968: 0xDEEA, + 32115 - 19968: 0xCBB4, + 32118 - 19968: 0xEFBE, + 32121 - 19968: 0xCCB5, + 32127 - 19968: 0xCFBD, + 32142 - 19968: 0xEFF2, + 32143 - 19968: 0xE2B7, + 32147 - 19968: 0xCCE8, + 32156 - 19968: 0xF0FC, + 32160 - 19968: 0xD6E0, + 32162 - 19968: 0xF1C6, + 32172 - 19968: 0xE2B8, + 32173 - 19968: 0xEBAB, + 32177 - 19968: 0xCBB5, + 32178 - 19968: 0xD8D1, + 32180 - 19968: 0xF4CE, + 32181 - 19968: 0xF3F7, + 32184 - 19968: 0xD7C6, + 32186 - 19968: 0xD1BB, + 32187 - 19968: 0xF7AA, + 32189 - 19968: 0xEDCA, + 32190 - 19968: 0xD7D3, + 32191 - 19968: 0xD8FA, + 32199 - 19968: 0xF6C5, + 32202 - 19968: 0xD1CC, + 32203 - 19968: 0xDDFC, + 32214 - 19968: 0xDFFD, + 32216 - 19968: 0xF9E5, + 32218 - 19968: 0xE0CA, + 32221 - 19968: 0xF2FD, + 32222 - 19968: 0xD3B0, + 32224 - 19968: 0xF4F3, + 32225 - 19968: 0xDAC9, + 32227 - 19968: 0xE6DE, + 32232 - 19968: 0xF8BA, + 32233 - 19968: 0xE8D0, + 32236 - 19968: 0xD8FB, + 32239 - 19968: 0xEAD5, + 32244 - 19968: 0xD6A3, + 32251 - 19968: 0xF6C6, + 32265 - 19968: 0xF2DB, + 32266 - 19968: 0xE4FC, + 32277 - 19968: 0xE8B2, + 32283 - 19968: 0xDADA, + 32285 - 19968: 0xF2DC, + 32286 - 19968: 0xFBD6, + 32287 - 19968: 0xE9B2, + 32289 - 19968: 0xEEAD, + 32291 - 19968: 0xFAE3, + 32299 - 19968: 0xDCEE, + 32302 - 19968: 0xF5EA, + 32303 - 19968: 0xE6E0, + 32305 - 19968: 0xF0FD, + 32311 - 19968: 0xD7AC, + 32317 - 19968: 0xF5C5, + 32318 - 19968: 0xEEE0, + 32321 - 19968: 0xDBE5, + 32323 - 19968: 0xDDDE, + 32326 - 19968: 0xD9F0, + 32327 - 19968: 0xE9A3, + 32338 - 19968: 0xF1F9, + 32340 - 19968: 0xF2C4, + 32341 - 19968: 0xE0CB, + 32350 - 19968: 0xE9A4, + 32353 - 19968: 0xE2B9, + 32361 - 19968: 0xE3B1, + 32362 - 19968: 0xFCEB, + 32363 - 19968: 0xCDA8, + 32365 - 19968: 0xCCB6, + 32368 - 19968: 0xF0DB, + 32377 - 19968: 0xE6BA, + 32380 - 19968: 0xCDA9, + 32386 - 19968: 0xF3C3, + 32396 - 19968: 0xE1D9, + 32399 - 19968: 0xEFAB, + 32403 - 19968: 0xE7C5, + 32406 - 19968: 0xE0E9, + 32408 - 19968: 0xF3C5, + 32411 - 19968: 0xD4C0, + 32412 - 19968: 0xD5BF, + 32566 - 19968: 0xDDAE, + 32568 - 19968: 0xF9FC, + 32570 - 19968: 0xCCC0, + 32588 - 19968: 0xE5A2, + 32592 - 19968: 0xCEB8, + 32596 - 19968: 0xD8D2, + 32597 - 19968: 0xF9D6, + 32618 - 19968: 0xF1AA, + 32619 - 19968: 0xCED1, + 32622 - 19968: 0xF6C7, + 32624 - 19968: 0xDBEB, + 32626 - 19968: 0xDFFE, + 32629 - 19968: 0xD8E1, + 32631 - 19968: 0xF7F3, + 32633 - 19968: 0xD7E7, + 32645 - 19968: 0xD4FE, + 32648 - 19968: 0xD1BC, + 32650 - 19968: 0xE5CF, + 32652 - 19968: 0xCBB6, + 32654 - 19968: 0xDAB8, + 32660 - 19968: 0xCDC4, + 32666 - 19968: 0xD6BE, + 32670 - 19968: 0xE2BA, + 32676 - 19968: 0xCFD8, + 32680 - 19968: 0xE0CC, + 32681 - 19968: 0xEBF9, + 32690 - 19968: 0xFDFD, + 32696 - 19968: 0xD7E8, + 32697 - 19968: 0xCBD8, + 32701 - 19968: 0xE9E2, + 32705 - 19968: 0xE8BA, + 32709 - 19968: 0xE3C7, + 32714 - 19968: 0xECCD, + 32716 - 19968: 0xECCE, + 32718 - 19968: 0xD6BF, + 32722 - 19968: 0xE3A7, + 32724 - 19968: 0xDFD6, + 32725 - 19968: 0xFDE8, + 32735 - 19968: 0xEEE1, + 32736 - 19968: 0xF6A8, + 32737 - 19968: 0xDDFD, + 32745 - 19968: 0xF8BB, + 32747 - 19968: 0xE8D1, + 32752 - 19968: 0xF9D7, + 32761 - 19968: 0xCEEE, + 32764 - 19968: 0xECCF, + 32768 - 19968: 0xE9A5, + 32769 - 19968: 0xD6D5, + 32771 - 19968: 0xCDC5, + 32773 - 19968: 0xEDBA, + 32774 - 19968: 0xD1BD, + 32777 - 19968: 0xCFBE, + 32780 - 19968: 0xECBB, + 32784 - 19968: 0xD2B1, + 32789 - 19968: 0xCCE9, + 32791 - 19968: 0xD9C4, + 32792 - 19968: 0xE9FC, + 32813 - 19968: 0xD1BE, + 32819 - 19968: 0xECBC, + 32822 - 19968: 0xE5AD, + 32829 - 19968: 0xF7B0, + 32831 - 19968: 0xCCEA, + 32835 - 19968: 0xD3C4, + 32838 - 19968: 0xD6C0, + 32842 - 19968: 0xD6FD, + 32854 - 19968: 0xE1A1, + 32856 - 19968: 0xDEBD, + 32858 - 19968: 0xF6A9, + 32862 - 19968: 0xDAA4, + 32879 - 19968: 0xD6A4, + 32880 - 19968: 0xF5C6, + 32882 - 19968: 0xE1A2, + 32883 - 19968: 0xE9C6, + 32887 - 19968: 0xF2C5, + 32893 - 19968: 0xF4E9, + 32894 - 19968: 0xD6EC, + 32895 - 19968: 0xEBD3, + 32900 - 19968: 0xECBD, + 32901 - 19968: 0xE2DC, + 32902 - 19968: 0xDEEB, + 32903 - 19968: 0xF0DC, + 32905 - 19968: 0xEBBF, + 32907 - 19968: 0xD7CE, + 32908 - 19968: 0xD1BF, + 32918 - 19968: 0xF5AB, + 32923 - 19968: 0xF9FD, + 32925 - 19968: 0xCADC, + 32929 - 19968: 0xCDC6, + 32930 - 19968: 0xF2B6, + 32933 - 19968: 0xDDFE, + 32937 - 19968: 0xCCB7, + 32938 - 19968: 0xDBB8, + 32943 - 19968: 0xD0E9, + 32945 - 19968: 0xCEDD, + 32946 - 19968: 0xEBC0, + 32948 - 19968: 0xFDA2, + 32954 - 19968: 0xF8CB, + 32963 - 19968: 0xEAD6, + 32964 - 19968: 0xF1B0, + 32972 - 19968: 0xDBCE, + 32974 - 19968: 0xF7C3, + 32986 - 19968: 0xDBCF, + 32987 - 19968: 0xCBA4, + 32990 - 19968: 0xF8E0, + 32993 - 19968: 0xFBD7, + 32996 - 19968: 0xEBCA, + 32997 - 19968: 0xE0A1, + 33009 - 19968: 0xCECD, + 33012 - 19968: 0xD4DC, + 33016 - 19968: 0xFDD8, + 33021 - 19968: 0xD2F6, + 33026 - 19968: 0xF2B7, + 33029 - 19968: 0xFAF6, + 33030 - 19968: 0xF6AA, + 33031 - 19968: 0xFAF7, + 33032 - 19968: 0xD8E6, + 33034 - 19968: 0xF4B1, + 33048 - 19968: 0xE8D2, + 33050 - 19968: 0xCAC5, + 33051 - 19968: 0xCCEB, + 33059 - 19968: 0xE2EE, + 33065 - 19968: 0xE2BB, + 33067 - 19968: 0xF7AD, + 33071 - 19968: 0xF8E1, + 33081 - 19968: 0xF3EC, + 33086 - 19968: 0xDEA1, + 33099 - 19968: 0xE4FD, + 33102 - 19968: 0xE3EC, + 33104 - 19968: 0xDDAF, + 33105 - 19968: 0xDDB0, + 33108 - 19968: 0xCBB7, + 33109 - 19968: 0xE8D3, + 33125 - 19968: 0xE1A3, + 33126 - 19968: 0xD2E0, + 33131 - 19968: 0xF0FE, + 33136 - 19968: 0xE9A6, + 33137 - 19968: 0xCBF2, + 33144 - 19968: 0xEDF3, + 33145 - 19968: 0xDCD9, + 33146 - 19968: 0xE0CD, + 33151 - 19968: 0xF7DA, + 33152 - 19968: 0xDBB9, + 33160 - 19968: 0xCCAE, + 33162 - 19968: 0xDADB, + 33167 - 19968: 0xCDC7, + 33178 - 19968: 0xDDB1, + 33180 - 19968: 0xD8AF, + 33181 - 19968: 0xE3A3, + 33184 - 19968: 0xCEEF, + 33187 - 19968: 0xF2F3, + 33192 - 19968: 0xF8B3, + 33203 - 19968: 0xE0CE, + 33205 - 19968: 0xF5FD, + 33210 - 19968: 0xEBEC, + 33213 - 19968: 0xD3C5, + 33214 - 19968: 0xFCEC, + 33215 - 19968: 0xD2DB, + 33216 - 19968: 0xD4EB, + 33218 - 19968: 0xDEA2, + 33222 - 19968: 0xE5E6, + 33229 - 19968: 0xF0B0, + 33240 - 19968: 0xD5C4, + 33247 - 19968: 0xEDF4, + 33251 - 19968: 0xE3ED, + 33253 - 19968: 0xE8C2, + 33255 - 19968: 0xEDF5, + 33256 - 19968: 0xD7FC, + 33258 - 19968: 0xEDBB, + 33261 - 19968: 0xF6AB, + 33267 - 19968: 0xF2B8, + 33268 - 19968: 0xF6C8, + 33274 - 19968: 0xD3E6, + 33275 - 19968: 0xF2DD, + 33276 - 19968: 0xCFBF, + 33278 - 19968: 0xEBAC, + 33285 - 19968: 0xCFC0, + 33287 - 19968: 0xE6A8, + 33288 - 19968: 0xFDE9, + 33290 - 19968: 0xCFC1, + 33292 - 19968: 0xE0DF, + 33293 - 19968: 0xDEEC, + 33298 - 19968: 0xE0A2, + 33307 - 19968: 0xF4BF, + 33308 - 19968: 0xE2EF, + 33310 - 19968: 0xD9F1, + 33311 - 19968: 0xF1C7, + 33313 - 19968: 0xCBB8, + 33322 - 19968: 0xF9FE, + 33323 - 19968: 0xDBBA, + 33324 - 19968: 0xDAF5, + 33333 - 19968: 0xF6EC, + 33334 - 19968: 0xDADC, + 33335 - 19968: 0xFAE4, + 33337 - 19968: 0xE0CF, + 33344 - 19968: 0xDDB2, + 33349 - 19968: 0xE6A9, + 33351 - 19968: 0xEFF3, + 33369 - 19968: 0xF3ED, + 33380 - 19968: 0xEBFA, + 33382 - 19968: 0xF9E6, + 33390 - 19968: 0xCADD, + 33391 - 19968: 0xD5DE, + 33393 - 19968: 0xCADE, + 33394 - 19968: 0xDFE4, + 33398 - 19968: 0xE6FD, + 33400 - 19968: 0xF5AC, + 33406 - 19968: 0xE4F5, + 33419 - 19968: 0xE9E3, + 33421 - 19968: 0xEDCB, + 33422 - 19968: 0xCFE4, + 33426 - 19968: 0xD8D3, + 33433 - 19968: 0xDDB3, + 33434 - 19968: 0xD4EC, + 33437 - 19968: 0xF2B9, + 33439 - 19968: 0xDFB7, + 33445 - 19968: 0xCBCE, + 33446 - 19968: 0xFBD8, + 33449 - 19968: 0xD0D9, + 33452 - 19968: 0xDDD2, + 33453 - 19968: 0xF7F4, + 33454 - 19968: 0xE7DC, + 33455 - 19968: 0xE4A5, + 33457 - 19968: 0xFCA3, + 33459 - 19968: 0xDBBB, + 33463 - 19968: 0xF2BA, + 33464 - 19968: 0xE9FD, + 33465 - 19968: 0xD0CA, + 33467 - 19968: 0xF5D6, + 33468 - 19968: 0xD9C5, + 33469 - 19968: 0xE4B4, + 33471 - 19968: 0xEDA7, + 33489 - 19968: 0xEABD, + 33490 - 19968: 0xE6FE, + 33492 - 19968: 0xF7C4, + 33493 - 19968: 0xF5AD, + 33495 - 19968: 0xD9E0, + 33499 - 19968: 0xCAB4, + 33502 - 19968: 0xF8E2, + 33503 - 19968: 0xCFC2, + 33505 - 19968: 0xECBE, + 33509 - 19968: 0xE5B4, + 33510 - 19968: 0xCDC8, + 33511 - 19968: 0xEEC8, + 33521 - 19968: 0xE7C8, + 33533 - 19968: 0xCDC9, + 33534 - 19968: 0xF9B7, + 33537 - 19968: 0xF1E8, + 33538 - 19968: 0xD9F2, + 33539 - 19968: 0xDBF5, + 33540 - 19968: 0xCAB5, + 33541 - 19968: 0xD9C6, + 33545 - 19968: 0xD8C9, + 33559 - 19968: 0xD9AB, + 33576 - 19968: 0xEDBC, + 33579 - 19968: 0xD8D4, + 33583 - 19968: 0xDCDA, + 33585 - 19968: 0xE2BC, + 33588 - 19968: 0xFCED, + 33589 - 19968: 0xECE0, + 33590 - 19968: 0xD2FE, + 33592 - 19968: 0xE9C7, + 33593 - 19968: 0xE6AA, + 33600 - 19968: 0xE2F0, + 33607 - 19968: 0xFABB, + 33609 - 19968: 0xF5AE, + 33610 - 19968: 0xFBAA, + 33615 - 19968: 0xECFB, + 33617 - 19968: 0xECBF, + 33618 - 19968: 0xFCD8, + 33651 - 19968: 0xD4E5, + 33655 - 19968: 0xF9C3, + 33659 - 19968: 0xEEE2, + 33673 - 19968: 0xD7E9, + 33674 - 19968: 0xEDF6, + 33678 - 19968: 0xDEED, + 33686 - 19968: 0xCCEC, + 33688 - 19968: 0xE3EE, + 33694 - 19968: 0xE8D4, + 33698 - 19968: 0xFAF8, + 33705 - 19968: 0xDDB4, + 33706 - 19968: 0xE4B5, + 33707 - 19968: 0xD8B0, + 33725 - 19968: 0xD8D5, + 33729 - 19968: 0xF4EA, + 33733 - 19968: 0xCEB9, + 33737 - 19968: 0xD6E1, + 33738 - 19968: 0xCFD2, + 33740 - 19968: 0xD0B6, + 33747 - 19968: 0xCEA2, + 33750 - 19968: 0xF3EE, + 33756 - 19968: 0xF3F8, + 33769 - 19968: 0xDCCC, + 33771 - 19968: 0xD0CB, + 33775 - 19968: 0xFCA4, + 33776 - 19968: 0xCDCA, + 33777 - 19968: 0xD7D4, + 33778 - 19968: 0xDEA3, + 33780 - 19968: 0xE4E0, + 33785 - 19968: 0xEEC9, + 33789 - 19968: 0xE2DD, + 33795 - 19968: 0xF5FE, + 33796 - 19968: 0xD4AC, + 33802 - 19968: 0xD5D1, + 33804 - 19968: 0xD8F0, + 33805 - 19968: 0xF8C3, + 33806 - 19968: 0xEAD7, + 33833 - 19968: 0xF5D7, + 33836 - 19968: 0xD8BF, + 33841 - 19968: 0xFDC0, + 33848 - 19968: 0xEBAD, + 33853 - 19968: 0xD5AA, + 33865 - 19968: 0xE7A8, + 33879 - 19968: 0xEECA, + 33883 - 19968: 0xCAE7, + 33889 - 19968: 0xF8E3, + 33891 - 19968: 0xD4DD, + 33894 - 19968: 0xEAD8, + 33899 - 19968: 0xFBD9, + 33900 - 19968: 0xEDF7, + 33903 - 19968: 0xE5B5, + 33909 - 19968: 0xD0AD, + 33914 - 19968: 0xF1F1, + 33936 - 19968: 0xE2BD, + 33940 - 19968: 0xE3C8, + 33945 - 19968: 0xD9D5, + 33948 - 19968: 0xDFAA, + 33953 - 19968: 0xDBBC, + 33970 - 19968: 0xF8E4, + 33976 - 19968: 0xF1FA, + 33979 - 19968: 0xE5B6, + 33980 - 19968: 0xF3EF, + 33983 - 19968: 0xFBDA, + 33984 - 19968: 0xE1E0, + 33986 - 19968: 0xD9AC, + 33988 - 19968: 0xF5EB, + 33990 - 19968: 0xE0B6, + 33993 - 19968: 0xE9C8, + 33995 - 19968: 0xCBCF, + 33997 - 19968: 0xE3C9, + 34001 - 19968: 0xDEEE, + 34010 - 19968: 0xE2BE, + 34028 - 19968: 0xDCEF, + 34030 - 19968: 0xD6A5, + 34036 - 19968: 0xE2F1, + 34044 - 19968: 0xD6FE, + 34065 - 19968: 0xD9A1, + 34067 - 19968: 0xD8C0, + 34068 - 19968: 0xDCDB, + 34071 - 19968: 0xEDBD, + 34072 - 19968: 0xDFB8, + 34074 - 19968: 0xEAA5, + 34078 - 19968: 0xD7AD, + 34081 - 19968: 0xF3F9, + 34083 - 19968: 0xEDF8, + 34085 - 19968: 0xF5C7, + 34092 - 19968: 0xE1CA, + 34093 - 19968: 0xEBE3, + 34095 - 19968: 0xF2DE, + 34109 - 19968: 0xF8CC, + 34111 - 19968: 0xEAD9, + 34113 - 19968: 0xD3C6, + 34115 - 19968: 0xDBE6, + 34121 - 19968: 0xF5AF, + 34126 - 19968: 0xCEF0, + 34131 - 19968: 0xE9FE, + 34137 - 19968: 0xFBB6, + 34147 - 19968: 0xE2F2, + 34152 - 19968: 0xCFF2, + 34153 - 19968: 0xF7B9, + 34154 - 19968: 0xD9F3, + 34157 - 19968: 0xE1CB, + 34180 - 19968: 0xDADD, + 34183 - 19968: 0xDAB9, + 34191 - 19968: 0xEBFB, + 34193 - 19968: 0xCBB9, + 34196 - 19968: 0xEDF9, + 34203 - 19968: 0xE0E0, + 34214 - 19968: 0xF4C0, + 34216 - 19968: 0xFDBC, + 34217 - 19968: 0xDFB1, + 34218 - 19968: 0xE3EF, + 34223 - 19968: 0xE0A3, + 34224 - 19968: 0xFDB9, + 34234 - 19968: 0xF0B1, + 34241 - 19968: 0xCDCB, + 34249 - 19968: 0xEDBE, + 34253 - 19968: 0xD5C0, + 34254 - 19968: 0xE3F0, + 34255 - 19968: 0xEDFA, + 34261 - 19968: 0xE9E4, + 34268 - 19968: 0xD5ED, + 34269 - 19968: 0xE7DD, + 34276 - 19968: 0xD4F6, + 34277 - 19968: 0xE5B7, + 34281 - 19968: 0xDBE7, + 34282 - 19968: 0xE2BF, + 34295 - 19968: 0xEECB, + 34298 - 19968: 0xD7F4, + 34299 - 19968: 0xF0DD, + 34303 - 19968: 0xCEAB, + 34306 - 19968: 0xE7DE, + 34310 - 19968: 0xD6D6, + 34311 - 19968: 0xE1CC, + 34314 - 19968: 0xE8B3, + 34326 - 19968: 0xE5EE, + 34327 - 19968: 0xDCA2, + 34330 - 19968: 0xE0D0, + 34349 - 19968: 0xD5B5, + 34367 - 19968: 0xD5A1, + 34382 - 19968: 0xFBDB, + 34384 - 19968: 0xF9CB, + 34388 - 19968: 0xCBF3, + 34389 - 19968: 0xF4A5, + 34395 - 19968: 0xFAC8, + 34396 - 19968: 0xD6D7, + 34398 - 19968: 0xE9E5, + 34399 - 19968: 0xFBDC, + 34407 - 19968: 0xFDD0, + 34425 - 19968: 0xFBF6, + 34442 - 19968: 0xDAA5, + 34444 - 19968: 0xDBBD, + 34451 - 19968: 0xECE2, + 34467 - 19968: 0xCDF7, + 34468 - 19968: 0xF0DE, + 34473 - 19968: 0xF6C9, + 34503 - 19968: 0xDEEF, + 34507 - 19968: 0xD3B1, + 34516 - 19968: 0xFCEE, + 34521 - 19968: 0xE8C3, + 34523 - 19968: 0xF1C8, + 34527 - 19968: 0xCEF1, + 34532 - 19968: 0xF9ED, + 34541 - 19968: 0xF2F4, + 34558 - 19968: 0xE4B6, + 34560 - 19968: 0xF5B9, + 34562 - 19968: 0xDCF0, + 34563 - 19968: 0xE3F1, + 34568 - 19968: 0xE8A5, + 34584 - 19968: 0xF2BB, + 34586 - 19968: 0xDEA4, + 34588 - 19968: 0xDACC, + 34638 - 19968: 0xCAE9, + 34645 - 19968: 0xE3DA, + 34647 - 19968: 0xFCD9, + 34655 - 19968: 0xEADA, + 34662 - 19968: 0xF9C4, + 34664 - 19968: 0xE3A4, + 34676 - 19968: 0xFBDD, + 34678 - 19968: 0xEFCA, + 34680 - 19968: 0xE8C4, + 34690 - 19968: 0xD5CC, + 34701 - 19968: 0xEBD7, + 34719 - 19968: 0xD9AD, + 34722 - 19968: 0xFBAB, + 34739 - 19968: 0xD3D9, + 34746 - 19968: 0xD5A2, + 34756 - 19968: 0xF6DE, + 34784 - 19968: 0xDAF6, + 34796 - 19968: 0xE0D1, + 34799 - 19968: 0xE9A8, + 34802 - 19968: 0xF5F9, + 34809 - 19968: 0xFAAF, + 34811 - 19968: 0xEBFC, + 34814 - 19968: 0xE0EA, + 34821 - 19968: 0xE3B2, + 34847 - 19968: 0xD5C5, + 34850 - 19968: 0xF1E3, + 34851 - 19968: 0xD5EE, + 34865 - 19968: 0xCDCC, + 34870 - 19968: 0xEDD9, + 34875 - 19968: 0xD8C1, + 34880 - 19968: 0xFAEC, + 34886 - 19968: 0xF1EB, + 34892 - 19968: 0xFABC, + 34893 - 19968: 0xE6E2, + 34898 - 19968: 0xFAE5, + 34899 - 19968: 0xE2FA, + 34903 - 19968: 0xCAB6, + 34905 - 19968: 0xE4B7, + 34907 - 19968: 0xEADB, + 34909 - 19968: 0xF5FA, + 34913 - 19968: 0xFBAC, + 34914 - 19968: 0xCFC3, + 34915 - 19968: 0xEBFD, + 34920 - 19968: 0xF8FA, + 34923 - 19968: 0xDFB9, + 34928 - 19968: 0xE1F1, + 34930 - 19968: 0xD2A4, + 34935 - 19968: 0xF5FB, + 34942 - 19968: 0xD0DA, + 34943 - 19968: 0xD0DB, + 34945 - 19968: 0xEABE, + 34946 - 19968: 0xD9B1, + 34952 - 19968: 0xCAB7, + 34955 - 19968: 0xD3E7, + 34957 - 19968: 0xF8E5, + 34962 - 19968: 0xD3B2, + 34966 - 19968: 0xE2C0, + 34967 - 19968: 0xF2DF, + 34974 - 19968: 0xCDE5, + 34987 - 19968: 0xF9AC, + 34996 - 19968: 0xCDCD, + 35009 - 19968: 0xEEAE, + 35010 - 19968: 0xD6AE, + 35023 - 19968: 0xD7EA, + 35028 - 19968: 0xE7E0, + 35029 - 19968: 0xEBAE, + 35033 - 19968: 0xCFD9, + 35036 - 19968: 0xDCCD, + 35037 - 19968: 0xEDFB, + 35039 - 19968: 0xDEF0, + 35041 - 19968: 0xD7EB, + 35048 - 19968: 0xDEA5, + 35059 - 19968: 0xDFD7, + 35060 - 19968: 0xDBD0, + 35061 - 19968: 0xDBD1, + 35064 - 19968: 0xD5A3, + 35069 - 19968: 0xF0B2, + 35079 - 19968: 0xDCDC, + 35088 - 19968: 0xCAE8, + 35090 - 19968: 0xF8E6, + 35091 - 19968: 0xDCCE, + 35096 - 19968: 0xEADC, + 35097 - 19968: 0xDBD2, + 35109 - 19968: 0xE9B3, + 35114 - 19968: 0xF7DB, + 35126 - 19968: 0xE3A8, + 35128 - 19968: 0xD7AE, + 35131 - 19968: 0xE0E1, + 35137 - 19968: 0xCBBA, + 35140 - 19968: 0xE5D1, + 35167 - 19968: 0xD0DC, + 35172 - 19968: 0xD5C1, + 35178 - 19968: 0xD8CA, + 35186 - 19968: 0xE3A9, + 35199 - 19968: 0xE0A4, + 35201 - 19968: 0xE9A9, + 35203 - 19968: 0xD3C7, + 35206 - 19968: 0xDCDD, + 35207 - 19968: 0xF8AE, + 35211 - 19968: 0xCCB8, + 35215 - 19968: 0xD0AE, + 35219 - 19968: 0xD8F2, + 35222 - 19968: 0xE3CA, + 35233 - 19968: 0xCCAF, + 35241 - 19968: 0xD4AD, + 35242 - 19968: 0xF6D1, + 35250 - 19968: 0xD0CC, + 35258 - 19968: 0xCAC6, + 35261 - 19968: 0xD5C2, + 35264 - 19968: 0xCEBA, + 35282 - 19968: 0xCAC7, + 35299 - 19968: 0xFAB0, + 35316 - 19968: 0xDFD8, + 35320 - 19968: 0xF5BA, + 35328 - 19968: 0xE5EB, + 35330 - 19968: 0xEFF4, + 35331 - 19968: 0xDDB5, + 35336 - 19968: 0xCDAA, + 35338 - 19968: 0xE3F2, + 35340 - 19968: 0xFBF7, + 35342 - 19968: 0xF7D0, + 35347 - 19968: 0xFDBA, + 35350 - 19968: 0xFDE1, + 35351 - 19968: 0xF6FE, + 35352 - 19968: 0xD1C0, + 35355 - 19968: 0xE8C5, + 35357 - 19968: 0xE4B8, + 35359 - 19968: 0xE1E8, + 35363 - 19968: 0xCCC1, + 35365 - 19968: 0xD2ED, + 35370 - 19968: 0xDBBE, + 35373 - 19968: 0xE0E2, + 35377 - 19968: 0xFAC9, + 35380 - 19968: 0xE1CD, + 35382 - 19968: 0xCAB8, + 35386 - 19968: 0xF2E0, + 35387 - 19968: 0xF1C9, + 35408 - 19968: 0xDEF1, + 35412 - 19968: 0xF0DF, + 35413 - 19968: 0xF8C4, + 35419 - 19968: 0xEECC, + 35422 - 19968: 0xDEF2, + 35424 - 19968: 0xE7C9, + 35426 - 19968: 0xE2F3, + 35427 - 19968: 0xE7E1, + 35430 - 19968: 0xE3CB, + 35433 - 19968: 0xE3CC, + 35437 - 19968: 0xCFF8, + 35438 - 19968: 0xEFAC, + 35440 - 19968: 0xFDFE, + 35441 - 19968: 0xFCA5, + 35442 - 19968: 0xFAB1, + 35443 - 19968: 0xDFD9, + 35445 - 19968: 0xE0D2, + 35449 - 19968: 0xF4DA, + 35461 - 19968: 0xF1CA, + 35463 - 19968: 0xCEA3, + 35468 - 19968: 0xF2BC, + 35469 - 19968: 0xECE3, + 35475 - 19968: 0xE0A5, + 35477 - 19968: 0xF7AB, + 35480 - 19968: 0xEBAF, + 35486 - 19968: 0xE5DE, + 35488 - 19968: 0xE1A4, + 35489 - 19968: 0xCDAB, + 35491 - 19968: 0xD9F4, + 35492 - 19968: 0xE8A6, + 35493 - 19968: 0xCDCE, + 35494 - 19968: 0xE1E9, + 35496 - 19968: 0xFCEF, + 35498 - 19968: 0xE0E3, + 35504 - 19968: 0xE2C1, + 35506 - 19968: 0xCEA4, + 35513 - 19968: 0xDEA6, + 35516 - 19968: 0xEBFE, + 35518 - 19968: 0xEBDD, + 35519 - 19968: 0xF0E0, + 35522 - 19968: 0xF4DB, + 35524 - 19968: 0xE2F4, + 35527 - 19968: 0xD3C8, + 35531 - 19968: 0xF4EB, + 35533 - 19968: 0xEEB5, + 35535 - 19968: 0xF5D8, + 35538 - 19968: 0xD5DF, + 35542 - 19968: 0xD6E5, + 35547 - 19968: 0xEBB0, + 35548 - 19968: 0xF4E3, + 35553 - 19968: 0xE3CD, + 35558 - 19968: 0xF4F4, + 35559 - 19968: 0xFAB2, + 35562 - 19968: 0xEFF5, + 35563 - 19968: 0xCADF, + 35565 - 19968: 0xEBB1, + 35566 - 19968: 0xEDBF, + 35569 - 19968: 0xFDC9, + 35574 - 19968: 0xE4A6, + 35575 - 19968: 0xF9A4, + 35576 - 19968: 0xF0B3, + 35578 - 19968: 0xE5EC, + 35582 - 19968: 0xD1E7, + 35584 - 19968: 0xD9C7, + 35585 - 19968: 0xE4D7, + 35586 - 19968: 0xEADD, + 35588 - 19968: 0xD4F7, + 35598 - 19968: 0xDABA, + 35600 - 19968: 0xDACD, + 35604 - 19968: 0xF9CC, + 35606 - 19968: 0xE1DA, + 35607 - 19968: 0xDBBF, + 35609 - 19968: 0xCCC5, + 35610 - 19968: 0xECD0, + 35611 - 19968: 0xCBBB, + 35613 - 19968: 0xDEF3, + 35616 - 19968: 0xE9AA, + 35624 - 19968: 0xD9C8, + 35627 - 19968: 0xEEE3, + 35628 - 19968: 0xD7BD, + 35635 - 19968: 0xCFC4, + 35641 - 19968: 0xD0CD, + 35649 - 19968: 0xFCA6, + 35657 - 19968: 0xF1FB, + 35662 - 19968: 0xFDD2, + 35663 - 19968: 0xD1C1, + 35672 - 19968: 0xE3DB, + 35674 - 19968: 0xD3C9, + 35676 - 19968: 0xDCCF, + 35686 - 19968: 0xCCED, + 35692 - 19968: 0xDEA7, + 35695 - 19968: 0xE6BB, + 35696 - 19968: 0xECA1, + 35700 - 19968: 0xCCB9, + 35703 - 19968: 0xFBDE, + 35709 - 19968: 0xE7E2, + 35712 - 19968: 0xD4C1, + 35722 - 19968: 0xDCA8, + 35728 - 19968: 0xE2C2, + 35730 - 19968: 0xF3D8, + 35731 - 19968: 0xE5D3, + 35734 - 19968: 0xF3D9, + 35738 - 19968: 0xF3C6, + 35895 - 19968: 0xCDDB, + 35903 - 19968: 0xCDAC, + 35905 - 19968: 0xFCC3, + 35910 - 19968: 0xD4E7, + 35912 - 19968: 0xD1C2, + 35914 - 19968: 0xF9A5, + 35916 - 19968: 0xE8D5, + 35925 - 19968: 0xE3CE, + 35930 - 19968: 0xD4CA, + 35937 - 19968: 0xDFDA, + 35946 - 19968: 0xFBDF, + 35947 - 19968: 0xE7E3, + 35961 - 19968: 0xF8FB, + 35962 - 19968: 0xE3CF, + 35970 - 19968: 0xF5B0, + 35978 - 19968: 0xD8E7, + 35980 - 19968: 0xD9C9, + 35997 - 19968: 0xF8AF, + 35998 - 19968: 0xEFF6, + 36000 - 19968: 0xDDB6, + 36001 - 19968: 0xEEAF, + 36002 - 19968: 0xCDF8, + 36007 - 19968: 0xDEB8, + 36008 - 19968: 0xFCA7, + 36009 - 19968: 0xF7FC, + 36010 - 19968: 0xF7B1, + 36011 - 19968: 0xCEBB, + 36012 - 19968: 0xF4A1, + 36015 - 19968: 0xEECD, + 36016 - 19968: 0xE1AE, + 36019 - 19968: 0xECC3, + 36020 - 19968: 0xCFFE, + 36022 - 19968: 0xF8BF, + 36023 - 19968: 0xD8E2, + 36024 - 19968: 0xD3E8, + 36027 - 19968: 0xDEA8, + 36028 - 19968: 0xF4E4, + 36029 - 19968: 0xECC2, + 36031 - 19968: 0xD9F5, + 36032 - 19968: 0xF9C5, + 36033 - 19968: 0xDDD3, + 36034 - 19968: 0xD6F1, + 36035 - 19968: 0xECFC, + 36036 - 19968: 0xFCF0, + 36039 - 19968: 0xEDC0, + 36040 - 19968: 0xCAB9, + 36042 - 19968: 0xEEE4, + 36049 - 19968: 0xF2E1, + 36051 - 19968: 0xDEB9, + 36058 - 19968: 0xD6F2, + 36060 - 19968: 0xDEF4, + 36062 - 19968: 0xDFDB, + 36064 - 19968: 0xDBD3, + 36066 - 19968: 0xFAE7, + 36067 - 19968: 0xD8E3, + 36068 - 19968: 0xF4C1, + 36070 - 19968: 0xDDB7, + 36074 - 19968: 0xF2F5, + 36077 - 19968: 0xD4AE, + 36084 - 19968: 0xD6F3, + 36091 - 19968: 0xDDB8, + 36092 - 19968: 0xCFC5, + 36093 - 19968: 0xDFDF, + 36100 - 19968: 0xF2BE, + 36101 - 19968: 0xF6A1, + 36103 - 19968: 0xEBCB, + 36104 - 19968: 0xF1FC, + 36106 - 19968: 0xF3C7, + 36109 - 19968: 0xE0EB, + 36115 - 19968: 0xEDFC, + 36118 - 19968: 0xE1DB, + 36196 - 19968: 0xEEE5, + 36198 - 19968: 0xDEF5, + 36203 - 19968: 0xFAD3, + 36208 - 19968: 0xF1CB, + 36211 - 19968: 0xD0AF, + 36212 - 19968: 0xDDB9, + 36215 - 19968: 0xD1C3, + 36229 - 19968: 0xF5B1, + 36234 - 19968: 0xEAC6, + 36249 - 19968: 0xF0E1, + 36259 - 19968: 0xF6AC, + 36264 - 19968: 0xF5D9, + 36275 - 19968: 0xF0EB, + 36282 - 19968: 0xDDBA, + 36286 - 19968: 0xF2BF, + 36294 - 19968: 0xF7C5, + 36299 - 19968: 0xDBA2, + 36300 - 19968: 0xF2F6, + 36303 - 19968: 0xCABA, + 36315 - 19968: 0xF7F5, + 36317 - 19968: 0xCBE5, + 36321 - 19968: 0xEEE6, + 36323 - 19968: 0xE0D3, + 36328 - 19968: 0xCEA5, + 36335 - 19968: 0xD6D8, + 36339 - 19968: 0xD4AF, + 36362 - 19968: 0xE9C9, + 36367 - 19968: 0xD3CE, + 36368 - 19968: 0xF4C2, + 36382 - 19968: 0xCBE6, + 36394 - 19968: 0xF1A1, + 36400 - 19968: 0xEBB2, + 36405 - 19968: 0xF1A2, + 36418 - 19968: 0xEBB3, + 36420 - 19968: 0xF0B4, + 36423 - 19968: 0xCBF4, + 36424 - 19968: 0xD4B0, + 36425 - 19968: 0xF3B2, + 36426 - 19968: 0xFBB7, + 36441 - 19968: 0xF5EC, + 36447 - 19968: 0xEEE7, + 36448 - 19968: 0xF4B2, + 36468 - 19968: 0xF5ED, + 36470 - 19968: 0xCFF3, + 36481 - 19968: 0xF0E2, + 36487 - 19968: 0xEECE, + 36490 - 19968: 0xF1CC, + 36493 - 19968: 0xE5B8, + 36522 - 19968: 0xD7F5, + 36523 - 19968: 0xE3F3, + 36524 - 19968: 0xCFE5, + 36544 - 19968: 0xCFC6, + 36554 - 19968: 0xF3B3, + 36555 - 19968: 0xE4D8, + 36556 - 19968: 0xCFF9, + 36557 - 19968: 0xCFDA, + 36562 - 19968: 0xFACD, + 36575 - 19968: 0xE6E3, + 36587 - 19968: 0xF2E2, + 36600 - 19968: 0xF5EE, + 36603 - 19968: 0xCABB, + 36606 - 19968: 0xE3DC, + 36611 - 19968: 0xCEF2, + 36613 - 19968: 0xD6D9, + 36617 - 19968: 0xEEB0, + 36626 - 19968: 0xF4E5, + 36627 - 19968: 0xD8C2, + 36628 - 19968: 0xDCD0, + 36629 - 19968: 0xCCEE, + 36635 - 19968: 0xD5E0, + 36636 - 19968: 0xF6CA, + 36637 - 19968: 0xFDCA, + 36638 - 19968: 0xD8D6, + 36639 - 19968: 0xF4CF, + 36646 - 19968: 0xD6A6, + 36647 - 19968: 0xDCBE, + 36649 - 19968: 0xDBD4, + 36650 - 19968: 0xD7C7, + 36655 - 19968: 0xF2FE, + 36659 - 19968: 0xF1CD, + 36664 - 19968: 0xE2C3, + 36665 - 19968: 0xDCDE, + 36667 - 19968: 0xDCDF, + 36670 - 19968: 0xEFAD, + 36671 - 19968: 0xE6AB, + 36676 - 19968: 0xF9DD, + 36677 - 19968: 0xEABF, + 36681 - 19968: 0xEFAE, + 36685 - 19968: 0xF4D0, + 36686 - 19968: 0xCEF3, + 36701 - 19968: 0xE6AC, + 36703 - 19968: 0xCEDE, + 36706 - 19968: 0xD5F9, + 36763 - 19968: 0xE3F4, + 36764 - 19968: 0xCDD0, + 36771 - 19968: 0xD5B8, + 36774 - 19968: 0xF7FD, + 36776 - 19968: 0xDCA9, + 36781 - 19968: 0xDEF6, + 36783 - 19968: 0xDCAA, + 36784 - 19968: 0xF2E3, + 36785 - 19968: 0xE9B4, + 36786 - 19968: 0xD2DC, + 36802 - 19968: 0xE9E6, + 36805 - 19968: 0xE3F6, + 36814 - 19968: 0xE7CA, + 36817 - 19968: 0xD0CE, + 36820 - 19968: 0xDAF7, + 36838 - 19968: 0xCABC, + 36842 - 19968: 0xEEE8, + 36843 - 19968: 0xDADE, + 36845 - 19968: 0xF2F7, + 36848 - 19968: 0xE2FB, + 36850 - 19968: 0xCCA6, + 36855 - 19968: 0xDABB, + 36857 - 19968: 0xEEE9, + 36861 - 19968: 0xF5DA, + 36864 - 19968: 0xF7DC, + 36865 - 19968: 0xE1EA, + 36866 - 19968: 0xCEC1, + 36867 - 19968: 0xD4B1, + 36869 - 19968: 0xFDB1, + 36870 - 19968: 0xE6BD, + 36872 - 19968: 0xFBAD, + 36875 - 19968: 0xF8E7, + 36877 - 19968: 0xE1CE, + 36879 - 19968: 0xF7E2, + 36880 - 19968: 0xF5EF, + 36881 - 19968: 0xCFC7, + 36884 - 19968: 0xD4B2, + 36885 - 19968: 0xCCEF, + 36887 - 19968: 0xD4E8, + 36889 - 19968: 0xEECF, + 36890 - 19968: 0xF7D7, + 36893 - 19968: 0xE0A6, + 36894 - 19968: 0xD6C1, + 36895 - 19968: 0xE1DC, + 36896 - 19968: 0xF0E3, + 36897 - 19968: 0xF1E4, + 36898 - 19968: 0xDCF1, + 36899 - 19968: 0xD6A7, + 36910 - 19968: 0xF4F5, + 36913 - 19968: 0xF1CE, + 36914 - 19968: 0xF2E4, + 36917 - 19968: 0xD0B0, + 36920 - 19968: 0xECEF, + 36924 - 19968: 0xF9BA, + 36926 - 19968: 0xEBB5, + 36929 - 19968: 0xD4ED, + 36930 - 19968: 0xE2C4, + 36935 - 19968: 0xE9E7, + 36938 - 19968: 0xEBB4, + 36939 - 19968: 0xEAA1, + 36941 - 19968: 0xF8BC, + 36942 - 19968: 0xCEA6, + 36944 - 19968: 0xF9C6, + 36945 - 19968: 0xFCDA, + 36947 - 19968: 0xD4B3, + 36948 - 19968: 0xD3B9, + 36949 - 19968: 0xEADE, + 36953 - 19968: 0xE9AB, + 36956 - 19968: 0xE1E1, + 36957 - 19968: 0xD3CF, + 36958 - 19968: 0xF4F6, + 36960 - 19968: 0xEAC0, + 36961 - 19968: 0xE1CF, + 36963 - 19968: 0xCCBA, + 36969 - 19968: 0xEEEA, + 36973 - 19968: 0xF0E4, + 36974 - 19968: 0xF3B4, + 36975 - 19968: 0xD4EE, + 36978 - 19968: 0xF2C0, + 36981 - 19968: 0xF1E5, + 36983 - 19968: 0xF4C3, + 36984 - 19968: 0xE0D4, + 36986 - 19968: 0xEBB6, + 36988 - 19968: 0xD7A1, + 36989 - 19968: 0xCBE8, + 36991 - 19968: 0xF9AD, + 36992 - 19968: 0xE9AD, + 36993 - 19968: 0xD8E4, + 36994 - 19968: 0xFAB3, + 36995 - 19968: 0xE2C5, + 36996 - 19968: 0xFCBD, + 36999 - 19968: 0xECC4, + 37000 - 19968: 0xD8B1, + 37002 - 19968: 0xDCAB, + 37007 - 19968: 0xD5A4, + 37009 - 19968: 0xEBE9, + 37013 - 19968: 0xE8BB, + 37017 - 19968: 0xD8D7, + 37026 - 19968: 0xFBAE, + 37027 - 19968: 0xD1E1, + 37030 - 19968: 0xDBC0, + 37032 - 19968: 0xF5BE, + 37034 - 19968: 0xDEF7, + 37039 - 19968: 0xCAFB, + 37040 - 19968: 0xF7C6, + 37041 - 19968: 0xCFC8, + 37045 - 19968: 0xE1D0, + 37048 - 19968: 0xEED0, + 37057 - 19968: 0xE9F4, + 37066 - 19968: 0xCEF4, + 37086 - 19968: 0xD5CD, + 37089 - 19968: 0xCFDB, + 37096 - 19968: 0xDDBB, + 37101 - 19968: 0xCEAC, + 37109 - 19968: 0xE9E8, + 37117 - 19968: 0xD4B4, + 37122 - 19968: 0xE4C7, + 37138 - 19968: 0xF5DB, + 37141 - 19968: 0xFAC1, + 37145 - 19968: 0xDEA9, + 37159 - 19968: 0xD4F8, + 37165 - 19968: 0xEFF7, + 37170 - 19968: 0xD3B3, + 37193 - 19968: 0xEBB7, + 37194 - 19968: 0xEFF8, + 37195 - 19968: 0xF5DC, + 37196 - 19968: 0xEDCC, + 37197 - 19968: 0xDBD5, + 37198 - 19968: 0xF1CF, + 37202 - 19968: 0xF1D0, + 37218 - 19968: 0xF5B2, + 37225 - 19968: 0xD9AE, + 37226 - 19968: 0xD5AC, + 37228 - 19968: 0xE2C6, + 37237 - 19968: 0xFDA3, + 37239 - 19968: 0xFBE5, + 37240 - 19968: 0xDFAB, + 37255 - 19968: 0xE2F5, + 37257 - 19968: 0xF6AD, + 37259 - 19968: 0xF5B3, + 37261 - 19968: 0xF0B5, + 37266 - 19968: 0xE1A5, + 37276 - 19968: 0xF5DD, + 37291 - 19968: 0xECA2, + 37292 - 19968: 0xEDFD, + 37294 - 19968: 0xF5B4, + 37295 - 19968: 0xFBB8, + 37297 - 19968: 0xDBA3, + 37300 - 19968: 0xD6CA, + 37301 - 19968: 0xCBD9, + 37312 - 19968: 0xE5D4, + 37319 - 19968: 0xF3FA, + 37321 - 19968: 0xEBB8, + 37323 - 19968: 0xE0B7, + 37324 - 19968: 0xD7EC, + 37325 - 19968: 0xF1EC, + 37326 - 19968: 0xE5AF, + 37327 - 19968: 0xD5E1, + 37328 - 19968: 0xD7ED, + 37329 - 19968: 0xD1D1, + 37335 - 19968: 0xE1F2, + 37336 - 19968: 0xEFF9, + 37340 - 19968: 0xDDBC, + 37341 - 19968: 0xF6DC, + 37347 - 19968: 0xF0E5, + 37351 - 19968: 0xF4C4, + 37354 - 19968: 0xE9E9, + 37365 - 19968: 0xF3FB, + 37389 - 19968: 0xD4EF, + 37392 - 19968: 0xCCA2, + 37393 - 19968: 0xF7FE, + 37394 - 19968: 0xDFBC, + 37399 - 19968: 0xEBCD, + 37406 - 19968: 0xD0B7, + 37428 - 19968: 0xD6C2, + 37434 - 19968: 0xE8AD, + 37439 - 19968: 0xEFAF, + 37440 - 19968: 0xCBA5, + 37445 - 19968: 0xCBE9, + 37449 - 19968: 0xFAE8, + 37463 - 19968: 0xCCC6, + 37467 - 19968: 0xE6E7, + 37470 - 19968: 0xEAC7, + 37474 - 19968: 0xDBA4, + 37476 - 19968: 0xCFC9, + 37477 - 19968: 0xE2FC, + 37478 - 19968: 0xEFFA, + 37504 - 19968: 0xEBDE, + 37507 - 19968: 0xF5C8, + 37509 - 19968: 0xD4DE, + 37521 - 19968: 0xE0D5, + 37523 - 19968: 0xEFB0, + 37526 - 19968: 0xE2C7, + 37528 - 19968: 0xD9AF, + 37532 - 19968: 0xF9E7, + 37555 - 19968: 0xE7E5, + 37558 - 19968: 0xCFCA, + 37559 - 19968: 0xE1D1, + 37561 - 19968: 0xE2C8, + 37580 - 19968: 0xEFFB, + 37583 - 19968: 0xFAF9, + 37586 - 19968: 0xDCF2, + 37604 - 19968: 0xE0A7, + 37610 - 19968: 0xF8E8, + 37624 - 19968: 0xCBEA, + 37628 - 19968: 0xCBBC, + 37636 - 19968: 0xD6E2, + 37648 - 19968: 0xF5DE, + 37656 - 19968: 0xF5DF, + 37658 - 19968: 0xEEB6, + 37662 - 19968: 0xE2F6, + 37663 - 19968: 0xD3CA, + 37664 - 19968: 0xEFFC, + 37665 - 19968: 0xD1C4, + 37666 - 19968: 0xEFB1, + 37668 - 19968: 0xD1C5, + 37670 - 19968: 0xD0DE, + 37672 - 19968: 0xD9E1, + 37675 - 19968: 0xE0B8, + 37678 - 19968: 0xCDD1, + 37679 - 19968: 0xF3B9, + 37704 - 19968: 0xE7CC, + 37706 - 19968: 0xD6A8, + 37707 - 19968: 0xCEA7, + 37709 - 19968: 0xD4B5, + 37716 - 19968: 0xE4C8, + 37723 - 19968: 0xD3B4, + 37742 - 19968: 0xEBB9, + 37749 - 19968: 0xCBF5, + 37756 - 19968: 0xF6DD, + 37758 - 19968: 0xF1A3, + 37772 - 19968: 0xCCC7, + 37780 - 19968: 0xE9CA, + 37782 - 19968: 0xE1F0, + 37786 - 19968: 0xF5E0, + 37795 - 19968: 0xFBAF, + 37799 - 19968: 0xCBD1, + 37804 - 19968: 0xFBE0, + 37805 - 19968: 0xF2E5, + 37808 - 19968: 0xECF0, + 37827 - 19968: 0xF0EC, + 37841 - 19968: 0xEEEB, + 37854 - 19968: 0xE9CB, + 37857 - 19968: 0xCCF0, + 37860 - 19968: 0xD7AF, + 37878 - 19968: 0xF3A1, + 37892 - 19968: 0xFCF5, + 37912 - 19968: 0xF1A4, + 37925 - 19968: 0xE0D6, + 37931 - 19968: 0xEFB2, + 37941 - 19968: 0xF4D1, + 37944 - 19968: 0xF7A1, + 37956 - 19968: 0xF1D1, + 37969 - 19968: 0xCAFC, + 37970 - 19968: 0xCAFD, + 37979 - 19968: 0xCECE, + 38013 - 19968: 0xF3C8, + 38015 - 19968: 0xF3BA, + 38263 - 19968: 0xEDFE, + 38272 - 19968: 0xDAA6, + 38275 - 19968: 0xE0EC, + 38281 - 19968: 0xF8CD, + 38283 - 19968: 0xCBD2, + 38287 - 19968: 0xEBCE, + 38289 - 19968: 0xF9D8, + 38290 - 19968: 0xF9D9, + 38291 - 19968: 0xCAE0, + 38292 - 19968: 0xDACA, + 38296 - 19968: 0xCBA6, + 38307 - 19968: 0xCAC8, + 38308 - 19968: 0xF9EE, + 38309 - 19968: 0xDBEC, + 38312 - 19968: 0xD0B1, + 38317 - 19968: 0xD5EF, + 38321 - 19968: 0xE6F3, + 38331 - 19968: 0xE7A2, + 38332 - 19968: 0xE4D9, + 38343 - 19968: 0xE4E1, + 38346 - 19968: 0xFCC4, + 38356 - 19968: 0xF9EF, + 38357 - 19968: 0xCFF4, + 38358 - 19968: 0xF7E6, + 38364 - 19968: 0xCEBC, + 38369 - 19968: 0xF4C5, + 38370 - 19968: 0xDCA3, + 38428 - 19968: 0xDDBD, + 38433 - 19968: 0xF4C6, + 38442 - 19968: 0xF8A1, + 38446 - 19968: 0xE8D6, + 38450 - 19968: 0xDBC1, + 38459 - 19968: 0xF0E6, + 38463 - 19968: 0xE4B9, + 38464 - 19968: 0xF6ED, + 38466 - 19968: 0xF9AE, + 38468 - 19968: 0xDDBE, + 38475 - 19968: 0xD7B0, + 38476 - 19968: 0xD8E8, + 38477 - 19968: 0xCBBD, + 38480 - 19968: 0xF9DA, + 38491 - 19968: 0xF8CE, + 38492 - 19968: 0xF9F0, + 38493 - 19968: 0xE0ED, + 38494 - 19968: 0xE3B3, + 38495 - 19968: 0xF4B3, + 38498 - 19968: 0xEAC2, + 38499 - 19968: 0xF2E6, + 38500 - 19968: 0xF0B6, + 38506 - 19968: 0xDBD6, + 38512 - 19968: 0xEBE4, + 38515 - 19968: 0xF2E7, + 38517 - 19968: 0xD7D5, + 38518 - 19968: 0xD4B6, + 38519 - 19968: 0xF9E8, + 38520 - 19968: 0xD7C1, + 38525 - 19968: 0xE5D5, + 38533 - 19968: 0xE9EA, + 38534 - 19968: 0xD7CC, + 38538 - 19968: 0xD3E9, + 38539 - 19968: 0xE2C9, + 38541 - 19968: 0xFCDB, + 38542 - 19968: 0xCDAD, + 38548 - 19968: 0xCCB0, + 38549 - 19968: 0xEAA2, + 38552 - 19968: 0xE4F6, + 38553 - 19968: 0xD0C0, + 38555 - 19968: 0xF0B7, + 38556 - 19968: 0xEEA1, + 38563 - 19968: 0xD7F6, + 38567 - 19968: 0xE2CA, + 38568 - 19968: 0xE2CB, + 38570 - 19968: 0xFACF, + 38577 - 19968: 0xEBDF, + 38583 - 19968: 0xD6CB, + 38587 - 19968: 0xF4B4, + 38592 - 19968: 0xEDCD, + 38593 - 19968: 0xE4D2, + 38596 - 19968: 0xEAA9, + 38597 - 19968: 0xE4BA, + 38598 - 19968: 0xF3A2, + 38599 - 19968: 0xCDD2, + 38601 - 19968: 0xF6CB, + 38603 - 19968: 0xF1E6, + 38604 - 19968: 0xEDC1, + 38605 - 19968: 0xE8BC, + 38606 - 19968: 0xEED1, + 38613 - 19968: 0xF0E7, + 38614 - 19968: 0xE2CC, + 38617 - 19968: 0xE4AA, + 38619 - 19968: 0xF5E1, + 38620 - 19968: 0xEDDA, + 38626 - 19968: 0xD7EE, + 38627 - 19968: 0xD1F1, + 38632 - 19968: 0xE9EB, + 38633 - 19968: 0xE9EC, + 38634 - 19968: 0xE0E4, + 38639 - 19968: 0xDAA7, + 38640 - 19968: 0xDDD4, + 38642 - 19968: 0xEAA3, + 38646 - 19968: 0xD6C3, + 38647 - 19968: 0xD6F4, + 38649 - 19968: 0xDADF, + 38651 - 19968: 0xEFB3, + 38656 - 19968: 0xE2CD, + 38662 - 19968: 0xEFFD, + 38663 - 19968: 0xF2E8, + 38673 - 19968: 0xEFC5, + 38675 - 19968: 0xE7E7, + 38678 - 19968: 0xD7FD, + 38681 - 19968: 0xE7CE, + 38684 - 19968: 0xDFDC, + 38686 - 19968: 0xF9C7, + 38695 - 19968: 0xD9F6, + 38704 - 19968: 0xDFAC, + 38706 - 19968: 0xD6DA, + 38713 - 19968: 0xDCA4, + 38717 - 19968: 0xF0B8, + 38722 - 19968: 0xD5FA, + 38724 - 19968: 0xE4F7, + 38728 - 19968: 0xD6C4, + 38737 - 19968: 0xF4EC, + 38742 - 19968: 0xEFFE, + 38748 - 19968: 0xF0A1, + 38750 - 19968: 0xDEAA, + 38753 - 19968: 0xDABC, + 38754 - 19968: 0xD8FC, + 38761 - 19968: 0xFAD4, + 38765 - 19968: 0xECE5, + 38772 - 19968: 0xFCA8, + 38775 - 19968: 0xECE6, + 38778 - 19968: 0xD8CB, + 38795 - 19968: 0xFBB9, + 38797 - 19968: 0xE4D3, + 38799 - 19968: 0xCDF9, + 38816 - 19968: 0xCFD3, + 38824 - 19968: 0xCAEA, + 38827 - 19968: 0xCFD4, + 38829 - 19968: 0xF8BD, + 38854 - 19968: 0xF4C7, + 38859 - 19968: 0xEADF, + 38867 - 19968: 0xF9DB, + 38876 - 19968: 0xD4B7, + 38899 - 19968: 0xEBE5, + 38902 - 19968: 0xE1D2, + 38907 - 19968: 0xEAA4, + 38911 - 19968: 0xFAC2, + 38912 - 19968: 0xFBE1, + 38913 - 19968: 0xFAED, + 38914 - 19968: 0xF0A2, + 38915 - 19968: 0xCCF1, + 38917 - 19968: 0xFAA3, + 38918 - 19968: 0xE2F7, + 38920 - 19968: 0xE2CE, + 38922 - 19968: 0xE9F5, + 38924 - 19968: 0xE1EB, + 38928 - 19968: 0xE7E8, + 38929 - 19968: 0xE8D7, + 38930 - 19968: 0xDAF8, + 38931 - 19968: 0xD4CB, + 38935 - 19968: 0xF7F6, + 38936 - 19968: 0xD6C5, + 38957 - 19968: 0xD4E9, + 38960 - 19968: 0xFAFA, + 38968 - 19968: 0xCCF2, + 38969 - 19968: 0xF7DD, + 38971 - 19968: 0xDEBA, + 38982 - 19968: 0xCEA8, + 38988 - 19968: 0xF0B9, + 38989 - 19968: 0xE4FE, + 38990 - 19968: 0xE4C9, + 38996 - 19968: 0xE4D4, + 39000 - 19968: 0xEAC3, + 39002 - 19968: 0xEFB4, + 39006 - 19968: 0xD7BE, + 39013 - 19968: 0xFBE2, + 39015 - 19968: 0xCDD3, + 39019 - 19968: 0xEFB5, + 39023 - 19968: 0xFAE9, + 39080 - 19968: 0xF9A6, + 39087 - 19968: 0xDFBD, + 39089 - 19968: 0xF7C7, + 39108 - 19968: 0xF8FD, + 39111 - 19968: 0xF8FC, + 39131 - 19968: 0xDEAB, + 39132 - 19968: 0xDBE8, + 39135 - 19968: 0xE3DD, + 39137 - 19968: 0xE1E2, + 39138 - 19968: 0xD1C6, + 39149 - 19968: 0xF6D0, + 39150 - 19968: 0xEBE6, + 39151 - 19968: 0xDAF9, + 39156 - 19968: 0xECC7, + 39164 - 19968: 0xDEF8, + 39165 - 19968: 0xF8E9, + 39166 - 19968: 0xE3DE, + 39171 - 19968: 0xCEF5, + 39177 - 19968: 0xFAC3, + 39178 - 19968: 0xE5D7, + 39180 - 19968: 0xECC8, + 39184 - 19968: 0xF3C9, + 39187 - 19968: 0xE4BB, + 39192 - 19968: 0xE6AE, + 39198 - 19968: 0xEFB6, + 39200 - 19968: 0xDCBF, + 39208 - 19968: 0xCEBD, + 39237 - 19968: 0xD8C3, + 39241 - 19968: 0xD0CF, + 39243 - 19968: 0xCFFA, + 39244 - 19968: 0xF3CA, + 39245 - 19968: 0xE0D7, + 39249 - 19968: 0xD1C7, + 39250 - 19968: 0xE9AE, + 39252 - 19968: 0xE8BD, + 39255 - 19968: 0xFAC4, + 39318 - 19968: 0xE2CF, + 39321 - 19968: 0xFAC5, + 39325 - 19968: 0xF9B8, + 39333 - 19968: 0xDCE0, + 39336 - 19968: 0xFBB0, + 39340 - 19968: 0xD8A9, + 39341 - 19968: 0xE5DF, + 39342 - 19968: 0xF9A7, + 39345 - 19968: 0xF6EE, + 39347 - 19968: 0xF6CC, + 39348 - 19968: 0xE2F8, + 39353 - 19968: 0xECF1, + 39361 - 19968: 0xDAE0, + 39376 - 19968: 0xF1D2, + 39377 - 19968: 0xD2CC, + 39378 - 19968: 0xCFCB, + 39381 - 19968: 0xCABD, + 39385 - 19968: 0xDDBF, + 39389 - 19968: 0xF6EF, + 39391 - 19968: 0xDEF9, + 39405 - 19968: 0xFAB4, + 39409 - 19968: 0xD5AD, + 39423 - 19968: 0xF1E7, + 39425 - 19968: 0xDEBE, + 39432 - 19968: 0xDCC0, + 39438 - 19968: 0xD1C8, + 39439 - 19968: 0xD1C9, + 39449 - 19968: 0xF8BE, + 39467 - 19968: 0xCBF6, + 39472 - 19968: 0xD4F9, + 39478 - 19968: 0xF5E2, + 39479 - 19968: 0xE1D3, + 39488 - 19968: 0xD8E9, + 39491 - 19968: 0xF8FE, + 39493 - 19968: 0xCFCC, + 39501 - 19968: 0xFDA4, + 39509 - 19968: 0xCEF6, + 39511 - 19968: 0xFAD0, + 39514 - 19968: 0xCCF3, + 39515 - 19968: 0xE6BE, + 39519 - 19968: 0xF6AE, + 39522 - 19968: 0xD5F0, + 39525 - 19968: 0xD1CA, + 39529 - 19968: 0xFCBE, + 39530 - 19968: 0xD5F1, + 39592 - 19968: 0xCDE9, + 39608 - 19968: 0xFAB5, + 39635 - 19968: 0xE2D0, + 39636 - 19968: 0xF4F7, + 39640 - 19968: 0xCDD4, + 39653 - 19968: 0xE7A3, + 39662 - 19968: 0xDBA5, + 39706 - 19968: 0xE2D1, + 39719 - 19968: 0xD7A2, + 39722 - 19968: 0xF7E3, + 39729 - 19968: 0xEAA6, + 39740 - 19968: 0xD0A1, + 39745 - 19968: 0xCEDA, + 39746 - 19968: 0xFBEB, + 39747 - 19968: 0xDBA6, + 39748 - 19968: 0xDBDE, + 39749 - 19968: 0xD8E5, + 39759 - 19968: 0xEAE0, + 39764 - 19968: 0xD8AA, + 39770 - 19968: 0xE5E0, + 39791 - 19968: 0xD6DB, + 39822 - 19968: 0xEFC6, + 39825 - 19968: 0xF8EA, + 39839 - 19968: 0xE4D5, + 39851 - 19968: 0xCEF7, + 39854 - 19968: 0xE0D8, + 39881 - 19968: 0xD7EF, + 39894 - 19968: 0xF4ED, + 39908 - 19968: 0xCDE6, + 39912 - 19968: 0xCCF4, + 39949 - 19968: 0xF5E3, + 39952 - 19968: 0xE4CA, + 39954 - 19968: 0xDCE1, + 39957 - 19968: 0xF9C8, + 39973 - 19968: 0xFCBF, + 39986 - 19968: 0xE8A7, + 39995 - 19968: 0xD8C4, + 40007 - 19968: 0xCBBE, + 40009 - 19968: 0xDCAE, + 40023 - 19968: 0xD7F7, + 40165 - 19968: 0xF0E8, + 40167 - 19968: 0xDDC0, + 40169 - 19968: 0xCFCD, + 40179 - 19968: 0xDCF3, + 40180 - 19968: 0xD9B0, + 40182 - 19968: 0xE6E9, + 40201 - 19968: 0xE4BC, + 40219 - 19968: 0xEAC4, + 40230 - 19968: 0xE4EC, + 40232 - 19968: 0xE4E5, + 40251 - 19968: 0xFBF8, + 40273 - 19968: 0xCCBB, + 40285 - 19968: 0xE4BD, + 40288 - 19968: 0xCDDC, + 40289 - 19968: 0xD9F7, + 40300 - 19968: 0xDDDF, + 40306 - 19968: 0xEDCE, + 40361 - 19968: 0xD9D0, + 40367 - 19968: 0xE5A3, + 40372 - 19968: 0xF9CD, + 40388 - 19968: 0xCDAE, + 40407 - 19968: 0xCFCE, + 40434 - 19968: 0xF6AF, + 40440 - 19968: 0xFDD3, + 40441 - 19968: 0xEBED, + 40442 - 19968: 0xD6DC, + 40474 - 19968: 0xE5A4, + 40478 - 19968: 0xD5B6, + 40565 - 19968: 0xD6DD, + 40569 - 19968: 0xF9E9, + 40573 - 19968: 0xE7A4, + 40575 - 19968: 0xD6E3, + 40594 - 19968: 0xD1CB, + 40595 - 19968: 0xD6E4, + 40599 - 19968: 0xD5F2, + 40605 - 19968: 0xDEFA, + 40607 - 19968: 0xD7F8, + 40613 - 19968: 0xD8EA, + 40628 - 19968: 0xCFD5, + 40629 - 19968: 0xD8FD, + 40635 - 19968: 0xD8AB, + 40638 - 19968: 0xFDCB, + 40643 - 19968: 0xFCDC, + 40653 - 19968: 0xE0A8, + 40654 - 19968: 0xD5F3, + 40657 - 19968: 0xFDD9, + 40660 - 19968: 0xCCA3, + 40664 - 19968: 0xD9F9, + 40667 - 19968: 0xD3EA, + 40668 - 19968: 0xF5F5, + 40670 - 19968: 0xEFC7, + 40680 - 19968: 0xD3DA, + 40692 - 19968: 0xDABD, + 40711 - 19968: 0xE8A8, + 40712 - 19968: 0xDCAF, + 40718 - 19968: 0xF0A3, + 40723 - 19968: 0xCDD5, + 40736 - 19968: 0xE0A9, + 40763 - 19968: 0xDEAC, + 40778 - 19968: 0xF0BA, + 40779 - 19968: 0xEEB1, + 40782 - 19968: 0xEEB2, + 40786 - 19968: 0xF6CD, + 40799 - 19968: 0xEED2, + 40801 - 19968: 0xD6C6, + 40807 - 19968: 0xE0E5, + 40810 - 19968: 0xF3BB, + 40812 - 19968: 0xE5E1, + 40823 - 19968: 0xE4CB, + 40845 - 19968: 0xD7A3, + 40848 - 19968: 0xDBC2, + 40853 - 19968: 0xCAFE, + 40860 - 19968: 0xCFCF, +} + +const encode1Low, encode1High = 44032, 55204 + +var encode1 = [...]uint16{ + 44032 - 44032: 0xB0A1, + 44033 - 44032: 0xB0A2, + 44034 - 44032: 0x8141, + 44035 - 44032: 0x8142, + 44036 - 44032: 0xB0A3, + 44037 - 44032: 0x8143, + 44038 - 44032: 0x8144, + 44039 - 44032: 0xB0A4, + 44040 - 44032: 0xB0A5, + 44041 - 44032: 0xB0A6, + 44042 - 44032: 0xB0A7, + 44043 - 44032: 0x8145, + 44044 - 44032: 0x8146, + 44045 - 44032: 0x8147, + 44046 - 44032: 0x8148, + 44047 - 44032: 0x8149, + 44048 - 44032: 0xB0A8, + 44049 - 44032: 0xB0A9, + 44050 - 44032: 0xB0AA, + 44051 - 44032: 0xB0AB, + 44052 - 44032: 0xB0AC, + 44053 - 44032: 0xB0AD, + 44054 - 44032: 0xB0AE, + 44055 - 44032: 0xB0AF, + 44056 - 44032: 0x814A, + 44057 - 44032: 0xB0B0, + 44058 - 44032: 0xB0B1, + 44059 - 44032: 0xB0B2, + 44060 - 44032: 0xB0B3, + 44061 - 44032: 0xB0B4, + 44062 - 44032: 0x814B, + 44063 - 44032: 0x814C, + 44064 - 44032: 0xB0B5, + 44065 - 44032: 0x814D, + 44066 - 44032: 0x814E, + 44067 - 44032: 0x814F, + 44068 - 44032: 0xB0B6, + 44069 - 44032: 0x8150, + 44070 - 44032: 0x8151, + 44071 - 44032: 0x8152, + 44072 - 44032: 0x8153, + 44073 - 44032: 0x8154, + 44074 - 44032: 0x8155, + 44075 - 44032: 0x8156, + 44076 - 44032: 0xB0B7, + 44077 - 44032: 0xB0B8, + 44078 - 44032: 0x8157, + 44079 - 44032: 0xB0B9, + 44080 - 44032: 0xB0BA, + 44081 - 44032: 0xB0BB, + 44082 - 44032: 0x8158, + 44083 - 44032: 0x8159, + 44084 - 44032: 0x815A, + 44085 - 44032: 0x8161, + 44086 - 44032: 0x8162, + 44087 - 44032: 0x8163, + 44088 - 44032: 0xB0BC, + 44089 - 44032: 0xB0BD, + 44090 - 44032: 0x8164, + 44091 - 44032: 0x8165, + 44092 - 44032: 0xB0BE, + 44093 - 44032: 0x8166, + 44094 - 44032: 0x8167, + 44095 - 44032: 0x8168, + 44096 - 44032: 0xB0BF, + 44097 - 44032: 0x8169, + 44098 - 44032: 0x816A, + 44099 - 44032: 0x816B, + 44100 - 44032: 0x816C, + 44101 - 44032: 0x816D, + 44102 - 44032: 0x816E, + 44103 - 44032: 0x816F, + 44104 - 44032: 0x8170, + 44105 - 44032: 0x8171, + 44106 - 44032: 0x8172, + 44107 - 44032: 0xB0C0, + 44108 - 44032: 0x8173, + 44109 - 44032: 0xB0C1, + 44110 - 44032: 0x8174, + 44111 - 44032: 0x8175, + 44112 - 44032: 0x8176, + 44113 - 44032: 0x8177, + 44114 - 44032: 0x8178, + 44115 - 44032: 0x8179, + 44116 - 44032: 0xB0C2, + 44117 - 44032: 0x817A, + 44118 - 44032: 0x8181, + 44119 - 44032: 0x8182, + 44120 - 44032: 0xB0C3, + 44121 - 44032: 0x8183, + 44122 - 44032: 0x8184, + 44123 - 44032: 0x8185, + 44124 - 44032: 0xB0C4, + 44125 - 44032: 0x8186, + 44126 - 44032: 0x8187, + 44127 - 44032: 0x8188, + 44128 - 44032: 0x8189, + 44129 - 44032: 0x818A, + 44130 - 44032: 0x818B, + 44131 - 44032: 0x818C, + 44132 - 44032: 0x818D, + 44133 - 44032: 0x818E, + 44134 - 44032: 0x818F, + 44135 - 44032: 0x8190, + 44136 - 44032: 0x8191, + 44137 - 44032: 0x8192, + 44138 - 44032: 0x8193, + 44139 - 44032: 0x8194, + 44140 - 44032: 0x8195, + 44141 - 44032: 0x8196, + 44142 - 44032: 0x8197, + 44143 - 44032: 0x8198, + 44144 - 44032: 0xB0C5, + 44145 - 44032: 0xB0C6, + 44146 - 44032: 0x8199, + 44147 - 44032: 0x819A, + 44148 - 44032: 0xB0C7, + 44149 - 44032: 0x819B, + 44150 - 44032: 0x819C, + 44151 - 44032: 0xB0C8, + 44152 - 44032: 0xB0C9, + 44153 - 44032: 0x819D, + 44154 - 44032: 0xB0CA, + 44155 - 44032: 0x819E, + 44156 - 44032: 0x819F, + 44157 - 44032: 0x81A0, + 44158 - 44032: 0x81A1, + 44159 - 44032: 0x81A2, + 44160 - 44032: 0xB0CB, + 44161 - 44032: 0xB0CC, + 44162 - 44032: 0x81A3, + 44163 - 44032: 0xB0CD, + 44164 - 44032: 0xB0CE, + 44165 - 44032: 0xB0CF, + 44166 - 44032: 0xB0D0, + 44167 - 44032: 0x81A4, + 44168 - 44032: 0x81A5, + 44169 - 44032: 0xB0D1, + 44170 - 44032: 0xB0D2, + 44171 - 44032: 0xB0D3, + 44172 - 44032: 0xB0D4, + 44173 - 44032: 0x81A6, + 44174 - 44032: 0x81A7, + 44175 - 44032: 0x81A8, + 44176 - 44032: 0xB0D5, + 44177 - 44032: 0x81A9, + 44178 - 44032: 0x81AA, + 44179 - 44032: 0x81AB, + 44180 - 44032: 0xB0D6, + 44181 - 44032: 0x81AC, + 44182 - 44032: 0x81AD, + 44183 - 44032: 0x81AE, + 44184 - 44032: 0x81AF, + 44185 - 44032: 0x81B0, + 44186 - 44032: 0x81B1, + 44187 - 44032: 0x81B2, + 44188 - 44032: 0xB0D7, + 44189 - 44032: 0xB0D8, + 44190 - 44032: 0x81B3, + 44191 - 44032: 0xB0D9, + 44192 - 44032: 0xB0DA, + 44193 - 44032: 0xB0DB, + 44194 - 44032: 0x81B4, + 44195 - 44032: 0x81B5, + 44196 - 44032: 0x81B6, + 44197 - 44032: 0x81B7, + 44198 - 44032: 0x81B8, + 44199 - 44032: 0x81B9, + 44200 - 44032: 0xB0DC, + 44201 - 44032: 0xB0DD, + 44202 - 44032: 0xB0DE, + 44203 - 44032: 0x81BA, + 44204 - 44032: 0xB0DF, + 44205 - 44032: 0x81BB, + 44206 - 44032: 0x81BC, + 44207 - 44032: 0xB0E0, + 44208 - 44032: 0xB0E1, + 44209 - 44032: 0x81BD, + 44210 - 44032: 0x81BE, + 44211 - 44032: 0x81BF, + 44212 - 44032: 0x81C0, + 44213 - 44032: 0x81C1, + 44214 - 44032: 0x81C2, + 44215 - 44032: 0x81C3, + 44216 - 44032: 0xB0E2, + 44217 - 44032: 0xB0E3, + 44218 - 44032: 0x81C4, + 44219 - 44032: 0xB0E4, + 44220 - 44032: 0xB0E5, + 44221 - 44032: 0xB0E6, + 44222 - 44032: 0x81C5, + 44223 - 44032: 0x81C6, + 44224 - 44032: 0x81C7, + 44225 - 44032: 0xB0E7, + 44226 - 44032: 0x81C8, + 44227 - 44032: 0x81C9, + 44228 - 44032: 0xB0E8, + 44229 - 44032: 0x81CA, + 44230 - 44032: 0x81CB, + 44231 - 44032: 0x81CC, + 44232 - 44032: 0xB0E9, + 44233 - 44032: 0x81CD, + 44234 - 44032: 0x81CE, + 44235 - 44032: 0x81CF, + 44236 - 44032: 0xB0EA, + 44237 - 44032: 0x81D0, + 44238 - 44032: 0x81D1, + 44239 - 44032: 0x81D2, + 44240 - 44032: 0x81D3, + 44241 - 44032: 0x81D4, + 44242 - 44032: 0x81D5, + 44243 - 44032: 0x81D6, + 44244 - 44032: 0x81D7, + 44245 - 44032: 0xB0EB, + 44246 - 44032: 0x81D8, + 44247 - 44032: 0xB0EC, + 44248 - 44032: 0x81D9, + 44249 - 44032: 0x81DA, + 44250 - 44032: 0x81DB, + 44251 - 44032: 0x81DC, + 44252 - 44032: 0x81DD, + 44253 - 44032: 0x81DE, + 44254 - 44032: 0x81DF, + 44255 - 44032: 0x81E0, + 44256 - 44032: 0xB0ED, + 44257 - 44032: 0xB0EE, + 44258 - 44032: 0x81E1, + 44259 - 44032: 0x81E2, + 44260 - 44032: 0xB0EF, + 44261 - 44032: 0x81E3, + 44262 - 44032: 0x81E4, + 44263 - 44032: 0xB0F0, + 44264 - 44032: 0xB0F1, + 44265 - 44032: 0x81E5, + 44266 - 44032: 0xB0F2, + 44267 - 44032: 0x81E6, + 44268 - 44032: 0xB0F3, + 44269 - 44032: 0x81E7, + 44270 - 44032: 0x81E8, + 44271 - 44032: 0xB0F4, + 44272 - 44032: 0xB0F5, + 44273 - 44032: 0xB0F6, + 44274 - 44032: 0x81E9, + 44275 - 44032: 0xB0F7, + 44276 - 44032: 0x81EA, + 44277 - 44032: 0xB0F8, + 44278 - 44032: 0xB0F9, + 44279 - 44032: 0x81EB, + 44280 - 44032: 0x81EC, + 44281 - 44032: 0x81ED, + 44282 - 44032: 0x81EE, + 44283 - 44032: 0x81EF, + 44284 - 44032: 0xB0FA, + 44285 - 44032: 0xB0FB, + 44286 - 44032: 0x81F0, + 44287 - 44032: 0x81F1, + 44288 - 44032: 0xB0FC, + 44289 - 44032: 0x81F2, + 44290 - 44032: 0x81F3, + 44291 - 44032: 0x81F4, + 44292 - 44032: 0xB0FD, + 44293 - 44032: 0x81F5, + 44294 - 44032: 0xB0FE, + 44295 - 44032: 0x81F6, + 44296 - 44032: 0x81F7, + 44297 - 44032: 0x81F8, + 44298 - 44032: 0x81F9, + 44299 - 44032: 0x81FA, + 44300 - 44032: 0xB1A1, + 44301 - 44032: 0xB1A2, + 44302 - 44032: 0x81FB, + 44303 - 44032: 0xB1A3, + 44304 - 44032: 0x81FC, + 44305 - 44032: 0xB1A4, + 44306 - 44032: 0x81FD, + 44307 - 44032: 0x81FE, + 44308 - 44032: 0x8241, + 44309 - 44032: 0x8242, + 44310 - 44032: 0x8243, + 44311 - 44032: 0x8244, + 44312 - 44032: 0xB1A5, + 44313 - 44032: 0x8245, + 44314 - 44032: 0x8246, + 44315 - 44032: 0x8247, + 44316 - 44032: 0xB1A6, + 44317 - 44032: 0x8248, + 44318 - 44032: 0x8249, + 44319 - 44032: 0x824A, + 44320 - 44032: 0xB1A7, + 44321 - 44032: 0x824B, + 44322 - 44032: 0x824C, + 44323 - 44032: 0x824D, + 44324 - 44032: 0x824E, + 44325 - 44032: 0x824F, + 44326 - 44032: 0x8250, + 44327 - 44032: 0x8251, + 44328 - 44032: 0x8252, + 44329 - 44032: 0xB1A8, + 44330 - 44032: 0x8253, + 44331 - 44032: 0x8254, + 44332 - 44032: 0xB1A9, + 44333 - 44032: 0xB1AA, + 44334 - 44032: 0x8255, + 44335 - 44032: 0x8256, + 44336 - 44032: 0x8257, + 44337 - 44032: 0x8258, + 44338 - 44032: 0x8259, + 44339 - 44032: 0x825A, + 44340 - 44032: 0xB1AB, + 44341 - 44032: 0xB1AC, + 44342 - 44032: 0x8261, + 44343 - 44032: 0x8262, + 44344 - 44032: 0xB1AD, + 44345 - 44032: 0x8263, + 44346 - 44032: 0x8264, + 44347 - 44032: 0x8265, + 44348 - 44032: 0xB1AE, + 44349 - 44032: 0x8266, + 44350 - 44032: 0x8267, + 44351 - 44032: 0x8268, + 44352 - 44032: 0x8269, + 44353 - 44032: 0x826A, + 44354 - 44032: 0x826B, + 44355 - 44032: 0x826C, + 44356 - 44032: 0xB1AF, + 44357 - 44032: 0xB1B0, + 44358 - 44032: 0x826D, + 44359 - 44032: 0xB1B1, + 44360 - 44032: 0x826E, + 44361 - 44032: 0xB1B2, + 44362 - 44032: 0x826F, + 44363 - 44032: 0x8270, + 44364 - 44032: 0x8271, + 44365 - 44032: 0x8272, + 44366 - 44032: 0x8273, + 44367 - 44032: 0x8274, + 44368 - 44032: 0xB1B3, + 44369 - 44032: 0x8275, + 44370 - 44032: 0x8276, + 44371 - 44032: 0x8277, + 44372 - 44032: 0xB1B4, + 44373 - 44032: 0x8278, + 44374 - 44032: 0x8279, + 44375 - 44032: 0x827A, + 44376 - 44032: 0xB1B5, + 44377 - 44032: 0x8281, + 44378 - 44032: 0x8282, + 44379 - 44032: 0x8283, + 44380 - 44032: 0x8284, + 44381 - 44032: 0x8285, + 44382 - 44032: 0x8286, + 44383 - 44032: 0x8287, + 44384 - 44032: 0x8288, + 44385 - 44032: 0xB1B6, + 44386 - 44032: 0x8289, + 44387 - 44032: 0xB1B7, + 44388 - 44032: 0x828A, + 44389 - 44032: 0x828B, + 44390 - 44032: 0x828C, + 44391 - 44032: 0x828D, + 44392 - 44032: 0x828E, + 44393 - 44032: 0x828F, + 44394 - 44032: 0x8290, + 44395 - 44032: 0x8291, + 44396 - 44032: 0xB1B8, + 44397 - 44032: 0xB1B9, + 44398 - 44032: 0x8292, + 44399 - 44032: 0x8293, + 44400 - 44032: 0xB1BA, + 44401 - 44032: 0x8294, + 44402 - 44032: 0x8295, + 44403 - 44032: 0xB1BB, + 44404 - 44032: 0xB1BC, + 44405 - 44032: 0xB1BD, + 44406 - 44032: 0xB1BE, + 44407 - 44032: 0x8296, + 44408 - 44032: 0x8297, + 44409 - 44032: 0x8298, + 44410 - 44032: 0x8299, + 44411 - 44032: 0xB1BF, + 44412 - 44032: 0xB1C0, + 44413 - 44032: 0xB1C1, + 44414 - 44032: 0x829A, + 44415 - 44032: 0xB1C2, + 44416 - 44032: 0x829B, + 44417 - 44032: 0xB1C3, + 44418 - 44032: 0xB1C4, + 44419 - 44032: 0x829C, + 44420 - 44032: 0x829D, + 44421 - 44032: 0x829E, + 44422 - 44032: 0x829F, + 44423 - 44032: 0x82A0, + 44424 - 44032: 0xB1C5, + 44425 - 44032: 0xB1C6, + 44426 - 44032: 0x82A1, + 44427 - 44032: 0x82A2, + 44428 - 44032: 0xB1C7, + 44429 - 44032: 0x82A3, + 44430 - 44032: 0x82A4, + 44431 - 44032: 0x82A5, + 44432 - 44032: 0xB1C8, + 44433 - 44032: 0x82A6, + 44434 - 44032: 0x82A7, + 44435 - 44032: 0x82A8, + 44436 - 44032: 0x82A9, + 44437 - 44032: 0x82AA, + 44438 - 44032: 0x82AB, + 44439 - 44032: 0x82AC, + 44440 - 44032: 0x82AD, + 44441 - 44032: 0x82AE, + 44442 - 44032: 0x82AF, + 44443 - 44032: 0x82B0, + 44444 - 44032: 0xB1C9, + 44445 - 44032: 0xB1CA, + 44446 - 44032: 0x82B1, + 44447 - 44032: 0x82B2, + 44448 - 44032: 0x82B3, + 44449 - 44032: 0x82B4, + 44450 - 44032: 0x82B5, + 44451 - 44032: 0x82B6, + 44452 - 44032: 0xB1CB, + 44453 - 44032: 0x82B7, + 44454 - 44032: 0x82B8, + 44455 - 44032: 0x82B9, + 44456 - 44032: 0x82BA, + 44457 - 44032: 0x82BB, + 44458 - 44032: 0x82BC, + 44459 - 44032: 0x82BD, + 44460 - 44032: 0x82BE, + 44461 - 44032: 0x82BF, + 44462 - 44032: 0x82C0, + 44463 - 44032: 0x82C1, + 44464 - 44032: 0x82C2, + 44465 - 44032: 0x82C3, + 44466 - 44032: 0x82C4, + 44467 - 44032: 0x82C5, + 44468 - 44032: 0x82C6, + 44469 - 44032: 0x82C7, + 44470 - 44032: 0x82C8, + 44471 - 44032: 0xB1CC, + 44472 - 44032: 0x82C9, + 44473 - 44032: 0x82CA, + 44474 - 44032: 0x82CB, + 44475 - 44032: 0x82CC, + 44476 - 44032: 0x82CD, + 44477 - 44032: 0x82CE, + 44478 - 44032: 0x82CF, + 44479 - 44032: 0x82D0, + 44480 - 44032: 0xB1CD, + 44481 - 44032: 0xB1CE, + 44482 - 44032: 0x82D1, + 44483 - 44032: 0x82D2, + 44484 - 44032: 0xB1CF, + 44485 - 44032: 0x82D3, + 44486 - 44032: 0x82D4, + 44487 - 44032: 0x82D5, + 44488 - 44032: 0xB1D0, + 44489 - 44032: 0x82D6, + 44490 - 44032: 0x82D7, + 44491 - 44032: 0x82D8, + 44492 - 44032: 0x82D9, + 44493 - 44032: 0x82DA, + 44494 - 44032: 0x82DB, + 44495 - 44032: 0x82DC, + 44496 - 44032: 0xB1D1, + 44497 - 44032: 0xB1D2, + 44498 - 44032: 0x82DD, + 44499 - 44032: 0xB1D3, + 44500 - 44032: 0x82DE, + 44501 - 44032: 0x82DF, + 44502 - 44032: 0x82E0, + 44503 - 44032: 0x82E1, + 44504 - 44032: 0x82E2, + 44505 - 44032: 0x82E3, + 44506 - 44032: 0x82E4, + 44507 - 44032: 0x82E5, + 44508 - 44032: 0xB1D4, + 44509 - 44032: 0x82E6, + 44510 - 44032: 0x82E7, + 44511 - 44032: 0x82E8, + 44512 - 44032: 0xB1D5, + 44513 - 44032: 0x82E9, + 44514 - 44032: 0x82EA, + 44515 - 44032: 0x82EB, + 44516 - 44032: 0xB1D6, + 44517 - 44032: 0x82EC, + 44518 - 44032: 0x82ED, + 44519 - 44032: 0x82EE, + 44520 - 44032: 0x82EF, + 44521 - 44032: 0x82F0, + 44522 - 44032: 0x82F1, + 44523 - 44032: 0x82F2, + 44524 - 44032: 0x82F3, + 44525 - 44032: 0x82F4, + 44526 - 44032: 0x82F5, + 44527 - 44032: 0x82F6, + 44528 - 44032: 0x82F7, + 44529 - 44032: 0x82F8, + 44530 - 44032: 0x82F9, + 44531 - 44032: 0x82FA, + 44532 - 44032: 0x82FB, + 44533 - 44032: 0x82FC, + 44534 - 44032: 0x82FD, + 44535 - 44032: 0x82FE, + 44536 - 44032: 0xB1D7, + 44537 - 44032: 0xB1D8, + 44538 - 44032: 0x8341, + 44539 - 44032: 0x8342, + 44540 - 44032: 0xB1D9, + 44541 - 44032: 0x8343, + 44542 - 44032: 0x8344, + 44543 - 44032: 0xB1DA, + 44544 - 44032: 0xB1DB, + 44545 - 44032: 0xB1DC, + 44546 - 44032: 0x8345, + 44547 - 44032: 0x8346, + 44548 - 44032: 0x8347, + 44549 - 44032: 0x8348, + 44550 - 44032: 0x8349, + 44551 - 44032: 0x834A, + 44552 - 44032: 0xB1DD, + 44553 - 44032: 0xB1DE, + 44554 - 44032: 0x834B, + 44555 - 44032: 0xB1DF, + 44556 - 44032: 0x834C, + 44557 - 44032: 0xB1E0, + 44558 - 44032: 0x834D, + 44559 - 44032: 0x834E, + 44560 - 44032: 0x834F, + 44561 - 44032: 0x8350, + 44562 - 44032: 0x8351, + 44563 - 44032: 0x8352, + 44564 - 44032: 0xB1E1, + 44565 - 44032: 0x8353, + 44566 - 44032: 0x8354, + 44567 - 44032: 0x8355, + 44568 - 44032: 0x8356, + 44569 - 44032: 0x8357, + 44570 - 44032: 0x8358, + 44571 - 44032: 0x8359, + 44572 - 44032: 0x835A, + 44573 - 44032: 0x8361, + 44574 - 44032: 0x8362, + 44575 - 44032: 0x8363, + 44576 - 44032: 0x8364, + 44577 - 44032: 0x8365, + 44578 - 44032: 0x8366, + 44579 - 44032: 0x8367, + 44580 - 44032: 0x8368, + 44581 - 44032: 0x8369, + 44582 - 44032: 0x836A, + 44583 - 44032: 0x836B, + 44584 - 44032: 0x836C, + 44585 - 44032: 0x836D, + 44586 - 44032: 0x836E, + 44587 - 44032: 0x836F, + 44588 - 44032: 0x8370, + 44589 - 44032: 0x8371, + 44590 - 44032: 0x8372, + 44591 - 44032: 0x8373, + 44592 - 44032: 0xB1E2, + 44593 - 44032: 0xB1E3, + 44594 - 44032: 0x8374, + 44595 - 44032: 0x8375, + 44596 - 44032: 0xB1E4, + 44597 - 44032: 0x8376, + 44598 - 44032: 0x8377, + 44599 - 44032: 0xB1E5, + 44600 - 44032: 0xB1E6, + 44601 - 44032: 0x8378, + 44602 - 44032: 0xB1E7, + 44603 - 44032: 0x8379, + 44604 - 44032: 0x837A, + 44605 - 44032: 0x8381, + 44606 - 44032: 0x8382, + 44607 - 44032: 0x8383, + 44608 - 44032: 0xB1E8, + 44609 - 44032: 0xB1E9, + 44610 - 44032: 0x8384, + 44611 - 44032: 0xB1EA, + 44612 - 44032: 0x8385, + 44613 - 44032: 0xB1EB, + 44614 - 44032: 0xB1EC, + 44615 - 44032: 0x8386, + 44616 - 44032: 0x8387, + 44617 - 44032: 0x8388, + 44618 - 44032: 0xB1ED, + 44619 - 44032: 0x8389, + 44620 - 44032: 0xB1EE, + 44621 - 44032: 0xB1EF, + 44622 - 44032: 0xB1F0, + 44623 - 44032: 0x838A, + 44624 - 44032: 0xB1F1, + 44625 - 44032: 0x838B, + 44626 - 44032: 0x838C, + 44627 - 44032: 0x838D, + 44628 - 44032: 0xB1F2, + 44629 - 44032: 0x838E, + 44630 - 44032: 0xB1F3, + 44631 - 44032: 0x838F, + 44632 - 44032: 0x8390, + 44633 - 44032: 0x8391, + 44634 - 44032: 0x8392, + 44635 - 44032: 0x8393, + 44636 - 44032: 0xB1F4, + 44637 - 44032: 0xB1F5, + 44638 - 44032: 0x8394, + 44639 - 44032: 0xB1F6, + 44640 - 44032: 0xB1F7, + 44641 - 44032: 0xB1F8, + 44642 - 44032: 0x8395, + 44643 - 44032: 0x8396, + 44644 - 44032: 0x8397, + 44645 - 44032: 0xB1F9, + 44646 - 44032: 0x8398, + 44647 - 44032: 0x8399, + 44648 - 44032: 0xB1FA, + 44649 - 44032: 0xB1FB, + 44650 - 44032: 0x839A, + 44651 - 44032: 0x839B, + 44652 - 44032: 0xB1FC, + 44653 - 44032: 0x839C, + 44654 - 44032: 0x839D, + 44655 - 44032: 0x839E, + 44656 - 44032: 0xB1FD, + 44657 - 44032: 0x839F, + 44658 - 44032: 0x83A0, + 44659 - 44032: 0x83A1, + 44660 - 44032: 0x83A2, + 44661 - 44032: 0x83A3, + 44662 - 44032: 0x83A4, + 44663 - 44032: 0x83A5, + 44664 - 44032: 0xB1FE, + 44665 - 44032: 0xB2A1, + 44666 - 44032: 0x83A6, + 44667 - 44032: 0xB2A2, + 44668 - 44032: 0xB2A3, + 44669 - 44032: 0xB2A4, + 44670 - 44032: 0x83A7, + 44671 - 44032: 0x83A8, + 44672 - 44032: 0x83A9, + 44673 - 44032: 0x83AA, + 44674 - 44032: 0x83AB, + 44675 - 44032: 0x83AC, + 44676 - 44032: 0xB2A5, + 44677 - 44032: 0xB2A6, + 44678 - 44032: 0x83AD, + 44679 - 44032: 0x83AE, + 44680 - 44032: 0x83AF, + 44681 - 44032: 0x83B0, + 44682 - 44032: 0x83B1, + 44683 - 44032: 0x83B2, + 44684 - 44032: 0xB2A7, + 44685 - 44032: 0x83B3, + 44686 - 44032: 0x83B4, + 44687 - 44032: 0x83B5, + 44688 - 44032: 0x83B6, + 44689 - 44032: 0x83B7, + 44690 - 44032: 0x83B8, + 44691 - 44032: 0x83B9, + 44692 - 44032: 0x83BA, + 44693 - 44032: 0x83BB, + 44694 - 44032: 0x83BC, + 44695 - 44032: 0x83BD, + 44696 - 44032: 0x83BE, + 44697 - 44032: 0x83BF, + 44698 - 44032: 0x83C0, + 44699 - 44032: 0x83C1, + 44700 - 44032: 0x83C2, + 44701 - 44032: 0x83C3, + 44702 - 44032: 0x83C4, + 44703 - 44032: 0x83C5, + 44704 - 44032: 0x83C6, + 44705 - 44032: 0x83C7, + 44706 - 44032: 0x83C8, + 44707 - 44032: 0x83C9, + 44708 - 44032: 0x83CA, + 44709 - 44032: 0x83CB, + 44710 - 44032: 0x83CC, + 44711 - 44032: 0x83CD, + 44712 - 44032: 0x83CE, + 44713 - 44032: 0x83CF, + 44714 - 44032: 0x83D0, + 44715 - 44032: 0x83D1, + 44716 - 44032: 0x83D2, + 44717 - 44032: 0x83D3, + 44718 - 44032: 0x83D4, + 44719 - 44032: 0x83D5, + 44720 - 44032: 0x83D6, + 44721 - 44032: 0x83D7, + 44722 - 44032: 0x83D8, + 44723 - 44032: 0x83D9, + 44724 - 44032: 0x83DA, + 44725 - 44032: 0x83DB, + 44726 - 44032: 0x83DC, + 44727 - 44032: 0x83DD, + 44728 - 44032: 0x83DE, + 44729 - 44032: 0x83DF, + 44730 - 44032: 0x83E0, + 44731 - 44032: 0x83E1, + 44732 - 44032: 0xB2A8, + 44733 - 44032: 0xB2A9, + 44734 - 44032: 0xB2AA, + 44735 - 44032: 0x83E2, + 44736 - 44032: 0xB2AB, + 44737 - 44032: 0x83E3, + 44738 - 44032: 0x83E4, + 44739 - 44032: 0x83E5, + 44740 - 44032: 0xB2AC, + 44741 - 44032: 0x83E6, + 44742 - 44032: 0x83E7, + 44743 - 44032: 0x83E8, + 44744 - 44032: 0x83E9, + 44745 - 44032: 0x83EA, + 44746 - 44032: 0x83EB, + 44747 - 44032: 0x83EC, + 44748 - 44032: 0xB2AD, + 44749 - 44032: 0xB2AE, + 44750 - 44032: 0x83ED, + 44751 - 44032: 0xB2AF, + 44752 - 44032: 0xB2B0, + 44753 - 44032: 0xB2B1, + 44754 - 44032: 0x83EE, + 44755 - 44032: 0x83EF, + 44756 - 44032: 0x83F0, + 44757 - 44032: 0x83F1, + 44758 - 44032: 0x83F2, + 44759 - 44032: 0x83F3, + 44760 - 44032: 0xB2B2, + 44761 - 44032: 0xB2B3, + 44762 - 44032: 0x83F4, + 44763 - 44032: 0x83F5, + 44764 - 44032: 0xB2B4, + 44765 - 44032: 0x83F6, + 44766 - 44032: 0x83F7, + 44767 - 44032: 0x83F8, + 44768 - 44032: 0x83F9, + 44769 - 44032: 0x83FA, + 44770 - 44032: 0x83FB, + 44771 - 44032: 0x83FC, + 44772 - 44032: 0x83FD, + 44773 - 44032: 0x83FE, + 44774 - 44032: 0x8441, + 44775 - 44032: 0x8442, + 44776 - 44032: 0xB2B5, + 44777 - 44032: 0x8443, + 44778 - 44032: 0x8444, + 44779 - 44032: 0xB2B6, + 44780 - 44032: 0x8445, + 44781 - 44032: 0xB2B7, + 44782 - 44032: 0x8446, + 44783 - 44032: 0x8447, + 44784 - 44032: 0x8448, + 44785 - 44032: 0x8449, + 44786 - 44032: 0x844A, + 44787 - 44032: 0x844B, + 44788 - 44032: 0xB2B8, + 44789 - 44032: 0x844C, + 44790 - 44032: 0x844D, + 44791 - 44032: 0x844E, + 44792 - 44032: 0xB2B9, + 44793 - 44032: 0x844F, + 44794 - 44032: 0x8450, + 44795 - 44032: 0x8451, + 44796 - 44032: 0xB2BA, + 44797 - 44032: 0x8452, + 44798 - 44032: 0x8453, + 44799 - 44032: 0x8454, + 44800 - 44032: 0x8455, + 44801 - 44032: 0x8456, + 44802 - 44032: 0x8457, + 44803 - 44032: 0x8458, + 44804 - 44032: 0x8459, + 44805 - 44032: 0x845A, + 44806 - 44032: 0x8461, + 44807 - 44032: 0xB2BB, + 44808 - 44032: 0xB2BC, + 44809 - 44032: 0x8462, + 44810 - 44032: 0x8463, + 44811 - 44032: 0x8464, + 44812 - 44032: 0x8465, + 44813 - 44032: 0xB2BD, + 44814 - 44032: 0x8466, + 44815 - 44032: 0x8467, + 44816 - 44032: 0xB2BE, + 44817 - 44032: 0x8468, + 44818 - 44032: 0x8469, + 44819 - 44032: 0x846A, + 44820 - 44032: 0x846B, + 44821 - 44032: 0x846C, + 44822 - 44032: 0x846D, + 44823 - 44032: 0x846E, + 44824 - 44032: 0x846F, + 44825 - 44032: 0x8470, + 44826 - 44032: 0x8471, + 44827 - 44032: 0x8472, + 44828 - 44032: 0x8473, + 44829 - 44032: 0x8474, + 44830 - 44032: 0x8475, + 44831 - 44032: 0x8476, + 44832 - 44032: 0x8477, + 44833 - 44032: 0x8478, + 44834 - 44032: 0x8479, + 44835 - 44032: 0x847A, + 44836 - 44032: 0x8481, + 44837 - 44032: 0x8482, + 44838 - 44032: 0x8483, + 44839 - 44032: 0x8484, + 44840 - 44032: 0x8485, + 44841 - 44032: 0x8486, + 44842 - 44032: 0x8487, + 44843 - 44032: 0x8488, + 44844 - 44032: 0xB2BF, + 44845 - 44032: 0xB2C0, + 44846 - 44032: 0x8489, + 44847 - 44032: 0x848A, + 44848 - 44032: 0xB2C1, + 44849 - 44032: 0x848B, + 44850 - 44032: 0xB2C2, + 44851 - 44032: 0x848C, + 44852 - 44032: 0xB2C3, + 44853 - 44032: 0x848D, + 44854 - 44032: 0x848E, + 44855 - 44032: 0x848F, + 44856 - 44032: 0x8490, + 44857 - 44032: 0x8491, + 44858 - 44032: 0x8492, + 44859 - 44032: 0x8493, + 44860 - 44032: 0xB2C4, + 44861 - 44032: 0xB2C5, + 44862 - 44032: 0x8494, + 44863 - 44032: 0xB2C6, + 44864 - 44032: 0x8495, + 44865 - 44032: 0xB2C7, + 44866 - 44032: 0xB2C8, + 44867 - 44032: 0xB2C9, + 44868 - 44032: 0x8496, + 44869 - 44032: 0x8497, + 44870 - 44032: 0x8498, + 44871 - 44032: 0x8499, + 44872 - 44032: 0xB2CA, + 44873 - 44032: 0xB2CB, + 44874 - 44032: 0x849A, + 44875 - 44032: 0x849B, + 44876 - 44032: 0x849C, + 44877 - 44032: 0x849D, + 44878 - 44032: 0x849E, + 44879 - 44032: 0x849F, + 44880 - 44032: 0xB2CC, + 44881 - 44032: 0x84A0, + 44882 - 44032: 0x84A1, + 44883 - 44032: 0x84A2, + 44884 - 44032: 0x84A3, + 44885 - 44032: 0x84A4, + 44886 - 44032: 0x84A5, + 44887 - 44032: 0x84A6, + 44888 - 44032: 0x84A7, + 44889 - 44032: 0x84A8, + 44890 - 44032: 0x84A9, + 44891 - 44032: 0x84AA, + 44892 - 44032: 0xB2CD, + 44893 - 44032: 0xB2CE, + 44894 - 44032: 0x84AB, + 44895 - 44032: 0x84AC, + 44896 - 44032: 0x84AD, + 44897 - 44032: 0x84AE, + 44898 - 44032: 0x84AF, + 44899 - 44032: 0x84B0, + 44900 - 44032: 0xB2CF, + 44901 - 44032: 0xB2D0, + 44902 - 44032: 0x84B1, + 44903 - 44032: 0x84B2, + 44904 - 44032: 0x84B3, + 44905 - 44032: 0x84B4, + 44906 - 44032: 0x84B5, + 44907 - 44032: 0x84B6, + 44908 - 44032: 0x84B7, + 44909 - 44032: 0x84B8, + 44910 - 44032: 0x84B9, + 44911 - 44032: 0x84BA, + 44912 - 44032: 0x84BB, + 44913 - 44032: 0x84BC, + 44914 - 44032: 0x84BD, + 44915 - 44032: 0x84BE, + 44916 - 44032: 0x84BF, + 44917 - 44032: 0x84C0, + 44918 - 44032: 0x84C1, + 44919 - 44032: 0x84C2, + 44920 - 44032: 0x84C3, + 44921 - 44032: 0xB2D1, + 44922 - 44032: 0x84C4, + 44923 - 44032: 0x84C5, + 44924 - 44032: 0x84C6, + 44925 - 44032: 0x84C7, + 44926 - 44032: 0x84C8, + 44927 - 44032: 0x84C9, + 44928 - 44032: 0xB2D2, + 44929 - 44032: 0x84CA, + 44930 - 44032: 0x84CB, + 44931 - 44032: 0x84CC, + 44932 - 44032: 0xB2D3, + 44933 - 44032: 0x84CD, + 44934 - 44032: 0x84CE, + 44935 - 44032: 0x84CF, + 44936 - 44032: 0xB2D4, + 44937 - 44032: 0x84D0, + 44938 - 44032: 0x84D1, + 44939 - 44032: 0x84D2, + 44940 - 44032: 0x84D3, + 44941 - 44032: 0x84D4, + 44942 - 44032: 0x84D5, + 44943 - 44032: 0x84D6, + 44944 - 44032: 0xB2D5, + 44945 - 44032: 0xB2D6, + 44946 - 44032: 0x84D7, + 44947 - 44032: 0x84D8, + 44948 - 44032: 0x84D9, + 44949 - 44032: 0xB2D7, + 44950 - 44032: 0x84DA, + 44951 - 44032: 0x84DB, + 44952 - 44032: 0x84DC, + 44953 - 44032: 0x84DD, + 44954 - 44032: 0x84DE, + 44955 - 44032: 0x84DF, + 44956 - 44032: 0xB2D8, + 44957 - 44032: 0x84E0, + 44958 - 44032: 0x84E1, + 44959 - 44032: 0x84E2, + 44960 - 44032: 0x84E3, + 44961 - 44032: 0x84E4, + 44962 - 44032: 0x84E5, + 44963 - 44032: 0x84E6, + 44964 - 44032: 0x84E7, + 44965 - 44032: 0x84E8, + 44966 - 44032: 0x84E9, + 44967 - 44032: 0x84EA, + 44968 - 44032: 0x84EB, + 44969 - 44032: 0x84EC, + 44970 - 44032: 0x84ED, + 44971 - 44032: 0x84EE, + 44972 - 44032: 0x84EF, + 44973 - 44032: 0x84F0, + 44974 - 44032: 0x84F1, + 44975 - 44032: 0x84F2, + 44976 - 44032: 0x84F3, + 44977 - 44032: 0x84F4, + 44978 - 44032: 0x84F5, + 44979 - 44032: 0x84F6, + 44980 - 44032: 0x84F7, + 44981 - 44032: 0x84F8, + 44982 - 44032: 0x84F9, + 44983 - 44032: 0x84FA, + 44984 - 44032: 0xB2D9, + 44985 - 44032: 0xB2DA, + 44986 - 44032: 0x84FB, + 44987 - 44032: 0x84FC, + 44988 - 44032: 0xB2DB, + 44989 - 44032: 0x84FD, + 44990 - 44032: 0x84FE, + 44991 - 44032: 0x8541, + 44992 - 44032: 0xB2DC, + 44993 - 44032: 0x8542, + 44994 - 44032: 0x8543, + 44995 - 44032: 0x8544, + 44996 - 44032: 0x8545, + 44997 - 44032: 0x8546, + 44998 - 44032: 0x8547, + 44999 - 44032: 0xB2DD, + 45000 - 44032: 0xB2DE, + 45001 - 44032: 0xB2DF, + 45002 - 44032: 0x8548, + 45003 - 44032: 0xB2E0, + 45004 - 44032: 0x8549, + 45005 - 44032: 0xB2E1, + 45006 - 44032: 0xB2E2, + 45007 - 44032: 0x854A, + 45008 - 44032: 0x854B, + 45009 - 44032: 0x854C, + 45010 - 44032: 0x854D, + 45011 - 44032: 0x854E, + 45012 - 44032: 0xB2E3, + 45013 - 44032: 0x854F, + 45014 - 44032: 0x8550, + 45015 - 44032: 0x8551, + 45016 - 44032: 0x8552, + 45017 - 44032: 0x8553, + 45018 - 44032: 0x8554, + 45019 - 44032: 0x8555, + 45020 - 44032: 0xB2E4, + 45021 - 44032: 0x8556, + 45022 - 44032: 0x8557, + 45023 - 44032: 0x8558, + 45024 - 44032: 0x8559, + 45025 - 44032: 0x855A, + 45026 - 44032: 0x8561, + 45027 - 44032: 0x8562, + 45028 - 44032: 0x8563, + 45029 - 44032: 0x8564, + 45030 - 44032: 0x8565, + 45031 - 44032: 0x8566, + 45032 - 44032: 0xB2E5, + 45033 - 44032: 0xB2E6, + 45034 - 44032: 0x8567, + 45035 - 44032: 0x8568, + 45036 - 44032: 0x8569, + 45037 - 44032: 0x856A, + 45038 - 44032: 0x856B, + 45039 - 44032: 0x856C, + 45040 - 44032: 0xB2E7, + 45041 - 44032: 0xB2E8, + 45042 - 44032: 0x856D, + 45043 - 44032: 0x856E, + 45044 - 44032: 0xB2E9, + 45045 - 44032: 0x856F, + 45046 - 44032: 0x8570, + 45047 - 44032: 0x8571, + 45048 - 44032: 0xB2EA, + 45049 - 44032: 0x8572, + 45050 - 44032: 0x8573, + 45051 - 44032: 0x8574, + 45052 - 44032: 0x8575, + 45053 - 44032: 0x8576, + 45054 - 44032: 0x8577, + 45055 - 44032: 0x8578, + 45056 - 44032: 0xB2EB, + 45057 - 44032: 0xB2EC, + 45058 - 44032: 0x8579, + 45059 - 44032: 0x857A, + 45060 - 44032: 0xB2ED, + 45061 - 44032: 0x8581, + 45062 - 44032: 0x8582, + 45063 - 44032: 0x8583, + 45064 - 44032: 0x8584, + 45065 - 44032: 0x8585, + 45066 - 44032: 0x8586, + 45067 - 44032: 0x8587, + 45068 - 44032: 0xB2EE, + 45069 - 44032: 0x8588, + 45070 - 44032: 0x8589, + 45071 - 44032: 0x858A, + 45072 - 44032: 0xB2EF, + 45073 - 44032: 0x858B, + 45074 - 44032: 0x858C, + 45075 - 44032: 0x858D, + 45076 - 44032: 0xB2F0, + 45077 - 44032: 0x858E, + 45078 - 44032: 0x858F, + 45079 - 44032: 0x8590, + 45080 - 44032: 0x8591, + 45081 - 44032: 0x8592, + 45082 - 44032: 0x8593, + 45083 - 44032: 0x8594, + 45084 - 44032: 0xB2F1, + 45085 - 44032: 0xB2F2, + 45086 - 44032: 0x8595, + 45087 - 44032: 0x8596, + 45088 - 44032: 0x8597, + 45089 - 44032: 0x8598, + 45090 - 44032: 0x8599, + 45091 - 44032: 0x859A, + 45092 - 44032: 0x859B, + 45093 - 44032: 0x859C, + 45094 - 44032: 0x859D, + 45095 - 44032: 0x859E, + 45096 - 44032: 0xB2F3, + 45097 - 44032: 0x859F, + 45098 - 44032: 0x85A0, + 45099 - 44032: 0x85A1, + 45100 - 44032: 0x85A2, + 45101 - 44032: 0x85A3, + 45102 - 44032: 0x85A4, + 45103 - 44032: 0x85A5, + 45104 - 44032: 0x85A6, + 45105 - 44032: 0x85A7, + 45106 - 44032: 0x85A8, + 45107 - 44032: 0x85A9, + 45108 - 44032: 0x85AA, + 45109 - 44032: 0x85AB, + 45110 - 44032: 0x85AC, + 45111 - 44032: 0x85AD, + 45112 - 44032: 0x85AE, + 45113 - 44032: 0x85AF, + 45114 - 44032: 0x85B0, + 45115 - 44032: 0x85B1, + 45116 - 44032: 0x85B2, + 45117 - 44032: 0x85B3, + 45118 - 44032: 0x85B4, + 45119 - 44032: 0x85B5, + 45120 - 44032: 0x85B6, + 45121 - 44032: 0x85B7, + 45122 - 44032: 0x85B8, + 45123 - 44032: 0x85B9, + 45124 - 44032: 0xB2F4, + 45125 - 44032: 0xB2F5, + 45126 - 44032: 0x85BA, + 45127 - 44032: 0x85BB, + 45128 - 44032: 0xB2F6, + 45129 - 44032: 0x85BC, + 45130 - 44032: 0xB2F7, + 45131 - 44032: 0x85BD, + 45132 - 44032: 0xB2F8, + 45133 - 44032: 0x85BE, + 45134 - 44032: 0xB2F9, + 45135 - 44032: 0x85BF, + 45136 - 44032: 0x85C0, + 45137 - 44032: 0x85C1, + 45138 - 44032: 0x85C2, + 45139 - 44032: 0xB2FA, + 45140 - 44032: 0xB2FB, + 45141 - 44032: 0xB2FC, + 45142 - 44032: 0x85C3, + 45143 - 44032: 0xB2FD, + 45144 - 44032: 0x85C4, + 45145 - 44032: 0xB2FE, + 45146 - 44032: 0x85C5, + 45147 - 44032: 0x85C6, + 45148 - 44032: 0x85C7, + 45149 - 44032: 0xB3A1, + 45150 - 44032: 0x85C8, + 45151 - 44032: 0x85C9, + 45152 - 44032: 0x85CA, + 45153 - 44032: 0x85CB, + 45154 - 44032: 0x85CC, + 45155 - 44032: 0x85CD, + 45156 - 44032: 0x85CE, + 45157 - 44032: 0x85CF, + 45158 - 44032: 0x85D0, + 45159 - 44032: 0x85D1, + 45160 - 44032: 0x85D2, + 45161 - 44032: 0x85D3, + 45162 - 44032: 0x85D4, + 45163 - 44032: 0x85D5, + 45164 - 44032: 0x85D6, + 45165 - 44032: 0x85D7, + 45166 - 44032: 0x85D8, + 45167 - 44032: 0x85D9, + 45168 - 44032: 0x85DA, + 45169 - 44032: 0x85DB, + 45170 - 44032: 0x85DC, + 45171 - 44032: 0x85DD, + 45172 - 44032: 0x85DE, + 45173 - 44032: 0x85DF, + 45174 - 44032: 0x85E0, + 45175 - 44032: 0x85E1, + 45176 - 44032: 0x85E2, + 45177 - 44032: 0x85E3, + 45178 - 44032: 0x85E4, + 45179 - 44032: 0x85E5, + 45180 - 44032: 0xB3A2, + 45181 - 44032: 0xB3A3, + 45182 - 44032: 0x85E6, + 45183 - 44032: 0x85E7, + 45184 - 44032: 0xB3A4, + 45185 - 44032: 0x85E8, + 45186 - 44032: 0x85E9, + 45187 - 44032: 0x85EA, + 45188 - 44032: 0xB3A5, + 45189 - 44032: 0x85EB, + 45190 - 44032: 0x85EC, + 45191 - 44032: 0x85ED, + 45192 - 44032: 0x85EE, + 45193 - 44032: 0x85EF, + 45194 - 44032: 0x85F0, + 45195 - 44032: 0x85F1, + 45196 - 44032: 0xB3A6, + 45197 - 44032: 0xB3A7, + 45198 - 44032: 0x85F2, + 45199 - 44032: 0xB3A8, + 45200 - 44032: 0x85F3, + 45201 - 44032: 0xB3A9, + 45202 - 44032: 0x85F4, + 45203 - 44032: 0x85F5, + 45204 - 44032: 0x85F6, + 45205 - 44032: 0x85F7, + 45206 - 44032: 0x85F8, + 45207 - 44032: 0x85F9, + 45208 - 44032: 0xB3AA, + 45209 - 44032: 0xB3AB, + 45210 - 44032: 0xB3AC, + 45211 - 44032: 0x85FA, + 45212 - 44032: 0xB3AD, + 45213 - 44032: 0x85FB, + 45214 - 44032: 0x85FC, + 45215 - 44032: 0xB3AE, + 45216 - 44032: 0xB3AF, + 45217 - 44032: 0xB3B0, + 45218 - 44032: 0xB3B1, + 45219 - 44032: 0x85FD, + 45220 - 44032: 0x85FE, + 45221 - 44032: 0x8641, + 45222 - 44032: 0x8642, + 45223 - 44032: 0x8643, + 45224 - 44032: 0xB3B2, + 45225 - 44032: 0xB3B3, + 45226 - 44032: 0x8644, + 45227 - 44032: 0xB3B4, + 45228 - 44032: 0xB3B5, + 45229 - 44032: 0xB3B6, + 45230 - 44032: 0xB3B7, + 45231 - 44032: 0xB3B8, + 45232 - 44032: 0x8645, + 45233 - 44032: 0xB3B9, + 45234 - 44032: 0x8646, + 45235 - 44032: 0xB3BA, + 45236 - 44032: 0xB3BB, + 45237 - 44032: 0xB3BC, + 45238 - 44032: 0x8647, + 45239 - 44032: 0x8648, + 45240 - 44032: 0xB3BD, + 45241 - 44032: 0x8649, + 45242 - 44032: 0x864A, + 45243 - 44032: 0x864B, + 45244 - 44032: 0xB3BE, + 45245 - 44032: 0x864C, + 45246 - 44032: 0x864D, + 45247 - 44032: 0x864E, + 45248 - 44032: 0x864F, + 45249 - 44032: 0x8650, + 45250 - 44032: 0x8651, + 45251 - 44032: 0x8652, + 45252 - 44032: 0xB3BF, + 45253 - 44032: 0xB3C0, + 45254 - 44032: 0x8653, + 45255 - 44032: 0xB3C1, + 45256 - 44032: 0xB3C2, + 45257 - 44032: 0xB3C3, + 45258 - 44032: 0x8654, + 45259 - 44032: 0x8655, + 45260 - 44032: 0x8656, + 45261 - 44032: 0x8657, + 45262 - 44032: 0x8658, + 45263 - 44032: 0x8659, + 45264 - 44032: 0xB3C4, + 45265 - 44032: 0xB3C5, + 45266 - 44032: 0x865A, + 45267 - 44032: 0x8661, + 45268 - 44032: 0xB3C6, + 45269 - 44032: 0x8662, + 45270 - 44032: 0x8663, + 45271 - 44032: 0x8664, + 45272 - 44032: 0xB3C7, + 45273 - 44032: 0x8665, + 45274 - 44032: 0x8666, + 45275 - 44032: 0x8667, + 45276 - 44032: 0x8668, + 45277 - 44032: 0x8669, + 45278 - 44032: 0x866A, + 45279 - 44032: 0x866B, + 45280 - 44032: 0xB3C8, + 45281 - 44032: 0x866C, + 45282 - 44032: 0x866D, + 45283 - 44032: 0x866E, + 45284 - 44032: 0x866F, + 45285 - 44032: 0xB3C9, + 45286 - 44032: 0x8670, + 45287 - 44032: 0x8671, + 45288 - 44032: 0x8672, + 45289 - 44032: 0x8673, + 45290 - 44032: 0x8674, + 45291 - 44032: 0x8675, + 45292 - 44032: 0x8676, + 45293 - 44032: 0x8677, + 45294 - 44032: 0x8678, + 45295 - 44032: 0x8679, + 45296 - 44032: 0x867A, + 45297 - 44032: 0x8681, + 45298 - 44032: 0x8682, + 45299 - 44032: 0x8683, + 45300 - 44032: 0x8684, + 45301 - 44032: 0x8685, + 45302 - 44032: 0x8686, + 45303 - 44032: 0x8687, + 45304 - 44032: 0x8688, + 45305 - 44032: 0x8689, + 45306 - 44032: 0x868A, + 45307 - 44032: 0x868B, + 45308 - 44032: 0x868C, + 45309 - 44032: 0x868D, + 45310 - 44032: 0x868E, + 45311 - 44032: 0x868F, + 45312 - 44032: 0x8690, + 45313 - 44032: 0x8691, + 45314 - 44032: 0x8692, + 45315 - 44032: 0x8693, + 45316 - 44032: 0x8694, + 45317 - 44032: 0x8695, + 45318 - 44032: 0x8696, + 45319 - 44032: 0x8697, + 45320 - 44032: 0xB3CA, + 45321 - 44032: 0xB3CB, + 45322 - 44032: 0x8698, + 45323 - 44032: 0xB3CC, + 45324 - 44032: 0xB3CD, + 45325 - 44032: 0x8699, + 45326 - 44032: 0x869A, + 45327 - 44032: 0x869B, + 45328 - 44032: 0xB3CE, + 45329 - 44032: 0x869C, + 45330 - 44032: 0xB3CF, + 45331 - 44032: 0xB3D0, + 45332 - 44032: 0x869D, + 45333 - 44032: 0x869E, + 45334 - 44032: 0x869F, + 45335 - 44032: 0x86A0, + 45336 - 44032: 0xB3D1, + 45337 - 44032: 0xB3D2, + 45338 - 44032: 0x86A1, + 45339 - 44032: 0xB3D3, + 45340 - 44032: 0xB3D4, + 45341 - 44032: 0xB3D5, + 45342 - 44032: 0x86A2, + 45343 - 44032: 0x86A3, + 45344 - 44032: 0x86A4, + 45345 - 44032: 0x86A5, + 45346 - 44032: 0x86A6, + 45347 - 44032: 0xB3D6, + 45348 - 44032: 0xB3D7, + 45349 - 44032: 0xB3D8, + 45350 - 44032: 0x86A7, + 45351 - 44032: 0x86A8, + 45352 - 44032: 0xB3D9, + 45353 - 44032: 0x86A9, + 45354 - 44032: 0x86AA, + 45355 - 44032: 0x86AB, + 45356 - 44032: 0xB3DA, + 45357 - 44032: 0x86AC, + 45358 - 44032: 0x86AD, + 45359 - 44032: 0x86AE, + 45360 - 44032: 0x86AF, + 45361 - 44032: 0x86B0, + 45362 - 44032: 0x86B1, + 45363 - 44032: 0x86B2, + 45364 - 44032: 0xB3DB, + 45365 - 44032: 0xB3DC, + 45366 - 44032: 0x86B3, + 45367 - 44032: 0xB3DD, + 45368 - 44032: 0xB3DE, + 45369 - 44032: 0xB3DF, + 45370 - 44032: 0x86B4, + 45371 - 44032: 0x86B5, + 45372 - 44032: 0x86B6, + 45373 - 44032: 0x86B7, + 45374 - 44032: 0x86B8, + 45375 - 44032: 0x86B9, + 45376 - 44032: 0xB3E0, + 45377 - 44032: 0xB3E1, + 45378 - 44032: 0x86BA, + 45379 - 44032: 0x86BB, + 45380 - 44032: 0xB3E2, + 45381 - 44032: 0x86BC, + 45382 - 44032: 0x86BD, + 45383 - 44032: 0x86BE, + 45384 - 44032: 0xB3E3, + 45385 - 44032: 0x86BF, + 45386 - 44032: 0x86C0, + 45387 - 44032: 0x86C1, + 45388 - 44032: 0x86C2, + 45389 - 44032: 0x86C3, + 45390 - 44032: 0x86C4, + 45391 - 44032: 0x86C5, + 45392 - 44032: 0xB3E4, + 45393 - 44032: 0xB3E5, + 45394 - 44032: 0x86C6, + 45395 - 44032: 0x86C7, + 45396 - 44032: 0xB3E6, + 45397 - 44032: 0xB3E7, + 45398 - 44032: 0x86C8, + 45399 - 44032: 0x86C9, + 45400 - 44032: 0xB3E8, + 45401 - 44032: 0x86CA, + 45402 - 44032: 0x86CB, + 45403 - 44032: 0x86CC, + 45404 - 44032: 0xB3E9, + 45405 - 44032: 0x86CD, + 45406 - 44032: 0x86CE, + 45407 - 44032: 0x86CF, + 45408 - 44032: 0xB3EA, + 45409 - 44032: 0x86D0, + 45410 - 44032: 0x86D1, + 45411 - 44032: 0x86D2, + 45412 - 44032: 0x86D3, + 45413 - 44032: 0x86D4, + 45414 - 44032: 0x86D5, + 45415 - 44032: 0x86D6, + 45416 - 44032: 0x86D7, + 45417 - 44032: 0x86D8, + 45418 - 44032: 0x86D9, + 45419 - 44032: 0x86DA, + 45420 - 44032: 0x86DB, + 45421 - 44032: 0x86DC, + 45422 - 44032: 0x86DD, + 45423 - 44032: 0x86DE, + 45424 - 44032: 0x86DF, + 45425 - 44032: 0x86E0, + 45426 - 44032: 0x86E1, + 45427 - 44032: 0x86E2, + 45428 - 44032: 0x86E3, + 45429 - 44032: 0x86E4, + 45430 - 44032: 0x86E5, + 45431 - 44032: 0x86E6, + 45432 - 44032: 0xB3EB, + 45433 - 44032: 0xB3EC, + 45434 - 44032: 0x86E7, + 45435 - 44032: 0x86E8, + 45436 - 44032: 0xB3ED, + 45437 - 44032: 0x86E9, + 45438 - 44032: 0x86EA, + 45439 - 44032: 0x86EB, + 45440 - 44032: 0xB3EE, + 45441 - 44032: 0x86EC, + 45442 - 44032: 0xB3EF, + 45443 - 44032: 0x86ED, + 45444 - 44032: 0x86EE, + 45445 - 44032: 0x86EF, + 45446 - 44032: 0x86F0, + 45447 - 44032: 0x86F1, + 45448 - 44032: 0xB3F0, + 45449 - 44032: 0xB3F1, + 45450 - 44032: 0x86F2, + 45451 - 44032: 0xB3F2, + 45452 - 44032: 0x86F3, + 45453 - 44032: 0xB3F3, + 45454 - 44032: 0x86F4, + 45455 - 44032: 0x86F5, + 45456 - 44032: 0x86F6, + 45457 - 44032: 0x86F7, + 45458 - 44032: 0xB3F4, + 45459 - 44032: 0xB3F5, + 45460 - 44032: 0xB3F6, + 45461 - 44032: 0x86F8, + 45462 - 44032: 0x86F9, + 45463 - 44032: 0x86FA, + 45464 - 44032: 0xB3F7, + 45465 - 44032: 0x86FB, + 45466 - 44032: 0x86FC, + 45467 - 44032: 0x86FD, + 45468 - 44032: 0xB3F8, + 45469 - 44032: 0x86FE, + 45470 - 44032: 0x8741, + 45471 - 44032: 0x8742, + 45472 - 44032: 0x8743, + 45473 - 44032: 0x8744, + 45474 - 44032: 0x8745, + 45475 - 44032: 0x8746, + 45476 - 44032: 0x8747, + 45477 - 44032: 0x8748, + 45478 - 44032: 0x8749, + 45479 - 44032: 0x874A, + 45480 - 44032: 0xB3F9, + 45481 - 44032: 0x874B, + 45482 - 44032: 0x874C, + 45483 - 44032: 0x874D, + 45484 - 44032: 0x874E, + 45485 - 44032: 0x874F, + 45486 - 44032: 0x8750, + 45487 - 44032: 0x8751, + 45488 - 44032: 0x8752, + 45489 - 44032: 0x8753, + 45490 - 44032: 0x8754, + 45491 - 44032: 0x8755, + 45492 - 44032: 0x8756, + 45493 - 44032: 0x8757, + 45494 - 44032: 0x8758, + 45495 - 44032: 0x8759, + 45496 - 44032: 0x875A, + 45497 - 44032: 0x8761, + 45498 - 44032: 0x8762, + 45499 - 44032: 0x8763, + 45500 - 44032: 0x8764, + 45501 - 44032: 0x8765, + 45502 - 44032: 0x8766, + 45503 - 44032: 0x8767, + 45504 - 44032: 0x8768, + 45505 - 44032: 0x8769, + 45506 - 44032: 0x876A, + 45507 - 44032: 0x876B, + 45508 - 44032: 0x876C, + 45509 - 44032: 0x876D, + 45510 - 44032: 0x876E, + 45511 - 44032: 0x876F, + 45512 - 44032: 0x8770, + 45513 - 44032: 0x8771, + 45514 - 44032: 0x8772, + 45515 - 44032: 0x8773, + 45516 - 44032: 0xB3FA, + 45517 - 44032: 0x8774, + 45518 - 44032: 0x8775, + 45519 - 44032: 0x8776, + 45520 - 44032: 0xB3FB, + 45521 - 44032: 0x8777, + 45522 - 44032: 0x8778, + 45523 - 44032: 0x8779, + 45524 - 44032: 0xB3FC, + 45525 - 44032: 0x877A, + 45526 - 44032: 0x8781, + 45527 - 44032: 0x8782, + 45528 - 44032: 0x8783, + 45529 - 44032: 0x8784, + 45530 - 44032: 0x8785, + 45531 - 44032: 0x8786, + 45532 - 44032: 0xB3FD, + 45533 - 44032: 0xB3FE, + 45534 - 44032: 0x8787, + 45535 - 44032: 0xB4A1, + 45536 - 44032: 0x8788, + 45537 - 44032: 0x8789, + 45538 - 44032: 0x878A, + 45539 - 44032: 0x878B, + 45540 - 44032: 0x878C, + 45541 - 44032: 0x878D, + 45542 - 44032: 0x878E, + 45543 - 44032: 0x878F, + 45544 - 44032: 0xB4A2, + 45545 - 44032: 0xB4A3, + 45546 - 44032: 0x8790, + 45547 - 44032: 0x8791, + 45548 - 44032: 0xB4A4, + 45549 - 44032: 0x8792, + 45550 - 44032: 0x8793, + 45551 - 44032: 0x8794, + 45552 - 44032: 0xB4A5, + 45553 - 44032: 0x8795, + 45554 - 44032: 0x8796, + 45555 - 44032: 0x8797, + 45556 - 44032: 0x8798, + 45557 - 44032: 0x8799, + 45558 - 44032: 0x879A, + 45559 - 44032: 0x879B, + 45560 - 44032: 0x879C, + 45561 - 44032: 0xB4A6, + 45562 - 44032: 0x879D, + 45563 - 44032: 0xB4A7, + 45564 - 44032: 0x879E, + 45565 - 44032: 0xB4A8, + 45566 - 44032: 0x879F, + 45567 - 44032: 0x87A0, + 45568 - 44032: 0x87A1, + 45569 - 44032: 0x87A2, + 45570 - 44032: 0x87A3, + 45571 - 44032: 0x87A4, + 45572 - 44032: 0xB4A9, + 45573 - 44032: 0xB4AA, + 45574 - 44032: 0x87A5, + 45575 - 44032: 0x87A6, + 45576 - 44032: 0xB4AB, + 45577 - 44032: 0x87A7, + 45578 - 44032: 0x87A8, + 45579 - 44032: 0xB4AC, + 45580 - 44032: 0xB4AD, + 45581 - 44032: 0x87A9, + 45582 - 44032: 0x87AA, + 45583 - 44032: 0x87AB, + 45584 - 44032: 0x87AC, + 45585 - 44032: 0x87AD, + 45586 - 44032: 0x87AE, + 45587 - 44032: 0x87AF, + 45588 - 44032: 0xB4AE, + 45589 - 44032: 0xB4AF, + 45590 - 44032: 0x87B0, + 45591 - 44032: 0xB4B0, + 45592 - 44032: 0x87B1, + 45593 - 44032: 0xB4B1, + 45594 - 44032: 0x87B2, + 45595 - 44032: 0x87B3, + 45596 - 44032: 0x87B4, + 45597 - 44032: 0x87B5, + 45598 - 44032: 0x87B6, + 45599 - 44032: 0x87B7, + 45600 - 44032: 0xB4B2, + 45601 - 44032: 0x87B8, + 45602 - 44032: 0x87B9, + 45603 - 44032: 0x87BA, + 45604 - 44032: 0x87BB, + 45605 - 44032: 0x87BC, + 45606 - 44032: 0x87BD, + 45607 - 44032: 0x87BE, + 45608 - 44032: 0x87BF, + 45609 - 44032: 0x87C0, + 45610 - 44032: 0x87C1, + 45611 - 44032: 0x87C2, + 45612 - 44032: 0x87C3, + 45613 - 44032: 0x87C4, + 45614 - 44032: 0x87C5, + 45615 - 44032: 0x87C6, + 45616 - 44032: 0x87C7, + 45617 - 44032: 0x87C8, + 45618 - 44032: 0x87C9, + 45619 - 44032: 0x87CA, + 45620 - 44032: 0xB4B3, + 45621 - 44032: 0x87CB, + 45622 - 44032: 0x87CC, + 45623 - 44032: 0x87CD, + 45624 - 44032: 0x87CE, + 45625 - 44032: 0x87CF, + 45626 - 44032: 0x87D0, + 45627 - 44032: 0x87D1, + 45628 - 44032: 0xB4B4, + 45629 - 44032: 0x87D2, + 45630 - 44032: 0x87D3, + 45631 - 44032: 0x87D4, + 45632 - 44032: 0x87D5, + 45633 - 44032: 0x87D6, + 45634 - 44032: 0x87D7, + 45635 - 44032: 0x87D8, + 45636 - 44032: 0x87D9, + 45637 - 44032: 0x87DA, + 45638 - 44032: 0x87DB, + 45639 - 44032: 0x87DC, + 45640 - 44032: 0x87DD, + 45641 - 44032: 0x87DE, + 45642 - 44032: 0x87DF, + 45643 - 44032: 0x87E0, + 45644 - 44032: 0x87E1, + 45645 - 44032: 0x87E2, + 45646 - 44032: 0x87E3, + 45647 - 44032: 0x87E4, + 45648 - 44032: 0x87E5, + 45649 - 44032: 0x87E6, + 45650 - 44032: 0x87E7, + 45651 - 44032: 0x87E8, + 45652 - 44032: 0x87E9, + 45653 - 44032: 0x87EA, + 45654 - 44032: 0x87EB, + 45655 - 44032: 0x87EC, + 45656 - 44032: 0xB4B5, + 45657 - 44032: 0x87ED, + 45658 - 44032: 0x87EE, + 45659 - 44032: 0x87EF, + 45660 - 44032: 0xB4B6, + 45661 - 44032: 0x87F0, + 45662 - 44032: 0x87F1, + 45663 - 44032: 0x87F2, + 45664 - 44032: 0xB4B7, + 45665 - 44032: 0x87F3, + 45666 - 44032: 0x87F4, + 45667 - 44032: 0x87F5, + 45668 - 44032: 0x87F6, + 45669 - 44032: 0x87F7, + 45670 - 44032: 0x87F8, + 45671 - 44032: 0x87F9, + 45672 - 44032: 0xB4B8, + 45673 - 44032: 0xB4B9, + 45674 - 44032: 0x87FA, + 45675 - 44032: 0x87FB, + 45676 - 44032: 0x87FC, + 45677 - 44032: 0x87FD, + 45678 - 44032: 0x87FE, + 45679 - 44032: 0x8841, + 45680 - 44032: 0x8842, + 45681 - 44032: 0x8843, + 45682 - 44032: 0x8844, + 45683 - 44032: 0x8845, + 45684 - 44032: 0xB4BA, + 45685 - 44032: 0xB4BB, + 45686 - 44032: 0x8846, + 45687 - 44032: 0x8847, + 45688 - 44032: 0x8848, + 45689 - 44032: 0x8849, + 45690 - 44032: 0x884A, + 45691 - 44032: 0x884B, + 45692 - 44032: 0xB4BC, + 45693 - 44032: 0x884C, + 45694 - 44032: 0x884D, + 45695 - 44032: 0x884E, + 45696 - 44032: 0x884F, + 45697 - 44032: 0x8850, + 45698 - 44032: 0x8851, + 45699 - 44032: 0x8852, + 45700 - 44032: 0xB4BD, + 45701 - 44032: 0xB4BE, + 45702 - 44032: 0x8853, + 45703 - 44032: 0x8854, + 45704 - 44032: 0x8855, + 45705 - 44032: 0xB4BF, + 45706 - 44032: 0x8856, + 45707 - 44032: 0x8857, + 45708 - 44032: 0x8858, + 45709 - 44032: 0x8859, + 45710 - 44032: 0x885A, + 45711 - 44032: 0x8861, + 45712 - 44032: 0xB4C0, + 45713 - 44032: 0xB4C1, + 45714 - 44032: 0x8862, + 45715 - 44032: 0x8863, + 45716 - 44032: 0xB4C2, + 45717 - 44032: 0x8864, + 45718 - 44032: 0x8865, + 45719 - 44032: 0x8866, + 45720 - 44032: 0xB4C3, + 45721 - 44032: 0xB4C4, + 45722 - 44032: 0xB4C5, + 45723 - 44032: 0x8867, + 45724 - 44032: 0x8868, + 45725 - 44032: 0x8869, + 45726 - 44032: 0x886A, + 45727 - 44032: 0x886B, + 45728 - 44032: 0xB4C6, + 45729 - 44032: 0xB4C7, + 45730 - 44032: 0x886C, + 45731 - 44032: 0xB4C8, + 45732 - 44032: 0x886D, + 45733 - 44032: 0xB4C9, + 45734 - 44032: 0xB4CA, + 45735 - 44032: 0x886E, + 45736 - 44032: 0x886F, + 45737 - 44032: 0x8870, + 45738 - 44032: 0xB4CB, + 45739 - 44032: 0x8871, + 45740 - 44032: 0xB4CC, + 45741 - 44032: 0x8872, + 45742 - 44032: 0x8873, + 45743 - 44032: 0x8874, + 45744 - 44032: 0xB4CD, + 45745 - 44032: 0x8875, + 45746 - 44032: 0x8876, + 45747 - 44032: 0x8877, + 45748 - 44032: 0xB4CE, + 45749 - 44032: 0x8878, + 45750 - 44032: 0x8879, + 45751 - 44032: 0x887A, + 45752 - 44032: 0x8881, + 45753 - 44032: 0x8882, + 45754 - 44032: 0x8883, + 45755 - 44032: 0x8884, + 45756 - 44032: 0x8885, + 45757 - 44032: 0x8886, + 45758 - 44032: 0x8887, + 45759 - 44032: 0x8888, + 45760 - 44032: 0x8889, + 45761 - 44032: 0x888A, + 45762 - 44032: 0x888B, + 45763 - 44032: 0x888C, + 45764 - 44032: 0x888D, + 45765 - 44032: 0x888E, + 45766 - 44032: 0x888F, + 45767 - 44032: 0x8890, + 45768 - 44032: 0xB4CF, + 45769 - 44032: 0xB4D0, + 45770 - 44032: 0x8891, + 45771 - 44032: 0x8892, + 45772 - 44032: 0xB4D1, + 45773 - 44032: 0x8893, + 45774 - 44032: 0x8894, + 45775 - 44032: 0x8895, + 45776 - 44032: 0xB4D2, + 45777 - 44032: 0x8896, + 45778 - 44032: 0xB4D3, + 45779 - 44032: 0x8897, + 45780 - 44032: 0x8898, + 45781 - 44032: 0x8899, + 45782 - 44032: 0x889A, + 45783 - 44032: 0x889B, + 45784 - 44032: 0xB4D4, + 45785 - 44032: 0xB4D5, + 45786 - 44032: 0x889C, + 45787 - 44032: 0xB4D6, + 45788 - 44032: 0x889D, + 45789 - 44032: 0xB4D7, + 45790 - 44032: 0x889E, + 45791 - 44032: 0x889F, + 45792 - 44032: 0x88A0, + 45793 - 44032: 0x88A1, + 45794 - 44032: 0xB4D8, + 45795 - 44032: 0x88A2, + 45796 - 44032: 0xB4D9, + 45797 - 44032: 0xB4DA, + 45798 - 44032: 0xB4DB, + 45799 - 44032: 0x88A3, + 45800 - 44032: 0xB4DC, + 45801 - 44032: 0x88A4, + 45802 - 44032: 0x88A5, + 45803 - 44032: 0xB4DD, + 45804 - 44032: 0xB4DE, + 45805 - 44032: 0xB4DF, + 45806 - 44032: 0xB4E0, + 45807 - 44032: 0xB4E1, + 45808 - 44032: 0x88A6, + 45809 - 44032: 0x88A7, + 45810 - 44032: 0x88A8, + 45811 - 44032: 0xB4E2, + 45812 - 44032: 0xB4E3, + 45813 - 44032: 0xB4E4, + 45814 - 44032: 0x88A9, + 45815 - 44032: 0xB4E5, + 45816 - 44032: 0xB4E6, + 45817 - 44032: 0xB4E7, + 45818 - 44032: 0xB4E8, + 45819 - 44032: 0xB4E9, + 45820 - 44032: 0x88AA, + 45821 - 44032: 0x88AB, + 45822 - 44032: 0x88AC, + 45823 - 44032: 0xB4EA, + 45824 - 44032: 0xB4EB, + 45825 - 44032: 0xB4EC, + 45826 - 44032: 0x88AD, + 45827 - 44032: 0x88AE, + 45828 - 44032: 0xB4ED, + 45829 - 44032: 0x88AF, + 45830 - 44032: 0x88B0, + 45831 - 44032: 0x88B1, + 45832 - 44032: 0xB4EE, + 45833 - 44032: 0x88B2, + 45834 - 44032: 0x88B3, + 45835 - 44032: 0x88B4, + 45836 - 44032: 0x88B5, + 45837 - 44032: 0x88B6, + 45838 - 44032: 0x88B7, + 45839 - 44032: 0x88B8, + 45840 - 44032: 0xB4EF, + 45841 - 44032: 0xB4F0, + 45842 - 44032: 0x88B9, + 45843 - 44032: 0xB4F1, + 45844 - 44032: 0xB4F2, + 45845 - 44032: 0xB4F3, + 45846 - 44032: 0x88BA, + 45847 - 44032: 0x88BB, + 45848 - 44032: 0x88BC, + 45849 - 44032: 0x88BD, + 45850 - 44032: 0x88BE, + 45851 - 44032: 0x88BF, + 45852 - 44032: 0xB4F4, + 45853 - 44032: 0x88C0, + 45854 - 44032: 0x88C1, + 45855 - 44032: 0x88C2, + 45856 - 44032: 0x88C3, + 45857 - 44032: 0x88C4, + 45858 - 44032: 0x88C5, + 45859 - 44032: 0x88C6, + 45860 - 44032: 0x88C7, + 45861 - 44032: 0x88C8, + 45862 - 44032: 0x88C9, + 45863 - 44032: 0x88CA, + 45864 - 44032: 0x88CB, + 45865 - 44032: 0x88CC, + 45866 - 44032: 0x88CD, + 45867 - 44032: 0x88CE, + 45868 - 44032: 0x88CF, + 45869 - 44032: 0x88D0, + 45870 - 44032: 0x88D1, + 45871 - 44032: 0x88D2, + 45872 - 44032: 0x88D3, + 45873 - 44032: 0x88D4, + 45874 - 44032: 0x88D5, + 45875 - 44032: 0x88D6, + 45876 - 44032: 0x88D7, + 45877 - 44032: 0x88D8, + 45878 - 44032: 0x88D9, + 45879 - 44032: 0x88DA, + 45880 - 44032: 0x88DB, + 45881 - 44032: 0x88DC, + 45882 - 44032: 0x88DD, + 45883 - 44032: 0x88DE, + 45884 - 44032: 0x88DF, + 45885 - 44032: 0x88E0, + 45886 - 44032: 0x88E1, + 45887 - 44032: 0x88E2, + 45888 - 44032: 0x88E3, + 45889 - 44032: 0x88E4, + 45890 - 44032: 0x88E5, + 45891 - 44032: 0x88E6, + 45892 - 44032: 0x88E7, + 45893 - 44032: 0x88E8, + 45894 - 44032: 0x88E9, + 45895 - 44032: 0x88EA, + 45896 - 44032: 0x88EB, + 45897 - 44032: 0x88EC, + 45898 - 44032: 0x88ED, + 45899 - 44032: 0x88EE, + 45900 - 44032: 0x88EF, + 45901 - 44032: 0x88F0, + 45902 - 44032: 0x88F1, + 45903 - 44032: 0x88F2, + 45904 - 44032: 0x88F3, + 45905 - 44032: 0x88F4, + 45906 - 44032: 0x88F5, + 45907 - 44032: 0x88F6, + 45908 - 44032: 0xB4F5, + 45909 - 44032: 0xB4F6, + 45910 - 44032: 0xB4F7, + 45911 - 44032: 0x88F7, + 45912 - 44032: 0xB4F8, + 45913 - 44032: 0x88F8, + 45914 - 44032: 0x88F9, + 45915 - 44032: 0xB4F9, + 45916 - 44032: 0xB4FA, + 45917 - 44032: 0x88FA, + 45918 - 44032: 0xB4FB, + 45919 - 44032: 0xB4FC, + 45920 - 44032: 0x88FB, + 45921 - 44032: 0x88FC, + 45922 - 44032: 0x88FD, + 45923 - 44032: 0x88FE, + 45924 - 44032: 0xB4FD, + 45925 - 44032: 0xB4FE, + 45926 - 44032: 0x8941, + 45927 - 44032: 0xB5A1, + 45928 - 44032: 0x8942, + 45929 - 44032: 0xB5A2, + 45930 - 44032: 0x8943, + 45931 - 44032: 0xB5A3, + 45932 - 44032: 0x8944, + 45933 - 44032: 0x8945, + 45934 - 44032: 0xB5A4, + 45935 - 44032: 0x8946, + 45936 - 44032: 0xB5A5, + 45937 - 44032: 0xB5A6, + 45938 - 44032: 0x8947, + 45939 - 44032: 0x8948, + 45940 - 44032: 0xB5A7, + 45941 - 44032: 0x8949, + 45942 - 44032: 0x894A, + 45943 - 44032: 0x894B, + 45944 - 44032: 0xB5A8, + 45945 - 44032: 0x894C, + 45946 - 44032: 0x894D, + 45947 - 44032: 0x894E, + 45948 - 44032: 0x894F, + 45949 - 44032: 0x8950, + 45950 - 44032: 0x8951, + 45951 - 44032: 0x8952, + 45952 - 44032: 0xB5A9, + 45953 - 44032: 0xB5AA, + 45954 - 44032: 0x8953, + 45955 - 44032: 0xB5AB, + 45956 - 44032: 0xB5AC, + 45957 - 44032: 0xB5AD, + 45958 - 44032: 0x8954, + 45959 - 44032: 0x8955, + 45960 - 44032: 0x8956, + 45961 - 44032: 0x8957, + 45962 - 44032: 0x8958, + 45963 - 44032: 0x8959, + 45964 - 44032: 0xB5AE, + 45965 - 44032: 0x895A, + 45966 - 44032: 0x8961, + 45967 - 44032: 0x8962, + 45968 - 44032: 0xB5AF, + 45969 - 44032: 0x8963, + 45970 - 44032: 0x8964, + 45971 - 44032: 0x8965, + 45972 - 44032: 0xB5B0, + 45973 - 44032: 0x8966, + 45974 - 44032: 0x8967, + 45975 - 44032: 0x8968, + 45976 - 44032: 0x8969, + 45977 - 44032: 0x896A, + 45978 - 44032: 0x896B, + 45979 - 44032: 0x896C, + 45980 - 44032: 0x896D, + 45981 - 44032: 0x896E, + 45982 - 44032: 0x896F, + 45983 - 44032: 0x8970, + 45984 - 44032: 0xB5B1, + 45985 - 44032: 0xB5B2, + 45986 - 44032: 0x8971, + 45987 - 44032: 0x8972, + 45988 - 44032: 0x8973, + 45989 - 44032: 0x8974, + 45990 - 44032: 0x8975, + 45991 - 44032: 0x8976, + 45992 - 44032: 0xB5B3, + 45993 - 44032: 0x8977, + 45994 - 44032: 0x8978, + 45995 - 44032: 0x8979, + 45996 - 44032: 0xB5B4, + 45997 - 44032: 0x897A, + 45998 - 44032: 0x8981, + 45999 - 44032: 0x8982, + 46000 - 44032: 0x8983, + 46001 - 44032: 0x8984, + 46002 - 44032: 0x8985, + 46003 - 44032: 0x8986, + 46004 - 44032: 0x8987, + 46005 - 44032: 0x8988, + 46006 - 44032: 0x8989, + 46007 - 44032: 0x898A, + 46008 - 44032: 0x898B, + 46009 - 44032: 0x898C, + 46010 - 44032: 0x898D, + 46011 - 44032: 0x898E, + 46012 - 44032: 0x898F, + 46013 - 44032: 0x8990, + 46014 - 44032: 0x8991, + 46015 - 44032: 0x8992, + 46016 - 44032: 0x8993, + 46017 - 44032: 0x8994, + 46018 - 44032: 0x8995, + 46019 - 44032: 0x8996, + 46020 - 44032: 0xB5B5, + 46021 - 44032: 0xB5B6, + 46022 - 44032: 0x8997, + 46023 - 44032: 0x8998, + 46024 - 44032: 0xB5B7, + 46025 - 44032: 0x8999, + 46026 - 44032: 0x899A, + 46027 - 44032: 0xB5B8, + 46028 - 44032: 0xB5B9, + 46029 - 44032: 0x899B, + 46030 - 44032: 0xB5BA, + 46031 - 44032: 0x899C, + 46032 - 44032: 0xB5BB, + 46033 - 44032: 0x899D, + 46034 - 44032: 0x899E, + 46035 - 44032: 0x899F, + 46036 - 44032: 0xB5BC, + 46037 - 44032: 0xB5BD, + 46038 - 44032: 0x89A0, + 46039 - 44032: 0xB5BE, + 46040 - 44032: 0x89A1, + 46041 - 44032: 0xB5BF, + 46042 - 44032: 0x89A2, + 46043 - 44032: 0xB5C0, + 46044 - 44032: 0x89A3, + 46045 - 44032: 0xB5C1, + 46046 - 44032: 0x89A4, + 46047 - 44032: 0x89A5, + 46048 - 44032: 0xB5C2, + 46049 - 44032: 0x89A6, + 46050 - 44032: 0x89A7, + 46051 - 44032: 0x89A8, + 46052 - 44032: 0xB5C3, + 46053 - 44032: 0x89A9, + 46054 - 44032: 0x89AA, + 46055 - 44032: 0x89AB, + 46056 - 44032: 0xB5C4, + 46057 - 44032: 0x89AC, + 46058 - 44032: 0x89AD, + 46059 - 44032: 0x89AE, + 46060 - 44032: 0x89AF, + 46061 - 44032: 0x89B0, + 46062 - 44032: 0x89B1, + 46063 - 44032: 0x89B2, + 46064 - 44032: 0x89B3, + 46065 - 44032: 0x89B4, + 46066 - 44032: 0x89B5, + 46067 - 44032: 0x89B6, + 46068 - 44032: 0x89B7, + 46069 - 44032: 0x89B8, + 46070 - 44032: 0x89B9, + 46071 - 44032: 0x89BA, + 46072 - 44032: 0x89BB, + 46073 - 44032: 0x89BC, + 46074 - 44032: 0x89BD, + 46075 - 44032: 0x89BE, + 46076 - 44032: 0xB5C5, + 46077 - 44032: 0x89BF, + 46078 - 44032: 0x89C0, + 46079 - 44032: 0x89C1, + 46080 - 44032: 0x89C2, + 46081 - 44032: 0x89C3, + 46082 - 44032: 0x89C4, + 46083 - 44032: 0x89C5, + 46084 - 44032: 0x89C6, + 46085 - 44032: 0x89C7, + 46086 - 44032: 0x89C8, + 46087 - 44032: 0x89C9, + 46088 - 44032: 0x89CA, + 46089 - 44032: 0x89CB, + 46090 - 44032: 0x89CC, + 46091 - 44032: 0x89CD, + 46092 - 44032: 0x89CE, + 46093 - 44032: 0x89CF, + 46094 - 44032: 0x89D0, + 46095 - 44032: 0x89D1, + 46096 - 44032: 0xB5C6, + 46097 - 44032: 0x89D2, + 46098 - 44032: 0x89D3, + 46099 - 44032: 0x89D4, + 46100 - 44032: 0x89D5, + 46101 - 44032: 0x89D6, + 46102 - 44032: 0x89D7, + 46103 - 44032: 0x89D8, + 46104 - 44032: 0xB5C7, + 46105 - 44032: 0x89D9, + 46106 - 44032: 0x89DA, + 46107 - 44032: 0x89DB, + 46108 - 44032: 0xB5C8, + 46109 - 44032: 0x89DC, + 46110 - 44032: 0x89DD, + 46111 - 44032: 0x89DE, + 46112 - 44032: 0xB5C9, + 46113 - 44032: 0x89DF, + 46114 - 44032: 0x89E0, + 46115 - 44032: 0x89E1, + 46116 - 44032: 0x89E2, + 46117 - 44032: 0x89E3, + 46118 - 44032: 0x89E4, + 46119 - 44032: 0x89E5, + 46120 - 44032: 0xB5CA, + 46121 - 44032: 0xB5CB, + 46122 - 44032: 0x89E6, + 46123 - 44032: 0xB5CC, + 46124 - 44032: 0x89E7, + 46125 - 44032: 0x89E8, + 46126 - 44032: 0x89E9, + 46127 - 44032: 0x89EA, + 46128 - 44032: 0x89EB, + 46129 - 44032: 0x89EC, + 46130 - 44032: 0x89ED, + 46131 - 44032: 0x89EE, + 46132 - 44032: 0xB5CD, + 46133 - 44032: 0x89EF, + 46134 - 44032: 0x89F0, + 46135 - 44032: 0x89F1, + 46136 - 44032: 0x89F2, + 46137 - 44032: 0x89F3, + 46138 - 44032: 0x89F4, + 46139 - 44032: 0x89F5, + 46140 - 44032: 0x89F6, + 46141 - 44032: 0x89F7, + 46142 - 44032: 0x89F8, + 46143 - 44032: 0x89F9, + 46144 - 44032: 0x89FA, + 46145 - 44032: 0x89FB, + 46146 - 44032: 0x89FC, + 46147 - 44032: 0x89FD, + 46148 - 44032: 0x89FE, + 46149 - 44032: 0x8A41, + 46150 - 44032: 0x8A42, + 46151 - 44032: 0x8A43, + 46152 - 44032: 0x8A44, + 46153 - 44032: 0x8A45, + 46154 - 44032: 0x8A46, + 46155 - 44032: 0x8A47, + 46156 - 44032: 0x8A48, + 46157 - 44032: 0x8A49, + 46158 - 44032: 0x8A4A, + 46159 - 44032: 0x8A4B, + 46160 - 44032: 0xB5CE, + 46161 - 44032: 0xB5CF, + 46162 - 44032: 0x8A4C, + 46163 - 44032: 0x8A4D, + 46164 - 44032: 0xB5D0, + 46165 - 44032: 0x8A4E, + 46166 - 44032: 0x8A4F, + 46167 - 44032: 0x8A50, + 46168 - 44032: 0xB5D1, + 46169 - 44032: 0x8A51, + 46170 - 44032: 0x8A52, + 46171 - 44032: 0x8A53, + 46172 - 44032: 0x8A54, + 46173 - 44032: 0x8A55, + 46174 - 44032: 0x8A56, + 46175 - 44032: 0x8A57, + 46176 - 44032: 0xB5D2, + 46177 - 44032: 0xB5D3, + 46178 - 44032: 0x8A58, + 46179 - 44032: 0xB5D4, + 46180 - 44032: 0x8A59, + 46181 - 44032: 0xB5D5, + 46182 - 44032: 0x8A5A, + 46183 - 44032: 0x8A61, + 46184 - 44032: 0x8A62, + 46185 - 44032: 0x8A63, + 46186 - 44032: 0x8A64, + 46187 - 44032: 0x8A65, + 46188 - 44032: 0xB5D6, + 46189 - 44032: 0x8A66, + 46190 - 44032: 0x8A67, + 46191 - 44032: 0x8A68, + 46192 - 44032: 0x8A69, + 46193 - 44032: 0x8A6A, + 46194 - 44032: 0x8A6B, + 46195 - 44032: 0x8A6C, + 46196 - 44032: 0x8A6D, + 46197 - 44032: 0x8A6E, + 46198 - 44032: 0x8A6F, + 46199 - 44032: 0x8A70, + 46200 - 44032: 0x8A71, + 46201 - 44032: 0x8A72, + 46202 - 44032: 0x8A73, + 46203 - 44032: 0x8A74, + 46204 - 44032: 0x8A75, + 46205 - 44032: 0x8A76, + 46206 - 44032: 0x8A77, + 46207 - 44032: 0x8A78, + 46208 - 44032: 0xB5D7, + 46209 - 44032: 0x8A79, + 46210 - 44032: 0x8A7A, + 46211 - 44032: 0x8A81, + 46212 - 44032: 0x8A82, + 46213 - 44032: 0x8A83, + 46214 - 44032: 0x8A84, + 46215 - 44032: 0x8A85, + 46216 - 44032: 0xB5D8, + 46217 - 44032: 0x8A86, + 46218 - 44032: 0x8A87, + 46219 - 44032: 0x8A88, + 46220 - 44032: 0x8A89, + 46221 - 44032: 0x8A8A, + 46222 - 44032: 0x8A8B, + 46223 - 44032: 0x8A8C, + 46224 - 44032: 0x8A8D, + 46225 - 44032: 0x8A8E, + 46226 - 44032: 0x8A8F, + 46227 - 44032: 0x8A90, + 46228 - 44032: 0x8A91, + 46229 - 44032: 0x8A92, + 46230 - 44032: 0x8A93, + 46231 - 44032: 0x8A94, + 46232 - 44032: 0x8A95, + 46233 - 44032: 0x8A96, + 46234 - 44032: 0x8A97, + 46235 - 44032: 0x8A98, + 46236 - 44032: 0x8A99, + 46237 - 44032: 0xB5D9, + 46238 - 44032: 0x8A9A, + 46239 - 44032: 0x8A9B, + 46240 - 44032: 0x8A9C, + 46241 - 44032: 0x8A9D, + 46242 - 44032: 0x8A9E, + 46243 - 44032: 0x8A9F, + 46244 - 44032: 0xB5DA, + 46245 - 44032: 0x8AA0, + 46246 - 44032: 0x8AA1, + 46247 - 44032: 0x8AA2, + 46248 - 44032: 0xB5DB, + 46249 - 44032: 0x8AA3, + 46250 - 44032: 0x8AA4, + 46251 - 44032: 0x8AA5, + 46252 - 44032: 0xB5DC, + 46253 - 44032: 0x8AA6, + 46254 - 44032: 0x8AA7, + 46255 - 44032: 0x8AA8, + 46256 - 44032: 0x8AA9, + 46257 - 44032: 0x8AAA, + 46258 - 44032: 0x8AAB, + 46259 - 44032: 0x8AAC, + 46260 - 44032: 0x8AAD, + 46261 - 44032: 0xB5DD, + 46262 - 44032: 0x8AAE, + 46263 - 44032: 0xB5DE, + 46264 - 44032: 0x8AAF, + 46265 - 44032: 0xB5DF, + 46266 - 44032: 0x8AB0, + 46267 - 44032: 0x8AB1, + 46268 - 44032: 0x8AB2, + 46269 - 44032: 0x8AB3, + 46270 - 44032: 0x8AB4, + 46271 - 44032: 0x8AB5, + 46272 - 44032: 0xB5E0, + 46273 - 44032: 0x8AB6, + 46274 - 44032: 0x8AB7, + 46275 - 44032: 0x8AB8, + 46276 - 44032: 0xB5E1, + 46277 - 44032: 0x8AB9, + 46278 - 44032: 0x8ABA, + 46279 - 44032: 0x8ABB, + 46280 - 44032: 0xB5E2, + 46281 - 44032: 0x8ABC, + 46282 - 44032: 0x8ABD, + 46283 - 44032: 0x8ABE, + 46284 - 44032: 0x8ABF, + 46285 - 44032: 0x8AC0, + 46286 - 44032: 0x8AC1, + 46287 - 44032: 0x8AC2, + 46288 - 44032: 0xB5E3, + 46289 - 44032: 0x8AC3, + 46290 - 44032: 0x8AC4, + 46291 - 44032: 0x8AC5, + 46292 - 44032: 0x8AC6, + 46293 - 44032: 0xB5E4, + 46294 - 44032: 0x8AC7, + 46295 - 44032: 0x8AC8, + 46296 - 44032: 0x8AC9, + 46297 - 44032: 0x8ACA, + 46298 - 44032: 0x8ACB, + 46299 - 44032: 0x8ACC, + 46300 - 44032: 0xB5E5, + 46301 - 44032: 0xB5E6, + 46302 - 44032: 0x8ACD, + 46303 - 44032: 0x8ACE, + 46304 - 44032: 0xB5E7, + 46305 - 44032: 0x8ACF, + 46306 - 44032: 0x8AD0, + 46307 - 44032: 0xB5E8, + 46308 - 44032: 0xB5E9, + 46309 - 44032: 0x8AD1, + 46310 - 44032: 0xB5EA, + 46311 - 44032: 0x8AD2, + 46312 - 44032: 0x8AD3, + 46313 - 44032: 0x8AD4, + 46314 - 44032: 0x8AD5, + 46315 - 44032: 0x8AD6, + 46316 - 44032: 0xB5EB, + 46317 - 44032: 0xB5EC, + 46318 - 44032: 0x8AD7, + 46319 - 44032: 0xB5ED, + 46320 - 44032: 0x8AD8, + 46321 - 44032: 0xB5EE, + 46322 - 44032: 0x8AD9, + 46323 - 44032: 0x8ADA, + 46324 - 44032: 0x8ADB, + 46325 - 44032: 0x8ADC, + 46326 - 44032: 0x8ADD, + 46327 - 44032: 0x8ADE, + 46328 - 44032: 0xB5EF, + 46329 - 44032: 0x8ADF, + 46330 - 44032: 0x8AE0, + 46331 - 44032: 0x8AE1, + 46332 - 44032: 0x8AE2, + 46333 - 44032: 0x8AE3, + 46334 - 44032: 0x8AE4, + 46335 - 44032: 0x8AE5, + 46336 - 44032: 0x8AE6, + 46337 - 44032: 0x8AE7, + 46338 - 44032: 0x8AE8, + 46339 - 44032: 0x8AE9, + 46340 - 44032: 0x8AEA, + 46341 - 44032: 0x8AEB, + 46342 - 44032: 0x8AEC, + 46343 - 44032: 0x8AED, + 46344 - 44032: 0x8AEE, + 46345 - 44032: 0x8AEF, + 46346 - 44032: 0x8AF0, + 46347 - 44032: 0x8AF1, + 46348 - 44032: 0x8AF2, + 46349 - 44032: 0x8AF3, + 46350 - 44032: 0x8AF4, + 46351 - 44032: 0x8AF5, + 46352 - 44032: 0x8AF6, + 46353 - 44032: 0x8AF7, + 46354 - 44032: 0x8AF8, + 46355 - 44032: 0x8AF9, + 46356 - 44032: 0xB5F0, + 46357 - 44032: 0xB5F1, + 46358 - 44032: 0x8AFA, + 46359 - 44032: 0x8AFB, + 46360 - 44032: 0xB5F2, + 46361 - 44032: 0x8AFC, + 46362 - 44032: 0x8AFD, + 46363 - 44032: 0xB5F3, + 46364 - 44032: 0xB5F4, + 46365 - 44032: 0x8AFE, + 46366 - 44032: 0x8B41, + 46367 - 44032: 0x8B42, + 46368 - 44032: 0x8B43, + 46369 - 44032: 0x8B44, + 46370 - 44032: 0x8B45, + 46371 - 44032: 0x8B46, + 46372 - 44032: 0xB5F5, + 46373 - 44032: 0xB5F6, + 46374 - 44032: 0x8B47, + 46375 - 44032: 0xB5F7, + 46376 - 44032: 0xB5F8, + 46377 - 44032: 0xB5F9, + 46378 - 44032: 0xB5FA, + 46379 - 44032: 0x8B48, + 46380 - 44032: 0x8B49, + 46381 - 44032: 0x8B4A, + 46382 - 44032: 0x8B4B, + 46383 - 44032: 0x8B4C, + 46384 - 44032: 0xB5FB, + 46385 - 44032: 0xB5FC, + 46386 - 44032: 0x8B4D, + 46387 - 44032: 0x8B4E, + 46388 - 44032: 0xB5FD, + 46389 - 44032: 0x8B4F, + 46390 - 44032: 0x8B50, + 46391 - 44032: 0x8B51, + 46392 - 44032: 0xB5FE, + 46393 - 44032: 0x8B52, + 46394 - 44032: 0x8B53, + 46395 - 44032: 0x8B54, + 46396 - 44032: 0x8B55, + 46397 - 44032: 0x8B56, + 46398 - 44032: 0x8B57, + 46399 - 44032: 0x8B58, + 46400 - 44032: 0xB6A1, + 46401 - 44032: 0xB6A2, + 46402 - 44032: 0x8B59, + 46403 - 44032: 0xB6A3, + 46404 - 44032: 0xB6A4, + 46405 - 44032: 0xB6A5, + 46406 - 44032: 0x8B5A, + 46407 - 44032: 0x8B61, + 46408 - 44032: 0x8B62, + 46409 - 44032: 0x8B63, + 46410 - 44032: 0x8B64, + 46411 - 44032: 0xB6A6, + 46412 - 44032: 0xB6A7, + 46413 - 44032: 0xB6A8, + 46414 - 44032: 0x8B65, + 46415 - 44032: 0x8B66, + 46416 - 44032: 0xB6A9, + 46417 - 44032: 0x8B67, + 46418 - 44032: 0x8B68, + 46419 - 44032: 0x8B69, + 46420 - 44032: 0xB6AA, + 46421 - 44032: 0x8B6A, + 46422 - 44032: 0x8B6B, + 46423 - 44032: 0x8B6C, + 46424 - 44032: 0x8B6D, + 46425 - 44032: 0x8B6E, + 46426 - 44032: 0x8B6F, + 46427 - 44032: 0x8B70, + 46428 - 44032: 0xB6AB, + 46429 - 44032: 0xB6AC, + 46430 - 44032: 0x8B71, + 46431 - 44032: 0xB6AD, + 46432 - 44032: 0xB6AE, + 46433 - 44032: 0xB6AF, + 46434 - 44032: 0x8B72, + 46435 - 44032: 0x8B73, + 46436 - 44032: 0x8B74, + 46437 - 44032: 0x8B75, + 46438 - 44032: 0x8B76, + 46439 - 44032: 0x8B77, + 46440 - 44032: 0x8B78, + 46441 - 44032: 0x8B79, + 46442 - 44032: 0x8B7A, + 46443 - 44032: 0x8B81, + 46444 - 44032: 0x8B82, + 46445 - 44032: 0x8B83, + 46446 - 44032: 0x8B84, + 46447 - 44032: 0x8B85, + 46448 - 44032: 0x8B86, + 46449 - 44032: 0x8B87, + 46450 - 44032: 0x8B88, + 46451 - 44032: 0x8B89, + 46452 - 44032: 0x8B8A, + 46453 - 44032: 0x8B8B, + 46454 - 44032: 0x8B8C, + 46455 - 44032: 0x8B8D, + 46456 - 44032: 0x8B8E, + 46457 - 44032: 0x8B8F, + 46458 - 44032: 0x8B90, + 46459 - 44032: 0x8B91, + 46460 - 44032: 0x8B92, + 46461 - 44032: 0x8B93, + 46462 - 44032: 0x8B94, + 46463 - 44032: 0x8B95, + 46464 - 44032: 0x8B96, + 46465 - 44032: 0x8B97, + 46466 - 44032: 0x8B98, + 46467 - 44032: 0x8B99, + 46468 - 44032: 0x8B9A, + 46469 - 44032: 0x8B9B, + 46470 - 44032: 0x8B9C, + 46471 - 44032: 0x8B9D, + 46472 - 44032: 0x8B9E, + 46473 - 44032: 0x8B9F, + 46474 - 44032: 0x8BA0, + 46475 - 44032: 0x8BA1, + 46476 - 44032: 0x8BA2, + 46477 - 44032: 0x8BA3, + 46478 - 44032: 0x8BA4, + 46479 - 44032: 0x8BA5, + 46480 - 44032: 0x8BA6, + 46481 - 44032: 0x8BA7, + 46482 - 44032: 0x8BA8, + 46483 - 44032: 0x8BA9, + 46484 - 44032: 0x8BAA, + 46485 - 44032: 0x8BAB, + 46486 - 44032: 0x8BAC, + 46487 - 44032: 0x8BAD, + 46488 - 44032: 0x8BAE, + 46489 - 44032: 0x8BAF, + 46490 - 44032: 0x8BB0, + 46491 - 44032: 0x8BB1, + 46492 - 44032: 0x8BB2, + 46493 - 44032: 0x8BB3, + 46494 - 44032: 0x8BB4, + 46495 - 44032: 0x8BB5, + 46496 - 44032: 0xB6B0, + 46497 - 44032: 0xB6B1, + 46498 - 44032: 0x8BB6, + 46499 - 44032: 0x8BB7, + 46500 - 44032: 0xB6B2, + 46501 - 44032: 0x8BB8, + 46502 - 44032: 0x8BB9, + 46503 - 44032: 0x8BBA, + 46504 - 44032: 0xB6B3, + 46505 - 44032: 0x8BBB, + 46506 - 44032: 0xB6B4, + 46507 - 44032: 0xB6B5, + 46508 - 44032: 0x8BBC, + 46509 - 44032: 0x8BBD, + 46510 - 44032: 0x8BBE, + 46511 - 44032: 0x8BBF, + 46512 - 44032: 0xB6B6, + 46513 - 44032: 0xB6B7, + 46514 - 44032: 0x8BC0, + 46515 - 44032: 0xB6B8, + 46516 - 44032: 0xB6B9, + 46517 - 44032: 0xB6BA, + 46518 - 44032: 0x8BC1, + 46519 - 44032: 0x8BC2, + 46520 - 44032: 0x8BC3, + 46521 - 44032: 0x8BC4, + 46522 - 44032: 0x8BC5, + 46523 - 44032: 0xB6BB, + 46524 - 44032: 0xB6BC, + 46525 - 44032: 0xB6BD, + 46526 - 44032: 0x8BC6, + 46527 - 44032: 0x8BC7, + 46528 - 44032: 0xB6BE, + 46529 - 44032: 0x8BC8, + 46530 - 44032: 0x8BC9, + 46531 - 44032: 0x8BCA, + 46532 - 44032: 0xB6BF, + 46533 - 44032: 0x8BCB, + 46534 - 44032: 0x8BCC, + 46535 - 44032: 0x8BCD, + 46536 - 44032: 0x8BCE, + 46537 - 44032: 0x8BCF, + 46538 - 44032: 0x8BD0, + 46539 - 44032: 0x8BD1, + 46540 - 44032: 0xB6C0, + 46541 - 44032: 0xB6C1, + 46542 - 44032: 0x8BD2, + 46543 - 44032: 0xB6C2, + 46544 - 44032: 0xB6C3, + 46545 - 44032: 0xB6C4, + 46546 - 44032: 0x8BD3, + 46547 - 44032: 0x8BD4, + 46548 - 44032: 0x8BD5, + 46549 - 44032: 0x8BD6, + 46550 - 44032: 0x8BD7, + 46551 - 44032: 0x8BD8, + 46552 - 44032: 0xB6C5, + 46553 - 44032: 0x8BD9, + 46554 - 44032: 0x8BDA, + 46555 - 44032: 0x8BDB, + 46556 - 44032: 0x8BDC, + 46557 - 44032: 0x8BDD, + 46558 - 44032: 0x8BDE, + 46559 - 44032: 0x8BDF, + 46560 - 44032: 0x8BE0, + 46561 - 44032: 0x8BE1, + 46562 - 44032: 0x8BE2, + 46563 - 44032: 0x8BE3, + 46564 - 44032: 0x8BE4, + 46565 - 44032: 0x8BE5, + 46566 - 44032: 0x8BE6, + 46567 - 44032: 0x8BE7, + 46568 - 44032: 0x8BE8, + 46569 - 44032: 0x8BE9, + 46570 - 44032: 0x8BEA, + 46571 - 44032: 0x8BEB, + 46572 - 44032: 0xB6C6, + 46573 - 44032: 0x8BEC, + 46574 - 44032: 0x8BED, + 46575 - 44032: 0x8BEE, + 46576 - 44032: 0x8BEF, + 46577 - 44032: 0x8BF0, + 46578 - 44032: 0x8BF1, + 46579 - 44032: 0x8BF2, + 46580 - 44032: 0x8BF3, + 46581 - 44032: 0x8BF4, + 46582 - 44032: 0x8BF5, + 46583 - 44032: 0x8BF6, + 46584 - 44032: 0x8BF7, + 46585 - 44032: 0x8BF8, + 46586 - 44032: 0x8BF9, + 46587 - 44032: 0x8BFA, + 46588 - 44032: 0x8BFB, + 46589 - 44032: 0x8BFC, + 46590 - 44032: 0x8BFD, + 46591 - 44032: 0x8BFE, + 46592 - 44032: 0x8C41, + 46593 - 44032: 0x8C42, + 46594 - 44032: 0x8C43, + 46595 - 44032: 0x8C44, + 46596 - 44032: 0x8C45, + 46597 - 44032: 0x8C46, + 46598 - 44032: 0x8C47, + 46599 - 44032: 0x8C48, + 46600 - 44032: 0x8C49, + 46601 - 44032: 0x8C4A, + 46602 - 44032: 0x8C4B, + 46603 - 44032: 0x8C4C, + 46604 - 44032: 0x8C4D, + 46605 - 44032: 0x8C4E, + 46606 - 44032: 0x8C4F, + 46607 - 44032: 0x8C50, + 46608 - 44032: 0xB6C7, + 46609 - 44032: 0xB6C8, + 46610 - 44032: 0x8C51, + 46611 - 44032: 0x8C52, + 46612 - 44032: 0xB6C9, + 46613 - 44032: 0x8C53, + 46614 - 44032: 0x8C54, + 46615 - 44032: 0x8C55, + 46616 - 44032: 0xB6CA, + 46617 - 44032: 0x8C56, + 46618 - 44032: 0x8C57, + 46619 - 44032: 0x8C58, + 46620 - 44032: 0x8C59, + 46621 - 44032: 0x8C5A, + 46622 - 44032: 0x8C61, + 46623 - 44032: 0x8C62, + 46624 - 44032: 0x8C63, + 46625 - 44032: 0x8C64, + 46626 - 44032: 0x8C65, + 46627 - 44032: 0x8C66, + 46628 - 44032: 0x8C67, + 46629 - 44032: 0xB6CB, + 46630 - 44032: 0x8C68, + 46631 - 44032: 0x8C69, + 46632 - 44032: 0x8C6A, + 46633 - 44032: 0x8C6B, + 46634 - 44032: 0x8C6C, + 46635 - 44032: 0x8C6D, + 46636 - 44032: 0xB6CC, + 46637 - 44032: 0x8C6E, + 46638 - 44032: 0x8C6F, + 46639 - 44032: 0x8C70, + 46640 - 44032: 0x8C71, + 46641 - 44032: 0x8C72, + 46642 - 44032: 0x8C73, + 46643 - 44032: 0x8C74, + 46644 - 44032: 0xB6CD, + 46645 - 44032: 0x8C75, + 46646 - 44032: 0x8C76, + 46647 - 44032: 0x8C77, + 46648 - 44032: 0x8C78, + 46649 - 44032: 0x8C79, + 46650 - 44032: 0x8C7A, + 46651 - 44032: 0x8C81, + 46652 - 44032: 0x8C82, + 46653 - 44032: 0x8C83, + 46654 - 44032: 0x8C84, + 46655 - 44032: 0x8C85, + 46656 - 44032: 0x8C86, + 46657 - 44032: 0x8C87, + 46658 - 44032: 0x8C88, + 46659 - 44032: 0x8C89, + 46660 - 44032: 0x8C8A, + 46661 - 44032: 0x8C8B, + 46662 - 44032: 0x8C8C, + 46663 - 44032: 0x8C8D, + 46664 - 44032: 0xB6CE, + 46665 - 44032: 0x8C8E, + 46666 - 44032: 0x8C8F, + 46667 - 44032: 0x8C90, + 46668 - 44032: 0x8C91, + 46669 - 44032: 0x8C92, + 46670 - 44032: 0x8C93, + 46671 - 44032: 0x8C94, + 46672 - 44032: 0x8C95, + 46673 - 44032: 0x8C96, + 46674 - 44032: 0x8C97, + 46675 - 44032: 0x8C98, + 46676 - 44032: 0x8C99, + 46677 - 44032: 0x8C9A, + 46678 - 44032: 0x8C9B, + 46679 - 44032: 0x8C9C, + 46680 - 44032: 0x8C9D, + 46681 - 44032: 0x8C9E, + 46682 - 44032: 0x8C9F, + 46683 - 44032: 0x8CA0, + 46684 - 44032: 0x8CA1, + 46685 - 44032: 0x8CA2, + 46686 - 44032: 0x8CA3, + 46687 - 44032: 0x8CA4, + 46688 - 44032: 0x8CA5, + 46689 - 44032: 0x8CA6, + 46690 - 44032: 0x8CA7, + 46691 - 44032: 0x8CA8, + 46692 - 44032: 0xB6CF, + 46693 - 44032: 0x8CA9, + 46694 - 44032: 0x8CAA, + 46695 - 44032: 0x8CAB, + 46696 - 44032: 0xB6D0, + 46697 - 44032: 0x8CAC, + 46698 - 44032: 0x8CAD, + 46699 - 44032: 0x8CAE, + 46700 - 44032: 0x8CAF, + 46701 - 44032: 0x8CB0, + 46702 - 44032: 0x8CB1, + 46703 - 44032: 0x8CB2, + 46704 - 44032: 0x8CB3, + 46705 - 44032: 0x8CB4, + 46706 - 44032: 0x8CB5, + 46707 - 44032: 0x8CB6, + 46708 - 44032: 0x8CB7, + 46709 - 44032: 0x8CB8, + 46710 - 44032: 0x8CB9, + 46711 - 44032: 0x8CBA, + 46712 - 44032: 0x8CBB, + 46713 - 44032: 0x8CBC, + 46714 - 44032: 0x8CBD, + 46715 - 44032: 0x8CBE, + 46716 - 44032: 0x8CBF, + 46717 - 44032: 0x8CC0, + 46718 - 44032: 0x8CC1, + 46719 - 44032: 0x8CC2, + 46720 - 44032: 0x8CC3, + 46721 - 44032: 0x8CC4, + 46722 - 44032: 0x8CC5, + 46723 - 44032: 0x8CC6, + 46724 - 44032: 0x8CC7, + 46725 - 44032: 0x8CC8, + 46726 - 44032: 0x8CC9, + 46727 - 44032: 0x8CCA, + 46728 - 44032: 0x8CCB, + 46729 - 44032: 0x8CCC, + 46730 - 44032: 0x8CCD, + 46731 - 44032: 0x8CCE, + 46732 - 44032: 0x8CCF, + 46733 - 44032: 0x8CD0, + 46734 - 44032: 0x8CD1, + 46735 - 44032: 0x8CD2, + 46736 - 44032: 0x8CD3, + 46737 - 44032: 0x8CD4, + 46738 - 44032: 0x8CD5, + 46739 - 44032: 0x8CD6, + 46740 - 44032: 0x8CD7, + 46741 - 44032: 0x8CD8, + 46742 - 44032: 0x8CD9, + 46743 - 44032: 0x8CDA, + 46744 - 44032: 0x8CDB, + 46745 - 44032: 0x8CDC, + 46746 - 44032: 0x8CDD, + 46747 - 44032: 0x8CDE, + 46748 - 44032: 0xB6D1, + 46749 - 44032: 0xB6D2, + 46750 - 44032: 0x8CDF, + 46751 - 44032: 0x8CE0, + 46752 - 44032: 0xB6D3, + 46753 - 44032: 0x8CE1, + 46754 - 44032: 0x8CE2, + 46755 - 44032: 0x8CE3, + 46756 - 44032: 0xB6D4, + 46757 - 44032: 0x8CE4, + 46758 - 44032: 0x8CE5, + 46759 - 44032: 0x8CE6, + 46760 - 44032: 0x8CE7, + 46761 - 44032: 0x8CE8, + 46762 - 44032: 0x8CE9, + 46763 - 44032: 0xB6D5, + 46764 - 44032: 0xB6D6, + 46765 - 44032: 0x8CEA, + 46766 - 44032: 0x8CEB, + 46767 - 44032: 0x8CEC, + 46768 - 44032: 0x8CED, + 46769 - 44032: 0xB6D7, + 46770 - 44032: 0x8CEE, + 46771 - 44032: 0x8CEF, + 46772 - 44032: 0x8CF0, + 46773 - 44032: 0x8CF1, + 46774 - 44032: 0x8CF2, + 46775 - 44032: 0x8CF3, + 46776 - 44032: 0x8CF4, + 46777 - 44032: 0x8CF5, + 46778 - 44032: 0x8CF6, + 46779 - 44032: 0x8CF7, + 46780 - 44032: 0x8CF8, + 46781 - 44032: 0x8CF9, + 46782 - 44032: 0x8CFA, + 46783 - 44032: 0x8CFB, + 46784 - 44032: 0x8CFC, + 46785 - 44032: 0x8CFD, + 46786 - 44032: 0x8CFE, + 46787 - 44032: 0x8D41, + 46788 - 44032: 0x8D42, + 46789 - 44032: 0x8D43, + 46790 - 44032: 0x8D44, + 46791 - 44032: 0x8D45, + 46792 - 44032: 0x8D46, + 46793 - 44032: 0x8D47, + 46794 - 44032: 0x8D48, + 46795 - 44032: 0x8D49, + 46796 - 44032: 0x8D4A, + 46797 - 44032: 0x8D4B, + 46798 - 44032: 0x8D4C, + 46799 - 44032: 0x8D4D, + 46800 - 44032: 0x8D4E, + 46801 - 44032: 0x8D4F, + 46802 - 44032: 0x8D50, + 46803 - 44032: 0x8D51, + 46804 - 44032: 0xB6D8, + 46805 - 44032: 0x8D52, + 46806 - 44032: 0x8D53, + 46807 - 44032: 0x8D54, + 46808 - 44032: 0x8D55, + 46809 - 44032: 0x8D56, + 46810 - 44032: 0x8D57, + 46811 - 44032: 0x8D58, + 46812 - 44032: 0x8D59, + 46813 - 44032: 0x8D5A, + 46814 - 44032: 0x8D61, + 46815 - 44032: 0x8D62, + 46816 - 44032: 0x8D63, + 46817 - 44032: 0x8D64, + 46818 - 44032: 0x8D65, + 46819 - 44032: 0x8D66, + 46820 - 44032: 0x8D67, + 46821 - 44032: 0x8D68, + 46822 - 44032: 0x8D69, + 46823 - 44032: 0x8D6A, + 46824 - 44032: 0x8D6B, + 46825 - 44032: 0x8D6C, + 46826 - 44032: 0x8D6D, + 46827 - 44032: 0x8D6E, + 46828 - 44032: 0x8D6F, + 46829 - 44032: 0x8D70, + 46830 - 44032: 0x8D71, + 46831 - 44032: 0x8D72, + 46832 - 44032: 0xB6D9, + 46833 - 44032: 0x8D73, + 46834 - 44032: 0x8D74, + 46835 - 44032: 0x8D75, + 46836 - 44032: 0xB6DA, + 46837 - 44032: 0x8D76, + 46838 - 44032: 0x8D77, + 46839 - 44032: 0x8D78, + 46840 - 44032: 0xB6DB, + 46841 - 44032: 0x8D79, + 46842 - 44032: 0x8D7A, + 46843 - 44032: 0x8D81, + 46844 - 44032: 0x8D82, + 46845 - 44032: 0x8D83, + 46846 - 44032: 0x8D84, + 46847 - 44032: 0x8D85, + 46848 - 44032: 0xB6DC, + 46849 - 44032: 0xB6DD, + 46850 - 44032: 0x8D86, + 46851 - 44032: 0x8D87, + 46852 - 44032: 0x8D88, + 46853 - 44032: 0xB6DE, + 46854 - 44032: 0x8D89, + 46855 - 44032: 0x8D8A, + 46856 - 44032: 0x8D8B, + 46857 - 44032: 0x8D8C, + 46858 - 44032: 0x8D8D, + 46859 - 44032: 0x8D8E, + 46860 - 44032: 0x8D8F, + 46861 - 44032: 0x8D90, + 46862 - 44032: 0x8D91, + 46863 - 44032: 0x8D92, + 46864 - 44032: 0x8D93, + 46865 - 44032: 0x8D94, + 46866 - 44032: 0x8D95, + 46867 - 44032: 0x8D96, + 46868 - 44032: 0x8D97, + 46869 - 44032: 0x8D98, + 46870 - 44032: 0x8D99, + 46871 - 44032: 0x8D9A, + 46872 - 44032: 0x8D9B, + 46873 - 44032: 0x8D9C, + 46874 - 44032: 0x8D9D, + 46875 - 44032: 0x8D9E, + 46876 - 44032: 0x8D9F, + 46877 - 44032: 0x8DA0, + 46878 - 44032: 0x8DA1, + 46879 - 44032: 0x8DA2, + 46880 - 44032: 0x8DA3, + 46881 - 44032: 0x8DA4, + 46882 - 44032: 0x8DA5, + 46883 - 44032: 0x8DA6, + 46884 - 44032: 0x8DA7, + 46885 - 44032: 0x8DA8, + 46886 - 44032: 0x8DA9, + 46887 - 44032: 0x8DAA, + 46888 - 44032: 0xB6DF, + 46889 - 44032: 0xB6E0, + 46890 - 44032: 0x8DAB, + 46891 - 44032: 0x8DAC, + 46892 - 44032: 0xB6E1, + 46893 - 44032: 0x8DAD, + 46894 - 44032: 0x8DAE, + 46895 - 44032: 0xB6E2, + 46896 - 44032: 0xB6E3, + 46897 - 44032: 0x8DAF, + 46898 - 44032: 0x8DB0, + 46899 - 44032: 0x8DB1, + 46900 - 44032: 0x8DB2, + 46901 - 44032: 0x8DB3, + 46902 - 44032: 0x8DB4, + 46903 - 44032: 0x8DB5, + 46904 - 44032: 0xB6E4, + 46905 - 44032: 0xB6E5, + 46906 - 44032: 0x8DB6, + 46907 - 44032: 0xB6E6, + 46908 - 44032: 0x8DB7, + 46909 - 44032: 0x8DB8, + 46910 - 44032: 0x8DB9, + 46911 - 44032: 0x8DBA, + 46912 - 44032: 0x8DBB, + 46913 - 44032: 0x8DBC, + 46914 - 44032: 0x8DBD, + 46915 - 44032: 0x8DBE, + 46916 - 44032: 0xB6E7, + 46917 - 44032: 0x8DBF, + 46918 - 44032: 0x8DC0, + 46919 - 44032: 0x8DC1, + 46920 - 44032: 0xB6E8, + 46921 - 44032: 0x8DC2, + 46922 - 44032: 0x8DC3, + 46923 - 44032: 0x8DC4, + 46924 - 44032: 0xB6E9, + 46925 - 44032: 0x8DC5, + 46926 - 44032: 0x8DC6, + 46927 - 44032: 0x8DC7, + 46928 - 44032: 0x8DC8, + 46929 - 44032: 0x8DC9, + 46930 - 44032: 0x8DCA, + 46931 - 44032: 0x8DCB, + 46932 - 44032: 0xB6EA, + 46933 - 44032: 0xB6EB, + 46934 - 44032: 0x8DCC, + 46935 - 44032: 0x8DCD, + 46936 - 44032: 0x8DCE, + 46937 - 44032: 0x8DCF, + 46938 - 44032: 0x8DD0, + 46939 - 44032: 0x8DD1, + 46940 - 44032: 0x8DD2, + 46941 - 44032: 0x8DD3, + 46942 - 44032: 0x8DD4, + 46943 - 44032: 0x8DD5, + 46944 - 44032: 0xB6EC, + 46945 - 44032: 0x8DD6, + 46946 - 44032: 0x8DD7, + 46947 - 44032: 0x8DD8, + 46948 - 44032: 0xB6ED, + 46949 - 44032: 0x8DD9, + 46950 - 44032: 0x8DDA, + 46951 - 44032: 0x8DDB, + 46952 - 44032: 0xB6EE, + 46953 - 44032: 0x8DDC, + 46954 - 44032: 0x8DDD, + 46955 - 44032: 0x8DDE, + 46956 - 44032: 0x8DDF, + 46957 - 44032: 0x8DE0, + 46958 - 44032: 0x8DE1, + 46959 - 44032: 0x8DE2, + 46960 - 44032: 0xB6EF, + 46961 - 44032: 0xB6F0, + 46962 - 44032: 0x8DE3, + 46963 - 44032: 0xB6F1, + 46964 - 44032: 0x8DE4, + 46965 - 44032: 0xB6F2, + 46966 - 44032: 0x8DE5, + 46967 - 44032: 0x8DE6, + 46968 - 44032: 0x8DE7, + 46969 - 44032: 0x8DE8, + 46970 - 44032: 0x8DE9, + 46971 - 44032: 0x8DEA, + 46972 - 44032: 0xB6F3, + 46973 - 44032: 0xB6F4, + 46974 - 44032: 0x8DEB, + 46975 - 44032: 0x8DEC, + 46976 - 44032: 0xB6F5, + 46977 - 44032: 0x8DED, + 46978 - 44032: 0x8DEE, + 46979 - 44032: 0x8DEF, + 46980 - 44032: 0xB6F6, + 46981 - 44032: 0x8DF0, + 46982 - 44032: 0x8DF1, + 46983 - 44032: 0x8DF2, + 46984 - 44032: 0x8DF3, + 46985 - 44032: 0x8DF4, + 46986 - 44032: 0x8DF5, + 46987 - 44032: 0x8DF6, + 46988 - 44032: 0xB6F7, + 46989 - 44032: 0xB6F8, + 46990 - 44032: 0x8DF7, + 46991 - 44032: 0xB6F9, + 46992 - 44032: 0xB6FA, + 46993 - 44032: 0xB6FB, + 46994 - 44032: 0xB6FC, + 46995 - 44032: 0x8DF8, + 46996 - 44032: 0x8DF9, + 46997 - 44032: 0x8DFA, + 46998 - 44032: 0xB6FD, + 46999 - 44032: 0xB6FE, + 47000 - 44032: 0xB7A1, + 47001 - 44032: 0xB7A2, + 47002 - 44032: 0x8DFB, + 47003 - 44032: 0x8DFC, + 47004 - 44032: 0xB7A3, + 47005 - 44032: 0x8DFD, + 47006 - 44032: 0x8DFE, + 47007 - 44032: 0x8E41, + 47008 - 44032: 0xB7A4, + 47009 - 44032: 0x8E42, + 47010 - 44032: 0x8E43, + 47011 - 44032: 0x8E44, + 47012 - 44032: 0x8E45, + 47013 - 44032: 0x8E46, + 47014 - 44032: 0x8E47, + 47015 - 44032: 0x8E48, + 47016 - 44032: 0xB7A5, + 47017 - 44032: 0xB7A6, + 47018 - 44032: 0x8E49, + 47019 - 44032: 0xB7A7, + 47020 - 44032: 0xB7A8, + 47021 - 44032: 0xB7A9, + 47022 - 44032: 0x8E4A, + 47023 - 44032: 0x8E4B, + 47024 - 44032: 0x8E4C, + 47025 - 44032: 0x8E4D, + 47026 - 44032: 0x8E4E, + 47027 - 44032: 0x8E4F, + 47028 - 44032: 0xB7AA, + 47029 - 44032: 0xB7AB, + 47030 - 44032: 0x8E50, + 47031 - 44032: 0x8E51, + 47032 - 44032: 0xB7AC, + 47033 - 44032: 0x8E52, + 47034 - 44032: 0x8E53, + 47035 - 44032: 0x8E54, + 47036 - 44032: 0x8E55, + 47037 - 44032: 0x8E56, + 47038 - 44032: 0x8E57, + 47039 - 44032: 0x8E58, + 47040 - 44032: 0x8E59, + 47041 - 44032: 0x8E5A, + 47042 - 44032: 0x8E61, + 47043 - 44032: 0x8E62, + 47044 - 44032: 0x8E63, + 47045 - 44032: 0x8E64, + 47046 - 44032: 0x8E65, + 47047 - 44032: 0xB7AD, + 47048 - 44032: 0x8E66, + 47049 - 44032: 0xB7AE, + 47050 - 44032: 0x8E67, + 47051 - 44032: 0x8E68, + 47052 - 44032: 0x8E69, + 47053 - 44032: 0x8E6A, + 47054 - 44032: 0x8E6B, + 47055 - 44032: 0x8E6C, + 47056 - 44032: 0x8E6D, + 47057 - 44032: 0x8E6E, + 47058 - 44032: 0x8E6F, + 47059 - 44032: 0x8E70, + 47060 - 44032: 0x8E71, + 47061 - 44032: 0x8E72, + 47062 - 44032: 0x8E73, + 47063 - 44032: 0x8E74, + 47064 - 44032: 0x8E75, + 47065 - 44032: 0x8E76, + 47066 - 44032: 0x8E77, + 47067 - 44032: 0x8E78, + 47068 - 44032: 0x8E79, + 47069 - 44032: 0x8E7A, + 47070 - 44032: 0x8E81, + 47071 - 44032: 0x8E82, + 47072 - 44032: 0x8E83, + 47073 - 44032: 0x8E84, + 47074 - 44032: 0x8E85, + 47075 - 44032: 0x8E86, + 47076 - 44032: 0x8E87, + 47077 - 44032: 0x8E88, + 47078 - 44032: 0x8E89, + 47079 - 44032: 0x8E8A, + 47080 - 44032: 0x8E8B, + 47081 - 44032: 0x8E8C, + 47082 - 44032: 0x8E8D, + 47083 - 44032: 0x8E8E, + 47084 - 44032: 0xB7AF, + 47085 - 44032: 0xB7B0, + 47086 - 44032: 0x8E8F, + 47087 - 44032: 0x8E90, + 47088 - 44032: 0xB7B1, + 47089 - 44032: 0x8E91, + 47090 - 44032: 0x8E92, + 47091 - 44032: 0x8E93, + 47092 - 44032: 0xB7B2, + 47093 - 44032: 0x8E94, + 47094 - 44032: 0x8E95, + 47095 - 44032: 0x8E96, + 47096 - 44032: 0x8E97, + 47097 - 44032: 0x8E98, + 47098 - 44032: 0x8E99, + 47099 - 44032: 0x8E9A, + 47100 - 44032: 0xB7B3, + 47101 - 44032: 0xB7B4, + 47102 - 44032: 0x8E9B, + 47103 - 44032: 0xB7B5, + 47104 - 44032: 0xB7B6, + 47105 - 44032: 0xB7B7, + 47106 - 44032: 0x8E9C, + 47107 - 44032: 0x8E9D, + 47108 - 44032: 0x8E9E, + 47109 - 44032: 0x8E9F, + 47110 - 44032: 0x8EA0, + 47111 - 44032: 0xB7B8, + 47112 - 44032: 0xB7B9, + 47113 - 44032: 0xB7BA, + 47114 - 44032: 0x8EA1, + 47115 - 44032: 0x8EA2, + 47116 - 44032: 0xB7BB, + 47117 - 44032: 0x8EA3, + 47118 - 44032: 0x8EA4, + 47119 - 44032: 0x8EA5, + 47120 - 44032: 0xB7BC, + 47121 - 44032: 0x8EA6, + 47122 - 44032: 0x8EA7, + 47123 - 44032: 0x8EA8, + 47124 - 44032: 0x8EA9, + 47125 - 44032: 0x8EAA, + 47126 - 44032: 0x8EAB, + 47127 - 44032: 0x8EAC, + 47128 - 44032: 0xB7BD, + 47129 - 44032: 0xB7BE, + 47130 - 44032: 0x8EAD, + 47131 - 44032: 0xB7BF, + 47132 - 44032: 0x8EAE, + 47133 - 44032: 0xB7C0, + 47134 - 44032: 0x8EAF, + 47135 - 44032: 0x8EB0, + 47136 - 44032: 0x8EB1, + 47137 - 44032: 0x8EB2, + 47138 - 44032: 0x8EB3, + 47139 - 44032: 0x8EB4, + 47140 - 44032: 0xB7C1, + 47141 - 44032: 0xB7C2, + 47142 - 44032: 0x8EB5, + 47143 - 44032: 0x8EB6, + 47144 - 44032: 0xB7C3, + 47145 - 44032: 0x8EB7, + 47146 - 44032: 0x8EB8, + 47147 - 44032: 0x8EB9, + 47148 - 44032: 0xB7C4, + 47149 - 44032: 0x8EBA, + 47150 - 44032: 0x8EBB, + 47151 - 44032: 0x8EBC, + 47152 - 44032: 0x8EBD, + 47153 - 44032: 0x8EBE, + 47154 - 44032: 0x8EBF, + 47155 - 44032: 0x8EC0, + 47156 - 44032: 0xB7C5, + 47157 - 44032: 0xB7C6, + 47158 - 44032: 0x8EC1, + 47159 - 44032: 0xB7C7, + 47160 - 44032: 0xB7C8, + 47161 - 44032: 0xB7C9, + 47162 - 44032: 0x8EC2, + 47163 - 44032: 0x8EC3, + 47164 - 44032: 0x8EC4, + 47165 - 44032: 0x8EC5, + 47166 - 44032: 0x8EC6, + 47167 - 44032: 0x8EC7, + 47168 - 44032: 0xB7CA, + 47169 - 44032: 0x8EC8, + 47170 - 44032: 0x8EC9, + 47171 - 44032: 0x8ECA, + 47172 - 44032: 0xB7CB, + 47173 - 44032: 0x8ECB, + 47174 - 44032: 0x8ECC, + 47175 - 44032: 0x8ECD, + 47176 - 44032: 0x8ECE, + 47177 - 44032: 0x8ECF, + 47178 - 44032: 0x8ED0, + 47179 - 44032: 0x8ED1, + 47180 - 44032: 0x8ED2, + 47181 - 44032: 0x8ED3, + 47182 - 44032: 0x8ED4, + 47183 - 44032: 0x8ED5, + 47184 - 44032: 0x8ED6, + 47185 - 44032: 0xB7CC, + 47186 - 44032: 0x8ED7, + 47187 - 44032: 0xB7CD, + 47188 - 44032: 0x8ED8, + 47189 - 44032: 0x8ED9, + 47190 - 44032: 0x8EDA, + 47191 - 44032: 0x8EDB, + 47192 - 44032: 0x8EDC, + 47193 - 44032: 0x8EDD, + 47194 - 44032: 0x8EDE, + 47195 - 44032: 0x8EDF, + 47196 - 44032: 0xB7CE, + 47197 - 44032: 0xB7CF, + 47198 - 44032: 0x8EE0, + 47199 - 44032: 0x8EE1, + 47200 - 44032: 0xB7D0, + 47201 - 44032: 0x8EE2, + 47202 - 44032: 0x8EE3, + 47203 - 44032: 0x8EE4, + 47204 - 44032: 0xB7D1, + 47205 - 44032: 0x8EE5, + 47206 - 44032: 0x8EE6, + 47207 - 44032: 0x8EE7, + 47208 - 44032: 0x8EE8, + 47209 - 44032: 0x8EE9, + 47210 - 44032: 0x8EEA, + 47211 - 44032: 0x8EEB, + 47212 - 44032: 0xB7D2, + 47213 - 44032: 0xB7D3, + 47214 - 44032: 0x8EEC, + 47215 - 44032: 0xB7D4, + 47216 - 44032: 0x8EED, + 47217 - 44032: 0xB7D5, + 47218 - 44032: 0x8EEE, + 47219 - 44032: 0x8EEF, + 47220 - 44032: 0x8EF0, + 47221 - 44032: 0x8EF1, + 47222 - 44032: 0x8EF2, + 47223 - 44032: 0x8EF3, + 47224 - 44032: 0xB7D6, + 47225 - 44032: 0x8EF4, + 47226 - 44032: 0x8EF5, + 47227 - 44032: 0x8EF6, + 47228 - 44032: 0xB7D7, + 47229 - 44032: 0x8EF7, + 47230 - 44032: 0x8EF8, + 47231 - 44032: 0x8EF9, + 47232 - 44032: 0x8EFA, + 47233 - 44032: 0x8EFB, + 47234 - 44032: 0x8EFC, + 47235 - 44032: 0x8EFD, + 47236 - 44032: 0x8EFE, + 47237 - 44032: 0x8F41, + 47238 - 44032: 0x8F42, + 47239 - 44032: 0x8F43, + 47240 - 44032: 0x8F44, + 47241 - 44032: 0x8F45, + 47242 - 44032: 0x8F46, + 47243 - 44032: 0x8F47, + 47244 - 44032: 0x8F48, + 47245 - 44032: 0xB7D8, + 47246 - 44032: 0x8F49, + 47247 - 44032: 0x8F4A, + 47248 - 44032: 0x8F4B, + 47249 - 44032: 0x8F4C, + 47250 - 44032: 0x8F4D, + 47251 - 44032: 0x8F4E, + 47252 - 44032: 0x8F4F, + 47253 - 44032: 0x8F50, + 47254 - 44032: 0x8F51, + 47255 - 44032: 0x8F52, + 47256 - 44032: 0x8F53, + 47257 - 44032: 0x8F54, + 47258 - 44032: 0x8F55, + 47259 - 44032: 0x8F56, + 47260 - 44032: 0x8F57, + 47261 - 44032: 0x8F58, + 47262 - 44032: 0x8F59, + 47263 - 44032: 0x8F5A, + 47264 - 44032: 0x8F61, + 47265 - 44032: 0x8F62, + 47266 - 44032: 0x8F63, + 47267 - 44032: 0x8F64, + 47268 - 44032: 0x8F65, + 47269 - 44032: 0x8F66, + 47270 - 44032: 0x8F67, + 47271 - 44032: 0x8F68, + 47272 - 44032: 0xB7D9, + 47273 - 44032: 0x8F69, + 47274 - 44032: 0x8F6A, + 47275 - 44032: 0x8F6B, + 47276 - 44032: 0x8F6C, + 47277 - 44032: 0x8F6D, + 47278 - 44032: 0x8F6E, + 47279 - 44032: 0x8F6F, + 47280 - 44032: 0xB7DA, + 47281 - 44032: 0x8F70, + 47282 - 44032: 0x8F71, + 47283 - 44032: 0x8F72, + 47284 - 44032: 0xB7DB, + 47285 - 44032: 0x8F73, + 47286 - 44032: 0x8F74, + 47287 - 44032: 0x8F75, + 47288 - 44032: 0xB7DC, + 47289 - 44032: 0x8F76, + 47290 - 44032: 0x8F77, + 47291 - 44032: 0x8F78, + 47292 - 44032: 0x8F79, + 47293 - 44032: 0x8F7A, + 47294 - 44032: 0x8F81, + 47295 - 44032: 0x8F82, + 47296 - 44032: 0xB7DD, + 47297 - 44032: 0xB7DE, + 47298 - 44032: 0x8F83, + 47299 - 44032: 0xB7DF, + 47300 - 44032: 0x8F84, + 47301 - 44032: 0xB7E0, + 47302 - 44032: 0x8F85, + 47303 - 44032: 0x8F86, + 47304 - 44032: 0x8F87, + 47305 - 44032: 0x8F88, + 47306 - 44032: 0x8F89, + 47307 - 44032: 0x8F8A, + 47308 - 44032: 0xB7E1, + 47309 - 44032: 0x8F8B, + 47310 - 44032: 0x8F8C, + 47311 - 44032: 0x8F8D, + 47312 - 44032: 0xB7E2, + 47313 - 44032: 0x8F8E, + 47314 - 44032: 0x8F8F, + 47315 - 44032: 0x8F90, + 47316 - 44032: 0xB7E3, + 47317 - 44032: 0x8F91, + 47318 - 44032: 0x8F92, + 47319 - 44032: 0x8F93, + 47320 - 44032: 0x8F94, + 47321 - 44032: 0x8F95, + 47322 - 44032: 0x8F96, + 47323 - 44032: 0x8F97, + 47324 - 44032: 0x8F98, + 47325 - 44032: 0xB7E4, + 47326 - 44032: 0x8F99, + 47327 - 44032: 0xB7E5, + 47328 - 44032: 0x8F9A, + 47329 - 44032: 0xB7E6, + 47330 - 44032: 0x8F9B, + 47331 - 44032: 0x8F9C, + 47332 - 44032: 0x8F9D, + 47333 - 44032: 0x8F9E, + 47334 - 44032: 0x8F9F, + 47335 - 44032: 0x8FA0, + 47336 - 44032: 0xB7E7, + 47337 - 44032: 0xB7E8, + 47338 - 44032: 0x8FA1, + 47339 - 44032: 0x8FA2, + 47340 - 44032: 0xB7E9, + 47341 - 44032: 0x8FA3, + 47342 - 44032: 0x8FA4, + 47343 - 44032: 0x8FA5, + 47344 - 44032: 0xB7EA, + 47345 - 44032: 0x8FA6, + 47346 - 44032: 0x8FA7, + 47347 - 44032: 0x8FA8, + 47348 - 44032: 0x8FA9, + 47349 - 44032: 0x8FAA, + 47350 - 44032: 0x8FAB, + 47351 - 44032: 0x8FAC, + 47352 - 44032: 0xB7EB, + 47353 - 44032: 0xB7EC, + 47354 - 44032: 0x8FAD, + 47355 - 44032: 0xB7ED, + 47356 - 44032: 0x8FAE, + 47357 - 44032: 0xB7EE, + 47358 - 44032: 0x8FAF, + 47359 - 44032: 0x8FB0, + 47360 - 44032: 0x8FB1, + 47361 - 44032: 0x8FB2, + 47362 - 44032: 0x8FB3, + 47363 - 44032: 0x8FB4, + 47364 - 44032: 0xB7EF, + 47365 - 44032: 0x8FB5, + 47366 - 44032: 0x8FB6, + 47367 - 44032: 0x8FB7, + 47368 - 44032: 0x8FB8, + 47369 - 44032: 0x8FB9, + 47370 - 44032: 0x8FBA, + 47371 - 44032: 0x8FBB, + 47372 - 44032: 0x8FBC, + 47373 - 44032: 0x8FBD, + 47374 - 44032: 0x8FBE, + 47375 - 44032: 0x8FBF, + 47376 - 44032: 0x8FC0, + 47377 - 44032: 0x8FC1, + 47378 - 44032: 0x8FC2, + 47379 - 44032: 0x8FC3, + 47380 - 44032: 0x8FC4, + 47381 - 44032: 0x8FC5, + 47382 - 44032: 0x8FC6, + 47383 - 44032: 0x8FC7, + 47384 - 44032: 0xB7F0, + 47385 - 44032: 0x8FC8, + 47386 - 44032: 0x8FC9, + 47387 - 44032: 0x8FCA, + 47388 - 44032: 0x8FCB, + 47389 - 44032: 0x8FCC, + 47390 - 44032: 0x8FCD, + 47391 - 44032: 0x8FCE, + 47392 - 44032: 0xB7F1, + 47393 - 44032: 0x8FCF, + 47394 - 44032: 0x8FD0, + 47395 - 44032: 0x8FD1, + 47396 - 44032: 0x8FD2, + 47397 - 44032: 0x8FD3, + 47398 - 44032: 0x8FD4, + 47399 - 44032: 0x8FD5, + 47400 - 44032: 0x8FD6, + 47401 - 44032: 0x8FD7, + 47402 - 44032: 0x8FD8, + 47403 - 44032: 0x8FD9, + 47404 - 44032: 0x8FDA, + 47405 - 44032: 0x8FDB, + 47406 - 44032: 0x8FDC, + 47407 - 44032: 0x8FDD, + 47408 - 44032: 0x8FDE, + 47409 - 44032: 0x8FDF, + 47410 - 44032: 0x8FE0, + 47411 - 44032: 0x8FE1, + 47412 - 44032: 0x8FE2, + 47413 - 44032: 0x8FE3, + 47414 - 44032: 0x8FE4, + 47415 - 44032: 0x8FE5, + 47416 - 44032: 0x8FE6, + 47417 - 44032: 0x8FE7, + 47418 - 44032: 0x8FE8, + 47419 - 44032: 0x8FE9, + 47420 - 44032: 0xB7F2, + 47421 - 44032: 0xB7F3, + 47422 - 44032: 0x8FEA, + 47423 - 44032: 0x8FEB, + 47424 - 44032: 0xB7F4, + 47425 - 44032: 0x8FEC, + 47426 - 44032: 0x8FED, + 47427 - 44032: 0x8FEE, + 47428 - 44032: 0xB7F5, + 47429 - 44032: 0x8FEF, + 47430 - 44032: 0x8FF0, + 47431 - 44032: 0x8FF1, + 47432 - 44032: 0x8FF2, + 47433 - 44032: 0x8FF3, + 47434 - 44032: 0x8FF4, + 47435 - 44032: 0x8FF5, + 47436 - 44032: 0xB7F6, + 47437 - 44032: 0x8FF6, + 47438 - 44032: 0x8FF7, + 47439 - 44032: 0xB7F7, + 47440 - 44032: 0x8FF8, + 47441 - 44032: 0xB7F8, + 47442 - 44032: 0x8FF9, + 47443 - 44032: 0x8FFA, + 47444 - 44032: 0x8FFB, + 47445 - 44032: 0x8FFC, + 47446 - 44032: 0x8FFD, + 47447 - 44032: 0x8FFE, + 47448 - 44032: 0xB7F9, + 47449 - 44032: 0xB7FA, + 47450 - 44032: 0x9041, + 47451 - 44032: 0x9042, + 47452 - 44032: 0xB7FB, + 47453 - 44032: 0x9043, + 47454 - 44032: 0x9044, + 47455 - 44032: 0x9045, + 47456 - 44032: 0xB7FC, + 47457 - 44032: 0x9046, + 47458 - 44032: 0x9047, + 47459 - 44032: 0x9048, + 47460 - 44032: 0x9049, + 47461 - 44032: 0x904A, + 47462 - 44032: 0x904B, + 47463 - 44032: 0x904C, + 47464 - 44032: 0xB7FD, + 47465 - 44032: 0xB7FE, + 47466 - 44032: 0x904D, + 47467 - 44032: 0xB8A1, + 47468 - 44032: 0x904E, + 47469 - 44032: 0xB8A2, + 47470 - 44032: 0x904F, + 47471 - 44032: 0x9050, + 47472 - 44032: 0x9051, + 47473 - 44032: 0x9052, + 47474 - 44032: 0x9053, + 47475 - 44032: 0x9054, + 47476 - 44032: 0xB8A3, + 47477 - 44032: 0xB8A4, + 47478 - 44032: 0x9055, + 47479 - 44032: 0x9056, + 47480 - 44032: 0xB8A5, + 47481 - 44032: 0x9057, + 47482 - 44032: 0x9058, + 47483 - 44032: 0x9059, + 47484 - 44032: 0xB8A6, + 47485 - 44032: 0x905A, + 47486 - 44032: 0x9061, + 47487 - 44032: 0x9062, + 47488 - 44032: 0x9063, + 47489 - 44032: 0x9064, + 47490 - 44032: 0x9065, + 47491 - 44032: 0x9066, + 47492 - 44032: 0xB8A7, + 47493 - 44032: 0xB8A8, + 47494 - 44032: 0x9067, + 47495 - 44032: 0xB8A9, + 47496 - 44032: 0x9068, + 47497 - 44032: 0xB8AA, + 47498 - 44032: 0xB8AB, + 47499 - 44032: 0x9069, + 47500 - 44032: 0x906A, + 47501 - 44032: 0xB8AC, + 47502 - 44032: 0xB8AD, + 47503 - 44032: 0x906B, + 47504 - 44032: 0x906C, + 47505 - 44032: 0x906D, + 47506 - 44032: 0x906E, + 47507 - 44032: 0x906F, + 47508 - 44032: 0x9070, + 47509 - 44032: 0x9071, + 47510 - 44032: 0x9072, + 47511 - 44032: 0x9073, + 47512 - 44032: 0x9074, + 47513 - 44032: 0x9075, + 47514 - 44032: 0x9076, + 47515 - 44032: 0x9077, + 47516 - 44032: 0x9078, + 47517 - 44032: 0x9079, + 47518 - 44032: 0x907A, + 47519 - 44032: 0x9081, + 47520 - 44032: 0x9082, + 47521 - 44032: 0x9083, + 47522 - 44032: 0x9084, + 47523 - 44032: 0x9085, + 47524 - 44032: 0x9086, + 47525 - 44032: 0x9087, + 47526 - 44032: 0x9088, + 47527 - 44032: 0x9089, + 47528 - 44032: 0x908A, + 47529 - 44032: 0x908B, + 47530 - 44032: 0x908C, + 47531 - 44032: 0x908D, + 47532 - 44032: 0xB8AE, + 47533 - 44032: 0xB8AF, + 47534 - 44032: 0x908E, + 47535 - 44032: 0x908F, + 47536 - 44032: 0xB8B0, + 47537 - 44032: 0x9090, + 47538 - 44032: 0x9091, + 47539 - 44032: 0x9092, + 47540 - 44032: 0xB8B1, + 47541 - 44032: 0x9093, + 47542 - 44032: 0x9094, + 47543 - 44032: 0x9095, + 47544 - 44032: 0x9096, + 47545 - 44032: 0x9097, + 47546 - 44032: 0x9098, + 47547 - 44032: 0x9099, + 47548 - 44032: 0xB8B2, + 47549 - 44032: 0xB8B3, + 47550 - 44032: 0x909A, + 47551 - 44032: 0xB8B4, + 47552 - 44032: 0x909B, + 47553 - 44032: 0xB8B5, + 47554 - 44032: 0x909C, + 47555 - 44032: 0x909D, + 47556 - 44032: 0x909E, + 47557 - 44032: 0x909F, + 47558 - 44032: 0x90A0, + 47559 - 44032: 0x90A1, + 47560 - 44032: 0xB8B6, + 47561 - 44032: 0xB8B7, + 47562 - 44032: 0x90A2, + 47563 - 44032: 0x90A3, + 47564 - 44032: 0xB8B8, + 47565 - 44032: 0x90A4, + 47566 - 44032: 0xB8B9, + 47567 - 44032: 0xB8BA, + 47568 - 44032: 0xB8BB, + 47569 - 44032: 0xB8BC, + 47570 - 44032: 0xB8BD, + 47571 - 44032: 0x90A5, + 47572 - 44032: 0x90A6, + 47573 - 44032: 0x90A7, + 47574 - 44032: 0x90A8, + 47575 - 44032: 0x90A9, + 47576 - 44032: 0xB8BE, + 47577 - 44032: 0xB8BF, + 47578 - 44032: 0x90AA, + 47579 - 44032: 0xB8C0, + 47580 - 44032: 0x90AB, + 47581 - 44032: 0xB8C1, + 47582 - 44032: 0xB8C2, + 47583 - 44032: 0x90AC, + 47584 - 44032: 0x90AD, + 47585 - 44032: 0xB8C3, + 47586 - 44032: 0x90AE, + 47587 - 44032: 0xB8C4, + 47588 - 44032: 0xB8C5, + 47589 - 44032: 0xB8C6, + 47590 - 44032: 0x90AF, + 47591 - 44032: 0x90B0, + 47592 - 44032: 0xB8C7, + 47593 - 44032: 0x90B1, + 47594 - 44032: 0x90B2, + 47595 - 44032: 0x90B3, + 47596 - 44032: 0xB8C8, + 47597 - 44032: 0x90B4, + 47598 - 44032: 0x90B5, + 47599 - 44032: 0x90B6, + 47600 - 44032: 0x90B7, + 47601 - 44032: 0x90B8, + 47602 - 44032: 0x90B9, + 47603 - 44032: 0x90BA, + 47604 - 44032: 0xB8C9, + 47605 - 44032: 0xB8CA, + 47606 - 44032: 0x90BB, + 47607 - 44032: 0xB8CB, + 47608 - 44032: 0xB8CC, + 47609 - 44032: 0xB8CD, + 47610 - 44032: 0xB8CE, + 47611 - 44032: 0x90BC, + 47612 - 44032: 0x90BD, + 47613 - 44032: 0x90BE, + 47614 - 44032: 0x90BF, + 47615 - 44032: 0x90C0, + 47616 - 44032: 0xB8CF, + 47617 - 44032: 0xB8D0, + 47618 - 44032: 0x90C1, + 47619 - 44032: 0x90C2, + 47620 - 44032: 0x90C3, + 47621 - 44032: 0x90C4, + 47622 - 44032: 0x90C5, + 47623 - 44032: 0x90C6, + 47624 - 44032: 0xB8D1, + 47625 - 44032: 0x90C7, + 47626 - 44032: 0x90C8, + 47627 - 44032: 0x90C9, + 47628 - 44032: 0x90CA, + 47629 - 44032: 0x90CB, + 47630 - 44032: 0x90CC, + 47631 - 44032: 0x90CD, + 47632 - 44032: 0x90CE, + 47633 - 44032: 0x90CF, + 47634 - 44032: 0x90D0, + 47635 - 44032: 0x90D1, + 47636 - 44032: 0x90D2, + 47637 - 44032: 0xB8D2, + 47638 - 44032: 0x90D3, + 47639 - 44032: 0x90D4, + 47640 - 44032: 0x90D5, + 47641 - 44032: 0x90D6, + 47642 - 44032: 0x90D7, + 47643 - 44032: 0x90D8, + 47644 - 44032: 0x90D9, + 47645 - 44032: 0x90DA, + 47646 - 44032: 0x90DB, + 47647 - 44032: 0x90DC, + 47648 - 44032: 0x90DD, + 47649 - 44032: 0x90DE, + 47650 - 44032: 0x90DF, + 47651 - 44032: 0x90E0, + 47652 - 44032: 0x90E1, + 47653 - 44032: 0x90E2, + 47654 - 44032: 0x90E3, + 47655 - 44032: 0x90E4, + 47656 - 44032: 0x90E5, + 47657 - 44032: 0x90E6, + 47658 - 44032: 0x90E7, + 47659 - 44032: 0x90E8, + 47660 - 44032: 0x90E9, + 47661 - 44032: 0x90EA, + 47662 - 44032: 0x90EB, + 47663 - 44032: 0x90EC, + 47664 - 44032: 0x90ED, + 47665 - 44032: 0x90EE, + 47666 - 44032: 0x90EF, + 47667 - 44032: 0x90F0, + 47668 - 44032: 0x90F1, + 47669 - 44032: 0x90F2, + 47670 - 44032: 0x90F3, + 47671 - 44032: 0x90F4, + 47672 - 44032: 0xB8D3, + 47673 - 44032: 0xB8D4, + 47674 - 44032: 0x90F5, + 47675 - 44032: 0x90F6, + 47676 - 44032: 0xB8D5, + 47677 - 44032: 0x90F7, + 47678 - 44032: 0x90F8, + 47679 - 44032: 0x90F9, + 47680 - 44032: 0xB8D6, + 47681 - 44032: 0x90FA, + 47682 - 44032: 0xB8D7, + 47683 - 44032: 0x90FB, + 47684 - 44032: 0x90FC, + 47685 - 44032: 0x90FD, + 47686 - 44032: 0x90FE, + 47687 - 44032: 0x9141, + 47688 - 44032: 0xB8D8, + 47689 - 44032: 0xB8D9, + 47690 - 44032: 0x9142, + 47691 - 44032: 0xB8DA, + 47692 - 44032: 0x9143, + 47693 - 44032: 0xB8DB, + 47694 - 44032: 0xB8DC, + 47695 - 44032: 0x9144, + 47696 - 44032: 0x9145, + 47697 - 44032: 0x9146, + 47698 - 44032: 0x9147, + 47699 - 44032: 0xB8DD, + 47700 - 44032: 0xB8DE, + 47701 - 44032: 0xB8DF, + 47702 - 44032: 0x9148, + 47703 - 44032: 0x9149, + 47704 - 44032: 0xB8E0, + 47705 - 44032: 0x914A, + 47706 - 44032: 0x914B, + 47707 - 44032: 0x914C, + 47708 - 44032: 0xB8E1, + 47709 - 44032: 0x914D, + 47710 - 44032: 0x914E, + 47711 - 44032: 0x914F, + 47712 - 44032: 0x9150, + 47713 - 44032: 0x9151, + 47714 - 44032: 0x9152, + 47715 - 44032: 0x9153, + 47716 - 44032: 0xB8E2, + 47717 - 44032: 0xB8E3, + 47718 - 44032: 0x9154, + 47719 - 44032: 0xB8E4, + 47720 - 44032: 0xB8E5, + 47721 - 44032: 0xB8E6, + 47722 - 44032: 0x9155, + 47723 - 44032: 0x9156, + 47724 - 44032: 0x9157, + 47725 - 44032: 0x9158, + 47726 - 44032: 0x9159, + 47727 - 44032: 0x915A, + 47728 - 44032: 0xB8E7, + 47729 - 44032: 0xB8E8, + 47730 - 44032: 0x9161, + 47731 - 44032: 0x9162, + 47732 - 44032: 0xB8E9, + 47733 - 44032: 0x9163, + 47734 - 44032: 0x9164, + 47735 - 44032: 0x9165, + 47736 - 44032: 0xB8EA, + 47737 - 44032: 0x9166, + 47738 - 44032: 0x9167, + 47739 - 44032: 0x9168, + 47740 - 44032: 0x9169, + 47741 - 44032: 0x916A, + 47742 - 44032: 0x916B, + 47743 - 44032: 0x916C, + 47744 - 44032: 0x916D, + 47745 - 44032: 0x916E, + 47746 - 44032: 0x916F, + 47747 - 44032: 0xB8EB, + 47748 - 44032: 0xB8EC, + 47749 - 44032: 0xB8ED, + 47750 - 44032: 0x9170, + 47751 - 44032: 0xB8EE, + 47752 - 44032: 0x9171, + 47753 - 44032: 0x9172, + 47754 - 44032: 0x9173, + 47755 - 44032: 0x9174, + 47756 - 44032: 0xB8EF, + 47757 - 44032: 0x9175, + 47758 - 44032: 0x9176, + 47759 - 44032: 0x9177, + 47760 - 44032: 0x9178, + 47761 - 44032: 0x9179, + 47762 - 44032: 0x917A, + 47763 - 44032: 0x9181, + 47764 - 44032: 0x9182, + 47765 - 44032: 0x9183, + 47766 - 44032: 0x9184, + 47767 - 44032: 0x9185, + 47768 - 44032: 0x9186, + 47769 - 44032: 0x9187, + 47770 - 44032: 0x9188, + 47771 - 44032: 0x9189, + 47772 - 44032: 0x918A, + 47773 - 44032: 0x918B, + 47774 - 44032: 0x918C, + 47775 - 44032: 0x918D, + 47776 - 44032: 0x918E, + 47777 - 44032: 0x918F, + 47778 - 44032: 0x9190, + 47779 - 44032: 0x9191, + 47780 - 44032: 0x9192, + 47781 - 44032: 0x9193, + 47782 - 44032: 0x9194, + 47783 - 44032: 0x9195, + 47784 - 44032: 0xB8F0, + 47785 - 44032: 0xB8F1, + 47786 - 44032: 0x9196, + 47787 - 44032: 0xB8F2, + 47788 - 44032: 0xB8F3, + 47789 - 44032: 0x9197, + 47790 - 44032: 0x9198, + 47791 - 44032: 0x9199, + 47792 - 44032: 0xB8F4, + 47793 - 44032: 0x919A, + 47794 - 44032: 0xB8F5, + 47795 - 44032: 0x919B, + 47796 - 44032: 0x919C, + 47797 - 44032: 0x919D, + 47798 - 44032: 0x919E, + 47799 - 44032: 0x919F, + 47800 - 44032: 0xB8F6, + 47801 - 44032: 0xB8F7, + 47802 - 44032: 0x91A0, + 47803 - 44032: 0xB8F8, + 47804 - 44032: 0x91A1, + 47805 - 44032: 0xB8F9, + 47806 - 44032: 0x91A2, + 47807 - 44032: 0x91A3, + 47808 - 44032: 0x91A4, + 47809 - 44032: 0x91A5, + 47810 - 44032: 0x91A6, + 47811 - 44032: 0x91A7, + 47812 - 44032: 0xB8FA, + 47813 - 44032: 0x91A8, + 47814 - 44032: 0x91A9, + 47815 - 44032: 0x91AA, + 47816 - 44032: 0xB8FB, + 47817 - 44032: 0x91AB, + 47818 - 44032: 0x91AC, + 47819 - 44032: 0x91AD, + 47820 - 44032: 0x91AE, + 47821 - 44032: 0x91AF, + 47822 - 44032: 0x91B0, + 47823 - 44032: 0x91B1, + 47824 - 44032: 0x91B2, + 47825 - 44032: 0x91B3, + 47826 - 44032: 0x91B4, + 47827 - 44032: 0x91B5, + 47828 - 44032: 0x91B6, + 47829 - 44032: 0x91B7, + 47830 - 44032: 0x91B8, + 47831 - 44032: 0x91B9, + 47832 - 44032: 0xB8FC, + 47833 - 44032: 0xB8FD, + 47834 - 44032: 0x91BA, + 47835 - 44032: 0x91BB, + 47836 - 44032: 0x91BC, + 47837 - 44032: 0x91BD, + 47838 - 44032: 0x91BE, + 47839 - 44032: 0x91BF, + 47840 - 44032: 0x91C0, + 47841 - 44032: 0x91C1, + 47842 - 44032: 0x91C2, + 47843 - 44032: 0x91C3, + 47844 - 44032: 0x91C4, + 47845 - 44032: 0x91C5, + 47846 - 44032: 0x91C6, + 47847 - 44032: 0x91C7, + 47848 - 44032: 0x91C8, + 47849 - 44032: 0x91C9, + 47850 - 44032: 0x91CA, + 47851 - 44032: 0x91CB, + 47852 - 44032: 0x91CC, + 47853 - 44032: 0x91CD, + 47854 - 44032: 0x91CE, + 47855 - 44032: 0x91CF, + 47856 - 44032: 0x91D0, + 47857 - 44032: 0x91D1, + 47858 - 44032: 0x91D2, + 47859 - 44032: 0x91D3, + 47860 - 44032: 0x91D4, + 47861 - 44032: 0x91D5, + 47862 - 44032: 0x91D6, + 47863 - 44032: 0x91D7, + 47864 - 44032: 0x91D8, + 47865 - 44032: 0x91D9, + 47866 - 44032: 0x91DA, + 47867 - 44032: 0x91DB, + 47868 - 44032: 0xB8FE, + 47869 - 44032: 0x91DC, + 47870 - 44032: 0x91DD, + 47871 - 44032: 0x91DE, + 47872 - 44032: 0xB9A1, + 47873 - 44032: 0x91DF, + 47874 - 44032: 0x91E0, + 47875 - 44032: 0x91E1, + 47876 - 44032: 0xB9A2, + 47877 - 44032: 0x91E2, + 47878 - 44032: 0x91E3, + 47879 - 44032: 0x91E4, + 47880 - 44032: 0x91E5, + 47881 - 44032: 0x91E6, + 47882 - 44032: 0x91E7, + 47883 - 44032: 0x91E8, + 47884 - 44032: 0x91E9, + 47885 - 44032: 0xB9A3, + 47886 - 44032: 0x91EA, + 47887 - 44032: 0xB9A4, + 47888 - 44032: 0x91EB, + 47889 - 44032: 0xB9A5, + 47890 - 44032: 0x91EC, + 47891 - 44032: 0x91ED, + 47892 - 44032: 0x91EE, + 47893 - 44032: 0x91EF, + 47894 - 44032: 0x91F0, + 47895 - 44032: 0x91F1, + 47896 - 44032: 0xB9A6, + 47897 - 44032: 0x91F2, + 47898 - 44032: 0x91F3, + 47899 - 44032: 0x91F4, + 47900 - 44032: 0xB9A7, + 47901 - 44032: 0x91F5, + 47902 - 44032: 0x91F6, + 47903 - 44032: 0x91F7, + 47904 - 44032: 0xB9A8, + 47905 - 44032: 0x91F8, + 47906 - 44032: 0x91F9, + 47907 - 44032: 0x91FA, + 47908 - 44032: 0x91FB, + 47909 - 44032: 0x91FC, + 47910 - 44032: 0x91FD, + 47911 - 44032: 0x91FE, + 47912 - 44032: 0x9241, + 47913 - 44032: 0xB9A9, + 47914 - 44032: 0x9242, + 47915 - 44032: 0xB9AA, + 47916 - 44032: 0x9243, + 47917 - 44032: 0x9244, + 47918 - 44032: 0x9245, + 47919 - 44032: 0x9246, + 47920 - 44032: 0x9247, + 47921 - 44032: 0x9248, + 47922 - 44032: 0x9249, + 47923 - 44032: 0x924A, + 47924 - 44032: 0xB9AB, + 47925 - 44032: 0xB9AC, + 47926 - 44032: 0xB9AD, + 47927 - 44032: 0x924B, + 47928 - 44032: 0xB9AE, + 47929 - 44032: 0x924C, + 47930 - 44032: 0x924D, + 47931 - 44032: 0xB9AF, + 47932 - 44032: 0xB9B0, + 47933 - 44032: 0xB9B1, + 47934 - 44032: 0xB9B2, + 47935 - 44032: 0x924E, + 47936 - 44032: 0x924F, + 47937 - 44032: 0x9250, + 47938 - 44032: 0x9251, + 47939 - 44032: 0x9252, + 47940 - 44032: 0xB9B3, + 47941 - 44032: 0xB9B4, + 47942 - 44032: 0x9253, + 47943 - 44032: 0xB9B5, + 47944 - 44032: 0x9254, + 47945 - 44032: 0xB9B6, + 47946 - 44032: 0x9255, + 47947 - 44032: 0x9256, + 47948 - 44032: 0x9257, + 47949 - 44032: 0xB9B7, + 47950 - 44032: 0x9258, + 47951 - 44032: 0xB9B8, + 47952 - 44032: 0xB9B9, + 47953 - 44032: 0x9259, + 47954 - 44032: 0x925A, + 47955 - 44032: 0x9261, + 47956 - 44032: 0xB9BA, + 47957 - 44032: 0x9262, + 47958 - 44032: 0x9263, + 47959 - 44032: 0x9264, + 47960 - 44032: 0xB9BB, + 47961 - 44032: 0x9265, + 47962 - 44032: 0x9266, + 47963 - 44032: 0x9267, + 47964 - 44032: 0x9268, + 47965 - 44032: 0x9269, + 47966 - 44032: 0x926A, + 47967 - 44032: 0x926B, + 47968 - 44032: 0x926C, + 47969 - 44032: 0xB9BC, + 47970 - 44032: 0x926D, + 47971 - 44032: 0xB9BD, + 47972 - 44032: 0x926E, + 47973 - 44032: 0x926F, + 47974 - 44032: 0x9270, + 47975 - 44032: 0x9271, + 47976 - 44032: 0x9272, + 47977 - 44032: 0x9273, + 47978 - 44032: 0x9274, + 47979 - 44032: 0x9275, + 47980 - 44032: 0xB9BE, + 47981 - 44032: 0x9276, + 47982 - 44032: 0x9277, + 47983 - 44032: 0x9278, + 47984 - 44032: 0x9279, + 47985 - 44032: 0x927A, + 47986 - 44032: 0x9281, + 47987 - 44032: 0x9282, + 47988 - 44032: 0x9283, + 47989 - 44032: 0x9284, + 47990 - 44032: 0x9285, + 47991 - 44032: 0x9286, + 47992 - 44032: 0x9287, + 47993 - 44032: 0x9288, + 47994 - 44032: 0x9289, + 47995 - 44032: 0x928A, + 47996 - 44032: 0x928B, + 47997 - 44032: 0x928C, + 47998 - 44032: 0x928D, + 47999 - 44032: 0x928E, + 48000 - 44032: 0x928F, + 48001 - 44032: 0x9290, + 48002 - 44032: 0x9291, + 48003 - 44032: 0x9292, + 48004 - 44032: 0x9293, + 48005 - 44032: 0x9294, + 48006 - 44032: 0x9295, + 48007 - 44032: 0x9296, + 48008 - 44032: 0xB9BF, + 48009 - 44032: 0x9297, + 48010 - 44032: 0x9298, + 48011 - 44032: 0x9299, + 48012 - 44032: 0xB9C0, + 48013 - 44032: 0x929A, + 48014 - 44032: 0x929B, + 48015 - 44032: 0x929C, + 48016 - 44032: 0xB9C1, + 48017 - 44032: 0x929D, + 48018 - 44032: 0x929E, + 48019 - 44032: 0x929F, + 48020 - 44032: 0x92A0, + 48021 - 44032: 0x92A1, + 48022 - 44032: 0x92A2, + 48023 - 44032: 0x92A3, + 48024 - 44032: 0x92A4, + 48025 - 44032: 0x92A5, + 48026 - 44032: 0x92A6, + 48027 - 44032: 0x92A7, + 48028 - 44032: 0x92A8, + 48029 - 44032: 0x92A9, + 48030 - 44032: 0x92AA, + 48031 - 44032: 0x92AB, + 48032 - 44032: 0x92AC, + 48033 - 44032: 0x92AD, + 48034 - 44032: 0x92AE, + 48035 - 44032: 0x92AF, + 48036 - 44032: 0xB9C2, + 48037 - 44032: 0x92B0, + 48038 - 44032: 0x92B1, + 48039 - 44032: 0x92B2, + 48040 - 44032: 0xB9C3, + 48041 - 44032: 0x92B3, + 48042 - 44032: 0x92B4, + 48043 - 44032: 0x92B5, + 48044 - 44032: 0xB9C4, + 48045 - 44032: 0x92B6, + 48046 - 44032: 0x92B7, + 48047 - 44032: 0x92B8, + 48048 - 44032: 0x92B9, + 48049 - 44032: 0x92BA, + 48050 - 44032: 0x92BB, + 48051 - 44032: 0x92BC, + 48052 - 44032: 0xB9C5, + 48053 - 44032: 0x92BD, + 48054 - 44032: 0x92BE, + 48055 - 44032: 0xB9C6, + 48056 - 44032: 0x92BF, + 48057 - 44032: 0x92C0, + 48058 - 44032: 0x92C1, + 48059 - 44032: 0x92C2, + 48060 - 44032: 0x92C3, + 48061 - 44032: 0x92C4, + 48062 - 44032: 0x92C5, + 48063 - 44032: 0x92C6, + 48064 - 44032: 0xB9C7, + 48065 - 44032: 0x92C7, + 48066 - 44032: 0x92C8, + 48067 - 44032: 0x92C9, + 48068 - 44032: 0xB9C8, + 48069 - 44032: 0x92CA, + 48070 - 44032: 0x92CB, + 48071 - 44032: 0x92CC, + 48072 - 44032: 0xB9C9, + 48073 - 44032: 0x92CD, + 48074 - 44032: 0x92CE, + 48075 - 44032: 0x92CF, + 48076 - 44032: 0x92D0, + 48077 - 44032: 0x92D1, + 48078 - 44032: 0x92D2, + 48079 - 44032: 0x92D3, + 48080 - 44032: 0xB9CA, + 48081 - 44032: 0x92D4, + 48082 - 44032: 0x92D5, + 48083 - 44032: 0xB9CB, + 48084 - 44032: 0x92D6, + 48085 - 44032: 0x92D7, + 48086 - 44032: 0x92D8, + 48087 - 44032: 0x92D9, + 48088 - 44032: 0x92DA, + 48089 - 44032: 0x92DB, + 48090 - 44032: 0x92DC, + 48091 - 44032: 0x92DD, + 48092 - 44032: 0x92DE, + 48093 - 44032: 0x92DF, + 48094 - 44032: 0x92E0, + 48095 - 44032: 0x92E1, + 48096 - 44032: 0x92E2, + 48097 - 44032: 0x92E3, + 48098 - 44032: 0x92E4, + 48099 - 44032: 0x92E5, + 48100 - 44032: 0x92E6, + 48101 - 44032: 0x92E7, + 48102 - 44032: 0x92E8, + 48103 - 44032: 0x92E9, + 48104 - 44032: 0x92EA, + 48105 - 44032: 0x92EB, + 48106 - 44032: 0x92EC, + 48107 - 44032: 0x92ED, + 48108 - 44032: 0x92EE, + 48109 - 44032: 0x92EF, + 48110 - 44032: 0x92F0, + 48111 - 44032: 0x92F1, + 48112 - 44032: 0x92F2, + 48113 - 44032: 0x92F3, + 48114 - 44032: 0x92F4, + 48115 - 44032: 0x92F5, + 48116 - 44032: 0x92F6, + 48117 - 44032: 0x92F7, + 48118 - 44032: 0x92F8, + 48119 - 44032: 0x92F9, + 48120 - 44032: 0xB9CC, + 48121 - 44032: 0xB9CD, + 48122 - 44032: 0x92FA, + 48123 - 44032: 0x92FB, + 48124 - 44032: 0xB9CE, + 48125 - 44032: 0x92FC, + 48126 - 44032: 0x92FD, + 48127 - 44032: 0xB9CF, + 48128 - 44032: 0xB9D0, + 48129 - 44032: 0x92FE, + 48130 - 44032: 0xB9D1, + 48131 - 44032: 0x9341, + 48132 - 44032: 0x9342, + 48133 - 44032: 0x9343, + 48134 - 44032: 0x9344, + 48135 - 44032: 0x9345, + 48136 - 44032: 0xB9D2, + 48137 - 44032: 0xB9D3, + 48138 - 44032: 0x9346, + 48139 - 44032: 0xB9D4, + 48140 - 44032: 0xB9D5, + 48141 - 44032: 0xB9D6, + 48142 - 44032: 0x9347, + 48143 - 44032: 0xB9D7, + 48144 - 44032: 0x9348, + 48145 - 44032: 0xB9D8, + 48146 - 44032: 0x9349, + 48147 - 44032: 0x934A, + 48148 - 44032: 0xB9D9, + 48149 - 44032: 0xB9DA, + 48150 - 44032: 0xB9DB, + 48151 - 44032: 0xB9DC, + 48152 - 44032: 0xB9DD, + 48153 - 44032: 0x934B, + 48154 - 44032: 0x934C, + 48155 - 44032: 0xB9DE, + 48156 - 44032: 0xB9DF, + 48157 - 44032: 0xB9E0, + 48158 - 44032: 0xB9E1, + 48159 - 44032: 0xB9E2, + 48160 - 44032: 0x934D, + 48161 - 44032: 0x934E, + 48162 - 44032: 0x934F, + 48163 - 44032: 0x9350, + 48164 - 44032: 0xB9E3, + 48165 - 44032: 0xB9E4, + 48166 - 44032: 0x9351, + 48167 - 44032: 0xB9E5, + 48168 - 44032: 0x9352, + 48169 - 44032: 0xB9E6, + 48170 - 44032: 0x9353, + 48171 - 44032: 0x9354, + 48172 - 44032: 0x9355, + 48173 - 44032: 0xB9E7, + 48174 - 44032: 0x9356, + 48175 - 44032: 0x9357, + 48176 - 44032: 0xB9E8, + 48177 - 44032: 0xB9E9, + 48178 - 44032: 0x9358, + 48179 - 44032: 0x9359, + 48180 - 44032: 0xB9EA, + 48181 - 44032: 0x935A, + 48182 - 44032: 0x9361, + 48183 - 44032: 0x9362, + 48184 - 44032: 0xB9EB, + 48185 - 44032: 0x9363, + 48186 - 44032: 0x9364, + 48187 - 44032: 0x9365, + 48188 - 44032: 0x9366, + 48189 - 44032: 0x9367, + 48190 - 44032: 0x9368, + 48191 - 44032: 0x9369, + 48192 - 44032: 0xB9EC, + 48193 - 44032: 0xB9ED, + 48194 - 44032: 0x936A, + 48195 - 44032: 0xB9EE, + 48196 - 44032: 0xB9EF, + 48197 - 44032: 0xB9F0, + 48198 - 44032: 0x936B, + 48199 - 44032: 0x936C, + 48200 - 44032: 0x936D, + 48201 - 44032: 0xB9F1, + 48202 - 44032: 0x936E, + 48203 - 44032: 0x936F, + 48204 - 44032: 0xB9F2, + 48205 - 44032: 0xB9F3, + 48206 - 44032: 0x9370, + 48207 - 44032: 0x9371, + 48208 - 44032: 0xB9F4, + 48209 - 44032: 0x9372, + 48210 - 44032: 0x9373, + 48211 - 44032: 0x9374, + 48212 - 44032: 0x9375, + 48213 - 44032: 0x9376, + 48214 - 44032: 0x9377, + 48215 - 44032: 0x9378, + 48216 - 44032: 0x9379, + 48217 - 44032: 0x937A, + 48218 - 44032: 0x9381, + 48219 - 44032: 0x9382, + 48220 - 44032: 0x9383, + 48221 - 44032: 0xB9F5, + 48222 - 44032: 0x9384, + 48223 - 44032: 0x9385, + 48224 - 44032: 0x9386, + 48225 - 44032: 0x9387, + 48226 - 44032: 0x9388, + 48227 - 44032: 0x9389, + 48228 - 44032: 0x938A, + 48229 - 44032: 0x938B, + 48230 - 44032: 0x938C, + 48231 - 44032: 0x938D, + 48232 - 44032: 0x938E, + 48233 - 44032: 0x938F, + 48234 - 44032: 0x9390, + 48235 - 44032: 0x9391, + 48236 - 44032: 0x9392, + 48237 - 44032: 0x9393, + 48238 - 44032: 0x9394, + 48239 - 44032: 0x9395, + 48240 - 44032: 0x9396, + 48241 - 44032: 0x9397, + 48242 - 44032: 0x9398, + 48243 - 44032: 0x9399, + 48244 - 44032: 0x939A, + 48245 - 44032: 0x939B, + 48246 - 44032: 0x939C, + 48247 - 44032: 0x939D, + 48248 - 44032: 0x939E, + 48249 - 44032: 0x939F, + 48250 - 44032: 0x93A0, + 48251 - 44032: 0x93A1, + 48252 - 44032: 0x93A2, + 48253 - 44032: 0x93A3, + 48254 - 44032: 0x93A4, + 48255 - 44032: 0x93A5, + 48256 - 44032: 0x93A6, + 48257 - 44032: 0x93A7, + 48258 - 44032: 0x93A8, + 48259 - 44032: 0x93A9, + 48260 - 44032: 0xB9F6, + 48261 - 44032: 0xB9F7, + 48262 - 44032: 0x93AA, + 48263 - 44032: 0x93AB, + 48264 - 44032: 0xB9F8, + 48265 - 44032: 0x93AC, + 48266 - 44032: 0x93AD, + 48267 - 44032: 0xB9F9, + 48268 - 44032: 0xB9FA, + 48269 - 44032: 0x93AE, + 48270 - 44032: 0xB9FB, + 48271 - 44032: 0x93AF, + 48272 - 44032: 0x93B0, + 48273 - 44032: 0x93B1, + 48274 - 44032: 0x93B2, + 48275 - 44032: 0x93B3, + 48276 - 44032: 0xB9FC, + 48277 - 44032: 0xB9FD, + 48278 - 44032: 0x93B4, + 48279 - 44032: 0xB9FE, + 48280 - 44032: 0x93B5, + 48281 - 44032: 0xBAA1, + 48282 - 44032: 0xBAA2, + 48283 - 44032: 0x93B6, + 48284 - 44032: 0x93B7, + 48285 - 44032: 0x93B8, + 48286 - 44032: 0x93B9, + 48287 - 44032: 0x93BA, + 48288 - 44032: 0xBAA3, + 48289 - 44032: 0xBAA4, + 48290 - 44032: 0x93BB, + 48291 - 44032: 0x93BC, + 48292 - 44032: 0xBAA5, + 48293 - 44032: 0x93BD, + 48294 - 44032: 0x93BE, + 48295 - 44032: 0xBAA6, + 48296 - 44032: 0xBAA7, + 48297 - 44032: 0x93BF, + 48298 - 44032: 0x93C0, + 48299 - 44032: 0x93C1, + 48300 - 44032: 0x93C2, + 48301 - 44032: 0x93C3, + 48302 - 44032: 0x93C4, + 48303 - 44032: 0x93C5, + 48304 - 44032: 0xBAA8, + 48305 - 44032: 0xBAA9, + 48306 - 44032: 0x93C6, + 48307 - 44032: 0xBAAA, + 48308 - 44032: 0xBAAB, + 48309 - 44032: 0xBAAC, + 48310 - 44032: 0x93C7, + 48311 - 44032: 0x93C8, + 48312 - 44032: 0x93C9, + 48313 - 44032: 0x93CA, + 48314 - 44032: 0x93CB, + 48315 - 44032: 0x93CC, + 48316 - 44032: 0xBAAD, + 48317 - 44032: 0xBAAE, + 48318 - 44032: 0x93CD, + 48319 - 44032: 0x93CE, + 48320 - 44032: 0xBAAF, + 48321 - 44032: 0x93CF, + 48322 - 44032: 0x93D0, + 48323 - 44032: 0x93D1, + 48324 - 44032: 0xBAB0, + 48325 - 44032: 0x93D2, + 48326 - 44032: 0x93D3, + 48327 - 44032: 0x93D4, + 48328 - 44032: 0x93D5, + 48329 - 44032: 0x93D6, + 48330 - 44032: 0x93D7, + 48331 - 44032: 0x93D8, + 48332 - 44032: 0x93D9, + 48333 - 44032: 0xBAB1, + 48334 - 44032: 0x93DA, + 48335 - 44032: 0xBAB2, + 48336 - 44032: 0xBAB3, + 48337 - 44032: 0xBAB4, + 48338 - 44032: 0x93DB, + 48339 - 44032: 0x93DC, + 48340 - 44032: 0x93DD, + 48341 - 44032: 0xBAB5, + 48342 - 44032: 0x93DE, + 48343 - 44032: 0x93DF, + 48344 - 44032: 0xBAB6, + 48345 - 44032: 0x93E0, + 48346 - 44032: 0x93E1, + 48347 - 44032: 0x93E2, + 48348 - 44032: 0xBAB7, + 48349 - 44032: 0x93E3, + 48350 - 44032: 0x93E4, + 48351 - 44032: 0x93E5, + 48352 - 44032: 0x93E6, + 48353 - 44032: 0x93E7, + 48354 - 44032: 0x93E8, + 48355 - 44032: 0x93E9, + 48356 - 44032: 0x93EA, + 48357 - 44032: 0x93EB, + 48358 - 44032: 0x93EC, + 48359 - 44032: 0x93ED, + 48360 - 44032: 0x93EE, + 48361 - 44032: 0x93EF, + 48362 - 44032: 0x93F0, + 48363 - 44032: 0x93F1, + 48364 - 44032: 0x93F2, + 48365 - 44032: 0x93F3, + 48366 - 44032: 0x93F4, + 48367 - 44032: 0x93F5, + 48368 - 44032: 0x93F6, + 48369 - 44032: 0x93F7, + 48370 - 44032: 0x93F8, + 48371 - 44032: 0x93F9, + 48372 - 44032: 0xBAB8, + 48373 - 44032: 0xBAB9, + 48374 - 44032: 0xBABA, + 48375 - 44032: 0x93FA, + 48376 - 44032: 0xBABB, + 48377 - 44032: 0x93FB, + 48378 - 44032: 0x93FC, + 48379 - 44032: 0x93FD, + 48380 - 44032: 0xBABC, + 48381 - 44032: 0x93FE, + 48382 - 44032: 0x9441, + 48383 - 44032: 0x9442, + 48384 - 44032: 0x9443, + 48385 - 44032: 0x9444, + 48386 - 44032: 0x9445, + 48387 - 44032: 0x9446, + 48388 - 44032: 0xBABD, + 48389 - 44032: 0xBABE, + 48390 - 44032: 0x9447, + 48391 - 44032: 0xBABF, + 48392 - 44032: 0x9448, + 48393 - 44032: 0xBAC0, + 48394 - 44032: 0x9449, + 48395 - 44032: 0x944A, + 48396 - 44032: 0x944B, + 48397 - 44032: 0x944C, + 48398 - 44032: 0x944D, + 48399 - 44032: 0x944E, + 48400 - 44032: 0xBAC1, + 48401 - 44032: 0x944F, + 48402 - 44032: 0x9450, + 48403 - 44032: 0x9451, + 48404 - 44032: 0xBAC2, + 48405 - 44032: 0x9452, + 48406 - 44032: 0x9453, + 48407 - 44032: 0x9454, + 48408 - 44032: 0x9455, + 48409 - 44032: 0x9456, + 48410 - 44032: 0x9457, + 48411 - 44032: 0x9458, + 48412 - 44032: 0x9459, + 48413 - 44032: 0x945A, + 48414 - 44032: 0x9461, + 48415 - 44032: 0x9462, + 48416 - 44032: 0x9463, + 48417 - 44032: 0x9464, + 48418 - 44032: 0x9465, + 48419 - 44032: 0x9466, + 48420 - 44032: 0xBAC3, + 48421 - 44032: 0x9467, + 48422 - 44032: 0x9468, + 48423 - 44032: 0x9469, + 48424 - 44032: 0x946A, + 48425 - 44032: 0x946B, + 48426 - 44032: 0x946C, + 48427 - 44032: 0x946D, + 48428 - 44032: 0xBAC4, + 48429 - 44032: 0x946E, + 48430 - 44032: 0x946F, + 48431 - 44032: 0x9470, + 48432 - 44032: 0x9471, + 48433 - 44032: 0x9472, + 48434 - 44032: 0x9473, + 48435 - 44032: 0x9474, + 48436 - 44032: 0x9475, + 48437 - 44032: 0x9476, + 48438 - 44032: 0x9477, + 48439 - 44032: 0x9478, + 48440 - 44032: 0x9479, + 48441 - 44032: 0x947A, + 48442 - 44032: 0x9481, + 48443 - 44032: 0x9482, + 48444 - 44032: 0x9483, + 48445 - 44032: 0x9484, + 48446 - 44032: 0x9485, + 48447 - 44032: 0x9486, + 48448 - 44032: 0xBAC5, + 48449 - 44032: 0x9487, + 48450 - 44032: 0x9488, + 48451 - 44032: 0x9489, + 48452 - 44032: 0x948A, + 48453 - 44032: 0x948B, + 48454 - 44032: 0x948C, + 48455 - 44032: 0x948D, + 48456 - 44032: 0xBAC6, + 48457 - 44032: 0xBAC7, + 48458 - 44032: 0x948E, + 48459 - 44032: 0x948F, + 48460 - 44032: 0xBAC8, + 48461 - 44032: 0x9490, + 48462 - 44032: 0x9491, + 48463 - 44032: 0x9492, + 48464 - 44032: 0xBAC9, + 48465 - 44032: 0x9493, + 48466 - 44032: 0x9494, + 48467 - 44032: 0x9495, + 48468 - 44032: 0x9496, + 48469 - 44032: 0x9497, + 48470 - 44032: 0x9498, + 48471 - 44032: 0x9499, + 48472 - 44032: 0xBACA, + 48473 - 44032: 0xBACB, + 48474 - 44032: 0x949A, + 48475 - 44032: 0x949B, + 48476 - 44032: 0x949C, + 48477 - 44032: 0x949D, + 48478 - 44032: 0x949E, + 48479 - 44032: 0x949F, + 48480 - 44032: 0x94A0, + 48481 - 44032: 0x94A1, + 48482 - 44032: 0x94A2, + 48483 - 44032: 0x94A3, + 48484 - 44032: 0xBACC, + 48485 - 44032: 0x94A4, + 48486 - 44032: 0x94A5, + 48487 - 44032: 0x94A6, + 48488 - 44032: 0xBACD, + 48489 - 44032: 0x94A7, + 48490 - 44032: 0x94A8, + 48491 - 44032: 0x94A9, + 48492 - 44032: 0x94AA, + 48493 - 44032: 0x94AB, + 48494 - 44032: 0x94AC, + 48495 - 44032: 0x94AD, + 48496 - 44032: 0x94AE, + 48497 - 44032: 0x94AF, + 48498 - 44032: 0x94B0, + 48499 - 44032: 0x94B1, + 48500 - 44032: 0x94B2, + 48501 - 44032: 0x94B3, + 48502 - 44032: 0x94B4, + 48503 - 44032: 0x94B5, + 48504 - 44032: 0x94B6, + 48505 - 44032: 0x94B7, + 48506 - 44032: 0x94B8, + 48507 - 44032: 0x94B9, + 48508 - 44032: 0x94BA, + 48509 - 44032: 0x94BB, + 48510 - 44032: 0x94BC, + 48511 - 44032: 0x94BD, + 48512 - 44032: 0xBACE, + 48513 - 44032: 0xBACF, + 48514 - 44032: 0x94BE, + 48515 - 44032: 0x94BF, + 48516 - 44032: 0xBAD0, + 48517 - 44032: 0x94C0, + 48518 - 44032: 0x94C1, + 48519 - 44032: 0xBAD1, + 48520 - 44032: 0xBAD2, + 48521 - 44032: 0xBAD3, + 48522 - 44032: 0xBAD4, + 48523 - 44032: 0x94C2, + 48524 - 44032: 0x94C3, + 48525 - 44032: 0x94C4, + 48526 - 44032: 0x94C5, + 48527 - 44032: 0x94C6, + 48528 - 44032: 0xBAD5, + 48529 - 44032: 0xBAD6, + 48530 - 44032: 0x94C7, + 48531 - 44032: 0xBAD7, + 48532 - 44032: 0x94C8, + 48533 - 44032: 0xBAD8, + 48534 - 44032: 0x94C9, + 48535 - 44032: 0x94CA, + 48536 - 44032: 0x94CB, + 48537 - 44032: 0xBAD9, + 48538 - 44032: 0xBADA, + 48539 - 44032: 0x94CC, + 48540 - 44032: 0xBADB, + 48541 - 44032: 0x94CD, + 48542 - 44032: 0x94CE, + 48543 - 44032: 0x94CF, + 48544 - 44032: 0x94D0, + 48545 - 44032: 0x94D1, + 48546 - 44032: 0x94D2, + 48547 - 44032: 0x94D3, + 48548 - 44032: 0xBADC, + 48549 - 44032: 0x94D4, + 48550 - 44032: 0x94D5, + 48551 - 44032: 0x94D6, + 48552 - 44032: 0x94D7, + 48553 - 44032: 0x94D8, + 48554 - 44032: 0x94D9, + 48555 - 44032: 0x94DA, + 48556 - 44032: 0x94DB, + 48557 - 44032: 0x94DC, + 48558 - 44032: 0x94DD, + 48559 - 44032: 0x94DE, + 48560 - 44032: 0xBADD, + 48561 - 44032: 0x94DF, + 48562 - 44032: 0x94E0, + 48563 - 44032: 0x94E1, + 48564 - 44032: 0x94E2, + 48565 - 44032: 0x94E3, + 48566 - 44032: 0x94E4, + 48567 - 44032: 0x94E5, + 48568 - 44032: 0xBADE, + 48569 - 44032: 0x94E6, + 48570 - 44032: 0x94E7, + 48571 - 44032: 0x94E8, + 48572 - 44032: 0x94E9, + 48573 - 44032: 0x94EA, + 48574 - 44032: 0x94EB, + 48575 - 44032: 0x94EC, + 48576 - 44032: 0x94ED, + 48577 - 44032: 0x94EE, + 48578 - 44032: 0x94EF, + 48579 - 44032: 0x94F0, + 48580 - 44032: 0x94F1, + 48581 - 44032: 0x94F2, + 48582 - 44032: 0x94F3, + 48583 - 44032: 0x94F4, + 48584 - 44032: 0x94F5, + 48585 - 44032: 0x94F6, + 48586 - 44032: 0x94F7, + 48587 - 44032: 0x94F8, + 48588 - 44032: 0x94F9, + 48589 - 44032: 0x94FA, + 48590 - 44032: 0x94FB, + 48591 - 44032: 0x94FC, + 48592 - 44032: 0x94FD, + 48593 - 44032: 0x94FE, + 48594 - 44032: 0x9541, + 48595 - 44032: 0x9542, + 48596 - 44032: 0xBADF, + 48597 - 44032: 0xBAE0, + 48598 - 44032: 0x9543, + 48599 - 44032: 0x9544, + 48600 - 44032: 0xBAE1, + 48601 - 44032: 0x9545, + 48602 - 44032: 0x9546, + 48603 - 44032: 0x9547, + 48604 - 44032: 0xBAE2, + 48605 - 44032: 0x9548, + 48606 - 44032: 0x9549, + 48607 - 44032: 0x954A, + 48608 - 44032: 0x954B, + 48609 - 44032: 0x954C, + 48610 - 44032: 0x954D, + 48611 - 44032: 0x954E, + 48612 - 44032: 0x954F, + 48613 - 44032: 0x9550, + 48614 - 44032: 0x9551, + 48615 - 44032: 0x9552, + 48616 - 44032: 0x9553, + 48617 - 44032: 0xBAE3, + 48618 - 44032: 0x9554, + 48619 - 44032: 0x9555, + 48620 - 44032: 0x9556, + 48621 - 44032: 0x9557, + 48622 - 44032: 0x9558, + 48623 - 44032: 0x9559, + 48624 - 44032: 0xBAE4, + 48625 - 44032: 0x955A, + 48626 - 44032: 0x9561, + 48627 - 44032: 0x9562, + 48628 - 44032: 0xBAE5, + 48629 - 44032: 0x9563, + 48630 - 44032: 0x9564, + 48631 - 44032: 0x9565, + 48632 - 44032: 0xBAE6, + 48633 - 44032: 0x9566, + 48634 - 44032: 0x9567, + 48635 - 44032: 0x9568, + 48636 - 44032: 0x9569, + 48637 - 44032: 0x956A, + 48638 - 44032: 0x956B, + 48639 - 44032: 0x956C, + 48640 - 44032: 0xBAE7, + 48641 - 44032: 0x956D, + 48642 - 44032: 0x956E, + 48643 - 44032: 0xBAE8, + 48644 - 44032: 0x956F, + 48645 - 44032: 0xBAE9, + 48646 - 44032: 0x9570, + 48647 - 44032: 0x9571, + 48648 - 44032: 0x9572, + 48649 - 44032: 0x9573, + 48650 - 44032: 0x9574, + 48651 - 44032: 0x9575, + 48652 - 44032: 0xBAEA, + 48653 - 44032: 0xBAEB, + 48654 - 44032: 0x9576, + 48655 - 44032: 0x9577, + 48656 - 44032: 0xBAEC, + 48657 - 44032: 0x9578, + 48658 - 44032: 0x9579, + 48659 - 44032: 0x957A, + 48660 - 44032: 0xBAED, + 48661 - 44032: 0x9581, + 48662 - 44032: 0x9582, + 48663 - 44032: 0x9583, + 48664 - 44032: 0x9584, + 48665 - 44032: 0x9585, + 48666 - 44032: 0x9586, + 48667 - 44032: 0x9587, + 48668 - 44032: 0xBAEE, + 48669 - 44032: 0xBAEF, + 48670 - 44032: 0x9588, + 48671 - 44032: 0xBAF0, + 48672 - 44032: 0x9589, + 48673 - 44032: 0x958A, + 48674 - 44032: 0x958B, + 48675 - 44032: 0x958C, + 48676 - 44032: 0x958D, + 48677 - 44032: 0x958E, + 48678 - 44032: 0x958F, + 48679 - 44032: 0x9590, + 48680 - 44032: 0x9591, + 48681 - 44032: 0x9592, + 48682 - 44032: 0x9593, + 48683 - 44032: 0x9594, + 48684 - 44032: 0x9595, + 48685 - 44032: 0x9596, + 48686 - 44032: 0x9597, + 48687 - 44032: 0x9598, + 48688 - 44032: 0x9599, + 48689 - 44032: 0x959A, + 48690 - 44032: 0x959B, + 48691 - 44032: 0x959C, + 48692 - 44032: 0x959D, + 48693 - 44032: 0x959E, + 48694 - 44032: 0x959F, + 48695 - 44032: 0x95A0, + 48696 - 44032: 0x95A1, + 48697 - 44032: 0x95A2, + 48698 - 44032: 0x95A3, + 48699 - 44032: 0x95A4, + 48700 - 44032: 0x95A5, + 48701 - 44032: 0x95A6, + 48702 - 44032: 0x95A7, + 48703 - 44032: 0x95A8, + 48704 - 44032: 0x95A9, + 48705 - 44032: 0x95AA, + 48706 - 44032: 0x95AB, + 48707 - 44032: 0x95AC, + 48708 - 44032: 0xBAF1, + 48709 - 44032: 0xBAF2, + 48710 - 44032: 0x95AD, + 48711 - 44032: 0x95AE, + 48712 - 44032: 0xBAF3, + 48713 - 44032: 0x95AF, + 48714 - 44032: 0x95B0, + 48715 - 44032: 0x95B1, + 48716 - 44032: 0xBAF4, + 48717 - 44032: 0x95B2, + 48718 - 44032: 0xBAF5, + 48719 - 44032: 0x95B3, + 48720 - 44032: 0x95B4, + 48721 - 44032: 0x95B5, + 48722 - 44032: 0x95B6, + 48723 - 44032: 0x95B7, + 48724 - 44032: 0xBAF6, + 48725 - 44032: 0xBAF7, + 48726 - 44032: 0x95B8, + 48727 - 44032: 0xBAF8, + 48728 - 44032: 0x95B9, + 48729 - 44032: 0xBAF9, + 48730 - 44032: 0xBAFA, + 48731 - 44032: 0xBAFB, + 48732 - 44032: 0x95BA, + 48733 - 44032: 0x95BB, + 48734 - 44032: 0x95BC, + 48735 - 44032: 0x95BD, + 48736 - 44032: 0xBAFC, + 48737 - 44032: 0xBAFD, + 48738 - 44032: 0x95BE, + 48739 - 44032: 0x95BF, + 48740 - 44032: 0xBAFE, + 48741 - 44032: 0x95C0, + 48742 - 44032: 0x95C1, + 48743 - 44032: 0x95C2, + 48744 - 44032: 0xBBA1, + 48745 - 44032: 0x95C3, + 48746 - 44032: 0xBBA2, + 48747 - 44032: 0x95C4, + 48748 - 44032: 0x95C5, + 48749 - 44032: 0x95C6, + 48750 - 44032: 0x95C7, + 48751 - 44032: 0x95C8, + 48752 - 44032: 0xBBA3, + 48753 - 44032: 0xBBA4, + 48754 - 44032: 0x95C9, + 48755 - 44032: 0xBBA5, + 48756 - 44032: 0xBBA6, + 48757 - 44032: 0xBBA7, + 48758 - 44032: 0x95CA, + 48759 - 44032: 0x95CB, + 48760 - 44032: 0x95CC, + 48761 - 44032: 0x95CD, + 48762 - 44032: 0x95CE, + 48763 - 44032: 0xBBA8, + 48764 - 44032: 0xBBA9, + 48765 - 44032: 0xBBAA, + 48766 - 44032: 0x95CF, + 48767 - 44032: 0x95D0, + 48768 - 44032: 0xBBAB, + 48769 - 44032: 0x95D1, + 48770 - 44032: 0x95D2, + 48771 - 44032: 0x95D3, + 48772 - 44032: 0xBBAC, + 48773 - 44032: 0x95D4, + 48774 - 44032: 0x95D5, + 48775 - 44032: 0x95D6, + 48776 - 44032: 0x95D7, + 48777 - 44032: 0x95D8, + 48778 - 44032: 0x95D9, + 48779 - 44032: 0x95DA, + 48780 - 44032: 0xBBAD, + 48781 - 44032: 0xBBAE, + 48782 - 44032: 0x95DB, + 48783 - 44032: 0xBBAF, + 48784 - 44032: 0xBBB0, + 48785 - 44032: 0xBBB1, + 48786 - 44032: 0x95DC, + 48787 - 44032: 0x95DD, + 48788 - 44032: 0x95DE, + 48789 - 44032: 0x95DF, + 48790 - 44032: 0x95E0, + 48791 - 44032: 0x95E1, + 48792 - 44032: 0xBBB2, + 48793 - 44032: 0xBBB3, + 48794 - 44032: 0x95E2, + 48795 - 44032: 0x95E3, + 48796 - 44032: 0x95E4, + 48797 - 44032: 0x95E5, + 48798 - 44032: 0x95E6, + 48799 - 44032: 0x95E7, + 48800 - 44032: 0x95E8, + 48801 - 44032: 0x95E9, + 48802 - 44032: 0x95EA, + 48803 - 44032: 0x95EB, + 48804 - 44032: 0x95EC, + 48805 - 44032: 0x95ED, + 48806 - 44032: 0x95EE, + 48807 - 44032: 0x95EF, + 48808 - 44032: 0xBBB4, + 48809 - 44032: 0x95F0, + 48810 - 44032: 0x95F1, + 48811 - 44032: 0x95F2, + 48812 - 44032: 0x95F3, + 48813 - 44032: 0x95F4, + 48814 - 44032: 0x95F5, + 48815 - 44032: 0x95F6, + 48816 - 44032: 0x95F7, + 48817 - 44032: 0x95F8, + 48818 - 44032: 0x95F9, + 48819 - 44032: 0x95FA, + 48820 - 44032: 0x95FB, + 48821 - 44032: 0x95FC, + 48822 - 44032: 0x95FD, + 48823 - 44032: 0x95FE, + 48824 - 44032: 0x9641, + 48825 - 44032: 0x9642, + 48826 - 44032: 0x9643, + 48827 - 44032: 0x9644, + 48828 - 44032: 0x9645, + 48829 - 44032: 0x9646, + 48830 - 44032: 0x9647, + 48831 - 44032: 0x9648, + 48832 - 44032: 0x9649, + 48833 - 44032: 0x964A, + 48834 - 44032: 0x964B, + 48835 - 44032: 0x964C, + 48836 - 44032: 0x964D, + 48837 - 44032: 0x964E, + 48838 - 44032: 0x964F, + 48839 - 44032: 0x9650, + 48840 - 44032: 0x9651, + 48841 - 44032: 0x9652, + 48842 - 44032: 0x9653, + 48843 - 44032: 0x9654, + 48844 - 44032: 0x9655, + 48845 - 44032: 0x9656, + 48846 - 44032: 0x9657, + 48847 - 44032: 0x9658, + 48848 - 44032: 0xBBB5, + 48849 - 44032: 0xBBB6, + 48850 - 44032: 0x9659, + 48851 - 44032: 0x965A, + 48852 - 44032: 0xBBB7, + 48853 - 44032: 0x9661, + 48854 - 44032: 0x9662, + 48855 - 44032: 0xBBB8, + 48856 - 44032: 0xBBB9, + 48857 - 44032: 0x9663, + 48858 - 44032: 0x9664, + 48859 - 44032: 0x9665, + 48860 - 44032: 0x9666, + 48861 - 44032: 0x9667, + 48862 - 44032: 0x9668, + 48863 - 44032: 0x9669, + 48864 - 44032: 0xBBBA, + 48865 - 44032: 0x966A, + 48866 - 44032: 0x966B, + 48867 - 44032: 0xBBBB, + 48868 - 44032: 0xBBBC, + 48869 - 44032: 0xBBBD, + 48870 - 44032: 0x966C, + 48871 - 44032: 0x966D, + 48872 - 44032: 0x966E, + 48873 - 44032: 0x966F, + 48874 - 44032: 0x9670, + 48875 - 44032: 0x9671, + 48876 - 44032: 0xBBBE, + 48877 - 44032: 0x9672, + 48878 - 44032: 0x9673, + 48879 - 44032: 0x9674, + 48880 - 44032: 0x9675, + 48881 - 44032: 0x9676, + 48882 - 44032: 0x9677, + 48883 - 44032: 0x9678, + 48884 - 44032: 0x9679, + 48885 - 44032: 0x967A, + 48886 - 44032: 0x9681, + 48887 - 44032: 0x9682, + 48888 - 44032: 0x9683, + 48889 - 44032: 0x9684, + 48890 - 44032: 0x9685, + 48891 - 44032: 0x9686, + 48892 - 44032: 0x9687, + 48893 - 44032: 0x9688, + 48894 - 44032: 0x9689, + 48895 - 44032: 0x968A, + 48896 - 44032: 0x968B, + 48897 - 44032: 0xBBBF, + 48898 - 44032: 0x968C, + 48899 - 44032: 0x968D, + 48900 - 44032: 0x968E, + 48901 - 44032: 0x968F, + 48902 - 44032: 0x9690, + 48903 - 44032: 0x9691, + 48904 - 44032: 0xBBC0, + 48905 - 44032: 0xBBC1, + 48906 - 44032: 0x9692, + 48907 - 44032: 0x9693, + 48908 - 44032: 0x9694, + 48909 - 44032: 0x9695, + 48910 - 44032: 0x9696, + 48911 - 44032: 0x9697, + 48912 - 44032: 0x9698, + 48913 - 44032: 0x9699, + 48914 - 44032: 0x969A, + 48915 - 44032: 0x969B, + 48916 - 44032: 0x969C, + 48917 - 44032: 0x969D, + 48918 - 44032: 0x969E, + 48919 - 44032: 0x969F, + 48920 - 44032: 0xBBC2, + 48921 - 44032: 0xBBC3, + 48922 - 44032: 0x96A0, + 48923 - 44032: 0xBBC4, + 48924 - 44032: 0xBBC5, + 48925 - 44032: 0xBBC6, + 48926 - 44032: 0x96A1, + 48927 - 44032: 0x96A2, + 48928 - 44032: 0x96A3, + 48929 - 44032: 0x96A4, + 48930 - 44032: 0x96A5, + 48931 - 44032: 0x96A6, + 48932 - 44032: 0x96A7, + 48933 - 44032: 0x96A8, + 48934 - 44032: 0x96A9, + 48935 - 44032: 0x96AA, + 48936 - 44032: 0x96AB, + 48937 - 44032: 0x96AC, + 48938 - 44032: 0x96AD, + 48939 - 44032: 0x96AE, + 48940 - 44032: 0x96AF, + 48941 - 44032: 0x96B0, + 48942 - 44032: 0x96B1, + 48943 - 44032: 0x96B2, + 48944 - 44032: 0x96B3, + 48945 - 44032: 0x96B4, + 48946 - 44032: 0x96B5, + 48947 - 44032: 0x96B6, + 48948 - 44032: 0x96B7, + 48949 - 44032: 0x96B8, + 48950 - 44032: 0x96B9, + 48951 - 44032: 0x96BA, + 48952 - 44032: 0x96BB, + 48953 - 44032: 0x96BC, + 48954 - 44032: 0x96BD, + 48955 - 44032: 0x96BE, + 48956 - 44032: 0x96BF, + 48957 - 44032: 0x96C0, + 48958 - 44032: 0x96C1, + 48959 - 44032: 0x96C2, + 48960 - 44032: 0xBBC7, + 48961 - 44032: 0xBBC8, + 48962 - 44032: 0x96C3, + 48963 - 44032: 0x96C4, + 48964 - 44032: 0xBBC9, + 48965 - 44032: 0x96C5, + 48966 - 44032: 0x96C6, + 48967 - 44032: 0x96C7, + 48968 - 44032: 0xBBCA, + 48969 - 44032: 0x96C8, + 48970 - 44032: 0x96C9, + 48971 - 44032: 0x96CA, + 48972 - 44032: 0x96CB, + 48973 - 44032: 0x96CC, + 48974 - 44032: 0x96CD, + 48975 - 44032: 0x96CE, + 48976 - 44032: 0xBBCB, + 48977 - 44032: 0xBBCC, + 48978 - 44032: 0x96CF, + 48979 - 44032: 0x96D0, + 48980 - 44032: 0x96D1, + 48981 - 44032: 0xBBCD, + 48982 - 44032: 0x96D2, + 48983 - 44032: 0x96D3, + 48984 - 44032: 0x96D4, + 48985 - 44032: 0x96D5, + 48986 - 44032: 0x96D6, + 48987 - 44032: 0x96D7, + 48988 - 44032: 0x96D8, + 48989 - 44032: 0x96D9, + 48990 - 44032: 0x96DA, + 48991 - 44032: 0x96DB, + 48992 - 44032: 0x96DC, + 48993 - 44032: 0x96DD, + 48994 - 44032: 0x96DE, + 48995 - 44032: 0x96DF, + 48996 - 44032: 0x96E0, + 48997 - 44032: 0x96E1, + 48998 - 44032: 0x96E2, + 48999 - 44032: 0x96E3, + 49000 - 44032: 0x96E4, + 49001 - 44032: 0x96E5, + 49002 - 44032: 0x96E6, + 49003 - 44032: 0x96E7, + 49004 - 44032: 0x96E8, + 49005 - 44032: 0x96E9, + 49006 - 44032: 0x96EA, + 49007 - 44032: 0x96EB, + 49008 - 44032: 0x96EC, + 49009 - 44032: 0x96ED, + 49010 - 44032: 0x96EE, + 49011 - 44032: 0x96EF, + 49012 - 44032: 0x96F0, + 49013 - 44032: 0x96F1, + 49014 - 44032: 0x96F2, + 49015 - 44032: 0x96F3, + 49016 - 44032: 0x96F4, + 49017 - 44032: 0x96F5, + 49018 - 44032: 0x96F6, + 49019 - 44032: 0x96F7, + 49020 - 44032: 0x96F8, + 49021 - 44032: 0x96F9, + 49022 - 44032: 0x96FA, + 49023 - 44032: 0x96FB, + 49024 - 44032: 0x96FC, + 49025 - 44032: 0x96FD, + 49026 - 44032: 0x96FE, + 49027 - 44032: 0x9741, + 49028 - 44032: 0x9742, + 49029 - 44032: 0x9743, + 49030 - 44032: 0x9744, + 49031 - 44032: 0x9745, + 49032 - 44032: 0x9746, + 49033 - 44032: 0x9747, + 49034 - 44032: 0x9748, + 49035 - 44032: 0x9749, + 49036 - 44032: 0x974A, + 49037 - 44032: 0x974B, + 49038 - 44032: 0x974C, + 49039 - 44032: 0x974D, + 49040 - 44032: 0x974E, + 49041 - 44032: 0x974F, + 49042 - 44032: 0x9750, + 49043 - 44032: 0x9751, + 49044 - 44032: 0xBBCE, + 49045 - 44032: 0x9752, + 49046 - 44032: 0x9753, + 49047 - 44032: 0x9754, + 49048 - 44032: 0x9755, + 49049 - 44032: 0x9756, + 49050 - 44032: 0x9757, + 49051 - 44032: 0x9758, + 49052 - 44032: 0x9759, + 49053 - 44032: 0x975A, + 49054 - 44032: 0x9761, + 49055 - 44032: 0x9762, + 49056 - 44032: 0x9763, + 49057 - 44032: 0x9764, + 49058 - 44032: 0x9765, + 49059 - 44032: 0x9766, + 49060 - 44032: 0x9767, + 49061 - 44032: 0x9768, + 49062 - 44032: 0x9769, + 49063 - 44032: 0x976A, + 49064 - 44032: 0x976B, + 49065 - 44032: 0x976C, + 49066 - 44032: 0x976D, + 49067 - 44032: 0x976E, + 49068 - 44032: 0x976F, + 49069 - 44032: 0x9770, + 49070 - 44032: 0x9771, + 49071 - 44032: 0x9772, + 49072 - 44032: 0xBBCF, + 49073 - 44032: 0x9773, + 49074 - 44032: 0x9774, + 49075 - 44032: 0x9775, + 49076 - 44032: 0x9776, + 49077 - 44032: 0x9777, + 49078 - 44032: 0x9778, + 49079 - 44032: 0x9779, + 49080 - 44032: 0x977A, + 49081 - 44032: 0x9781, + 49082 - 44032: 0x9782, + 49083 - 44032: 0x9783, + 49084 - 44032: 0x9784, + 49085 - 44032: 0x9785, + 49086 - 44032: 0x9786, + 49087 - 44032: 0x9787, + 49088 - 44032: 0x9788, + 49089 - 44032: 0x9789, + 49090 - 44032: 0x978A, + 49091 - 44032: 0x978B, + 49092 - 44032: 0x978C, + 49093 - 44032: 0xBBD0, + 49094 - 44032: 0x978D, + 49095 - 44032: 0x978E, + 49096 - 44032: 0x978F, + 49097 - 44032: 0x9790, + 49098 - 44032: 0x9791, + 49099 - 44032: 0x9792, + 49100 - 44032: 0xBBD1, + 49101 - 44032: 0xBBD2, + 49102 - 44032: 0x9793, + 49103 - 44032: 0x9794, + 49104 - 44032: 0xBBD3, + 49105 - 44032: 0x9795, + 49106 - 44032: 0x9796, + 49107 - 44032: 0x9797, + 49108 - 44032: 0xBBD4, + 49109 - 44032: 0x9798, + 49110 - 44032: 0x9799, + 49111 - 44032: 0x979A, + 49112 - 44032: 0x979B, + 49113 - 44032: 0x979C, + 49114 - 44032: 0x979D, + 49115 - 44032: 0x979E, + 49116 - 44032: 0xBBD5, + 49117 - 44032: 0x979F, + 49118 - 44032: 0x97A0, + 49119 - 44032: 0xBBD6, + 49120 - 44032: 0x97A1, + 49121 - 44032: 0xBBD7, + 49122 - 44032: 0x97A2, + 49123 - 44032: 0x97A3, + 49124 - 44032: 0x97A4, + 49125 - 44032: 0x97A5, + 49126 - 44032: 0x97A6, + 49127 - 44032: 0x97A7, + 49128 - 44032: 0x97A8, + 49129 - 44032: 0x97A9, + 49130 - 44032: 0x97AA, + 49131 - 44032: 0x97AB, + 49132 - 44032: 0x97AC, + 49133 - 44032: 0x97AD, + 49134 - 44032: 0x97AE, + 49135 - 44032: 0x97AF, + 49136 - 44032: 0x97B0, + 49137 - 44032: 0x97B1, + 49138 - 44032: 0x97B2, + 49139 - 44032: 0x97B3, + 49140 - 44032: 0x97B4, + 49141 - 44032: 0x97B5, + 49142 - 44032: 0x97B6, + 49143 - 44032: 0x97B7, + 49144 - 44032: 0x97B8, + 49145 - 44032: 0x97B9, + 49146 - 44032: 0x97BA, + 49147 - 44032: 0x97BB, + 49148 - 44032: 0x97BC, + 49149 - 44032: 0x97BD, + 49150 - 44032: 0x97BE, + 49151 - 44032: 0x97BF, + 49152 - 44032: 0x97C0, + 49153 - 44032: 0x97C1, + 49154 - 44032: 0x97C2, + 49155 - 44032: 0x97C3, + 49156 - 44032: 0x97C4, + 49157 - 44032: 0x97C5, + 49158 - 44032: 0x97C6, + 49159 - 44032: 0x97C7, + 49160 - 44032: 0x97C8, + 49161 - 44032: 0x97C9, + 49162 - 44032: 0x97CA, + 49163 - 44032: 0x97CB, + 49164 - 44032: 0x97CC, + 49165 - 44032: 0x97CD, + 49166 - 44032: 0x97CE, + 49167 - 44032: 0x97CF, + 49168 - 44032: 0x97D0, + 49169 - 44032: 0x97D1, + 49170 - 44032: 0x97D2, + 49171 - 44032: 0x97D3, + 49172 - 44032: 0x97D4, + 49173 - 44032: 0x97D5, + 49174 - 44032: 0x97D6, + 49175 - 44032: 0x97D7, + 49176 - 44032: 0x97D8, + 49177 - 44032: 0x97D9, + 49178 - 44032: 0x97DA, + 49179 - 44032: 0x97DB, + 49180 - 44032: 0x97DC, + 49181 - 44032: 0x97DD, + 49182 - 44032: 0x97DE, + 49183 - 44032: 0x97DF, + 49184 - 44032: 0x97E0, + 49185 - 44032: 0x97E1, + 49186 - 44032: 0x97E2, + 49187 - 44032: 0x97E3, + 49188 - 44032: 0x97E4, + 49189 - 44032: 0x97E5, + 49190 - 44032: 0x97E6, + 49191 - 44032: 0x97E7, + 49192 - 44032: 0x97E8, + 49193 - 44032: 0x97E9, + 49194 - 44032: 0x97EA, + 49195 - 44032: 0x97EB, + 49196 - 44032: 0x97EC, + 49197 - 44032: 0x97ED, + 49198 - 44032: 0x97EE, + 49199 - 44032: 0x97EF, + 49200 - 44032: 0x97F0, + 49201 - 44032: 0x97F1, + 49202 - 44032: 0x97F2, + 49203 - 44032: 0x97F3, + 49204 - 44032: 0x97F4, + 49205 - 44032: 0x97F5, + 49206 - 44032: 0x97F6, + 49207 - 44032: 0x97F7, + 49208 - 44032: 0x97F8, + 49209 - 44032: 0x97F9, + 49210 - 44032: 0x97FA, + 49211 - 44032: 0x97FB, + 49212 - 44032: 0xBBD8, + 49213 - 44032: 0x97FC, + 49214 - 44032: 0x97FD, + 49215 - 44032: 0x97FE, + 49216 - 44032: 0x9841, + 49217 - 44032: 0x9842, + 49218 - 44032: 0x9843, + 49219 - 44032: 0x9844, + 49220 - 44032: 0x9845, + 49221 - 44032: 0x9846, + 49222 - 44032: 0x9847, + 49223 - 44032: 0x9848, + 49224 - 44032: 0x9849, + 49225 - 44032: 0x984A, + 49226 - 44032: 0x984B, + 49227 - 44032: 0x984C, + 49228 - 44032: 0x984D, + 49229 - 44032: 0x984E, + 49230 - 44032: 0x984F, + 49231 - 44032: 0x9850, + 49232 - 44032: 0x9851, + 49233 - 44032: 0xBBD9, + 49234 - 44032: 0x9852, + 49235 - 44032: 0x9853, + 49236 - 44032: 0x9854, + 49237 - 44032: 0x9855, + 49238 - 44032: 0x9856, + 49239 - 44032: 0x9857, + 49240 - 44032: 0xBBDA, + 49241 - 44032: 0x9858, + 49242 - 44032: 0x9859, + 49243 - 44032: 0x985A, + 49244 - 44032: 0xBBDB, + 49245 - 44032: 0x9861, + 49246 - 44032: 0x9862, + 49247 - 44032: 0x9863, + 49248 - 44032: 0xBBDC, + 49249 - 44032: 0x9864, + 49250 - 44032: 0x9865, + 49251 - 44032: 0x9866, + 49252 - 44032: 0x9867, + 49253 - 44032: 0x9868, + 49254 - 44032: 0x9869, + 49255 - 44032: 0x986A, + 49256 - 44032: 0xBBDD, + 49257 - 44032: 0xBBDE, + 49258 - 44032: 0x986B, + 49259 - 44032: 0x986C, + 49260 - 44032: 0x986D, + 49261 - 44032: 0x986E, + 49262 - 44032: 0x986F, + 49263 - 44032: 0x9870, + 49264 - 44032: 0x9871, + 49265 - 44032: 0x9872, + 49266 - 44032: 0x9873, + 49267 - 44032: 0x9874, + 49268 - 44032: 0x9875, + 49269 - 44032: 0x9876, + 49270 - 44032: 0x9877, + 49271 - 44032: 0x9878, + 49272 - 44032: 0x9879, + 49273 - 44032: 0x987A, + 49274 - 44032: 0x9881, + 49275 - 44032: 0x9882, + 49276 - 44032: 0x9883, + 49277 - 44032: 0x9884, + 49278 - 44032: 0x9885, + 49279 - 44032: 0x9886, + 49280 - 44032: 0x9887, + 49281 - 44032: 0x9888, + 49282 - 44032: 0x9889, + 49283 - 44032: 0x988A, + 49284 - 44032: 0x988B, + 49285 - 44032: 0x988C, + 49286 - 44032: 0x988D, + 49287 - 44032: 0x988E, + 49288 - 44032: 0x988F, + 49289 - 44032: 0x9890, + 49290 - 44032: 0x9891, + 49291 - 44032: 0x9892, + 49292 - 44032: 0x9893, + 49293 - 44032: 0x9894, + 49294 - 44032: 0x9895, + 49295 - 44032: 0x9896, + 49296 - 44032: 0xBBDF, + 49297 - 44032: 0xBBE0, + 49298 - 44032: 0x9897, + 49299 - 44032: 0x9898, + 49300 - 44032: 0xBBE1, + 49301 - 44032: 0x9899, + 49302 - 44032: 0x989A, + 49303 - 44032: 0x989B, + 49304 - 44032: 0xBBE2, + 49305 - 44032: 0x989C, + 49306 - 44032: 0x989D, + 49307 - 44032: 0x989E, + 49308 - 44032: 0x989F, + 49309 - 44032: 0x98A0, + 49310 - 44032: 0x98A1, + 49311 - 44032: 0x98A2, + 49312 - 44032: 0xBBE3, + 49313 - 44032: 0xBBE4, + 49314 - 44032: 0x98A3, + 49315 - 44032: 0xBBE5, + 49316 - 44032: 0x98A4, + 49317 - 44032: 0xBBE6, + 49318 - 44032: 0x98A5, + 49319 - 44032: 0x98A6, + 49320 - 44032: 0x98A7, + 49321 - 44032: 0x98A8, + 49322 - 44032: 0x98A9, + 49323 - 44032: 0x98AA, + 49324 - 44032: 0xBBE7, + 49325 - 44032: 0xBBE8, + 49326 - 44032: 0x98AB, + 49327 - 44032: 0xBBE9, + 49328 - 44032: 0xBBEA, + 49329 - 44032: 0x98AC, + 49330 - 44032: 0x98AD, + 49331 - 44032: 0xBBEB, + 49332 - 44032: 0xBBEC, + 49333 - 44032: 0xBBED, + 49334 - 44032: 0xBBEE, + 49335 - 44032: 0x98AE, + 49336 - 44032: 0x98AF, + 49337 - 44032: 0x98B0, + 49338 - 44032: 0x98B1, + 49339 - 44032: 0x98B2, + 49340 - 44032: 0xBBEF, + 49341 - 44032: 0xBBF0, + 49342 - 44032: 0x98B3, + 49343 - 44032: 0xBBF1, + 49344 - 44032: 0xBBF2, + 49345 - 44032: 0xBBF3, + 49346 - 44032: 0x98B4, + 49347 - 44032: 0x98B5, + 49348 - 44032: 0x98B6, + 49349 - 44032: 0xBBF4, + 49350 - 44032: 0x98B7, + 49351 - 44032: 0x98B8, + 49352 - 44032: 0xBBF5, + 49353 - 44032: 0xBBF6, + 49354 - 44032: 0x98B9, + 49355 - 44032: 0x98BA, + 49356 - 44032: 0xBBF7, + 49357 - 44032: 0x98BB, + 49358 - 44032: 0x98BC, + 49359 - 44032: 0x98BD, + 49360 - 44032: 0xBBF8, + 49361 - 44032: 0x98BE, + 49362 - 44032: 0x98BF, + 49363 - 44032: 0x98C0, + 49364 - 44032: 0x98C1, + 49365 - 44032: 0x98C2, + 49366 - 44032: 0x98C3, + 49367 - 44032: 0x98C4, + 49368 - 44032: 0xBBF9, + 49369 - 44032: 0xBBFA, + 49370 - 44032: 0x98C5, + 49371 - 44032: 0xBBFB, + 49372 - 44032: 0xBBFC, + 49373 - 44032: 0xBBFD, + 49374 - 44032: 0x98C6, + 49375 - 44032: 0x98C7, + 49376 - 44032: 0x98C8, + 49377 - 44032: 0x98C9, + 49378 - 44032: 0x98CA, + 49379 - 44032: 0x98CB, + 49380 - 44032: 0xBBFE, + 49381 - 44032: 0xBCA1, + 49382 - 44032: 0x98CC, + 49383 - 44032: 0x98CD, + 49384 - 44032: 0xBCA2, + 49385 - 44032: 0x98CE, + 49386 - 44032: 0x98CF, + 49387 - 44032: 0x98D0, + 49388 - 44032: 0xBCA3, + 49389 - 44032: 0x98D1, + 49390 - 44032: 0x98D2, + 49391 - 44032: 0x98D3, + 49392 - 44032: 0x98D4, + 49393 - 44032: 0x98D5, + 49394 - 44032: 0x98D6, + 49395 - 44032: 0x98D7, + 49396 - 44032: 0xBCA4, + 49397 - 44032: 0xBCA5, + 49398 - 44032: 0x98D8, + 49399 - 44032: 0xBCA6, + 49400 - 44032: 0x98D9, + 49401 - 44032: 0xBCA7, + 49402 - 44032: 0x98DA, + 49403 - 44032: 0x98DB, + 49404 - 44032: 0x98DC, + 49405 - 44032: 0x98DD, + 49406 - 44032: 0x98DE, + 49407 - 44032: 0x98DF, + 49408 - 44032: 0xBCA8, + 49409 - 44032: 0x98E0, + 49410 - 44032: 0x98E1, + 49411 - 44032: 0x98E2, + 49412 - 44032: 0xBCA9, + 49413 - 44032: 0x98E3, + 49414 - 44032: 0x98E4, + 49415 - 44032: 0x98E5, + 49416 - 44032: 0xBCAA, + 49417 - 44032: 0x98E6, + 49418 - 44032: 0x98E7, + 49419 - 44032: 0x98E8, + 49420 - 44032: 0x98E9, + 49421 - 44032: 0x98EA, + 49422 - 44032: 0x98EB, + 49423 - 44032: 0x98EC, + 49424 - 44032: 0xBCAB, + 49425 - 44032: 0x98ED, + 49426 - 44032: 0x98EE, + 49427 - 44032: 0x98EF, + 49428 - 44032: 0x98F0, + 49429 - 44032: 0xBCAC, + 49430 - 44032: 0x98F1, + 49431 - 44032: 0x98F2, + 49432 - 44032: 0x98F3, + 49433 - 44032: 0x98F4, + 49434 - 44032: 0x98F5, + 49435 - 44032: 0x98F6, + 49436 - 44032: 0xBCAD, + 49437 - 44032: 0xBCAE, + 49438 - 44032: 0xBCAF, + 49439 - 44032: 0xBCB0, + 49440 - 44032: 0xBCB1, + 49441 - 44032: 0x98F7, + 49442 - 44032: 0x98F8, + 49443 - 44032: 0xBCB2, + 49444 - 44032: 0xBCB3, + 49445 - 44032: 0x98F9, + 49446 - 44032: 0xBCB4, + 49447 - 44032: 0xBCB5, + 49448 - 44032: 0x98FA, + 49449 - 44032: 0x98FB, + 49450 - 44032: 0x98FC, + 49451 - 44032: 0x98FD, + 49452 - 44032: 0xBCB6, + 49453 - 44032: 0xBCB7, + 49454 - 44032: 0x98FE, + 49455 - 44032: 0xBCB8, + 49456 - 44032: 0xBCB9, + 49457 - 44032: 0xBCBA, + 49458 - 44032: 0x9941, + 49459 - 44032: 0x9942, + 49460 - 44032: 0x9943, + 49461 - 44032: 0x9944, + 49462 - 44032: 0xBCBB, + 49463 - 44032: 0x9945, + 49464 - 44032: 0xBCBC, + 49465 - 44032: 0xBCBD, + 49466 - 44032: 0x9946, + 49467 - 44032: 0x9947, + 49468 - 44032: 0xBCBE, + 49469 - 44032: 0x9948, + 49470 - 44032: 0x9949, + 49471 - 44032: 0x994A, + 49472 - 44032: 0xBCBF, + 49473 - 44032: 0x994B, + 49474 - 44032: 0x994C, + 49475 - 44032: 0x994D, + 49476 - 44032: 0x994E, + 49477 - 44032: 0x994F, + 49478 - 44032: 0x9950, + 49479 - 44032: 0x9951, + 49480 - 44032: 0xBCC0, + 49481 - 44032: 0xBCC1, + 49482 - 44032: 0x9952, + 49483 - 44032: 0xBCC2, + 49484 - 44032: 0xBCC3, + 49485 - 44032: 0xBCC4, + 49486 - 44032: 0x9953, + 49487 - 44032: 0x9954, + 49488 - 44032: 0x9955, + 49489 - 44032: 0x9956, + 49490 - 44032: 0x9957, + 49491 - 44032: 0x9958, + 49492 - 44032: 0xBCC5, + 49493 - 44032: 0xBCC6, + 49494 - 44032: 0x9959, + 49495 - 44032: 0x995A, + 49496 - 44032: 0xBCC7, + 49497 - 44032: 0x9961, + 49498 - 44032: 0x9962, + 49499 - 44032: 0x9963, + 49500 - 44032: 0xBCC8, + 49501 - 44032: 0x9964, + 49502 - 44032: 0x9965, + 49503 - 44032: 0x9966, + 49504 - 44032: 0x9967, + 49505 - 44032: 0x9968, + 49506 - 44032: 0x9969, + 49507 - 44032: 0x996A, + 49508 - 44032: 0xBCC9, + 49509 - 44032: 0xBCCA, + 49510 - 44032: 0x996B, + 49511 - 44032: 0xBCCB, + 49512 - 44032: 0xBCCC, + 49513 - 44032: 0xBCCD, + 49514 - 44032: 0x996C, + 49515 - 44032: 0x996D, + 49516 - 44032: 0x996E, + 49517 - 44032: 0x996F, + 49518 - 44032: 0x9970, + 49519 - 44032: 0x9971, + 49520 - 44032: 0xBCCE, + 49521 - 44032: 0x9972, + 49522 - 44032: 0x9973, + 49523 - 44032: 0x9974, + 49524 - 44032: 0xBCCF, + 49525 - 44032: 0x9975, + 49526 - 44032: 0x9976, + 49527 - 44032: 0x9977, + 49528 - 44032: 0xBCD0, + 49529 - 44032: 0x9978, + 49530 - 44032: 0x9979, + 49531 - 44032: 0x997A, + 49532 - 44032: 0x9981, + 49533 - 44032: 0x9982, + 49534 - 44032: 0x9983, + 49535 - 44032: 0x9984, + 49536 - 44032: 0x9985, + 49537 - 44032: 0x9986, + 49538 - 44032: 0x9987, + 49539 - 44032: 0x9988, + 49540 - 44032: 0x9989, + 49541 - 44032: 0xBCD1, + 49542 - 44032: 0x998A, + 49543 - 44032: 0x998B, + 49544 - 44032: 0x998C, + 49545 - 44032: 0x998D, + 49546 - 44032: 0x998E, + 49547 - 44032: 0x998F, + 49548 - 44032: 0xBCD2, + 49549 - 44032: 0xBCD3, + 49550 - 44032: 0xBCD4, + 49551 - 44032: 0x9990, + 49552 - 44032: 0xBCD5, + 49553 - 44032: 0x9991, + 49554 - 44032: 0x9992, + 49555 - 44032: 0x9993, + 49556 - 44032: 0xBCD6, + 49557 - 44032: 0x9994, + 49558 - 44032: 0xBCD7, + 49559 - 44032: 0x9995, + 49560 - 44032: 0x9996, + 49561 - 44032: 0x9997, + 49562 - 44032: 0x9998, + 49563 - 44032: 0x9999, + 49564 - 44032: 0xBCD8, + 49565 - 44032: 0xBCD9, + 49566 - 44032: 0x999A, + 49567 - 44032: 0xBCDA, + 49568 - 44032: 0x999B, + 49569 - 44032: 0xBCDB, + 49570 - 44032: 0x999C, + 49571 - 44032: 0x999D, + 49572 - 44032: 0x999E, + 49573 - 44032: 0xBCDC, + 49574 - 44032: 0x999F, + 49575 - 44032: 0x99A0, + 49576 - 44032: 0xBCDD, + 49577 - 44032: 0xBCDE, + 49578 - 44032: 0x99A1, + 49579 - 44032: 0x99A2, + 49580 - 44032: 0xBCDF, + 49581 - 44032: 0x99A3, + 49582 - 44032: 0x99A4, + 49583 - 44032: 0x99A5, + 49584 - 44032: 0xBCE0, + 49585 - 44032: 0x99A6, + 49586 - 44032: 0x99A7, + 49587 - 44032: 0x99A8, + 49588 - 44032: 0x99A9, + 49589 - 44032: 0x99AA, + 49590 - 44032: 0x99AB, + 49591 - 44032: 0x99AC, + 49592 - 44032: 0x99AD, + 49593 - 44032: 0x99AE, + 49594 - 44032: 0x99AF, + 49595 - 44032: 0x99B0, + 49596 - 44032: 0x99B1, + 49597 - 44032: 0xBCE1, + 49598 - 44032: 0x99B2, + 49599 - 44032: 0x99B3, + 49600 - 44032: 0x99B4, + 49601 - 44032: 0x99B5, + 49602 - 44032: 0x99B6, + 49603 - 44032: 0x99B7, + 49604 - 44032: 0xBCE2, + 49605 - 44032: 0x99B8, + 49606 - 44032: 0x99B9, + 49607 - 44032: 0x99BA, + 49608 - 44032: 0xBCE3, + 49609 - 44032: 0x99BB, + 49610 - 44032: 0x99BC, + 49611 - 44032: 0x99BD, + 49612 - 44032: 0xBCE4, + 49613 - 44032: 0x99BE, + 49614 - 44032: 0x99BF, + 49615 - 44032: 0x99C0, + 49616 - 44032: 0x99C1, + 49617 - 44032: 0x99C2, + 49618 - 44032: 0x99C3, + 49619 - 44032: 0x99C4, + 49620 - 44032: 0xBCE5, + 49621 - 44032: 0x99C5, + 49622 - 44032: 0x99C6, + 49623 - 44032: 0xBCE6, + 49624 - 44032: 0xBCE7, + 49625 - 44032: 0x99C7, + 49626 - 44032: 0x99C8, + 49627 - 44032: 0x99C9, + 49628 - 44032: 0x99CA, + 49629 - 44032: 0x99CB, + 49630 - 44032: 0x99CC, + 49631 - 44032: 0x99CD, + 49632 - 44032: 0xBCE8, + 49633 - 44032: 0x99CE, + 49634 - 44032: 0x99CF, + 49635 - 44032: 0x99D0, + 49636 - 44032: 0xBCE9, + 49637 - 44032: 0x99D1, + 49638 - 44032: 0x99D2, + 49639 - 44032: 0x99D3, + 49640 - 44032: 0xBCEA, + 49641 - 44032: 0x99D4, + 49642 - 44032: 0x99D5, + 49643 - 44032: 0x99D6, + 49644 - 44032: 0x99D7, + 49645 - 44032: 0x99D8, + 49646 - 44032: 0x99D9, + 49647 - 44032: 0x99DA, + 49648 - 44032: 0xBCEB, + 49649 - 44032: 0xBCEC, + 49650 - 44032: 0x99DB, + 49651 - 44032: 0xBCED, + 49652 - 44032: 0x99DC, + 49653 - 44032: 0x99DD, + 49654 - 44032: 0x99DE, + 49655 - 44032: 0x99DF, + 49656 - 44032: 0x99E0, + 49657 - 44032: 0x99E1, + 49658 - 44032: 0x99E2, + 49659 - 44032: 0x99E3, + 49660 - 44032: 0xBCEE, + 49661 - 44032: 0xBCEF, + 49662 - 44032: 0x99E4, + 49663 - 44032: 0x99E5, + 49664 - 44032: 0xBCF0, + 49665 - 44032: 0x99E6, + 49666 - 44032: 0x99E7, + 49667 - 44032: 0x99E8, + 49668 - 44032: 0xBCF1, + 49669 - 44032: 0x99E9, + 49670 - 44032: 0x99EA, + 49671 - 44032: 0x99EB, + 49672 - 44032: 0x99EC, + 49673 - 44032: 0x99ED, + 49674 - 44032: 0x99EE, + 49675 - 44032: 0x99EF, + 49676 - 44032: 0xBCF2, + 49677 - 44032: 0xBCF3, + 49678 - 44032: 0x99F0, + 49679 - 44032: 0xBCF4, + 49680 - 44032: 0x99F1, + 49681 - 44032: 0xBCF5, + 49682 - 44032: 0x99F2, + 49683 - 44032: 0x99F3, + 49684 - 44032: 0x99F4, + 49685 - 44032: 0x99F5, + 49686 - 44032: 0x99F6, + 49687 - 44032: 0x99F7, + 49688 - 44032: 0xBCF6, + 49689 - 44032: 0xBCF7, + 49690 - 44032: 0x99F8, + 49691 - 44032: 0x99F9, + 49692 - 44032: 0xBCF8, + 49693 - 44032: 0x99FA, + 49694 - 44032: 0x99FB, + 49695 - 44032: 0xBCF9, + 49696 - 44032: 0xBCFA, + 49697 - 44032: 0x99FC, + 49698 - 44032: 0x99FD, + 49699 - 44032: 0x99FE, + 49700 - 44032: 0x9A41, + 49701 - 44032: 0x9A42, + 49702 - 44032: 0x9A43, + 49703 - 44032: 0x9A44, + 49704 - 44032: 0xBCFB, + 49705 - 44032: 0xBCFC, + 49706 - 44032: 0x9A45, + 49707 - 44032: 0xBCFD, + 49708 - 44032: 0x9A46, + 49709 - 44032: 0xBCFE, + 49710 - 44032: 0x9A47, + 49711 - 44032: 0xBDA1, + 49712 - 44032: 0x9A48, + 49713 - 44032: 0xBDA2, + 49714 - 44032: 0xBDA3, + 49715 - 44032: 0x9A49, + 49716 - 44032: 0xBDA4, + 49717 - 44032: 0x9A4A, + 49718 - 44032: 0x9A4B, + 49719 - 44032: 0x9A4C, + 49720 - 44032: 0x9A4D, + 49721 - 44032: 0x9A4E, + 49722 - 44032: 0x9A4F, + 49723 - 44032: 0x9A50, + 49724 - 44032: 0x9A51, + 49725 - 44032: 0x9A52, + 49726 - 44032: 0x9A53, + 49727 - 44032: 0x9A54, + 49728 - 44032: 0x9A55, + 49729 - 44032: 0x9A56, + 49730 - 44032: 0x9A57, + 49731 - 44032: 0x9A58, + 49732 - 44032: 0x9A59, + 49733 - 44032: 0x9A5A, + 49734 - 44032: 0x9A61, + 49735 - 44032: 0x9A62, + 49736 - 44032: 0xBDA5, + 49737 - 44032: 0x9A63, + 49738 - 44032: 0x9A64, + 49739 - 44032: 0x9A65, + 49740 - 44032: 0x9A66, + 49741 - 44032: 0x9A67, + 49742 - 44032: 0x9A68, + 49743 - 44032: 0x9A69, + 49744 - 44032: 0xBDA6, + 49745 - 44032: 0xBDA7, + 49746 - 44032: 0x9A6A, + 49747 - 44032: 0x9A6B, + 49748 - 44032: 0xBDA8, + 49749 - 44032: 0x9A6C, + 49750 - 44032: 0x9A6D, + 49751 - 44032: 0x9A6E, + 49752 - 44032: 0xBDA9, + 49753 - 44032: 0x9A6F, + 49754 - 44032: 0x9A70, + 49755 - 44032: 0x9A71, + 49756 - 44032: 0x9A72, + 49757 - 44032: 0x9A73, + 49758 - 44032: 0x9A74, + 49759 - 44032: 0x9A75, + 49760 - 44032: 0xBDAA, + 49761 - 44032: 0x9A76, + 49762 - 44032: 0x9A77, + 49763 - 44032: 0x9A78, + 49764 - 44032: 0x9A79, + 49765 - 44032: 0xBDAB, + 49766 - 44032: 0x9A7A, + 49767 - 44032: 0x9A81, + 49768 - 44032: 0x9A82, + 49769 - 44032: 0x9A83, + 49770 - 44032: 0x9A84, + 49771 - 44032: 0x9A85, + 49772 - 44032: 0xBDAC, + 49773 - 44032: 0xBDAD, + 49774 - 44032: 0x9A86, + 49775 - 44032: 0x9A87, + 49776 - 44032: 0xBDAE, + 49777 - 44032: 0x9A88, + 49778 - 44032: 0x9A89, + 49779 - 44032: 0x9A8A, + 49780 - 44032: 0xBDAF, + 49781 - 44032: 0x9A8B, + 49782 - 44032: 0x9A8C, + 49783 - 44032: 0x9A8D, + 49784 - 44032: 0x9A8E, + 49785 - 44032: 0x9A8F, + 49786 - 44032: 0x9A90, + 49787 - 44032: 0x9A91, + 49788 - 44032: 0xBDB0, + 49789 - 44032: 0xBDB1, + 49790 - 44032: 0x9A92, + 49791 - 44032: 0xBDB2, + 49792 - 44032: 0x9A93, + 49793 - 44032: 0xBDB3, + 49794 - 44032: 0x9A94, + 49795 - 44032: 0x9A95, + 49796 - 44032: 0x9A96, + 49797 - 44032: 0x9A97, + 49798 - 44032: 0x9A98, + 49799 - 44032: 0x9A99, + 49800 - 44032: 0xBDB4, + 49801 - 44032: 0xBDB5, + 49802 - 44032: 0x9A9A, + 49803 - 44032: 0x9A9B, + 49804 - 44032: 0x9A9C, + 49805 - 44032: 0x9A9D, + 49806 - 44032: 0x9A9E, + 49807 - 44032: 0x9A9F, + 49808 - 44032: 0xBDB6, + 49809 - 44032: 0x9AA0, + 49810 - 44032: 0x9AA1, + 49811 - 44032: 0x9AA2, + 49812 - 44032: 0x9AA3, + 49813 - 44032: 0x9AA4, + 49814 - 44032: 0x9AA5, + 49815 - 44032: 0x9AA6, + 49816 - 44032: 0xBDB7, + 49817 - 44032: 0x9AA7, + 49818 - 44032: 0x9AA8, + 49819 - 44032: 0xBDB8, + 49820 - 44032: 0x9AA9, + 49821 - 44032: 0xBDB9, + 49822 - 44032: 0x9AAA, + 49823 - 44032: 0x9AAB, + 49824 - 44032: 0x9AAC, + 49825 - 44032: 0x9AAD, + 49826 - 44032: 0x9AAE, + 49827 - 44032: 0x9AAF, + 49828 - 44032: 0xBDBA, + 49829 - 44032: 0xBDBB, + 49830 - 44032: 0x9AB0, + 49831 - 44032: 0x9AB1, + 49832 - 44032: 0xBDBC, + 49833 - 44032: 0x9AB2, + 49834 - 44032: 0x9AB3, + 49835 - 44032: 0x9AB4, + 49836 - 44032: 0xBDBD, + 49837 - 44032: 0xBDBE, + 49838 - 44032: 0x9AB5, + 49839 - 44032: 0x9AB6, + 49840 - 44032: 0x9AB7, + 49841 - 44032: 0x9AB8, + 49842 - 44032: 0x9AB9, + 49843 - 44032: 0x9ABA, + 49844 - 44032: 0xBDBF, + 49845 - 44032: 0xBDC0, + 49846 - 44032: 0x9ABB, + 49847 - 44032: 0xBDC1, + 49848 - 44032: 0x9ABC, + 49849 - 44032: 0xBDC2, + 49850 - 44032: 0x9ABD, + 49851 - 44032: 0x9ABE, + 49852 - 44032: 0x9ABF, + 49853 - 44032: 0x9AC0, + 49854 - 44032: 0x9AC1, + 49855 - 44032: 0x9AC2, + 49856 - 44032: 0x9AC3, + 49857 - 44032: 0x9AC4, + 49858 - 44032: 0x9AC5, + 49859 - 44032: 0x9AC6, + 49860 - 44032: 0x9AC7, + 49861 - 44032: 0x9AC8, + 49862 - 44032: 0x9AC9, + 49863 - 44032: 0x9ACA, + 49864 - 44032: 0x9ACB, + 49865 - 44032: 0x9ACC, + 49866 - 44032: 0x9ACD, + 49867 - 44032: 0x9ACE, + 49868 - 44032: 0x9ACF, + 49869 - 44032: 0x9AD0, + 49870 - 44032: 0x9AD1, + 49871 - 44032: 0x9AD2, + 49872 - 44032: 0x9AD3, + 49873 - 44032: 0x9AD4, + 49874 - 44032: 0x9AD5, + 49875 - 44032: 0x9AD6, + 49876 - 44032: 0x9AD7, + 49877 - 44032: 0x9AD8, + 49878 - 44032: 0x9AD9, + 49879 - 44032: 0x9ADA, + 49880 - 44032: 0x9ADB, + 49881 - 44032: 0x9ADC, + 49882 - 44032: 0x9ADD, + 49883 - 44032: 0x9ADE, + 49884 - 44032: 0xBDC3, + 49885 - 44032: 0xBDC4, + 49886 - 44032: 0x9ADF, + 49887 - 44032: 0x9AE0, + 49888 - 44032: 0xBDC5, + 49889 - 44032: 0x9AE1, + 49890 - 44032: 0x9AE2, + 49891 - 44032: 0xBDC6, + 49892 - 44032: 0xBDC7, + 49893 - 44032: 0x9AE3, + 49894 - 44032: 0x9AE4, + 49895 - 44032: 0x9AE5, + 49896 - 44032: 0x9AE6, + 49897 - 44032: 0x9AE7, + 49898 - 44032: 0x9AE8, + 49899 - 44032: 0xBDC8, + 49900 - 44032: 0xBDC9, + 49901 - 44032: 0xBDCA, + 49902 - 44032: 0x9AE9, + 49903 - 44032: 0xBDCB, + 49904 - 44032: 0x9AEA, + 49905 - 44032: 0xBDCC, + 49906 - 44032: 0x9AEB, + 49907 - 44032: 0x9AEC, + 49908 - 44032: 0x9AED, + 49909 - 44032: 0x9AEE, + 49910 - 44032: 0xBDCD, + 49911 - 44032: 0x9AEF, + 49912 - 44032: 0xBDCE, + 49913 - 44032: 0xBDCF, + 49914 - 44032: 0x9AF0, + 49915 - 44032: 0xBDD0, + 49916 - 44032: 0xBDD1, + 49917 - 44032: 0x9AF1, + 49918 - 44032: 0x9AF2, + 49919 - 44032: 0x9AF3, + 49920 - 44032: 0xBDD2, + 49921 - 44032: 0x9AF4, + 49922 - 44032: 0x9AF5, + 49923 - 44032: 0x9AF6, + 49924 - 44032: 0x9AF7, + 49925 - 44032: 0x9AF8, + 49926 - 44032: 0x9AF9, + 49927 - 44032: 0x9AFA, + 49928 - 44032: 0xBDD3, + 49929 - 44032: 0xBDD4, + 49930 - 44032: 0x9AFB, + 49931 - 44032: 0x9AFC, + 49932 - 44032: 0xBDD5, + 49933 - 44032: 0xBDD6, + 49934 - 44032: 0x9AFD, + 49935 - 44032: 0x9AFE, + 49936 - 44032: 0x9B41, + 49937 - 44032: 0x9B42, + 49938 - 44032: 0x9B43, + 49939 - 44032: 0xBDD7, + 49940 - 44032: 0xBDD8, + 49941 - 44032: 0xBDD9, + 49942 - 44032: 0x9B44, + 49943 - 44032: 0x9B45, + 49944 - 44032: 0xBDDA, + 49945 - 44032: 0x9B46, + 49946 - 44032: 0x9B47, + 49947 - 44032: 0x9B48, + 49948 - 44032: 0xBDDB, + 49949 - 44032: 0x9B49, + 49950 - 44032: 0x9B4A, + 49951 - 44032: 0x9B4B, + 49952 - 44032: 0x9B4C, + 49953 - 44032: 0x9B4D, + 49954 - 44032: 0x9B4E, + 49955 - 44032: 0x9B4F, + 49956 - 44032: 0xBDDC, + 49957 - 44032: 0xBDDD, + 49958 - 44032: 0x9B50, + 49959 - 44032: 0x9B51, + 49960 - 44032: 0xBDDE, + 49961 - 44032: 0xBDDF, + 49962 - 44032: 0x9B52, + 49963 - 44032: 0x9B53, + 49964 - 44032: 0x9B54, + 49965 - 44032: 0x9B55, + 49966 - 44032: 0x9B56, + 49967 - 44032: 0x9B57, + 49968 - 44032: 0x9B58, + 49969 - 44032: 0x9B59, + 49970 - 44032: 0x9B5A, + 49971 - 44032: 0x9B61, + 49972 - 44032: 0x9B62, + 49973 - 44032: 0x9B63, + 49974 - 44032: 0x9B64, + 49975 - 44032: 0x9B65, + 49976 - 44032: 0x9B66, + 49977 - 44032: 0x9B67, + 49978 - 44032: 0x9B68, + 49979 - 44032: 0x9B69, + 49980 - 44032: 0x9B6A, + 49981 - 44032: 0x9B6B, + 49982 - 44032: 0x9B6C, + 49983 - 44032: 0x9B6D, + 49984 - 44032: 0x9B6E, + 49985 - 44032: 0x9B6F, + 49986 - 44032: 0x9B70, + 49987 - 44032: 0x9B71, + 49988 - 44032: 0x9B72, + 49989 - 44032: 0xBDE0, + 49990 - 44032: 0x9B73, + 49991 - 44032: 0x9B74, + 49992 - 44032: 0x9B75, + 49993 - 44032: 0x9B76, + 49994 - 44032: 0x9B77, + 49995 - 44032: 0x9B78, + 49996 - 44032: 0x9B79, + 49997 - 44032: 0x9B7A, + 49998 - 44032: 0x9B81, + 49999 - 44032: 0x9B82, + 50000 - 44032: 0x9B83, + 50001 - 44032: 0x9B84, + 50002 - 44032: 0x9B85, + 50003 - 44032: 0x9B86, + 50004 - 44032: 0x9B87, + 50005 - 44032: 0x9B88, + 50006 - 44032: 0x9B89, + 50007 - 44032: 0x9B8A, + 50008 - 44032: 0x9B8B, + 50009 - 44032: 0x9B8C, + 50010 - 44032: 0x9B8D, + 50011 - 44032: 0x9B8E, + 50012 - 44032: 0x9B8F, + 50013 - 44032: 0x9B90, + 50014 - 44032: 0x9B91, + 50015 - 44032: 0x9B92, + 50016 - 44032: 0x9B93, + 50017 - 44032: 0x9B94, + 50018 - 44032: 0x9B95, + 50019 - 44032: 0x9B96, + 50020 - 44032: 0x9B97, + 50021 - 44032: 0x9B98, + 50022 - 44032: 0x9B99, + 50023 - 44032: 0x9B9A, + 50024 - 44032: 0xBDE1, + 50025 - 44032: 0xBDE2, + 50026 - 44032: 0x9B9B, + 50027 - 44032: 0x9B9C, + 50028 - 44032: 0xBDE3, + 50029 - 44032: 0x9B9D, + 50030 - 44032: 0x9B9E, + 50031 - 44032: 0x9B9F, + 50032 - 44032: 0xBDE4, + 50033 - 44032: 0x9BA0, + 50034 - 44032: 0xBDE5, + 50035 - 44032: 0x9BA1, + 50036 - 44032: 0x9BA2, + 50037 - 44032: 0x9BA3, + 50038 - 44032: 0x9BA4, + 50039 - 44032: 0x9BA5, + 50040 - 44032: 0xBDE6, + 50041 - 44032: 0xBDE7, + 50042 - 44032: 0x9BA6, + 50043 - 44032: 0x9BA7, + 50044 - 44032: 0xBDE8, + 50045 - 44032: 0xBDE9, + 50046 - 44032: 0x9BA8, + 50047 - 44032: 0x9BA9, + 50048 - 44032: 0x9BAA, + 50049 - 44032: 0x9BAB, + 50050 - 44032: 0x9BAC, + 50051 - 44032: 0x9BAD, + 50052 - 44032: 0xBDEA, + 50053 - 44032: 0x9BAE, + 50054 - 44032: 0x9BAF, + 50055 - 44032: 0x9BB0, + 50056 - 44032: 0xBDEB, + 50057 - 44032: 0x9BB1, + 50058 - 44032: 0x9BB2, + 50059 - 44032: 0x9BB3, + 50060 - 44032: 0xBDEC, + 50061 - 44032: 0x9BB4, + 50062 - 44032: 0x9BB5, + 50063 - 44032: 0x9BB6, + 50064 - 44032: 0x9BB7, + 50065 - 44032: 0x9BB8, + 50066 - 44032: 0x9BB9, + 50067 - 44032: 0x9BBA, + 50068 - 44032: 0x9BBB, + 50069 - 44032: 0x9BBC, + 50070 - 44032: 0x9BBD, + 50071 - 44032: 0x9BBE, + 50072 - 44032: 0x9BBF, + 50073 - 44032: 0x9BC0, + 50074 - 44032: 0x9BC1, + 50075 - 44032: 0x9BC2, + 50076 - 44032: 0x9BC3, + 50077 - 44032: 0x9BC4, + 50078 - 44032: 0x9BC5, + 50079 - 44032: 0x9BC6, + 50080 - 44032: 0x9BC7, + 50081 - 44032: 0x9BC8, + 50082 - 44032: 0x9BC9, + 50083 - 44032: 0x9BCA, + 50084 - 44032: 0x9BCB, + 50085 - 44032: 0x9BCC, + 50086 - 44032: 0x9BCD, + 50087 - 44032: 0x9BCE, + 50088 - 44032: 0x9BCF, + 50089 - 44032: 0x9BD0, + 50090 - 44032: 0x9BD1, + 50091 - 44032: 0x9BD2, + 50092 - 44032: 0x9BD3, + 50093 - 44032: 0x9BD4, + 50094 - 44032: 0x9BD5, + 50095 - 44032: 0x9BD6, + 50096 - 44032: 0x9BD7, + 50097 - 44032: 0x9BD8, + 50098 - 44032: 0x9BD9, + 50099 - 44032: 0x9BDA, + 50100 - 44032: 0x9BDB, + 50101 - 44032: 0x9BDC, + 50102 - 44032: 0x9BDD, + 50103 - 44032: 0x9BDE, + 50104 - 44032: 0x9BDF, + 50105 - 44032: 0x9BE0, + 50106 - 44032: 0x9BE1, + 50107 - 44032: 0x9BE2, + 50108 - 44032: 0x9BE3, + 50109 - 44032: 0x9BE4, + 50110 - 44032: 0x9BE5, + 50111 - 44032: 0x9BE6, + 50112 - 44032: 0xBDED, + 50113 - 44032: 0x9BE7, + 50114 - 44032: 0x9BE8, + 50115 - 44032: 0x9BE9, + 50116 - 44032: 0x9BEA, + 50117 - 44032: 0x9BEB, + 50118 - 44032: 0x9BEC, + 50119 - 44032: 0x9BED, + 50120 - 44032: 0x9BEE, + 50121 - 44032: 0x9BEF, + 50122 - 44032: 0x9BF0, + 50123 - 44032: 0x9BF1, + 50124 - 44032: 0x9BF2, + 50125 - 44032: 0x9BF3, + 50126 - 44032: 0x9BF4, + 50127 - 44032: 0x9BF5, + 50128 - 44032: 0x9BF6, + 50129 - 44032: 0x9BF7, + 50130 - 44032: 0x9BF8, + 50131 - 44032: 0x9BF9, + 50132 - 44032: 0x9BFA, + 50133 - 44032: 0x9BFB, + 50134 - 44032: 0x9BFC, + 50135 - 44032: 0x9BFD, + 50136 - 44032: 0xBDEE, + 50137 - 44032: 0xBDEF, + 50138 - 44032: 0x9BFE, + 50139 - 44032: 0x9C41, + 50140 - 44032: 0xBDF0, + 50141 - 44032: 0x9C42, + 50142 - 44032: 0x9C43, + 50143 - 44032: 0xBDF1, + 50144 - 44032: 0xBDF2, + 50145 - 44032: 0x9C44, + 50146 - 44032: 0xBDF3, + 50147 - 44032: 0x9C45, + 50148 - 44032: 0x9C46, + 50149 - 44032: 0x9C47, + 50150 - 44032: 0x9C48, + 50151 - 44032: 0x9C49, + 50152 - 44032: 0xBDF4, + 50153 - 44032: 0xBDF5, + 50154 - 44032: 0x9C4A, + 50155 - 44032: 0x9C4B, + 50156 - 44032: 0x9C4C, + 50157 - 44032: 0xBDF6, + 50158 - 44032: 0x9C4D, + 50159 - 44032: 0x9C4E, + 50160 - 44032: 0x9C4F, + 50161 - 44032: 0x9C50, + 50162 - 44032: 0x9C51, + 50163 - 44032: 0x9C52, + 50164 - 44032: 0xBDF7, + 50165 - 44032: 0xBDF8, + 50166 - 44032: 0x9C53, + 50167 - 44032: 0x9C54, + 50168 - 44032: 0xBDF9, + 50169 - 44032: 0x9C55, + 50170 - 44032: 0x9C56, + 50171 - 44032: 0x9C57, + 50172 - 44032: 0x9C58, + 50173 - 44032: 0x9C59, + 50174 - 44032: 0x9C5A, + 50175 - 44032: 0x9C61, + 50176 - 44032: 0x9C62, + 50177 - 44032: 0x9C63, + 50178 - 44032: 0x9C64, + 50179 - 44032: 0x9C65, + 50180 - 44032: 0x9C66, + 50181 - 44032: 0x9C67, + 50182 - 44032: 0x9C68, + 50183 - 44032: 0x9C69, + 50184 - 44032: 0xBDFA, + 50185 - 44032: 0x9C6A, + 50186 - 44032: 0x9C6B, + 50187 - 44032: 0x9C6C, + 50188 - 44032: 0x9C6D, + 50189 - 44032: 0x9C6E, + 50190 - 44032: 0x9C6F, + 50191 - 44032: 0x9C70, + 50192 - 44032: 0xBDFB, + 50193 - 44032: 0x9C71, + 50194 - 44032: 0x9C72, + 50195 - 44032: 0x9C73, + 50196 - 44032: 0x9C74, + 50197 - 44032: 0x9C75, + 50198 - 44032: 0x9C76, + 50199 - 44032: 0x9C77, + 50200 - 44032: 0x9C78, + 50201 - 44032: 0x9C79, + 50202 - 44032: 0x9C7A, + 50203 - 44032: 0x9C81, + 50204 - 44032: 0x9C82, + 50205 - 44032: 0x9C83, + 50206 - 44032: 0x9C84, + 50207 - 44032: 0x9C85, + 50208 - 44032: 0x9C86, + 50209 - 44032: 0x9C87, + 50210 - 44032: 0x9C88, + 50211 - 44032: 0x9C89, + 50212 - 44032: 0xBDFC, + 50213 - 44032: 0x9C8A, + 50214 - 44032: 0x9C8B, + 50215 - 44032: 0x9C8C, + 50216 - 44032: 0x9C8D, + 50217 - 44032: 0x9C8E, + 50218 - 44032: 0x9C8F, + 50219 - 44032: 0x9C90, + 50220 - 44032: 0xBDFD, + 50221 - 44032: 0x9C91, + 50222 - 44032: 0x9C92, + 50223 - 44032: 0x9C93, + 50224 - 44032: 0xBDFE, + 50225 - 44032: 0x9C94, + 50226 - 44032: 0x9C95, + 50227 - 44032: 0x9C96, + 50228 - 44032: 0xBEA1, + 50229 - 44032: 0x9C97, + 50230 - 44032: 0x9C98, + 50231 - 44032: 0x9C99, + 50232 - 44032: 0x9C9A, + 50233 - 44032: 0x9C9B, + 50234 - 44032: 0x9C9C, + 50235 - 44032: 0x9C9D, + 50236 - 44032: 0xBEA2, + 50237 - 44032: 0xBEA3, + 50238 - 44032: 0x9C9E, + 50239 - 44032: 0x9C9F, + 50240 - 44032: 0x9CA0, + 50241 - 44032: 0x9CA1, + 50242 - 44032: 0x9CA2, + 50243 - 44032: 0x9CA3, + 50244 - 44032: 0x9CA4, + 50245 - 44032: 0x9CA5, + 50246 - 44032: 0x9CA6, + 50247 - 44032: 0x9CA7, + 50248 - 44032: 0xBEA4, + 50249 - 44032: 0x9CA8, + 50250 - 44032: 0x9CA9, + 50251 - 44032: 0x9CAA, + 50252 - 44032: 0x9CAB, + 50253 - 44032: 0x9CAC, + 50254 - 44032: 0x9CAD, + 50255 - 44032: 0x9CAE, + 50256 - 44032: 0x9CAF, + 50257 - 44032: 0x9CB0, + 50258 - 44032: 0x9CB1, + 50259 - 44032: 0x9CB2, + 50260 - 44032: 0x9CB3, + 50261 - 44032: 0x9CB4, + 50262 - 44032: 0x9CB5, + 50263 - 44032: 0x9CB6, + 50264 - 44032: 0x9CB7, + 50265 - 44032: 0x9CB8, + 50266 - 44032: 0x9CB9, + 50267 - 44032: 0x9CBA, + 50268 - 44032: 0x9CBB, + 50269 - 44032: 0x9CBC, + 50270 - 44032: 0x9CBD, + 50271 - 44032: 0x9CBE, + 50272 - 44032: 0x9CBF, + 50273 - 44032: 0x9CC0, + 50274 - 44032: 0x9CC1, + 50275 - 44032: 0x9CC2, + 50276 - 44032: 0xBEA5, + 50277 - 44032: 0xBEA6, + 50278 - 44032: 0x9CC3, + 50279 - 44032: 0x9CC4, + 50280 - 44032: 0xBEA7, + 50281 - 44032: 0x9CC5, + 50282 - 44032: 0x9CC6, + 50283 - 44032: 0x9CC7, + 50284 - 44032: 0xBEA8, + 50285 - 44032: 0x9CC8, + 50286 - 44032: 0x9CC9, + 50287 - 44032: 0x9CCA, + 50288 - 44032: 0x9CCB, + 50289 - 44032: 0x9CCC, + 50290 - 44032: 0x9CCD, + 50291 - 44032: 0x9CCE, + 50292 - 44032: 0xBEA9, + 50293 - 44032: 0xBEAA, + 50294 - 44032: 0x9CCF, + 50295 - 44032: 0x9CD0, + 50296 - 44032: 0x9CD1, + 50297 - 44032: 0xBEAB, + 50298 - 44032: 0x9CD2, + 50299 - 44032: 0x9CD3, + 50300 - 44032: 0x9CD4, + 50301 - 44032: 0x9CD5, + 50302 - 44032: 0x9CD6, + 50303 - 44032: 0x9CD7, + 50304 - 44032: 0xBEAC, + 50305 - 44032: 0x9CD8, + 50306 - 44032: 0x9CD9, + 50307 - 44032: 0x9CDA, + 50308 - 44032: 0x9CDB, + 50309 - 44032: 0x9CDC, + 50310 - 44032: 0x9CDD, + 50311 - 44032: 0x9CDE, + 50312 - 44032: 0x9CDF, + 50313 - 44032: 0x9CE0, + 50314 - 44032: 0x9CE1, + 50315 - 44032: 0x9CE2, + 50316 - 44032: 0x9CE3, + 50317 - 44032: 0x9CE4, + 50318 - 44032: 0x9CE5, + 50319 - 44032: 0x9CE6, + 50320 - 44032: 0x9CE7, + 50321 - 44032: 0x9CE8, + 50322 - 44032: 0x9CE9, + 50323 - 44032: 0x9CEA, + 50324 - 44032: 0xBEAD, + 50325 - 44032: 0x9CEB, + 50326 - 44032: 0x9CEC, + 50327 - 44032: 0x9CED, + 50328 - 44032: 0x9CEE, + 50329 - 44032: 0x9CEF, + 50330 - 44032: 0x9CF0, + 50331 - 44032: 0x9CF1, + 50332 - 44032: 0xBEAE, + 50333 - 44032: 0x9CF2, + 50334 - 44032: 0x9CF3, + 50335 - 44032: 0x9CF4, + 50336 - 44032: 0x9CF5, + 50337 - 44032: 0x9CF6, + 50338 - 44032: 0x9CF7, + 50339 - 44032: 0x9CF8, + 50340 - 44032: 0x9CF9, + 50341 - 44032: 0x9CFA, + 50342 - 44032: 0x9CFB, + 50343 - 44032: 0x9CFC, + 50344 - 44032: 0x9CFD, + 50345 - 44032: 0x9CFE, + 50346 - 44032: 0x9D41, + 50347 - 44032: 0x9D42, + 50348 - 44032: 0x9D43, + 50349 - 44032: 0x9D44, + 50350 - 44032: 0x9D45, + 50351 - 44032: 0x9D46, + 50352 - 44032: 0x9D47, + 50353 - 44032: 0x9D48, + 50354 - 44032: 0x9D49, + 50355 - 44032: 0x9D4A, + 50356 - 44032: 0x9D4B, + 50357 - 44032: 0x9D4C, + 50358 - 44032: 0x9D4D, + 50359 - 44032: 0x9D4E, + 50360 - 44032: 0xBEAF, + 50361 - 44032: 0x9D4F, + 50362 - 44032: 0x9D50, + 50363 - 44032: 0x9D51, + 50364 - 44032: 0xBEB0, + 50365 - 44032: 0x9D52, + 50366 - 44032: 0x9D53, + 50367 - 44032: 0x9D54, + 50368 - 44032: 0x9D55, + 50369 - 44032: 0x9D56, + 50370 - 44032: 0x9D57, + 50371 - 44032: 0x9D58, + 50372 - 44032: 0x9D59, + 50373 - 44032: 0x9D5A, + 50374 - 44032: 0x9D61, + 50375 - 44032: 0x9D62, + 50376 - 44032: 0x9D63, + 50377 - 44032: 0x9D64, + 50378 - 44032: 0x9D65, + 50379 - 44032: 0x9D66, + 50380 - 44032: 0x9D67, + 50381 - 44032: 0x9D68, + 50382 - 44032: 0x9D69, + 50383 - 44032: 0x9D6A, + 50384 - 44032: 0x9D6B, + 50385 - 44032: 0x9D6C, + 50386 - 44032: 0x9D6D, + 50387 - 44032: 0x9D6E, + 50388 - 44032: 0x9D6F, + 50389 - 44032: 0x9D70, + 50390 - 44032: 0x9D71, + 50391 - 44032: 0x9D72, + 50392 - 44032: 0x9D73, + 50393 - 44032: 0x9D74, + 50394 - 44032: 0x9D75, + 50395 - 44032: 0x9D76, + 50396 - 44032: 0x9D77, + 50397 - 44032: 0x9D78, + 50398 - 44032: 0x9D79, + 50399 - 44032: 0x9D7A, + 50400 - 44032: 0x9D81, + 50401 - 44032: 0x9D82, + 50402 - 44032: 0x9D83, + 50403 - 44032: 0x9D84, + 50404 - 44032: 0x9D85, + 50405 - 44032: 0x9D86, + 50406 - 44032: 0x9D87, + 50407 - 44032: 0x9D88, + 50408 - 44032: 0x9D89, + 50409 - 44032: 0xBEB1, + 50410 - 44032: 0x9D8A, + 50411 - 44032: 0x9D8B, + 50412 - 44032: 0x9D8C, + 50413 - 44032: 0x9D8D, + 50414 - 44032: 0x9D8E, + 50415 - 44032: 0x9D8F, + 50416 - 44032: 0xBEB2, + 50417 - 44032: 0xBEB3, + 50418 - 44032: 0x9D90, + 50419 - 44032: 0x9D91, + 50420 - 44032: 0xBEB4, + 50421 - 44032: 0x9D92, + 50422 - 44032: 0x9D93, + 50423 - 44032: 0x9D94, + 50424 - 44032: 0xBEB5, + 50425 - 44032: 0x9D95, + 50426 - 44032: 0xBEB6, + 50427 - 44032: 0x9D96, + 50428 - 44032: 0x9D97, + 50429 - 44032: 0x9D98, + 50430 - 44032: 0x9D99, + 50431 - 44032: 0xBEB7, + 50432 - 44032: 0xBEB8, + 50433 - 44032: 0xBEB9, + 50434 - 44032: 0x9D9A, + 50435 - 44032: 0x9D9B, + 50436 - 44032: 0x9D9C, + 50437 - 44032: 0x9D9D, + 50438 - 44032: 0x9D9E, + 50439 - 44032: 0x9D9F, + 50440 - 44032: 0x9DA0, + 50441 - 44032: 0x9DA1, + 50442 - 44032: 0x9DA2, + 50443 - 44032: 0x9DA3, + 50444 - 44032: 0xBEBA, + 50445 - 44032: 0x9DA4, + 50446 - 44032: 0x9DA5, + 50447 - 44032: 0x9DA6, + 50448 - 44032: 0xBEBB, + 50449 - 44032: 0x9DA7, + 50450 - 44032: 0x9DA8, + 50451 - 44032: 0x9DA9, + 50452 - 44032: 0xBEBC, + 50453 - 44032: 0x9DAA, + 50454 - 44032: 0x9DAB, + 50455 - 44032: 0x9DAC, + 50456 - 44032: 0x9DAD, + 50457 - 44032: 0x9DAE, + 50458 - 44032: 0x9DAF, + 50459 - 44032: 0x9DB0, + 50460 - 44032: 0xBEBD, + 50461 - 44032: 0x9DB1, + 50462 - 44032: 0x9DB2, + 50463 - 44032: 0x9DB3, + 50464 - 44032: 0x9DB4, + 50465 - 44032: 0x9DB5, + 50466 - 44032: 0x9DB6, + 50467 - 44032: 0x9DB7, + 50468 - 44032: 0x9DB8, + 50469 - 44032: 0x9DB9, + 50470 - 44032: 0x9DBA, + 50471 - 44032: 0x9DBB, + 50472 - 44032: 0xBEBE, + 50473 - 44032: 0xBEBF, + 50474 - 44032: 0x9DBC, + 50475 - 44032: 0x9DBD, + 50476 - 44032: 0xBEC0, + 50477 - 44032: 0x9DBE, + 50478 - 44032: 0x9DBF, + 50479 - 44032: 0x9DC0, + 50480 - 44032: 0xBEC1, + 50481 - 44032: 0x9DC1, + 50482 - 44032: 0x9DC2, + 50483 - 44032: 0x9DC3, + 50484 - 44032: 0x9DC4, + 50485 - 44032: 0x9DC5, + 50486 - 44032: 0x9DC6, + 50487 - 44032: 0x9DC7, + 50488 - 44032: 0xBEC2, + 50489 - 44032: 0xBEC3, + 50490 - 44032: 0x9DC8, + 50491 - 44032: 0xBEC4, + 50492 - 44032: 0x9DC9, + 50493 - 44032: 0xBEC5, + 50494 - 44032: 0x9DCA, + 50495 - 44032: 0x9DCB, + 50496 - 44032: 0x9DCC, + 50497 - 44032: 0x9DCD, + 50498 - 44032: 0x9DCE, + 50499 - 44032: 0x9DCF, + 50500 - 44032: 0xBEC6, + 50501 - 44032: 0xBEC7, + 50502 - 44032: 0x9DD0, + 50503 - 44032: 0x9DD1, + 50504 - 44032: 0xBEC8, + 50505 - 44032: 0xBEC9, + 50506 - 44032: 0xBECA, + 50507 - 44032: 0x9DD2, + 50508 - 44032: 0xBECB, + 50509 - 44032: 0xBECC, + 50510 - 44032: 0xBECD, + 50511 - 44032: 0x9DD3, + 50512 - 44032: 0x9DD4, + 50513 - 44032: 0x9DD5, + 50514 - 44032: 0x9DD6, + 50515 - 44032: 0xBECE, + 50516 - 44032: 0xBECF, + 50517 - 44032: 0xBED0, + 50518 - 44032: 0x9DD7, + 50519 - 44032: 0xBED1, + 50520 - 44032: 0xBED2, + 50521 - 44032: 0xBED3, + 50522 - 44032: 0x9DD8, + 50523 - 44032: 0x9DD9, + 50524 - 44032: 0x9DDA, + 50525 - 44032: 0xBED4, + 50526 - 44032: 0xBED5, + 50527 - 44032: 0x9DDB, + 50528 - 44032: 0xBED6, + 50529 - 44032: 0xBED7, + 50530 - 44032: 0x9DDC, + 50531 - 44032: 0x9DDD, + 50532 - 44032: 0xBED8, + 50533 - 44032: 0x9DDE, + 50534 - 44032: 0x9DDF, + 50535 - 44032: 0x9DE0, + 50536 - 44032: 0xBED9, + 50537 - 44032: 0x9DE1, + 50538 - 44032: 0x9DE2, + 50539 - 44032: 0x9DE3, + 50540 - 44032: 0x9DE4, + 50541 - 44032: 0x9DE5, + 50542 - 44032: 0x9DE6, + 50543 - 44032: 0x9DE7, + 50544 - 44032: 0xBEDA, + 50545 - 44032: 0xBEDB, + 50546 - 44032: 0x9DE8, + 50547 - 44032: 0xBEDC, + 50548 - 44032: 0xBEDD, + 50549 - 44032: 0xBEDE, + 50550 - 44032: 0x9DE9, + 50551 - 44032: 0x9DEA, + 50552 - 44032: 0x9DEB, + 50553 - 44032: 0x9DEC, + 50554 - 44032: 0x9DED, + 50555 - 44032: 0x9DEE, + 50556 - 44032: 0xBEDF, + 50557 - 44032: 0xBEE0, + 50558 - 44032: 0x9DEF, + 50559 - 44032: 0x9DF0, + 50560 - 44032: 0xBEE1, + 50561 - 44032: 0x9DF1, + 50562 - 44032: 0x9DF2, + 50563 - 44032: 0x9DF3, + 50564 - 44032: 0xBEE2, + 50565 - 44032: 0x9DF4, + 50566 - 44032: 0x9DF5, + 50567 - 44032: 0xBEE3, + 50568 - 44032: 0x9DF6, + 50569 - 44032: 0x9DF7, + 50570 - 44032: 0x9DF8, + 50571 - 44032: 0x9DF9, + 50572 - 44032: 0xBEE4, + 50573 - 44032: 0xBEE5, + 50574 - 44032: 0x9DFA, + 50575 - 44032: 0xBEE6, + 50576 - 44032: 0x9DFB, + 50577 - 44032: 0xBEE7, + 50578 - 44032: 0x9DFC, + 50579 - 44032: 0x9DFD, + 50580 - 44032: 0x9DFE, + 50581 - 44032: 0xBEE8, + 50582 - 44032: 0x9E41, + 50583 - 44032: 0xBEE9, + 50584 - 44032: 0xBEEA, + 50585 - 44032: 0x9E42, + 50586 - 44032: 0x9E43, + 50587 - 44032: 0x9E44, + 50588 - 44032: 0xBEEB, + 50589 - 44032: 0x9E45, + 50590 - 44032: 0x9E46, + 50591 - 44032: 0x9E47, + 50592 - 44032: 0xBEEC, + 50593 - 44032: 0x9E48, + 50594 - 44032: 0x9E49, + 50595 - 44032: 0x9E4A, + 50596 - 44032: 0x9E4B, + 50597 - 44032: 0x9E4C, + 50598 - 44032: 0x9E4D, + 50599 - 44032: 0x9E4E, + 50600 - 44032: 0x9E4F, + 50601 - 44032: 0xBEED, + 50602 - 44032: 0x9E50, + 50603 - 44032: 0x9E51, + 50604 - 44032: 0x9E52, + 50605 - 44032: 0x9E53, + 50606 - 44032: 0x9E54, + 50607 - 44032: 0x9E55, + 50608 - 44032: 0x9E56, + 50609 - 44032: 0x9E57, + 50610 - 44032: 0x9E58, + 50611 - 44032: 0x9E59, + 50612 - 44032: 0xBEEE, + 50613 - 44032: 0xBEEF, + 50614 - 44032: 0x9E5A, + 50615 - 44032: 0x9E61, + 50616 - 44032: 0xBEF0, + 50617 - 44032: 0xBEF1, + 50618 - 44032: 0x9E62, + 50619 - 44032: 0xBEF2, + 50620 - 44032: 0xBEF3, + 50621 - 44032: 0xBEF4, + 50622 - 44032: 0xBEF5, + 50623 - 44032: 0x9E63, + 50624 - 44032: 0x9E64, + 50625 - 44032: 0x9E65, + 50626 - 44032: 0x9E66, + 50627 - 44032: 0x9E67, + 50628 - 44032: 0xBEF6, + 50629 - 44032: 0xBEF7, + 50630 - 44032: 0xBEF8, + 50631 - 44032: 0xBEF9, + 50632 - 44032: 0xBEFA, + 50633 - 44032: 0xBEFB, + 50634 - 44032: 0xBEFC, + 50635 - 44032: 0x9E68, + 50636 - 44032: 0xBEFD, + 50637 - 44032: 0x9E69, + 50638 - 44032: 0xBEFE, + 50639 - 44032: 0x9E6A, + 50640 - 44032: 0xBFA1, + 50641 - 44032: 0xBFA2, + 50642 - 44032: 0x9E6B, + 50643 - 44032: 0x9E6C, + 50644 - 44032: 0xBFA3, + 50645 - 44032: 0x9E6D, + 50646 - 44032: 0x9E6E, + 50647 - 44032: 0x9E6F, + 50648 - 44032: 0xBFA4, + 50649 - 44032: 0x9E70, + 50650 - 44032: 0x9E71, + 50651 - 44032: 0x9E72, + 50652 - 44032: 0x9E73, + 50653 - 44032: 0x9E74, + 50654 - 44032: 0x9E75, + 50655 - 44032: 0x9E76, + 50656 - 44032: 0xBFA5, + 50657 - 44032: 0xBFA6, + 50658 - 44032: 0x9E77, + 50659 - 44032: 0xBFA7, + 50660 - 44032: 0x9E78, + 50661 - 44032: 0xBFA8, + 50662 - 44032: 0x9E79, + 50663 - 44032: 0x9E7A, + 50664 - 44032: 0x9E81, + 50665 - 44032: 0x9E82, + 50666 - 44032: 0x9E83, + 50667 - 44032: 0x9E84, + 50668 - 44032: 0xBFA9, + 50669 - 44032: 0xBFAA, + 50670 - 44032: 0xBFAB, + 50671 - 44032: 0x9E85, + 50672 - 44032: 0xBFAC, + 50673 - 44032: 0x9E86, + 50674 - 44032: 0x9E87, + 50675 - 44032: 0x9E88, + 50676 - 44032: 0xBFAD, + 50677 - 44032: 0x9E89, + 50678 - 44032: 0xBFAE, + 50679 - 44032: 0xBFAF, + 50680 - 44032: 0x9E8A, + 50681 - 44032: 0x9E8B, + 50682 - 44032: 0x9E8C, + 50683 - 44032: 0x9E8D, + 50684 - 44032: 0xBFB0, + 50685 - 44032: 0xBFB1, + 50686 - 44032: 0xBFB2, + 50687 - 44032: 0xBFB3, + 50688 - 44032: 0xBFB4, + 50689 - 44032: 0xBFB5, + 50690 - 44032: 0x9E8E, + 50691 - 44032: 0x9E8F, + 50692 - 44032: 0x9E90, + 50693 - 44032: 0xBFB6, + 50694 - 44032: 0xBFB7, + 50695 - 44032: 0xBFB8, + 50696 - 44032: 0xBFB9, + 50697 - 44032: 0x9E91, + 50698 - 44032: 0x9E92, + 50699 - 44032: 0x9E93, + 50700 - 44032: 0xBFBA, + 50701 - 44032: 0x9E94, + 50702 - 44032: 0x9E95, + 50703 - 44032: 0x9E96, + 50704 - 44032: 0xBFBB, + 50705 - 44032: 0x9E97, + 50706 - 44032: 0x9E98, + 50707 - 44032: 0x9E99, + 50708 - 44032: 0x9E9A, + 50709 - 44032: 0x9E9B, + 50710 - 44032: 0x9E9C, + 50711 - 44032: 0x9E9D, + 50712 - 44032: 0xBFBC, + 50713 - 44032: 0xBFBD, + 50714 - 44032: 0x9E9E, + 50715 - 44032: 0xBFBE, + 50716 - 44032: 0xBFBF, + 50717 - 44032: 0x9E9F, + 50718 - 44032: 0x9EA0, + 50719 - 44032: 0x9EA1, + 50720 - 44032: 0x9EA2, + 50721 - 44032: 0x9EA3, + 50722 - 44032: 0x9EA4, + 50723 - 44032: 0x9EA5, + 50724 - 44032: 0xBFC0, + 50725 - 44032: 0xBFC1, + 50726 - 44032: 0x9EA6, + 50727 - 44032: 0x9EA7, + 50728 - 44032: 0xBFC2, + 50729 - 44032: 0x9EA8, + 50730 - 44032: 0x9EA9, + 50731 - 44032: 0x9EAA, + 50732 - 44032: 0xBFC3, + 50733 - 44032: 0xBFC4, + 50734 - 44032: 0xBFC5, + 50735 - 44032: 0x9EAB, + 50736 - 44032: 0xBFC6, + 50737 - 44032: 0x9EAC, + 50738 - 44032: 0x9EAD, + 50739 - 44032: 0xBFC7, + 50740 - 44032: 0xBFC8, + 50741 - 44032: 0xBFC9, + 50742 - 44032: 0x9EAE, + 50743 - 44032: 0xBFCA, + 50744 - 44032: 0x9EAF, + 50745 - 44032: 0xBFCB, + 50746 - 44032: 0x9EB0, + 50747 - 44032: 0xBFCC, + 50748 - 44032: 0x9EB1, + 50749 - 44032: 0x9EB2, + 50750 - 44032: 0x9EB3, + 50751 - 44032: 0x9EB4, + 50752 - 44032: 0xBFCD, + 50753 - 44032: 0xBFCE, + 50754 - 44032: 0x9EB5, + 50755 - 44032: 0x9EB6, + 50756 - 44032: 0xBFCF, + 50757 - 44032: 0x9EB7, + 50758 - 44032: 0x9EB8, + 50759 - 44032: 0x9EB9, + 50760 - 44032: 0xBFD0, + 50761 - 44032: 0x9EBA, + 50762 - 44032: 0x9EBB, + 50763 - 44032: 0x9EBC, + 50764 - 44032: 0x9EBD, + 50765 - 44032: 0x9EBE, + 50766 - 44032: 0x9EBF, + 50767 - 44032: 0x9EC0, + 50768 - 44032: 0xBFD1, + 50769 - 44032: 0xBFD2, + 50770 - 44032: 0x9EC1, + 50771 - 44032: 0xBFD3, + 50772 - 44032: 0xBFD4, + 50773 - 44032: 0xBFD5, + 50774 - 44032: 0x9EC2, + 50775 - 44032: 0x9EC3, + 50776 - 44032: 0x9EC4, + 50777 - 44032: 0x9EC5, + 50778 - 44032: 0x9EC6, + 50779 - 44032: 0x9EC7, + 50780 - 44032: 0xBFD6, + 50781 - 44032: 0xBFD7, + 50782 - 44032: 0x9EC8, + 50783 - 44032: 0x9EC9, + 50784 - 44032: 0xBFD8, + 50785 - 44032: 0x9ECA, + 50786 - 44032: 0x9ECB, + 50787 - 44032: 0x9ECC, + 50788 - 44032: 0x9ECD, + 50789 - 44032: 0x9ECE, + 50790 - 44032: 0x9ECF, + 50791 - 44032: 0x9ED0, + 50792 - 44032: 0x9ED1, + 50793 - 44032: 0x9ED2, + 50794 - 44032: 0x9ED3, + 50795 - 44032: 0x9ED4, + 50796 - 44032: 0xBFD9, + 50797 - 44032: 0x9ED5, + 50798 - 44032: 0x9ED6, + 50799 - 44032: 0xBFDA, + 50800 - 44032: 0x9ED7, + 50801 - 44032: 0xBFDB, + 50802 - 44032: 0x9ED8, + 50803 - 44032: 0x9ED9, + 50804 - 44032: 0x9EDA, + 50805 - 44032: 0x9EDB, + 50806 - 44032: 0x9EDC, + 50807 - 44032: 0x9EDD, + 50808 - 44032: 0xBFDC, + 50809 - 44032: 0xBFDD, + 50810 - 44032: 0x9EDE, + 50811 - 44032: 0x9EDF, + 50812 - 44032: 0xBFDE, + 50813 - 44032: 0x9EE0, + 50814 - 44032: 0x9EE1, + 50815 - 44032: 0x9EE2, + 50816 - 44032: 0xBFDF, + 50817 - 44032: 0x9EE3, + 50818 - 44032: 0x9EE4, + 50819 - 44032: 0x9EE5, + 50820 - 44032: 0x9EE6, + 50821 - 44032: 0x9EE7, + 50822 - 44032: 0x9EE8, + 50823 - 44032: 0x9EE9, + 50824 - 44032: 0xBFE0, + 50825 - 44032: 0xBFE1, + 50826 - 44032: 0x9EEA, + 50827 - 44032: 0xBFE2, + 50828 - 44032: 0x9EEB, + 50829 - 44032: 0xBFE3, + 50830 - 44032: 0x9EEC, + 50831 - 44032: 0x9EED, + 50832 - 44032: 0x9EEE, + 50833 - 44032: 0x9EEF, + 50834 - 44032: 0x9EF0, + 50835 - 44032: 0x9EF1, + 50836 - 44032: 0xBFE4, + 50837 - 44032: 0xBFE5, + 50838 - 44032: 0x9EF2, + 50839 - 44032: 0x9EF3, + 50840 - 44032: 0xBFE6, + 50841 - 44032: 0x9EF4, + 50842 - 44032: 0x9EF5, + 50843 - 44032: 0x9EF6, + 50844 - 44032: 0xBFE7, + 50845 - 44032: 0x9EF7, + 50846 - 44032: 0x9EF8, + 50847 - 44032: 0x9EF9, + 50848 - 44032: 0x9EFA, + 50849 - 44032: 0x9EFB, + 50850 - 44032: 0x9EFC, + 50851 - 44032: 0x9EFD, + 50852 - 44032: 0xBFE8, + 50853 - 44032: 0xBFE9, + 50854 - 44032: 0x9EFE, + 50855 - 44032: 0xBFEA, + 50856 - 44032: 0x9F41, + 50857 - 44032: 0xBFEB, + 50858 - 44032: 0x9F42, + 50859 - 44032: 0x9F43, + 50860 - 44032: 0x9F44, + 50861 - 44032: 0x9F45, + 50862 - 44032: 0x9F46, + 50863 - 44032: 0x9F47, + 50864 - 44032: 0xBFEC, + 50865 - 44032: 0xBFED, + 50866 - 44032: 0x9F48, + 50867 - 44032: 0x9F49, + 50868 - 44032: 0xBFEE, + 50869 - 44032: 0x9F4A, + 50870 - 44032: 0x9F4B, + 50871 - 44032: 0x9F4C, + 50872 - 44032: 0xBFEF, + 50873 - 44032: 0xBFF0, + 50874 - 44032: 0xBFF1, + 50875 - 44032: 0x9F4D, + 50876 - 44032: 0x9F4E, + 50877 - 44032: 0x9F4F, + 50878 - 44032: 0x9F50, + 50879 - 44032: 0x9F51, + 50880 - 44032: 0xBFF2, + 50881 - 44032: 0xBFF3, + 50882 - 44032: 0x9F52, + 50883 - 44032: 0xBFF4, + 50884 - 44032: 0x9F53, + 50885 - 44032: 0xBFF5, + 50886 - 44032: 0x9F54, + 50887 - 44032: 0x9F55, + 50888 - 44032: 0x9F56, + 50889 - 44032: 0x9F57, + 50890 - 44032: 0x9F58, + 50891 - 44032: 0x9F59, + 50892 - 44032: 0xBFF6, + 50893 - 44032: 0xBFF7, + 50894 - 44032: 0x9F5A, + 50895 - 44032: 0x9F61, + 50896 - 44032: 0xBFF8, + 50897 - 44032: 0x9F62, + 50898 - 44032: 0x9F63, + 50899 - 44032: 0x9F64, + 50900 - 44032: 0xBFF9, + 50901 - 44032: 0x9F65, + 50902 - 44032: 0x9F66, + 50903 - 44032: 0x9F67, + 50904 - 44032: 0x9F68, + 50905 - 44032: 0x9F69, + 50906 - 44032: 0x9F6A, + 50907 - 44032: 0x9F6B, + 50908 - 44032: 0xBFFA, + 50909 - 44032: 0xBFFB, + 50910 - 44032: 0x9F6C, + 50911 - 44032: 0x9F6D, + 50912 - 44032: 0xBFFC, + 50913 - 44032: 0xBFFD, + 50914 - 44032: 0x9F6E, + 50915 - 44032: 0x9F6F, + 50916 - 44032: 0x9F70, + 50917 - 44032: 0x9F71, + 50918 - 44032: 0x9F72, + 50919 - 44032: 0x9F73, + 50920 - 44032: 0xBFFE, + 50921 - 44032: 0xC0A1, + 50922 - 44032: 0x9F74, + 50923 - 44032: 0x9F75, + 50924 - 44032: 0xC0A2, + 50925 - 44032: 0x9F76, + 50926 - 44032: 0x9F77, + 50927 - 44032: 0x9F78, + 50928 - 44032: 0xC0A3, + 50929 - 44032: 0x9F79, + 50930 - 44032: 0x9F7A, + 50931 - 44032: 0x9F81, + 50932 - 44032: 0x9F82, + 50933 - 44032: 0x9F83, + 50934 - 44032: 0x9F84, + 50935 - 44032: 0x9F85, + 50936 - 44032: 0xC0A4, + 50937 - 44032: 0xC0A5, + 50938 - 44032: 0x9F86, + 50939 - 44032: 0x9F87, + 50940 - 44032: 0x9F88, + 50941 - 44032: 0xC0A6, + 50942 - 44032: 0x9F89, + 50943 - 44032: 0x9F8A, + 50944 - 44032: 0x9F8B, + 50945 - 44032: 0x9F8C, + 50946 - 44032: 0x9F8D, + 50947 - 44032: 0x9F8E, + 50948 - 44032: 0xC0A7, + 50949 - 44032: 0xC0A8, + 50950 - 44032: 0x9F8F, + 50951 - 44032: 0x9F90, + 50952 - 44032: 0xC0A9, + 50953 - 44032: 0x9F91, + 50954 - 44032: 0x9F92, + 50955 - 44032: 0x9F93, + 50956 - 44032: 0xC0AA, + 50957 - 44032: 0x9F94, + 50958 - 44032: 0x9F95, + 50959 - 44032: 0x9F96, + 50960 - 44032: 0x9F97, + 50961 - 44032: 0x9F98, + 50962 - 44032: 0x9F99, + 50963 - 44032: 0x9F9A, + 50964 - 44032: 0xC0AB, + 50965 - 44032: 0xC0AC, + 50966 - 44032: 0x9F9B, + 50967 - 44032: 0xC0AD, + 50968 - 44032: 0x9F9C, + 50969 - 44032: 0xC0AE, + 50970 - 44032: 0x9F9D, + 50971 - 44032: 0x9F9E, + 50972 - 44032: 0x9F9F, + 50973 - 44032: 0x9FA0, + 50974 - 44032: 0x9FA1, + 50975 - 44032: 0x9FA2, + 50976 - 44032: 0xC0AF, + 50977 - 44032: 0xC0B0, + 50978 - 44032: 0x9FA3, + 50979 - 44032: 0x9FA4, + 50980 - 44032: 0xC0B1, + 50981 - 44032: 0x9FA5, + 50982 - 44032: 0x9FA6, + 50983 - 44032: 0x9FA7, + 50984 - 44032: 0xC0B2, + 50985 - 44032: 0x9FA8, + 50986 - 44032: 0x9FA9, + 50987 - 44032: 0x9FAA, + 50988 - 44032: 0x9FAB, + 50989 - 44032: 0x9FAC, + 50990 - 44032: 0x9FAD, + 50991 - 44032: 0x9FAE, + 50992 - 44032: 0xC0B3, + 50993 - 44032: 0xC0B4, + 50994 - 44032: 0x9FAF, + 50995 - 44032: 0xC0B5, + 50996 - 44032: 0x9FB0, + 50997 - 44032: 0xC0B6, + 50998 - 44032: 0x9FB1, + 50999 - 44032: 0xC0B7, + 51000 - 44032: 0x9FB2, + 51001 - 44032: 0x9FB3, + 51002 - 44032: 0x9FB4, + 51003 - 44032: 0x9FB5, + 51004 - 44032: 0xC0B8, + 51005 - 44032: 0xC0B9, + 51006 - 44032: 0x9FB6, + 51007 - 44032: 0x9FB7, + 51008 - 44032: 0xC0BA, + 51009 - 44032: 0x9FB8, + 51010 - 44032: 0x9FB9, + 51011 - 44032: 0x9FBA, + 51012 - 44032: 0xC0BB, + 51013 - 44032: 0x9FBB, + 51014 - 44032: 0x9FBC, + 51015 - 44032: 0x9FBD, + 51016 - 44032: 0x9FBE, + 51017 - 44032: 0x9FBF, + 51018 - 44032: 0xC0BC, + 51019 - 44032: 0x9FC0, + 51020 - 44032: 0xC0BD, + 51021 - 44032: 0xC0BE, + 51022 - 44032: 0x9FC1, + 51023 - 44032: 0xC0BF, + 51024 - 44032: 0x9FC2, + 51025 - 44032: 0xC0C0, + 51026 - 44032: 0xC0C1, + 51027 - 44032: 0xC0C2, + 51028 - 44032: 0xC0C3, + 51029 - 44032: 0xC0C4, + 51030 - 44032: 0xC0C5, + 51031 - 44032: 0xC0C6, + 51032 - 44032: 0xC0C7, + 51033 - 44032: 0x9FC3, + 51034 - 44032: 0x9FC4, + 51035 - 44032: 0x9FC5, + 51036 - 44032: 0xC0C8, + 51037 - 44032: 0x9FC6, + 51038 - 44032: 0x9FC7, + 51039 - 44032: 0x9FC8, + 51040 - 44032: 0xC0C9, + 51041 - 44032: 0x9FC9, + 51042 - 44032: 0x9FCA, + 51043 - 44032: 0x9FCB, + 51044 - 44032: 0x9FCC, + 51045 - 44032: 0x9FCD, + 51046 - 44032: 0x9FCE, + 51047 - 44032: 0x9FCF, + 51048 - 44032: 0xC0CA, + 51049 - 44032: 0x9FD0, + 51050 - 44032: 0x9FD1, + 51051 - 44032: 0xC0CB, + 51052 - 44032: 0x9FD2, + 51053 - 44032: 0x9FD3, + 51054 - 44032: 0x9FD4, + 51055 - 44032: 0x9FD5, + 51056 - 44032: 0x9FD6, + 51057 - 44032: 0x9FD7, + 51058 - 44032: 0x9FD8, + 51059 - 44032: 0x9FD9, + 51060 - 44032: 0xC0CC, + 51061 - 44032: 0xC0CD, + 51062 - 44032: 0x9FDA, + 51063 - 44032: 0x9FDB, + 51064 - 44032: 0xC0CE, + 51065 - 44032: 0x9FDC, + 51066 - 44032: 0x9FDD, + 51067 - 44032: 0x9FDE, + 51068 - 44032: 0xC0CF, + 51069 - 44032: 0xC0D0, + 51070 - 44032: 0xC0D1, + 51071 - 44032: 0x9FDF, + 51072 - 44032: 0x9FE0, + 51073 - 44032: 0x9FE1, + 51074 - 44032: 0x9FE2, + 51075 - 44032: 0xC0D2, + 51076 - 44032: 0xC0D3, + 51077 - 44032: 0xC0D4, + 51078 - 44032: 0x9FE3, + 51079 - 44032: 0xC0D5, + 51080 - 44032: 0xC0D6, + 51081 - 44032: 0xC0D7, + 51082 - 44032: 0xC0D8, + 51083 - 44032: 0x9FE4, + 51084 - 44032: 0x9FE5, + 51085 - 44032: 0x9FE6, + 51086 - 44032: 0xC0D9, + 51087 - 44032: 0x9FE7, + 51088 - 44032: 0xC0DA, + 51089 - 44032: 0xC0DB, + 51090 - 44032: 0x9FE8, + 51091 - 44032: 0x9FE9, + 51092 - 44032: 0xC0DC, + 51093 - 44032: 0x9FEA, + 51094 - 44032: 0xC0DD, + 51095 - 44032: 0xC0DE, + 51096 - 44032: 0xC0DF, + 51097 - 44032: 0x9FEB, + 51098 - 44032: 0xC0E0, + 51099 - 44032: 0x9FEC, + 51100 - 44032: 0x9FED, + 51101 - 44032: 0x9FEE, + 51102 - 44032: 0x9FEF, + 51103 - 44032: 0x9FF0, + 51104 - 44032: 0xC0E1, + 51105 - 44032: 0xC0E2, + 51106 - 44032: 0x9FF1, + 51107 - 44032: 0xC0E3, + 51108 - 44032: 0xC0E4, + 51109 - 44032: 0xC0E5, + 51110 - 44032: 0xC0E6, + 51111 - 44032: 0x9FF2, + 51112 - 44032: 0x9FF3, + 51113 - 44032: 0x9FF4, + 51114 - 44032: 0x9FF5, + 51115 - 44032: 0x9FF6, + 51116 - 44032: 0xC0E7, + 51117 - 44032: 0xC0E8, + 51118 - 44032: 0x9FF7, + 51119 - 44032: 0x9FF8, + 51120 - 44032: 0xC0E9, + 51121 - 44032: 0x9FF9, + 51122 - 44032: 0x9FFA, + 51123 - 44032: 0x9FFB, + 51124 - 44032: 0xC0EA, + 51125 - 44032: 0x9FFC, + 51126 - 44032: 0x9FFD, + 51127 - 44032: 0x9FFE, + 51128 - 44032: 0xA041, + 51129 - 44032: 0xA042, + 51130 - 44032: 0xA043, + 51131 - 44032: 0xA044, + 51132 - 44032: 0xC0EB, + 51133 - 44032: 0xC0EC, + 51134 - 44032: 0xA045, + 51135 - 44032: 0xC0ED, + 51136 - 44032: 0xC0EE, + 51137 - 44032: 0xC0EF, + 51138 - 44032: 0xA046, + 51139 - 44032: 0xA047, + 51140 - 44032: 0xA048, + 51141 - 44032: 0xA049, + 51142 - 44032: 0xA04A, + 51143 - 44032: 0xA04B, + 51144 - 44032: 0xC0F0, + 51145 - 44032: 0xC0F1, + 51146 - 44032: 0xA04C, + 51147 - 44032: 0xA04D, + 51148 - 44032: 0xC0F2, + 51149 - 44032: 0xA04E, + 51150 - 44032: 0xC0F3, + 51151 - 44032: 0xA04F, + 51152 - 44032: 0xC0F4, + 51153 - 44032: 0xA050, + 51154 - 44032: 0xA051, + 51155 - 44032: 0xA052, + 51156 - 44032: 0xA053, + 51157 - 44032: 0xA054, + 51158 - 44032: 0xA055, + 51159 - 44032: 0xA056, + 51160 - 44032: 0xC0F5, + 51161 - 44032: 0xA057, + 51162 - 44032: 0xA058, + 51163 - 44032: 0xA059, + 51164 - 44032: 0xA05A, + 51165 - 44032: 0xC0F6, + 51166 - 44032: 0xA061, + 51167 - 44032: 0xA062, + 51168 - 44032: 0xA063, + 51169 - 44032: 0xA064, + 51170 - 44032: 0xA065, + 51171 - 44032: 0xA066, + 51172 - 44032: 0xC0F7, + 51173 - 44032: 0xA067, + 51174 - 44032: 0xA068, + 51175 - 44032: 0xA069, + 51176 - 44032: 0xC0F8, + 51177 - 44032: 0xA06A, + 51178 - 44032: 0xA06B, + 51179 - 44032: 0xA06C, + 51180 - 44032: 0xC0F9, + 51181 - 44032: 0xA06D, + 51182 - 44032: 0xA06E, + 51183 - 44032: 0xA06F, + 51184 - 44032: 0xA070, + 51185 - 44032: 0xA071, + 51186 - 44032: 0xA072, + 51187 - 44032: 0xA073, + 51188 - 44032: 0xA074, + 51189 - 44032: 0xA075, + 51190 - 44032: 0xA076, + 51191 - 44032: 0xA077, + 51192 - 44032: 0xA078, + 51193 - 44032: 0xA079, + 51194 - 44032: 0xA07A, + 51195 - 44032: 0xA081, + 51196 - 44032: 0xA082, + 51197 - 44032: 0xA083, + 51198 - 44032: 0xA084, + 51199 - 44032: 0xA085, + 51200 - 44032: 0xC0FA, + 51201 - 44032: 0xC0FB, + 51202 - 44032: 0xA086, + 51203 - 44032: 0xA087, + 51204 - 44032: 0xC0FC, + 51205 - 44032: 0xA088, + 51206 - 44032: 0xA089, + 51207 - 44032: 0xA08A, + 51208 - 44032: 0xC0FD, + 51209 - 44032: 0xA08B, + 51210 - 44032: 0xC0FE, + 51211 - 44032: 0xA08C, + 51212 - 44032: 0xA08D, + 51213 - 44032: 0xA08E, + 51214 - 44032: 0xA08F, + 51215 - 44032: 0xA090, + 51216 - 44032: 0xC1A1, + 51217 - 44032: 0xC1A2, + 51218 - 44032: 0xA091, + 51219 - 44032: 0xC1A3, + 51220 - 44032: 0xA092, + 51221 - 44032: 0xC1A4, + 51222 - 44032: 0xC1A5, + 51223 - 44032: 0xA093, + 51224 - 44032: 0xA094, + 51225 - 44032: 0xA095, + 51226 - 44032: 0xA096, + 51227 - 44032: 0xA097, + 51228 - 44032: 0xC1A6, + 51229 - 44032: 0xC1A7, + 51230 - 44032: 0xA098, + 51231 - 44032: 0xA099, + 51232 - 44032: 0xC1A8, + 51233 - 44032: 0xA09A, + 51234 - 44032: 0xA09B, + 51235 - 44032: 0xA09C, + 51236 - 44032: 0xC1A9, + 51237 - 44032: 0xA09D, + 51238 - 44032: 0xA09E, + 51239 - 44032: 0xA09F, + 51240 - 44032: 0xA0A0, + 51241 - 44032: 0xA0A1, + 51242 - 44032: 0xA0A2, + 51243 - 44032: 0xA0A3, + 51244 - 44032: 0xC1AA, + 51245 - 44032: 0xC1AB, + 51246 - 44032: 0xA0A4, + 51247 - 44032: 0xC1AC, + 51248 - 44032: 0xA0A5, + 51249 - 44032: 0xC1AD, + 51250 - 44032: 0xA0A6, + 51251 - 44032: 0xA0A7, + 51252 - 44032: 0xA0A8, + 51253 - 44032: 0xA0A9, + 51254 - 44032: 0xA0AA, + 51255 - 44032: 0xA0AB, + 51256 - 44032: 0xC1AE, + 51257 - 44032: 0xA0AC, + 51258 - 44032: 0xA0AD, + 51259 - 44032: 0xA0AE, + 51260 - 44032: 0xC1AF, + 51261 - 44032: 0xA0AF, + 51262 - 44032: 0xA0B0, + 51263 - 44032: 0xA0B1, + 51264 - 44032: 0xC1B0, + 51265 - 44032: 0xA0B2, + 51266 - 44032: 0xA0B3, + 51267 - 44032: 0xA0B4, + 51268 - 44032: 0xA0B5, + 51269 - 44032: 0xA0B6, + 51270 - 44032: 0xA0B7, + 51271 - 44032: 0xA0B8, + 51272 - 44032: 0xC1B1, + 51273 - 44032: 0xC1B2, + 51274 - 44032: 0xA0B9, + 51275 - 44032: 0xA0BA, + 51276 - 44032: 0xC1B3, + 51277 - 44032: 0xC1B4, + 51278 - 44032: 0xA0BB, + 51279 - 44032: 0xA0BC, + 51280 - 44032: 0xA0BD, + 51281 - 44032: 0xA0BE, + 51282 - 44032: 0xA0BF, + 51283 - 44032: 0xA0C0, + 51284 - 44032: 0xC1B5, + 51285 - 44032: 0xA0C1, + 51286 - 44032: 0xA0C2, + 51287 - 44032: 0xA0C3, + 51288 - 44032: 0xA0C4, + 51289 - 44032: 0xA0C5, + 51290 - 44032: 0xA0C6, + 51291 - 44032: 0xA0C7, + 51292 - 44032: 0xA0C8, + 51293 - 44032: 0xA0C9, + 51294 - 44032: 0xA0CA, + 51295 - 44032: 0xA0CB, + 51296 - 44032: 0xA0CC, + 51297 - 44032: 0xA0CD, + 51298 - 44032: 0xA0CE, + 51299 - 44032: 0xA0CF, + 51300 - 44032: 0xA0D0, + 51301 - 44032: 0xA0D1, + 51302 - 44032: 0xA0D2, + 51303 - 44032: 0xA0D3, + 51304 - 44032: 0xA0D4, + 51305 - 44032: 0xA0D5, + 51306 - 44032: 0xA0D6, + 51307 - 44032: 0xA0D7, + 51308 - 44032: 0xA0D8, + 51309 - 44032: 0xA0D9, + 51310 - 44032: 0xA0DA, + 51311 - 44032: 0xA0DB, + 51312 - 44032: 0xC1B6, + 51313 - 44032: 0xC1B7, + 51314 - 44032: 0xA0DC, + 51315 - 44032: 0xA0DD, + 51316 - 44032: 0xC1B8, + 51317 - 44032: 0xA0DE, + 51318 - 44032: 0xA0DF, + 51319 - 44032: 0xA0E0, + 51320 - 44032: 0xC1B9, + 51321 - 44032: 0xA0E1, + 51322 - 44032: 0xC1BA, + 51323 - 44032: 0xA0E2, + 51324 - 44032: 0xA0E3, + 51325 - 44032: 0xA0E4, + 51326 - 44032: 0xA0E5, + 51327 - 44032: 0xA0E6, + 51328 - 44032: 0xC1BB, + 51329 - 44032: 0xC1BC, + 51330 - 44032: 0xA0E7, + 51331 - 44032: 0xC1BD, + 51332 - 44032: 0xA0E8, + 51333 - 44032: 0xC1BE, + 51334 - 44032: 0xC1BF, + 51335 - 44032: 0xC1C0, + 51336 - 44032: 0xA0E9, + 51337 - 44032: 0xA0EA, + 51338 - 44032: 0xA0EB, + 51339 - 44032: 0xC1C1, + 51340 - 44032: 0xC1C2, + 51341 - 44032: 0xC1C3, + 51342 - 44032: 0xA0EC, + 51343 - 44032: 0xA0ED, + 51344 - 44032: 0xA0EE, + 51345 - 44032: 0xA0EF, + 51346 - 44032: 0xA0F0, + 51347 - 44032: 0xA0F1, + 51348 - 44032: 0xC1C4, + 51349 - 44032: 0xA0F2, + 51350 - 44032: 0xA0F3, + 51351 - 44032: 0xA0F4, + 51352 - 44032: 0xA0F5, + 51353 - 44032: 0xA0F6, + 51354 - 44032: 0xA0F7, + 51355 - 44032: 0xA0F8, + 51356 - 44032: 0xA0F9, + 51357 - 44032: 0xC1C5, + 51358 - 44032: 0xA0FA, + 51359 - 44032: 0xC1C6, + 51360 - 44032: 0xA0FB, + 51361 - 44032: 0xC1C7, + 51362 - 44032: 0xA0FC, + 51363 - 44032: 0xA0FD, + 51364 - 44032: 0xA0FE, + 51365 - 44032: 0xA141, + 51366 - 44032: 0xA142, + 51367 - 44032: 0xA143, + 51368 - 44032: 0xC1C8, + 51369 - 44032: 0xA144, + 51370 - 44032: 0xA145, + 51371 - 44032: 0xA146, + 51372 - 44032: 0xA147, + 51373 - 44032: 0xA148, + 51374 - 44032: 0xA149, + 51375 - 44032: 0xA14A, + 51376 - 44032: 0xA14B, + 51377 - 44032: 0xA14C, + 51378 - 44032: 0xA14D, + 51379 - 44032: 0xA14E, + 51380 - 44032: 0xA14F, + 51381 - 44032: 0xA150, + 51382 - 44032: 0xA151, + 51383 - 44032: 0xA152, + 51384 - 44032: 0xA153, + 51385 - 44032: 0xA154, + 51386 - 44032: 0xA155, + 51387 - 44032: 0xA156, + 51388 - 44032: 0xC1C9, + 51389 - 44032: 0xC1CA, + 51390 - 44032: 0xA157, + 51391 - 44032: 0xA158, + 51392 - 44032: 0xA159, + 51393 - 44032: 0xA15A, + 51394 - 44032: 0xA161, + 51395 - 44032: 0xA162, + 51396 - 44032: 0xC1CB, + 51397 - 44032: 0xA163, + 51398 - 44032: 0xA164, + 51399 - 44032: 0xA165, + 51400 - 44032: 0xC1CC, + 51401 - 44032: 0xA166, + 51402 - 44032: 0xA167, + 51403 - 44032: 0xA168, + 51404 - 44032: 0xC1CD, + 51405 - 44032: 0xA169, + 51406 - 44032: 0xA16A, + 51407 - 44032: 0xA16B, + 51408 - 44032: 0xA16C, + 51409 - 44032: 0xA16D, + 51410 - 44032: 0xA16E, + 51411 - 44032: 0xA16F, + 51412 - 44032: 0xC1CE, + 51413 - 44032: 0xC1CF, + 51414 - 44032: 0xA170, + 51415 - 44032: 0xC1D0, + 51416 - 44032: 0xA171, + 51417 - 44032: 0xC1D1, + 51418 - 44032: 0xA172, + 51419 - 44032: 0xA173, + 51420 - 44032: 0xA174, + 51421 - 44032: 0xA175, + 51422 - 44032: 0xA176, + 51423 - 44032: 0xA177, + 51424 - 44032: 0xC1D2, + 51425 - 44032: 0xC1D3, + 51426 - 44032: 0xA178, + 51427 - 44032: 0xA179, + 51428 - 44032: 0xC1D4, + 51429 - 44032: 0xA17A, + 51430 - 44032: 0xA181, + 51431 - 44032: 0xA182, + 51432 - 44032: 0xA183, + 51433 - 44032: 0xA184, + 51434 - 44032: 0xA185, + 51435 - 44032: 0xA186, + 51436 - 44032: 0xA187, + 51437 - 44032: 0xA188, + 51438 - 44032: 0xA189, + 51439 - 44032: 0xA18A, + 51440 - 44032: 0xA18B, + 51441 - 44032: 0xA18C, + 51442 - 44032: 0xA18D, + 51443 - 44032: 0xA18E, + 51444 - 44032: 0xA18F, + 51445 - 44032: 0xC1D5, + 51446 - 44032: 0xA190, + 51447 - 44032: 0xA191, + 51448 - 44032: 0xA192, + 51449 - 44032: 0xA193, + 51450 - 44032: 0xA194, + 51451 - 44032: 0xA195, + 51452 - 44032: 0xC1D6, + 51453 - 44032: 0xC1D7, + 51454 - 44032: 0xA196, + 51455 - 44032: 0xA197, + 51456 - 44032: 0xC1D8, + 51457 - 44032: 0xA198, + 51458 - 44032: 0xA199, + 51459 - 44032: 0xA19A, + 51460 - 44032: 0xC1D9, + 51461 - 44032: 0xC1DA, + 51462 - 44032: 0xC1DB, + 51463 - 44032: 0xA19B, + 51464 - 44032: 0xA19C, + 51465 - 44032: 0xA19D, + 51466 - 44032: 0xA19E, + 51467 - 44032: 0xA19F, + 51468 - 44032: 0xC1DC, + 51469 - 44032: 0xC1DD, + 51470 - 44032: 0xA1A0, + 51471 - 44032: 0xC1DE, + 51472 - 44032: 0xA241, + 51473 - 44032: 0xC1DF, + 51474 - 44032: 0xA242, + 51475 - 44032: 0xA243, + 51476 - 44032: 0xA244, + 51477 - 44032: 0xA245, + 51478 - 44032: 0xA246, + 51479 - 44032: 0xA247, + 51480 - 44032: 0xC1E0, + 51481 - 44032: 0xA248, + 51482 - 44032: 0xA249, + 51483 - 44032: 0xA24A, + 51484 - 44032: 0xA24B, + 51485 - 44032: 0xA24C, + 51486 - 44032: 0xA24D, + 51487 - 44032: 0xA24E, + 51488 - 44032: 0xA24F, + 51489 - 44032: 0xA250, + 51490 - 44032: 0xA251, + 51491 - 44032: 0xA252, + 51492 - 44032: 0xA253, + 51493 - 44032: 0xA254, + 51494 - 44032: 0xA255, + 51495 - 44032: 0xA256, + 51496 - 44032: 0xA257, + 51497 - 44032: 0xA258, + 51498 - 44032: 0xA259, + 51499 - 44032: 0xA25A, + 51500 - 44032: 0xC1E1, + 51501 - 44032: 0xA261, + 51502 - 44032: 0xA262, + 51503 - 44032: 0xA263, + 51504 - 44032: 0xA264, + 51505 - 44032: 0xA265, + 51506 - 44032: 0xA266, + 51507 - 44032: 0xA267, + 51508 - 44032: 0xC1E2, + 51509 - 44032: 0xA268, + 51510 - 44032: 0xA269, + 51511 - 44032: 0xA26A, + 51512 - 44032: 0xA26B, + 51513 - 44032: 0xA26C, + 51514 - 44032: 0xA26D, + 51515 - 44032: 0xA26E, + 51516 - 44032: 0xA26F, + 51517 - 44032: 0xA270, + 51518 - 44032: 0xA271, + 51519 - 44032: 0xA272, + 51520 - 44032: 0xA273, + 51521 - 44032: 0xA274, + 51522 - 44032: 0xA275, + 51523 - 44032: 0xA276, + 51524 - 44032: 0xA277, + 51525 - 44032: 0xA278, + 51526 - 44032: 0xA279, + 51527 - 44032: 0xA27A, + 51528 - 44032: 0xA281, + 51529 - 44032: 0xA282, + 51530 - 44032: 0xA283, + 51531 - 44032: 0xA284, + 51532 - 44032: 0xA285, + 51533 - 44032: 0xA286, + 51534 - 44032: 0xA287, + 51535 - 44032: 0xA288, + 51536 - 44032: 0xC1E3, + 51537 - 44032: 0xC1E4, + 51538 - 44032: 0xA289, + 51539 - 44032: 0xA28A, + 51540 - 44032: 0xC1E5, + 51541 - 44032: 0xA28B, + 51542 - 44032: 0xA28C, + 51543 - 44032: 0xA28D, + 51544 - 44032: 0xC1E6, + 51545 - 44032: 0xA28E, + 51546 - 44032: 0xA28F, + 51547 - 44032: 0xA290, + 51548 - 44032: 0xA291, + 51549 - 44032: 0xA292, + 51550 - 44032: 0xA293, + 51551 - 44032: 0xA294, + 51552 - 44032: 0xC1E7, + 51553 - 44032: 0xC1E8, + 51554 - 44032: 0xA295, + 51555 - 44032: 0xC1E9, + 51556 - 44032: 0xA296, + 51557 - 44032: 0xA297, + 51558 - 44032: 0xA298, + 51559 - 44032: 0xA299, + 51560 - 44032: 0xA29A, + 51561 - 44032: 0xA29B, + 51562 - 44032: 0xA29C, + 51563 - 44032: 0xA29D, + 51564 - 44032: 0xC1EA, + 51565 - 44032: 0xA29E, + 51566 - 44032: 0xA29F, + 51567 - 44032: 0xA2A0, + 51568 - 44032: 0xC1EB, + 51569 - 44032: 0xA341, + 51570 - 44032: 0xA342, + 51571 - 44032: 0xA343, + 51572 - 44032: 0xC1EC, + 51573 - 44032: 0xA344, + 51574 - 44032: 0xA345, + 51575 - 44032: 0xA346, + 51576 - 44032: 0xA347, + 51577 - 44032: 0xA348, + 51578 - 44032: 0xA349, + 51579 - 44032: 0xA34A, + 51580 - 44032: 0xC1ED, + 51581 - 44032: 0xA34B, + 51582 - 44032: 0xA34C, + 51583 - 44032: 0xA34D, + 51584 - 44032: 0xA34E, + 51585 - 44032: 0xA34F, + 51586 - 44032: 0xA350, + 51587 - 44032: 0xA351, + 51588 - 44032: 0xA352, + 51589 - 44032: 0xA353, + 51590 - 44032: 0xA354, + 51591 - 44032: 0xA355, + 51592 - 44032: 0xC1EE, + 51593 - 44032: 0xC1EF, + 51594 - 44032: 0xA356, + 51595 - 44032: 0xA357, + 51596 - 44032: 0xC1F0, + 51597 - 44032: 0xA358, + 51598 - 44032: 0xA359, + 51599 - 44032: 0xA35A, + 51600 - 44032: 0xC1F1, + 51601 - 44032: 0xA361, + 51602 - 44032: 0xA362, + 51603 - 44032: 0xA363, + 51604 - 44032: 0xA364, + 51605 - 44032: 0xA365, + 51606 - 44032: 0xA366, + 51607 - 44032: 0xA367, + 51608 - 44032: 0xC1F2, + 51609 - 44032: 0xC1F3, + 51610 - 44032: 0xA368, + 51611 - 44032: 0xC1F4, + 51612 - 44032: 0xA369, + 51613 - 44032: 0xC1F5, + 51614 - 44032: 0xA36A, + 51615 - 44032: 0xA36B, + 51616 - 44032: 0xA36C, + 51617 - 44032: 0xA36D, + 51618 - 44032: 0xA36E, + 51619 - 44032: 0xA36F, + 51620 - 44032: 0xA370, + 51621 - 44032: 0xA371, + 51622 - 44032: 0xA372, + 51623 - 44032: 0xA373, + 51624 - 44032: 0xA374, + 51625 - 44032: 0xA375, + 51626 - 44032: 0xA376, + 51627 - 44032: 0xA377, + 51628 - 44032: 0xA378, + 51629 - 44032: 0xA379, + 51630 - 44032: 0xA37A, + 51631 - 44032: 0xA381, + 51632 - 44032: 0xA382, + 51633 - 44032: 0xA383, + 51634 - 44032: 0xA384, + 51635 - 44032: 0xA385, + 51636 - 44032: 0xA386, + 51637 - 44032: 0xA387, + 51638 - 44032: 0xA388, + 51639 - 44032: 0xA389, + 51640 - 44032: 0xA38A, + 51641 - 44032: 0xA38B, + 51642 - 44032: 0xA38C, + 51643 - 44032: 0xA38D, + 51644 - 44032: 0xA38E, + 51645 - 44032: 0xA38F, + 51646 - 44032: 0xA390, + 51647 - 44032: 0xA391, + 51648 - 44032: 0xC1F6, + 51649 - 44032: 0xC1F7, + 51650 - 44032: 0xA392, + 51651 - 44032: 0xA393, + 51652 - 44032: 0xC1F8, + 51653 - 44032: 0xA394, + 51654 - 44032: 0xA395, + 51655 - 44032: 0xC1F9, + 51656 - 44032: 0xC1FA, + 51657 - 44032: 0xA396, + 51658 - 44032: 0xC1FB, + 51659 - 44032: 0xA397, + 51660 - 44032: 0xA398, + 51661 - 44032: 0xA399, + 51662 - 44032: 0xA39A, + 51663 - 44032: 0xA39B, + 51664 - 44032: 0xC1FC, + 51665 - 44032: 0xC1FD, + 51666 - 44032: 0xA39C, + 51667 - 44032: 0xC1FE, + 51668 - 44032: 0xA39D, + 51669 - 44032: 0xC2A1, + 51670 - 44032: 0xC2A2, + 51671 - 44032: 0xA39E, + 51672 - 44032: 0xA39F, + 51673 - 44032: 0xC2A3, + 51674 - 44032: 0xC2A4, + 51675 - 44032: 0xA3A0, + 51676 - 44032: 0xC2A5, + 51677 - 44032: 0xC2A6, + 51678 - 44032: 0xA441, + 51679 - 44032: 0xA442, + 51680 - 44032: 0xC2A7, + 51681 - 44032: 0xA443, + 51682 - 44032: 0xC2A8, + 51683 - 44032: 0xA444, + 51684 - 44032: 0xC2A9, + 51685 - 44032: 0xA445, + 51686 - 44032: 0xA446, + 51687 - 44032: 0xC2AA, + 51688 - 44032: 0xA447, + 51689 - 44032: 0xA448, + 51690 - 44032: 0xA449, + 51691 - 44032: 0xA44A, + 51692 - 44032: 0xC2AB, + 51693 - 44032: 0xC2AC, + 51694 - 44032: 0xA44B, + 51695 - 44032: 0xC2AD, + 51696 - 44032: 0xC2AE, + 51697 - 44032: 0xC2AF, + 51698 - 44032: 0xA44C, + 51699 - 44032: 0xA44D, + 51700 - 44032: 0xA44E, + 51701 - 44032: 0xA44F, + 51702 - 44032: 0xA450, + 51703 - 44032: 0xA451, + 51704 - 44032: 0xC2B0, + 51705 - 44032: 0xC2B1, + 51706 - 44032: 0xA452, + 51707 - 44032: 0xA453, + 51708 - 44032: 0xC2B2, + 51709 - 44032: 0xA454, + 51710 - 44032: 0xA455, + 51711 - 44032: 0xA456, + 51712 - 44032: 0xC2B3, + 51713 - 44032: 0xA457, + 51714 - 44032: 0xA458, + 51715 - 44032: 0xA459, + 51716 - 44032: 0xA45A, + 51717 - 44032: 0xA461, + 51718 - 44032: 0xA462, + 51719 - 44032: 0xA463, + 51720 - 44032: 0xC2B4, + 51721 - 44032: 0xC2B5, + 51722 - 44032: 0xA464, + 51723 - 44032: 0xC2B6, + 51724 - 44032: 0xC2B7, + 51725 - 44032: 0xC2B8, + 51726 - 44032: 0xA465, + 51727 - 44032: 0xA466, + 51728 - 44032: 0xA467, + 51729 - 44032: 0xA468, + 51730 - 44032: 0xA469, + 51731 - 44032: 0xA46A, + 51732 - 44032: 0xC2B9, + 51733 - 44032: 0xA46B, + 51734 - 44032: 0xA46C, + 51735 - 44032: 0xA46D, + 51736 - 44032: 0xC2BA, + 51737 - 44032: 0xA46E, + 51738 - 44032: 0xA46F, + 51739 - 44032: 0xA470, + 51740 - 44032: 0xA471, + 51741 - 44032: 0xA472, + 51742 - 44032: 0xA473, + 51743 - 44032: 0xA474, + 51744 - 44032: 0xA475, + 51745 - 44032: 0xA476, + 51746 - 44032: 0xA477, + 51747 - 44032: 0xA478, + 51748 - 44032: 0xA479, + 51749 - 44032: 0xA47A, + 51750 - 44032: 0xA481, + 51751 - 44032: 0xA482, + 51752 - 44032: 0xA483, + 51753 - 44032: 0xC2BB, + 51754 - 44032: 0xA484, + 51755 - 44032: 0xA485, + 51756 - 44032: 0xA486, + 51757 - 44032: 0xA487, + 51758 - 44032: 0xA488, + 51759 - 44032: 0xA489, + 51760 - 44032: 0xA48A, + 51761 - 44032: 0xA48B, + 51762 - 44032: 0xA48C, + 51763 - 44032: 0xA48D, + 51764 - 44032: 0xA48E, + 51765 - 44032: 0xA48F, + 51766 - 44032: 0xA490, + 51767 - 44032: 0xA491, + 51768 - 44032: 0xA492, + 51769 - 44032: 0xA493, + 51770 - 44032: 0xA494, + 51771 - 44032: 0xA495, + 51772 - 44032: 0xA496, + 51773 - 44032: 0xA497, + 51774 - 44032: 0xA498, + 51775 - 44032: 0xA499, + 51776 - 44032: 0xA49A, + 51777 - 44032: 0xA49B, + 51778 - 44032: 0xA49C, + 51779 - 44032: 0xA49D, + 51780 - 44032: 0xA49E, + 51781 - 44032: 0xA49F, + 51782 - 44032: 0xA4A0, + 51783 - 44032: 0xA541, + 51784 - 44032: 0xA542, + 51785 - 44032: 0xA543, + 51786 - 44032: 0xA544, + 51787 - 44032: 0xA545, + 51788 - 44032: 0xC2BC, + 51789 - 44032: 0xC2BD, + 51790 - 44032: 0xA546, + 51791 - 44032: 0xA547, + 51792 - 44032: 0xC2BE, + 51793 - 44032: 0xA548, + 51794 - 44032: 0xA549, + 51795 - 44032: 0xA54A, + 51796 - 44032: 0xC2BF, + 51797 - 44032: 0xA54B, + 51798 - 44032: 0xA54C, + 51799 - 44032: 0xA54D, + 51800 - 44032: 0xA54E, + 51801 - 44032: 0xA54F, + 51802 - 44032: 0xA550, + 51803 - 44032: 0xA551, + 51804 - 44032: 0xC2C0, + 51805 - 44032: 0xC2C1, + 51806 - 44032: 0xA552, + 51807 - 44032: 0xC2C2, + 51808 - 44032: 0xC2C3, + 51809 - 44032: 0xC2C4, + 51810 - 44032: 0xA553, + 51811 - 44032: 0xA554, + 51812 - 44032: 0xA555, + 51813 - 44032: 0xA556, + 51814 - 44032: 0xA557, + 51815 - 44032: 0xA558, + 51816 - 44032: 0xC2C5, + 51817 - 44032: 0xA559, + 51818 - 44032: 0xA55A, + 51819 - 44032: 0xA561, + 51820 - 44032: 0xA562, + 51821 - 44032: 0xA563, + 51822 - 44032: 0xA564, + 51823 - 44032: 0xA565, + 51824 - 44032: 0xA566, + 51825 - 44032: 0xA567, + 51826 - 44032: 0xA568, + 51827 - 44032: 0xA569, + 51828 - 44032: 0xA56A, + 51829 - 44032: 0xA56B, + 51830 - 44032: 0xA56C, + 51831 - 44032: 0xA56D, + 51832 - 44032: 0xA56E, + 51833 - 44032: 0xA56F, + 51834 - 44032: 0xA570, + 51835 - 44032: 0xA571, + 51836 - 44032: 0xA572, + 51837 - 44032: 0xC2C6, + 51838 - 44032: 0xA573, + 51839 - 44032: 0xA574, + 51840 - 44032: 0xA575, + 51841 - 44032: 0xA576, + 51842 - 44032: 0xA577, + 51843 - 44032: 0xA578, + 51844 - 44032: 0xC2C7, + 51845 - 44032: 0xA579, + 51846 - 44032: 0xA57A, + 51847 - 44032: 0xA581, + 51848 - 44032: 0xA582, + 51849 - 44032: 0xA583, + 51850 - 44032: 0xA584, + 51851 - 44032: 0xA585, + 51852 - 44032: 0xA586, + 51853 - 44032: 0xA587, + 51854 - 44032: 0xA588, + 51855 - 44032: 0xA589, + 51856 - 44032: 0xA58A, + 51857 - 44032: 0xA58B, + 51858 - 44032: 0xA58C, + 51859 - 44032: 0xA58D, + 51860 - 44032: 0xA58E, + 51861 - 44032: 0xA58F, + 51862 - 44032: 0xA590, + 51863 - 44032: 0xA591, + 51864 - 44032: 0xC2C8, + 51865 - 44032: 0xA592, + 51866 - 44032: 0xA593, + 51867 - 44032: 0xA594, + 51868 - 44032: 0xA595, + 51869 - 44032: 0xA596, + 51870 - 44032: 0xA597, + 51871 - 44032: 0xA598, + 51872 - 44032: 0xA599, + 51873 - 44032: 0xA59A, + 51874 - 44032: 0xA59B, + 51875 - 44032: 0xA59C, + 51876 - 44032: 0xA59D, + 51877 - 44032: 0xA59E, + 51878 - 44032: 0xA59F, + 51879 - 44032: 0xA5A0, + 51880 - 44032: 0xA641, + 51881 - 44032: 0xA642, + 51882 - 44032: 0xA643, + 51883 - 44032: 0xA644, + 51884 - 44032: 0xA645, + 51885 - 44032: 0xA646, + 51886 - 44032: 0xA647, + 51887 - 44032: 0xA648, + 51888 - 44032: 0xA649, + 51889 - 44032: 0xA64A, + 51890 - 44032: 0xA64B, + 51891 - 44032: 0xA64C, + 51892 - 44032: 0xA64D, + 51893 - 44032: 0xA64E, + 51894 - 44032: 0xA64F, + 51895 - 44032: 0xA650, + 51896 - 44032: 0xA651, + 51897 - 44032: 0xA652, + 51898 - 44032: 0xA653, + 51899 - 44032: 0xA654, + 51900 - 44032: 0xC2C9, + 51901 - 44032: 0xC2CA, + 51902 - 44032: 0xA655, + 51903 - 44032: 0xA656, + 51904 - 44032: 0xC2CB, + 51905 - 44032: 0xA657, + 51906 - 44032: 0xA658, + 51907 - 44032: 0xA659, + 51908 - 44032: 0xC2CC, + 51909 - 44032: 0xA65A, + 51910 - 44032: 0xA661, + 51911 - 44032: 0xA662, + 51912 - 44032: 0xA663, + 51913 - 44032: 0xA664, + 51914 - 44032: 0xA665, + 51915 - 44032: 0xA666, + 51916 - 44032: 0xC2CD, + 51917 - 44032: 0xC2CE, + 51918 - 44032: 0xA667, + 51919 - 44032: 0xC2CF, + 51920 - 44032: 0xA668, + 51921 - 44032: 0xC2D0, + 51922 - 44032: 0xA669, + 51923 - 44032: 0xC2D1, + 51924 - 44032: 0xA66A, + 51925 - 44032: 0xA66B, + 51926 - 44032: 0xA66C, + 51927 - 44032: 0xA66D, + 51928 - 44032: 0xC2D2, + 51929 - 44032: 0xC2D3, + 51930 - 44032: 0xA66E, + 51931 - 44032: 0xA66F, + 51932 - 44032: 0xA670, + 51933 - 44032: 0xA671, + 51934 - 44032: 0xA672, + 51935 - 44032: 0xA673, + 51936 - 44032: 0xC2D4, + 51937 - 44032: 0xA674, + 51938 - 44032: 0xA675, + 51939 - 44032: 0xA676, + 51940 - 44032: 0xA677, + 51941 - 44032: 0xA678, + 51942 - 44032: 0xA679, + 51943 - 44032: 0xA67A, + 51944 - 44032: 0xA681, + 51945 - 44032: 0xA682, + 51946 - 44032: 0xA683, + 51947 - 44032: 0xA684, + 51948 - 44032: 0xC2D5, + 51949 - 44032: 0xA685, + 51950 - 44032: 0xA686, + 51951 - 44032: 0xA687, + 51952 - 44032: 0xA688, + 51953 - 44032: 0xA689, + 51954 - 44032: 0xA68A, + 51955 - 44032: 0xA68B, + 51956 - 44032: 0xC2D6, + 51957 - 44032: 0xA68C, + 51958 - 44032: 0xA68D, + 51959 - 44032: 0xA68E, + 51960 - 44032: 0xA68F, + 51961 - 44032: 0xA690, + 51962 - 44032: 0xA691, + 51963 - 44032: 0xA692, + 51964 - 44032: 0xA693, + 51965 - 44032: 0xA694, + 51966 - 44032: 0xA695, + 51967 - 44032: 0xA696, + 51968 - 44032: 0xA697, + 51969 - 44032: 0xA698, + 51970 - 44032: 0xA699, + 51971 - 44032: 0xA69A, + 51972 - 44032: 0xA69B, + 51973 - 44032: 0xA69C, + 51974 - 44032: 0xA69D, + 51975 - 44032: 0xA69E, + 51976 - 44032: 0xC2D7, + 51977 - 44032: 0xA69F, + 51978 - 44032: 0xA6A0, + 51979 - 44032: 0xA741, + 51980 - 44032: 0xA742, + 51981 - 44032: 0xA743, + 51982 - 44032: 0xA744, + 51983 - 44032: 0xA745, + 51984 - 44032: 0xC2D8, + 51985 - 44032: 0xA746, + 51986 - 44032: 0xA747, + 51987 - 44032: 0xA748, + 51988 - 44032: 0xC2D9, + 51989 - 44032: 0xA749, + 51990 - 44032: 0xA74A, + 51991 - 44032: 0xA74B, + 51992 - 44032: 0xC2DA, + 51993 - 44032: 0xA74C, + 51994 - 44032: 0xA74D, + 51995 - 44032: 0xA74E, + 51996 - 44032: 0xA74F, + 51997 - 44032: 0xA750, + 51998 - 44032: 0xA751, + 51999 - 44032: 0xA752, + 52000 - 44032: 0xC2DB, + 52001 - 44032: 0xC2DC, + 52002 - 44032: 0xA753, + 52003 - 44032: 0xA754, + 52004 - 44032: 0xA755, + 52005 - 44032: 0xA756, + 52006 - 44032: 0xA757, + 52007 - 44032: 0xA758, + 52008 - 44032: 0xA759, + 52009 - 44032: 0xA75A, + 52010 - 44032: 0xA761, + 52011 - 44032: 0xA762, + 52012 - 44032: 0xA763, + 52013 - 44032: 0xA764, + 52014 - 44032: 0xA765, + 52015 - 44032: 0xA766, + 52016 - 44032: 0xA767, + 52017 - 44032: 0xA768, + 52018 - 44032: 0xA769, + 52019 - 44032: 0xA76A, + 52020 - 44032: 0xA76B, + 52021 - 44032: 0xA76C, + 52022 - 44032: 0xA76D, + 52023 - 44032: 0xA76E, + 52024 - 44032: 0xA76F, + 52025 - 44032: 0xA770, + 52026 - 44032: 0xA771, + 52027 - 44032: 0xA772, + 52028 - 44032: 0xA773, + 52029 - 44032: 0xA774, + 52030 - 44032: 0xA775, + 52031 - 44032: 0xA776, + 52032 - 44032: 0xA777, + 52033 - 44032: 0xC2DD, + 52034 - 44032: 0xA778, + 52035 - 44032: 0xA779, + 52036 - 44032: 0xA77A, + 52037 - 44032: 0xA781, + 52038 - 44032: 0xA782, + 52039 - 44032: 0xA783, + 52040 - 44032: 0xC2DE, + 52041 - 44032: 0xC2DF, + 52042 - 44032: 0xA784, + 52043 - 44032: 0xA785, + 52044 - 44032: 0xC2E0, + 52045 - 44032: 0xA786, + 52046 - 44032: 0xA787, + 52047 - 44032: 0xA788, + 52048 - 44032: 0xC2E1, + 52049 - 44032: 0xA789, + 52050 - 44032: 0xA78A, + 52051 - 44032: 0xA78B, + 52052 - 44032: 0xA78C, + 52053 - 44032: 0xA78D, + 52054 - 44032: 0xA78E, + 52055 - 44032: 0xA78F, + 52056 - 44032: 0xC2E2, + 52057 - 44032: 0xC2E3, + 52058 - 44032: 0xA790, + 52059 - 44032: 0xA791, + 52060 - 44032: 0xA792, + 52061 - 44032: 0xC2E4, + 52062 - 44032: 0xA793, + 52063 - 44032: 0xA794, + 52064 - 44032: 0xA795, + 52065 - 44032: 0xA796, + 52066 - 44032: 0xA797, + 52067 - 44032: 0xA798, + 52068 - 44032: 0xC2E5, + 52069 - 44032: 0xA799, + 52070 - 44032: 0xA79A, + 52071 - 44032: 0xA79B, + 52072 - 44032: 0xA79C, + 52073 - 44032: 0xA79D, + 52074 - 44032: 0xA79E, + 52075 - 44032: 0xA79F, + 52076 - 44032: 0xA7A0, + 52077 - 44032: 0xA841, + 52078 - 44032: 0xA842, + 52079 - 44032: 0xA843, + 52080 - 44032: 0xA844, + 52081 - 44032: 0xA845, + 52082 - 44032: 0xA846, + 52083 - 44032: 0xA847, + 52084 - 44032: 0xA848, + 52085 - 44032: 0xA849, + 52086 - 44032: 0xA84A, + 52087 - 44032: 0xA84B, + 52088 - 44032: 0xC2E6, + 52089 - 44032: 0xC2E7, + 52090 - 44032: 0xA84C, + 52091 - 44032: 0xA84D, + 52092 - 44032: 0xA84E, + 52093 - 44032: 0xA84F, + 52094 - 44032: 0xA850, + 52095 - 44032: 0xA851, + 52096 - 44032: 0xA852, + 52097 - 44032: 0xA853, + 52098 - 44032: 0xA854, + 52099 - 44032: 0xA855, + 52100 - 44032: 0xA856, + 52101 - 44032: 0xA857, + 52102 - 44032: 0xA858, + 52103 - 44032: 0xA859, + 52104 - 44032: 0xA85A, + 52105 - 44032: 0xA861, + 52106 - 44032: 0xA862, + 52107 - 44032: 0xA863, + 52108 - 44032: 0xA864, + 52109 - 44032: 0xA865, + 52110 - 44032: 0xA866, + 52111 - 44032: 0xA867, + 52112 - 44032: 0xA868, + 52113 - 44032: 0xA869, + 52114 - 44032: 0xA86A, + 52115 - 44032: 0xA86B, + 52116 - 44032: 0xA86C, + 52117 - 44032: 0xA86D, + 52118 - 44032: 0xA86E, + 52119 - 44032: 0xA86F, + 52120 - 44032: 0xA870, + 52121 - 44032: 0xA871, + 52122 - 44032: 0xA872, + 52123 - 44032: 0xA873, + 52124 - 44032: 0xC2E8, + 52125 - 44032: 0xA874, + 52126 - 44032: 0xA875, + 52127 - 44032: 0xA876, + 52128 - 44032: 0xA877, + 52129 - 44032: 0xA878, + 52130 - 44032: 0xA879, + 52131 - 44032: 0xA87A, + 52132 - 44032: 0xA881, + 52133 - 44032: 0xA882, + 52134 - 44032: 0xA883, + 52135 - 44032: 0xA884, + 52136 - 44032: 0xA885, + 52137 - 44032: 0xA886, + 52138 - 44032: 0xA887, + 52139 - 44032: 0xA888, + 52140 - 44032: 0xA889, + 52141 - 44032: 0xA88A, + 52142 - 44032: 0xA88B, + 52143 - 44032: 0xA88C, + 52144 - 44032: 0xA88D, + 52145 - 44032: 0xA88E, + 52146 - 44032: 0xA88F, + 52147 - 44032: 0xA890, + 52148 - 44032: 0xA891, + 52149 - 44032: 0xA892, + 52150 - 44032: 0xA893, + 52151 - 44032: 0xA894, + 52152 - 44032: 0xC2E9, + 52153 - 44032: 0xA895, + 52154 - 44032: 0xA896, + 52155 - 44032: 0xA897, + 52156 - 44032: 0xA898, + 52157 - 44032: 0xA899, + 52158 - 44032: 0xA89A, + 52159 - 44032: 0xA89B, + 52160 - 44032: 0xA89C, + 52161 - 44032: 0xA89D, + 52162 - 44032: 0xA89E, + 52163 - 44032: 0xA89F, + 52164 - 44032: 0xA8A0, + 52165 - 44032: 0xA941, + 52166 - 44032: 0xA942, + 52167 - 44032: 0xA943, + 52168 - 44032: 0xA944, + 52169 - 44032: 0xA945, + 52170 - 44032: 0xA946, + 52171 - 44032: 0xA947, + 52172 - 44032: 0xA948, + 52173 - 44032: 0xA949, + 52174 - 44032: 0xA94A, + 52175 - 44032: 0xA94B, + 52176 - 44032: 0xA94C, + 52177 - 44032: 0xA94D, + 52178 - 44032: 0xA94E, + 52179 - 44032: 0xA94F, + 52180 - 44032: 0xC2EA, + 52181 - 44032: 0xA950, + 52182 - 44032: 0xA951, + 52183 - 44032: 0xA952, + 52184 - 44032: 0xA953, + 52185 - 44032: 0xA954, + 52186 - 44032: 0xA955, + 52187 - 44032: 0xA956, + 52188 - 44032: 0xA957, + 52189 - 44032: 0xA958, + 52190 - 44032: 0xA959, + 52191 - 44032: 0xA95A, + 52192 - 44032: 0xA961, + 52193 - 44032: 0xA962, + 52194 - 44032: 0xA963, + 52195 - 44032: 0xA964, + 52196 - 44032: 0xC2EB, + 52197 - 44032: 0xA965, + 52198 - 44032: 0xA966, + 52199 - 44032: 0xC2EC, + 52200 - 44032: 0xA967, + 52201 - 44032: 0xC2ED, + 52202 - 44032: 0xA968, + 52203 - 44032: 0xA969, + 52204 - 44032: 0xA96A, + 52205 - 44032: 0xA96B, + 52206 - 44032: 0xA96C, + 52207 - 44032: 0xA96D, + 52208 - 44032: 0xA96E, + 52209 - 44032: 0xA96F, + 52210 - 44032: 0xA970, + 52211 - 44032: 0xA971, + 52212 - 44032: 0xA972, + 52213 - 44032: 0xA973, + 52214 - 44032: 0xA974, + 52215 - 44032: 0xA975, + 52216 - 44032: 0xA976, + 52217 - 44032: 0xA977, + 52218 - 44032: 0xA978, + 52219 - 44032: 0xA979, + 52220 - 44032: 0xA97A, + 52221 - 44032: 0xA981, + 52222 - 44032: 0xA982, + 52223 - 44032: 0xA983, + 52224 - 44032: 0xA984, + 52225 - 44032: 0xA985, + 52226 - 44032: 0xA986, + 52227 - 44032: 0xA987, + 52228 - 44032: 0xA988, + 52229 - 44032: 0xA989, + 52230 - 44032: 0xA98A, + 52231 - 44032: 0xA98B, + 52232 - 44032: 0xA98C, + 52233 - 44032: 0xA98D, + 52234 - 44032: 0xA98E, + 52235 - 44032: 0xA98F, + 52236 - 44032: 0xC2EE, + 52237 - 44032: 0xC2EF, + 52238 - 44032: 0xA990, + 52239 - 44032: 0xA991, + 52240 - 44032: 0xC2F0, + 52241 - 44032: 0xA992, + 52242 - 44032: 0xA993, + 52243 - 44032: 0xA994, + 52244 - 44032: 0xC2F1, + 52245 - 44032: 0xA995, + 52246 - 44032: 0xA996, + 52247 - 44032: 0xA997, + 52248 - 44032: 0xA998, + 52249 - 44032: 0xA999, + 52250 - 44032: 0xA99A, + 52251 - 44032: 0xA99B, + 52252 - 44032: 0xC2F2, + 52253 - 44032: 0xC2F3, + 52254 - 44032: 0xA99C, + 52255 - 44032: 0xA99D, + 52256 - 44032: 0xA99E, + 52257 - 44032: 0xC2F4, + 52258 - 44032: 0xC2F5, + 52259 - 44032: 0xA99F, + 52260 - 44032: 0xA9A0, + 52261 - 44032: 0xAA41, + 52262 - 44032: 0xAA42, + 52263 - 44032: 0xC2F6, + 52264 - 44032: 0xC2F7, + 52265 - 44032: 0xC2F8, + 52266 - 44032: 0xAA43, + 52267 - 44032: 0xAA44, + 52268 - 44032: 0xC2F9, + 52269 - 44032: 0xAA45, + 52270 - 44032: 0xC2FA, + 52271 - 44032: 0xAA46, + 52272 - 44032: 0xC2FB, + 52273 - 44032: 0xAA47, + 52274 - 44032: 0xAA48, + 52275 - 44032: 0xAA49, + 52276 - 44032: 0xAA4A, + 52277 - 44032: 0xAA4B, + 52278 - 44032: 0xAA4C, + 52279 - 44032: 0xAA4D, + 52280 - 44032: 0xC2FC, + 52281 - 44032: 0xC2FD, + 52282 - 44032: 0xAA4E, + 52283 - 44032: 0xC2FE, + 52284 - 44032: 0xC3A1, + 52285 - 44032: 0xC3A2, + 52286 - 44032: 0xC3A3, + 52287 - 44032: 0xAA4F, + 52288 - 44032: 0xAA50, + 52289 - 44032: 0xAA51, + 52290 - 44032: 0xAA52, + 52291 - 44032: 0xAA53, + 52292 - 44032: 0xC3A4, + 52293 - 44032: 0xC3A5, + 52294 - 44032: 0xAA54, + 52295 - 44032: 0xAA55, + 52296 - 44032: 0xC3A6, + 52297 - 44032: 0xAA56, + 52298 - 44032: 0xAA57, + 52299 - 44032: 0xAA58, + 52300 - 44032: 0xC3A7, + 52301 - 44032: 0xAA59, + 52302 - 44032: 0xAA5A, + 52303 - 44032: 0xAA61, + 52304 - 44032: 0xAA62, + 52305 - 44032: 0xAA63, + 52306 - 44032: 0xAA64, + 52307 - 44032: 0xAA65, + 52308 - 44032: 0xC3A8, + 52309 - 44032: 0xC3A9, + 52310 - 44032: 0xAA66, + 52311 - 44032: 0xC3AA, + 52312 - 44032: 0xC3AB, + 52313 - 44032: 0xC3AC, + 52314 - 44032: 0xAA67, + 52315 - 44032: 0xAA68, + 52316 - 44032: 0xAA69, + 52317 - 44032: 0xAA6A, + 52318 - 44032: 0xAA6B, + 52319 - 44032: 0xAA6C, + 52320 - 44032: 0xC3AD, + 52321 - 44032: 0xAA6D, + 52322 - 44032: 0xAA6E, + 52323 - 44032: 0xAA6F, + 52324 - 44032: 0xC3AE, + 52325 - 44032: 0xAA70, + 52326 - 44032: 0xC3AF, + 52327 - 44032: 0xAA71, + 52328 - 44032: 0xC3B0, + 52329 - 44032: 0xAA72, + 52330 - 44032: 0xAA73, + 52331 - 44032: 0xAA74, + 52332 - 44032: 0xAA75, + 52333 - 44032: 0xAA76, + 52334 - 44032: 0xAA77, + 52335 - 44032: 0xAA78, + 52336 - 44032: 0xC3B1, + 52337 - 44032: 0xAA79, + 52338 - 44032: 0xAA7A, + 52339 - 44032: 0xAA81, + 52340 - 44032: 0xAA82, + 52341 - 44032: 0xC3B2, + 52342 - 44032: 0xAA83, + 52343 - 44032: 0xAA84, + 52344 - 44032: 0xAA85, + 52345 - 44032: 0xAA86, + 52346 - 44032: 0xAA87, + 52347 - 44032: 0xAA88, + 52348 - 44032: 0xAA89, + 52349 - 44032: 0xAA8A, + 52350 - 44032: 0xAA8B, + 52351 - 44032: 0xAA8C, + 52352 - 44032: 0xAA8D, + 52353 - 44032: 0xAA8E, + 52354 - 44032: 0xAA8F, + 52355 - 44032: 0xAA90, + 52356 - 44032: 0xAA91, + 52357 - 44032: 0xAA92, + 52358 - 44032: 0xAA93, + 52359 - 44032: 0xAA94, + 52360 - 44032: 0xAA95, + 52361 - 44032: 0xAA96, + 52362 - 44032: 0xAA97, + 52363 - 44032: 0xAA98, + 52364 - 44032: 0xAA99, + 52365 - 44032: 0xAA9A, + 52366 - 44032: 0xAA9B, + 52367 - 44032: 0xAA9C, + 52368 - 44032: 0xAA9D, + 52369 - 44032: 0xAA9E, + 52370 - 44032: 0xAA9F, + 52371 - 44032: 0xAAA0, + 52372 - 44032: 0xAB41, + 52373 - 44032: 0xAB42, + 52374 - 44032: 0xAB43, + 52375 - 44032: 0xAB44, + 52376 - 44032: 0xC3B3, + 52377 - 44032: 0xC3B4, + 52378 - 44032: 0xAB45, + 52379 - 44032: 0xAB46, + 52380 - 44032: 0xC3B5, + 52381 - 44032: 0xAB47, + 52382 - 44032: 0xAB48, + 52383 - 44032: 0xAB49, + 52384 - 44032: 0xC3B6, + 52385 - 44032: 0xAB4A, + 52386 - 44032: 0xAB4B, + 52387 - 44032: 0xAB4C, + 52388 - 44032: 0xAB4D, + 52389 - 44032: 0xAB4E, + 52390 - 44032: 0xAB4F, + 52391 - 44032: 0xAB50, + 52392 - 44032: 0xC3B7, + 52393 - 44032: 0xC3B8, + 52394 - 44032: 0xAB51, + 52395 - 44032: 0xC3B9, + 52396 - 44032: 0xC3BA, + 52397 - 44032: 0xC3BB, + 52398 - 44032: 0xAB52, + 52399 - 44032: 0xAB53, + 52400 - 44032: 0xAB54, + 52401 - 44032: 0xAB55, + 52402 - 44032: 0xAB56, + 52403 - 44032: 0xAB57, + 52404 - 44032: 0xC3BC, + 52405 - 44032: 0xC3BD, + 52406 - 44032: 0xAB58, + 52407 - 44032: 0xAB59, + 52408 - 44032: 0xC3BE, + 52409 - 44032: 0xAB5A, + 52410 - 44032: 0xAB61, + 52411 - 44032: 0xAB62, + 52412 - 44032: 0xC3BF, + 52413 - 44032: 0xAB63, + 52414 - 44032: 0xAB64, + 52415 - 44032: 0xAB65, + 52416 - 44032: 0xAB66, + 52417 - 44032: 0xAB67, + 52418 - 44032: 0xAB68, + 52419 - 44032: 0xAB69, + 52420 - 44032: 0xC3C0, + 52421 - 44032: 0xC3C1, + 52422 - 44032: 0xAB6A, + 52423 - 44032: 0xC3C2, + 52424 - 44032: 0xAB6B, + 52425 - 44032: 0xC3C3, + 52426 - 44032: 0xAB6C, + 52427 - 44032: 0xAB6D, + 52428 - 44032: 0xAB6E, + 52429 - 44032: 0xAB6F, + 52430 - 44032: 0xAB70, + 52431 - 44032: 0xAB71, + 52432 - 44032: 0xC3C4, + 52433 - 44032: 0xAB72, + 52434 - 44032: 0xAB73, + 52435 - 44032: 0xAB74, + 52436 - 44032: 0xC3C5, + 52437 - 44032: 0xAB75, + 52438 - 44032: 0xAB76, + 52439 - 44032: 0xAB77, + 52440 - 44032: 0xAB78, + 52441 - 44032: 0xAB79, + 52442 - 44032: 0xAB7A, + 52443 - 44032: 0xAB81, + 52444 - 44032: 0xAB82, + 52445 - 44032: 0xAB83, + 52446 - 44032: 0xAB84, + 52447 - 44032: 0xAB85, + 52448 - 44032: 0xAB86, + 52449 - 44032: 0xAB87, + 52450 - 44032: 0xAB88, + 52451 - 44032: 0xAB89, + 52452 - 44032: 0xC3C6, + 52453 - 44032: 0xAB8A, + 52454 - 44032: 0xAB8B, + 52455 - 44032: 0xAB8C, + 52456 - 44032: 0xAB8D, + 52457 - 44032: 0xAB8E, + 52458 - 44032: 0xAB8F, + 52459 - 44032: 0xAB90, + 52460 - 44032: 0xC3C7, + 52461 - 44032: 0xAB91, + 52462 - 44032: 0xAB92, + 52463 - 44032: 0xAB93, + 52464 - 44032: 0xC3C8, + 52465 - 44032: 0xAB94, + 52466 - 44032: 0xAB95, + 52467 - 44032: 0xAB96, + 52468 - 44032: 0xAB97, + 52469 - 44032: 0xAB98, + 52470 - 44032: 0xAB99, + 52471 - 44032: 0xAB9A, + 52472 - 44032: 0xAB9B, + 52473 - 44032: 0xAB9C, + 52474 - 44032: 0xAB9D, + 52475 - 44032: 0xAB9E, + 52476 - 44032: 0xAB9F, + 52477 - 44032: 0xABA0, + 52478 - 44032: 0xAC41, + 52479 - 44032: 0xAC42, + 52480 - 44032: 0xAC43, + 52481 - 44032: 0xC3C9, + 52482 - 44032: 0xAC44, + 52483 - 44032: 0xAC45, + 52484 - 44032: 0xAC46, + 52485 - 44032: 0xAC47, + 52486 - 44032: 0xAC48, + 52487 - 44032: 0xAC49, + 52488 - 44032: 0xC3CA, + 52489 - 44032: 0xC3CB, + 52490 - 44032: 0xAC4A, + 52491 - 44032: 0xAC4B, + 52492 - 44032: 0xC3CC, + 52493 - 44032: 0xAC4C, + 52494 - 44032: 0xAC4D, + 52495 - 44032: 0xAC4E, + 52496 - 44032: 0xC3CD, + 52497 - 44032: 0xAC4F, + 52498 - 44032: 0xAC50, + 52499 - 44032: 0xAC51, + 52500 - 44032: 0xAC52, + 52501 - 44032: 0xAC53, + 52502 - 44032: 0xAC54, + 52503 - 44032: 0xAC55, + 52504 - 44032: 0xC3CE, + 52505 - 44032: 0xC3CF, + 52506 - 44032: 0xAC56, + 52507 - 44032: 0xC3D0, + 52508 - 44032: 0xAC57, + 52509 - 44032: 0xC3D1, + 52510 - 44032: 0xAC58, + 52511 - 44032: 0xAC59, + 52512 - 44032: 0xAC5A, + 52513 - 44032: 0xAC61, + 52514 - 44032: 0xAC62, + 52515 - 44032: 0xAC63, + 52516 - 44032: 0xC3D2, + 52517 - 44032: 0xAC64, + 52518 - 44032: 0xAC65, + 52519 - 44032: 0xAC66, + 52520 - 44032: 0xC3D3, + 52521 - 44032: 0xAC67, + 52522 - 44032: 0xAC68, + 52523 - 44032: 0xAC69, + 52524 - 44032: 0xC3D4, + 52525 - 44032: 0xAC6A, + 52526 - 44032: 0xAC6B, + 52527 - 44032: 0xAC6C, + 52528 - 44032: 0xAC6D, + 52529 - 44032: 0xAC6E, + 52530 - 44032: 0xAC6F, + 52531 - 44032: 0xAC70, + 52532 - 44032: 0xAC71, + 52533 - 44032: 0xAC72, + 52534 - 44032: 0xAC73, + 52535 - 44032: 0xAC74, + 52536 - 44032: 0xAC75, + 52537 - 44032: 0xC3D5, + 52538 - 44032: 0xAC76, + 52539 - 44032: 0xAC77, + 52540 - 44032: 0xAC78, + 52541 - 44032: 0xAC79, + 52542 - 44032: 0xAC7A, + 52543 - 44032: 0xAC81, + 52544 - 44032: 0xAC82, + 52545 - 44032: 0xAC83, + 52546 - 44032: 0xAC84, + 52547 - 44032: 0xAC85, + 52548 - 44032: 0xAC86, + 52549 - 44032: 0xAC87, + 52550 - 44032: 0xAC88, + 52551 - 44032: 0xAC89, + 52552 - 44032: 0xAC8A, + 52553 - 44032: 0xAC8B, + 52554 - 44032: 0xAC8C, + 52555 - 44032: 0xAC8D, + 52556 - 44032: 0xAC8E, + 52557 - 44032: 0xAC8F, + 52558 - 44032: 0xAC90, + 52559 - 44032: 0xAC91, + 52560 - 44032: 0xAC92, + 52561 - 44032: 0xAC93, + 52562 - 44032: 0xAC94, + 52563 - 44032: 0xAC95, + 52564 - 44032: 0xAC96, + 52565 - 44032: 0xAC97, + 52566 - 44032: 0xAC98, + 52567 - 44032: 0xAC99, + 52568 - 44032: 0xAC9A, + 52569 - 44032: 0xAC9B, + 52570 - 44032: 0xAC9C, + 52571 - 44032: 0xAC9D, + 52572 - 44032: 0xC3D6, + 52573 - 44032: 0xAC9E, + 52574 - 44032: 0xAC9F, + 52575 - 44032: 0xACA0, + 52576 - 44032: 0xC3D7, + 52577 - 44032: 0xAD41, + 52578 - 44032: 0xAD42, + 52579 - 44032: 0xAD43, + 52580 - 44032: 0xC3D8, + 52581 - 44032: 0xAD44, + 52582 - 44032: 0xAD45, + 52583 - 44032: 0xAD46, + 52584 - 44032: 0xAD47, + 52585 - 44032: 0xAD48, + 52586 - 44032: 0xAD49, + 52587 - 44032: 0xAD4A, + 52588 - 44032: 0xC3D9, + 52589 - 44032: 0xC3DA, + 52590 - 44032: 0xAD4B, + 52591 - 44032: 0xC3DB, + 52592 - 44032: 0xAD4C, + 52593 - 44032: 0xC3DC, + 52594 - 44032: 0xAD4D, + 52595 - 44032: 0xAD4E, + 52596 - 44032: 0xAD4F, + 52597 - 44032: 0xAD50, + 52598 - 44032: 0xAD51, + 52599 - 44032: 0xAD52, + 52600 - 44032: 0xC3DD, + 52601 - 44032: 0xAD53, + 52602 - 44032: 0xAD54, + 52603 - 44032: 0xAD55, + 52604 - 44032: 0xAD56, + 52605 - 44032: 0xAD57, + 52606 - 44032: 0xAD58, + 52607 - 44032: 0xAD59, + 52608 - 44032: 0xAD5A, + 52609 - 44032: 0xAD61, + 52610 - 44032: 0xAD62, + 52611 - 44032: 0xAD63, + 52612 - 44032: 0xAD64, + 52613 - 44032: 0xAD65, + 52614 - 44032: 0xAD66, + 52615 - 44032: 0xAD67, + 52616 - 44032: 0xC3DE, + 52617 - 44032: 0xAD68, + 52618 - 44032: 0xAD69, + 52619 - 44032: 0xAD6A, + 52620 - 44032: 0xAD6B, + 52621 - 44032: 0xAD6C, + 52622 - 44032: 0xAD6D, + 52623 - 44032: 0xAD6E, + 52624 - 44032: 0xAD6F, + 52625 - 44032: 0xAD70, + 52626 - 44032: 0xAD71, + 52627 - 44032: 0xAD72, + 52628 - 44032: 0xC3DF, + 52629 - 44032: 0xC3E0, + 52630 - 44032: 0xAD73, + 52631 - 44032: 0xAD74, + 52632 - 44032: 0xC3E1, + 52633 - 44032: 0xAD75, + 52634 - 44032: 0xAD76, + 52635 - 44032: 0xAD77, + 52636 - 44032: 0xC3E2, + 52637 - 44032: 0xAD78, + 52638 - 44032: 0xAD79, + 52639 - 44032: 0xAD7A, + 52640 - 44032: 0xAD81, + 52641 - 44032: 0xAD82, + 52642 - 44032: 0xAD83, + 52643 - 44032: 0xAD84, + 52644 - 44032: 0xC3E3, + 52645 - 44032: 0xC3E4, + 52646 - 44032: 0xAD85, + 52647 - 44032: 0xC3E5, + 52648 - 44032: 0xAD86, + 52649 - 44032: 0xC3E6, + 52650 - 44032: 0xAD87, + 52651 - 44032: 0xAD88, + 52652 - 44032: 0xAD89, + 52653 - 44032: 0xAD8A, + 52654 - 44032: 0xAD8B, + 52655 - 44032: 0xAD8C, + 52656 - 44032: 0xC3E7, + 52657 - 44032: 0xAD8D, + 52658 - 44032: 0xAD8E, + 52659 - 44032: 0xAD8F, + 52660 - 44032: 0xAD90, + 52661 - 44032: 0xAD91, + 52662 - 44032: 0xAD92, + 52663 - 44032: 0xAD93, + 52664 - 44032: 0xAD94, + 52665 - 44032: 0xAD95, + 52666 - 44032: 0xAD96, + 52667 - 44032: 0xAD97, + 52668 - 44032: 0xAD98, + 52669 - 44032: 0xAD99, + 52670 - 44032: 0xAD9A, + 52671 - 44032: 0xAD9B, + 52672 - 44032: 0xAD9C, + 52673 - 44032: 0xAD9D, + 52674 - 44032: 0xAD9E, + 52675 - 44032: 0xAD9F, + 52676 - 44032: 0xC3E8, + 52677 - 44032: 0xADA0, + 52678 - 44032: 0xAE41, + 52679 - 44032: 0xAE42, + 52680 - 44032: 0xAE43, + 52681 - 44032: 0xAE44, + 52682 - 44032: 0xAE45, + 52683 - 44032: 0xAE46, + 52684 - 44032: 0xC3E9, + 52685 - 44032: 0xAE47, + 52686 - 44032: 0xAE48, + 52687 - 44032: 0xAE49, + 52688 - 44032: 0xC3EA, + 52689 - 44032: 0xAE4A, + 52690 - 44032: 0xAE4B, + 52691 - 44032: 0xAE4C, + 52692 - 44032: 0xAE4D, + 52693 - 44032: 0xAE4E, + 52694 - 44032: 0xAE4F, + 52695 - 44032: 0xAE50, + 52696 - 44032: 0xAE51, + 52697 - 44032: 0xAE52, + 52698 - 44032: 0xAE53, + 52699 - 44032: 0xAE54, + 52700 - 44032: 0xAE55, + 52701 - 44032: 0xAE56, + 52702 - 44032: 0xAE57, + 52703 - 44032: 0xAE58, + 52704 - 44032: 0xAE59, + 52705 - 44032: 0xAE5A, + 52706 - 44032: 0xAE61, + 52707 - 44032: 0xAE62, + 52708 - 44032: 0xAE63, + 52709 - 44032: 0xAE64, + 52710 - 44032: 0xAE65, + 52711 - 44032: 0xAE66, + 52712 - 44032: 0xC3EB, + 52713 - 44032: 0xAE67, + 52714 - 44032: 0xAE68, + 52715 - 44032: 0xAE69, + 52716 - 44032: 0xC3EC, + 52717 - 44032: 0xAE6A, + 52718 - 44032: 0xAE6B, + 52719 - 44032: 0xAE6C, + 52720 - 44032: 0xC3ED, + 52721 - 44032: 0xAE6D, + 52722 - 44032: 0xAE6E, + 52723 - 44032: 0xAE6F, + 52724 - 44032: 0xAE70, + 52725 - 44032: 0xAE71, + 52726 - 44032: 0xAE72, + 52727 - 44032: 0xAE73, + 52728 - 44032: 0xC3EE, + 52729 - 44032: 0xC3EF, + 52730 - 44032: 0xAE74, + 52731 - 44032: 0xC3F0, + 52732 - 44032: 0xAE75, + 52733 - 44032: 0xC3F1, + 52734 - 44032: 0xAE76, + 52735 - 44032: 0xAE77, + 52736 - 44032: 0xAE78, + 52737 - 44032: 0xAE79, + 52738 - 44032: 0xAE7A, + 52739 - 44032: 0xAE81, + 52740 - 44032: 0xC3F2, + 52741 - 44032: 0xAE82, + 52742 - 44032: 0xAE83, + 52743 - 44032: 0xAE84, + 52744 - 44032: 0xC3F3, + 52745 - 44032: 0xAE85, + 52746 - 44032: 0xAE86, + 52747 - 44032: 0xAE87, + 52748 - 44032: 0xC3F4, + 52749 - 44032: 0xAE88, + 52750 - 44032: 0xAE89, + 52751 - 44032: 0xAE8A, + 52752 - 44032: 0xAE8B, + 52753 - 44032: 0xAE8C, + 52754 - 44032: 0xAE8D, + 52755 - 44032: 0xAE8E, + 52756 - 44032: 0xC3F5, + 52757 - 44032: 0xAE8F, + 52758 - 44032: 0xAE90, + 52759 - 44032: 0xAE91, + 52760 - 44032: 0xAE92, + 52761 - 44032: 0xC3F6, + 52762 - 44032: 0xAE93, + 52763 - 44032: 0xAE94, + 52764 - 44032: 0xAE95, + 52765 - 44032: 0xAE96, + 52766 - 44032: 0xAE97, + 52767 - 44032: 0xAE98, + 52768 - 44032: 0xC3F7, + 52769 - 44032: 0xC3F8, + 52770 - 44032: 0xAE99, + 52771 - 44032: 0xAE9A, + 52772 - 44032: 0xC3F9, + 52773 - 44032: 0xAE9B, + 52774 - 44032: 0xAE9C, + 52775 - 44032: 0xAE9D, + 52776 - 44032: 0xC3FA, + 52777 - 44032: 0xAE9E, + 52778 - 44032: 0xAE9F, + 52779 - 44032: 0xAEA0, + 52780 - 44032: 0xAF41, + 52781 - 44032: 0xAF42, + 52782 - 44032: 0xAF43, + 52783 - 44032: 0xAF44, + 52784 - 44032: 0xC3FB, + 52785 - 44032: 0xC3FC, + 52786 - 44032: 0xAF45, + 52787 - 44032: 0xC3FD, + 52788 - 44032: 0xAF46, + 52789 - 44032: 0xC3FE, + 52790 - 44032: 0xAF47, + 52791 - 44032: 0xAF48, + 52792 - 44032: 0xAF49, + 52793 - 44032: 0xAF4A, + 52794 - 44032: 0xAF4B, + 52795 - 44032: 0xAF4C, + 52796 - 44032: 0xAF4D, + 52797 - 44032: 0xAF4E, + 52798 - 44032: 0xAF4F, + 52799 - 44032: 0xAF50, + 52800 - 44032: 0xAF51, + 52801 - 44032: 0xAF52, + 52802 - 44032: 0xAF53, + 52803 - 44032: 0xAF54, + 52804 - 44032: 0xAF55, + 52805 - 44032: 0xAF56, + 52806 - 44032: 0xAF57, + 52807 - 44032: 0xAF58, + 52808 - 44032: 0xAF59, + 52809 - 44032: 0xAF5A, + 52810 - 44032: 0xAF61, + 52811 - 44032: 0xAF62, + 52812 - 44032: 0xAF63, + 52813 - 44032: 0xAF64, + 52814 - 44032: 0xAF65, + 52815 - 44032: 0xAF66, + 52816 - 44032: 0xAF67, + 52817 - 44032: 0xAF68, + 52818 - 44032: 0xAF69, + 52819 - 44032: 0xAF6A, + 52820 - 44032: 0xAF6B, + 52821 - 44032: 0xAF6C, + 52822 - 44032: 0xAF6D, + 52823 - 44032: 0xAF6E, + 52824 - 44032: 0xC4A1, + 52825 - 44032: 0xC4A2, + 52826 - 44032: 0xAF6F, + 52827 - 44032: 0xAF70, + 52828 - 44032: 0xC4A3, + 52829 - 44032: 0xAF71, + 52830 - 44032: 0xAF72, + 52831 - 44032: 0xC4A4, + 52832 - 44032: 0xC4A5, + 52833 - 44032: 0xC4A6, + 52834 - 44032: 0xAF73, + 52835 - 44032: 0xAF74, + 52836 - 44032: 0xAF75, + 52837 - 44032: 0xAF76, + 52838 - 44032: 0xAF77, + 52839 - 44032: 0xAF78, + 52840 - 44032: 0xC4A7, + 52841 - 44032: 0xC4A8, + 52842 - 44032: 0xAF79, + 52843 - 44032: 0xC4A9, + 52844 - 44032: 0xAF7A, + 52845 - 44032: 0xC4AA, + 52846 - 44032: 0xAF81, + 52847 - 44032: 0xAF82, + 52848 - 44032: 0xAF83, + 52849 - 44032: 0xAF84, + 52850 - 44032: 0xAF85, + 52851 - 44032: 0xAF86, + 52852 - 44032: 0xC4AB, + 52853 - 44032: 0xC4AC, + 52854 - 44032: 0xAF87, + 52855 - 44032: 0xAF88, + 52856 - 44032: 0xC4AD, + 52857 - 44032: 0xAF89, + 52858 - 44032: 0xAF8A, + 52859 - 44032: 0xAF8B, + 52860 - 44032: 0xC4AE, + 52861 - 44032: 0xAF8C, + 52862 - 44032: 0xAF8D, + 52863 - 44032: 0xAF8E, + 52864 - 44032: 0xAF8F, + 52865 - 44032: 0xAF90, + 52866 - 44032: 0xAF91, + 52867 - 44032: 0xAF92, + 52868 - 44032: 0xC4AF, + 52869 - 44032: 0xC4B0, + 52870 - 44032: 0xAF93, + 52871 - 44032: 0xC4B1, + 52872 - 44032: 0xAF94, + 52873 - 44032: 0xC4B2, + 52874 - 44032: 0xAF95, + 52875 - 44032: 0xAF96, + 52876 - 44032: 0xAF97, + 52877 - 44032: 0xAF98, + 52878 - 44032: 0xAF99, + 52879 - 44032: 0xAF9A, + 52880 - 44032: 0xC4B3, + 52881 - 44032: 0xC4B4, + 52882 - 44032: 0xAF9B, + 52883 - 44032: 0xAF9C, + 52884 - 44032: 0xC4B5, + 52885 - 44032: 0xAF9D, + 52886 - 44032: 0xAF9E, + 52887 - 44032: 0xAF9F, + 52888 - 44032: 0xC4B6, + 52889 - 44032: 0xAFA0, + 52890 - 44032: 0xB041, + 52891 - 44032: 0xB042, + 52892 - 44032: 0xB043, + 52893 - 44032: 0xB044, + 52894 - 44032: 0xB045, + 52895 - 44032: 0xB046, + 52896 - 44032: 0xC4B7, + 52897 - 44032: 0xC4B8, + 52898 - 44032: 0xB047, + 52899 - 44032: 0xC4B9, + 52900 - 44032: 0xC4BA, + 52901 - 44032: 0xC4BB, + 52902 - 44032: 0xB048, + 52903 - 44032: 0xB049, + 52904 - 44032: 0xB04A, + 52905 - 44032: 0xB04B, + 52906 - 44032: 0xB04C, + 52907 - 44032: 0xB04D, + 52908 - 44032: 0xC4BC, + 52909 - 44032: 0xC4BD, + 52910 - 44032: 0xB04E, + 52911 - 44032: 0xB04F, + 52912 - 44032: 0xB050, + 52913 - 44032: 0xB051, + 52914 - 44032: 0xB052, + 52915 - 44032: 0xB053, + 52916 - 44032: 0xB054, + 52917 - 44032: 0xB055, + 52918 - 44032: 0xB056, + 52919 - 44032: 0xB057, + 52920 - 44032: 0xB058, + 52921 - 44032: 0xB059, + 52922 - 44032: 0xB05A, + 52923 - 44032: 0xB061, + 52924 - 44032: 0xB062, + 52925 - 44032: 0xB063, + 52926 - 44032: 0xB064, + 52927 - 44032: 0xB065, + 52928 - 44032: 0xB066, + 52929 - 44032: 0xC4BE, + 52930 - 44032: 0xB067, + 52931 - 44032: 0xB068, + 52932 - 44032: 0xB069, + 52933 - 44032: 0xB06A, + 52934 - 44032: 0xB06B, + 52935 - 44032: 0xB06C, + 52936 - 44032: 0xB06D, + 52937 - 44032: 0xB06E, + 52938 - 44032: 0xB06F, + 52939 - 44032: 0xB070, + 52940 - 44032: 0xB071, + 52941 - 44032: 0xB072, + 52942 - 44032: 0xB073, + 52943 - 44032: 0xB074, + 52944 - 44032: 0xB075, + 52945 - 44032: 0xB076, + 52946 - 44032: 0xB077, + 52947 - 44032: 0xB078, + 52948 - 44032: 0xB079, + 52949 - 44032: 0xB07A, + 52950 - 44032: 0xB081, + 52951 - 44032: 0xB082, + 52952 - 44032: 0xB083, + 52953 - 44032: 0xB084, + 52954 - 44032: 0xB085, + 52955 - 44032: 0xB086, + 52956 - 44032: 0xB087, + 52957 - 44032: 0xB088, + 52958 - 44032: 0xB089, + 52959 - 44032: 0xB08A, + 52960 - 44032: 0xB08B, + 52961 - 44032: 0xB08C, + 52962 - 44032: 0xB08D, + 52963 - 44032: 0xB08E, + 52964 - 44032: 0xC4BF, + 52965 - 44032: 0xC4C0, + 52966 - 44032: 0xB08F, + 52967 - 44032: 0xB090, + 52968 - 44032: 0xC4C1, + 52969 - 44032: 0xB091, + 52970 - 44032: 0xB092, + 52971 - 44032: 0xC4C2, + 52972 - 44032: 0xC4C3, + 52973 - 44032: 0xB093, + 52974 - 44032: 0xB094, + 52975 - 44032: 0xB095, + 52976 - 44032: 0xB096, + 52977 - 44032: 0xB097, + 52978 - 44032: 0xB098, + 52979 - 44032: 0xB099, + 52980 - 44032: 0xC4C4, + 52981 - 44032: 0xC4C5, + 52982 - 44032: 0xB09A, + 52983 - 44032: 0xC4C6, + 52984 - 44032: 0xC4C7, + 52985 - 44032: 0xC4C8, + 52986 - 44032: 0xB09B, + 52987 - 44032: 0xB09C, + 52988 - 44032: 0xB09D, + 52989 - 44032: 0xB09E, + 52990 - 44032: 0xB09F, + 52991 - 44032: 0xB0A0, + 52992 - 44032: 0xC4C9, + 52993 - 44032: 0xC4CA, + 52994 - 44032: 0xB141, + 52995 - 44032: 0xB142, + 52996 - 44032: 0xC4CB, + 52997 - 44032: 0xB143, + 52998 - 44032: 0xB144, + 52999 - 44032: 0xB145, + 53000 - 44032: 0xC4CC, + 53001 - 44032: 0xB146, + 53002 - 44032: 0xB147, + 53003 - 44032: 0xB148, + 53004 - 44032: 0xB149, + 53005 - 44032: 0xB14A, + 53006 - 44032: 0xB14B, + 53007 - 44032: 0xB14C, + 53008 - 44032: 0xC4CD, + 53009 - 44032: 0xC4CE, + 53010 - 44032: 0xB14D, + 53011 - 44032: 0xC4CF, + 53012 - 44032: 0xB14E, + 53013 - 44032: 0xC4D0, + 53014 - 44032: 0xB14F, + 53015 - 44032: 0xB150, + 53016 - 44032: 0xB151, + 53017 - 44032: 0xB152, + 53018 - 44032: 0xB153, + 53019 - 44032: 0xB154, + 53020 - 44032: 0xC4D1, + 53021 - 44032: 0xB155, + 53022 - 44032: 0xB156, + 53023 - 44032: 0xB157, + 53024 - 44032: 0xC4D2, + 53025 - 44032: 0xB158, + 53026 - 44032: 0xB159, + 53027 - 44032: 0xB15A, + 53028 - 44032: 0xC4D3, + 53029 - 44032: 0xB161, + 53030 - 44032: 0xB162, + 53031 - 44032: 0xB163, + 53032 - 44032: 0xB164, + 53033 - 44032: 0xB165, + 53034 - 44032: 0xB166, + 53035 - 44032: 0xB167, + 53036 - 44032: 0xC4D4, + 53037 - 44032: 0xC4D5, + 53038 - 44032: 0xB168, + 53039 - 44032: 0xC4D6, + 53040 - 44032: 0xC4D7, + 53041 - 44032: 0xC4D8, + 53042 - 44032: 0xB169, + 53043 - 44032: 0xB16A, + 53044 - 44032: 0xB16B, + 53045 - 44032: 0xB16C, + 53046 - 44032: 0xB16D, + 53047 - 44032: 0xB16E, + 53048 - 44032: 0xC4D9, + 53049 - 44032: 0xB16F, + 53050 - 44032: 0xB170, + 53051 - 44032: 0xB171, + 53052 - 44032: 0xB172, + 53053 - 44032: 0xB173, + 53054 - 44032: 0xB174, + 53055 - 44032: 0xB175, + 53056 - 44032: 0xB176, + 53057 - 44032: 0xB177, + 53058 - 44032: 0xB178, + 53059 - 44032: 0xB179, + 53060 - 44032: 0xB17A, + 53061 - 44032: 0xB181, + 53062 - 44032: 0xB182, + 53063 - 44032: 0xB183, + 53064 - 44032: 0xB184, + 53065 - 44032: 0xB185, + 53066 - 44032: 0xB186, + 53067 - 44032: 0xB187, + 53068 - 44032: 0xB188, + 53069 - 44032: 0xB189, + 53070 - 44032: 0xB18A, + 53071 - 44032: 0xB18B, + 53072 - 44032: 0xB18C, + 53073 - 44032: 0xB18D, + 53074 - 44032: 0xB18E, + 53075 - 44032: 0xB18F, + 53076 - 44032: 0xC4DA, + 53077 - 44032: 0xC4DB, + 53078 - 44032: 0xB190, + 53079 - 44032: 0xB191, + 53080 - 44032: 0xC4DC, + 53081 - 44032: 0xB192, + 53082 - 44032: 0xB193, + 53083 - 44032: 0xB194, + 53084 - 44032: 0xC4DD, + 53085 - 44032: 0xB195, + 53086 - 44032: 0xB196, + 53087 - 44032: 0xB197, + 53088 - 44032: 0xB198, + 53089 - 44032: 0xB199, + 53090 - 44032: 0xB19A, + 53091 - 44032: 0xB19B, + 53092 - 44032: 0xC4DE, + 53093 - 44032: 0xC4DF, + 53094 - 44032: 0xB19C, + 53095 - 44032: 0xC4E0, + 53096 - 44032: 0xB19D, + 53097 - 44032: 0xC4E1, + 53098 - 44032: 0xB19E, + 53099 - 44032: 0xB19F, + 53100 - 44032: 0xB1A0, + 53101 - 44032: 0xB241, + 53102 - 44032: 0xB242, + 53103 - 44032: 0xB243, + 53104 - 44032: 0xC4E2, + 53105 - 44032: 0xC4E3, + 53106 - 44032: 0xB244, + 53107 - 44032: 0xB245, + 53108 - 44032: 0xC4E4, + 53109 - 44032: 0xB246, + 53110 - 44032: 0xB247, + 53111 - 44032: 0xB248, + 53112 - 44032: 0xC4E5, + 53113 - 44032: 0xB249, + 53114 - 44032: 0xB24A, + 53115 - 44032: 0xB24B, + 53116 - 44032: 0xB24C, + 53117 - 44032: 0xB24D, + 53118 - 44032: 0xB24E, + 53119 - 44032: 0xB24F, + 53120 - 44032: 0xC4E6, + 53121 - 44032: 0xB250, + 53122 - 44032: 0xB251, + 53123 - 44032: 0xB252, + 53124 - 44032: 0xB253, + 53125 - 44032: 0xC4E7, + 53126 - 44032: 0xB254, + 53127 - 44032: 0xB255, + 53128 - 44032: 0xB256, + 53129 - 44032: 0xB257, + 53130 - 44032: 0xB258, + 53131 - 44032: 0xB259, + 53132 - 44032: 0xC4E8, + 53133 - 44032: 0xB25A, + 53134 - 44032: 0xB261, + 53135 - 44032: 0xB262, + 53136 - 44032: 0xB263, + 53137 - 44032: 0xB264, + 53138 - 44032: 0xB265, + 53139 - 44032: 0xB266, + 53140 - 44032: 0xB267, + 53141 - 44032: 0xB268, + 53142 - 44032: 0xB269, + 53143 - 44032: 0xB26A, + 53144 - 44032: 0xB26B, + 53145 - 44032: 0xB26C, + 53146 - 44032: 0xB26D, + 53147 - 44032: 0xB26E, + 53148 - 44032: 0xB26F, + 53149 - 44032: 0xB270, + 53150 - 44032: 0xB271, + 53151 - 44032: 0xB272, + 53152 - 44032: 0xB273, + 53153 - 44032: 0xC4E9, + 53154 - 44032: 0xB274, + 53155 - 44032: 0xB275, + 53156 - 44032: 0xB276, + 53157 - 44032: 0xB277, + 53158 - 44032: 0xB278, + 53159 - 44032: 0xB279, + 53160 - 44032: 0xC4EA, + 53161 - 44032: 0xB27A, + 53162 - 44032: 0xB281, + 53163 - 44032: 0xB282, + 53164 - 44032: 0xB283, + 53165 - 44032: 0xB284, + 53166 - 44032: 0xB285, + 53167 - 44032: 0xB286, + 53168 - 44032: 0xC4EB, + 53169 - 44032: 0xB287, + 53170 - 44032: 0xB288, + 53171 - 44032: 0xB289, + 53172 - 44032: 0xB28A, + 53173 - 44032: 0xB28B, + 53174 - 44032: 0xB28C, + 53175 - 44032: 0xB28D, + 53176 - 44032: 0xB28E, + 53177 - 44032: 0xB28F, + 53178 - 44032: 0xB290, + 53179 - 44032: 0xB291, + 53180 - 44032: 0xB292, + 53181 - 44032: 0xB293, + 53182 - 44032: 0xB294, + 53183 - 44032: 0xB295, + 53184 - 44032: 0xB296, + 53185 - 44032: 0xB297, + 53186 - 44032: 0xB298, + 53187 - 44032: 0xB299, + 53188 - 44032: 0xC4EC, + 53189 - 44032: 0xB29A, + 53190 - 44032: 0xB29B, + 53191 - 44032: 0xB29C, + 53192 - 44032: 0xB29D, + 53193 - 44032: 0xB29E, + 53194 - 44032: 0xB29F, + 53195 - 44032: 0xB2A0, + 53196 - 44032: 0xB341, + 53197 - 44032: 0xB342, + 53198 - 44032: 0xB343, + 53199 - 44032: 0xB344, + 53200 - 44032: 0xB345, + 53201 - 44032: 0xB346, + 53202 - 44032: 0xB347, + 53203 - 44032: 0xB348, + 53204 - 44032: 0xB349, + 53205 - 44032: 0xB34A, + 53206 - 44032: 0xB34B, + 53207 - 44032: 0xB34C, + 53208 - 44032: 0xB34D, + 53209 - 44032: 0xB34E, + 53210 - 44032: 0xB34F, + 53211 - 44032: 0xB350, + 53212 - 44032: 0xB351, + 53213 - 44032: 0xB352, + 53214 - 44032: 0xB353, + 53215 - 44032: 0xB354, + 53216 - 44032: 0xC4ED, + 53217 - 44032: 0xC4EE, + 53218 - 44032: 0xB355, + 53219 - 44032: 0xB356, + 53220 - 44032: 0xC4EF, + 53221 - 44032: 0xB357, + 53222 - 44032: 0xB358, + 53223 - 44032: 0xB359, + 53224 - 44032: 0xC4F0, + 53225 - 44032: 0xB35A, + 53226 - 44032: 0xB361, + 53227 - 44032: 0xB362, + 53228 - 44032: 0xB363, + 53229 - 44032: 0xB364, + 53230 - 44032: 0xB365, + 53231 - 44032: 0xB366, + 53232 - 44032: 0xC4F1, + 53233 - 44032: 0xC4F2, + 53234 - 44032: 0xB367, + 53235 - 44032: 0xC4F3, + 53236 - 44032: 0xB368, + 53237 - 44032: 0xC4F4, + 53238 - 44032: 0xB369, + 53239 - 44032: 0xB36A, + 53240 - 44032: 0xB36B, + 53241 - 44032: 0xB36C, + 53242 - 44032: 0xB36D, + 53243 - 44032: 0xB36E, + 53244 - 44032: 0xC4F5, + 53245 - 44032: 0xB36F, + 53246 - 44032: 0xB370, + 53247 - 44032: 0xB371, + 53248 - 44032: 0xC4F6, + 53249 - 44032: 0xB372, + 53250 - 44032: 0xB373, + 53251 - 44032: 0xB374, + 53252 - 44032: 0xC4F7, + 53253 - 44032: 0xB375, + 53254 - 44032: 0xB376, + 53255 - 44032: 0xB377, + 53256 - 44032: 0xB378, + 53257 - 44032: 0xB379, + 53258 - 44032: 0xB37A, + 53259 - 44032: 0xB381, + 53260 - 44032: 0xB382, + 53261 - 44032: 0xB383, + 53262 - 44032: 0xB384, + 53263 - 44032: 0xB385, + 53264 - 44032: 0xB386, + 53265 - 44032: 0xC4F8, + 53266 - 44032: 0xB387, + 53267 - 44032: 0xB388, + 53268 - 44032: 0xB389, + 53269 - 44032: 0xB38A, + 53270 - 44032: 0xB38B, + 53271 - 44032: 0xB38C, + 53272 - 44032: 0xC4F9, + 53273 - 44032: 0xB38D, + 53274 - 44032: 0xB38E, + 53275 - 44032: 0xB38F, + 53276 - 44032: 0xB390, + 53277 - 44032: 0xB391, + 53278 - 44032: 0xB392, + 53279 - 44032: 0xB393, + 53280 - 44032: 0xB394, + 53281 - 44032: 0xB395, + 53282 - 44032: 0xB396, + 53283 - 44032: 0xB397, + 53284 - 44032: 0xB398, + 53285 - 44032: 0xB399, + 53286 - 44032: 0xB39A, + 53287 - 44032: 0xB39B, + 53288 - 44032: 0xB39C, + 53289 - 44032: 0xB39D, + 53290 - 44032: 0xB39E, + 53291 - 44032: 0xB39F, + 53292 - 44032: 0xB3A0, + 53293 - 44032: 0xC4FA, + 53294 - 44032: 0xB441, + 53295 - 44032: 0xB442, + 53296 - 44032: 0xB443, + 53297 - 44032: 0xB444, + 53298 - 44032: 0xB445, + 53299 - 44032: 0xB446, + 53300 - 44032: 0xC4FB, + 53301 - 44032: 0xC4FC, + 53302 - 44032: 0xB447, + 53303 - 44032: 0xB448, + 53304 - 44032: 0xC4FD, + 53305 - 44032: 0xB449, + 53306 - 44032: 0xB44A, + 53307 - 44032: 0xB44B, + 53308 - 44032: 0xC4FE, + 53309 - 44032: 0xB44C, + 53310 - 44032: 0xB44D, + 53311 - 44032: 0xB44E, + 53312 - 44032: 0xB44F, + 53313 - 44032: 0xB450, + 53314 - 44032: 0xB451, + 53315 - 44032: 0xB452, + 53316 - 44032: 0xC5A1, + 53317 - 44032: 0xC5A2, + 53318 - 44032: 0xB453, + 53319 - 44032: 0xC5A3, + 53320 - 44032: 0xB454, + 53321 - 44032: 0xC5A4, + 53322 - 44032: 0xB455, + 53323 - 44032: 0xB456, + 53324 - 44032: 0xB457, + 53325 - 44032: 0xB458, + 53326 - 44032: 0xB459, + 53327 - 44032: 0xB45A, + 53328 - 44032: 0xC5A5, + 53329 - 44032: 0xB461, + 53330 - 44032: 0xB462, + 53331 - 44032: 0xB463, + 53332 - 44032: 0xC5A6, + 53333 - 44032: 0xB464, + 53334 - 44032: 0xB465, + 53335 - 44032: 0xB466, + 53336 - 44032: 0xC5A7, + 53337 - 44032: 0xB467, + 53338 - 44032: 0xB468, + 53339 - 44032: 0xB469, + 53340 - 44032: 0xB46A, + 53341 - 44032: 0xB46B, + 53342 - 44032: 0xB46C, + 53343 - 44032: 0xB46D, + 53344 - 44032: 0xC5A8, + 53345 - 44032: 0xB46E, + 53346 - 44032: 0xB46F, + 53347 - 44032: 0xB470, + 53348 - 44032: 0xB471, + 53349 - 44032: 0xB472, + 53350 - 44032: 0xB473, + 53351 - 44032: 0xB474, + 53352 - 44032: 0xB475, + 53353 - 44032: 0xB476, + 53354 - 44032: 0xB477, + 53355 - 44032: 0xB478, + 53356 - 44032: 0xC5A9, + 53357 - 44032: 0xC5AA, + 53358 - 44032: 0xB479, + 53359 - 44032: 0xB47A, + 53360 - 44032: 0xC5AB, + 53361 - 44032: 0xB481, + 53362 - 44032: 0xB482, + 53363 - 44032: 0xB483, + 53364 - 44032: 0xC5AC, + 53365 - 44032: 0xB484, + 53366 - 44032: 0xB485, + 53367 - 44032: 0xB486, + 53368 - 44032: 0xB487, + 53369 - 44032: 0xB488, + 53370 - 44032: 0xB489, + 53371 - 44032: 0xB48A, + 53372 - 44032: 0xC5AD, + 53373 - 44032: 0xC5AE, + 53374 - 44032: 0xB48B, + 53375 - 44032: 0xB48C, + 53376 - 44032: 0xB48D, + 53377 - 44032: 0xC5AF, + 53378 - 44032: 0xB48E, + 53379 - 44032: 0xB48F, + 53380 - 44032: 0xB490, + 53381 - 44032: 0xB491, + 53382 - 44032: 0xB492, + 53383 - 44032: 0xB493, + 53384 - 44032: 0xB494, + 53385 - 44032: 0xB495, + 53386 - 44032: 0xB496, + 53387 - 44032: 0xB497, + 53388 - 44032: 0xB498, + 53389 - 44032: 0xB499, + 53390 - 44032: 0xB49A, + 53391 - 44032: 0xB49B, + 53392 - 44032: 0xB49C, + 53393 - 44032: 0xB49D, + 53394 - 44032: 0xB49E, + 53395 - 44032: 0xB49F, + 53396 - 44032: 0xB4A0, + 53397 - 44032: 0xB541, + 53398 - 44032: 0xB542, + 53399 - 44032: 0xB543, + 53400 - 44032: 0xB544, + 53401 - 44032: 0xB545, + 53402 - 44032: 0xB546, + 53403 - 44032: 0xB547, + 53404 - 44032: 0xB548, + 53405 - 44032: 0xB549, + 53406 - 44032: 0xB54A, + 53407 - 44032: 0xB54B, + 53408 - 44032: 0xB54C, + 53409 - 44032: 0xB54D, + 53410 - 44032: 0xB54E, + 53411 - 44032: 0xB54F, + 53412 - 44032: 0xC5B0, + 53413 - 44032: 0xC5B1, + 53414 - 44032: 0xB550, + 53415 - 44032: 0xB551, + 53416 - 44032: 0xC5B2, + 53417 - 44032: 0xB552, + 53418 - 44032: 0xB553, + 53419 - 44032: 0xB554, + 53420 - 44032: 0xC5B3, + 53421 - 44032: 0xB555, + 53422 - 44032: 0xB556, + 53423 - 44032: 0xB557, + 53424 - 44032: 0xB558, + 53425 - 44032: 0xB559, + 53426 - 44032: 0xB55A, + 53427 - 44032: 0xB561, + 53428 - 44032: 0xC5B4, + 53429 - 44032: 0xC5B5, + 53430 - 44032: 0xB562, + 53431 - 44032: 0xC5B6, + 53432 - 44032: 0xB563, + 53433 - 44032: 0xC5B7, + 53434 - 44032: 0xB564, + 53435 - 44032: 0xB565, + 53436 - 44032: 0xB566, + 53437 - 44032: 0xB567, + 53438 - 44032: 0xB568, + 53439 - 44032: 0xB569, + 53440 - 44032: 0xC5B8, + 53441 - 44032: 0xC5B9, + 53442 - 44032: 0xB56A, + 53443 - 44032: 0xB56B, + 53444 - 44032: 0xC5BA, + 53445 - 44032: 0xB56C, + 53446 - 44032: 0xB56D, + 53447 - 44032: 0xB56E, + 53448 - 44032: 0xC5BB, + 53449 - 44032: 0xC5BC, + 53450 - 44032: 0xB56F, + 53451 - 44032: 0xB570, + 53452 - 44032: 0xB571, + 53453 - 44032: 0xB572, + 53454 - 44032: 0xB573, + 53455 - 44032: 0xB574, + 53456 - 44032: 0xC5BD, + 53457 - 44032: 0xC5BE, + 53458 - 44032: 0xB575, + 53459 - 44032: 0xC5BF, + 53460 - 44032: 0xC5C0, + 53461 - 44032: 0xC5C1, + 53462 - 44032: 0xB576, + 53463 - 44032: 0xB577, + 53464 - 44032: 0xB578, + 53465 - 44032: 0xB579, + 53466 - 44032: 0xB57A, + 53467 - 44032: 0xB581, + 53468 - 44032: 0xC5C2, + 53469 - 44032: 0xC5C3, + 53470 - 44032: 0xB582, + 53471 - 44032: 0xB583, + 53472 - 44032: 0xC5C4, + 53473 - 44032: 0xB584, + 53474 - 44032: 0xB585, + 53475 - 44032: 0xB586, + 53476 - 44032: 0xC5C5, + 53477 - 44032: 0xB587, + 53478 - 44032: 0xB588, + 53479 - 44032: 0xB589, + 53480 - 44032: 0xB58A, + 53481 - 44032: 0xB58B, + 53482 - 44032: 0xB58C, + 53483 - 44032: 0xB58D, + 53484 - 44032: 0xC5C6, + 53485 - 44032: 0xC5C7, + 53486 - 44032: 0xB58E, + 53487 - 44032: 0xC5C8, + 53488 - 44032: 0xC5C9, + 53489 - 44032: 0xC5CA, + 53490 - 44032: 0xB58F, + 53491 - 44032: 0xB590, + 53492 - 44032: 0xB591, + 53493 - 44032: 0xB592, + 53494 - 44032: 0xB593, + 53495 - 44032: 0xB594, + 53496 - 44032: 0xC5CB, + 53497 - 44032: 0xB595, + 53498 - 44032: 0xB596, + 53499 - 44032: 0xB597, + 53500 - 44032: 0xB598, + 53501 - 44032: 0xB599, + 53502 - 44032: 0xB59A, + 53503 - 44032: 0xB59B, + 53504 - 44032: 0xB59C, + 53505 - 44032: 0xB59D, + 53506 - 44032: 0xB59E, + 53507 - 44032: 0xB59F, + 53508 - 44032: 0xB5A0, + 53509 - 44032: 0xB641, + 53510 - 44032: 0xB642, + 53511 - 44032: 0xB643, + 53512 - 44032: 0xB644, + 53513 - 44032: 0xB645, + 53514 - 44032: 0xB646, + 53515 - 44032: 0xB647, + 53516 - 44032: 0xB648, + 53517 - 44032: 0xC5CC, + 53518 - 44032: 0xB649, + 53519 - 44032: 0xB64A, + 53520 - 44032: 0xB64B, + 53521 - 44032: 0xB64C, + 53522 - 44032: 0xB64D, + 53523 - 44032: 0xB64E, + 53524 - 44032: 0xB64F, + 53525 - 44032: 0xB650, + 53526 - 44032: 0xB651, + 53527 - 44032: 0xB652, + 53528 - 44032: 0xB653, + 53529 - 44032: 0xB654, + 53530 - 44032: 0xB655, + 53531 - 44032: 0xB656, + 53532 - 44032: 0xB657, + 53533 - 44032: 0xB658, + 53534 - 44032: 0xB659, + 53535 - 44032: 0xB65A, + 53536 - 44032: 0xB661, + 53537 - 44032: 0xB662, + 53538 - 44032: 0xB663, + 53539 - 44032: 0xB664, + 53540 - 44032: 0xB665, + 53541 - 44032: 0xB666, + 53542 - 44032: 0xB667, + 53543 - 44032: 0xB668, + 53544 - 44032: 0xB669, + 53545 - 44032: 0xB66A, + 53546 - 44032: 0xB66B, + 53547 - 44032: 0xB66C, + 53548 - 44032: 0xB66D, + 53549 - 44032: 0xB66E, + 53550 - 44032: 0xB66F, + 53551 - 44032: 0xB670, + 53552 - 44032: 0xC5CD, + 53553 - 44032: 0xC5CE, + 53554 - 44032: 0xB671, + 53555 - 44032: 0xB672, + 53556 - 44032: 0xC5CF, + 53557 - 44032: 0xB673, + 53558 - 44032: 0xB674, + 53559 - 44032: 0xB675, + 53560 - 44032: 0xC5D0, + 53561 - 44032: 0xB676, + 53562 - 44032: 0xC5D1, + 53563 - 44032: 0xB677, + 53564 - 44032: 0xB678, + 53565 - 44032: 0xB679, + 53566 - 44032: 0xB67A, + 53567 - 44032: 0xB681, + 53568 - 44032: 0xC5D2, + 53569 - 44032: 0xC5D3, + 53570 - 44032: 0xB682, + 53571 - 44032: 0xC5D4, + 53572 - 44032: 0xC5D5, + 53573 - 44032: 0xC5D6, + 53574 - 44032: 0xB683, + 53575 - 44032: 0xB684, + 53576 - 44032: 0xB685, + 53577 - 44032: 0xB686, + 53578 - 44032: 0xB687, + 53579 - 44032: 0xB688, + 53580 - 44032: 0xC5D7, + 53581 - 44032: 0xC5D8, + 53582 - 44032: 0xB689, + 53583 - 44032: 0xB68A, + 53584 - 44032: 0xC5D9, + 53585 - 44032: 0xB68B, + 53586 - 44032: 0xB68C, + 53587 - 44032: 0xB68D, + 53588 - 44032: 0xC5DA, + 53589 - 44032: 0xB68E, + 53590 - 44032: 0xB68F, + 53591 - 44032: 0xB690, + 53592 - 44032: 0xB691, + 53593 - 44032: 0xB692, + 53594 - 44032: 0xB693, + 53595 - 44032: 0xB694, + 53596 - 44032: 0xC5DB, + 53597 - 44032: 0xC5DC, + 53598 - 44032: 0xB695, + 53599 - 44032: 0xC5DD, + 53600 - 44032: 0xB696, + 53601 - 44032: 0xC5DE, + 53602 - 44032: 0xB697, + 53603 - 44032: 0xB698, + 53604 - 44032: 0xB699, + 53605 - 44032: 0xB69A, + 53606 - 44032: 0xB69B, + 53607 - 44032: 0xB69C, + 53608 - 44032: 0xC5DF, + 53609 - 44032: 0xB69D, + 53610 - 44032: 0xB69E, + 53611 - 44032: 0xB69F, + 53612 - 44032: 0xC5E0, + 53613 - 44032: 0xB6A0, + 53614 - 44032: 0xB741, + 53615 - 44032: 0xB742, + 53616 - 44032: 0xB743, + 53617 - 44032: 0xB744, + 53618 - 44032: 0xB745, + 53619 - 44032: 0xB746, + 53620 - 44032: 0xB747, + 53621 - 44032: 0xB748, + 53622 - 44032: 0xB749, + 53623 - 44032: 0xB74A, + 53624 - 44032: 0xB74B, + 53625 - 44032: 0xB74C, + 53626 - 44032: 0xB74D, + 53627 - 44032: 0xB74E, + 53628 - 44032: 0xC5E1, + 53629 - 44032: 0xB74F, + 53630 - 44032: 0xB750, + 53631 - 44032: 0xB751, + 53632 - 44032: 0xB752, + 53633 - 44032: 0xB753, + 53634 - 44032: 0xB754, + 53635 - 44032: 0xB755, + 53636 - 44032: 0xC5E2, + 53637 - 44032: 0xB756, + 53638 - 44032: 0xB757, + 53639 - 44032: 0xB758, + 53640 - 44032: 0xC5E3, + 53641 - 44032: 0xB759, + 53642 - 44032: 0xB75A, + 53643 - 44032: 0xB761, + 53644 - 44032: 0xB762, + 53645 - 44032: 0xB763, + 53646 - 44032: 0xB764, + 53647 - 44032: 0xB765, + 53648 - 44032: 0xB766, + 53649 - 44032: 0xB767, + 53650 - 44032: 0xB768, + 53651 - 44032: 0xB769, + 53652 - 44032: 0xB76A, + 53653 - 44032: 0xB76B, + 53654 - 44032: 0xB76C, + 53655 - 44032: 0xB76D, + 53656 - 44032: 0xB76E, + 53657 - 44032: 0xB76F, + 53658 - 44032: 0xB770, + 53659 - 44032: 0xB771, + 53660 - 44032: 0xB772, + 53661 - 44032: 0xB773, + 53662 - 44032: 0xB774, + 53663 - 44032: 0xB775, + 53664 - 44032: 0xC5E4, + 53665 - 44032: 0xC5E5, + 53666 - 44032: 0xB776, + 53667 - 44032: 0xB777, + 53668 - 44032: 0xC5E6, + 53669 - 44032: 0xB778, + 53670 - 44032: 0xB779, + 53671 - 44032: 0xB77A, + 53672 - 44032: 0xC5E7, + 53673 - 44032: 0xB781, + 53674 - 44032: 0xB782, + 53675 - 44032: 0xB783, + 53676 - 44032: 0xB784, + 53677 - 44032: 0xB785, + 53678 - 44032: 0xB786, + 53679 - 44032: 0xB787, + 53680 - 44032: 0xC5E8, + 53681 - 44032: 0xC5E9, + 53682 - 44032: 0xB788, + 53683 - 44032: 0xC5EA, + 53684 - 44032: 0xB789, + 53685 - 44032: 0xC5EB, + 53686 - 44032: 0xB78A, + 53687 - 44032: 0xB78B, + 53688 - 44032: 0xB78C, + 53689 - 44032: 0xB78D, + 53690 - 44032: 0xC5EC, + 53691 - 44032: 0xB78E, + 53692 - 44032: 0xC5ED, + 53693 - 44032: 0xB78F, + 53694 - 44032: 0xB790, + 53695 - 44032: 0xB791, + 53696 - 44032: 0xC5EE, + 53697 - 44032: 0xB792, + 53698 - 44032: 0xB793, + 53699 - 44032: 0xB794, + 53700 - 44032: 0xB795, + 53701 - 44032: 0xB796, + 53702 - 44032: 0xB797, + 53703 - 44032: 0xB798, + 53704 - 44032: 0xB799, + 53705 - 44032: 0xB79A, + 53706 - 44032: 0xB79B, + 53707 - 44032: 0xB79C, + 53708 - 44032: 0xB79D, + 53709 - 44032: 0xB79E, + 53710 - 44032: 0xB79F, + 53711 - 44032: 0xB7A0, + 53712 - 44032: 0xB841, + 53713 - 44032: 0xB842, + 53714 - 44032: 0xB843, + 53715 - 44032: 0xB844, + 53716 - 44032: 0xB845, + 53717 - 44032: 0xB846, + 53718 - 44032: 0xB847, + 53719 - 44032: 0xB848, + 53720 - 44032: 0xC5EF, + 53721 - 44032: 0xB849, + 53722 - 44032: 0xB84A, + 53723 - 44032: 0xB84B, + 53724 - 44032: 0xB84C, + 53725 - 44032: 0xB84D, + 53726 - 44032: 0xB84E, + 53727 - 44032: 0xB84F, + 53728 - 44032: 0xB850, + 53729 - 44032: 0xB851, + 53730 - 44032: 0xB852, + 53731 - 44032: 0xB853, + 53732 - 44032: 0xB854, + 53733 - 44032: 0xB855, + 53734 - 44032: 0xB856, + 53735 - 44032: 0xB857, + 53736 - 44032: 0xB858, + 53737 - 44032: 0xB859, + 53738 - 44032: 0xB85A, + 53739 - 44032: 0xB861, + 53740 - 44032: 0xB862, + 53741 - 44032: 0xB863, + 53742 - 44032: 0xB864, + 53743 - 44032: 0xB865, + 53744 - 44032: 0xB866, + 53745 - 44032: 0xB867, + 53746 - 44032: 0xB868, + 53747 - 44032: 0xB869, + 53748 - 44032: 0xC5F0, + 53749 - 44032: 0xB86A, + 53750 - 44032: 0xB86B, + 53751 - 44032: 0xB86C, + 53752 - 44032: 0xC5F1, + 53753 - 44032: 0xB86D, + 53754 - 44032: 0xB86E, + 53755 - 44032: 0xB86F, + 53756 - 44032: 0xB870, + 53757 - 44032: 0xB871, + 53758 - 44032: 0xB872, + 53759 - 44032: 0xB873, + 53760 - 44032: 0xB874, + 53761 - 44032: 0xB875, + 53762 - 44032: 0xB876, + 53763 - 44032: 0xB877, + 53764 - 44032: 0xB878, + 53765 - 44032: 0xB879, + 53766 - 44032: 0xB87A, + 53767 - 44032: 0xC5F2, + 53768 - 44032: 0xB881, + 53769 - 44032: 0xC5F3, + 53770 - 44032: 0xB882, + 53771 - 44032: 0xB883, + 53772 - 44032: 0xB884, + 53773 - 44032: 0xB885, + 53774 - 44032: 0xB886, + 53775 - 44032: 0xB887, + 53776 - 44032: 0xC5F4, + 53777 - 44032: 0xB888, + 53778 - 44032: 0xB889, + 53779 - 44032: 0xB88A, + 53780 - 44032: 0xB88B, + 53781 - 44032: 0xB88C, + 53782 - 44032: 0xB88D, + 53783 - 44032: 0xB88E, + 53784 - 44032: 0xB88F, + 53785 - 44032: 0xB890, + 53786 - 44032: 0xB891, + 53787 - 44032: 0xB892, + 53788 - 44032: 0xB893, + 53789 - 44032: 0xB894, + 53790 - 44032: 0xB895, + 53791 - 44032: 0xB896, + 53792 - 44032: 0xB897, + 53793 - 44032: 0xB898, + 53794 - 44032: 0xB899, + 53795 - 44032: 0xB89A, + 53796 - 44032: 0xB89B, + 53797 - 44032: 0xB89C, + 53798 - 44032: 0xB89D, + 53799 - 44032: 0xB89E, + 53800 - 44032: 0xB89F, + 53801 - 44032: 0xB8A0, + 53802 - 44032: 0xB941, + 53803 - 44032: 0xB942, + 53804 - 44032: 0xC5F5, + 53805 - 44032: 0xC5F6, + 53806 - 44032: 0xB943, + 53807 - 44032: 0xB944, + 53808 - 44032: 0xC5F7, + 53809 - 44032: 0xB945, + 53810 - 44032: 0xB946, + 53811 - 44032: 0xB947, + 53812 - 44032: 0xC5F8, + 53813 - 44032: 0xB948, + 53814 - 44032: 0xB949, + 53815 - 44032: 0xB94A, + 53816 - 44032: 0xB94B, + 53817 - 44032: 0xB94C, + 53818 - 44032: 0xB94D, + 53819 - 44032: 0xB94E, + 53820 - 44032: 0xC5F9, + 53821 - 44032: 0xC5FA, + 53822 - 44032: 0xB94F, + 53823 - 44032: 0xC5FB, + 53824 - 44032: 0xB950, + 53825 - 44032: 0xC5FC, + 53826 - 44032: 0xB951, + 53827 - 44032: 0xB952, + 53828 - 44032: 0xB953, + 53829 - 44032: 0xB954, + 53830 - 44032: 0xB955, + 53831 - 44032: 0xB956, + 53832 - 44032: 0xC5FD, + 53833 - 44032: 0xB957, + 53834 - 44032: 0xB958, + 53835 - 44032: 0xB959, + 53836 - 44032: 0xB95A, + 53837 - 44032: 0xB961, + 53838 - 44032: 0xB962, + 53839 - 44032: 0xB963, + 53840 - 44032: 0xB964, + 53841 - 44032: 0xB965, + 53842 - 44032: 0xB966, + 53843 - 44032: 0xB967, + 53844 - 44032: 0xB968, + 53845 - 44032: 0xB969, + 53846 - 44032: 0xB96A, + 53847 - 44032: 0xB96B, + 53848 - 44032: 0xB96C, + 53849 - 44032: 0xB96D, + 53850 - 44032: 0xB96E, + 53851 - 44032: 0xB96F, + 53852 - 44032: 0xC5FE, + 53853 - 44032: 0xB970, + 53854 - 44032: 0xB971, + 53855 - 44032: 0xB972, + 53856 - 44032: 0xB973, + 53857 - 44032: 0xB974, + 53858 - 44032: 0xB975, + 53859 - 44032: 0xB976, + 53860 - 44032: 0xC6A1, + 53861 - 44032: 0xB977, + 53862 - 44032: 0xB978, + 53863 - 44032: 0xB979, + 53864 - 44032: 0xB97A, + 53865 - 44032: 0xB981, + 53866 - 44032: 0xB982, + 53867 - 44032: 0xB983, + 53868 - 44032: 0xB984, + 53869 - 44032: 0xB985, + 53870 - 44032: 0xB986, + 53871 - 44032: 0xB987, + 53872 - 44032: 0xB988, + 53873 - 44032: 0xB989, + 53874 - 44032: 0xB98A, + 53875 - 44032: 0xB98B, + 53876 - 44032: 0xB98C, + 53877 - 44032: 0xB98D, + 53878 - 44032: 0xB98E, + 53879 - 44032: 0xB98F, + 53880 - 44032: 0xB990, + 53881 - 44032: 0xB991, + 53882 - 44032: 0xB992, + 53883 - 44032: 0xB993, + 53884 - 44032: 0xB994, + 53885 - 44032: 0xB995, + 53886 - 44032: 0xB996, + 53887 - 44032: 0xB997, + 53888 - 44032: 0xC6A2, + 53889 - 44032: 0xC6A3, + 53890 - 44032: 0xB998, + 53891 - 44032: 0xB999, + 53892 - 44032: 0xC6A4, + 53893 - 44032: 0xB99A, + 53894 - 44032: 0xB99B, + 53895 - 44032: 0xB99C, + 53896 - 44032: 0xC6A5, + 53897 - 44032: 0xB99D, + 53898 - 44032: 0xB99E, + 53899 - 44032: 0xB99F, + 53900 - 44032: 0xB9A0, + 53901 - 44032: 0xBA41, + 53902 - 44032: 0xBA42, + 53903 - 44032: 0xBA43, + 53904 - 44032: 0xC6A6, + 53905 - 44032: 0xC6A7, + 53906 - 44032: 0xBA44, + 53907 - 44032: 0xBA45, + 53908 - 44032: 0xBA46, + 53909 - 44032: 0xC6A8, + 53910 - 44032: 0xBA47, + 53911 - 44032: 0xBA48, + 53912 - 44032: 0xBA49, + 53913 - 44032: 0xBA4A, + 53914 - 44032: 0xBA4B, + 53915 - 44032: 0xBA4C, + 53916 - 44032: 0xC6A9, + 53917 - 44032: 0xBA4D, + 53918 - 44032: 0xBA4E, + 53919 - 44032: 0xBA4F, + 53920 - 44032: 0xC6AA, + 53921 - 44032: 0xBA50, + 53922 - 44032: 0xBA51, + 53923 - 44032: 0xBA52, + 53924 - 44032: 0xC6AB, + 53925 - 44032: 0xBA53, + 53926 - 44032: 0xBA54, + 53927 - 44032: 0xBA55, + 53928 - 44032: 0xBA56, + 53929 - 44032: 0xBA57, + 53930 - 44032: 0xBA58, + 53931 - 44032: 0xBA59, + 53932 - 44032: 0xC6AC, + 53933 - 44032: 0xBA5A, + 53934 - 44032: 0xBA61, + 53935 - 44032: 0xBA62, + 53936 - 44032: 0xBA63, + 53937 - 44032: 0xC6AD, + 53938 - 44032: 0xBA64, + 53939 - 44032: 0xBA65, + 53940 - 44032: 0xBA66, + 53941 - 44032: 0xBA67, + 53942 - 44032: 0xBA68, + 53943 - 44032: 0xBA69, + 53944 - 44032: 0xC6AE, + 53945 - 44032: 0xC6AF, + 53946 - 44032: 0xBA6A, + 53947 - 44032: 0xBA6B, + 53948 - 44032: 0xC6B0, + 53949 - 44032: 0xBA6C, + 53950 - 44032: 0xBA6D, + 53951 - 44032: 0xC6B1, + 53952 - 44032: 0xC6B2, + 53953 - 44032: 0xBA6E, + 53954 - 44032: 0xC6B3, + 53955 - 44032: 0xBA6F, + 53956 - 44032: 0xBA70, + 53957 - 44032: 0xBA71, + 53958 - 44032: 0xBA72, + 53959 - 44032: 0xBA73, + 53960 - 44032: 0xC6B4, + 53961 - 44032: 0xC6B5, + 53962 - 44032: 0xBA74, + 53963 - 44032: 0xC6B6, + 53964 - 44032: 0xBA75, + 53965 - 44032: 0xBA76, + 53966 - 44032: 0xBA77, + 53967 - 44032: 0xBA78, + 53968 - 44032: 0xBA79, + 53969 - 44032: 0xBA7A, + 53970 - 44032: 0xBA81, + 53971 - 44032: 0xBA82, + 53972 - 44032: 0xC6B7, + 53973 - 44032: 0xBA83, + 53974 - 44032: 0xBA84, + 53975 - 44032: 0xBA85, + 53976 - 44032: 0xC6B8, + 53977 - 44032: 0xBA86, + 53978 - 44032: 0xBA87, + 53979 - 44032: 0xBA88, + 53980 - 44032: 0xC6B9, + 53981 - 44032: 0xBA89, + 53982 - 44032: 0xBA8A, + 53983 - 44032: 0xBA8B, + 53984 - 44032: 0xBA8C, + 53985 - 44032: 0xBA8D, + 53986 - 44032: 0xBA8E, + 53987 - 44032: 0xBA8F, + 53988 - 44032: 0xC6BA, + 53989 - 44032: 0xC6BB, + 53990 - 44032: 0xBA90, + 53991 - 44032: 0xBA91, + 53992 - 44032: 0xBA92, + 53993 - 44032: 0xBA93, + 53994 - 44032: 0xBA94, + 53995 - 44032: 0xBA95, + 53996 - 44032: 0xBA96, + 53997 - 44032: 0xBA97, + 53998 - 44032: 0xBA98, + 53999 - 44032: 0xBA99, + 54000 - 44032: 0xC6BC, + 54001 - 44032: 0xC6BD, + 54002 - 44032: 0xBA9A, + 54003 - 44032: 0xBA9B, + 54004 - 44032: 0xC6BE, + 54005 - 44032: 0xBA9C, + 54006 - 44032: 0xBA9D, + 54007 - 44032: 0xBA9E, + 54008 - 44032: 0xC6BF, + 54009 - 44032: 0xBA9F, + 54010 - 44032: 0xBAA0, + 54011 - 44032: 0xBB41, + 54012 - 44032: 0xBB42, + 54013 - 44032: 0xBB43, + 54014 - 44032: 0xBB44, + 54015 - 44032: 0xBB45, + 54016 - 44032: 0xC6C0, + 54017 - 44032: 0xC6C1, + 54018 - 44032: 0xBB46, + 54019 - 44032: 0xC6C2, + 54020 - 44032: 0xBB47, + 54021 - 44032: 0xC6C3, + 54022 - 44032: 0xBB48, + 54023 - 44032: 0xBB49, + 54024 - 44032: 0xBB4A, + 54025 - 44032: 0xBB4B, + 54026 - 44032: 0xBB4C, + 54027 - 44032: 0xBB4D, + 54028 - 44032: 0xC6C4, + 54029 - 44032: 0xC6C5, + 54030 - 44032: 0xC6C6, + 54031 - 44032: 0xBB4E, + 54032 - 44032: 0xC6C7, + 54033 - 44032: 0xBB4F, + 54034 - 44032: 0xBB50, + 54035 - 44032: 0xBB51, + 54036 - 44032: 0xC6C8, + 54037 - 44032: 0xBB52, + 54038 - 44032: 0xC6C9, + 54039 - 44032: 0xBB53, + 54040 - 44032: 0xBB54, + 54041 - 44032: 0xBB55, + 54042 - 44032: 0xBB56, + 54043 - 44032: 0xBB57, + 54044 - 44032: 0xC6CA, + 54045 - 44032: 0xC6CB, + 54046 - 44032: 0xBB58, + 54047 - 44032: 0xC6CC, + 54048 - 44032: 0xC6CD, + 54049 - 44032: 0xC6CE, + 54050 - 44032: 0xBB59, + 54051 - 44032: 0xBB5A, + 54052 - 44032: 0xBB61, + 54053 - 44032: 0xC6CF, + 54054 - 44032: 0xBB62, + 54055 - 44032: 0xBB63, + 54056 - 44032: 0xC6D0, + 54057 - 44032: 0xC6D1, + 54058 - 44032: 0xBB64, + 54059 - 44032: 0xBB65, + 54060 - 44032: 0xC6D2, + 54061 - 44032: 0xBB66, + 54062 - 44032: 0xBB67, + 54063 - 44032: 0xBB68, + 54064 - 44032: 0xC6D3, + 54065 - 44032: 0xBB69, + 54066 - 44032: 0xBB6A, + 54067 - 44032: 0xBB6B, + 54068 - 44032: 0xBB6C, + 54069 - 44032: 0xBB6D, + 54070 - 44032: 0xBB6E, + 54071 - 44032: 0xBB6F, + 54072 - 44032: 0xC6D4, + 54073 - 44032: 0xC6D5, + 54074 - 44032: 0xBB70, + 54075 - 44032: 0xC6D6, + 54076 - 44032: 0xC6D7, + 54077 - 44032: 0xC6D8, + 54078 - 44032: 0xBB71, + 54079 - 44032: 0xBB72, + 54080 - 44032: 0xBB73, + 54081 - 44032: 0xBB74, + 54082 - 44032: 0xBB75, + 54083 - 44032: 0xBB76, + 54084 - 44032: 0xC6D9, + 54085 - 44032: 0xC6DA, + 54086 - 44032: 0xBB77, + 54087 - 44032: 0xBB78, + 54088 - 44032: 0xBB79, + 54089 - 44032: 0xBB7A, + 54090 - 44032: 0xBB81, + 54091 - 44032: 0xBB82, + 54092 - 44032: 0xBB83, + 54093 - 44032: 0xBB84, + 54094 - 44032: 0xBB85, + 54095 - 44032: 0xBB86, + 54096 - 44032: 0xBB87, + 54097 - 44032: 0xBB88, + 54098 - 44032: 0xBB89, + 54099 - 44032: 0xBB8A, + 54100 - 44032: 0xBB8B, + 54101 - 44032: 0xBB8C, + 54102 - 44032: 0xBB8D, + 54103 - 44032: 0xBB8E, + 54104 - 44032: 0xBB8F, + 54105 - 44032: 0xBB90, + 54106 - 44032: 0xBB91, + 54107 - 44032: 0xBB92, + 54108 - 44032: 0xBB93, + 54109 - 44032: 0xBB94, + 54110 - 44032: 0xBB95, + 54111 - 44032: 0xBB96, + 54112 - 44032: 0xBB97, + 54113 - 44032: 0xBB98, + 54114 - 44032: 0xBB99, + 54115 - 44032: 0xBB9A, + 54116 - 44032: 0xBB9B, + 54117 - 44032: 0xBB9C, + 54118 - 44032: 0xBB9D, + 54119 - 44032: 0xBB9E, + 54120 - 44032: 0xBB9F, + 54121 - 44032: 0xBBA0, + 54122 - 44032: 0xBC41, + 54123 - 44032: 0xBC42, + 54124 - 44032: 0xBC43, + 54125 - 44032: 0xBC44, + 54126 - 44032: 0xBC45, + 54127 - 44032: 0xBC46, + 54128 - 44032: 0xBC47, + 54129 - 44032: 0xBC48, + 54130 - 44032: 0xBC49, + 54131 - 44032: 0xBC4A, + 54132 - 44032: 0xBC4B, + 54133 - 44032: 0xBC4C, + 54134 - 44032: 0xBC4D, + 54135 - 44032: 0xBC4E, + 54136 - 44032: 0xBC4F, + 54137 - 44032: 0xBC50, + 54138 - 44032: 0xBC51, + 54139 - 44032: 0xBC52, + 54140 - 44032: 0xC6DB, + 54141 - 44032: 0xC6DC, + 54142 - 44032: 0xBC53, + 54143 - 44032: 0xBC54, + 54144 - 44032: 0xC6DD, + 54145 - 44032: 0xBC55, + 54146 - 44032: 0xBC56, + 54147 - 44032: 0xBC57, + 54148 - 44032: 0xC6DE, + 54149 - 44032: 0xBC58, + 54150 - 44032: 0xBC59, + 54151 - 44032: 0xBC5A, + 54152 - 44032: 0xBC61, + 54153 - 44032: 0xBC62, + 54154 - 44032: 0xBC63, + 54155 - 44032: 0xBC64, + 54156 - 44032: 0xC6DF, + 54157 - 44032: 0xC6E0, + 54158 - 44032: 0xBC65, + 54159 - 44032: 0xC6E1, + 54160 - 44032: 0xC6E2, + 54161 - 44032: 0xC6E3, + 54162 - 44032: 0xBC66, + 54163 - 44032: 0xBC67, + 54164 - 44032: 0xBC68, + 54165 - 44032: 0xBC69, + 54166 - 44032: 0xBC6A, + 54167 - 44032: 0xBC6B, + 54168 - 44032: 0xC6E4, + 54169 - 44032: 0xC6E5, + 54170 - 44032: 0xBC6C, + 54171 - 44032: 0xBC6D, + 54172 - 44032: 0xC6E6, + 54173 - 44032: 0xBC6E, + 54174 - 44032: 0xBC6F, + 54175 - 44032: 0xBC70, + 54176 - 44032: 0xC6E7, + 54177 - 44032: 0xBC71, + 54178 - 44032: 0xBC72, + 54179 - 44032: 0xBC73, + 54180 - 44032: 0xBC74, + 54181 - 44032: 0xBC75, + 54182 - 44032: 0xBC76, + 54183 - 44032: 0xBC77, + 54184 - 44032: 0xC6E8, + 54185 - 44032: 0xC6E9, + 54186 - 44032: 0xBC78, + 54187 - 44032: 0xC6EA, + 54188 - 44032: 0xBC79, + 54189 - 44032: 0xC6EB, + 54190 - 44032: 0xBC7A, + 54191 - 44032: 0xBC81, + 54192 - 44032: 0xBC82, + 54193 - 44032: 0xBC83, + 54194 - 44032: 0xBC84, + 54195 - 44032: 0xBC85, + 54196 - 44032: 0xC6EC, + 54197 - 44032: 0xBC86, + 54198 - 44032: 0xBC87, + 54199 - 44032: 0xBC88, + 54200 - 44032: 0xC6ED, + 54201 - 44032: 0xBC89, + 54202 - 44032: 0xBC8A, + 54203 - 44032: 0xBC8B, + 54204 - 44032: 0xC6EE, + 54205 - 44032: 0xBC8C, + 54206 - 44032: 0xBC8D, + 54207 - 44032: 0xBC8E, + 54208 - 44032: 0xBC8F, + 54209 - 44032: 0xBC90, + 54210 - 44032: 0xBC91, + 54211 - 44032: 0xBC92, + 54212 - 44032: 0xC6EF, + 54213 - 44032: 0xC6F0, + 54214 - 44032: 0xBC93, + 54215 - 44032: 0xBC94, + 54216 - 44032: 0xC6F1, + 54217 - 44032: 0xC6F2, + 54218 - 44032: 0xBC95, + 54219 - 44032: 0xBC96, + 54220 - 44032: 0xBC97, + 54221 - 44032: 0xBC98, + 54222 - 44032: 0xBC99, + 54223 - 44032: 0xBC9A, + 54224 - 44032: 0xC6F3, + 54225 - 44032: 0xBC9B, + 54226 - 44032: 0xBC9C, + 54227 - 44032: 0xBC9D, + 54228 - 44032: 0xBC9E, + 54229 - 44032: 0xBC9F, + 54230 - 44032: 0xBCA0, + 54231 - 44032: 0xBD41, + 54232 - 44032: 0xC6F4, + 54233 - 44032: 0xBD42, + 54234 - 44032: 0xBD43, + 54235 - 44032: 0xBD44, + 54236 - 44032: 0xBD45, + 54237 - 44032: 0xBD46, + 54238 - 44032: 0xBD47, + 54239 - 44032: 0xBD48, + 54240 - 44032: 0xBD49, + 54241 - 44032: 0xC6F5, + 54242 - 44032: 0xBD4A, + 54243 - 44032: 0xC6F6, + 54244 - 44032: 0xBD4B, + 54245 - 44032: 0xBD4C, + 54246 - 44032: 0xBD4D, + 54247 - 44032: 0xBD4E, + 54248 - 44032: 0xBD4F, + 54249 - 44032: 0xBD50, + 54250 - 44032: 0xBD51, + 54251 - 44032: 0xBD52, + 54252 - 44032: 0xC6F7, + 54253 - 44032: 0xC6F8, + 54254 - 44032: 0xBD53, + 54255 - 44032: 0xBD54, + 54256 - 44032: 0xC6F9, + 54257 - 44032: 0xBD55, + 54258 - 44032: 0xBD56, + 54259 - 44032: 0xBD57, + 54260 - 44032: 0xC6FA, + 54261 - 44032: 0xBD58, + 54262 - 44032: 0xBD59, + 54263 - 44032: 0xBD5A, + 54264 - 44032: 0xBD61, + 54265 - 44032: 0xBD62, + 54266 - 44032: 0xBD63, + 54267 - 44032: 0xBD64, + 54268 - 44032: 0xC6FB, + 54269 - 44032: 0xC6FC, + 54270 - 44032: 0xBD65, + 54271 - 44032: 0xC6FD, + 54272 - 44032: 0xBD66, + 54273 - 44032: 0xC6FE, + 54274 - 44032: 0xBD67, + 54275 - 44032: 0xBD68, + 54276 - 44032: 0xBD69, + 54277 - 44032: 0xBD6A, + 54278 - 44032: 0xBD6B, + 54279 - 44032: 0xBD6C, + 54280 - 44032: 0xC7A1, + 54281 - 44032: 0xBD6D, + 54282 - 44032: 0xBD6E, + 54283 - 44032: 0xBD6F, + 54284 - 44032: 0xBD70, + 54285 - 44032: 0xBD71, + 54286 - 44032: 0xBD72, + 54287 - 44032: 0xBD73, + 54288 - 44032: 0xBD74, + 54289 - 44032: 0xBD75, + 54290 - 44032: 0xBD76, + 54291 - 44032: 0xBD77, + 54292 - 44032: 0xBD78, + 54293 - 44032: 0xBD79, + 54294 - 44032: 0xBD7A, + 54295 - 44032: 0xBD81, + 54296 - 44032: 0xBD82, + 54297 - 44032: 0xBD83, + 54298 - 44032: 0xBD84, + 54299 - 44032: 0xBD85, + 54300 - 44032: 0xBD86, + 54301 - 44032: 0xC7A2, + 54302 - 44032: 0xBD87, + 54303 - 44032: 0xBD88, + 54304 - 44032: 0xBD89, + 54305 - 44032: 0xBD8A, + 54306 - 44032: 0xBD8B, + 54307 - 44032: 0xBD8C, + 54308 - 44032: 0xBD8D, + 54309 - 44032: 0xBD8E, + 54310 - 44032: 0xBD8F, + 54311 - 44032: 0xBD90, + 54312 - 44032: 0xBD91, + 54313 - 44032: 0xBD92, + 54314 - 44032: 0xBD93, + 54315 - 44032: 0xBD94, + 54316 - 44032: 0xBD95, + 54317 - 44032: 0xBD96, + 54318 - 44032: 0xBD97, + 54319 - 44032: 0xBD98, + 54320 - 44032: 0xBD99, + 54321 - 44032: 0xBD9A, + 54322 - 44032: 0xBD9B, + 54323 - 44032: 0xBD9C, + 54324 - 44032: 0xBD9D, + 54325 - 44032: 0xBD9E, + 54326 - 44032: 0xBD9F, + 54327 - 44032: 0xBDA0, + 54328 - 44032: 0xBE41, + 54329 - 44032: 0xBE42, + 54330 - 44032: 0xBE43, + 54331 - 44032: 0xBE44, + 54332 - 44032: 0xBE45, + 54333 - 44032: 0xBE46, + 54334 - 44032: 0xBE47, + 54335 - 44032: 0xBE48, + 54336 - 44032: 0xC7A3, + 54337 - 44032: 0xBE49, + 54338 - 44032: 0xBE4A, + 54339 - 44032: 0xBE4B, + 54340 - 44032: 0xC7A4, + 54341 - 44032: 0xBE4C, + 54342 - 44032: 0xBE4D, + 54343 - 44032: 0xBE4E, + 54344 - 44032: 0xBE4F, + 54345 - 44032: 0xBE50, + 54346 - 44032: 0xBE51, + 54347 - 44032: 0xBE52, + 54348 - 44032: 0xBE53, + 54349 - 44032: 0xBE54, + 54350 - 44032: 0xBE55, + 54351 - 44032: 0xBE56, + 54352 - 44032: 0xBE57, + 54353 - 44032: 0xBE58, + 54354 - 44032: 0xBE59, + 54355 - 44032: 0xBE5A, + 54356 - 44032: 0xBE61, + 54357 - 44032: 0xBE62, + 54358 - 44032: 0xBE63, + 54359 - 44032: 0xBE64, + 54360 - 44032: 0xBE65, + 54361 - 44032: 0xBE66, + 54362 - 44032: 0xBE67, + 54363 - 44032: 0xBE68, + 54364 - 44032: 0xC7A5, + 54365 - 44032: 0xBE69, + 54366 - 44032: 0xBE6A, + 54367 - 44032: 0xBE6B, + 54368 - 44032: 0xC7A6, + 54369 - 44032: 0xBE6C, + 54370 - 44032: 0xBE6D, + 54371 - 44032: 0xBE6E, + 54372 - 44032: 0xC7A7, + 54373 - 44032: 0xBE6F, + 54374 - 44032: 0xBE70, + 54375 - 44032: 0xBE71, + 54376 - 44032: 0xBE72, + 54377 - 44032: 0xBE73, + 54378 - 44032: 0xBE74, + 54379 - 44032: 0xBE75, + 54380 - 44032: 0xBE76, + 54381 - 44032: 0xC7A8, + 54382 - 44032: 0xBE77, + 54383 - 44032: 0xC7A9, + 54384 - 44032: 0xBE78, + 54385 - 44032: 0xBE79, + 54386 - 44032: 0xBE7A, + 54387 - 44032: 0xBE81, + 54388 - 44032: 0xBE82, + 54389 - 44032: 0xBE83, + 54390 - 44032: 0xBE84, + 54391 - 44032: 0xBE85, + 54392 - 44032: 0xC7AA, + 54393 - 44032: 0xC7AB, + 54394 - 44032: 0xBE86, + 54395 - 44032: 0xBE87, + 54396 - 44032: 0xC7AC, + 54397 - 44032: 0xBE88, + 54398 - 44032: 0xBE89, + 54399 - 44032: 0xC7AD, + 54400 - 44032: 0xC7AE, + 54401 - 44032: 0xBE8A, + 54402 - 44032: 0xC7AF, + 54403 - 44032: 0xBE8B, + 54404 - 44032: 0xBE8C, + 54405 - 44032: 0xBE8D, + 54406 - 44032: 0xBE8E, + 54407 - 44032: 0xBE8F, + 54408 - 44032: 0xC7B0, + 54409 - 44032: 0xC7B1, + 54410 - 44032: 0xBE90, + 54411 - 44032: 0xC7B2, + 54412 - 44032: 0xBE91, + 54413 - 44032: 0xC7B3, + 54414 - 44032: 0xBE92, + 54415 - 44032: 0xBE93, + 54416 - 44032: 0xBE94, + 54417 - 44032: 0xBE95, + 54418 - 44032: 0xBE96, + 54419 - 44032: 0xBE97, + 54420 - 44032: 0xC7B4, + 54421 - 44032: 0xBE98, + 54422 - 44032: 0xBE99, + 54423 - 44032: 0xBE9A, + 54424 - 44032: 0xBE9B, + 54425 - 44032: 0xBE9C, + 54426 - 44032: 0xBE9D, + 54427 - 44032: 0xBE9E, + 54428 - 44032: 0xBE9F, + 54429 - 44032: 0xBEA0, + 54430 - 44032: 0xBF41, + 54431 - 44032: 0xBF42, + 54432 - 44032: 0xBF43, + 54433 - 44032: 0xBF44, + 54434 - 44032: 0xBF45, + 54435 - 44032: 0xBF46, + 54436 - 44032: 0xBF47, + 54437 - 44032: 0xBF48, + 54438 - 44032: 0xBF49, + 54439 - 44032: 0xBF4A, + 54440 - 44032: 0xBF4B, + 54441 - 44032: 0xC7B5, + 54442 - 44032: 0xBF4C, + 54443 - 44032: 0xBF4D, + 54444 - 44032: 0xBF4E, + 54445 - 44032: 0xBF4F, + 54446 - 44032: 0xBF50, + 54447 - 44032: 0xBF51, + 54448 - 44032: 0xBF52, + 54449 - 44032: 0xBF53, + 54450 - 44032: 0xBF54, + 54451 - 44032: 0xBF55, + 54452 - 44032: 0xBF56, + 54453 - 44032: 0xBF57, + 54454 - 44032: 0xBF58, + 54455 - 44032: 0xBF59, + 54456 - 44032: 0xBF5A, + 54457 - 44032: 0xBF61, + 54458 - 44032: 0xBF62, + 54459 - 44032: 0xBF63, + 54460 - 44032: 0xBF64, + 54461 - 44032: 0xBF65, + 54462 - 44032: 0xBF66, + 54463 - 44032: 0xBF67, + 54464 - 44032: 0xBF68, + 54465 - 44032: 0xBF69, + 54466 - 44032: 0xBF6A, + 54467 - 44032: 0xBF6B, + 54468 - 44032: 0xBF6C, + 54469 - 44032: 0xBF6D, + 54470 - 44032: 0xBF6E, + 54471 - 44032: 0xBF6F, + 54472 - 44032: 0xBF70, + 54473 - 44032: 0xBF71, + 54474 - 44032: 0xBF72, + 54475 - 44032: 0xBF73, + 54476 - 44032: 0xC7B6, + 54477 - 44032: 0xBF74, + 54478 - 44032: 0xBF75, + 54479 - 44032: 0xBF76, + 54480 - 44032: 0xC7B7, + 54481 - 44032: 0xBF77, + 54482 - 44032: 0xBF78, + 54483 - 44032: 0xBF79, + 54484 - 44032: 0xC7B8, + 54485 - 44032: 0xBF7A, + 54486 - 44032: 0xBF81, + 54487 - 44032: 0xBF82, + 54488 - 44032: 0xBF83, + 54489 - 44032: 0xBF84, + 54490 - 44032: 0xBF85, + 54491 - 44032: 0xBF86, + 54492 - 44032: 0xC7B9, + 54493 - 44032: 0xBF87, + 54494 - 44032: 0xBF88, + 54495 - 44032: 0xC7BA, + 54496 - 44032: 0xBF89, + 54497 - 44032: 0xBF8A, + 54498 - 44032: 0xBF8B, + 54499 - 44032: 0xBF8C, + 54500 - 44032: 0xBF8D, + 54501 - 44032: 0xBF8E, + 54502 - 44032: 0xBF8F, + 54503 - 44032: 0xBF90, + 54504 - 44032: 0xC7BB, + 54505 - 44032: 0xBF91, + 54506 - 44032: 0xBF92, + 54507 - 44032: 0xBF93, + 54508 - 44032: 0xC7BC, + 54509 - 44032: 0xBF94, + 54510 - 44032: 0xBF95, + 54511 - 44032: 0xBF96, + 54512 - 44032: 0xC7BD, + 54513 - 44032: 0xBF97, + 54514 - 44032: 0xBF98, + 54515 - 44032: 0xBF99, + 54516 - 44032: 0xBF9A, + 54517 - 44032: 0xBF9B, + 54518 - 44032: 0xBF9C, + 54519 - 44032: 0xBF9D, + 54520 - 44032: 0xC7BE, + 54521 - 44032: 0xBF9E, + 54522 - 44032: 0xBF9F, + 54523 - 44032: 0xC7BF, + 54524 - 44032: 0xBFA0, + 54525 - 44032: 0xC7C0, + 54526 - 44032: 0xC041, + 54527 - 44032: 0xC042, + 54528 - 44032: 0xC043, + 54529 - 44032: 0xC044, + 54530 - 44032: 0xC045, + 54531 - 44032: 0xC046, + 54532 - 44032: 0xC7C1, + 54533 - 44032: 0xC047, + 54534 - 44032: 0xC048, + 54535 - 44032: 0xC049, + 54536 - 44032: 0xC7C2, + 54537 - 44032: 0xC04A, + 54538 - 44032: 0xC04B, + 54539 - 44032: 0xC04C, + 54540 - 44032: 0xC7C3, + 54541 - 44032: 0xC04D, + 54542 - 44032: 0xC04E, + 54543 - 44032: 0xC04F, + 54544 - 44032: 0xC050, + 54545 - 44032: 0xC051, + 54546 - 44032: 0xC052, + 54547 - 44032: 0xC053, + 54548 - 44032: 0xC7C4, + 54549 - 44032: 0xC7C5, + 54550 - 44032: 0xC054, + 54551 - 44032: 0xC7C6, + 54552 - 44032: 0xC055, + 54553 - 44032: 0xC056, + 54554 - 44032: 0xC057, + 54555 - 44032: 0xC058, + 54556 - 44032: 0xC059, + 54557 - 44032: 0xC05A, + 54558 - 44032: 0xC061, + 54559 - 44032: 0xC062, + 54560 - 44032: 0xC063, + 54561 - 44032: 0xC064, + 54562 - 44032: 0xC065, + 54563 - 44032: 0xC066, + 54564 - 44032: 0xC067, + 54565 - 44032: 0xC068, + 54566 - 44032: 0xC069, + 54567 - 44032: 0xC06A, + 54568 - 44032: 0xC06B, + 54569 - 44032: 0xC06C, + 54570 - 44032: 0xC06D, + 54571 - 44032: 0xC06E, + 54572 - 44032: 0xC06F, + 54573 - 44032: 0xC070, + 54574 - 44032: 0xC071, + 54575 - 44032: 0xC072, + 54576 - 44032: 0xC073, + 54577 - 44032: 0xC074, + 54578 - 44032: 0xC075, + 54579 - 44032: 0xC076, + 54580 - 44032: 0xC077, + 54581 - 44032: 0xC078, + 54582 - 44032: 0xC079, + 54583 - 44032: 0xC07A, + 54584 - 44032: 0xC081, + 54585 - 44032: 0xC082, + 54586 - 44032: 0xC083, + 54587 - 44032: 0xC084, + 54588 - 44032: 0xC7C7, + 54589 - 44032: 0xC7C8, + 54590 - 44032: 0xC085, + 54591 - 44032: 0xC086, + 54592 - 44032: 0xC7C9, + 54593 - 44032: 0xC087, + 54594 - 44032: 0xC088, + 54595 - 44032: 0xC089, + 54596 - 44032: 0xC7CA, + 54597 - 44032: 0xC08A, + 54598 - 44032: 0xC08B, + 54599 - 44032: 0xC08C, + 54600 - 44032: 0xC08D, + 54601 - 44032: 0xC08E, + 54602 - 44032: 0xC08F, + 54603 - 44032: 0xC090, + 54604 - 44032: 0xC7CB, + 54605 - 44032: 0xC7CC, + 54606 - 44032: 0xC091, + 54607 - 44032: 0xC7CD, + 54608 - 44032: 0xC092, + 54609 - 44032: 0xC7CE, + 54610 - 44032: 0xC093, + 54611 - 44032: 0xC094, + 54612 - 44032: 0xC095, + 54613 - 44032: 0xC096, + 54614 - 44032: 0xC097, + 54615 - 44032: 0xC098, + 54616 - 44032: 0xC7CF, + 54617 - 44032: 0xC7D0, + 54618 - 44032: 0xC099, + 54619 - 44032: 0xC09A, + 54620 - 44032: 0xC7D1, + 54621 - 44032: 0xC09B, + 54622 - 44032: 0xC09C, + 54623 - 44032: 0xC09D, + 54624 - 44032: 0xC7D2, + 54625 - 44032: 0xC09E, + 54626 - 44032: 0xC09F, + 54627 - 44032: 0xC0A0, + 54628 - 44032: 0xC141, + 54629 - 44032: 0xC7D3, + 54630 - 44032: 0xC142, + 54631 - 44032: 0xC143, + 54632 - 44032: 0xC7D4, + 54633 - 44032: 0xC7D5, + 54634 - 44032: 0xC144, + 54635 - 44032: 0xC7D6, + 54636 - 44032: 0xC145, + 54637 - 44032: 0xC7D7, + 54638 - 44032: 0xC146, + 54639 - 44032: 0xC147, + 54640 - 44032: 0xC148, + 54641 - 44032: 0xC149, + 54642 - 44032: 0xC14A, + 54643 - 44032: 0xC14B, + 54644 - 44032: 0xC7D8, + 54645 - 44032: 0xC7D9, + 54646 - 44032: 0xC14C, + 54647 - 44032: 0xC14D, + 54648 - 44032: 0xC7DA, + 54649 - 44032: 0xC14E, + 54650 - 44032: 0xC14F, + 54651 - 44032: 0xC150, + 54652 - 44032: 0xC7DB, + 54653 - 44032: 0xC151, + 54654 - 44032: 0xC152, + 54655 - 44032: 0xC153, + 54656 - 44032: 0xC154, + 54657 - 44032: 0xC155, + 54658 - 44032: 0xC156, + 54659 - 44032: 0xC157, + 54660 - 44032: 0xC7DC, + 54661 - 44032: 0xC7DD, + 54662 - 44032: 0xC158, + 54663 - 44032: 0xC7DE, + 54664 - 44032: 0xC7DF, + 54665 - 44032: 0xC7E0, + 54666 - 44032: 0xC159, + 54667 - 44032: 0xC15A, + 54668 - 44032: 0xC161, + 54669 - 44032: 0xC162, + 54670 - 44032: 0xC163, + 54671 - 44032: 0xC164, + 54672 - 44032: 0xC7E1, + 54673 - 44032: 0xC165, + 54674 - 44032: 0xC166, + 54675 - 44032: 0xC167, + 54676 - 44032: 0xC168, + 54677 - 44032: 0xC169, + 54678 - 44032: 0xC16A, + 54679 - 44032: 0xC16B, + 54680 - 44032: 0xC16C, + 54681 - 44032: 0xC16D, + 54682 - 44032: 0xC16E, + 54683 - 44032: 0xC16F, + 54684 - 44032: 0xC170, + 54685 - 44032: 0xC171, + 54686 - 44032: 0xC172, + 54687 - 44032: 0xC173, + 54688 - 44032: 0xC174, + 54689 - 44032: 0xC175, + 54690 - 44032: 0xC176, + 54691 - 44032: 0xC177, + 54692 - 44032: 0xC178, + 54693 - 44032: 0xC7E2, + 54694 - 44032: 0xC179, + 54695 - 44032: 0xC17A, + 54696 - 44032: 0xC181, + 54697 - 44032: 0xC182, + 54698 - 44032: 0xC183, + 54699 - 44032: 0xC184, + 54700 - 44032: 0xC185, + 54701 - 44032: 0xC186, + 54702 - 44032: 0xC187, + 54703 - 44032: 0xC188, + 54704 - 44032: 0xC189, + 54705 - 44032: 0xC18A, + 54706 - 44032: 0xC18B, + 54707 - 44032: 0xC18C, + 54708 - 44032: 0xC18D, + 54709 - 44032: 0xC18E, + 54710 - 44032: 0xC18F, + 54711 - 44032: 0xC190, + 54712 - 44032: 0xC191, + 54713 - 44032: 0xC192, + 54714 - 44032: 0xC193, + 54715 - 44032: 0xC194, + 54716 - 44032: 0xC195, + 54717 - 44032: 0xC196, + 54718 - 44032: 0xC197, + 54719 - 44032: 0xC198, + 54720 - 44032: 0xC199, + 54721 - 44032: 0xC19A, + 54722 - 44032: 0xC19B, + 54723 - 44032: 0xC19C, + 54724 - 44032: 0xC19D, + 54725 - 44032: 0xC19E, + 54726 - 44032: 0xC19F, + 54727 - 44032: 0xC1A0, + 54728 - 44032: 0xC7E3, + 54729 - 44032: 0xC7E4, + 54730 - 44032: 0xC241, + 54731 - 44032: 0xC242, + 54732 - 44032: 0xC7E5, + 54733 - 44032: 0xC243, + 54734 - 44032: 0xC244, + 54735 - 44032: 0xC245, + 54736 - 44032: 0xC7E6, + 54737 - 44032: 0xC246, + 54738 - 44032: 0xC7E7, + 54739 - 44032: 0xC247, + 54740 - 44032: 0xC248, + 54741 - 44032: 0xC249, + 54742 - 44032: 0xC24A, + 54743 - 44032: 0xC24B, + 54744 - 44032: 0xC7E8, + 54745 - 44032: 0xC7E9, + 54746 - 44032: 0xC24C, + 54747 - 44032: 0xC7EA, + 54748 - 44032: 0xC24D, + 54749 - 44032: 0xC7EB, + 54750 - 44032: 0xC24E, + 54751 - 44032: 0xC24F, + 54752 - 44032: 0xC250, + 54753 - 44032: 0xC251, + 54754 - 44032: 0xC252, + 54755 - 44032: 0xC253, + 54756 - 44032: 0xC7EC, + 54757 - 44032: 0xC7ED, + 54758 - 44032: 0xC254, + 54759 - 44032: 0xC255, + 54760 - 44032: 0xC7EE, + 54761 - 44032: 0xC256, + 54762 - 44032: 0xC257, + 54763 - 44032: 0xC258, + 54764 - 44032: 0xC7EF, + 54765 - 44032: 0xC259, + 54766 - 44032: 0xC25A, + 54767 - 44032: 0xC261, + 54768 - 44032: 0xC262, + 54769 - 44032: 0xC263, + 54770 - 44032: 0xC264, + 54771 - 44032: 0xC265, + 54772 - 44032: 0xC7F0, + 54773 - 44032: 0xC7F1, + 54774 - 44032: 0xC266, + 54775 - 44032: 0xC7F2, + 54776 - 44032: 0xC267, + 54777 - 44032: 0xC7F3, + 54778 - 44032: 0xC268, + 54779 - 44032: 0xC269, + 54780 - 44032: 0xC26A, + 54781 - 44032: 0xC26B, + 54782 - 44032: 0xC26C, + 54783 - 44032: 0xC26D, + 54784 - 44032: 0xC7F4, + 54785 - 44032: 0xC7F5, + 54786 - 44032: 0xC26E, + 54787 - 44032: 0xC26F, + 54788 - 44032: 0xC7F6, + 54789 - 44032: 0xC270, + 54790 - 44032: 0xC271, + 54791 - 44032: 0xC272, + 54792 - 44032: 0xC7F7, + 54793 - 44032: 0xC273, + 54794 - 44032: 0xC274, + 54795 - 44032: 0xC275, + 54796 - 44032: 0xC276, + 54797 - 44032: 0xC277, + 54798 - 44032: 0xC278, + 54799 - 44032: 0xC279, + 54800 - 44032: 0xC7F8, + 54801 - 44032: 0xC7F9, + 54802 - 44032: 0xC27A, + 54803 - 44032: 0xC7FA, + 54804 - 44032: 0xC7FB, + 54805 - 44032: 0xC7FC, + 54806 - 44032: 0xC281, + 54807 - 44032: 0xC282, + 54808 - 44032: 0xC283, + 54809 - 44032: 0xC284, + 54810 - 44032: 0xC285, + 54811 - 44032: 0xC286, + 54812 - 44032: 0xC7FD, + 54813 - 44032: 0xC287, + 54814 - 44032: 0xC288, + 54815 - 44032: 0xC289, + 54816 - 44032: 0xC7FE, + 54817 - 44032: 0xC28A, + 54818 - 44032: 0xC28B, + 54819 - 44032: 0xC28C, + 54820 - 44032: 0xC8A1, + 54821 - 44032: 0xC28D, + 54822 - 44032: 0xC28E, + 54823 - 44032: 0xC28F, + 54824 - 44032: 0xC290, + 54825 - 44032: 0xC291, + 54826 - 44032: 0xC292, + 54827 - 44032: 0xC293, + 54828 - 44032: 0xC294, + 54829 - 44032: 0xC8A2, + 54830 - 44032: 0xC295, + 54831 - 44032: 0xC296, + 54832 - 44032: 0xC297, + 54833 - 44032: 0xC298, + 54834 - 44032: 0xC299, + 54835 - 44032: 0xC29A, + 54836 - 44032: 0xC29B, + 54837 - 44032: 0xC29C, + 54838 - 44032: 0xC29D, + 54839 - 44032: 0xC29E, + 54840 - 44032: 0xC8A3, + 54841 - 44032: 0xC8A4, + 54842 - 44032: 0xC29F, + 54843 - 44032: 0xC2A0, + 54844 - 44032: 0xC8A5, + 54845 - 44032: 0xC341, + 54846 - 44032: 0xC342, + 54847 - 44032: 0xC343, + 54848 - 44032: 0xC8A6, + 54849 - 44032: 0xC344, + 54850 - 44032: 0xC345, + 54851 - 44032: 0xC346, + 54852 - 44032: 0xC347, + 54853 - 44032: 0xC8A7, + 54854 - 44032: 0xC348, + 54855 - 44032: 0xC349, + 54856 - 44032: 0xC8A8, + 54857 - 44032: 0xC8A9, + 54858 - 44032: 0xC34A, + 54859 - 44032: 0xC8AA, + 54860 - 44032: 0xC34B, + 54861 - 44032: 0xC8AB, + 54862 - 44032: 0xC34C, + 54863 - 44032: 0xC34D, + 54864 - 44032: 0xC34E, + 54865 - 44032: 0xC8AC, + 54866 - 44032: 0xC34F, + 54867 - 44032: 0xC350, + 54868 - 44032: 0xC8AD, + 54869 - 44032: 0xC8AE, + 54870 - 44032: 0xC351, + 54871 - 44032: 0xC352, + 54872 - 44032: 0xC8AF, + 54873 - 44032: 0xC353, + 54874 - 44032: 0xC354, + 54875 - 44032: 0xC355, + 54876 - 44032: 0xC8B0, + 54877 - 44032: 0xC356, + 54878 - 44032: 0xC357, + 54879 - 44032: 0xC358, + 54880 - 44032: 0xC359, + 54881 - 44032: 0xC35A, + 54882 - 44032: 0xC361, + 54883 - 44032: 0xC362, + 54884 - 44032: 0xC363, + 54885 - 44032: 0xC364, + 54886 - 44032: 0xC365, + 54887 - 44032: 0xC8B1, + 54888 - 44032: 0xC366, + 54889 - 44032: 0xC8B2, + 54890 - 44032: 0xC367, + 54891 - 44032: 0xC368, + 54892 - 44032: 0xC369, + 54893 - 44032: 0xC36A, + 54894 - 44032: 0xC36B, + 54895 - 44032: 0xC36C, + 54896 - 44032: 0xC8B3, + 54897 - 44032: 0xC8B4, + 54898 - 44032: 0xC36D, + 54899 - 44032: 0xC36E, + 54900 - 44032: 0xC8B5, + 54901 - 44032: 0xC36F, + 54902 - 44032: 0xC370, + 54903 - 44032: 0xC371, + 54904 - 44032: 0xC372, + 54905 - 44032: 0xC373, + 54906 - 44032: 0xC374, + 54907 - 44032: 0xC375, + 54908 - 44032: 0xC376, + 54909 - 44032: 0xC377, + 54910 - 44032: 0xC378, + 54911 - 44032: 0xC379, + 54912 - 44032: 0xC37A, + 54913 - 44032: 0xC381, + 54914 - 44032: 0xC382, + 54915 - 44032: 0xC8B6, + 54916 - 44032: 0xC383, + 54917 - 44032: 0xC8B7, + 54918 - 44032: 0xC384, + 54919 - 44032: 0xC385, + 54920 - 44032: 0xC386, + 54921 - 44032: 0xC387, + 54922 - 44032: 0xC388, + 54923 - 44032: 0xC389, + 54924 - 44032: 0xC8B8, + 54925 - 44032: 0xC8B9, + 54926 - 44032: 0xC38A, + 54927 - 44032: 0xC38B, + 54928 - 44032: 0xC8BA, + 54929 - 44032: 0xC38C, + 54930 - 44032: 0xC38D, + 54931 - 44032: 0xC38E, + 54932 - 44032: 0xC8BB, + 54933 - 44032: 0xC38F, + 54934 - 44032: 0xC390, + 54935 - 44032: 0xC391, + 54936 - 44032: 0xC392, + 54937 - 44032: 0xC393, + 54938 - 44032: 0xC394, + 54939 - 44032: 0xC395, + 54940 - 44032: 0xC396, + 54941 - 44032: 0xC8BC, + 54942 - 44032: 0xC397, + 54943 - 44032: 0xC8BD, + 54944 - 44032: 0xC398, + 54945 - 44032: 0xC8BE, + 54946 - 44032: 0xC399, + 54947 - 44032: 0xC39A, + 54948 - 44032: 0xC39B, + 54949 - 44032: 0xC39C, + 54950 - 44032: 0xC39D, + 54951 - 44032: 0xC39E, + 54952 - 44032: 0xC8BF, + 54953 - 44032: 0xC39F, + 54954 - 44032: 0xC3A0, + 54955 - 44032: 0xC441, + 54956 - 44032: 0xC8C0, + 54957 - 44032: 0xC442, + 54958 - 44032: 0xC443, + 54959 - 44032: 0xC444, + 54960 - 44032: 0xC8C1, + 54961 - 44032: 0xC445, + 54962 - 44032: 0xC446, + 54963 - 44032: 0xC447, + 54964 - 44032: 0xC448, + 54965 - 44032: 0xC449, + 54966 - 44032: 0xC44A, + 54967 - 44032: 0xC44B, + 54968 - 44032: 0xC44C, + 54969 - 44032: 0xC8C2, + 54970 - 44032: 0xC44D, + 54971 - 44032: 0xC8C3, + 54972 - 44032: 0xC44E, + 54973 - 44032: 0xC44F, + 54974 - 44032: 0xC450, + 54975 - 44032: 0xC451, + 54976 - 44032: 0xC452, + 54977 - 44032: 0xC453, + 54978 - 44032: 0xC454, + 54979 - 44032: 0xC455, + 54980 - 44032: 0xC8C4, + 54981 - 44032: 0xC8C5, + 54982 - 44032: 0xC456, + 54983 - 44032: 0xC457, + 54984 - 44032: 0xC8C6, + 54985 - 44032: 0xC458, + 54986 - 44032: 0xC459, + 54987 - 44032: 0xC45A, + 54988 - 44032: 0xC8C7, + 54989 - 44032: 0xC461, + 54990 - 44032: 0xC462, + 54991 - 44032: 0xC463, + 54992 - 44032: 0xC464, + 54993 - 44032: 0xC8C8, + 54994 - 44032: 0xC465, + 54995 - 44032: 0xC466, + 54996 - 44032: 0xC8C9, + 54997 - 44032: 0xC467, + 54998 - 44032: 0xC468, + 54999 - 44032: 0xC8CA, + 55000 - 44032: 0xC469, + 55001 - 44032: 0xC8CB, + 55002 - 44032: 0xC46A, + 55003 - 44032: 0xC46B, + 55004 - 44032: 0xC46C, + 55005 - 44032: 0xC46D, + 55006 - 44032: 0xC46E, + 55007 - 44032: 0xC46F, + 55008 - 44032: 0xC8CC, + 55009 - 44032: 0xC470, + 55010 - 44032: 0xC471, + 55011 - 44032: 0xC472, + 55012 - 44032: 0xC8CD, + 55013 - 44032: 0xC473, + 55014 - 44032: 0xC474, + 55015 - 44032: 0xC475, + 55016 - 44032: 0xC8CE, + 55017 - 44032: 0xC476, + 55018 - 44032: 0xC477, + 55019 - 44032: 0xC478, + 55020 - 44032: 0xC479, + 55021 - 44032: 0xC47A, + 55022 - 44032: 0xC481, + 55023 - 44032: 0xC482, + 55024 - 44032: 0xC8CF, + 55025 - 44032: 0xC483, + 55026 - 44032: 0xC484, + 55027 - 44032: 0xC485, + 55028 - 44032: 0xC486, + 55029 - 44032: 0xC8D0, + 55030 - 44032: 0xC487, + 55031 - 44032: 0xC488, + 55032 - 44032: 0xC489, + 55033 - 44032: 0xC48A, + 55034 - 44032: 0xC48B, + 55035 - 44032: 0xC48C, + 55036 - 44032: 0xC8D1, + 55037 - 44032: 0xC8D2, + 55038 - 44032: 0xC48D, + 55039 - 44032: 0xC48E, + 55040 - 44032: 0xC8D3, + 55041 - 44032: 0xC48F, + 55042 - 44032: 0xC490, + 55043 - 44032: 0xC491, + 55044 - 44032: 0xC8D4, + 55045 - 44032: 0xC492, + 55046 - 44032: 0xC493, + 55047 - 44032: 0xC494, + 55048 - 44032: 0xC495, + 55049 - 44032: 0xC496, + 55050 - 44032: 0xC497, + 55051 - 44032: 0xC498, + 55052 - 44032: 0xC499, + 55053 - 44032: 0xC49A, + 55054 - 44032: 0xC49B, + 55055 - 44032: 0xC49C, + 55056 - 44032: 0xC49D, + 55057 - 44032: 0xC8D5, + 55058 - 44032: 0xC49E, + 55059 - 44032: 0xC49F, + 55060 - 44032: 0xC4A0, + 55061 - 44032: 0xC541, + 55062 - 44032: 0xC542, + 55063 - 44032: 0xC543, + 55064 - 44032: 0xC8D6, + 55065 - 44032: 0xC8D7, + 55066 - 44032: 0xC544, + 55067 - 44032: 0xC545, + 55068 - 44032: 0xC8D8, + 55069 - 44032: 0xC546, + 55070 - 44032: 0xC547, + 55071 - 44032: 0xC548, + 55072 - 44032: 0xC8D9, + 55073 - 44032: 0xC549, + 55074 - 44032: 0xC54A, + 55075 - 44032: 0xC54B, + 55076 - 44032: 0xC54C, + 55077 - 44032: 0xC54D, + 55078 - 44032: 0xC54E, + 55079 - 44032: 0xC54F, + 55080 - 44032: 0xC8DA, + 55081 - 44032: 0xC8DB, + 55082 - 44032: 0xC550, + 55083 - 44032: 0xC8DC, + 55084 - 44032: 0xC551, + 55085 - 44032: 0xC8DD, + 55086 - 44032: 0xC552, + 55087 - 44032: 0xC553, + 55088 - 44032: 0xC554, + 55089 - 44032: 0xC555, + 55090 - 44032: 0xC556, + 55091 - 44032: 0xC557, + 55092 - 44032: 0xC8DE, + 55093 - 44032: 0xC8DF, + 55094 - 44032: 0xC558, + 55095 - 44032: 0xC559, + 55096 - 44032: 0xC8E0, + 55097 - 44032: 0xC55A, + 55098 - 44032: 0xC561, + 55099 - 44032: 0xC562, + 55100 - 44032: 0xC8E1, + 55101 - 44032: 0xC563, + 55102 - 44032: 0xC564, + 55103 - 44032: 0xC565, + 55104 - 44032: 0xC566, + 55105 - 44032: 0xC567, + 55106 - 44032: 0xC568, + 55107 - 44032: 0xC569, + 55108 - 44032: 0xC8E2, + 55109 - 44032: 0xC56A, + 55110 - 44032: 0xC56B, + 55111 - 44032: 0xC8E3, + 55112 - 44032: 0xC56C, + 55113 - 44032: 0xC8E4, + 55114 - 44032: 0xC56D, + 55115 - 44032: 0xC56E, + 55116 - 44032: 0xC56F, + 55117 - 44032: 0xC570, + 55118 - 44032: 0xC571, + 55119 - 44032: 0xC572, + 55120 - 44032: 0xC8E5, + 55121 - 44032: 0xC8E6, + 55122 - 44032: 0xC573, + 55123 - 44032: 0xC574, + 55124 - 44032: 0xC8E7, + 55125 - 44032: 0xC575, + 55126 - 44032: 0xC8E8, + 55127 - 44032: 0xC8E9, + 55128 - 44032: 0xC8EA, + 55129 - 44032: 0xC8EB, + 55130 - 44032: 0xC576, + 55131 - 44032: 0xC577, + 55132 - 44032: 0xC578, + 55133 - 44032: 0xC579, + 55134 - 44032: 0xC57A, + 55135 - 44032: 0xC581, + 55136 - 44032: 0xC8EC, + 55137 - 44032: 0xC8ED, + 55138 - 44032: 0xC582, + 55139 - 44032: 0xC8EE, + 55140 - 44032: 0xC583, + 55141 - 44032: 0xC8EF, + 55142 - 44032: 0xC584, + 55143 - 44032: 0xC585, + 55144 - 44032: 0xC586, + 55145 - 44032: 0xC8F0, + 55146 - 44032: 0xC587, + 55147 - 44032: 0xC588, + 55148 - 44032: 0xC8F1, + 55149 - 44032: 0xC589, + 55150 - 44032: 0xC58A, + 55151 - 44032: 0xC58B, + 55152 - 44032: 0xC8F2, + 55153 - 44032: 0xC58C, + 55154 - 44032: 0xC58D, + 55155 - 44032: 0xC58E, + 55156 - 44032: 0xC8F3, + 55157 - 44032: 0xC58F, + 55158 - 44032: 0xC590, + 55159 - 44032: 0xC591, + 55160 - 44032: 0xC592, + 55161 - 44032: 0xC593, + 55162 - 44032: 0xC594, + 55163 - 44032: 0xC595, + 55164 - 44032: 0xC8F4, + 55165 - 44032: 0xC8F5, + 55166 - 44032: 0xC596, + 55167 - 44032: 0xC597, + 55168 - 44032: 0xC598, + 55169 - 44032: 0xC8F6, + 55170 - 44032: 0xC599, + 55171 - 44032: 0xC59A, + 55172 - 44032: 0xC59B, + 55173 - 44032: 0xC59C, + 55174 - 44032: 0xC59D, + 55175 - 44032: 0xC59E, + 55176 - 44032: 0xC8F7, + 55177 - 44032: 0xC8F8, + 55178 - 44032: 0xC59F, + 55179 - 44032: 0xC5A0, + 55180 - 44032: 0xC8F9, + 55181 - 44032: 0xC641, + 55182 - 44032: 0xC642, + 55183 - 44032: 0xC643, + 55184 - 44032: 0xC8FA, + 55185 - 44032: 0xC644, + 55186 - 44032: 0xC645, + 55187 - 44032: 0xC646, + 55188 - 44032: 0xC647, + 55189 - 44032: 0xC648, + 55190 - 44032: 0xC649, + 55191 - 44032: 0xC64A, + 55192 - 44032: 0xC8FB, + 55193 - 44032: 0xC8FC, + 55194 - 44032: 0xC64B, + 55195 - 44032: 0xC8FD, + 55196 - 44032: 0xC64C, + 55197 - 44032: 0xC8FE, + 55198 - 44032: 0xC64D, + 55199 - 44032: 0xC64E, + 55200 - 44032: 0xC64F, + 55201 - 44032: 0xC650, + 55202 - 44032: 0xC651, + 55203 - 44032: 0xC652, +} + +const encode2Low, encode2High = 8213, 9838 + +var encode2 = [...]uint16{ + 8213 - 8213: 0xA1AA, + 8216 - 8213: 0xA1AE, + 8217 - 8213: 0xA1AF, + 8220 - 8213: 0xA1B0, + 8221 - 8213: 0xA1B1, + 8224 - 8213: 0xA2D3, + 8225 - 8213: 0xA2D4, + 8229 - 8213: 0xA1A5, + 8230 - 8213: 0xA1A6, + 8240 - 8213: 0xA2B6, + 8242 - 8213: 0xA1C7, + 8243 - 8213: 0xA1C8, + 8251 - 8213: 0xA1D8, + 8308 - 8213: 0xA9F9, + 8319 - 8213: 0xA9FA, + 8321 - 8213: 0xA9FB, + 8322 - 8213: 0xA9FC, + 8323 - 8213: 0xA9FD, + 8324 - 8213: 0xA9FE, + 8364 - 8213: 0xA2E6, + 8451 - 8213: 0xA1C9, + 8457 - 8213: 0xA2B5, + 8467 - 8213: 0xA7A4, + 8470 - 8213: 0xA2E0, + 8481 - 8213: 0xA2E5, + 8482 - 8213: 0xA2E2, + 8486 - 8213: 0xA7D9, + 8491 - 8213: 0xA1CA, + 8531 - 8213: 0xA8F7, + 8532 - 8213: 0xA8F8, + 8539 - 8213: 0xA8FB, + 8540 - 8213: 0xA8FC, + 8541 - 8213: 0xA8FD, + 8542 - 8213: 0xA8FE, + 8544 - 8213: 0xA5B0, + 8545 - 8213: 0xA5B1, + 8546 - 8213: 0xA5B2, + 8547 - 8213: 0xA5B3, + 8548 - 8213: 0xA5B4, + 8549 - 8213: 0xA5B5, + 8550 - 8213: 0xA5B6, + 8551 - 8213: 0xA5B7, + 8552 - 8213: 0xA5B8, + 8553 - 8213: 0xA5B9, + 8560 - 8213: 0xA5A1, + 8561 - 8213: 0xA5A2, + 8562 - 8213: 0xA5A3, + 8563 - 8213: 0xA5A4, + 8564 - 8213: 0xA5A5, + 8565 - 8213: 0xA5A6, + 8566 - 8213: 0xA5A7, + 8567 - 8213: 0xA5A8, + 8568 - 8213: 0xA5A9, + 8569 - 8213: 0xA5AA, + 8592 - 8213: 0xA1E7, + 8593 - 8213: 0xA1E8, + 8594 - 8213: 0xA1E6, + 8595 - 8213: 0xA1E9, + 8596 - 8213: 0xA1EA, + 8597 - 8213: 0xA2D5, + 8598 - 8213: 0xA2D8, + 8599 - 8213: 0xA2D6, + 8600 - 8213: 0xA2D9, + 8601 - 8213: 0xA2D7, + 8658 - 8213: 0xA2A1, + 8660 - 8213: 0xA2A2, + 8704 - 8213: 0xA2A3, + 8706 - 8213: 0xA1D3, + 8707 - 8213: 0xA2A4, + 8711 - 8213: 0xA1D4, + 8712 - 8213: 0xA1F4, + 8715 - 8213: 0xA1F5, + 8719 - 8213: 0xA2B3, + 8721 - 8213: 0xA2B2, + 8730 - 8213: 0xA1EE, + 8733 - 8213: 0xA1F0, + 8734 - 8213: 0xA1C4, + 8736 - 8213: 0xA1D0, + 8741 - 8213: 0xA1AB, + 8743 - 8213: 0xA1FC, + 8744 - 8213: 0xA1FD, + 8745 - 8213: 0xA1FB, + 8746 - 8213: 0xA1FA, + 8747 - 8213: 0xA1F2, + 8748 - 8213: 0xA1F3, + 8750 - 8213: 0xA2B1, + 8756 - 8213: 0xA1C5, + 8757 - 8213: 0xA1F1, + 8764 - 8213: 0xA1AD, + 8765 - 8213: 0xA1EF, + 8786 - 8213: 0xA1D6, + 8800 - 8213: 0xA1C1, + 8801 - 8213: 0xA1D5, + 8804 - 8213: 0xA1C2, + 8805 - 8213: 0xA1C3, + 8810 - 8213: 0xA1EC, + 8811 - 8213: 0xA1ED, + 8834 - 8213: 0xA1F8, + 8835 - 8213: 0xA1F9, + 8838 - 8213: 0xA1F6, + 8839 - 8213: 0xA1F7, + 8857 - 8213: 0xA2C1, + 8869 - 8213: 0xA1D1, + 8978 - 8213: 0xA1D2, + 9312 - 8213: 0xA8E7, + 9313 - 8213: 0xA8E8, + 9314 - 8213: 0xA8E9, + 9315 - 8213: 0xA8EA, + 9316 - 8213: 0xA8EB, + 9317 - 8213: 0xA8EC, + 9318 - 8213: 0xA8ED, + 9319 - 8213: 0xA8EE, + 9320 - 8213: 0xA8EF, + 9321 - 8213: 0xA8F0, + 9322 - 8213: 0xA8F1, + 9323 - 8213: 0xA8F2, + 9324 - 8213: 0xA8F3, + 9325 - 8213: 0xA8F4, + 9326 - 8213: 0xA8F5, + 9332 - 8213: 0xA9E7, + 9333 - 8213: 0xA9E8, + 9334 - 8213: 0xA9E9, + 9335 - 8213: 0xA9EA, + 9336 - 8213: 0xA9EB, + 9337 - 8213: 0xA9EC, + 9338 - 8213: 0xA9ED, + 9339 - 8213: 0xA9EE, + 9340 - 8213: 0xA9EF, + 9341 - 8213: 0xA9F0, + 9342 - 8213: 0xA9F1, + 9343 - 8213: 0xA9F2, + 9344 - 8213: 0xA9F3, + 9345 - 8213: 0xA9F4, + 9346 - 8213: 0xA9F5, + 9372 - 8213: 0xA9CD, + 9373 - 8213: 0xA9CE, + 9374 - 8213: 0xA9CF, + 9375 - 8213: 0xA9D0, + 9376 - 8213: 0xA9D1, + 9377 - 8213: 0xA9D2, + 9378 - 8213: 0xA9D3, + 9379 - 8213: 0xA9D4, + 9380 - 8213: 0xA9D5, + 9381 - 8213: 0xA9D6, + 9382 - 8213: 0xA9D7, + 9383 - 8213: 0xA9D8, + 9384 - 8213: 0xA9D9, + 9385 - 8213: 0xA9DA, + 9386 - 8213: 0xA9DB, + 9387 - 8213: 0xA9DC, + 9388 - 8213: 0xA9DD, + 9389 - 8213: 0xA9DE, + 9390 - 8213: 0xA9DF, + 9391 - 8213: 0xA9E0, + 9392 - 8213: 0xA9E1, + 9393 - 8213: 0xA9E2, + 9394 - 8213: 0xA9E3, + 9395 - 8213: 0xA9E4, + 9396 - 8213: 0xA9E5, + 9397 - 8213: 0xA9E6, + 9424 - 8213: 0xA8CD, + 9425 - 8213: 0xA8CE, + 9426 - 8213: 0xA8CF, + 9427 - 8213: 0xA8D0, + 9428 - 8213: 0xA8D1, + 9429 - 8213: 0xA8D2, + 9430 - 8213: 0xA8D3, + 9431 - 8213: 0xA8D4, + 9432 - 8213: 0xA8D5, + 9433 - 8213: 0xA8D6, + 9434 - 8213: 0xA8D7, + 9435 - 8213: 0xA8D8, + 9436 - 8213: 0xA8D9, + 9437 - 8213: 0xA8DA, + 9438 - 8213: 0xA8DB, + 9439 - 8213: 0xA8DC, + 9440 - 8213: 0xA8DD, + 9441 - 8213: 0xA8DE, + 9442 - 8213: 0xA8DF, + 9443 - 8213: 0xA8E0, + 9444 - 8213: 0xA8E1, + 9445 - 8213: 0xA8E2, + 9446 - 8213: 0xA8E3, + 9447 - 8213: 0xA8E4, + 9448 - 8213: 0xA8E5, + 9449 - 8213: 0xA8E6, + 9472 - 8213: 0xA6A1, + 9473 - 8213: 0xA6AC, + 9474 - 8213: 0xA6A2, + 9475 - 8213: 0xA6AD, + 9484 - 8213: 0xA6A3, + 9485 - 8213: 0xA6C8, + 9486 - 8213: 0xA6C7, + 9487 - 8213: 0xA6AE, + 9488 - 8213: 0xA6A4, + 9489 - 8213: 0xA6C2, + 9490 - 8213: 0xA6C1, + 9491 - 8213: 0xA6AF, + 9492 - 8213: 0xA6A6, + 9493 - 8213: 0xA6C6, + 9494 - 8213: 0xA6C5, + 9495 - 8213: 0xA6B1, + 9496 - 8213: 0xA6A5, + 9497 - 8213: 0xA6C4, + 9498 - 8213: 0xA6C3, + 9499 - 8213: 0xA6B0, + 9500 - 8213: 0xA6A7, + 9501 - 8213: 0xA6BC, + 9502 - 8213: 0xA6C9, + 9503 - 8213: 0xA6CA, + 9504 - 8213: 0xA6B7, + 9505 - 8213: 0xA6CB, + 9506 - 8213: 0xA6CC, + 9507 - 8213: 0xA6B2, + 9508 - 8213: 0xA6A9, + 9509 - 8213: 0xA6BE, + 9510 - 8213: 0xA6CD, + 9511 - 8213: 0xA6CE, + 9512 - 8213: 0xA6B9, + 9513 - 8213: 0xA6CF, + 9514 - 8213: 0xA6D0, + 9515 - 8213: 0xA6B4, + 9516 - 8213: 0xA6A8, + 9517 - 8213: 0xA6D1, + 9518 - 8213: 0xA6D2, + 9519 - 8213: 0xA6B8, + 9520 - 8213: 0xA6BD, + 9521 - 8213: 0xA6D3, + 9522 - 8213: 0xA6D4, + 9523 - 8213: 0xA6B3, + 9524 - 8213: 0xA6AA, + 9525 - 8213: 0xA6D5, + 9526 - 8213: 0xA6D6, + 9527 - 8213: 0xA6BA, + 9528 - 8213: 0xA6BF, + 9529 - 8213: 0xA6D7, + 9530 - 8213: 0xA6D8, + 9531 - 8213: 0xA6B5, + 9532 - 8213: 0xA6AB, + 9533 - 8213: 0xA6D9, + 9534 - 8213: 0xA6DA, + 9535 - 8213: 0xA6BB, + 9536 - 8213: 0xA6DB, + 9537 - 8213: 0xA6DC, + 9538 - 8213: 0xA6C0, + 9539 - 8213: 0xA6DD, + 9540 - 8213: 0xA6DE, + 9541 - 8213: 0xA6DF, + 9542 - 8213: 0xA6E0, + 9543 - 8213: 0xA6E1, + 9544 - 8213: 0xA6E2, + 9545 - 8213: 0xA6E3, + 9546 - 8213: 0xA6E4, + 9547 - 8213: 0xA6B6, + 9618 - 8213: 0xA2C6, + 9632 - 8213: 0xA1E1, + 9633 - 8213: 0xA1E0, + 9635 - 8213: 0xA2C3, + 9636 - 8213: 0xA2C7, + 9637 - 8213: 0xA2C8, + 9638 - 8213: 0xA2CB, + 9639 - 8213: 0xA2CA, + 9640 - 8213: 0xA2C9, + 9641 - 8213: 0xA2CC, + 9650 - 8213: 0xA1E3, + 9651 - 8213: 0xA1E2, + 9654 - 8213: 0xA2BA, + 9655 - 8213: 0xA2B9, + 9660 - 8213: 0xA1E5, + 9661 - 8213: 0xA1E4, + 9664 - 8213: 0xA2B8, + 9665 - 8213: 0xA2B7, + 9670 - 8213: 0xA1DF, + 9671 - 8213: 0xA1DE, + 9672 - 8213: 0xA2C2, + 9675 - 8213: 0xA1DB, + 9678 - 8213: 0xA1DD, + 9679 - 8213: 0xA1DC, + 9680 - 8213: 0xA2C4, + 9681 - 8213: 0xA2C5, + 9733 - 8213: 0xA1DA, + 9734 - 8213: 0xA1D9, + 9742 - 8213: 0xA2CF, + 9743 - 8213: 0xA2CE, + 9756 - 8213: 0xA2D0, + 9758 - 8213: 0xA2D1, + 9792 - 8213: 0xA1CF, + 9794 - 8213: 0xA1CE, + 9824 - 8213: 0xA2BC, + 9825 - 8213: 0xA2BD, + 9827 - 8213: 0xA2C0, + 9828 - 8213: 0xA2BB, + 9829 - 8213: 0xA2BE, + 9831 - 8213: 0xA2BF, + 9832 - 8213: 0xA2CD, + 9833 - 8213: 0xA2DB, + 9834 - 8213: 0xA2DC, + 9836 - 8213: 0xA2DD, + 9837 - 8213: 0xA2DA, +} + +const encode3Low, encode3High = 12288, 13278 + +var encode3 = [...]uint16{ + 12288 - 12288: 0xA1A1, + 12289 - 12288: 0xA1A2, + 12290 - 12288: 0xA1A3, + 12291 - 12288: 0xA1A8, + 12296 - 12288: 0xA1B4, + 12297 - 12288: 0xA1B5, + 12298 - 12288: 0xA1B6, + 12299 - 12288: 0xA1B7, + 12300 - 12288: 0xA1B8, + 12301 - 12288: 0xA1B9, + 12302 - 12288: 0xA1BA, + 12303 - 12288: 0xA1BB, + 12304 - 12288: 0xA1BC, + 12305 - 12288: 0xA1BD, + 12307 - 12288: 0xA1EB, + 12308 - 12288: 0xA1B2, + 12309 - 12288: 0xA1B3, + 12353 - 12288: 0xAAA1, + 12354 - 12288: 0xAAA2, + 12355 - 12288: 0xAAA3, + 12356 - 12288: 0xAAA4, + 12357 - 12288: 0xAAA5, + 12358 - 12288: 0xAAA6, + 12359 - 12288: 0xAAA7, + 12360 - 12288: 0xAAA8, + 12361 - 12288: 0xAAA9, + 12362 - 12288: 0xAAAA, + 12363 - 12288: 0xAAAB, + 12364 - 12288: 0xAAAC, + 12365 - 12288: 0xAAAD, + 12366 - 12288: 0xAAAE, + 12367 - 12288: 0xAAAF, + 12368 - 12288: 0xAAB0, + 12369 - 12288: 0xAAB1, + 12370 - 12288: 0xAAB2, + 12371 - 12288: 0xAAB3, + 12372 - 12288: 0xAAB4, + 12373 - 12288: 0xAAB5, + 12374 - 12288: 0xAAB6, + 12375 - 12288: 0xAAB7, + 12376 - 12288: 0xAAB8, + 12377 - 12288: 0xAAB9, + 12378 - 12288: 0xAABA, + 12379 - 12288: 0xAABB, + 12380 - 12288: 0xAABC, + 12381 - 12288: 0xAABD, + 12382 - 12288: 0xAABE, + 12383 - 12288: 0xAABF, + 12384 - 12288: 0xAAC0, + 12385 - 12288: 0xAAC1, + 12386 - 12288: 0xAAC2, + 12387 - 12288: 0xAAC3, + 12388 - 12288: 0xAAC4, + 12389 - 12288: 0xAAC5, + 12390 - 12288: 0xAAC6, + 12391 - 12288: 0xAAC7, + 12392 - 12288: 0xAAC8, + 12393 - 12288: 0xAAC9, + 12394 - 12288: 0xAACA, + 12395 - 12288: 0xAACB, + 12396 - 12288: 0xAACC, + 12397 - 12288: 0xAACD, + 12398 - 12288: 0xAACE, + 12399 - 12288: 0xAACF, + 12400 - 12288: 0xAAD0, + 12401 - 12288: 0xAAD1, + 12402 - 12288: 0xAAD2, + 12403 - 12288: 0xAAD3, + 12404 - 12288: 0xAAD4, + 12405 - 12288: 0xAAD5, + 12406 - 12288: 0xAAD6, + 12407 - 12288: 0xAAD7, + 12408 - 12288: 0xAAD8, + 12409 - 12288: 0xAAD9, + 12410 - 12288: 0xAADA, + 12411 - 12288: 0xAADB, + 12412 - 12288: 0xAADC, + 12413 - 12288: 0xAADD, + 12414 - 12288: 0xAADE, + 12415 - 12288: 0xAADF, + 12416 - 12288: 0xAAE0, + 12417 - 12288: 0xAAE1, + 12418 - 12288: 0xAAE2, + 12419 - 12288: 0xAAE3, + 12420 - 12288: 0xAAE4, + 12421 - 12288: 0xAAE5, + 12422 - 12288: 0xAAE6, + 12423 - 12288: 0xAAE7, + 12424 - 12288: 0xAAE8, + 12425 - 12288: 0xAAE9, + 12426 - 12288: 0xAAEA, + 12427 - 12288: 0xAAEB, + 12428 - 12288: 0xAAEC, + 12429 - 12288: 0xAAED, + 12430 - 12288: 0xAAEE, + 12431 - 12288: 0xAAEF, + 12432 - 12288: 0xAAF0, + 12433 - 12288: 0xAAF1, + 12434 - 12288: 0xAAF2, + 12435 - 12288: 0xAAF3, + 12449 - 12288: 0xABA1, + 12450 - 12288: 0xABA2, + 12451 - 12288: 0xABA3, + 12452 - 12288: 0xABA4, + 12453 - 12288: 0xABA5, + 12454 - 12288: 0xABA6, + 12455 - 12288: 0xABA7, + 12456 - 12288: 0xABA8, + 12457 - 12288: 0xABA9, + 12458 - 12288: 0xABAA, + 12459 - 12288: 0xABAB, + 12460 - 12288: 0xABAC, + 12461 - 12288: 0xABAD, + 12462 - 12288: 0xABAE, + 12463 - 12288: 0xABAF, + 12464 - 12288: 0xABB0, + 12465 - 12288: 0xABB1, + 12466 - 12288: 0xABB2, + 12467 - 12288: 0xABB3, + 12468 - 12288: 0xABB4, + 12469 - 12288: 0xABB5, + 12470 - 12288: 0xABB6, + 12471 - 12288: 0xABB7, + 12472 - 12288: 0xABB8, + 12473 - 12288: 0xABB9, + 12474 - 12288: 0xABBA, + 12475 - 12288: 0xABBB, + 12476 - 12288: 0xABBC, + 12477 - 12288: 0xABBD, + 12478 - 12288: 0xABBE, + 12479 - 12288: 0xABBF, + 12480 - 12288: 0xABC0, + 12481 - 12288: 0xABC1, + 12482 - 12288: 0xABC2, + 12483 - 12288: 0xABC3, + 12484 - 12288: 0xABC4, + 12485 - 12288: 0xABC5, + 12486 - 12288: 0xABC6, + 12487 - 12288: 0xABC7, + 12488 - 12288: 0xABC8, + 12489 - 12288: 0xABC9, + 12490 - 12288: 0xABCA, + 12491 - 12288: 0xABCB, + 12492 - 12288: 0xABCC, + 12493 - 12288: 0xABCD, + 12494 - 12288: 0xABCE, + 12495 - 12288: 0xABCF, + 12496 - 12288: 0xABD0, + 12497 - 12288: 0xABD1, + 12498 - 12288: 0xABD2, + 12499 - 12288: 0xABD3, + 12500 - 12288: 0xABD4, + 12501 - 12288: 0xABD5, + 12502 - 12288: 0xABD6, + 12503 - 12288: 0xABD7, + 12504 - 12288: 0xABD8, + 12505 - 12288: 0xABD9, + 12506 - 12288: 0xABDA, + 12507 - 12288: 0xABDB, + 12508 - 12288: 0xABDC, + 12509 - 12288: 0xABDD, + 12510 - 12288: 0xABDE, + 12511 - 12288: 0xABDF, + 12512 - 12288: 0xABE0, + 12513 - 12288: 0xABE1, + 12514 - 12288: 0xABE2, + 12515 - 12288: 0xABE3, + 12516 - 12288: 0xABE4, + 12517 - 12288: 0xABE5, + 12518 - 12288: 0xABE6, + 12519 - 12288: 0xABE7, + 12520 - 12288: 0xABE8, + 12521 - 12288: 0xABE9, + 12522 - 12288: 0xABEA, + 12523 - 12288: 0xABEB, + 12524 - 12288: 0xABEC, + 12525 - 12288: 0xABED, + 12526 - 12288: 0xABEE, + 12527 - 12288: 0xABEF, + 12528 - 12288: 0xABF0, + 12529 - 12288: 0xABF1, + 12530 - 12288: 0xABF2, + 12531 - 12288: 0xABF3, + 12532 - 12288: 0xABF4, + 12533 - 12288: 0xABF5, + 12534 - 12288: 0xABF6, + 12593 - 12288: 0xA4A1, + 12594 - 12288: 0xA4A2, + 12595 - 12288: 0xA4A3, + 12596 - 12288: 0xA4A4, + 12597 - 12288: 0xA4A5, + 12598 - 12288: 0xA4A6, + 12599 - 12288: 0xA4A7, + 12600 - 12288: 0xA4A8, + 12601 - 12288: 0xA4A9, + 12602 - 12288: 0xA4AA, + 12603 - 12288: 0xA4AB, + 12604 - 12288: 0xA4AC, + 12605 - 12288: 0xA4AD, + 12606 - 12288: 0xA4AE, + 12607 - 12288: 0xA4AF, + 12608 - 12288: 0xA4B0, + 12609 - 12288: 0xA4B1, + 12610 - 12288: 0xA4B2, + 12611 - 12288: 0xA4B3, + 12612 - 12288: 0xA4B4, + 12613 - 12288: 0xA4B5, + 12614 - 12288: 0xA4B6, + 12615 - 12288: 0xA4B7, + 12616 - 12288: 0xA4B8, + 12617 - 12288: 0xA4B9, + 12618 - 12288: 0xA4BA, + 12619 - 12288: 0xA4BB, + 12620 - 12288: 0xA4BC, + 12621 - 12288: 0xA4BD, + 12622 - 12288: 0xA4BE, + 12623 - 12288: 0xA4BF, + 12624 - 12288: 0xA4C0, + 12625 - 12288: 0xA4C1, + 12626 - 12288: 0xA4C2, + 12627 - 12288: 0xA4C3, + 12628 - 12288: 0xA4C4, + 12629 - 12288: 0xA4C5, + 12630 - 12288: 0xA4C6, + 12631 - 12288: 0xA4C7, + 12632 - 12288: 0xA4C8, + 12633 - 12288: 0xA4C9, + 12634 - 12288: 0xA4CA, + 12635 - 12288: 0xA4CB, + 12636 - 12288: 0xA4CC, + 12637 - 12288: 0xA4CD, + 12638 - 12288: 0xA4CE, + 12639 - 12288: 0xA4CF, + 12640 - 12288: 0xA4D0, + 12641 - 12288: 0xA4D1, + 12642 - 12288: 0xA4D2, + 12643 - 12288: 0xA4D3, + 12644 - 12288: 0xA4D4, + 12645 - 12288: 0xA4D5, + 12646 - 12288: 0xA4D6, + 12647 - 12288: 0xA4D7, + 12648 - 12288: 0xA4D8, + 12649 - 12288: 0xA4D9, + 12650 - 12288: 0xA4DA, + 12651 - 12288: 0xA4DB, + 12652 - 12288: 0xA4DC, + 12653 - 12288: 0xA4DD, + 12654 - 12288: 0xA4DE, + 12655 - 12288: 0xA4DF, + 12656 - 12288: 0xA4E0, + 12657 - 12288: 0xA4E1, + 12658 - 12288: 0xA4E2, + 12659 - 12288: 0xA4E3, + 12660 - 12288: 0xA4E4, + 12661 - 12288: 0xA4E5, + 12662 - 12288: 0xA4E6, + 12663 - 12288: 0xA4E7, + 12664 - 12288: 0xA4E8, + 12665 - 12288: 0xA4E9, + 12666 - 12288: 0xA4EA, + 12667 - 12288: 0xA4EB, + 12668 - 12288: 0xA4EC, + 12669 - 12288: 0xA4ED, + 12670 - 12288: 0xA4EE, + 12671 - 12288: 0xA4EF, + 12672 - 12288: 0xA4F0, + 12673 - 12288: 0xA4F1, + 12674 - 12288: 0xA4F2, + 12675 - 12288: 0xA4F3, + 12676 - 12288: 0xA4F4, + 12677 - 12288: 0xA4F5, + 12678 - 12288: 0xA4F6, + 12679 - 12288: 0xA4F7, + 12680 - 12288: 0xA4F8, + 12681 - 12288: 0xA4F9, + 12682 - 12288: 0xA4FA, + 12683 - 12288: 0xA4FB, + 12684 - 12288: 0xA4FC, + 12685 - 12288: 0xA4FD, + 12686 - 12288: 0xA4FE, + 12800 - 12288: 0xA9B1, + 12801 - 12288: 0xA9B2, + 12802 - 12288: 0xA9B3, + 12803 - 12288: 0xA9B4, + 12804 - 12288: 0xA9B5, + 12805 - 12288: 0xA9B6, + 12806 - 12288: 0xA9B7, + 12807 - 12288: 0xA9B8, + 12808 - 12288: 0xA9B9, + 12809 - 12288: 0xA9BA, + 12810 - 12288: 0xA9BB, + 12811 - 12288: 0xA9BC, + 12812 - 12288: 0xA9BD, + 12813 - 12288: 0xA9BE, + 12814 - 12288: 0xA9BF, + 12815 - 12288: 0xA9C0, + 12816 - 12288: 0xA9C1, + 12817 - 12288: 0xA9C2, + 12818 - 12288: 0xA9C3, + 12819 - 12288: 0xA9C4, + 12820 - 12288: 0xA9C5, + 12821 - 12288: 0xA9C6, + 12822 - 12288: 0xA9C7, + 12823 - 12288: 0xA9C8, + 12824 - 12288: 0xA9C9, + 12825 - 12288: 0xA9CA, + 12826 - 12288: 0xA9CB, + 12827 - 12288: 0xA9CC, + 12828 - 12288: 0xA2DF, + 12896 - 12288: 0xA8B1, + 12897 - 12288: 0xA8B2, + 12898 - 12288: 0xA8B3, + 12899 - 12288: 0xA8B4, + 12900 - 12288: 0xA8B5, + 12901 - 12288: 0xA8B6, + 12902 - 12288: 0xA8B7, + 12903 - 12288: 0xA8B8, + 12904 - 12288: 0xA8B9, + 12905 - 12288: 0xA8BA, + 12906 - 12288: 0xA8BB, + 12907 - 12288: 0xA8BC, + 12908 - 12288: 0xA8BD, + 12909 - 12288: 0xA8BE, + 12910 - 12288: 0xA8BF, + 12911 - 12288: 0xA8C0, + 12912 - 12288: 0xA8C1, + 12913 - 12288: 0xA8C2, + 12914 - 12288: 0xA8C3, + 12915 - 12288: 0xA8C4, + 12916 - 12288: 0xA8C5, + 12917 - 12288: 0xA8C6, + 12918 - 12288: 0xA8C7, + 12919 - 12288: 0xA8C8, + 12920 - 12288: 0xA8C9, + 12921 - 12288: 0xA8CA, + 12922 - 12288: 0xA8CB, + 12923 - 12288: 0xA8CC, + 12927 - 12288: 0xA2DE, + 13184 - 12288: 0xA7C9, + 13185 - 12288: 0xA7CA, + 13186 - 12288: 0xA7CB, + 13187 - 12288: 0xA7CC, + 13188 - 12288: 0xA7CD, + 13192 - 12288: 0xA7BA, + 13193 - 12288: 0xA7BB, + 13194 - 12288: 0xA7DC, + 13195 - 12288: 0xA7DD, + 13196 - 12288: 0xA7DE, + 13197 - 12288: 0xA7B6, + 13198 - 12288: 0xA7B7, + 13199 - 12288: 0xA7B8, + 13200 - 12288: 0xA7D4, + 13201 - 12288: 0xA7D5, + 13202 - 12288: 0xA7D6, + 13203 - 12288: 0xA7D7, + 13204 - 12288: 0xA7D8, + 13205 - 12288: 0xA7A1, + 13206 - 12288: 0xA7A2, + 13207 - 12288: 0xA7A3, + 13208 - 12288: 0xA7A5, + 13209 - 12288: 0xA7AB, + 13210 - 12288: 0xA7AC, + 13211 - 12288: 0xA7AD, + 13212 - 12288: 0xA7AE, + 13213 - 12288: 0xA7AF, + 13214 - 12288: 0xA7B0, + 13215 - 12288: 0xA7B1, + 13216 - 12288: 0xA7B2, + 13217 - 12288: 0xA7B3, + 13218 - 12288: 0xA7B4, + 13219 - 12288: 0xA7A7, + 13220 - 12288: 0xA7A8, + 13221 - 12288: 0xA7A9, + 13222 - 12288: 0xA7AA, + 13223 - 12288: 0xA7BD, + 13224 - 12288: 0xA7BE, + 13225 - 12288: 0xA7E5, + 13226 - 12288: 0xA7E6, + 13227 - 12288: 0xA7E7, + 13228 - 12288: 0xA7E8, + 13229 - 12288: 0xA7E1, + 13230 - 12288: 0xA7E2, + 13231 - 12288: 0xA7E3, + 13232 - 12288: 0xA7BF, + 13233 - 12288: 0xA7C0, + 13234 - 12288: 0xA7C1, + 13235 - 12288: 0xA7C2, + 13236 - 12288: 0xA7C3, + 13237 - 12288: 0xA7C4, + 13238 - 12288: 0xA7C5, + 13239 - 12288: 0xA7C6, + 13240 - 12288: 0xA7C7, + 13241 - 12288: 0xA7C8, + 13242 - 12288: 0xA7CE, + 13243 - 12288: 0xA7CF, + 13244 - 12288: 0xA7D0, + 13245 - 12288: 0xA7D1, + 13246 - 12288: 0xA7D2, + 13247 - 12288: 0xA7D3, + 13248 - 12288: 0xA7DA, + 13249 - 12288: 0xA7DB, + 13250 - 12288: 0xA2E3, + 13251 - 12288: 0xA7EC, + 13252 - 12288: 0xA7A6, + 13253 - 12288: 0xA7E0, + 13254 - 12288: 0xA7EF, + 13255 - 12288: 0xA2E1, + 13256 - 12288: 0xA7BC, + 13257 - 12288: 0xA7ED, + 13258 - 12288: 0xA7B5, + 13263 - 12288: 0xA7B9, + 13264 - 12288: 0xA7EA, + 13267 - 12288: 0xA7EB, + 13270 - 12288: 0xA7DF, + 13272 - 12288: 0xA2E4, + 13275 - 12288: 0xA7E4, + 13276 - 12288: 0xA7EE, + 13277 - 12288: 0xA7E9, +} + +const encode4Low, encode4High = 161, 1106 + +var encode4 = [...]uint16{ + 161 - 161: 0xA2AE, + 164 - 161: 0xA2B4, + 167 - 161: 0xA1D7, + 168 - 161: 0xA1A7, + 170 - 161: 0xA8A3, + 173 - 161: 0xA1A9, + 174 - 161: 0xA2E7, + 176 - 161: 0xA1C6, + 177 - 161: 0xA1BE, + 178 - 161: 0xA9F7, + 179 - 161: 0xA9F8, + 180 - 161: 0xA2A5, + 182 - 161: 0xA2D2, + 183 - 161: 0xA1A4, + 184 - 161: 0xA2AC, + 185 - 161: 0xA9F6, + 186 - 161: 0xA8AC, + 188 - 161: 0xA8F9, + 189 - 161: 0xA8F6, + 190 - 161: 0xA8FA, + 191 - 161: 0xA2AF, + 198 - 161: 0xA8A1, + 208 - 161: 0xA8A2, + 215 - 161: 0xA1BF, + 216 - 161: 0xA8AA, + 222 - 161: 0xA8AD, + 223 - 161: 0xA9AC, + 230 - 161: 0xA9A1, + 240 - 161: 0xA9A3, + 247 - 161: 0xA1C0, + 248 - 161: 0xA9AA, + 254 - 161: 0xA9AD, + 273 - 161: 0xA9A2, + 294 - 161: 0xA8A4, + 295 - 161: 0xA9A4, + 305 - 161: 0xA9A5, + 306 - 161: 0xA8A6, + 307 - 161: 0xA9A6, + 312 - 161: 0xA9A7, + 319 - 161: 0xA8A8, + 320 - 161: 0xA9A8, + 321 - 161: 0xA8A9, + 322 - 161: 0xA9A9, + 329 - 161: 0xA9B0, + 330 - 161: 0xA8AF, + 331 - 161: 0xA9AF, + 338 - 161: 0xA8AB, + 339 - 161: 0xA9AB, + 358 - 161: 0xA8AE, + 359 - 161: 0xA9AE, + 711 - 161: 0xA2A7, + 720 - 161: 0xA2B0, + 728 - 161: 0xA2A8, + 729 - 161: 0xA2AB, + 730 - 161: 0xA2AA, + 731 - 161: 0xA2AD, + 733 - 161: 0xA2A9, + 913 - 161: 0xA5C1, + 914 - 161: 0xA5C2, + 915 - 161: 0xA5C3, + 916 - 161: 0xA5C4, + 917 - 161: 0xA5C5, + 918 - 161: 0xA5C6, + 919 - 161: 0xA5C7, + 920 - 161: 0xA5C8, + 921 - 161: 0xA5C9, + 922 - 161: 0xA5CA, + 923 - 161: 0xA5CB, + 924 - 161: 0xA5CC, + 925 - 161: 0xA5CD, + 926 - 161: 0xA5CE, + 927 - 161: 0xA5CF, + 928 - 161: 0xA5D0, + 929 - 161: 0xA5D1, + 931 - 161: 0xA5D2, + 932 - 161: 0xA5D3, + 933 - 161: 0xA5D4, + 934 - 161: 0xA5D5, + 935 - 161: 0xA5D6, + 936 - 161: 0xA5D7, + 937 - 161: 0xA5D8, + 945 - 161: 0xA5E1, + 946 - 161: 0xA5E2, + 947 - 161: 0xA5E3, + 948 - 161: 0xA5E4, + 949 - 161: 0xA5E5, + 950 - 161: 0xA5E6, + 951 - 161: 0xA5E7, + 952 - 161: 0xA5E8, + 953 - 161: 0xA5E9, + 954 - 161: 0xA5EA, + 955 - 161: 0xA5EB, + 956 - 161: 0xA5EC, + 957 - 161: 0xA5ED, + 958 - 161: 0xA5EE, + 959 - 161: 0xA5EF, + 960 - 161: 0xA5F0, + 961 - 161: 0xA5F1, + 963 - 161: 0xA5F2, + 964 - 161: 0xA5F3, + 965 - 161: 0xA5F4, + 966 - 161: 0xA5F5, + 967 - 161: 0xA5F6, + 968 - 161: 0xA5F7, + 969 - 161: 0xA5F8, + 1025 - 161: 0xACA7, + 1040 - 161: 0xACA1, + 1041 - 161: 0xACA2, + 1042 - 161: 0xACA3, + 1043 - 161: 0xACA4, + 1044 - 161: 0xACA5, + 1045 - 161: 0xACA6, + 1046 - 161: 0xACA8, + 1047 - 161: 0xACA9, + 1048 - 161: 0xACAA, + 1049 - 161: 0xACAB, + 1050 - 161: 0xACAC, + 1051 - 161: 0xACAD, + 1052 - 161: 0xACAE, + 1053 - 161: 0xACAF, + 1054 - 161: 0xACB0, + 1055 - 161: 0xACB1, + 1056 - 161: 0xACB2, + 1057 - 161: 0xACB3, + 1058 - 161: 0xACB4, + 1059 - 161: 0xACB5, + 1060 - 161: 0xACB6, + 1061 - 161: 0xACB7, + 1062 - 161: 0xACB8, + 1063 - 161: 0xACB9, + 1064 - 161: 0xACBA, + 1065 - 161: 0xACBB, + 1066 - 161: 0xACBC, + 1067 - 161: 0xACBD, + 1068 - 161: 0xACBE, + 1069 - 161: 0xACBF, + 1070 - 161: 0xACC0, + 1071 - 161: 0xACC1, + 1072 - 161: 0xACD1, + 1073 - 161: 0xACD2, + 1074 - 161: 0xACD3, + 1075 - 161: 0xACD4, + 1076 - 161: 0xACD5, + 1077 - 161: 0xACD6, + 1078 - 161: 0xACD8, + 1079 - 161: 0xACD9, + 1080 - 161: 0xACDA, + 1081 - 161: 0xACDB, + 1082 - 161: 0xACDC, + 1083 - 161: 0xACDD, + 1084 - 161: 0xACDE, + 1085 - 161: 0xACDF, + 1086 - 161: 0xACE0, + 1087 - 161: 0xACE1, + 1088 - 161: 0xACE2, + 1089 - 161: 0xACE3, + 1090 - 161: 0xACE4, + 1091 - 161: 0xACE5, + 1092 - 161: 0xACE6, + 1093 - 161: 0xACE7, + 1094 - 161: 0xACE8, + 1095 - 161: 0xACE9, + 1096 - 161: 0xACEA, + 1097 - 161: 0xACEB, + 1098 - 161: 0xACEC, + 1099 - 161: 0xACED, + 1100 - 161: 0xACEE, + 1101 - 161: 0xACEF, + 1102 - 161: 0xACF0, + 1103 - 161: 0xACF1, + 1105 - 161: 0xACD7, +} + +const encode5Low, encode5High = 63744, 64012 + +var encode5 = [...]uint16{ + 63744 - 63744: 0xCBD0, + 63745 - 63744: 0xCBD6, + 63746 - 63744: 0xCBE7, + 63747 - 63744: 0xCDCF, + 63748 - 63744: 0xCDE8, + 63749 - 63744: 0xCEAD, + 63750 - 63744: 0xCFFB, + 63751 - 63744: 0xD0A2, + 63752 - 63744: 0xD0B8, + 63753 - 63744: 0xD0D0, + 63754 - 63744: 0xD0DD, + 63755 - 63744: 0xD1D4, + 63756 - 63744: 0xD1D5, + 63757 - 63744: 0xD1D8, + 63758 - 63744: 0xD1DB, + 63759 - 63744: 0xD1DC, + 63760 - 63744: 0xD1DD, + 63761 - 63744: 0xD1DE, + 63762 - 63744: 0xD1DF, + 63763 - 63744: 0xD1E0, + 63764 - 63744: 0xD1E2, + 63765 - 63744: 0xD1E3, + 63766 - 63744: 0xD1E4, + 63767 - 63744: 0xD1E5, + 63768 - 63744: 0xD1E6, + 63769 - 63744: 0xD1E8, + 63770 - 63744: 0xD1E9, + 63771 - 63744: 0xD1EA, + 63772 - 63744: 0xD1EB, + 63773 - 63744: 0xD1ED, + 63774 - 63744: 0xD1EF, + 63775 - 63744: 0xD1F0, + 63776 - 63744: 0xD1F2, + 63777 - 63744: 0xD1F6, + 63778 - 63744: 0xD1FA, + 63779 - 63744: 0xD1FC, + 63780 - 63744: 0xD1FD, + 63781 - 63744: 0xD1FE, + 63782 - 63744: 0xD2A2, + 63783 - 63744: 0xD2A3, + 63784 - 63744: 0xD2A7, + 63785 - 63744: 0xD2A8, + 63786 - 63744: 0xD2A9, + 63787 - 63744: 0xD2AA, + 63788 - 63744: 0xD2AB, + 63789 - 63744: 0xD2AD, + 63790 - 63744: 0xD2B2, + 63791 - 63744: 0xD2BE, + 63792 - 63744: 0xD2C2, + 63793 - 63744: 0xD2C3, + 63794 - 63744: 0xD2C4, + 63795 - 63744: 0xD2C6, + 63796 - 63744: 0xD2C7, + 63797 - 63744: 0xD2C8, + 63798 - 63744: 0xD2C9, + 63799 - 63744: 0xD2CA, + 63800 - 63744: 0xD2CB, + 63801 - 63744: 0xD2CD, + 63802 - 63744: 0xD2CE, + 63803 - 63744: 0xD2CF, + 63804 - 63744: 0xD2D0, + 63805 - 63744: 0xD2D1, + 63806 - 63744: 0xD2D2, + 63807 - 63744: 0xD2D3, + 63808 - 63744: 0xD2D4, + 63809 - 63744: 0xD2D5, + 63810 - 63744: 0xD2D6, + 63811 - 63744: 0xD2D7, + 63812 - 63744: 0xD2D9, + 63813 - 63744: 0xD2DA, + 63814 - 63744: 0xD2DE, + 63815 - 63744: 0xD2DF, + 63816 - 63744: 0xD2E1, + 63817 - 63744: 0xD2E2, + 63818 - 63744: 0xD2E4, + 63819 - 63744: 0xD2E5, + 63820 - 63744: 0xD2E6, + 63821 - 63744: 0xD2E7, + 63822 - 63744: 0xD2E8, + 63823 - 63744: 0xD2E9, + 63824 - 63744: 0xD2EA, + 63825 - 63744: 0xD2EB, + 63826 - 63744: 0xD2F0, + 63827 - 63744: 0xD2F1, + 63828 - 63744: 0xD2F2, + 63829 - 63744: 0xD2F3, + 63830 - 63744: 0xD2F4, + 63831 - 63744: 0xD2F5, + 63832 - 63744: 0xD2F7, + 63833 - 63744: 0xD2F8, + 63834 - 63744: 0xD4E6, + 63835 - 63744: 0xD4FC, + 63836 - 63744: 0xD5A5, + 63837 - 63744: 0xD5AB, + 63838 - 63744: 0xD5AE, + 63839 - 63744: 0xD6B8, + 63840 - 63744: 0xD6CD, + 63841 - 63744: 0xD7CB, + 63842 - 63744: 0xD7E4, + 63843 - 63744: 0xDBC5, + 63844 - 63744: 0xDBE4, + 63845 - 63744: 0xDCA5, + 63846 - 63744: 0xDDA5, + 63847 - 63744: 0xDDD5, + 63848 - 63744: 0xDDF4, + 63849 - 63744: 0xDEFC, + 63850 - 63744: 0xDEFE, + 63851 - 63744: 0xDFB3, + 63852 - 63744: 0xDFE1, + 63853 - 63744: 0xDFE8, + 63854 - 63744: 0xE0F1, + 63855 - 63744: 0xE1AD, + 63856 - 63744: 0xE1ED, + 63857 - 63744: 0xE3F5, + 63858 - 63744: 0xE4A1, + 63859 - 63744: 0xE4A9, + 63860 - 63744: 0xE5AE, + 63861 - 63744: 0xE5B1, + 63862 - 63744: 0xE5B2, + 63863 - 63744: 0xE5B9, + 63864 - 63744: 0xE5BB, + 63865 - 63744: 0xE5BC, + 63866 - 63744: 0xE5C4, + 63867 - 63744: 0xE5CE, + 63868 - 63744: 0xE5D0, + 63869 - 63744: 0xE5D2, + 63870 - 63744: 0xE5D6, + 63871 - 63744: 0xE5FA, + 63872 - 63744: 0xE5FB, + 63873 - 63744: 0xE5FC, + 63874 - 63744: 0xE5FE, + 63875 - 63744: 0xE6A1, + 63876 - 63744: 0xE6A4, + 63877 - 63744: 0xE6A7, + 63878 - 63744: 0xE6AD, + 63879 - 63744: 0xE6AF, + 63880 - 63744: 0xE6B0, + 63881 - 63744: 0xE6B1, + 63882 - 63744: 0xE6B3, + 63883 - 63744: 0xE6B7, + 63884 - 63744: 0xE6B8, + 63885 - 63744: 0xE6BC, + 63886 - 63744: 0xE6C4, + 63887 - 63744: 0xE6C6, + 63888 - 63744: 0xE6C7, + 63889 - 63744: 0xE6CA, + 63890 - 63744: 0xE6D2, + 63891 - 63744: 0xE6D6, + 63892 - 63744: 0xE6D9, + 63893 - 63744: 0xE6DC, + 63894 - 63744: 0xE6DF, + 63895 - 63744: 0xE6E1, + 63896 - 63744: 0xE6E4, + 63897 - 63744: 0xE6E5, + 63898 - 63744: 0xE6E6, + 63899 - 63744: 0xE6E8, + 63900 - 63744: 0xE6EA, + 63901 - 63744: 0xE6EB, + 63902 - 63744: 0xE6EC, + 63903 - 63744: 0xE6EF, + 63904 - 63744: 0xE6F1, + 63905 - 63744: 0xE6F2, + 63906 - 63744: 0xE6F5, + 63907 - 63744: 0xE6F6, + 63908 - 63744: 0xE6F7, + 63909 - 63744: 0xE6F9, + 63910 - 63744: 0xE7A1, + 63911 - 63744: 0xE7A6, + 63912 - 63744: 0xE7A9, + 63913 - 63744: 0xE7AA, + 63914 - 63744: 0xE7AC, + 63915 - 63744: 0xE7AD, + 63916 - 63744: 0xE7B0, + 63917 - 63744: 0xE7BF, + 63918 - 63744: 0xE7C1, + 63919 - 63744: 0xE7C6, + 63920 - 63744: 0xE7C7, + 63921 - 63744: 0xE7CB, + 63922 - 63744: 0xE7CD, + 63923 - 63744: 0xE7CF, + 63924 - 63744: 0xE7D0, + 63925 - 63744: 0xE7D3, + 63926 - 63744: 0xE7DF, + 63927 - 63744: 0xE7E4, + 63928 - 63744: 0xE7E6, + 63929 - 63744: 0xE7F7, + 63930 - 63744: 0xE8E7, + 63931 - 63744: 0xE8E8, + 63932 - 63744: 0xE8F0, + 63933 - 63744: 0xE8F1, + 63934 - 63744: 0xE8F7, + 63935 - 63744: 0xE8F9, + 63936 - 63744: 0xE8FB, + 63937 - 63744: 0xE8FE, + 63938 - 63744: 0xE9A7, + 63939 - 63744: 0xE9AC, + 63940 - 63744: 0xE9CC, + 63941 - 63744: 0xE9F7, + 63942 - 63744: 0xEAC1, + 63943 - 63744: 0xEAE5, + 63944 - 63744: 0xEAF4, + 63945 - 63744: 0xEAF7, + 63946 - 63744: 0xEAFC, + 63947 - 63744: 0xEAFE, + 63948 - 63744: 0xEBA4, + 63949 - 63744: 0xEBA7, + 63950 - 63744: 0xEBA9, + 63951 - 63744: 0xEBAA, + 63952 - 63744: 0xEBBA, + 63953 - 63744: 0xEBBB, + 63954 - 63744: 0xEBBD, + 63955 - 63744: 0xEBC1, + 63956 - 63744: 0xEBC2, + 63957 - 63744: 0xEBC6, + 63958 - 63744: 0xEBC7, + 63959 - 63744: 0xEBCC, + 63960 - 63744: 0xEBCF, + 63961 - 63744: 0xEBD0, + 63962 - 63744: 0xEBD1, + 63963 - 63744: 0xEBD2, + 63964 - 63744: 0xEBD8, + 63965 - 63744: 0xECA6, + 63966 - 63744: 0xECA7, + 63967 - 63744: 0xECAA, + 63968 - 63744: 0xECAF, + 63969 - 63744: 0xECB0, + 63970 - 63744: 0xECB1, + 63971 - 63744: 0xECB2, + 63972 - 63744: 0xECB5, + 63973 - 63744: 0xECB8, + 63974 - 63744: 0xECBA, + 63975 - 63744: 0xECC0, + 63976 - 63744: 0xECC1, + 63977 - 63744: 0xECC5, + 63978 - 63744: 0xECC6, + 63979 - 63744: 0xECC9, + 63980 - 63744: 0xECCA, + 63981 - 63744: 0xECD5, + 63982 - 63744: 0xECDD, + 63983 - 63744: 0xECDE, + 63984 - 63744: 0xECE1, + 63985 - 63744: 0xECE4, + 63986 - 63744: 0xECE7, + 63987 - 63744: 0xECE8, + 63988 - 63744: 0xECF7, + 63989 - 63744: 0xECF8, + 63990 - 63744: 0xECFA, + 63991 - 63744: 0xEDA1, + 63992 - 63744: 0xEDA2, + 63993 - 63744: 0xEDA3, + 63994 - 63744: 0xEDEE, + 63995 - 63744: 0xEEDB, + 63996 - 63744: 0xF2BD, + 63997 - 63744: 0xF2FA, + 63998 - 63744: 0xF3B1, + 63999 - 63744: 0xF4A7, + 64000 - 63744: 0xF4EE, + 64001 - 63744: 0xF6F4, + 64002 - 63744: 0xF6F6, + 64003 - 63744: 0xF7B8, + 64004 - 63744: 0xF7C8, + 64005 - 63744: 0xF7D3, + 64006 - 63744: 0xF8DB, + 64007 - 63744: 0xF8F0, + 64008 - 63744: 0xFAA1, + 64009 - 63744: 0xFAA2, + 64010 - 63744: 0xFAE6, + 64011 - 63744: 0xFCA9, +} + +const encode6Low, encode6High = 65281, 65511 + +var encode6 = [...]uint16{ + 65281 - 65281: 0xA3A1, + 65282 - 65281: 0xA3A2, + 65283 - 65281: 0xA3A3, + 65284 - 65281: 0xA3A4, + 65285 - 65281: 0xA3A5, + 65286 - 65281: 0xA3A6, + 65287 - 65281: 0xA3A7, + 65288 - 65281: 0xA3A8, + 65289 - 65281: 0xA3A9, + 65290 - 65281: 0xA3AA, + 65291 - 65281: 0xA3AB, + 65292 - 65281: 0xA3AC, + 65293 - 65281: 0xA3AD, + 65294 - 65281: 0xA3AE, + 65295 - 65281: 0xA3AF, + 65296 - 65281: 0xA3B0, + 65297 - 65281: 0xA3B1, + 65298 - 65281: 0xA3B2, + 65299 - 65281: 0xA3B3, + 65300 - 65281: 0xA3B4, + 65301 - 65281: 0xA3B5, + 65302 - 65281: 0xA3B6, + 65303 - 65281: 0xA3B7, + 65304 - 65281: 0xA3B8, + 65305 - 65281: 0xA3B9, + 65306 - 65281: 0xA3BA, + 65307 - 65281: 0xA3BB, + 65308 - 65281: 0xA3BC, + 65309 - 65281: 0xA3BD, + 65310 - 65281: 0xA3BE, + 65311 - 65281: 0xA3BF, + 65312 - 65281: 0xA3C0, + 65313 - 65281: 0xA3C1, + 65314 - 65281: 0xA3C2, + 65315 - 65281: 0xA3C3, + 65316 - 65281: 0xA3C4, + 65317 - 65281: 0xA3C5, + 65318 - 65281: 0xA3C6, + 65319 - 65281: 0xA3C7, + 65320 - 65281: 0xA3C8, + 65321 - 65281: 0xA3C9, + 65322 - 65281: 0xA3CA, + 65323 - 65281: 0xA3CB, + 65324 - 65281: 0xA3CC, + 65325 - 65281: 0xA3CD, + 65326 - 65281: 0xA3CE, + 65327 - 65281: 0xA3CF, + 65328 - 65281: 0xA3D0, + 65329 - 65281: 0xA3D1, + 65330 - 65281: 0xA3D2, + 65331 - 65281: 0xA3D3, + 65332 - 65281: 0xA3D4, + 65333 - 65281: 0xA3D5, + 65334 - 65281: 0xA3D6, + 65335 - 65281: 0xA3D7, + 65336 - 65281: 0xA3D8, + 65337 - 65281: 0xA3D9, + 65338 - 65281: 0xA3DA, + 65339 - 65281: 0xA3DB, + 65340 - 65281: 0xA1AC, + 65341 - 65281: 0xA3DD, + 65342 - 65281: 0xA3DE, + 65343 - 65281: 0xA3DF, + 65344 - 65281: 0xA3E0, + 65345 - 65281: 0xA3E1, + 65346 - 65281: 0xA3E2, + 65347 - 65281: 0xA3E3, + 65348 - 65281: 0xA3E4, + 65349 - 65281: 0xA3E5, + 65350 - 65281: 0xA3E6, + 65351 - 65281: 0xA3E7, + 65352 - 65281: 0xA3E8, + 65353 - 65281: 0xA3E9, + 65354 - 65281: 0xA3EA, + 65355 - 65281: 0xA3EB, + 65356 - 65281: 0xA3EC, + 65357 - 65281: 0xA3ED, + 65358 - 65281: 0xA3EE, + 65359 - 65281: 0xA3EF, + 65360 - 65281: 0xA3F0, + 65361 - 65281: 0xA3F1, + 65362 - 65281: 0xA3F2, + 65363 - 65281: 0xA3F3, + 65364 - 65281: 0xA3F4, + 65365 - 65281: 0xA3F5, + 65366 - 65281: 0xA3F6, + 65367 - 65281: 0xA3F7, + 65368 - 65281: 0xA3F8, + 65369 - 65281: 0xA3F9, + 65370 - 65281: 0xA3FA, + 65371 - 65281: 0xA3FB, + 65372 - 65281: 0xA3FC, + 65373 - 65281: 0xA3FD, + 65374 - 65281: 0xA2A6, + 65504 - 65281: 0xA1CB, + 65505 - 65281: 0xA1CC, + 65506 - 65281: 0xA1FE, + 65507 - 65281: 0xA3FE, + 65509 - 65281: 0xA1CD, + 65510 - 65281: 0xA3DC, +} diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go b/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go new file mode 100644 index 000000000..1fcddde08 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go @@ -0,0 +1,199 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package traditionalchinese + +import ( + "unicode/utf8" + + "golang.org/x/text/encoding" + "golang.org/x/text/encoding/internal" + "golang.org/x/text/encoding/internal/identifier" + "golang.org/x/text/transform" +) + +// All is a list of all defined encodings in this package. +var All = []encoding.Encoding{Big5} + +// Big5 is the Big5 encoding, also known as Code Page 950. +var Big5 encoding.Encoding = &big5 + +var big5 = internal.Encoding{ + &internal.SimpleEncoding{big5Decoder{}, big5Encoder{}}, + "Big5", + identifier.Big5, +} + +type big5Decoder struct{ transform.NopResetter } + +func (big5Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size, s := rune(0), 0, "" +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + case 0x81 <= c0 && c0 < 0xff: + if nSrc+1 >= len(src) { + if !atEOF { + err = transform.ErrShortSrc + break loop + } + r, size = utf8.RuneError, 1 + goto write + } + c1 := src[nSrc+1] + switch { + case 0x40 <= c1 && c1 < 0x7f: + c1 -= 0x40 + case 0xa1 <= c1 && c1 < 0xff: + c1 -= 0x62 + case c1 < 0x40: + r, size = utf8.RuneError, 1 + goto write + default: + r, size = utf8.RuneError, 2 + goto write + } + r, size = '\ufffd', 2 + if i := int(c0-0x81)*157 + int(c1); i < len(decode) { + if 1133 <= i && i < 1167 { + // The two-rune special cases for LATIN CAPITAL / SMALL E WITH CIRCUMFLEX + // AND MACRON / CARON are from http://encoding.spec.whatwg.org/#big5 + switch i { + case 1133: + s = "\u00CA\u0304" + goto writeStr + case 1135: + s = "\u00CA\u030C" + goto writeStr + case 1164: + s = "\u00EA\u0304" + goto writeStr + case 1166: + s = "\u00EA\u030C" + goto writeStr + } + } + r = rune(decode[i]) + if r == 0 { + r = '\ufffd' + } + } + + default: + r, size = utf8.RuneError, 1 + } + + write: + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + continue loop + + writeStr: + if nDst+len(s) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += copy(dst[nDst:], s) + continue loop + } + return nDst, nSrc, err +} + +type big5Encoder struct{ transform.NopResetter } + +func (big5Encoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 + for ; nSrc < len(src); nSrc += size { + r = rune(src[nSrc]) + + // Decode a 1-byte rune. + if r < utf8.RuneSelf { + size = 1 + if nDst >= len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst] = uint8(r) + nDst++ + continue + + } else { + // Decode a multi-byte rune. + r, size = utf8.DecodeRune(src[nSrc:]) + if size == 1 { + // All valid runes of size 1 (those below utf8.RuneSelf) were + // handled above. We have invalid UTF-8 or we haven't seen the + // full character yet. + if !atEOF && !utf8.FullRune(src[nSrc:]) { + err = transform.ErrShortSrc + break + } + } + } + + if r >= utf8.RuneSelf { + // func init checks that the switch covers all tables. + switch { + case encode0Low <= r && r < encode0High: + if r = rune(encode0[r-encode0Low]); r != 0 { + goto write2 + } + case encode1Low <= r && r < encode1High: + if r = rune(encode1[r-encode1Low]); r != 0 { + goto write2 + } + case encode2Low <= r && r < encode2High: + if r = rune(encode2[r-encode2Low]); r != 0 { + goto write2 + } + case encode3Low <= r && r < encode3High: + if r = rune(encode3[r-encode3Low]); r != 0 { + goto write2 + } + case encode4Low <= r && r < encode4High: + if r = rune(encode4[r-encode4Low]); r != 0 { + goto write2 + } + case encode5Low <= r && r < encode5High: + if r = rune(encode5[r-encode5Low]); r != 0 { + goto write2 + } + case encode6Low <= r && r < encode6High: + if r = rune(encode6[r-encode6Low]); r != 0 { + goto write2 + } + case encode7Low <= r && r < encode7High: + if r = rune(encode7[r-encode7Low]); r != 0 { + goto write2 + } + } + err = internal.ErrASCIIReplacement + break + } + + write2: + if nDst+2 > len(dst) { + err = transform.ErrShortDst + break + } + dst[nDst+0] = uint8(r >> 8) + dst[nDst+1] = uint8(r) + nDst += 2 + continue + } + return nDst, nSrc, err +} + +func init() { + // Check that the hard-coded encode switch covers all tables. + if numEncodeTables != 8 { + panic("bad numEncodeTables") + } +} diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go b/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go new file mode 100644 index 000000000..d909e38e5 --- /dev/null +++ b/vendor/golang.org/x/text/encoding/traditionalchinese/tables.go @@ -0,0 +1,37142 @@ +// generated by go run maketables.go; DO NOT EDIT + +// Package traditionalchinese provides Traditional Chinese encodings such as Big5. +package traditionalchinese // import "golang.org/x/text/encoding/traditionalchinese" + +// decode is the decoding table from Big5 code to Unicode. +// It is defined at http://encoding.spec.whatwg.org/index-big5.txt +var decode = [...]uint32{ + 942: 0x000043F0, + 943: 0x00004C32, + 944: 0x00004603, + 945: 0x000045A6, + 946: 0x00004578, + 947: 0x00027267, + 948: 0x00004D77, + 949: 0x000045B3, + 950: 0x00027CB1, + 951: 0x00004CE2, + 952: 0x00027CC5, + 953: 0x00003B95, + 954: 0x00004736, + 955: 0x00004744, + 956: 0x00004C47, + 957: 0x00004C40, + 958: 0x000242BF, + 959: 0x00023617, + 960: 0x00027352, + 961: 0x00026E8B, + 962: 0x000270D2, + 963: 0x00004C57, + 964: 0x0002A351, + 965: 0x0000474F, + 966: 0x000045DA, + 967: 0x00004C85, + 968: 0x00027C6C, + 969: 0x00004D07, + 970: 0x00004AA4, + 971: 0x000046A1, + 972: 0x00026B23, + 973: 0x00007225, + 974: 0x00025A54, + 975: 0x00021A63, + 976: 0x00023E06, + 977: 0x00023F61, + 978: 0x0000664D, + 979: 0x000056FB, + 981: 0x00007D95, + 982: 0x0000591D, + 983: 0x00028BB9, + 984: 0x00003DF4, + 985: 0x00009734, + 986: 0x00027BEF, + 987: 0x00005BDB, + 988: 0x00021D5E, + 989: 0x00005AA4, + 990: 0x00003625, + 991: 0x00029EB0, + 992: 0x00005AD1, + 993: 0x00005BB7, + 994: 0x00005CFC, + 995: 0x0000676E, + 996: 0x00008593, + 997: 0x00029945, + 998: 0x00007461, + 999: 0x0000749D, + 1000: 0x00003875, + 1001: 0x00021D53, + 1002: 0x0002369E, + 1003: 0x00026021, + 1004: 0x00003EEC, + 1005: 0x000258DE, + 1006: 0x00003AF5, + 1007: 0x00007AFC, + 1008: 0x00009F97, + 1009: 0x00024161, + 1010: 0x0002890D, + 1011: 0x000231EA, + 1012: 0x00020A8A, + 1013: 0x0002325E, + 1014: 0x0000430A, + 1015: 0x00008484, + 1016: 0x00009F96, + 1017: 0x0000942F, + 1018: 0x00004930, + 1019: 0x00008613, + 1020: 0x00005896, + 1021: 0x0000974A, + 1022: 0x00009218, + 1023: 0x000079D0, + 1024: 0x00007A32, + 1025: 0x00006660, + 1026: 0x00006A29, + 1027: 0x0000889D, + 1028: 0x0000744C, + 1029: 0x00007BC5, + 1030: 0x00006782, + 1031: 0x00007A2C, + 1032: 0x0000524F, + 1033: 0x00009046, + 1034: 0x000034E6, + 1035: 0x000073C4, + 1036: 0x00025DB9, + 1037: 0x000074C6, + 1038: 0x00009FC7, + 1039: 0x000057B3, + 1040: 0x0000492F, + 1041: 0x0000544C, + 1042: 0x00004131, + 1043: 0x0002368E, + 1044: 0x00005818, + 1045: 0x00007A72, + 1046: 0x00027B65, + 1047: 0x00008B8F, + 1048: 0x000046AE, + 1049: 0x00026E88, + 1050: 0x00004181, + 1051: 0x00025D99, + 1052: 0x00007BAE, + 1053: 0x000224BC, + 1054: 0x00009FC8, + 1055: 0x000224C1, + 1056: 0x000224C9, + 1057: 0x000224CC, + 1058: 0x00009FC9, + 1059: 0x00008504, + 1060: 0x000235BB, + 1061: 0x000040B4, + 1062: 0x00009FCA, + 1063: 0x000044E1, + 1064: 0x0002ADFF, + 1065: 0x000062C1, + 1066: 0x0000706E, + 1067: 0x00009FCB, + 1099: 0x000031C0, + 1100: 0x000031C1, + 1101: 0x000031C2, + 1102: 0x000031C3, + 1103: 0x000031C4, + 1104: 0x0002010C, + 1105: 0x000031C5, + 1106: 0x000200D1, + 1107: 0x000200CD, + 1108: 0x000031C6, + 1109: 0x000031C7, + 1110: 0x000200CB, + 1111: 0x00021FE8, + 1112: 0x000031C8, + 1113: 0x000200CA, + 1114: 0x000031C9, + 1115: 0x000031CA, + 1116: 0x000031CB, + 1117: 0x000031CC, + 1118: 0x0002010E, + 1119: 0x000031CD, + 1120: 0x000031CE, + 1121: 0x00000100, + 1122: 0x000000C1, + 1123: 0x000001CD, + 1124: 0x000000C0, + 1125: 0x00000112, + 1126: 0x000000C9, + 1127: 0x0000011A, + 1128: 0x000000C8, + 1129: 0x0000014C, + 1130: 0x000000D3, + 1131: 0x000001D1, + 1132: 0x000000D2, + 1134: 0x00001EBE, + 1136: 0x00001EC0, + 1137: 0x000000CA, + 1138: 0x00000101, + 1139: 0x000000E1, + 1140: 0x000001CE, + 1141: 0x000000E0, + 1142: 0x00000251, + 1143: 0x00000113, + 1144: 0x000000E9, + 1145: 0x0000011B, + 1146: 0x000000E8, + 1147: 0x0000012B, + 1148: 0x000000ED, + 1149: 0x000001D0, + 1150: 0x000000EC, + 1151: 0x0000014D, + 1152: 0x000000F3, + 1153: 0x000001D2, + 1154: 0x000000F2, + 1155: 0x0000016B, + 1156: 0x000000FA, + 1157: 0x000001D4, + 1158: 0x000000F9, + 1159: 0x000001D6, + 1160: 0x000001D8, + 1161: 0x000001DA, + 1162: 0x000001DC, + 1163: 0x000000FC, + 1165: 0x00001EBF, + 1167: 0x00001EC1, + 1168: 0x000000EA, + 1169: 0x00000261, + 1170: 0x000023DA, + 1171: 0x000023DB, + 1256: 0x0002A3A9, + 1257: 0x00021145, + 1259: 0x0000650A, + 1262: 0x00004E3D, + 1263: 0x00006EDD, + 1264: 0x00009D4E, + 1265: 0x000091DF, + 1268: 0x00027735, + 1269: 0x00006491, + 1270: 0x00004F1A, + 1271: 0x00004F28, + 1272: 0x00004FA8, + 1273: 0x00005156, + 1274: 0x00005174, + 1275: 0x0000519C, + 1276: 0x000051E4, + 1277: 0x000052A1, + 1278: 0x000052A8, + 1279: 0x0000533B, + 1280: 0x0000534E, + 1281: 0x000053D1, + 1282: 0x000053D8, + 1283: 0x000056E2, + 1284: 0x000058F0, + 1285: 0x00005904, + 1286: 0x00005907, + 1287: 0x00005932, + 1288: 0x00005934, + 1289: 0x00005B66, + 1290: 0x00005B9E, + 1291: 0x00005B9F, + 1292: 0x00005C9A, + 1293: 0x00005E86, + 1294: 0x0000603B, + 1295: 0x00006589, + 1296: 0x000067FE, + 1297: 0x00006804, + 1298: 0x00006865, + 1299: 0x00006D4E, + 1300: 0x000070BC, + 1301: 0x00007535, + 1302: 0x00007EA4, + 1303: 0x00007EAC, + 1304: 0x00007EBA, + 1305: 0x00007EC7, + 1306: 0x00007ECF, + 1307: 0x00007EDF, + 1308: 0x00007F06, + 1309: 0x00007F37, + 1310: 0x0000827A, + 1311: 0x000082CF, + 1312: 0x0000836F, + 1313: 0x000089C6, + 1314: 0x00008BBE, + 1315: 0x00008BE2, + 1316: 0x00008F66, + 1317: 0x00008F67, + 1318: 0x00008F6E, + 1319: 0x00007411, + 1320: 0x00007CFC, + 1321: 0x00007DCD, + 1322: 0x00006946, + 1323: 0x00007AC9, + 1324: 0x00005227, + 1329: 0x0000918C, + 1330: 0x000078B8, + 1331: 0x0000915E, + 1332: 0x000080BC, + 1334: 0x00008D0B, + 1335: 0x000080F6, + 1336: 0x000209E7, + 1339: 0x0000809F, + 1340: 0x00009EC7, + 1341: 0x00004CCD, + 1342: 0x00009DC9, + 1343: 0x00009E0C, + 1344: 0x00004C3E, + 1345: 0x00029DF6, + 1346: 0x0002700E, + 1347: 0x00009E0A, + 1348: 0x0002A133, + 1349: 0x000035C1, + 1351: 0x00006E9A, + 1352: 0x0000823E, + 1353: 0x00007519, + 1355: 0x00004911, + 1356: 0x00009A6C, + 1357: 0x00009A8F, + 1358: 0x00009F99, + 1359: 0x00007987, + 1360: 0x0002846C, + 1361: 0x00021DCA, + 1362: 0x000205D0, + 1363: 0x00022AE6, + 1364: 0x00004E24, + 1365: 0x00004E81, + 1366: 0x00004E80, + 1367: 0x00004E87, + 1368: 0x00004EBF, + 1369: 0x00004EEB, + 1370: 0x00004F37, + 1371: 0x0000344C, + 1372: 0x00004FBD, + 1373: 0x00003E48, + 1374: 0x00005003, + 1375: 0x00005088, + 1376: 0x0000347D, + 1377: 0x00003493, + 1378: 0x000034A5, + 1379: 0x00005186, + 1380: 0x00005905, + 1381: 0x000051DB, + 1382: 0x000051FC, + 1383: 0x00005205, + 1384: 0x00004E89, + 1385: 0x00005279, + 1386: 0x00005290, + 1387: 0x00005327, + 1388: 0x000035C7, + 1389: 0x000053A9, + 1390: 0x00003551, + 1391: 0x000053B0, + 1392: 0x00003553, + 1393: 0x000053C2, + 1394: 0x00005423, + 1395: 0x0000356D, + 1396: 0x00003572, + 1397: 0x00003681, + 1398: 0x00005493, + 1399: 0x000054A3, + 1400: 0x000054B4, + 1401: 0x000054B9, + 1402: 0x000054D0, + 1403: 0x000054EF, + 1404: 0x00005518, + 1405: 0x00005523, + 1406: 0x00005528, + 1407: 0x00003598, + 1408: 0x0000553F, + 1409: 0x000035A5, + 1410: 0x000035BF, + 1411: 0x000055D7, + 1412: 0x000035C5, + 1413: 0x00027D84, + 1414: 0x00005525, + 1416: 0x00020C42, + 1417: 0x00020D15, + 1418: 0x0002512B, + 1419: 0x00005590, + 1420: 0x00022CC6, + 1421: 0x000039EC, + 1422: 0x00020341, + 1423: 0x00008E46, + 1424: 0x00024DB8, + 1425: 0x000294E5, + 1426: 0x00004053, + 1427: 0x000280BE, + 1428: 0x0000777A, + 1429: 0x00022C38, + 1430: 0x00003A34, + 1431: 0x000047D5, + 1432: 0x0002815D, + 1433: 0x000269F2, + 1434: 0x00024DEA, + 1435: 0x000064DD, + 1436: 0x00020D7C, + 1437: 0x00020FB4, + 1438: 0x00020CD5, + 1439: 0x000210F4, + 1440: 0x0000648D, + 1441: 0x00008E7E, + 1442: 0x00020E96, + 1443: 0x00020C0B, + 1444: 0x00020F64, + 1445: 0x00022CA9, + 1446: 0x00028256, + 1447: 0x000244D3, + 1449: 0x00020D46, + 1450: 0x00029A4D, + 1451: 0x000280E9, + 1452: 0x000047F4, + 1453: 0x00024EA7, + 1454: 0x00022CC2, + 1455: 0x00009AB2, + 1456: 0x00003A67, + 1457: 0x000295F4, + 1458: 0x00003FED, + 1459: 0x00003506, + 1460: 0x000252C7, + 1461: 0x000297D4, + 1462: 0x000278C8, + 1463: 0x00022D44, + 1464: 0x00009D6E, + 1465: 0x00009815, + 1467: 0x000043D9, + 1468: 0x000260A5, + 1469: 0x000064B4, + 1470: 0x000054E3, + 1471: 0x00022D4C, + 1472: 0x00022BCA, + 1473: 0x00021077, + 1474: 0x000039FB, + 1475: 0x0002106F, + 1476: 0x000266DA, + 1477: 0x00026716, + 1478: 0x000279A0, + 1479: 0x000064EA, + 1480: 0x00025052, + 1481: 0x00020C43, + 1482: 0x00008E68, + 1483: 0x000221A1, + 1484: 0x00028B4C, + 1485: 0x00020731, + 1487: 0x0000480B, + 1488: 0x000201A9, + 1489: 0x00003FFA, + 1490: 0x00005873, + 1491: 0x00022D8D, + 1493: 0x000245C8, + 1494: 0x000204FC, + 1495: 0x00026097, + 1496: 0x00020F4C, + 1497: 0x00020D96, + 1498: 0x00005579, + 1499: 0x000040BB, + 1500: 0x000043BA, + 1502: 0x00004AB4, + 1503: 0x00022A66, + 1504: 0x0002109D, + 1505: 0x000081AA, + 1506: 0x000098F5, + 1507: 0x00020D9C, + 1508: 0x00006379, + 1509: 0x000039FE, + 1510: 0x00022775, + 1511: 0x00008DC0, + 1512: 0x000056A1, + 1513: 0x0000647C, + 1514: 0x00003E43, + 1516: 0x0002A601, + 1517: 0x00020E09, + 1518: 0x00022ACF, + 1519: 0x00022CC9, + 1521: 0x000210C8, + 1522: 0x000239C2, + 1523: 0x00003992, + 1524: 0x00003A06, + 1525: 0x0002829B, + 1526: 0x00003578, + 1527: 0x00025E49, + 1528: 0x000220C7, + 1529: 0x00005652, + 1530: 0x00020F31, + 1531: 0x00022CB2, + 1532: 0x00029720, + 1533: 0x000034BC, + 1534: 0x00006C3D, + 1535: 0x00024E3B, + 1538: 0x00027574, + 1539: 0x00022E8B, + 1540: 0x00022208, + 1541: 0x0002A65B, + 1542: 0x00028CCD, + 1543: 0x00020E7A, + 1544: 0x00020C34, + 1545: 0x0002681C, + 1546: 0x00007F93, + 1547: 0x000210CF, + 1548: 0x00022803, + 1549: 0x00022939, + 1550: 0x000035FB, + 1551: 0x000251E3, + 1552: 0x00020E8C, + 1553: 0x00020F8D, + 1554: 0x00020EAA, + 1555: 0x00003F93, + 1556: 0x00020F30, + 1557: 0x00020D47, + 1558: 0x0002114F, + 1559: 0x00020E4C, + 1561: 0x00020EAB, + 1562: 0x00020BA9, + 1563: 0x00020D48, + 1564: 0x000210C0, + 1565: 0x0002113D, + 1566: 0x00003FF9, + 1567: 0x00022696, + 1568: 0x00006432, + 1569: 0x00020FAD, + 1570: 0x000233F4, + 1571: 0x00027639, + 1572: 0x00022BCE, + 1573: 0x00020D7E, + 1574: 0x00020D7F, + 1575: 0x00022C51, + 1576: 0x00022C55, + 1577: 0x00003A18, + 1578: 0x00020E98, + 1579: 0x000210C7, + 1580: 0x00020F2E, + 1581: 0x0002A632, + 1582: 0x00026B50, + 1583: 0x00028CD2, + 1584: 0x00028D99, + 1585: 0x00028CCA, + 1586: 0x000095AA, + 1587: 0x000054CC, + 1588: 0x000082C4, + 1589: 0x000055B9, + 1591: 0x00029EC3, + 1592: 0x00009C26, + 1593: 0x00009AB6, + 1594: 0x0002775E, + 1595: 0x00022DEE, + 1596: 0x00007140, + 1597: 0x0000816D, + 1598: 0x000080EC, + 1599: 0x00005C1C, + 1600: 0x00026572, + 1601: 0x00008134, + 1602: 0x00003797, + 1603: 0x0000535F, + 1604: 0x000280BD, + 1605: 0x000091B6, + 1606: 0x00020EFA, + 1607: 0x00020E0F, + 1608: 0x00020E77, + 1609: 0x00020EFB, + 1610: 0x000035DD, + 1611: 0x00024DEB, + 1612: 0x00003609, + 1613: 0x00020CD6, + 1614: 0x000056AF, + 1615: 0x000227B5, + 1616: 0x000210C9, + 1617: 0x00020E10, + 1618: 0x00020E78, + 1619: 0x00021078, + 1620: 0x00021148, + 1621: 0x00028207, + 1622: 0x00021455, + 1623: 0x00020E79, + 1624: 0x00024E50, + 1625: 0x00022DA4, + 1626: 0x00005A54, + 1627: 0x0002101D, + 1628: 0x0002101E, + 1629: 0x000210F5, + 1630: 0x000210F6, + 1631: 0x0000579C, + 1632: 0x00020E11, + 1633: 0x00027694, + 1634: 0x000282CD, + 1635: 0x00020FB5, + 1636: 0x00020E7B, + 1637: 0x0002517E, + 1638: 0x00003703, + 1639: 0x00020FB6, + 1640: 0x00021180, + 1641: 0x000252D8, + 1642: 0x0002A2BD, + 1643: 0x000249DA, + 1644: 0x0002183A, + 1645: 0x00024177, + 1646: 0x0002827C, + 1647: 0x00005899, + 1648: 0x00005268, + 1649: 0x0000361A, + 1650: 0x0002573D, + 1651: 0x00007BB2, + 1652: 0x00005B68, + 1653: 0x00004800, + 1654: 0x00004B2C, + 1655: 0x00009F27, + 1656: 0x000049E7, + 1657: 0x00009C1F, + 1658: 0x00009B8D, + 1659: 0x00025B74, + 1660: 0x0002313D, + 1661: 0x000055FB, + 1662: 0x000035F2, + 1663: 0x00005689, + 1664: 0x00004E28, + 1665: 0x00005902, + 1666: 0x00021BC1, + 1667: 0x0002F878, + 1668: 0x00009751, + 1669: 0x00020086, + 1670: 0x00004E5B, + 1671: 0x00004EBB, + 1672: 0x0000353E, + 1673: 0x00005C23, + 1674: 0x00005F51, + 1675: 0x00005FC4, + 1676: 0x000038FA, + 1677: 0x0000624C, + 1678: 0x00006535, + 1679: 0x00006B7A, + 1680: 0x00006C35, + 1681: 0x00006C3A, + 1682: 0x0000706C, + 1683: 0x0000722B, + 1684: 0x00004E2C, + 1685: 0x000072AD, + 1686: 0x000248E9, + 1687: 0x00007F52, + 1688: 0x0000793B, + 1689: 0x00007CF9, + 1690: 0x00007F53, + 1691: 0x0002626A, + 1692: 0x000034C1, + 1694: 0x0002634B, + 1695: 0x00008002, + 1696: 0x00008080, + 1697: 0x00026612, + 1698: 0x00026951, + 1699: 0x0000535D, + 1700: 0x00008864, + 1701: 0x000089C1, + 1702: 0x000278B2, + 1703: 0x00008BA0, + 1704: 0x00008D1D, + 1705: 0x00009485, + 1706: 0x00009578, + 1707: 0x0000957F, + 1708: 0x000095E8, + 1709: 0x00028E0F, + 1710: 0x000097E6, + 1711: 0x00009875, + 1712: 0x000098CE, + 1713: 0x000098DE, + 1714: 0x00009963, + 1715: 0x00029810, + 1716: 0x00009C7C, + 1717: 0x00009E1F, + 1718: 0x00009EC4, + 1719: 0x00006B6F, + 1720: 0x0000F907, + 1721: 0x00004E37, + 1722: 0x00020087, + 1723: 0x0000961D, + 1724: 0x00006237, + 1725: 0x000094A2, + 1727: 0x0000503B, + 1728: 0x00006DFE, + 1729: 0x00029C73, + 1730: 0x00009FA6, + 1731: 0x00003DC9, + 1732: 0x0000888F, + 1733: 0x0002414E, + 1734: 0x00007077, + 1735: 0x00005CF5, + 1736: 0x00004B20, + 1737: 0x000251CD, + 1738: 0x00003559, + 1739: 0x00025D30, + 1740: 0x00006122, + 1741: 0x00028A32, + 1742: 0x00008FA7, + 1743: 0x000091F6, + 1744: 0x00007191, + 1745: 0x00006719, + 1746: 0x000073BA, + 1747: 0x00023281, + 1748: 0x0002A107, + 1749: 0x00003C8B, + 1750: 0x00021980, + 1751: 0x00004B10, + 1752: 0x000078E4, + 1753: 0x00007402, + 1754: 0x000051AE, + 1755: 0x0002870F, + 1756: 0x00004009, + 1757: 0x00006A63, + 1758: 0x0002A2BA, + 1759: 0x00004223, + 1760: 0x0000860F, + 1761: 0x00020A6F, + 1762: 0x00007A2A, + 1763: 0x00029947, + 1764: 0x00028AEA, + 1765: 0x00009755, + 1766: 0x0000704D, + 1767: 0x00005324, + 1768: 0x0002207E, + 1769: 0x000093F4, + 1770: 0x000076D9, + 1771: 0x000289E3, + 1772: 0x00009FA7, + 1773: 0x000077DD, + 1774: 0x00004EA3, + 1775: 0x00004FF0, + 1776: 0x000050BC, + 1777: 0x00004E2F, + 1778: 0x00004F17, + 1779: 0x00009FA8, + 1780: 0x00005434, + 1781: 0x00007D8B, + 1782: 0x00005892, + 1783: 0x000058D0, + 1784: 0x00021DB6, + 1785: 0x00005E92, + 1786: 0x00005E99, + 1787: 0x00005FC2, + 1788: 0x00022712, + 1789: 0x0000658B, + 1790: 0x000233F9, + 1791: 0x00006919, + 1792: 0x00006A43, + 1793: 0x00023C63, + 1794: 0x00006CFF, + 1796: 0x00007200, + 1797: 0x00024505, + 1798: 0x0000738C, + 1799: 0x00003EDB, + 1800: 0x00024A13, + 1801: 0x00005B15, + 1802: 0x000074B9, + 1803: 0x00008B83, + 1804: 0x00025CA4, + 1805: 0x00025695, + 1806: 0x00007A93, + 1807: 0x00007BEC, + 1808: 0x00007CC3, + 1809: 0x00007E6C, + 1810: 0x000082F8, + 1811: 0x00008597, + 1812: 0x00009FA9, + 1813: 0x00008890, + 1814: 0x00009FAA, + 1815: 0x00008EB9, + 1816: 0x00009FAB, + 1817: 0x00008FCF, + 1818: 0x0000855F, + 1819: 0x000099E0, + 1820: 0x00009221, + 1821: 0x00009FAC, + 1822: 0x00028DB9, + 1823: 0x0002143F, + 1824: 0x00004071, + 1825: 0x000042A2, + 1826: 0x00005A1A, + 1830: 0x00009868, + 1831: 0x0000676B, + 1832: 0x00004276, + 1833: 0x0000573D, + 1835: 0x000085D6, + 1836: 0x0002497B, + 1837: 0x000082BF, + 1838: 0x0002710D, + 1839: 0x00004C81, + 1840: 0x00026D74, + 1841: 0x00005D7B, + 1842: 0x00026B15, + 1843: 0x00026FBE, + 1844: 0x00009FAD, + 1845: 0x00009FAE, + 1846: 0x00005B96, + 1847: 0x00009FAF, + 1848: 0x000066E7, + 1849: 0x00007E5B, + 1850: 0x00006E57, + 1851: 0x000079CA, + 1852: 0x00003D88, + 1853: 0x000044C3, + 1854: 0x00023256, + 1855: 0x00022796, + 1856: 0x0000439A, + 1857: 0x00004536, + 1859: 0x00005CD5, + 1860: 0x00023B1A, + 1861: 0x00008AF9, + 1862: 0x00005C78, + 1863: 0x00003D12, + 1864: 0x00023551, + 1865: 0x00005D78, + 1866: 0x00009FB2, + 1867: 0x00007157, + 1868: 0x00004558, + 1869: 0x000240EC, + 1870: 0x00021E23, + 1871: 0x00004C77, + 1872: 0x00003978, + 1873: 0x0000344A, + 1874: 0x000201A4, + 1875: 0x00026C41, + 1876: 0x00008ACC, + 1877: 0x00004FB4, + 1878: 0x00020239, + 1879: 0x000059BF, + 1880: 0x0000816C, + 1881: 0x00009856, + 1882: 0x000298FA, + 1883: 0x00005F3B, + 1884: 0x00020B9F, + 1886: 0x000221C1, + 1887: 0x0002896D, + 1888: 0x00004102, + 1889: 0x000046BB, + 1890: 0x00029079, + 1891: 0x00003F07, + 1892: 0x00009FB3, + 1893: 0x0002A1B5, + 1894: 0x000040F8, + 1895: 0x000037D6, + 1896: 0x000046F7, + 1897: 0x00026C46, + 1898: 0x0000417C, + 1899: 0x000286B2, + 1900: 0x000273FF, + 1901: 0x0000456D, + 1902: 0x000038D4, + 1903: 0x0002549A, + 1904: 0x00004561, + 1905: 0x0000451B, + 1906: 0x00004D89, + 1907: 0x00004C7B, + 1908: 0x00004D76, + 1909: 0x000045EA, + 1910: 0x00003FC8, + 1911: 0x00024B0F, + 1912: 0x00003661, + 1913: 0x000044DE, + 1914: 0x000044BD, + 1915: 0x000041ED, + 1916: 0x00005D3E, + 1917: 0x00005D48, + 1918: 0x00005D56, + 1919: 0x00003DFC, + 1920: 0x0000380F, + 1921: 0x00005DA4, + 1922: 0x00005DB9, + 1923: 0x00003820, + 1924: 0x00003838, + 1925: 0x00005E42, + 1926: 0x00005EBD, + 1927: 0x00005F25, + 1928: 0x00005F83, + 1929: 0x00003908, + 1930: 0x00003914, + 1931: 0x0000393F, + 1932: 0x0000394D, + 1933: 0x000060D7, + 1934: 0x0000613D, + 1935: 0x00005CE5, + 1936: 0x00003989, + 1937: 0x000061B7, + 1938: 0x000061B9, + 1939: 0x000061CF, + 1940: 0x000039B8, + 1941: 0x0000622C, + 1942: 0x00006290, + 1943: 0x000062E5, + 1944: 0x00006318, + 1945: 0x000039F8, + 1946: 0x000056B1, + 1947: 0x00003A03, + 1948: 0x000063E2, + 1949: 0x000063FB, + 1950: 0x00006407, + 1951: 0x0000645A, + 1952: 0x00003A4B, + 1953: 0x000064C0, + 1954: 0x00005D15, + 1955: 0x00005621, + 1956: 0x00009F9F, + 1957: 0x00003A97, + 1958: 0x00006586, + 1959: 0x00003ABD, + 1960: 0x000065FF, + 1961: 0x00006653, + 1962: 0x00003AF2, + 1963: 0x00006692, + 1964: 0x00003B22, + 1965: 0x00006716, + 1966: 0x00003B42, + 1967: 0x000067A4, + 1968: 0x00006800, + 1969: 0x00003B58, + 1970: 0x0000684A, + 1971: 0x00006884, + 1972: 0x00003B72, + 1973: 0x00003B71, + 1974: 0x00003B7B, + 1975: 0x00006909, + 1976: 0x00006943, + 1977: 0x0000725C, + 1978: 0x00006964, + 1979: 0x0000699F, + 1980: 0x00006985, + 1981: 0x00003BBC, + 1982: 0x000069D6, + 1983: 0x00003BDD, + 1984: 0x00006A65, + 1985: 0x00006A74, + 1986: 0x00006A71, + 1987: 0x00006A82, + 1988: 0x00003BEC, + 1989: 0x00006A99, + 1990: 0x00003BF2, + 1991: 0x00006AAB, + 1992: 0x00006AB5, + 1993: 0x00006AD4, + 1994: 0x00006AF6, + 1995: 0x00006B81, + 1996: 0x00006BC1, + 1997: 0x00006BEA, + 1998: 0x00006C75, + 1999: 0x00006CAA, + 2000: 0x00003CCB, + 2001: 0x00006D02, + 2002: 0x00006D06, + 2003: 0x00006D26, + 2004: 0x00006D81, + 2005: 0x00003CEF, + 2006: 0x00006DA4, + 2007: 0x00006DB1, + 2008: 0x00006E15, + 2009: 0x00006E18, + 2010: 0x00006E29, + 2011: 0x00006E86, + 2012: 0x000289C0, + 2013: 0x00006EBB, + 2014: 0x00006EE2, + 2015: 0x00006EDA, + 2016: 0x00009F7F, + 2017: 0x00006EE8, + 2018: 0x00006EE9, + 2019: 0x00006F24, + 2020: 0x00006F34, + 2021: 0x00003D46, + 2022: 0x00023F41, + 2023: 0x00006F81, + 2024: 0x00006FBE, + 2025: 0x00003D6A, + 2026: 0x00003D75, + 2027: 0x000071B7, + 2028: 0x00005C99, + 2029: 0x00003D8A, + 2030: 0x0000702C, + 2031: 0x00003D91, + 2032: 0x00007050, + 2033: 0x00007054, + 2034: 0x0000706F, + 2035: 0x0000707F, + 2036: 0x00007089, + 2037: 0x00020325, + 2038: 0x000043C1, + 2039: 0x000035F1, + 2040: 0x00020ED8, + 2041: 0x00023ED7, + 2042: 0x000057BE, + 2043: 0x00026ED3, + 2044: 0x0000713E, + 2045: 0x000257E0, + 2046: 0x0000364E, + 2047: 0x000069A2, + 2048: 0x00028BE9, + 2049: 0x00005B74, + 2050: 0x00007A49, + 2051: 0x000258E1, + 2052: 0x000294D9, + 2053: 0x00007A65, + 2054: 0x00007A7D, + 2055: 0x000259AC, + 2056: 0x00007ABB, + 2057: 0x00007AB0, + 2058: 0x00007AC2, + 2059: 0x00007AC3, + 2060: 0x000071D1, + 2061: 0x0002648D, + 2062: 0x000041CA, + 2063: 0x00007ADA, + 2064: 0x00007ADD, + 2065: 0x00007AEA, + 2066: 0x000041EF, + 2067: 0x000054B2, + 2068: 0x00025C01, + 2069: 0x00007B0B, + 2070: 0x00007B55, + 2071: 0x00007B29, + 2072: 0x0002530E, + 2073: 0x00025CFE, + 2074: 0x00007BA2, + 2075: 0x00007B6F, + 2076: 0x0000839C, + 2077: 0x00025BB4, + 2078: 0x00026C7F, + 2079: 0x00007BD0, + 2080: 0x00008421, + 2081: 0x00007B92, + 2082: 0x00007BB8, + 2083: 0x00025D20, + 2084: 0x00003DAD, + 2085: 0x00025C65, + 2086: 0x00008492, + 2087: 0x00007BFA, + 2088: 0x00007C06, + 2089: 0x00007C35, + 2090: 0x00025CC1, + 2091: 0x00007C44, + 2092: 0x00007C83, + 2093: 0x00024882, + 2094: 0x00007CA6, + 2095: 0x0000667D, + 2096: 0x00024578, + 2097: 0x00007CC9, + 2098: 0x00007CC7, + 2099: 0x00007CE6, + 2100: 0x00007C74, + 2101: 0x00007CF3, + 2102: 0x00007CF5, + 2103: 0x00007CCE, + 2104: 0x00007E67, + 2105: 0x0000451D, + 2106: 0x00026E44, + 2107: 0x00007D5D, + 2108: 0x00026ED6, + 2109: 0x0000748D, + 2110: 0x00007D89, + 2111: 0x00007DAB, + 2112: 0x00007135, + 2113: 0x00007DB3, + 2114: 0x00007DD2, + 2115: 0x00024057, + 2116: 0x00026029, + 2117: 0x00007DE4, + 2118: 0x00003D13, + 2119: 0x00007DF5, + 2120: 0x000217F9, + 2121: 0x00007DE5, + 2122: 0x0002836D, + 2123: 0x00007E1D, + 2124: 0x00026121, + 2125: 0x0002615A, + 2126: 0x00007E6E, + 2127: 0x00007E92, + 2128: 0x0000432B, + 2129: 0x0000946C, + 2130: 0x00007E27, + 2131: 0x00007F40, + 2132: 0x00007F41, + 2133: 0x00007F47, + 2134: 0x00007936, + 2135: 0x000262D0, + 2136: 0x000099E1, + 2137: 0x00007F97, + 2138: 0x00026351, + 2139: 0x00007FA3, + 2140: 0x00021661, + 2141: 0x00020068, + 2142: 0x0000455C, + 2143: 0x00023766, + 2144: 0x00004503, + 2145: 0x0002833A, + 2146: 0x00007FFA, + 2147: 0x00026489, + 2148: 0x00008005, + 2149: 0x00008008, + 2150: 0x0000801D, + 2151: 0x00008028, + 2152: 0x0000802F, + 2153: 0x0002A087, + 2154: 0x00026CC3, + 2155: 0x0000803B, + 2156: 0x0000803C, + 2157: 0x00008061, + 2158: 0x00022714, + 2159: 0x00004989, + 2160: 0x00026626, + 2161: 0x00023DE3, + 2162: 0x000266E8, + 2163: 0x00006725, + 2164: 0x000080A7, + 2165: 0x00028A48, + 2166: 0x00008107, + 2167: 0x0000811A, + 2168: 0x000058B0, + 2169: 0x000226F6, + 2170: 0x00006C7F, + 2171: 0x00026498, + 2172: 0x00024FB8, + 2173: 0x000064E7, + 2174: 0x0002148A, + 2175: 0x00008218, + 2176: 0x0002185E, + 2177: 0x00006A53, + 2178: 0x00024A65, + 2179: 0x00024A95, + 2180: 0x0000447A, + 2181: 0x00008229, + 2182: 0x00020B0D, + 2183: 0x00026A52, + 2184: 0x00023D7E, + 2185: 0x00004FF9, + 2186: 0x000214FD, + 2187: 0x000084E2, + 2188: 0x00008362, + 2189: 0x00026B0A, + 2190: 0x000249A7, + 2191: 0x00023530, + 2192: 0x00021773, + 2193: 0x00023DF8, + 2194: 0x000082AA, + 2195: 0x0000691B, + 2196: 0x0002F994, + 2197: 0x000041DB, + 2198: 0x0000854B, + 2199: 0x000082D0, + 2200: 0x0000831A, + 2201: 0x00020E16, + 2202: 0x000217B4, + 2203: 0x000036C1, + 2204: 0x0002317D, + 2205: 0x0002355A, + 2206: 0x0000827B, + 2207: 0x000082E2, + 2208: 0x00008318, + 2209: 0x00023E8B, + 2210: 0x00026DA3, + 2211: 0x00026B05, + 2212: 0x00026B97, + 2213: 0x000235CE, + 2214: 0x00003DBF, + 2215: 0x0000831D, + 2216: 0x000055EC, + 2217: 0x00008385, + 2218: 0x0000450B, + 2219: 0x00026DA5, + 2220: 0x000083AC, + 2221: 0x000083C1, + 2222: 0x000083D3, + 2223: 0x0000347E, + 2224: 0x00026ED4, + 2225: 0x00006A57, + 2226: 0x0000855A, + 2227: 0x00003496, + 2228: 0x00026E42, + 2229: 0x00022EEF, + 2230: 0x00008458, + 2231: 0x00025BE4, + 2232: 0x00008471, + 2233: 0x00003DD3, + 2234: 0x000044E4, + 2235: 0x00006AA7, + 2236: 0x0000844A, + 2237: 0x00023CB5, + 2238: 0x00007958, + 2239: 0x000084A8, + 2240: 0x00026B96, + 2241: 0x00026E77, + 2242: 0x00026E43, + 2243: 0x000084DE, + 2244: 0x0000840F, + 2245: 0x00008391, + 2246: 0x000044A0, + 2247: 0x00008493, + 2248: 0x000084E4, + 2249: 0x00025C91, + 2250: 0x00004240, + 2251: 0x00025CC0, + 2252: 0x00004543, + 2253: 0x00008534, + 2254: 0x00005AF2, + 2255: 0x00026E99, + 2256: 0x00004527, + 2257: 0x00008573, + 2258: 0x00004516, + 2259: 0x000067BF, + 2260: 0x00008616, + 2261: 0x00028625, + 2262: 0x0002863B, + 2263: 0x000085C1, + 2264: 0x00027088, + 2265: 0x00008602, + 2266: 0x00021582, + 2267: 0x000270CD, + 2268: 0x0002F9B2, + 2269: 0x0000456A, + 2270: 0x00008628, + 2271: 0x00003648, + 2272: 0x000218A2, + 2273: 0x000053F7, + 2274: 0x0002739A, + 2275: 0x0000867E, + 2276: 0x00008771, + 2277: 0x0002A0F8, + 2278: 0x000087EE, + 2279: 0x00022C27, + 2280: 0x000087B1, + 2281: 0x000087DA, + 2282: 0x0000880F, + 2283: 0x00005661, + 2284: 0x0000866C, + 2285: 0x00006856, + 2286: 0x0000460F, + 2287: 0x00008845, + 2288: 0x00008846, + 2289: 0x000275E0, + 2290: 0x00023DB9, + 2291: 0x000275E4, + 2292: 0x0000885E, + 2293: 0x0000889C, + 2294: 0x0000465B, + 2295: 0x000088B4, + 2296: 0x000088B5, + 2297: 0x000063C1, + 2298: 0x000088C5, + 2299: 0x00007777, + 2300: 0x0002770F, + 2301: 0x00008987, + 2302: 0x0000898A, + 2303: 0x000089A6, + 2304: 0x000089A9, + 2305: 0x000089A7, + 2306: 0x000089BC, + 2307: 0x00028A25, + 2308: 0x000089E7, + 2309: 0x00027924, + 2310: 0x00027ABD, + 2311: 0x00008A9C, + 2312: 0x00007793, + 2313: 0x000091FE, + 2314: 0x00008A90, + 2315: 0x00027A59, + 2316: 0x00007AE9, + 2317: 0x00027B3A, + 2318: 0x00023F8F, + 2319: 0x00004713, + 2320: 0x00027B38, + 2321: 0x0000717C, + 2322: 0x00008B0C, + 2323: 0x00008B1F, + 2324: 0x00025430, + 2325: 0x00025565, + 2326: 0x00008B3F, + 2327: 0x00008B4C, + 2328: 0x00008B4D, + 2329: 0x00008AA9, + 2330: 0x00024A7A, + 2331: 0x00008B90, + 2332: 0x00008B9B, + 2333: 0x00008AAF, + 2334: 0x000216DF, + 2335: 0x00004615, + 2336: 0x0000884F, + 2337: 0x00008C9B, + 2338: 0x00027D54, + 2339: 0x00027D8F, + 2340: 0x0002F9D4, + 2341: 0x00003725, + 2342: 0x00027D53, + 2343: 0x00008CD6, + 2344: 0x00027D98, + 2345: 0x00027DBD, + 2346: 0x00008D12, + 2347: 0x00008D03, + 2348: 0x00021910, + 2349: 0x00008CDB, + 2350: 0x0000705C, + 2351: 0x00008D11, + 2352: 0x00024CC9, + 2353: 0x00003ED0, + 2354: 0x00008D77, + 2355: 0x00008DA9, + 2356: 0x00028002, + 2357: 0x00021014, + 2358: 0x0002498A, + 2359: 0x00003B7C, + 2360: 0x000281BC, + 2361: 0x0002710C, + 2362: 0x00007AE7, + 2363: 0x00008EAD, + 2364: 0x00008EB6, + 2365: 0x00008EC3, + 2366: 0x000092D4, + 2367: 0x00008F19, + 2368: 0x00008F2D, + 2369: 0x00028365, + 2370: 0x00028412, + 2371: 0x00008FA5, + 2372: 0x00009303, + 2373: 0x0002A29F, + 2374: 0x00020A50, + 2375: 0x00008FB3, + 2376: 0x0000492A, + 2377: 0x000289DE, + 2378: 0x0002853D, + 2379: 0x00023DBB, + 2380: 0x00005EF8, + 2381: 0x00023262, + 2382: 0x00008FF9, + 2383: 0x0002A014, + 2384: 0x000286BC, + 2385: 0x00028501, + 2386: 0x00022325, + 2387: 0x00003980, + 2388: 0x00026ED7, + 2389: 0x00009037, + 2390: 0x0002853C, + 2391: 0x00027ABE, + 2392: 0x00009061, + 2393: 0x0002856C, + 2394: 0x0002860B, + 2395: 0x000090A8, + 2396: 0x00028713, + 2397: 0x000090C4, + 2398: 0x000286E6, + 2399: 0x000090AE, + 2400: 0x000090FD, + 2401: 0x00009167, + 2402: 0x00003AF0, + 2403: 0x000091A9, + 2404: 0x000091C4, + 2405: 0x00007CAC, + 2406: 0x00028933, + 2407: 0x00021E89, + 2408: 0x0000920E, + 2409: 0x00006C9F, + 2410: 0x00009241, + 2411: 0x00009262, + 2412: 0x000255B9, + 2413: 0x000092B9, + 2414: 0x00028AC6, + 2415: 0x00023C9B, + 2416: 0x00028B0C, + 2417: 0x000255DB, + 2418: 0x00020D31, + 2419: 0x0000932C, + 2420: 0x0000936B, + 2421: 0x00028AE1, + 2422: 0x00028BEB, + 2423: 0x0000708F, + 2424: 0x00005AC3, + 2425: 0x00028AE2, + 2426: 0x00028AE5, + 2427: 0x00004965, + 2428: 0x00009244, + 2429: 0x00028BEC, + 2430: 0x00028C39, + 2431: 0x00028BFF, + 2432: 0x00009373, + 2433: 0x0000945B, + 2434: 0x00008EBC, + 2435: 0x00009585, + 2436: 0x000095A6, + 2437: 0x00009426, + 2438: 0x000095A0, + 2439: 0x00006FF6, + 2440: 0x000042B9, + 2441: 0x0002267A, + 2442: 0x000286D8, + 2443: 0x0002127C, + 2444: 0x00023E2E, + 2445: 0x000049DF, + 2446: 0x00006C1C, + 2447: 0x0000967B, + 2448: 0x00009696, + 2449: 0x0000416C, + 2450: 0x000096A3, + 2451: 0x00026ED5, + 2452: 0x000061DA, + 2453: 0x000096B6, + 2454: 0x000078F5, + 2455: 0x00028AE0, + 2456: 0x000096BD, + 2457: 0x000053CC, + 2458: 0x000049A1, + 2459: 0x00026CB8, + 2460: 0x00020274, + 2461: 0x00026410, + 2462: 0x000290AF, + 2463: 0x000290E5, + 2464: 0x00024AD1, + 2465: 0x00021915, + 2466: 0x0002330A, + 2467: 0x00009731, + 2468: 0x00008642, + 2469: 0x00009736, + 2470: 0x00004A0F, + 2471: 0x0000453D, + 2472: 0x00004585, + 2473: 0x00024AE9, + 2474: 0x00007075, + 2475: 0x00005B41, + 2476: 0x0000971B, + 2477: 0x0000975C, + 2478: 0x000291D5, + 2479: 0x00009757, + 2480: 0x00005B4A, + 2481: 0x000291EB, + 2482: 0x0000975F, + 2483: 0x00009425, + 2484: 0x000050D0, + 2485: 0x000230B7, + 2486: 0x000230BC, + 2487: 0x00009789, + 2488: 0x0000979F, + 2489: 0x000097B1, + 2490: 0x000097BE, + 2491: 0x000097C0, + 2492: 0x000097D2, + 2493: 0x000097E0, + 2494: 0x0002546C, + 2495: 0x000097EE, + 2496: 0x0000741C, + 2497: 0x00029433, + 2498: 0x000097FF, + 2499: 0x000097F5, + 2500: 0x0002941D, + 2501: 0x0002797A, + 2502: 0x00004AD1, + 2503: 0x00009834, + 2504: 0x00009833, + 2505: 0x0000984B, + 2506: 0x00009866, + 2507: 0x00003B0E, + 2508: 0x00027175, + 2509: 0x00003D51, + 2510: 0x00020630, + 2511: 0x0002415C, + 2512: 0x00025706, + 2513: 0x000098CA, + 2514: 0x000098B7, + 2515: 0x000098C8, + 2516: 0x000098C7, + 2517: 0x00004AFF, + 2518: 0x00026D27, + 2519: 0x000216D3, + 2520: 0x000055B0, + 2521: 0x000098E1, + 2522: 0x000098E6, + 2523: 0x000098EC, + 2524: 0x00009378, + 2525: 0x00009939, + 2526: 0x00024A29, + 2527: 0x00004B72, + 2528: 0x00029857, + 2529: 0x00029905, + 2530: 0x000099F5, + 2531: 0x00009A0C, + 2532: 0x00009A3B, + 2533: 0x00009A10, + 2534: 0x00009A58, + 2535: 0x00025725, + 2536: 0x000036C4, + 2537: 0x000290B1, + 2538: 0x00029BD5, + 2539: 0x00009AE0, + 2540: 0x00009AE2, + 2541: 0x00029B05, + 2542: 0x00009AF4, + 2543: 0x00004C0E, + 2544: 0x00009B14, + 2545: 0x00009B2D, + 2546: 0x00028600, + 2547: 0x00005034, + 2548: 0x00009B34, + 2549: 0x000269A8, + 2550: 0x000038C3, + 2551: 0x0002307D, + 2552: 0x00009B50, + 2553: 0x00009B40, + 2554: 0x00029D3E, + 2555: 0x00005A45, + 2556: 0x00021863, + 2557: 0x00009B8E, + 2558: 0x0002424B, + 2559: 0x00009C02, + 2560: 0x00009BFF, + 2561: 0x00009C0C, + 2562: 0x00029E68, + 2563: 0x00009DD4, + 2564: 0x00029FB7, + 2565: 0x0002A192, + 2566: 0x0002A1AB, + 2567: 0x0002A0E1, + 2568: 0x0002A123, + 2569: 0x0002A1DF, + 2570: 0x00009D7E, + 2571: 0x00009D83, + 2572: 0x0002A134, + 2573: 0x00009E0E, + 2574: 0x00006888, + 2575: 0x00009DC4, + 2576: 0x0002215B, + 2577: 0x0002A193, + 2578: 0x0002A220, + 2579: 0x0002193B, + 2580: 0x0002A233, + 2581: 0x00009D39, + 2582: 0x0002A0B9, + 2583: 0x0002A2B4, + 2584: 0x00009E90, + 2585: 0x00009E95, + 2586: 0x00009E9E, + 2587: 0x00009EA2, + 2588: 0x00004D34, + 2589: 0x00009EAA, + 2590: 0x00009EAF, + 2591: 0x00024364, + 2592: 0x00009EC1, + 2593: 0x00003B60, + 2594: 0x000039E5, + 2595: 0x00003D1D, + 2596: 0x00004F32, + 2597: 0x000037BE, + 2598: 0x00028C2B, + 2599: 0x00009F02, + 2600: 0x00009F08, + 2601: 0x00004B96, + 2602: 0x00009424, + 2603: 0x00026DA2, + 2604: 0x00009F17, + 2605: 0x00009F16, + 2606: 0x00009F39, + 2607: 0x0000569F, + 2608: 0x0000568A, + 2609: 0x00009F45, + 2610: 0x000099B8, + 2611: 0x0002908B, + 2612: 0x000097F2, + 2613: 0x0000847F, + 2614: 0x00009F62, + 2615: 0x00009F69, + 2616: 0x00007ADC, + 2617: 0x00009F8E, + 2618: 0x00007216, + 2619: 0x00004BBE, + 2620: 0x00024975, + 2621: 0x000249BB, + 2622: 0x00007177, + 2623: 0x000249F8, + 2624: 0x00024348, + 2625: 0x00024A51, + 2626: 0x0000739E, + 2627: 0x00028BDA, + 2628: 0x000218FA, + 2629: 0x0000799F, + 2630: 0x0002897E, + 2631: 0x00028E36, + 2632: 0x00009369, + 2633: 0x000093F3, + 2634: 0x00028A44, + 2635: 0x000092EC, + 2636: 0x00009381, + 2637: 0x000093CB, + 2638: 0x0002896C, + 2639: 0x000244B9, + 2640: 0x00007217, + 2641: 0x00003EEB, + 2642: 0x00007772, + 2643: 0x00007A43, + 2644: 0x000070D0, + 2645: 0x00024473, + 2646: 0x000243F8, + 2647: 0x0000717E, + 2648: 0x000217EF, + 2649: 0x000070A3, + 2650: 0x000218BE, + 2651: 0x00023599, + 2652: 0x00003EC7, + 2653: 0x00021885, + 2654: 0x0002542F, + 2655: 0x000217F8, + 2656: 0x00003722, + 2657: 0x000216FB, + 2658: 0x00021839, + 2659: 0x000036E1, + 2660: 0x00021774, + 2661: 0x000218D1, + 2662: 0x00025F4B, + 2663: 0x00003723, + 2664: 0x000216C0, + 2665: 0x0000575B, + 2666: 0x00024A25, + 2667: 0x000213FE, + 2668: 0x000212A8, + 2669: 0x000213C6, + 2670: 0x000214B6, + 2671: 0x00008503, + 2672: 0x000236A6, + 2673: 0x00008503, + 2674: 0x00008455, + 2675: 0x00024994, + 2676: 0x00027165, + 2677: 0x00023E31, + 2678: 0x0002555C, + 2679: 0x00023EFB, + 2680: 0x00027052, + 2681: 0x000044F4, + 2682: 0x000236EE, + 2683: 0x0002999D, + 2684: 0x00026F26, + 2685: 0x000067F9, + 2686: 0x00003733, + 2687: 0x00003C15, + 2688: 0x00003DE7, + 2689: 0x0000586C, + 2690: 0x00021922, + 2691: 0x00006810, + 2692: 0x00004057, + 2693: 0x0002373F, + 2694: 0x000240E1, + 2695: 0x0002408B, + 2696: 0x0002410F, + 2697: 0x00026C21, + 2698: 0x000054CB, + 2699: 0x0000569E, + 2700: 0x000266B1, + 2701: 0x00005692, + 2702: 0x00020FDF, + 2703: 0x00020BA8, + 2704: 0x00020E0D, + 2705: 0x000093C6, + 2706: 0x00028B13, + 2707: 0x0000939C, + 2708: 0x00004EF8, + 2709: 0x0000512B, + 2710: 0x00003819, + 2711: 0x00024436, + 2712: 0x00004EBC, + 2713: 0x00020465, + 2714: 0x0002037F, + 2715: 0x00004F4B, + 2716: 0x00004F8A, + 2717: 0x00025651, + 2718: 0x00005A68, + 2719: 0x000201AB, + 2720: 0x000203CB, + 2721: 0x00003999, + 2722: 0x0002030A, + 2723: 0x00020414, + 2724: 0x00003435, + 2725: 0x00004F29, + 2726: 0x000202C0, + 2727: 0x00028EB3, + 2728: 0x00020275, + 2729: 0x00008ADA, + 2730: 0x0002020C, + 2731: 0x00004E98, + 2732: 0x000050CD, + 2733: 0x0000510D, + 2734: 0x00004FA2, + 2735: 0x00004F03, + 2736: 0x00024A0E, + 2737: 0x00023E8A, + 2738: 0x00004F42, + 2739: 0x0000502E, + 2740: 0x0000506C, + 2741: 0x00005081, + 2742: 0x00004FCC, + 2743: 0x00004FE5, + 2744: 0x00005058, + 2745: 0x000050FC, + 2746: 0x00005159, + 2747: 0x0000515B, + 2748: 0x0000515D, + 2749: 0x0000515E, + 2750: 0x00006E76, + 2751: 0x00023595, + 2752: 0x00023E39, + 2753: 0x00023EBF, + 2754: 0x00006D72, + 2755: 0x00021884, + 2756: 0x00023E89, + 2757: 0x000051A8, + 2758: 0x000051C3, + 2759: 0x000205E0, + 2760: 0x000044DD, + 2761: 0x000204A3, + 2762: 0x00020492, + 2763: 0x00020491, + 2764: 0x00008D7A, + 2765: 0x00028A9C, + 2766: 0x0002070E, + 2767: 0x00005259, + 2768: 0x000052A4, + 2769: 0x00020873, + 2770: 0x000052E1, + 2771: 0x0000936E, + 2772: 0x0000467A, + 2773: 0x0000718C, + 2774: 0x0002438C, + 2775: 0x00020C20, + 2776: 0x000249AC, + 2777: 0x000210E4, + 2778: 0x000069D1, + 2779: 0x00020E1D, + 2780: 0x00007479, + 2781: 0x00003EDE, + 2782: 0x00007499, + 2783: 0x00007414, + 2784: 0x00007456, + 2785: 0x00007398, + 2786: 0x00004B8E, + 2787: 0x00024ABC, + 2788: 0x0002408D, + 2789: 0x000053D0, + 2790: 0x00003584, + 2791: 0x0000720F, + 2792: 0x000240C9, + 2793: 0x000055B4, + 2794: 0x00020345, + 2795: 0x000054CD, + 2796: 0x00020BC6, + 2797: 0x0000571D, + 2798: 0x0000925D, + 2799: 0x000096F4, + 2800: 0x00009366, + 2801: 0x000057DD, + 2802: 0x0000578D, + 2803: 0x0000577F, + 2804: 0x0000363E, + 2805: 0x000058CB, + 2806: 0x00005A99, + 2807: 0x00028A46, + 2808: 0x000216FA, + 2809: 0x0002176F, + 2810: 0x00021710, + 2811: 0x00005A2C, + 2812: 0x000059B8, + 2813: 0x0000928F, + 2814: 0x00005A7E, + 2815: 0x00005ACF, + 2816: 0x00005A12, + 2817: 0x00025946, + 2818: 0x000219F3, + 2819: 0x00021861, + 2820: 0x00024295, + 2821: 0x000036F5, + 2822: 0x00006D05, + 2823: 0x00007443, + 2824: 0x00005A21, + 2825: 0x00025E83, + 2826: 0x00005A81, + 2827: 0x00028BD7, + 2828: 0x00020413, + 2829: 0x000093E0, + 2830: 0x0000748C, + 2831: 0x00021303, + 2832: 0x00007105, + 2833: 0x00004972, + 2834: 0x00009408, + 2835: 0x000289FB, + 2836: 0x000093BD, + 2837: 0x000037A0, + 2838: 0x00005C1E, + 2839: 0x00005C9E, + 2840: 0x00005E5E, + 2841: 0x00005E48, + 2842: 0x00021996, + 2843: 0x0002197C, + 2844: 0x00023AEE, + 2845: 0x00005ECD, + 2846: 0x00005B4F, + 2847: 0x00021903, + 2848: 0x00021904, + 2849: 0x00003701, + 2850: 0x000218A0, + 2851: 0x000036DD, + 2852: 0x000216FE, + 2853: 0x000036D3, + 2854: 0x0000812A, + 2855: 0x00028A47, + 2856: 0x00021DBA, + 2857: 0x00023472, + 2858: 0x000289A8, + 2859: 0x00005F0C, + 2860: 0x00005F0E, + 2861: 0x00021927, + 2862: 0x000217AB, + 2863: 0x00005A6B, + 2864: 0x0002173B, + 2865: 0x00005B44, + 2866: 0x00008614, + 2867: 0x000275FD, + 2868: 0x00008860, + 2869: 0x0000607E, + 2870: 0x00022860, + 2871: 0x0002262B, + 2872: 0x00005FDB, + 2873: 0x00003EB8, + 2874: 0x000225AF, + 2875: 0x000225BE, + 2876: 0x00029088, + 2877: 0x00026F73, + 2878: 0x000061C0, + 2879: 0x0002003E, + 2880: 0x00020046, + 2881: 0x0002261B, + 2882: 0x00006199, + 2883: 0x00006198, + 2884: 0x00006075, + 2885: 0x00022C9B, + 2886: 0x00022D07, + 2887: 0x000246D4, + 2888: 0x0002914D, + 2889: 0x00006471, + 2890: 0x00024665, + 2891: 0x00022B6A, + 2892: 0x00003A29, + 2893: 0x00022B22, + 2894: 0x00023450, + 2895: 0x000298EA, + 2896: 0x00022E78, + 2897: 0x00006337, + 2898: 0x0002A45B, + 2899: 0x000064B6, + 2900: 0x00006331, + 2901: 0x000063D1, + 2902: 0x000249E3, + 2903: 0x00022D67, + 2904: 0x000062A4, + 2905: 0x00022CA1, + 2906: 0x0000643B, + 2907: 0x0000656B, + 2908: 0x00006972, + 2909: 0x00003BF4, + 2910: 0x0002308E, + 2911: 0x000232AD, + 2912: 0x00024989, + 2913: 0x000232AB, + 2914: 0x0000550D, + 2915: 0x000232E0, + 2916: 0x000218D9, + 2917: 0x0002943F, + 2918: 0x000066CE, + 2919: 0x00023289, + 2920: 0x000231B3, + 2921: 0x00003AE0, + 2922: 0x00004190, + 2923: 0x00025584, + 2924: 0x00028B22, + 2925: 0x0002558F, + 2926: 0x000216FC, + 2927: 0x0002555B, + 2928: 0x00025425, + 2929: 0x000078EE, + 2930: 0x00023103, + 2931: 0x0002182A, + 2932: 0x00023234, + 2933: 0x00003464, + 2934: 0x0002320F, + 2935: 0x00023182, + 2936: 0x000242C9, + 2937: 0x0000668E, + 2938: 0x00026D24, + 2939: 0x0000666B, + 2940: 0x00004B93, + 2941: 0x00006630, + 2942: 0x00027870, + 2943: 0x00021DEB, + 2944: 0x00006663, + 2945: 0x000232D2, + 2946: 0x000232E1, + 2947: 0x0000661E, + 2948: 0x00025872, + 2949: 0x000038D1, + 2950: 0x0002383A, + 2951: 0x000237BC, + 2952: 0x00003B99, + 2953: 0x000237A2, + 2954: 0x000233FE, + 2955: 0x000074D0, + 2956: 0x00003B96, + 2957: 0x0000678F, + 2958: 0x0002462A, + 2959: 0x000068B6, + 2960: 0x0000681E, + 2961: 0x00003BC4, + 2962: 0x00006ABE, + 2963: 0x00003863, + 2964: 0x000237D5, + 2965: 0x00024487, + 2966: 0x00006A33, + 2967: 0x00006A52, + 2968: 0x00006AC9, + 2969: 0x00006B05, + 2970: 0x00021912, + 2971: 0x00006511, + 2972: 0x00006898, + 2973: 0x00006A4C, + 2974: 0x00003BD7, + 2975: 0x00006A7A, + 2976: 0x00006B57, + 2977: 0x00023FC0, + 2978: 0x00023C9A, + 2979: 0x000093A0, + 2980: 0x000092F2, + 2981: 0x00028BEA, + 2982: 0x00028ACB, + 2983: 0x00009289, + 2984: 0x0002801E, + 2985: 0x000289DC, + 2986: 0x00009467, + 2987: 0x00006DA5, + 2988: 0x00006F0B, + 2989: 0x000249EC, + 2990: 0x00006D67, + 2991: 0x00023F7F, + 2992: 0x00003D8F, + 2993: 0x00006E04, + 2994: 0x0002403C, + 2995: 0x00005A3D, + 2996: 0x00006E0A, + 2997: 0x00005847, + 2998: 0x00006D24, + 2999: 0x00007842, + 3000: 0x0000713B, + 3001: 0x0002431A, + 3002: 0x00024276, + 3003: 0x000070F1, + 3004: 0x00007250, + 3005: 0x00007287, + 3006: 0x00007294, + 3007: 0x0002478F, + 3008: 0x00024725, + 3009: 0x00005179, + 3010: 0x00024AA4, + 3011: 0x000205EB, + 3012: 0x0000747A, + 3013: 0x00023EF8, + 3014: 0x0002365F, + 3015: 0x00024A4A, + 3016: 0x00024917, + 3017: 0x00025FE1, + 3018: 0x00003F06, + 3019: 0x00003EB1, + 3020: 0x00024ADF, + 3021: 0x00028C23, + 3022: 0x00023F35, + 3023: 0x000060A7, + 3024: 0x00003EF3, + 3025: 0x000074CC, + 3026: 0x0000743C, + 3027: 0x00009387, + 3028: 0x00007437, + 3029: 0x0000449F, + 3030: 0x00026DEA, + 3031: 0x00004551, + 3032: 0x00007583, + 3033: 0x00003F63, + 3034: 0x00024CD9, + 3035: 0x00024D06, + 3036: 0x00003F58, + 3037: 0x00007555, + 3038: 0x00007673, + 3039: 0x0002A5C6, + 3040: 0x00003B19, + 3041: 0x00007468, + 3042: 0x00028ACC, + 3043: 0x000249AB, + 3044: 0x0002498E, + 3045: 0x00003AFB, + 3046: 0x00003DCD, + 3047: 0x00024A4E, + 3048: 0x00003EFF, + 3049: 0x000249C5, + 3050: 0x000248F3, + 3051: 0x000091FA, + 3052: 0x00005732, + 3053: 0x00009342, + 3054: 0x00028AE3, + 3055: 0x00021864, + 3056: 0x000050DF, + 3057: 0x00025221, + 3058: 0x000251E7, + 3059: 0x00007778, + 3060: 0x00023232, + 3061: 0x0000770E, + 3062: 0x0000770F, + 3063: 0x0000777B, + 3064: 0x00024697, + 3065: 0x00023781, + 3066: 0x00003A5E, + 3067: 0x000248F0, + 3068: 0x00007438, + 3069: 0x0000749B, + 3070: 0x00003EBF, + 3071: 0x00024ABA, + 3072: 0x00024AC7, + 3073: 0x000040C8, + 3074: 0x00024A96, + 3075: 0x000261AE, + 3076: 0x00009307, + 3077: 0x00025581, + 3078: 0x0000781E, + 3079: 0x0000788D, + 3080: 0x00007888, + 3081: 0x000078D2, + 3082: 0x000073D0, + 3083: 0x00007959, + 3084: 0x00027741, + 3085: 0x000256E3, + 3086: 0x0000410E, + 3087: 0x0000799B, + 3088: 0x00008496, + 3089: 0x000079A5, + 3090: 0x00006A2D, + 3091: 0x00023EFA, + 3092: 0x00007A3A, + 3093: 0x000079F4, + 3094: 0x0000416E, + 3095: 0x000216E6, + 3096: 0x00004132, + 3097: 0x00009235, + 3098: 0x000079F1, + 3099: 0x00020D4C, + 3100: 0x0002498C, + 3101: 0x00020299, + 3102: 0x00023DBA, + 3103: 0x0002176E, + 3104: 0x00003597, + 3105: 0x0000556B, + 3106: 0x00003570, + 3107: 0x000036AA, + 3108: 0x000201D4, + 3109: 0x00020C0D, + 3110: 0x00007AE2, + 3111: 0x00005A59, + 3112: 0x000226F5, + 3113: 0x00025AAF, + 3114: 0x00025A9C, + 3115: 0x00005A0D, + 3116: 0x0002025B, + 3117: 0x000078F0, + 3118: 0x00005A2A, + 3119: 0x00025BC6, + 3120: 0x00007AFE, + 3121: 0x000041F9, + 3122: 0x00007C5D, + 3123: 0x00007C6D, + 3124: 0x00004211, + 3125: 0x00025BB3, + 3126: 0x00025EBC, + 3127: 0x00025EA6, + 3128: 0x00007CCD, + 3129: 0x000249F9, + 3130: 0x000217B0, + 3131: 0x00007C8E, + 3132: 0x00007C7C, + 3133: 0x00007CAE, + 3134: 0x00006AB2, + 3135: 0x00007DDC, + 3136: 0x00007E07, + 3137: 0x00007DD3, + 3138: 0x00007F4E, + 3139: 0x00026261, + 3140: 0x0002615C, + 3141: 0x00027B48, + 3142: 0x00007D97, + 3143: 0x00025E82, + 3144: 0x0000426A, + 3145: 0x00026B75, + 3146: 0x00020916, + 3147: 0x000067D6, + 3148: 0x0002004E, + 3149: 0x000235CF, + 3150: 0x000057C4, + 3151: 0x00026412, + 3152: 0x000263F8, + 3153: 0x00024962, + 3154: 0x00007FDD, + 3155: 0x00007B27, + 3156: 0x0002082C, + 3157: 0x00025AE9, + 3158: 0x00025D43, + 3159: 0x00007B0C, + 3160: 0x00025E0E, + 3161: 0x000099E6, + 3162: 0x00008645, + 3163: 0x00009A63, + 3164: 0x00006A1C, + 3165: 0x0002343F, + 3166: 0x000039E2, + 3167: 0x000249F7, + 3168: 0x000265AD, + 3169: 0x00009A1F, + 3170: 0x000265A0, + 3171: 0x00008480, + 3172: 0x00027127, + 3173: 0x00026CD1, + 3174: 0x000044EA, + 3175: 0x00008137, + 3176: 0x00004402, + 3177: 0x000080C6, + 3178: 0x00008109, + 3179: 0x00008142, + 3180: 0x000267B4, + 3181: 0x000098C3, + 3182: 0x00026A42, + 3183: 0x00008262, + 3184: 0x00008265, + 3185: 0x00026A51, + 3186: 0x00008453, + 3187: 0x00026DA7, + 3188: 0x00008610, + 3189: 0x0002721B, + 3190: 0x00005A86, + 3191: 0x0000417F, + 3192: 0x00021840, + 3193: 0x00005B2B, + 3194: 0x000218A1, + 3195: 0x00005AE4, + 3196: 0x000218D8, + 3197: 0x000086A0, + 3198: 0x0002F9BC, + 3199: 0x00023D8F, + 3200: 0x0000882D, + 3201: 0x00027422, + 3202: 0x00005A02, + 3203: 0x0000886E, + 3204: 0x00004F45, + 3205: 0x00008887, + 3206: 0x000088BF, + 3207: 0x000088E6, + 3208: 0x00008965, + 3209: 0x0000894D, + 3210: 0x00025683, + 3211: 0x00008954, + 3212: 0x00027785, + 3213: 0x00027784, + 3214: 0x00028BF5, + 3215: 0x00028BD9, + 3216: 0x00028B9C, + 3217: 0x000289F9, + 3218: 0x00003EAD, + 3219: 0x000084A3, + 3220: 0x000046F5, + 3221: 0x000046CF, + 3222: 0x000037F2, + 3223: 0x00008A3D, + 3224: 0x00008A1C, + 3225: 0x00029448, + 3226: 0x00005F4D, + 3227: 0x0000922B, + 3228: 0x00024284, + 3229: 0x000065D4, + 3230: 0x00007129, + 3231: 0x000070C4, + 3232: 0x00021845, + 3233: 0x00009D6D, + 3234: 0x00008C9F, + 3235: 0x00008CE9, + 3236: 0x00027DDC, + 3237: 0x0000599A, + 3238: 0x000077C3, + 3239: 0x000059F0, + 3240: 0x0000436E, + 3241: 0x000036D4, + 3242: 0x00008E2A, + 3243: 0x00008EA7, + 3244: 0x00024C09, + 3245: 0x00008F30, + 3246: 0x00008F4A, + 3247: 0x000042F4, + 3248: 0x00006C58, + 3249: 0x00006FBB, + 3250: 0x00022321, + 3251: 0x0000489B, + 3252: 0x00006F79, + 3253: 0x00006E8B, + 3254: 0x000217DA, + 3255: 0x00009BE9, + 3256: 0x000036B5, + 3257: 0x0002492F, + 3258: 0x000090BB, + 3259: 0x00009097, + 3260: 0x00005571, + 3261: 0x00004906, + 3262: 0x000091BB, + 3263: 0x00009404, + 3264: 0x00028A4B, + 3265: 0x00004062, + 3266: 0x00028AFC, + 3267: 0x00009427, + 3268: 0x00028C1D, + 3269: 0x00028C3B, + 3270: 0x000084E5, + 3271: 0x00008A2B, + 3272: 0x00009599, + 3273: 0x000095A7, + 3274: 0x00009597, + 3275: 0x00009596, + 3276: 0x00028D34, + 3277: 0x00007445, + 3278: 0x00003EC2, + 3279: 0x000248FF, + 3280: 0x00024A42, + 3281: 0x000243EA, + 3282: 0x00003EE7, + 3283: 0x00023225, + 3284: 0x0000968F, + 3285: 0x00028EE7, + 3286: 0x00028E66, + 3287: 0x00028E65, + 3288: 0x00003ECC, + 3289: 0x000249ED, + 3290: 0x00024A78, + 3291: 0x00023FEE, + 3292: 0x00007412, + 3293: 0x0000746B, + 3294: 0x00003EFC, + 3295: 0x00009741, + 3296: 0x000290B0, + 3297: 0x00006847, + 3298: 0x00004A1D, + 3299: 0x00029093, + 3300: 0x000257DF, + 3301: 0x0000975D, + 3302: 0x00009368, + 3303: 0x00028989, + 3304: 0x00028C26, + 3305: 0x00028B2F, + 3306: 0x000263BE, + 3307: 0x000092BA, + 3308: 0x00005B11, + 3309: 0x00008B69, + 3310: 0x0000493C, + 3311: 0x000073F9, + 3312: 0x0002421B, + 3313: 0x0000979B, + 3314: 0x00009771, + 3315: 0x00009938, + 3316: 0x00020F26, + 3317: 0x00005DC1, + 3318: 0x00028BC5, + 3319: 0x00024AB2, + 3320: 0x0000981F, + 3321: 0x000294DA, + 3322: 0x000092F6, + 3323: 0x000295D7, + 3324: 0x000091E5, + 3325: 0x000044C0, + 3326: 0x00028B50, + 3327: 0x00024A67, + 3328: 0x00028B64, + 3329: 0x000098DC, + 3330: 0x00028A45, + 3331: 0x00003F00, + 3332: 0x0000922A, + 3333: 0x00004925, + 3334: 0x00008414, + 3335: 0x0000993B, + 3336: 0x0000994D, + 3337: 0x00027B06, + 3338: 0x00003DFD, + 3339: 0x0000999B, + 3340: 0x00004B6F, + 3341: 0x000099AA, + 3342: 0x00009A5C, + 3343: 0x00028B65, + 3344: 0x000258C8, + 3345: 0x00006A8F, + 3346: 0x00009A21, + 3347: 0x00005AFE, + 3348: 0x00009A2F, + 3349: 0x000298F1, + 3350: 0x00004B90, + 3351: 0x00029948, + 3352: 0x000099BC, + 3353: 0x00004BBD, + 3354: 0x00004B97, + 3355: 0x0000937D, + 3356: 0x00005872, + 3357: 0x00021302, + 3358: 0x00005822, + 3359: 0x000249B8, + 3360: 0x000214E8, + 3361: 0x00007844, + 3362: 0x0002271F, + 3363: 0x00023DB8, + 3364: 0x000068C5, + 3365: 0x00003D7D, + 3366: 0x00009458, + 3367: 0x00003927, + 3368: 0x00006150, + 3369: 0x00022781, + 3370: 0x0002296B, + 3371: 0x00006107, + 3372: 0x00009C4F, + 3373: 0x00009C53, + 3374: 0x00009C7B, + 3375: 0x00009C35, + 3376: 0x00009C10, + 3377: 0x00009B7F, + 3378: 0x00009BCF, + 3379: 0x00029E2D, + 3380: 0x00009B9F, + 3381: 0x0002A1F5, + 3382: 0x0002A0FE, + 3383: 0x00009D21, + 3384: 0x00004CAE, + 3385: 0x00024104, + 3386: 0x00009E18, + 3387: 0x00004CB0, + 3388: 0x00009D0C, + 3389: 0x0002A1B4, + 3390: 0x0002A0ED, + 3391: 0x0002A0F3, + 3392: 0x0002992F, + 3393: 0x00009DA5, + 3394: 0x000084BD, + 3395: 0x00026E12, + 3396: 0x00026FDF, + 3397: 0x00026B82, + 3398: 0x000085FC, + 3399: 0x00004533, + 3400: 0x00026DA4, + 3401: 0x00026E84, + 3402: 0x00026DF0, + 3403: 0x00008420, + 3404: 0x000085EE, + 3405: 0x00026E00, + 3406: 0x000237D7, + 3407: 0x00026064, + 3408: 0x000079E2, + 3409: 0x0002359C, + 3410: 0x00023640, + 3411: 0x0000492D, + 3412: 0x000249DE, + 3413: 0x00003D62, + 3414: 0x000093DB, + 3415: 0x000092BE, + 3416: 0x00009348, + 3417: 0x000202BF, + 3418: 0x000078B9, + 3419: 0x00009277, + 3420: 0x0000944D, + 3421: 0x00004FE4, + 3422: 0x00003440, + 3423: 0x00009064, + 3424: 0x0002555D, + 3425: 0x0000783D, + 3426: 0x00007854, + 3427: 0x000078B6, + 3428: 0x0000784B, + 3429: 0x00021757, + 3430: 0x000231C9, + 3431: 0x00024941, + 3432: 0x0000369A, + 3433: 0x00004F72, + 3434: 0x00006FDA, + 3435: 0x00006FD9, + 3436: 0x0000701E, + 3437: 0x0000701E, + 3438: 0x00005414, + 3439: 0x000241B5, + 3440: 0x000057BB, + 3441: 0x000058F3, + 3442: 0x0000578A, + 3443: 0x00009D16, + 3444: 0x000057D7, + 3445: 0x00007134, + 3446: 0x000034AF, + 3447: 0x000241AC, + 3448: 0x000071EB, + 3449: 0x00026C40, + 3450: 0x00024F97, + 3451: 0x00005B28, + 3452: 0x000217B5, + 3453: 0x00028A49, + 3454: 0x0000610C, + 3455: 0x00005ACE, + 3456: 0x00005A0B, + 3457: 0x000042BC, + 3458: 0x00024488, + 3459: 0x0000372C, + 3460: 0x00004B7B, + 3461: 0x000289FC, + 3462: 0x000093BB, + 3463: 0x000093B8, + 3464: 0x000218D6, + 3465: 0x00020F1D, + 3466: 0x00008472, + 3467: 0x00026CC0, + 3468: 0x00021413, + 3469: 0x000242FA, + 3470: 0x00022C26, + 3471: 0x000243C1, + 3472: 0x00005994, + 3473: 0x00023DB7, + 3474: 0x00026741, + 3475: 0x00007DA8, + 3476: 0x0002615B, + 3477: 0x000260A4, + 3478: 0x000249B9, + 3479: 0x0002498B, + 3480: 0x000289FA, + 3481: 0x000092E5, + 3482: 0x000073E2, + 3483: 0x00003EE9, + 3484: 0x000074B4, + 3485: 0x00028B63, + 3486: 0x0002189F, + 3487: 0x00003EE1, + 3488: 0x00024AB3, + 3489: 0x00006AD8, + 3490: 0x000073F3, + 3491: 0x000073FB, + 3492: 0x00003ED6, + 3493: 0x00024A3E, + 3494: 0x00024A94, + 3495: 0x000217D9, + 3496: 0x00024A66, + 3497: 0x000203A7, + 3498: 0x00021424, + 3499: 0x000249E5, + 3500: 0x00007448, + 3501: 0x00024916, + 3502: 0x000070A5, + 3503: 0x00024976, + 3504: 0x00009284, + 3505: 0x000073E6, + 3506: 0x0000935F, + 3507: 0x000204FE, + 3508: 0x00009331, + 3509: 0x00028ACE, + 3510: 0x00028A16, + 3511: 0x00009386, + 3512: 0x00028BE7, + 3513: 0x000255D5, + 3514: 0x00004935, + 3515: 0x00028A82, + 3516: 0x0000716B, + 3517: 0x00024943, + 3518: 0x00020CFF, + 3519: 0x000056A4, + 3520: 0x0002061A, + 3521: 0x00020BEB, + 3522: 0x00020CB8, + 3523: 0x00005502, + 3524: 0x000079C4, + 3525: 0x000217FA, + 3526: 0x00007DFE, + 3527: 0x000216C2, + 3528: 0x00024A50, + 3529: 0x00021852, + 3530: 0x0000452E, + 3531: 0x00009401, + 3532: 0x0000370A, + 3533: 0x00028AC0, + 3534: 0x000249AD, + 3535: 0x000059B0, + 3536: 0x000218BF, + 3537: 0x00021883, + 3538: 0x00027484, + 3539: 0x00005AA1, + 3540: 0x000036E2, + 3541: 0x00023D5B, + 3542: 0x000036B0, + 3543: 0x0000925F, + 3544: 0x00005A79, + 3545: 0x00028A81, + 3546: 0x00021862, + 3547: 0x00009374, + 3548: 0x00003CCD, + 3549: 0x00020AB4, + 3550: 0x00004A96, + 3551: 0x0000398A, + 3552: 0x000050F4, + 3553: 0x00003D69, + 3554: 0x00003D4C, + 3555: 0x0002139C, + 3556: 0x00007175, + 3557: 0x000042FB, + 3558: 0x00028218, + 3559: 0x00006E0F, + 3560: 0x000290E4, + 3561: 0x000044EB, + 3562: 0x00006D57, + 3563: 0x00027E4F, + 3564: 0x00007067, + 3565: 0x00006CAF, + 3566: 0x00003CD6, + 3567: 0x00023FED, + 3568: 0x00023E2D, + 3569: 0x00006E02, + 3570: 0x00006F0C, + 3571: 0x00003D6F, + 3572: 0x000203F5, + 3573: 0x00007551, + 3574: 0x000036BC, + 3575: 0x000034C8, + 3576: 0x00004680, + 3577: 0x00003EDA, + 3578: 0x00004871, + 3579: 0x000059C4, + 3580: 0x0000926E, + 3581: 0x0000493E, + 3582: 0x00008F41, + 3583: 0x00028C1C, + 3584: 0x00026BC0, + 3585: 0x00005812, + 3586: 0x000057C8, + 3587: 0x000036D6, + 3588: 0x00021452, + 3589: 0x000070FE, + 3590: 0x00024362, + 3591: 0x00024A71, + 3592: 0x00022FE3, + 3593: 0x000212B0, + 3594: 0x000223BD, + 3595: 0x000068B9, + 3596: 0x00006967, + 3597: 0x00021398, + 3598: 0x000234E5, + 3599: 0x00027BF4, + 3600: 0x000236DF, + 3601: 0x00028A83, + 3602: 0x000237D6, + 3603: 0x000233FA, + 3604: 0x00024C9F, + 3605: 0x00006A1A, + 3606: 0x000236AD, + 3607: 0x00026CB7, + 3608: 0x0000843E, + 3609: 0x000044DF, + 3610: 0x000044CE, + 3611: 0x00026D26, + 3612: 0x00026D51, + 3613: 0x00026C82, + 3614: 0x00026FDE, + 3615: 0x00006F17, + 3616: 0x00027109, + 3617: 0x0000833D, + 3618: 0x0002173A, + 3619: 0x000083ED, + 3620: 0x00026C80, + 3621: 0x00027053, + 3622: 0x000217DB, + 3623: 0x00005989, + 3624: 0x00005A82, + 3625: 0x000217B3, + 3626: 0x00005A61, + 3627: 0x00005A71, + 3628: 0x00021905, + 3629: 0x000241FC, + 3630: 0x0000372D, + 3631: 0x000059EF, + 3632: 0x0002173C, + 3633: 0x000036C7, + 3634: 0x0000718E, + 3635: 0x00009390, + 3636: 0x0000669A, + 3637: 0x000242A5, + 3638: 0x00005A6E, + 3639: 0x00005A2B, + 3640: 0x00024293, + 3641: 0x00006A2B, + 3642: 0x00023EF9, + 3643: 0x00027736, + 3644: 0x0002445B, + 3645: 0x000242CA, + 3646: 0x0000711D, + 3647: 0x00024259, + 3648: 0x000289E1, + 3649: 0x00004FB0, + 3650: 0x00026D28, + 3651: 0x00005CC2, + 3652: 0x000244CE, + 3653: 0x00027E4D, + 3654: 0x000243BD, + 3655: 0x00006A0C, + 3656: 0x00024256, + 3657: 0x00021304, + 3658: 0x000070A6, + 3659: 0x00007133, + 3660: 0x000243E9, + 3661: 0x00003DA5, + 3662: 0x00006CDF, + 3663: 0x0002F825, + 3664: 0x00024A4F, + 3665: 0x00007E65, + 3666: 0x000059EB, + 3667: 0x00005D2F, + 3668: 0x00003DF3, + 3669: 0x00005F5C, + 3670: 0x00024A5D, + 3671: 0x000217DF, + 3672: 0x00007DA4, + 3673: 0x00008426, + 3674: 0x00005485, + 3675: 0x00023AFA, + 3676: 0x00023300, + 3677: 0x00020214, + 3678: 0x0000577E, + 3679: 0x000208D5, + 3680: 0x00020619, + 3681: 0x00003FE5, + 3682: 0x00021F9E, + 3683: 0x0002A2B6, + 3684: 0x00007003, + 3685: 0x0002915B, + 3686: 0x00005D70, + 3687: 0x0000738F, + 3688: 0x00007CD3, + 3689: 0x00028A59, + 3690: 0x00029420, + 3691: 0x00004FC8, + 3692: 0x00007FE7, + 3693: 0x000072CD, + 3694: 0x00007310, + 3695: 0x00027AF4, + 3696: 0x00007338, + 3697: 0x00007339, + 3698: 0x000256F6, + 3699: 0x00007341, + 3700: 0x00007348, + 3701: 0x00003EA9, + 3702: 0x00027B18, + 3703: 0x0000906C, + 3704: 0x000071F5, + 3705: 0x000248F2, + 3706: 0x000073E1, + 3707: 0x000081F6, + 3708: 0x00003ECA, + 3709: 0x0000770C, + 3710: 0x00003ED1, + 3711: 0x00006CA2, + 3712: 0x000056FD, + 3713: 0x00007419, + 3714: 0x0000741E, + 3715: 0x0000741F, + 3716: 0x00003EE2, + 3717: 0x00003EF0, + 3718: 0x00003EF4, + 3719: 0x00003EFA, + 3720: 0x000074D3, + 3721: 0x00003F0E, + 3722: 0x00003F53, + 3723: 0x00007542, + 3724: 0x0000756D, + 3725: 0x00007572, + 3726: 0x0000758D, + 3727: 0x00003F7C, + 3728: 0x000075C8, + 3729: 0x000075DC, + 3730: 0x00003FC0, + 3731: 0x0000764D, + 3732: 0x00003FD7, + 3733: 0x00007674, + 3734: 0x00003FDC, + 3735: 0x0000767A, + 3736: 0x00024F5C, + 3737: 0x00007188, + 3738: 0x00005623, + 3739: 0x00008980, + 3740: 0x00005869, + 3741: 0x0000401D, + 3742: 0x00007743, + 3743: 0x00004039, + 3744: 0x00006761, + 3745: 0x00004045, + 3746: 0x000035DB, + 3747: 0x00007798, + 3748: 0x0000406A, + 3749: 0x0000406F, + 3750: 0x00005C5E, + 3751: 0x000077BE, + 3752: 0x000077CB, + 3753: 0x000058F2, + 3754: 0x00007818, + 3755: 0x000070B9, + 3756: 0x0000781C, + 3757: 0x000040A8, + 3758: 0x00007839, + 3759: 0x00007847, + 3760: 0x00007851, + 3761: 0x00007866, + 3762: 0x00008448, + 3763: 0x00025535, + 3764: 0x00007933, + 3765: 0x00006803, + 3766: 0x00007932, + 3767: 0x00004103, + 3768: 0x00004109, + 3769: 0x00007991, + 3770: 0x00007999, + 3771: 0x00008FBB, + 3772: 0x00007A06, + 3773: 0x00008FBC, + 3774: 0x00004167, + 3775: 0x00007A91, + 3776: 0x000041B2, + 3777: 0x00007ABC, + 3778: 0x00008279, + 3779: 0x000041C4, + 3780: 0x00007ACF, + 3781: 0x00007ADB, + 3782: 0x000041CF, + 3783: 0x00004E21, + 3784: 0x00007B62, + 3785: 0x00007B6C, + 3786: 0x00007B7B, + 3787: 0x00007C12, + 3788: 0x00007C1B, + 3789: 0x00004260, + 3790: 0x0000427A, + 3791: 0x00007C7B, + 3792: 0x00007C9C, + 3793: 0x0000428C, + 3794: 0x00007CB8, + 3795: 0x00004294, + 3796: 0x00007CED, + 3797: 0x00008F93, + 3798: 0x000070C0, + 3799: 0x00020CCF, + 3800: 0x00007DCF, + 3801: 0x00007DD4, + 3802: 0x00007DD0, + 3803: 0x00007DFD, + 3804: 0x00007FAE, + 3805: 0x00007FB4, + 3806: 0x0000729F, + 3807: 0x00004397, + 3808: 0x00008020, + 3809: 0x00008025, + 3810: 0x00007B39, + 3811: 0x0000802E, + 3812: 0x00008031, + 3813: 0x00008054, + 3814: 0x00003DCC, + 3815: 0x000057B4, + 3816: 0x000070A0, + 3817: 0x000080B7, + 3818: 0x000080E9, + 3819: 0x000043ED, + 3820: 0x0000810C, + 3821: 0x0000732A, + 3822: 0x0000810E, + 3823: 0x00008112, + 3824: 0x00007560, + 3825: 0x00008114, + 3826: 0x00004401, + 3827: 0x00003B39, + 3828: 0x00008156, + 3829: 0x00008159, + 3830: 0x0000815A, + 3831: 0x00004413, + 3832: 0x0000583A, + 3833: 0x0000817C, + 3834: 0x00008184, + 3835: 0x00004425, + 3836: 0x00008193, + 3837: 0x0000442D, + 3838: 0x000081A5, + 3839: 0x000057EF, + 3840: 0x000081C1, + 3841: 0x000081E4, + 3842: 0x00008254, + 3843: 0x0000448F, + 3844: 0x000082A6, + 3845: 0x00008276, + 3846: 0x000082CA, + 3847: 0x000082D8, + 3848: 0x000082FF, + 3849: 0x000044B0, + 3850: 0x00008357, + 3851: 0x00009669, + 3852: 0x0000698A, + 3853: 0x00008405, + 3854: 0x000070F5, + 3855: 0x00008464, + 3856: 0x000060E3, + 3857: 0x00008488, + 3858: 0x00004504, + 3859: 0x000084BE, + 3860: 0x000084E1, + 3861: 0x000084F8, + 3862: 0x00008510, + 3863: 0x00008538, + 3864: 0x00008552, + 3865: 0x0000453B, + 3866: 0x0000856F, + 3867: 0x00008570, + 3868: 0x000085E0, + 3869: 0x00004577, + 3870: 0x00008672, + 3871: 0x00008692, + 3872: 0x000086B2, + 3873: 0x000086EF, + 3874: 0x00009645, + 3875: 0x0000878B, + 3876: 0x00004606, + 3877: 0x00004617, + 3878: 0x000088AE, + 3879: 0x000088FF, + 3880: 0x00008924, + 3881: 0x00008947, + 3882: 0x00008991, + 3883: 0x00027967, + 3884: 0x00008A29, + 3885: 0x00008A38, + 3886: 0x00008A94, + 3887: 0x00008AB4, + 3888: 0x00008C51, + 3889: 0x00008CD4, + 3890: 0x00008CF2, + 3891: 0x00008D1C, + 3892: 0x00004798, + 3893: 0x0000585F, + 3894: 0x00008DC3, + 3895: 0x000047ED, + 3896: 0x00004EEE, + 3897: 0x00008E3A, + 3898: 0x000055D8, + 3899: 0x00005754, + 3900: 0x00008E71, + 3901: 0x000055F5, + 3902: 0x00008EB0, + 3903: 0x00004837, + 3904: 0x00008ECE, + 3905: 0x00008EE2, + 3906: 0x00008EE4, + 3907: 0x00008EED, + 3908: 0x00008EF2, + 3909: 0x00008FB7, + 3910: 0x00008FC1, + 3911: 0x00008FCA, + 3912: 0x00008FCC, + 3913: 0x00009033, + 3914: 0x000099C4, + 3915: 0x000048AD, + 3916: 0x000098E0, + 3917: 0x00009213, + 3918: 0x0000491E, + 3919: 0x00009228, + 3920: 0x00009258, + 3921: 0x0000926B, + 3922: 0x000092B1, + 3923: 0x000092AE, + 3924: 0x000092BF, + 3925: 0x000092E3, + 3926: 0x000092EB, + 3927: 0x000092F3, + 3928: 0x000092F4, + 3929: 0x000092FD, + 3930: 0x00009343, + 3931: 0x00009384, + 3932: 0x000093AD, + 3933: 0x00004945, + 3934: 0x00004951, + 3935: 0x00009EBF, + 3936: 0x00009417, + 3937: 0x00005301, + 3938: 0x0000941D, + 3939: 0x0000942D, + 3940: 0x0000943E, + 3941: 0x0000496A, + 3942: 0x00009454, + 3943: 0x00009479, + 3944: 0x0000952D, + 3945: 0x000095A2, + 3946: 0x000049A7, + 3947: 0x000095F4, + 3948: 0x00009633, + 3949: 0x000049E5, + 3950: 0x000067A0, + 3951: 0x00004A24, + 3952: 0x00009740, + 3953: 0x00004A35, + 3954: 0x000097B2, + 3955: 0x000097C2, + 3956: 0x00005654, + 3957: 0x00004AE4, + 3958: 0x000060E8, + 3959: 0x000098B9, + 3960: 0x00004B19, + 3961: 0x000098F1, + 3962: 0x00005844, + 3963: 0x0000990E, + 3964: 0x00009919, + 3965: 0x000051B4, + 3966: 0x0000991C, + 3967: 0x00009937, + 3968: 0x00009942, + 3969: 0x0000995D, + 3970: 0x00009962, + 3971: 0x00004B70, + 3972: 0x000099C5, + 3973: 0x00004B9D, + 3974: 0x00009A3C, + 3975: 0x00009B0F, + 3976: 0x00007A83, + 3977: 0x00009B69, + 3978: 0x00009B81, + 3979: 0x00009BDD, + 3980: 0x00009BF1, + 3981: 0x00009BF4, + 3982: 0x00004C6D, + 3983: 0x00009C20, + 3984: 0x0000376F, + 3985: 0x00021BC2, + 3986: 0x00009D49, + 3987: 0x00009C3A, + 3988: 0x00009EFE, + 3989: 0x00005650, + 3990: 0x00009D93, + 3991: 0x00009DBD, + 3992: 0x00009DC0, + 3993: 0x00009DFC, + 3994: 0x000094F6, + 3995: 0x00008FB6, + 3996: 0x00009E7B, + 3997: 0x00009EAC, + 3998: 0x00009EB1, + 3999: 0x00009EBD, + 4000: 0x00009EC6, + 4001: 0x000094DC, + 4002: 0x00009EE2, + 4003: 0x00009EF1, + 4004: 0x00009EF8, + 4005: 0x00007AC8, + 4006: 0x00009F44, + 4007: 0x00020094, + 4008: 0x000202B7, + 4009: 0x000203A0, + 4010: 0x0000691A, + 4011: 0x000094C3, + 4012: 0x000059AC, + 4013: 0x000204D7, + 4014: 0x00005840, + 4015: 0x000094C1, + 4016: 0x000037B9, + 4017: 0x000205D5, + 4018: 0x00020615, + 4019: 0x00020676, + 4020: 0x000216BA, + 4021: 0x00005757, + 4022: 0x00007173, + 4023: 0x00020AC2, + 4024: 0x00020ACD, + 4025: 0x00020BBF, + 4026: 0x0000546A, + 4027: 0x0002F83B, + 4028: 0x00020BCB, + 4029: 0x0000549E, + 4030: 0x00020BFB, + 4031: 0x00020C3B, + 4032: 0x00020C53, + 4033: 0x00020C65, + 4034: 0x00020C7C, + 4035: 0x000060E7, + 4036: 0x00020C8D, + 4037: 0x0000567A, + 4038: 0x00020CB5, + 4039: 0x00020CDD, + 4040: 0x00020CED, + 4041: 0x00020D6F, + 4042: 0x00020DB2, + 4043: 0x00020DC8, + 4044: 0x00006955, + 4045: 0x00009C2F, + 4046: 0x000087A5, + 4047: 0x00020E04, + 4048: 0x00020E0E, + 4049: 0x00020ED7, + 4050: 0x00020F90, + 4051: 0x00020F2D, + 4052: 0x00020E73, + 4053: 0x00005C20, + 4054: 0x00020FBC, + 4055: 0x00005E0B, + 4056: 0x0002105C, + 4057: 0x0002104F, + 4058: 0x00021076, + 4059: 0x0000671E, + 4060: 0x0002107B, + 4061: 0x00021088, + 4062: 0x00021096, + 4063: 0x00003647, + 4064: 0x000210BF, + 4065: 0x000210D3, + 4066: 0x0002112F, + 4067: 0x0002113B, + 4068: 0x00005364, + 4069: 0x000084AD, + 4070: 0x000212E3, + 4071: 0x00021375, + 4072: 0x00021336, + 4073: 0x00008B81, + 4074: 0x00021577, + 4075: 0x00021619, + 4076: 0x000217C3, + 4077: 0x000217C7, + 4078: 0x00004E78, + 4079: 0x000070BB, + 4080: 0x0002182D, + 4081: 0x0002196A, + 4082: 0x00021A2D, + 4083: 0x00021A45, + 4084: 0x00021C2A, + 4085: 0x00021C70, + 4086: 0x00021CAC, + 4087: 0x00021EC8, + 4088: 0x000062C3, + 4089: 0x00021ED5, + 4090: 0x00021F15, + 4091: 0x00007198, + 4092: 0x00006855, + 4093: 0x00022045, + 4094: 0x000069E9, + 4095: 0x000036C8, + 4096: 0x0002227C, + 4097: 0x000223D7, + 4098: 0x000223FA, + 4099: 0x0002272A, + 4100: 0x00022871, + 4101: 0x0002294F, + 4102: 0x000082FD, + 4103: 0x00022967, + 4104: 0x00022993, + 4105: 0x00022AD5, + 4106: 0x000089A5, + 4107: 0x00022AE8, + 4108: 0x00008FA0, + 4109: 0x00022B0E, + 4110: 0x000097B8, + 4111: 0x00022B3F, + 4112: 0x00009847, + 4113: 0x00009ABD, + 4114: 0x00022C4C, + 4116: 0x00022C88, + 4117: 0x00022CB7, + 4118: 0x00025BE8, + 4119: 0x00022D08, + 4120: 0x00022D12, + 4121: 0x00022DB7, + 4122: 0x00022D95, + 4123: 0x00022E42, + 4124: 0x00022F74, + 4125: 0x00022FCC, + 4126: 0x00023033, + 4127: 0x00023066, + 4128: 0x0002331F, + 4129: 0x000233DE, + 4130: 0x00005FB1, + 4131: 0x00006648, + 4132: 0x000066BF, + 4133: 0x00027A79, + 4134: 0x00023567, + 4135: 0x000235F3, + 4136: 0x00007201, + 4137: 0x000249BA, + 4138: 0x000077D7, + 4139: 0x0002361A, + 4140: 0x00023716, + 4141: 0x00007E87, + 4142: 0x00020346, + 4143: 0x000058B5, + 4144: 0x0000670E, + 4145: 0x00006918, + 4146: 0x00023AA7, + 4147: 0x00027657, + 4148: 0x00025FE2, + 4149: 0x00023E11, + 4150: 0x00023EB9, + 4151: 0x000275FE, + 4152: 0x0002209A, + 4153: 0x000048D0, + 4154: 0x00004AB8, + 4155: 0x00024119, + 4156: 0x00028A9A, + 4157: 0x000242EE, + 4158: 0x0002430D, + 4159: 0x0002403B, + 4160: 0x00024334, + 4161: 0x00024396, + 4162: 0x00024A45, + 4163: 0x000205CA, + 4164: 0x000051D2, + 4165: 0x00020611, + 4166: 0x0000599F, + 4167: 0x00021EA8, + 4168: 0x00003BBE, + 4169: 0x00023CFF, + 4170: 0x00024404, + 4171: 0x000244D6, + 4172: 0x00005788, + 4173: 0x00024674, + 4174: 0x0000399B, + 4175: 0x0002472F, + 4176: 0x000285E8, + 4177: 0x000299C9, + 4178: 0x00003762, + 4179: 0x000221C3, + 4180: 0x00008B5E, + 4181: 0x00028B4E, + 4182: 0x000099D6, + 4183: 0x00024812, + 4184: 0x000248FB, + 4185: 0x00024A15, + 4186: 0x00007209, + 4187: 0x00024AC0, + 4188: 0x00020C78, + 4189: 0x00005965, + 4190: 0x00024EA5, + 4191: 0x00024F86, + 4192: 0x00020779, + 4193: 0x00008EDA, + 4194: 0x0002502C, + 4195: 0x0000528F, + 4196: 0x0000573F, + 4197: 0x00007171, + 4198: 0x00025299, + 4199: 0x00025419, + 4200: 0x00023F4A, + 4201: 0x00024AA7, + 4202: 0x000055BC, + 4203: 0x00025446, + 4204: 0x0002546E, + 4205: 0x00026B52, + 4206: 0x000091D4, + 4207: 0x00003473, + 4208: 0x0002553F, + 4209: 0x00027632, + 4210: 0x0002555E, + 4211: 0x00004718, + 4212: 0x00025562, + 4213: 0x00025566, + 4214: 0x000257C7, + 4215: 0x0002493F, + 4216: 0x0002585D, + 4217: 0x00005066, + 4218: 0x000034FB, + 4219: 0x000233CC, + 4220: 0x000060DE, + 4221: 0x00025903, + 4222: 0x0000477C, + 4223: 0x00028948, + 4224: 0x00025AAE, + 4225: 0x00025B89, + 4226: 0x00025C06, + 4227: 0x00021D90, + 4228: 0x000057A1, + 4229: 0x00007151, + 4230: 0x00006FB6, + 4231: 0x00026102, + 4232: 0x00027C12, + 4233: 0x00009056, + 4234: 0x000261B2, + 4235: 0x00024F9A, + 4236: 0x00008B62, + 4237: 0x00026402, + 4238: 0x0002644A, + 4239: 0x00005D5B, + 4240: 0x00026BF7, + 4241: 0x00008F36, + 4242: 0x00026484, + 4243: 0x0002191C, + 4244: 0x00008AEA, + 4245: 0x000249F6, + 4246: 0x00026488, + 4247: 0x00023FEF, + 4248: 0x00026512, + 4249: 0x00004BC0, + 4250: 0x000265BF, + 4251: 0x000266B5, + 4252: 0x0002271B, + 4253: 0x00009465, + 4254: 0x000257E1, + 4255: 0x00006195, + 4256: 0x00005A27, + 4257: 0x0002F8CD, + 4258: 0x00004FBB, + 4259: 0x000056B9, + 4260: 0x00024521, + 4261: 0x000266FC, + 4262: 0x00004E6A, + 4263: 0x00024934, + 4264: 0x00009656, + 4265: 0x00006D8F, + 4266: 0x00026CBD, + 4267: 0x00003618, + 4268: 0x00008977, + 4269: 0x00026799, + 4270: 0x0002686E, + 4271: 0x00026411, + 4272: 0x0002685E, + 4273: 0x000071DF, + 4274: 0x000268C7, + 4275: 0x00007B42, + 4276: 0x000290C0, + 4277: 0x00020A11, + 4278: 0x00026926, + 4279: 0x00009104, + 4280: 0x00026939, + 4281: 0x00007A45, + 4282: 0x00009DF0, + 4283: 0x000269FA, + 4284: 0x00009A26, + 4285: 0x00026A2D, + 4286: 0x0000365F, + 4287: 0x00026469, + 4288: 0x00020021, + 4289: 0x00007983, + 4290: 0x00026A34, + 4291: 0x00026B5B, + 4292: 0x00005D2C, + 4293: 0x00023519, + 4294: 0x000083CF, + 4295: 0x00026B9D, + 4296: 0x000046D0, + 4297: 0x00026CA4, + 4298: 0x0000753B, + 4299: 0x00008865, + 4300: 0x00026DAE, + 4301: 0x000058B6, + 4302: 0x0000371C, + 4303: 0x0002258D, + 4304: 0x0002704B, + 4305: 0x000271CD, + 4306: 0x00003C54, + 4307: 0x00027280, + 4308: 0x00027285, + 4309: 0x00009281, + 4310: 0x0002217A, + 4311: 0x0002728B, + 4312: 0x00009330, + 4313: 0x000272E6, + 4314: 0x000249D0, + 4315: 0x00006C39, + 4316: 0x0000949F, + 4317: 0x00027450, + 4318: 0x00020EF8, + 4319: 0x00008827, + 4320: 0x000088F5, + 4321: 0x00022926, + 4322: 0x00028473, + 4323: 0x000217B1, + 4324: 0x00006EB8, + 4325: 0x00024A2A, + 4326: 0x00021820, + 4327: 0x000039A4, + 4328: 0x000036B9, + 4329: 0x00005C10, + 4330: 0x000079E3, + 4331: 0x0000453F, + 4332: 0x000066B6, + 4333: 0x00029CAD, + 4334: 0x000298A4, + 4335: 0x00008943, + 4336: 0x000277CC, + 4337: 0x00027858, + 4338: 0x000056D6, + 4339: 0x000040DF, + 4340: 0x0002160A, + 4341: 0x000039A1, + 4342: 0x0002372F, + 4343: 0x000280E8, + 4344: 0x000213C5, + 4345: 0x000071AD, + 4346: 0x00008366, + 4347: 0x000279DD, + 4348: 0x000291A8, + 4349: 0x00005A67, + 4350: 0x00004CB7, + 4351: 0x000270AF, + 4352: 0x000289AB, + 4353: 0x000279FD, + 4354: 0x00027A0A, + 4355: 0x00027B0B, + 4356: 0x00027D66, + 4357: 0x0002417A, + 4358: 0x00007B43, + 4359: 0x0000797E, + 4360: 0x00028009, + 4361: 0x00006FB5, + 4362: 0x0002A2DF, + 4363: 0x00006A03, + 4364: 0x00028318, + 4365: 0x000053A2, + 4366: 0x00026E07, + 4367: 0x000093BF, + 4368: 0x00006836, + 4369: 0x0000975D, + 4370: 0x0002816F, + 4371: 0x00028023, + 4372: 0x000269B5, + 4373: 0x000213ED, + 4374: 0x0002322F, + 4375: 0x00028048, + 4376: 0x00005D85, + 4377: 0x00028C30, + 4378: 0x00028083, + 4379: 0x00005715, + 4380: 0x00009823, + 4381: 0x00028949, + 4382: 0x00005DAB, + 4383: 0x00024988, + 4384: 0x000065BE, + 4385: 0x000069D5, + 4386: 0x000053D2, + 4387: 0x00024AA5, + 4388: 0x00023F81, + 4389: 0x00003C11, + 4390: 0x00006736, + 4391: 0x00028090, + 4392: 0x000280F4, + 4393: 0x0002812E, + 4394: 0x00021FA1, + 4395: 0x0002814F, + 4396: 0x00028189, + 4397: 0x000281AF, + 4398: 0x0002821A, + 4399: 0x00028306, + 4400: 0x0002832F, + 4401: 0x0002838A, + 4402: 0x000035CA, + 4403: 0x00028468, + 4404: 0x000286AA, + 4405: 0x000048FA, + 4406: 0x000063E6, + 4407: 0x00028956, + 4408: 0x00007808, + 4409: 0x00009255, + 4410: 0x000289B8, + 4411: 0x000043F2, + 4412: 0x000289E7, + 4413: 0x000043DF, + 4414: 0x000289E8, + 4415: 0x00028B46, + 4416: 0x00028BD4, + 4417: 0x000059F8, + 4418: 0x00028C09, + 4419: 0x00008F0B, + 4420: 0x00028FC5, + 4421: 0x000290EC, + 4422: 0x00007B51, + 4423: 0x00029110, + 4424: 0x0002913C, + 4425: 0x00003DF7, + 4426: 0x0002915E, + 4427: 0x00024ACA, + 4428: 0x00008FD0, + 4429: 0x0000728F, + 4430: 0x0000568B, + 4431: 0x000294E7, + 4432: 0x000295E9, + 4433: 0x000295B0, + 4434: 0x000295B8, + 4435: 0x00029732, + 4436: 0x000298D1, + 4437: 0x00029949, + 4438: 0x0002996A, + 4439: 0x000299C3, + 4440: 0x00029A28, + 4441: 0x00029B0E, + 4442: 0x00029D5A, + 4443: 0x00029D9B, + 4444: 0x00007E9F, + 4445: 0x00029EF8, + 4446: 0x00029F23, + 4447: 0x00004CA4, + 4448: 0x00009547, + 4449: 0x0002A293, + 4450: 0x000071A2, + 4451: 0x0002A2FF, + 4452: 0x00004D91, + 4453: 0x00009012, + 4454: 0x0002A5CB, + 4455: 0x00004D9C, + 4456: 0x00020C9C, + 4457: 0x00008FBE, + 4458: 0x000055C1, + 4459: 0x00008FBA, + 4460: 0x000224B0, + 4461: 0x00008FB9, + 4462: 0x00024A93, + 4463: 0x00004509, + 4464: 0x00007E7F, + 4465: 0x00006F56, + 4466: 0x00006AB1, + 4467: 0x00004EEA, + 4468: 0x000034E4, + 4469: 0x00028B2C, + 4470: 0x0002789D, + 4471: 0x0000373A, + 4472: 0x00008E80, + 4473: 0x000217F5, + 4474: 0x00028024, + 4475: 0x00028B6C, + 4476: 0x00028B99, + 4477: 0x00027A3E, + 4478: 0x000266AF, + 4479: 0x00003DEB, + 4480: 0x00027655, + 4481: 0x00023CB7, + 4482: 0x00025635, + 4483: 0x00025956, + 4484: 0x00004E9A, + 4485: 0x00025E81, + 4486: 0x00026258, + 4487: 0x000056BF, + 4488: 0x00020E6D, + 4489: 0x00008E0E, + 4490: 0x00005B6D, + 4491: 0x00023E88, + 4492: 0x00024C9E, + 4493: 0x000063DE, + 4494: 0x000062D0, + 4495: 0x000217F6, + 4496: 0x0002187B, + 4497: 0x00006530, + 4498: 0x0000562D, + 4499: 0x00025C4A, + 4500: 0x0000541A, + 4501: 0x00025311, + 4502: 0x00003DC6, + 4503: 0x00029D98, + 4504: 0x00004C7D, + 4505: 0x00005622, + 4506: 0x0000561E, + 4507: 0x00007F49, + 4508: 0x00025ED8, + 4509: 0x00005975, + 4510: 0x00023D40, + 4511: 0x00008770, + 4512: 0x00004E1C, + 4513: 0x00020FEA, + 4514: 0x00020D49, + 4515: 0x000236BA, + 4516: 0x00008117, + 4517: 0x00009D5E, + 4518: 0x00008D18, + 4519: 0x0000763B, + 4520: 0x00009C45, + 4521: 0x0000764E, + 4522: 0x000077B9, + 4523: 0x00009345, + 4524: 0x00005432, + 4525: 0x00008148, + 4526: 0x000082F7, + 4527: 0x00005625, + 4528: 0x00008132, + 4529: 0x00008418, + 4530: 0x000080BD, + 4531: 0x000055EA, + 4532: 0x00007962, + 4533: 0x00005643, + 4534: 0x00005416, + 4535: 0x00020E9D, + 4536: 0x000035CE, + 4537: 0x00005605, + 4538: 0x000055F1, + 4539: 0x000066F1, + 4540: 0x000282E2, + 4541: 0x0000362D, + 4542: 0x00007534, + 4543: 0x000055F0, + 4544: 0x000055BA, + 4545: 0x00005497, + 4546: 0x00005572, + 4547: 0x00020C41, + 4548: 0x00020C96, + 4549: 0x00005ED0, + 4550: 0x00025148, + 4551: 0x00020E76, + 4552: 0x00022C62, + 4553: 0x00020EA2, + 4554: 0x00009EAB, + 4555: 0x00007D5A, + 4556: 0x000055DE, + 4557: 0x00021075, + 4558: 0x0000629D, + 4559: 0x0000976D, + 4560: 0x00005494, + 4561: 0x00008CCD, + 4562: 0x000071F6, + 4563: 0x00009176, + 4564: 0x000063FC, + 4565: 0x000063B9, + 4566: 0x000063FE, + 4567: 0x00005569, + 4568: 0x00022B43, + 4569: 0x00009C72, + 4570: 0x00022EB3, + 4571: 0x0000519A, + 4572: 0x000034DF, + 4573: 0x00020DA7, + 4574: 0x000051A7, + 4575: 0x0000544D, + 4576: 0x0000551E, + 4577: 0x00005513, + 4578: 0x00007666, + 4579: 0x00008E2D, + 4580: 0x0002688A, + 4581: 0x000075B1, + 4582: 0x000080B6, + 4583: 0x00008804, + 4584: 0x00008786, + 4585: 0x000088C7, + 4586: 0x000081B6, + 4587: 0x0000841C, + 4588: 0x000210C1, + 4589: 0x000044EC, + 4590: 0x00007304, + 4591: 0x00024706, + 4592: 0x00005B90, + 4593: 0x0000830B, + 4594: 0x00026893, + 4595: 0x0000567B, + 4596: 0x000226F4, + 4597: 0x00027D2F, + 4598: 0x000241A3, + 4599: 0x00027D73, + 4600: 0x00026ED0, + 4601: 0x000272B6, + 4602: 0x00009170, + 4603: 0x000211D9, + 4604: 0x00009208, + 4605: 0x00023CFC, + 4606: 0x0002A6A9, + 4607: 0x00020EAC, + 4608: 0x00020EF9, + 4609: 0x00007266, + 4610: 0x00021CA2, + 4611: 0x0000474E, + 4612: 0x00024FC2, + 4613: 0x00027FF9, + 4614: 0x00020FEB, + 4615: 0x000040FA, + 4616: 0x00009C5D, + 4617: 0x0000651F, + 4618: 0x00022DA0, + 4619: 0x000048F3, + 4620: 0x000247E0, + 4621: 0x00029D7C, + 4622: 0x00020FEC, + 4623: 0x00020E0A, + 4624: 0x00006062, + 4625: 0x000275A3, + 4626: 0x00020FED, + 4628: 0x00026048, + 4629: 0x00021187, + 4630: 0x000071A3, + 4631: 0x00007E8E, + 4632: 0x00009D50, + 4633: 0x00004E1A, + 4634: 0x00004E04, + 4635: 0x00003577, + 4636: 0x00005B0D, + 4637: 0x00006CB2, + 4638: 0x00005367, + 4639: 0x000036AC, + 4640: 0x000039DC, + 4641: 0x0000537D, + 4642: 0x000036A5, + 4643: 0x00024618, + 4644: 0x0000589A, + 4645: 0x00024B6E, + 4646: 0x0000822D, + 4647: 0x0000544B, + 4648: 0x000057AA, + 4649: 0x00025A95, + 4650: 0x00020979, + 4652: 0x00003A52, + 4653: 0x00022465, + 4654: 0x00007374, + 4655: 0x00029EAC, + 4656: 0x00004D09, + 4657: 0x00009BED, + 4658: 0x00023CFE, + 4659: 0x00029F30, + 4660: 0x00004C5B, + 4661: 0x00024FA9, + 4662: 0x0002959E, + 4663: 0x00029FDE, + 4664: 0x0000845C, + 4665: 0x00023DB6, + 4666: 0x000272B2, + 4667: 0x000267B3, + 4668: 0x00023720, + 4669: 0x0000632E, + 4670: 0x00007D25, + 4671: 0x00023EF7, + 4672: 0x00023E2C, + 4673: 0x00003A2A, + 4674: 0x00009008, + 4675: 0x000052CC, + 4676: 0x00003E74, + 4677: 0x0000367A, + 4678: 0x000045E9, + 4679: 0x0002048E, + 4680: 0x00007640, + 4681: 0x00005AF0, + 4682: 0x00020EB6, + 4683: 0x0000787A, + 4684: 0x00027F2E, + 4685: 0x000058A7, + 4686: 0x000040BF, + 4687: 0x0000567C, + 4688: 0x00009B8B, + 4689: 0x00005D74, + 4690: 0x00007654, + 4691: 0x0002A434, + 4692: 0x00009E85, + 4693: 0x00004CE1, + 4694: 0x000075F9, + 4695: 0x000037FB, + 4696: 0x00006119, + 4697: 0x000230DA, + 4698: 0x000243F2, + 4700: 0x0000565D, + 4701: 0x000212A9, + 4702: 0x000057A7, + 4703: 0x00024963, + 4704: 0x00029E06, + 4705: 0x00005234, + 4706: 0x000270AE, + 4707: 0x000035AD, + 4708: 0x00006C4A, + 4709: 0x00009D7C, + 4710: 0x00007C56, + 4711: 0x00009B39, + 4712: 0x000057DE, + 4713: 0x0002176C, + 4714: 0x00005C53, + 4715: 0x000064D3, + 4716: 0x000294D0, + 4717: 0x00026335, + 4718: 0x00027164, + 4719: 0x000086AD, + 4720: 0x00020D28, + 4721: 0x00026D22, + 4722: 0x00024AE2, + 4723: 0x00020D71, + 4725: 0x000051FE, + 4726: 0x00021F0F, + 4727: 0x00005D8E, + 4728: 0x00009703, + 4729: 0x00021DD1, + 4730: 0x00009E81, + 4731: 0x0000904C, + 4732: 0x00007B1F, + 4733: 0x00009B02, + 4734: 0x00005CD1, + 4735: 0x00007BA3, + 4736: 0x00006268, + 4737: 0x00006335, + 4738: 0x00009AFF, + 4739: 0x00007BCF, + 4740: 0x00009B2A, + 4741: 0x00007C7E, + 4742: 0x00009B2E, + 4743: 0x00007C42, + 4744: 0x00007C86, + 4745: 0x00009C15, + 4746: 0x00007BFC, + 4747: 0x00009B09, + 4748: 0x00009F17, + 4749: 0x00009C1B, + 4750: 0x0002493E, + 4751: 0x00009F5A, + 4752: 0x00005573, + 4753: 0x00005BC3, + 4754: 0x00004FFD, + 4755: 0x00009E98, + 4756: 0x00004FF2, + 4757: 0x00005260, + 4758: 0x00003E06, + 4759: 0x000052D1, + 4760: 0x00005767, + 4761: 0x00005056, + 4762: 0x000059B7, + 4763: 0x00005E12, + 4764: 0x000097C8, + 4765: 0x00009DAB, + 4766: 0x00008F5C, + 4767: 0x00005469, + 4768: 0x000097B4, + 4769: 0x00009940, + 4770: 0x000097BA, + 4771: 0x0000532C, + 4772: 0x00006130, + 4773: 0x0000692C, + 4774: 0x000053DA, + 4775: 0x00009C0A, + 4776: 0x00009D02, + 4777: 0x00004C3B, + 4778: 0x00009641, + 4779: 0x00006980, + 4780: 0x000050A6, + 4781: 0x00007546, + 4782: 0x0002176D, + 4783: 0x000099DA, + 4784: 0x00005273, + 4786: 0x00009159, + 4787: 0x00009681, + 4788: 0x0000915C, + 4790: 0x00009151, + 4791: 0x00028E97, + 4792: 0x0000637F, + 4793: 0x00026D23, + 4794: 0x00006ACA, + 4795: 0x00005611, + 4796: 0x0000918E, + 4797: 0x0000757A, + 4798: 0x00006285, + 4799: 0x000203FC, + 4800: 0x0000734F, + 4801: 0x00007C70, + 4802: 0x00025C21, + 4803: 0x00023CFD, + 4805: 0x00024919, + 4806: 0x000076D6, + 4807: 0x00009B9D, + 4808: 0x00004E2A, + 4809: 0x00020CD4, + 4810: 0x000083BE, + 4811: 0x00008842, + 4813: 0x00005C4A, + 4814: 0x000069C0, + 4815: 0x000050ED, + 4816: 0x0000577A, + 4817: 0x0000521F, + 4818: 0x00005DF5, + 4819: 0x00004ECE, + 4820: 0x00006C31, + 4821: 0x000201F2, + 4822: 0x00004F39, + 4823: 0x0000549C, + 4824: 0x000054DA, + 4825: 0x0000529A, + 4826: 0x00008D82, + 4827: 0x000035FE, + 4828: 0x00005F0C, + 4829: 0x000035F3, + 4831: 0x00006B52, + 4832: 0x0000917C, + 4833: 0x00009FA5, + 4834: 0x00009B97, + 4835: 0x0000982E, + 4836: 0x000098B4, + 4837: 0x00009ABA, + 4838: 0x00009EA8, + 4839: 0x00009E84, + 4840: 0x0000717A, + 4841: 0x00007B14, + 4843: 0x00006BFA, + 4844: 0x00008818, + 4845: 0x00007F78, + 4847: 0x00005620, + 4848: 0x0002A64A, + 4849: 0x00008E77, + 4850: 0x00009F53, + 4852: 0x00008DD4, + 4853: 0x00008E4F, + 4854: 0x00009E1C, + 4855: 0x00008E01, + 4856: 0x00006282, + 4857: 0x0002837D, + 4858: 0x00008E28, + 4859: 0x00008E75, + 4860: 0x00007AD3, + 4861: 0x00024A77, + 4862: 0x00007A3E, + 4863: 0x000078D8, + 4864: 0x00006CEA, + 4865: 0x00008A67, + 4866: 0x00007607, + 4867: 0x00028A5A, + 4868: 0x00009F26, + 4869: 0x00006CCE, + 4870: 0x000087D6, + 4871: 0x000075C3, + 4872: 0x0002A2B2, + 4873: 0x00007853, + 4874: 0x0002F840, + 4875: 0x00008D0C, + 4876: 0x000072E2, + 4877: 0x00007371, + 4878: 0x00008B2D, + 4879: 0x00007302, + 4880: 0x000074F1, + 4881: 0x00008CEB, + 4882: 0x00024ABB, + 4883: 0x0000862F, + 4884: 0x00005FBA, + 4885: 0x000088A0, + 4886: 0x000044B7, + 4888: 0x0002183B, + 4889: 0x00026E05, + 4891: 0x00008A7E, + 4892: 0x0002251B, + 4894: 0x000060FD, + 4895: 0x00007667, + 4896: 0x00009AD7, + 4897: 0x00009D44, + 4898: 0x0000936E, + 4899: 0x00009B8F, + 4900: 0x000087F5, + 4902: 0x0000880F, + 4903: 0x00008CF7, + 4904: 0x0000732C, + 4905: 0x00009721, + 4906: 0x00009BB0, + 4907: 0x000035D6, + 4908: 0x000072B2, + 4909: 0x00004C07, + 4910: 0x00007C51, + 4911: 0x0000994A, + 4912: 0x00026159, + 4913: 0x00006159, + 4914: 0x00004C04, + 4915: 0x00009E96, + 4916: 0x0000617D, + 4918: 0x0000575F, + 4919: 0x0000616F, + 4920: 0x000062A6, + 4921: 0x00006239, + 4922: 0x000062CE, + 4923: 0x00003A5C, + 4924: 0x000061E2, + 4925: 0x000053AA, + 4926: 0x000233F5, + 4927: 0x00006364, + 4928: 0x00006802, + 4929: 0x000035D2, + 4930: 0x00005D57, + 4931: 0x00028BC2, + 4932: 0x00008FDA, + 4933: 0x00028E39, + 4935: 0x000050D9, + 4936: 0x00021D46, + 4937: 0x00007906, + 4938: 0x00005332, + 4939: 0x00009638, + 4940: 0x00020F3B, + 4941: 0x00004065, + 4943: 0x000077FE, + 4945: 0x00007CC2, + 4946: 0x00025F1A, + 4947: 0x00007CDA, + 4948: 0x00007A2D, + 4949: 0x00008066, + 4950: 0x00008063, + 4951: 0x00007D4D, + 4952: 0x00007505, + 4953: 0x000074F2, + 4954: 0x00008994, + 4955: 0x0000821A, + 4956: 0x0000670C, + 4957: 0x00008062, + 4958: 0x00027486, + 4959: 0x0000805B, + 4960: 0x000074F0, + 4961: 0x00008103, + 4962: 0x00007724, + 4963: 0x00008989, + 4964: 0x000267CC, + 4965: 0x00007553, + 4966: 0x00026ED1, + 4967: 0x000087A9, + 4968: 0x000087CE, + 4969: 0x000081C8, + 4970: 0x0000878C, + 4971: 0x00008A49, + 4972: 0x00008CAD, + 4973: 0x00008B43, + 4974: 0x0000772B, + 4975: 0x000074F8, + 4976: 0x000084DA, + 4977: 0x00003635, + 4978: 0x000069B2, + 4979: 0x00008DA6, + 4981: 0x000089A9, + 4982: 0x00007468, + 4983: 0x00006DB9, + 4984: 0x000087C1, + 4985: 0x00024011, + 4986: 0x000074E7, + 4987: 0x00003DDB, + 4988: 0x00007176, + 4989: 0x000060A4, + 4990: 0x0000619C, + 4991: 0x00003CD1, + 4992: 0x00007162, + 4993: 0x00006077, + 4995: 0x00007F71, + 4996: 0x00028B2D, + 4997: 0x00007250, + 4998: 0x000060E9, + 4999: 0x00004B7E, + 5000: 0x00005220, + 5001: 0x00003C18, + 5002: 0x00023CC7, + 5003: 0x00025ED7, + 5004: 0x00027656, + 5005: 0x00025531, + 5006: 0x00021944, + 5007: 0x000212FE, + 5008: 0x00029903, + 5009: 0x00026DDC, + 5010: 0x000270AD, + 5011: 0x00005CC1, + 5012: 0x000261AD, + 5013: 0x00028A0F, + 5014: 0x00023677, + 5015: 0x000200EE, + 5016: 0x00026846, + 5017: 0x00024F0E, + 5018: 0x00004562, + 5019: 0x00005B1F, + 5020: 0x0002634C, + 5021: 0x00009F50, + 5022: 0x00009EA6, + 5023: 0x0002626B, + 5024: 0x00003000, + 5025: 0x0000FF0C, + 5026: 0x00003001, + 5027: 0x00003002, + 5028: 0x0000FF0E, + 5029: 0x00002027, + 5030: 0x0000FF1B, + 5031: 0x0000FF1A, + 5032: 0x0000FF1F, + 5033: 0x0000FF01, + 5034: 0x0000FE30, + 5035: 0x00002026, + 5036: 0x00002025, + 5037: 0x0000FE50, + 5038: 0x0000FE51, + 5039: 0x0000FE52, + 5040: 0x000000B7, + 5041: 0x0000FE54, + 5042: 0x0000FE55, + 5043: 0x0000FE56, + 5044: 0x0000FE57, + 5045: 0x0000FF5C, + 5046: 0x00002013, + 5047: 0x0000FE31, + 5048: 0x00002014, + 5049: 0x0000FE33, + 5050: 0x00002574, + 5051: 0x0000FE34, + 5052: 0x0000FE4F, + 5053: 0x0000FF08, + 5054: 0x0000FF09, + 5055: 0x0000FE35, + 5056: 0x0000FE36, + 5057: 0x0000FF5B, + 5058: 0x0000FF5D, + 5059: 0x0000FE37, + 5060: 0x0000FE38, + 5061: 0x00003014, + 5062: 0x00003015, + 5063: 0x0000FE39, + 5064: 0x0000FE3A, + 5065: 0x00003010, + 5066: 0x00003011, + 5067: 0x0000FE3B, + 5068: 0x0000FE3C, + 5069: 0x0000300A, + 5070: 0x0000300B, + 5071: 0x0000FE3D, + 5072: 0x0000FE3E, + 5073: 0x00003008, + 5074: 0x00003009, + 5075: 0x0000FE3F, + 5076: 0x0000FE40, + 5077: 0x0000300C, + 5078: 0x0000300D, + 5079: 0x0000FE41, + 5080: 0x0000FE42, + 5081: 0x0000300E, + 5082: 0x0000300F, + 5083: 0x0000FE43, + 5084: 0x0000FE44, + 5085: 0x0000FE59, + 5086: 0x0000FE5A, + 5087: 0x0000FE5B, + 5088: 0x0000FE5C, + 5089: 0x0000FE5D, + 5090: 0x0000FE5E, + 5091: 0x00002018, + 5092: 0x00002019, + 5093: 0x0000201C, + 5094: 0x0000201D, + 5095: 0x0000301D, + 5096: 0x0000301E, + 5097: 0x00002035, + 5098: 0x00002032, + 5099: 0x0000FF03, + 5100: 0x0000FF06, + 5101: 0x0000FF0A, + 5102: 0x0000203B, + 5103: 0x000000A7, + 5104: 0x00003003, + 5105: 0x000025CB, + 5106: 0x000025CF, + 5107: 0x000025B3, + 5108: 0x000025B2, + 5109: 0x000025CE, + 5110: 0x00002606, + 5111: 0x00002605, + 5112: 0x000025C7, + 5113: 0x000025C6, + 5114: 0x000025A1, + 5115: 0x000025A0, + 5116: 0x000025BD, + 5117: 0x000025BC, + 5118: 0x000032A3, + 5119: 0x00002105, + 5120: 0x000000AF, + 5121: 0x0000FFE3, + 5122: 0x0000FF3F, + 5123: 0x000002CD, + 5124: 0x0000FE49, + 5125: 0x0000FE4A, + 5126: 0x0000FE4D, + 5127: 0x0000FE4E, + 5128: 0x0000FE4B, + 5129: 0x0000FE4C, + 5130: 0x0000FE5F, + 5131: 0x0000FE60, + 5132: 0x0000FE61, + 5133: 0x0000FF0B, + 5134: 0x0000FF0D, + 5135: 0x000000D7, + 5136: 0x000000F7, + 5137: 0x000000B1, + 5138: 0x0000221A, + 5139: 0x0000FF1C, + 5140: 0x0000FF1E, + 5141: 0x0000FF1D, + 5142: 0x00002266, + 5143: 0x00002267, + 5144: 0x00002260, + 5145: 0x0000221E, + 5146: 0x00002252, + 5147: 0x00002261, + 5148: 0x0000FE62, + 5149: 0x0000FE63, + 5150: 0x0000FE64, + 5151: 0x0000FE65, + 5152: 0x0000FE66, + 5153: 0x0000FF5E, + 5154: 0x00002229, + 5155: 0x0000222A, + 5156: 0x000022A5, + 5157: 0x00002220, + 5158: 0x0000221F, + 5159: 0x000022BF, + 5160: 0x000033D2, + 5161: 0x000033D1, + 5162: 0x0000222B, + 5163: 0x0000222E, + 5164: 0x00002235, + 5165: 0x00002234, + 5166: 0x00002640, + 5167: 0x00002642, + 5168: 0x00002295, + 5169: 0x00002299, + 5170: 0x00002191, + 5171: 0x00002193, + 5172: 0x00002190, + 5173: 0x00002192, + 5174: 0x00002196, + 5175: 0x00002197, + 5176: 0x00002199, + 5177: 0x00002198, + 5178: 0x00002225, + 5179: 0x00002223, + 5180: 0x0000FF0F, + 5181: 0x0000FF3C, + 5182: 0x00002215, + 5183: 0x0000FE68, + 5184: 0x0000FF04, + 5185: 0x0000FFE5, + 5186: 0x00003012, + 5187: 0x0000FFE0, + 5188: 0x0000FFE1, + 5189: 0x0000FF05, + 5190: 0x0000FF20, + 5191: 0x00002103, + 5192: 0x00002109, + 5193: 0x0000FE69, + 5194: 0x0000FE6A, + 5195: 0x0000FE6B, + 5196: 0x000033D5, + 5197: 0x0000339C, + 5198: 0x0000339D, + 5199: 0x0000339E, + 5200: 0x000033CE, + 5201: 0x000033A1, + 5202: 0x0000338E, + 5203: 0x0000338F, + 5204: 0x000033C4, + 5205: 0x000000B0, + 5206: 0x00005159, + 5207: 0x0000515B, + 5208: 0x0000515E, + 5209: 0x0000515D, + 5210: 0x00005161, + 5211: 0x00005163, + 5212: 0x000055E7, + 5213: 0x000074E9, + 5214: 0x00007CCE, + 5215: 0x00002581, + 5216: 0x00002582, + 5217: 0x00002583, + 5218: 0x00002584, + 5219: 0x00002585, + 5220: 0x00002586, + 5221: 0x00002587, + 5222: 0x00002588, + 5223: 0x0000258F, + 5224: 0x0000258E, + 5225: 0x0000258D, + 5226: 0x0000258C, + 5227: 0x0000258B, + 5228: 0x0000258A, + 5229: 0x00002589, + 5230: 0x0000253C, + 5231: 0x00002534, + 5232: 0x0000252C, + 5233: 0x00002524, + 5234: 0x0000251C, + 5235: 0x00002594, + 5236: 0x00002500, + 5237: 0x00002502, + 5238: 0x00002595, + 5239: 0x0000250C, + 5240: 0x00002510, + 5241: 0x00002514, + 5242: 0x00002518, + 5243: 0x0000256D, + 5244: 0x0000256E, + 5245: 0x00002570, + 5246: 0x0000256F, + 5247: 0x00002550, + 5248: 0x0000255E, + 5249: 0x0000256A, + 5250: 0x00002561, + 5251: 0x000025E2, + 5252: 0x000025E3, + 5253: 0x000025E5, + 5254: 0x000025E4, + 5255: 0x00002571, + 5256: 0x00002572, + 5257: 0x00002573, + 5258: 0x0000FF10, + 5259: 0x0000FF11, + 5260: 0x0000FF12, + 5261: 0x0000FF13, + 5262: 0x0000FF14, + 5263: 0x0000FF15, + 5264: 0x0000FF16, + 5265: 0x0000FF17, + 5266: 0x0000FF18, + 5267: 0x0000FF19, + 5268: 0x00002160, + 5269: 0x00002161, + 5270: 0x00002162, + 5271: 0x00002163, + 5272: 0x00002164, + 5273: 0x00002165, + 5274: 0x00002166, + 5275: 0x00002167, + 5276: 0x00002168, + 5277: 0x00002169, + 5278: 0x00003021, + 5279: 0x00003022, + 5280: 0x00003023, + 5281: 0x00003024, + 5282: 0x00003025, + 5283: 0x00003026, + 5284: 0x00003027, + 5285: 0x00003028, + 5286: 0x00003029, + 5287: 0x00005341, + 5288: 0x00005344, + 5289: 0x00005345, + 5290: 0x0000FF21, + 5291: 0x0000FF22, + 5292: 0x0000FF23, + 5293: 0x0000FF24, + 5294: 0x0000FF25, + 5295: 0x0000FF26, + 5296: 0x0000FF27, + 5297: 0x0000FF28, + 5298: 0x0000FF29, + 5299: 0x0000FF2A, + 5300: 0x0000FF2B, + 5301: 0x0000FF2C, + 5302: 0x0000FF2D, + 5303: 0x0000FF2E, + 5304: 0x0000FF2F, + 5305: 0x0000FF30, + 5306: 0x0000FF31, + 5307: 0x0000FF32, + 5308: 0x0000FF33, + 5309: 0x0000FF34, + 5310: 0x0000FF35, + 5311: 0x0000FF36, + 5312: 0x0000FF37, + 5313: 0x0000FF38, + 5314: 0x0000FF39, + 5315: 0x0000FF3A, + 5316: 0x0000FF41, + 5317: 0x0000FF42, + 5318: 0x0000FF43, + 5319: 0x0000FF44, + 5320: 0x0000FF45, + 5321: 0x0000FF46, + 5322: 0x0000FF47, + 5323: 0x0000FF48, + 5324: 0x0000FF49, + 5325: 0x0000FF4A, + 5326: 0x0000FF4B, + 5327: 0x0000FF4C, + 5328: 0x0000FF4D, + 5329: 0x0000FF4E, + 5330: 0x0000FF4F, + 5331: 0x0000FF50, + 5332: 0x0000FF51, + 5333: 0x0000FF52, + 5334: 0x0000FF53, + 5335: 0x0000FF54, + 5336: 0x0000FF55, + 5337: 0x0000FF56, + 5338: 0x0000FF57, + 5339: 0x0000FF58, + 5340: 0x0000FF59, + 5341: 0x0000FF5A, + 5342: 0x00000391, + 5343: 0x00000392, + 5344: 0x00000393, + 5345: 0x00000394, + 5346: 0x00000395, + 5347: 0x00000396, + 5348: 0x00000397, + 5349: 0x00000398, + 5350: 0x00000399, + 5351: 0x0000039A, + 5352: 0x0000039B, + 5353: 0x0000039C, + 5354: 0x0000039D, + 5355: 0x0000039E, + 5356: 0x0000039F, + 5357: 0x000003A0, + 5358: 0x000003A1, + 5359: 0x000003A3, + 5360: 0x000003A4, + 5361: 0x000003A5, + 5362: 0x000003A6, + 5363: 0x000003A7, + 5364: 0x000003A8, + 5365: 0x000003A9, + 5366: 0x000003B1, + 5367: 0x000003B2, + 5368: 0x000003B3, + 5369: 0x000003B4, + 5370: 0x000003B5, + 5371: 0x000003B6, + 5372: 0x000003B7, + 5373: 0x000003B8, + 5374: 0x000003B9, + 5375: 0x000003BA, + 5376: 0x000003BB, + 5377: 0x000003BC, + 5378: 0x000003BD, + 5379: 0x000003BE, + 5380: 0x000003BF, + 5381: 0x000003C0, + 5382: 0x000003C1, + 5383: 0x000003C3, + 5384: 0x000003C4, + 5385: 0x000003C5, + 5386: 0x000003C6, + 5387: 0x000003C7, + 5388: 0x000003C8, + 5389: 0x000003C9, + 5390: 0x00003105, + 5391: 0x00003106, + 5392: 0x00003107, + 5393: 0x00003108, + 5394: 0x00003109, + 5395: 0x0000310A, + 5396: 0x0000310B, + 5397: 0x0000310C, + 5398: 0x0000310D, + 5399: 0x0000310E, + 5400: 0x0000310F, + 5401: 0x00003110, + 5402: 0x00003111, + 5403: 0x00003112, + 5404: 0x00003113, + 5405: 0x00003114, + 5406: 0x00003115, + 5407: 0x00003116, + 5408: 0x00003117, + 5409: 0x00003118, + 5410: 0x00003119, + 5411: 0x0000311A, + 5412: 0x0000311B, + 5413: 0x0000311C, + 5414: 0x0000311D, + 5415: 0x0000311E, + 5416: 0x0000311F, + 5417: 0x00003120, + 5418: 0x00003121, + 5419: 0x00003122, + 5420: 0x00003123, + 5421: 0x00003124, + 5422: 0x00003125, + 5423: 0x00003126, + 5424: 0x00003127, + 5425: 0x00003128, + 5426: 0x00003129, + 5427: 0x000002D9, + 5428: 0x000002C9, + 5429: 0x000002CA, + 5430: 0x000002C7, + 5431: 0x000002CB, + 5432: 0x00002400, + 5433: 0x00002401, + 5434: 0x00002402, + 5435: 0x00002403, + 5436: 0x00002404, + 5437: 0x00002405, + 5438: 0x00002406, + 5439: 0x00002407, + 5440: 0x00002408, + 5441: 0x00002409, + 5442: 0x0000240A, + 5443: 0x0000240B, + 5444: 0x0000240C, + 5445: 0x0000240D, + 5446: 0x0000240E, + 5447: 0x0000240F, + 5448: 0x00002410, + 5449: 0x00002411, + 5450: 0x00002412, + 5451: 0x00002413, + 5452: 0x00002414, + 5453: 0x00002415, + 5454: 0x00002416, + 5455: 0x00002417, + 5456: 0x00002418, + 5457: 0x00002419, + 5458: 0x0000241A, + 5459: 0x0000241B, + 5460: 0x0000241C, + 5461: 0x0000241D, + 5462: 0x0000241E, + 5463: 0x0000241F, + 5464: 0x00002421, + 5465: 0x000020AC, + 5495: 0x00004E00, + 5496: 0x00004E59, + 5497: 0x00004E01, + 5498: 0x00004E03, + 5499: 0x00004E43, + 5500: 0x00004E5D, + 5501: 0x00004E86, + 5502: 0x00004E8C, + 5503: 0x00004EBA, + 5504: 0x0000513F, + 5505: 0x00005165, + 5506: 0x0000516B, + 5507: 0x000051E0, + 5508: 0x00005200, + 5509: 0x00005201, + 5510: 0x0000529B, + 5511: 0x00005315, + 5512: 0x00005341, + 5513: 0x0000535C, + 5514: 0x000053C8, + 5515: 0x00004E09, + 5516: 0x00004E0B, + 5517: 0x00004E08, + 5518: 0x00004E0A, + 5519: 0x00004E2B, + 5520: 0x00004E38, + 5521: 0x000051E1, + 5522: 0x00004E45, + 5523: 0x00004E48, + 5524: 0x00004E5F, + 5525: 0x00004E5E, + 5526: 0x00004E8E, + 5527: 0x00004EA1, + 5528: 0x00005140, + 5529: 0x00005203, + 5530: 0x000052FA, + 5531: 0x00005343, + 5532: 0x000053C9, + 5533: 0x000053E3, + 5534: 0x0000571F, + 5535: 0x000058EB, + 5536: 0x00005915, + 5537: 0x00005927, + 5538: 0x00005973, + 5539: 0x00005B50, + 5540: 0x00005B51, + 5541: 0x00005B53, + 5542: 0x00005BF8, + 5543: 0x00005C0F, + 5544: 0x00005C22, + 5545: 0x00005C38, + 5546: 0x00005C71, + 5547: 0x00005DDD, + 5548: 0x00005DE5, + 5549: 0x00005DF1, + 5550: 0x00005DF2, + 5551: 0x00005DF3, + 5552: 0x00005DFE, + 5553: 0x00005E72, + 5554: 0x00005EFE, + 5555: 0x00005F0B, + 5556: 0x00005F13, + 5557: 0x0000624D, + 5558: 0x00004E11, + 5559: 0x00004E10, + 5560: 0x00004E0D, + 5561: 0x00004E2D, + 5562: 0x00004E30, + 5563: 0x00004E39, + 5564: 0x00004E4B, + 5565: 0x00005C39, + 5566: 0x00004E88, + 5567: 0x00004E91, + 5568: 0x00004E95, + 5569: 0x00004E92, + 5570: 0x00004E94, + 5571: 0x00004EA2, + 5572: 0x00004EC1, + 5573: 0x00004EC0, + 5574: 0x00004EC3, + 5575: 0x00004EC6, + 5576: 0x00004EC7, + 5577: 0x00004ECD, + 5578: 0x00004ECA, + 5579: 0x00004ECB, + 5580: 0x00004EC4, + 5581: 0x00005143, + 5582: 0x00005141, + 5583: 0x00005167, + 5584: 0x0000516D, + 5585: 0x0000516E, + 5586: 0x0000516C, + 5587: 0x00005197, + 5588: 0x000051F6, + 5589: 0x00005206, + 5590: 0x00005207, + 5591: 0x00005208, + 5592: 0x000052FB, + 5593: 0x000052FE, + 5594: 0x000052FF, + 5595: 0x00005316, + 5596: 0x00005339, + 5597: 0x00005348, + 5598: 0x00005347, + 5599: 0x00005345, + 5600: 0x0000535E, + 5601: 0x00005384, + 5602: 0x000053CB, + 5603: 0x000053CA, + 5604: 0x000053CD, + 5605: 0x000058EC, + 5606: 0x00005929, + 5607: 0x0000592B, + 5608: 0x0000592A, + 5609: 0x0000592D, + 5610: 0x00005B54, + 5611: 0x00005C11, + 5612: 0x00005C24, + 5613: 0x00005C3A, + 5614: 0x00005C6F, + 5615: 0x00005DF4, + 5616: 0x00005E7B, + 5617: 0x00005EFF, + 5618: 0x00005F14, + 5619: 0x00005F15, + 5620: 0x00005FC3, + 5621: 0x00006208, + 5622: 0x00006236, + 5623: 0x0000624B, + 5624: 0x0000624E, + 5625: 0x0000652F, + 5626: 0x00006587, + 5627: 0x00006597, + 5628: 0x000065A4, + 5629: 0x000065B9, + 5630: 0x000065E5, + 5631: 0x000066F0, + 5632: 0x00006708, + 5633: 0x00006728, + 5634: 0x00006B20, + 5635: 0x00006B62, + 5636: 0x00006B79, + 5637: 0x00006BCB, + 5638: 0x00006BD4, + 5639: 0x00006BDB, + 5640: 0x00006C0F, + 5641: 0x00006C34, + 5642: 0x0000706B, + 5643: 0x0000722A, + 5644: 0x00007236, + 5645: 0x0000723B, + 5646: 0x00007247, + 5647: 0x00007259, + 5648: 0x0000725B, + 5649: 0x000072AC, + 5650: 0x0000738B, + 5651: 0x00004E19, + 5652: 0x00004E16, + 5653: 0x00004E15, + 5654: 0x00004E14, + 5655: 0x00004E18, + 5656: 0x00004E3B, + 5657: 0x00004E4D, + 5658: 0x00004E4F, + 5659: 0x00004E4E, + 5660: 0x00004EE5, + 5661: 0x00004ED8, + 5662: 0x00004ED4, + 5663: 0x00004ED5, + 5664: 0x00004ED6, + 5665: 0x00004ED7, + 5666: 0x00004EE3, + 5667: 0x00004EE4, + 5668: 0x00004ED9, + 5669: 0x00004EDE, + 5670: 0x00005145, + 5671: 0x00005144, + 5672: 0x00005189, + 5673: 0x0000518A, + 5674: 0x000051AC, + 5675: 0x000051F9, + 5676: 0x000051FA, + 5677: 0x000051F8, + 5678: 0x0000520A, + 5679: 0x000052A0, + 5680: 0x0000529F, + 5681: 0x00005305, + 5682: 0x00005306, + 5683: 0x00005317, + 5684: 0x0000531D, + 5685: 0x00004EDF, + 5686: 0x0000534A, + 5687: 0x00005349, + 5688: 0x00005361, + 5689: 0x00005360, + 5690: 0x0000536F, + 5691: 0x0000536E, + 5692: 0x000053BB, + 5693: 0x000053EF, + 5694: 0x000053E4, + 5695: 0x000053F3, + 5696: 0x000053EC, + 5697: 0x000053EE, + 5698: 0x000053E9, + 5699: 0x000053E8, + 5700: 0x000053FC, + 5701: 0x000053F8, + 5702: 0x000053F5, + 5703: 0x000053EB, + 5704: 0x000053E6, + 5705: 0x000053EA, + 5706: 0x000053F2, + 5707: 0x000053F1, + 5708: 0x000053F0, + 5709: 0x000053E5, + 5710: 0x000053ED, + 5711: 0x000053FB, + 5712: 0x000056DB, + 5713: 0x000056DA, + 5714: 0x00005916, + 5715: 0x0000592E, + 5716: 0x00005931, + 5717: 0x00005974, + 5718: 0x00005976, + 5719: 0x00005B55, + 5720: 0x00005B83, + 5721: 0x00005C3C, + 5722: 0x00005DE8, + 5723: 0x00005DE7, + 5724: 0x00005DE6, + 5725: 0x00005E02, + 5726: 0x00005E03, + 5727: 0x00005E73, + 5728: 0x00005E7C, + 5729: 0x00005F01, + 5730: 0x00005F18, + 5731: 0x00005F17, + 5732: 0x00005FC5, + 5733: 0x0000620A, + 5734: 0x00006253, + 5735: 0x00006254, + 5736: 0x00006252, + 5737: 0x00006251, + 5738: 0x000065A5, + 5739: 0x000065E6, + 5740: 0x0000672E, + 5741: 0x0000672C, + 5742: 0x0000672A, + 5743: 0x0000672B, + 5744: 0x0000672D, + 5745: 0x00006B63, + 5746: 0x00006BCD, + 5747: 0x00006C11, + 5748: 0x00006C10, + 5749: 0x00006C38, + 5750: 0x00006C41, + 5751: 0x00006C40, + 5752: 0x00006C3E, + 5753: 0x000072AF, + 5754: 0x00007384, + 5755: 0x00007389, + 5756: 0x000074DC, + 5757: 0x000074E6, + 5758: 0x00007518, + 5759: 0x0000751F, + 5760: 0x00007528, + 5761: 0x00007529, + 5762: 0x00007530, + 5763: 0x00007531, + 5764: 0x00007532, + 5765: 0x00007533, + 5766: 0x0000758B, + 5767: 0x0000767D, + 5768: 0x000076AE, + 5769: 0x000076BF, + 5770: 0x000076EE, + 5771: 0x000077DB, + 5772: 0x000077E2, + 5773: 0x000077F3, + 5774: 0x0000793A, + 5775: 0x000079BE, + 5776: 0x00007A74, + 5777: 0x00007ACB, + 5778: 0x00004E1E, + 5779: 0x00004E1F, + 5780: 0x00004E52, + 5781: 0x00004E53, + 5782: 0x00004E69, + 5783: 0x00004E99, + 5784: 0x00004EA4, + 5785: 0x00004EA6, + 5786: 0x00004EA5, + 5787: 0x00004EFF, + 5788: 0x00004F09, + 5789: 0x00004F19, + 5790: 0x00004F0A, + 5791: 0x00004F15, + 5792: 0x00004F0D, + 5793: 0x00004F10, + 5794: 0x00004F11, + 5795: 0x00004F0F, + 5796: 0x00004EF2, + 5797: 0x00004EF6, + 5798: 0x00004EFB, + 5799: 0x00004EF0, + 5800: 0x00004EF3, + 5801: 0x00004EFD, + 5802: 0x00004F01, + 5803: 0x00004F0B, + 5804: 0x00005149, + 5805: 0x00005147, + 5806: 0x00005146, + 5807: 0x00005148, + 5808: 0x00005168, + 5809: 0x00005171, + 5810: 0x0000518D, + 5811: 0x000051B0, + 5812: 0x00005217, + 5813: 0x00005211, + 5814: 0x00005212, + 5815: 0x0000520E, + 5816: 0x00005216, + 5817: 0x000052A3, + 5818: 0x00005308, + 5819: 0x00005321, + 5820: 0x00005320, + 5821: 0x00005370, + 5822: 0x00005371, + 5823: 0x00005409, + 5824: 0x0000540F, + 5825: 0x0000540C, + 5826: 0x0000540A, + 5827: 0x00005410, + 5828: 0x00005401, + 5829: 0x0000540B, + 5830: 0x00005404, + 5831: 0x00005411, + 5832: 0x0000540D, + 5833: 0x00005408, + 5834: 0x00005403, + 5835: 0x0000540E, + 5836: 0x00005406, + 5837: 0x00005412, + 5838: 0x000056E0, + 5839: 0x000056DE, + 5840: 0x000056DD, + 5841: 0x00005733, + 5842: 0x00005730, + 5843: 0x00005728, + 5844: 0x0000572D, + 5845: 0x0000572C, + 5846: 0x0000572F, + 5847: 0x00005729, + 5848: 0x00005919, + 5849: 0x0000591A, + 5850: 0x00005937, + 5851: 0x00005938, + 5852: 0x00005984, + 5853: 0x00005978, + 5854: 0x00005983, + 5855: 0x0000597D, + 5856: 0x00005979, + 5857: 0x00005982, + 5858: 0x00005981, + 5859: 0x00005B57, + 5860: 0x00005B58, + 5861: 0x00005B87, + 5862: 0x00005B88, + 5863: 0x00005B85, + 5864: 0x00005B89, + 5865: 0x00005BFA, + 5866: 0x00005C16, + 5867: 0x00005C79, + 5868: 0x00005DDE, + 5869: 0x00005E06, + 5870: 0x00005E76, + 5871: 0x00005E74, + 5872: 0x00005F0F, + 5873: 0x00005F1B, + 5874: 0x00005FD9, + 5875: 0x00005FD6, + 5876: 0x0000620E, + 5877: 0x0000620C, + 5878: 0x0000620D, + 5879: 0x00006210, + 5880: 0x00006263, + 5881: 0x0000625B, + 5882: 0x00006258, + 5883: 0x00006536, + 5884: 0x000065E9, + 5885: 0x000065E8, + 5886: 0x000065EC, + 5887: 0x000065ED, + 5888: 0x000066F2, + 5889: 0x000066F3, + 5890: 0x00006709, + 5891: 0x0000673D, + 5892: 0x00006734, + 5893: 0x00006731, + 5894: 0x00006735, + 5895: 0x00006B21, + 5896: 0x00006B64, + 5897: 0x00006B7B, + 5898: 0x00006C16, + 5899: 0x00006C5D, + 5900: 0x00006C57, + 5901: 0x00006C59, + 5902: 0x00006C5F, + 5903: 0x00006C60, + 5904: 0x00006C50, + 5905: 0x00006C55, + 5906: 0x00006C61, + 5907: 0x00006C5B, + 5908: 0x00006C4D, + 5909: 0x00006C4E, + 5910: 0x00007070, + 5911: 0x0000725F, + 5912: 0x0000725D, + 5913: 0x0000767E, + 5914: 0x00007AF9, + 5915: 0x00007C73, + 5916: 0x00007CF8, + 5917: 0x00007F36, + 5918: 0x00007F8A, + 5919: 0x00007FBD, + 5920: 0x00008001, + 5921: 0x00008003, + 5922: 0x0000800C, + 5923: 0x00008012, + 5924: 0x00008033, + 5925: 0x0000807F, + 5926: 0x00008089, + 5927: 0x0000808B, + 5928: 0x0000808C, + 5929: 0x000081E3, + 5930: 0x000081EA, + 5931: 0x000081F3, + 5932: 0x000081FC, + 5933: 0x0000820C, + 5934: 0x0000821B, + 5935: 0x0000821F, + 5936: 0x0000826E, + 5937: 0x00008272, + 5938: 0x0000827E, + 5939: 0x0000866B, + 5940: 0x00008840, + 5941: 0x0000884C, + 5942: 0x00008863, + 5943: 0x0000897F, + 5944: 0x00009621, + 5945: 0x00004E32, + 5946: 0x00004EA8, + 5947: 0x00004F4D, + 5948: 0x00004F4F, + 5949: 0x00004F47, + 5950: 0x00004F57, + 5951: 0x00004F5E, + 5952: 0x00004F34, + 5953: 0x00004F5B, + 5954: 0x00004F55, + 5955: 0x00004F30, + 5956: 0x00004F50, + 5957: 0x00004F51, + 5958: 0x00004F3D, + 5959: 0x00004F3A, + 5960: 0x00004F38, + 5961: 0x00004F43, + 5962: 0x00004F54, + 5963: 0x00004F3C, + 5964: 0x00004F46, + 5965: 0x00004F63, + 5966: 0x00004F5C, + 5967: 0x00004F60, + 5968: 0x00004F2F, + 5969: 0x00004F4E, + 5970: 0x00004F36, + 5971: 0x00004F59, + 5972: 0x00004F5D, + 5973: 0x00004F48, + 5974: 0x00004F5A, + 5975: 0x0000514C, + 5976: 0x0000514B, + 5977: 0x0000514D, + 5978: 0x00005175, + 5979: 0x000051B6, + 5980: 0x000051B7, + 5981: 0x00005225, + 5982: 0x00005224, + 5983: 0x00005229, + 5984: 0x0000522A, + 5985: 0x00005228, + 5986: 0x000052AB, + 5987: 0x000052A9, + 5988: 0x000052AA, + 5989: 0x000052AC, + 5990: 0x00005323, + 5991: 0x00005373, + 5992: 0x00005375, + 5993: 0x0000541D, + 5994: 0x0000542D, + 5995: 0x0000541E, + 5996: 0x0000543E, + 5997: 0x00005426, + 5998: 0x0000544E, + 5999: 0x00005427, + 6000: 0x00005446, + 6001: 0x00005443, + 6002: 0x00005433, + 6003: 0x00005448, + 6004: 0x00005442, + 6005: 0x0000541B, + 6006: 0x00005429, + 6007: 0x0000544A, + 6008: 0x00005439, + 6009: 0x0000543B, + 6010: 0x00005438, + 6011: 0x0000542E, + 6012: 0x00005435, + 6013: 0x00005436, + 6014: 0x00005420, + 6015: 0x0000543C, + 6016: 0x00005440, + 6017: 0x00005431, + 6018: 0x0000542B, + 6019: 0x0000541F, + 6020: 0x0000542C, + 6021: 0x000056EA, + 6022: 0x000056F0, + 6023: 0x000056E4, + 6024: 0x000056EB, + 6025: 0x0000574A, + 6026: 0x00005751, + 6027: 0x00005740, + 6028: 0x0000574D, + 6029: 0x00005747, + 6030: 0x0000574E, + 6031: 0x0000573E, + 6032: 0x00005750, + 6033: 0x0000574F, + 6034: 0x0000573B, + 6035: 0x000058EF, + 6036: 0x0000593E, + 6037: 0x0000599D, + 6038: 0x00005992, + 6039: 0x000059A8, + 6040: 0x0000599E, + 6041: 0x000059A3, + 6042: 0x00005999, + 6043: 0x00005996, + 6044: 0x0000598D, + 6045: 0x000059A4, + 6046: 0x00005993, + 6047: 0x0000598A, + 6048: 0x000059A5, + 6049: 0x00005B5D, + 6050: 0x00005B5C, + 6051: 0x00005B5A, + 6052: 0x00005B5B, + 6053: 0x00005B8C, + 6054: 0x00005B8B, + 6055: 0x00005B8F, + 6056: 0x00005C2C, + 6057: 0x00005C40, + 6058: 0x00005C41, + 6059: 0x00005C3F, + 6060: 0x00005C3E, + 6061: 0x00005C90, + 6062: 0x00005C91, + 6063: 0x00005C94, + 6064: 0x00005C8C, + 6065: 0x00005DEB, + 6066: 0x00005E0C, + 6067: 0x00005E8F, + 6068: 0x00005E87, + 6069: 0x00005E8A, + 6070: 0x00005EF7, + 6071: 0x00005F04, + 6072: 0x00005F1F, + 6073: 0x00005F64, + 6074: 0x00005F62, + 6075: 0x00005F77, + 6076: 0x00005F79, + 6077: 0x00005FD8, + 6078: 0x00005FCC, + 6079: 0x00005FD7, + 6080: 0x00005FCD, + 6081: 0x00005FF1, + 6082: 0x00005FEB, + 6083: 0x00005FF8, + 6084: 0x00005FEA, + 6085: 0x00006212, + 6086: 0x00006211, + 6087: 0x00006284, + 6088: 0x00006297, + 6089: 0x00006296, + 6090: 0x00006280, + 6091: 0x00006276, + 6092: 0x00006289, + 6093: 0x0000626D, + 6094: 0x0000628A, + 6095: 0x0000627C, + 6096: 0x0000627E, + 6097: 0x00006279, + 6098: 0x00006273, + 6099: 0x00006292, + 6100: 0x0000626F, + 6101: 0x00006298, + 6102: 0x0000626E, + 6103: 0x00006295, + 6104: 0x00006293, + 6105: 0x00006291, + 6106: 0x00006286, + 6107: 0x00006539, + 6108: 0x0000653B, + 6109: 0x00006538, + 6110: 0x000065F1, + 6111: 0x000066F4, + 6112: 0x0000675F, + 6113: 0x0000674E, + 6114: 0x0000674F, + 6115: 0x00006750, + 6116: 0x00006751, + 6117: 0x0000675C, + 6118: 0x00006756, + 6119: 0x0000675E, + 6120: 0x00006749, + 6121: 0x00006746, + 6122: 0x00006760, + 6123: 0x00006753, + 6124: 0x00006757, + 6125: 0x00006B65, + 6126: 0x00006BCF, + 6127: 0x00006C42, + 6128: 0x00006C5E, + 6129: 0x00006C99, + 6130: 0x00006C81, + 6131: 0x00006C88, + 6132: 0x00006C89, + 6133: 0x00006C85, + 6134: 0x00006C9B, + 6135: 0x00006C6A, + 6136: 0x00006C7A, + 6137: 0x00006C90, + 6138: 0x00006C70, + 6139: 0x00006C8C, + 6140: 0x00006C68, + 6141: 0x00006C96, + 6142: 0x00006C92, + 6143: 0x00006C7D, + 6144: 0x00006C83, + 6145: 0x00006C72, + 6146: 0x00006C7E, + 6147: 0x00006C74, + 6148: 0x00006C86, + 6149: 0x00006C76, + 6150: 0x00006C8D, + 6151: 0x00006C94, + 6152: 0x00006C98, + 6153: 0x00006C82, + 6154: 0x00007076, + 6155: 0x0000707C, + 6156: 0x0000707D, + 6157: 0x00007078, + 6158: 0x00007262, + 6159: 0x00007261, + 6160: 0x00007260, + 6161: 0x000072C4, + 6162: 0x000072C2, + 6163: 0x00007396, + 6164: 0x0000752C, + 6165: 0x0000752B, + 6166: 0x00007537, + 6167: 0x00007538, + 6168: 0x00007682, + 6169: 0x000076EF, + 6170: 0x000077E3, + 6171: 0x000079C1, + 6172: 0x000079C0, + 6173: 0x000079BF, + 6174: 0x00007A76, + 6175: 0x00007CFB, + 6176: 0x00007F55, + 6177: 0x00008096, + 6178: 0x00008093, + 6179: 0x0000809D, + 6180: 0x00008098, + 6181: 0x0000809B, + 6182: 0x0000809A, + 6183: 0x000080B2, + 6184: 0x0000826F, + 6185: 0x00008292, + 6186: 0x0000828B, + 6187: 0x0000828D, + 6188: 0x0000898B, + 6189: 0x000089D2, + 6190: 0x00008A00, + 6191: 0x00008C37, + 6192: 0x00008C46, + 6193: 0x00008C55, + 6194: 0x00008C9D, + 6195: 0x00008D64, + 6196: 0x00008D70, + 6197: 0x00008DB3, + 6198: 0x00008EAB, + 6199: 0x00008ECA, + 6200: 0x00008F9B, + 6201: 0x00008FB0, + 6202: 0x00008FC2, + 6203: 0x00008FC6, + 6204: 0x00008FC5, + 6205: 0x00008FC4, + 6206: 0x00005DE1, + 6207: 0x00009091, + 6208: 0x000090A2, + 6209: 0x000090AA, + 6210: 0x000090A6, + 6211: 0x000090A3, + 6212: 0x00009149, + 6213: 0x000091C6, + 6214: 0x000091CC, + 6215: 0x00009632, + 6216: 0x0000962E, + 6217: 0x00009631, + 6218: 0x0000962A, + 6219: 0x0000962C, + 6220: 0x00004E26, + 6221: 0x00004E56, + 6222: 0x00004E73, + 6223: 0x00004E8B, + 6224: 0x00004E9B, + 6225: 0x00004E9E, + 6226: 0x00004EAB, + 6227: 0x00004EAC, + 6228: 0x00004F6F, + 6229: 0x00004F9D, + 6230: 0x00004F8D, + 6231: 0x00004F73, + 6232: 0x00004F7F, + 6233: 0x00004F6C, + 6234: 0x00004F9B, + 6235: 0x00004F8B, + 6236: 0x00004F86, + 6237: 0x00004F83, + 6238: 0x00004F70, + 6239: 0x00004F75, + 6240: 0x00004F88, + 6241: 0x00004F69, + 6242: 0x00004F7B, + 6243: 0x00004F96, + 6244: 0x00004F7E, + 6245: 0x00004F8F, + 6246: 0x00004F91, + 6247: 0x00004F7A, + 6248: 0x00005154, + 6249: 0x00005152, + 6250: 0x00005155, + 6251: 0x00005169, + 6252: 0x00005177, + 6253: 0x00005176, + 6254: 0x00005178, + 6255: 0x000051BD, + 6256: 0x000051FD, + 6257: 0x0000523B, + 6258: 0x00005238, + 6259: 0x00005237, + 6260: 0x0000523A, + 6261: 0x00005230, + 6262: 0x0000522E, + 6263: 0x00005236, + 6264: 0x00005241, + 6265: 0x000052BE, + 6266: 0x000052BB, + 6267: 0x00005352, + 6268: 0x00005354, + 6269: 0x00005353, + 6270: 0x00005351, + 6271: 0x00005366, + 6272: 0x00005377, + 6273: 0x00005378, + 6274: 0x00005379, + 6275: 0x000053D6, + 6276: 0x000053D4, + 6277: 0x000053D7, + 6278: 0x00005473, + 6279: 0x00005475, + 6280: 0x00005496, + 6281: 0x00005478, + 6282: 0x00005495, + 6283: 0x00005480, + 6284: 0x0000547B, + 6285: 0x00005477, + 6286: 0x00005484, + 6287: 0x00005492, + 6288: 0x00005486, + 6289: 0x0000547C, + 6290: 0x00005490, + 6291: 0x00005471, + 6292: 0x00005476, + 6293: 0x0000548C, + 6294: 0x0000549A, + 6295: 0x00005462, + 6296: 0x00005468, + 6297: 0x0000548B, + 6298: 0x0000547D, + 6299: 0x0000548E, + 6300: 0x000056FA, + 6301: 0x00005783, + 6302: 0x00005777, + 6303: 0x0000576A, + 6304: 0x00005769, + 6305: 0x00005761, + 6306: 0x00005766, + 6307: 0x00005764, + 6308: 0x0000577C, + 6309: 0x0000591C, + 6310: 0x00005949, + 6311: 0x00005947, + 6312: 0x00005948, + 6313: 0x00005944, + 6314: 0x00005954, + 6315: 0x000059BE, + 6316: 0x000059BB, + 6317: 0x000059D4, + 6318: 0x000059B9, + 6319: 0x000059AE, + 6320: 0x000059D1, + 6321: 0x000059C6, + 6322: 0x000059D0, + 6323: 0x000059CD, + 6324: 0x000059CB, + 6325: 0x000059D3, + 6326: 0x000059CA, + 6327: 0x000059AF, + 6328: 0x000059B3, + 6329: 0x000059D2, + 6330: 0x000059C5, + 6331: 0x00005B5F, + 6332: 0x00005B64, + 6333: 0x00005B63, + 6334: 0x00005B97, + 6335: 0x00005B9A, + 6336: 0x00005B98, + 6337: 0x00005B9C, + 6338: 0x00005B99, + 6339: 0x00005B9B, + 6340: 0x00005C1A, + 6341: 0x00005C48, + 6342: 0x00005C45, + 6343: 0x00005C46, + 6344: 0x00005CB7, + 6345: 0x00005CA1, + 6346: 0x00005CB8, + 6347: 0x00005CA9, + 6348: 0x00005CAB, + 6349: 0x00005CB1, + 6350: 0x00005CB3, + 6351: 0x00005E18, + 6352: 0x00005E1A, + 6353: 0x00005E16, + 6354: 0x00005E15, + 6355: 0x00005E1B, + 6356: 0x00005E11, + 6357: 0x00005E78, + 6358: 0x00005E9A, + 6359: 0x00005E97, + 6360: 0x00005E9C, + 6361: 0x00005E95, + 6362: 0x00005E96, + 6363: 0x00005EF6, + 6364: 0x00005F26, + 6365: 0x00005F27, + 6366: 0x00005F29, + 6367: 0x00005F80, + 6368: 0x00005F81, + 6369: 0x00005F7F, + 6370: 0x00005F7C, + 6371: 0x00005FDD, + 6372: 0x00005FE0, + 6373: 0x00005FFD, + 6374: 0x00005FF5, + 6375: 0x00005FFF, + 6376: 0x0000600F, + 6377: 0x00006014, + 6378: 0x0000602F, + 6379: 0x00006035, + 6380: 0x00006016, + 6381: 0x0000602A, + 6382: 0x00006015, + 6383: 0x00006021, + 6384: 0x00006027, + 6385: 0x00006029, + 6386: 0x0000602B, + 6387: 0x0000601B, + 6388: 0x00006216, + 6389: 0x00006215, + 6390: 0x0000623F, + 6391: 0x0000623E, + 6392: 0x00006240, + 6393: 0x0000627F, + 6394: 0x000062C9, + 6395: 0x000062CC, + 6396: 0x000062C4, + 6397: 0x000062BF, + 6398: 0x000062C2, + 6399: 0x000062B9, + 6400: 0x000062D2, + 6401: 0x000062DB, + 6402: 0x000062AB, + 6403: 0x000062D3, + 6404: 0x000062D4, + 6405: 0x000062CB, + 6406: 0x000062C8, + 6407: 0x000062A8, + 6408: 0x000062BD, + 6409: 0x000062BC, + 6410: 0x000062D0, + 6411: 0x000062D9, + 6412: 0x000062C7, + 6413: 0x000062CD, + 6414: 0x000062B5, + 6415: 0x000062DA, + 6416: 0x000062B1, + 6417: 0x000062D8, + 6418: 0x000062D6, + 6419: 0x000062D7, + 6420: 0x000062C6, + 6421: 0x000062AC, + 6422: 0x000062CE, + 6423: 0x0000653E, + 6424: 0x000065A7, + 6425: 0x000065BC, + 6426: 0x000065FA, + 6427: 0x00006614, + 6428: 0x00006613, + 6429: 0x0000660C, + 6430: 0x00006606, + 6431: 0x00006602, + 6432: 0x0000660E, + 6433: 0x00006600, + 6434: 0x0000660F, + 6435: 0x00006615, + 6436: 0x0000660A, + 6437: 0x00006607, + 6438: 0x0000670D, + 6439: 0x0000670B, + 6440: 0x0000676D, + 6441: 0x0000678B, + 6442: 0x00006795, + 6443: 0x00006771, + 6444: 0x0000679C, + 6445: 0x00006773, + 6446: 0x00006777, + 6447: 0x00006787, + 6448: 0x0000679D, + 6449: 0x00006797, + 6450: 0x0000676F, + 6451: 0x00006770, + 6452: 0x0000677F, + 6453: 0x00006789, + 6454: 0x0000677E, + 6455: 0x00006790, + 6456: 0x00006775, + 6457: 0x0000679A, + 6458: 0x00006793, + 6459: 0x0000677C, + 6460: 0x0000676A, + 6461: 0x00006772, + 6462: 0x00006B23, + 6463: 0x00006B66, + 6464: 0x00006B67, + 6465: 0x00006B7F, + 6466: 0x00006C13, + 6467: 0x00006C1B, + 6468: 0x00006CE3, + 6469: 0x00006CE8, + 6470: 0x00006CF3, + 6471: 0x00006CB1, + 6472: 0x00006CCC, + 6473: 0x00006CE5, + 6474: 0x00006CB3, + 6475: 0x00006CBD, + 6476: 0x00006CBE, + 6477: 0x00006CBC, + 6478: 0x00006CE2, + 6479: 0x00006CAB, + 6480: 0x00006CD5, + 6481: 0x00006CD3, + 6482: 0x00006CB8, + 6483: 0x00006CC4, + 6484: 0x00006CB9, + 6485: 0x00006CC1, + 6486: 0x00006CAE, + 6487: 0x00006CD7, + 6488: 0x00006CC5, + 6489: 0x00006CF1, + 6490: 0x00006CBF, + 6491: 0x00006CBB, + 6492: 0x00006CE1, + 6493: 0x00006CDB, + 6494: 0x00006CCA, + 6495: 0x00006CAC, + 6496: 0x00006CEF, + 6497: 0x00006CDC, + 6498: 0x00006CD6, + 6499: 0x00006CE0, + 6500: 0x00007095, + 6501: 0x0000708E, + 6502: 0x00007092, + 6503: 0x0000708A, + 6504: 0x00007099, + 6505: 0x0000722C, + 6506: 0x0000722D, + 6507: 0x00007238, + 6508: 0x00007248, + 6509: 0x00007267, + 6510: 0x00007269, + 6511: 0x000072C0, + 6512: 0x000072CE, + 6513: 0x000072D9, + 6514: 0x000072D7, + 6515: 0x000072D0, + 6516: 0x000073A9, + 6517: 0x000073A8, + 6518: 0x0000739F, + 6519: 0x000073AB, + 6520: 0x000073A5, + 6521: 0x0000753D, + 6522: 0x0000759D, + 6523: 0x00007599, + 6524: 0x0000759A, + 6525: 0x00007684, + 6526: 0x000076C2, + 6527: 0x000076F2, + 6528: 0x000076F4, + 6529: 0x000077E5, + 6530: 0x000077FD, + 6531: 0x0000793E, + 6532: 0x00007940, + 6533: 0x00007941, + 6534: 0x000079C9, + 6535: 0x000079C8, + 6536: 0x00007A7A, + 6537: 0x00007A79, + 6538: 0x00007AFA, + 6539: 0x00007CFE, + 6540: 0x00007F54, + 6541: 0x00007F8C, + 6542: 0x00007F8B, + 6543: 0x00008005, + 6544: 0x000080BA, + 6545: 0x000080A5, + 6546: 0x000080A2, + 6547: 0x000080B1, + 6548: 0x000080A1, + 6549: 0x000080AB, + 6550: 0x000080A9, + 6551: 0x000080B4, + 6552: 0x000080AA, + 6553: 0x000080AF, + 6554: 0x000081E5, + 6555: 0x000081FE, + 6556: 0x0000820D, + 6557: 0x000082B3, + 6558: 0x0000829D, + 6559: 0x00008299, + 6560: 0x000082AD, + 6561: 0x000082BD, + 6562: 0x0000829F, + 6563: 0x000082B9, + 6564: 0x000082B1, + 6565: 0x000082AC, + 6566: 0x000082A5, + 6567: 0x000082AF, + 6568: 0x000082B8, + 6569: 0x000082A3, + 6570: 0x000082B0, + 6571: 0x000082BE, + 6572: 0x000082B7, + 6573: 0x0000864E, + 6574: 0x00008671, + 6575: 0x0000521D, + 6576: 0x00008868, + 6577: 0x00008ECB, + 6578: 0x00008FCE, + 6579: 0x00008FD4, + 6580: 0x00008FD1, + 6581: 0x000090B5, + 6582: 0x000090B8, + 6583: 0x000090B1, + 6584: 0x000090B6, + 6585: 0x000091C7, + 6586: 0x000091D1, + 6587: 0x00009577, + 6588: 0x00009580, + 6589: 0x0000961C, + 6590: 0x00009640, + 6591: 0x0000963F, + 6592: 0x0000963B, + 6593: 0x00009644, + 6594: 0x00009642, + 6595: 0x000096B9, + 6596: 0x000096E8, + 6597: 0x00009752, + 6598: 0x0000975E, + 6599: 0x00004E9F, + 6600: 0x00004EAD, + 6601: 0x00004EAE, + 6602: 0x00004FE1, + 6603: 0x00004FB5, + 6604: 0x00004FAF, + 6605: 0x00004FBF, + 6606: 0x00004FE0, + 6607: 0x00004FD1, + 6608: 0x00004FCF, + 6609: 0x00004FDD, + 6610: 0x00004FC3, + 6611: 0x00004FB6, + 6612: 0x00004FD8, + 6613: 0x00004FDF, + 6614: 0x00004FCA, + 6615: 0x00004FD7, + 6616: 0x00004FAE, + 6617: 0x00004FD0, + 6618: 0x00004FC4, + 6619: 0x00004FC2, + 6620: 0x00004FDA, + 6621: 0x00004FCE, + 6622: 0x00004FDE, + 6623: 0x00004FB7, + 6624: 0x00005157, + 6625: 0x00005192, + 6626: 0x00005191, + 6627: 0x000051A0, + 6628: 0x0000524E, + 6629: 0x00005243, + 6630: 0x0000524A, + 6631: 0x0000524D, + 6632: 0x0000524C, + 6633: 0x0000524B, + 6634: 0x00005247, + 6635: 0x000052C7, + 6636: 0x000052C9, + 6637: 0x000052C3, + 6638: 0x000052C1, + 6639: 0x0000530D, + 6640: 0x00005357, + 6641: 0x0000537B, + 6642: 0x0000539A, + 6643: 0x000053DB, + 6644: 0x000054AC, + 6645: 0x000054C0, + 6646: 0x000054A8, + 6647: 0x000054CE, + 6648: 0x000054C9, + 6649: 0x000054B8, + 6650: 0x000054A6, + 6651: 0x000054B3, + 6652: 0x000054C7, + 6653: 0x000054C2, + 6654: 0x000054BD, + 6655: 0x000054AA, + 6656: 0x000054C1, + 6657: 0x000054C4, + 6658: 0x000054C8, + 6659: 0x000054AF, + 6660: 0x000054AB, + 6661: 0x000054B1, + 6662: 0x000054BB, + 6663: 0x000054A9, + 6664: 0x000054A7, + 6665: 0x000054BF, + 6666: 0x000056FF, + 6667: 0x00005782, + 6668: 0x0000578B, + 6669: 0x000057A0, + 6670: 0x000057A3, + 6671: 0x000057A2, + 6672: 0x000057CE, + 6673: 0x000057AE, + 6674: 0x00005793, + 6675: 0x00005955, + 6676: 0x00005951, + 6677: 0x0000594F, + 6678: 0x0000594E, + 6679: 0x00005950, + 6680: 0x000059DC, + 6681: 0x000059D8, + 6682: 0x000059FF, + 6683: 0x000059E3, + 6684: 0x000059E8, + 6685: 0x00005A03, + 6686: 0x000059E5, + 6687: 0x000059EA, + 6688: 0x000059DA, + 6689: 0x000059E6, + 6690: 0x00005A01, + 6691: 0x000059FB, + 6692: 0x00005B69, + 6693: 0x00005BA3, + 6694: 0x00005BA6, + 6695: 0x00005BA4, + 6696: 0x00005BA2, + 6697: 0x00005BA5, + 6698: 0x00005C01, + 6699: 0x00005C4E, + 6700: 0x00005C4F, + 6701: 0x00005C4D, + 6702: 0x00005C4B, + 6703: 0x00005CD9, + 6704: 0x00005CD2, + 6705: 0x00005DF7, + 6706: 0x00005E1D, + 6707: 0x00005E25, + 6708: 0x00005E1F, + 6709: 0x00005E7D, + 6710: 0x00005EA0, + 6711: 0x00005EA6, + 6712: 0x00005EFA, + 6713: 0x00005F08, + 6714: 0x00005F2D, + 6715: 0x00005F65, + 6716: 0x00005F88, + 6717: 0x00005F85, + 6718: 0x00005F8A, + 6719: 0x00005F8B, + 6720: 0x00005F87, + 6721: 0x00005F8C, + 6722: 0x00005F89, + 6723: 0x00006012, + 6724: 0x0000601D, + 6725: 0x00006020, + 6726: 0x00006025, + 6727: 0x0000600E, + 6728: 0x00006028, + 6729: 0x0000604D, + 6730: 0x00006070, + 6731: 0x00006068, + 6732: 0x00006062, + 6733: 0x00006046, + 6734: 0x00006043, + 6735: 0x0000606C, + 6736: 0x0000606B, + 6737: 0x0000606A, + 6738: 0x00006064, + 6739: 0x00006241, + 6740: 0x000062DC, + 6741: 0x00006316, + 6742: 0x00006309, + 6743: 0x000062FC, + 6744: 0x000062ED, + 6745: 0x00006301, + 6746: 0x000062EE, + 6747: 0x000062FD, + 6748: 0x00006307, + 6749: 0x000062F1, + 6750: 0x000062F7, + 6751: 0x000062EF, + 6752: 0x000062EC, + 6753: 0x000062FE, + 6754: 0x000062F4, + 6755: 0x00006311, + 6756: 0x00006302, + 6757: 0x0000653F, + 6758: 0x00006545, + 6759: 0x000065AB, + 6760: 0x000065BD, + 6761: 0x000065E2, + 6762: 0x00006625, + 6763: 0x0000662D, + 6764: 0x00006620, + 6765: 0x00006627, + 6766: 0x0000662F, + 6767: 0x0000661F, + 6768: 0x00006628, + 6769: 0x00006631, + 6770: 0x00006624, + 6771: 0x000066F7, + 6772: 0x000067FF, + 6773: 0x000067D3, + 6774: 0x000067F1, + 6775: 0x000067D4, + 6776: 0x000067D0, + 6777: 0x000067EC, + 6778: 0x000067B6, + 6779: 0x000067AF, + 6780: 0x000067F5, + 6781: 0x000067E9, + 6782: 0x000067EF, + 6783: 0x000067C4, + 6784: 0x000067D1, + 6785: 0x000067B4, + 6786: 0x000067DA, + 6787: 0x000067E5, + 6788: 0x000067B8, + 6789: 0x000067CF, + 6790: 0x000067DE, + 6791: 0x000067F3, + 6792: 0x000067B0, + 6793: 0x000067D9, + 6794: 0x000067E2, + 6795: 0x000067DD, + 6796: 0x000067D2, + 6797: 0x00006B6A, + 6798: 0x00006B83, + 6799: 0x00006B86, + 6800: 0x00006BB5, + 6801: 0x00006BD2, + 6802: 0x00006BD7, + 6803: 0x00006C1F, + 6804: 0x00006CC9, + 6805: 0x00006D0B, + 6806: 0x00006D32, + 6807: 0x00006D2A, + 6808: 0x00006D41, + 6809: 0x00006D25, + 6810: 0x00006D0C, + 6811: 0x00006D31, + 6812: 0x00006D1E, + 6813: 0x00006D17, + 6814: 0x00006D3B, + 6815: 0x00006D3D, + 6816: 0x00006D3E, + 6817: 0x00006D36, + 6818: 0x00006D1B, + 6819: 0x00006CF5, + 6820: 0x00006D39, + 6821: 0x00006D27, + 6822: 0x00006D38, + 6823: 0x00006D29, + 6824: 0x00006D2E, + 6825: 0x00006D35, + 6826: 0x00006D0E, + 6827: 0x00006D2B, + 6828: 0x000070AB, + 6829: 0x000070BA, + 6830: 0x000070B3, + 6831: 0x000070AC, + 6832: 0x000070AF, + 6833: 0x000070AD, + 6834: 0x000070B8, + 6835: 0x000070AE, + 6836: 0x000070A4, + 6837: 0x00007230, + 6838: 0x00007272, + 6839: 0x0000726F, + 6840: 0x00007274, + 6841: 0x000072E9, + 6842: 0x000072E0, + 6843: 0x000072E1, + 6844: 0x000073B7, + 6845: 0x000073CA, + 6846: 0x000073BB, + 6847: 0x000073B2, + 6848: 0x000073CD, + 6849: 0x000073C0, + 6850: 0x000073B3, + 6851: 0x0000751A, + 6852: 0x0000752D, + 6853: 0x0000754F, + 6854: 0x0000754C, + 6855: 0x0000754E, + 6856: 0x0000754B, + 6857: 0x000075AB, + 6858: 0x000075A4, + 6859: 0x000075A5, + 6860: 0x000075A2, + 6861: 0x000075A3, + 6862: 0x00007678, + 6863: 0x00007686, + 6864: 0x00007687, + 6865: 0x00007688, + 6866: 0x000076C8, + 6867: 0x000076C6, + 6868: 0x000076C3, + 6869: 0x000076C5, + 6870: 0x00007701, + 6871: 0x000076F9, + 6872: 0x000076F8, + 6873: 0x00007709, + 6874: 0x0000770B, + 6875: 0x000076FE, + 6876: 0x000076FC, + 6877: 0x00007707, + 6878: 0x000077DC, + 6879: 0x00007802, + 6880: 0x00007814, + 6881: 0x0000780C, + 6882: 0x0000780D, + 6883: 0x00007946, + 6884: 0x00007949, + 6885: 0x00007948, + 6886: 0x00007947, + 6887: 0x000079B9, + 6888: 0x000079BA, + 6889: 0x000079D1, + 6890: 0x000079D2, + 6891: 0x000079CB, + 6892: 0x00007A7F, + 6893: 0x00007A81, + 6894: 0x00007AFF, + 6895: 0x00007AFD, + 6896: 0x00007C7D, + 6897: 0x00007D02, + 6898: 0x00007D05, + 6899: 0x00007D00, + 6900: 0x00007D09, + 6901: 0x00007D07, + 6902: 0x00007D04, + 6903: 0x00007D06, + 6904: 0x00007F38, + 6905: 0x00007F8E, + 6906: 0x00007FBF, + 6907: 0x00008004, + 6908: 0x00008010, + 6909: 0x0000800D, + 6910: 0x00008011, + 6911: 0x00008036, + 6912: 0x000080D6, + 6913: 0x000080E5, + 6914: 0x000080DA, + 6915: 0x000080C3, + 6916: 0x000080C4, + 6917: 0x000080CC, + 6918: 0x000080E1, + 6919: 0x000080DB, + 6920: 0x000080CE, + 6921: 0x000080DE, + 6922: 0x000080E4, + 6923: 0x000080DD, + 6924: 0x000081F4, + 6925: 0x00008222, + 6926: 0x000082E7, + 6927: 0x00008303, + 6928: 0x00008305, + 6929: 0x000082E3, + 6930: 0x000082DB, + 6931: 0x000082E6, + 6932: 0x00008304, + 6933: 0x000082E5, + 6934: 0x00008302, + 6935: 0x00008309, + 6936: 0x000082D2, + 6937: 0x000082D7, + 6938: 0x000082F1, + 6939: 0x00008301, + 6940: 0x000082DC, + 6941: 0x000082D4, + 6942: 0x000082D1, + 6943: 0x000082DE, + 6944: 0x000082D3, + 6945: 0x000082DF, + 6946: 0x000082EF, + 6947: 0x00008306, + 6948: 0x00008650, + 6949: 0x00008679, + 6950: 0x0000867B, + 6951: 0x0000867A, + 6952: 0x0000884D, + 6953: 0x0000886B, + 6954: 0x00008981, + 6955: 0x000089D4, + 6956: 0x00008A08, + 6957: 0x00008A02, + 6958: 0x00008A03, + 6959: 0x00008C9E, + 6960: 0x00008CA0, + 6961: 0x00008D74, + 6962: 0x00008D73, + 6963: 0x00008DB4, + 6964: 0x00008ECD, + 6965: 0x00008ECC, + 6966: 0x00008FF0, + 6967: 0x00008FE6, + 6968: 0x00008FE2, + 6969: 0x00008FEA, + 6970: 0x00008FE5, + 6971: 0x00008FED, + 6972: 0x00008FEB, + 6973: 0x00008FE4, + 6974: 0x00008FE8, + 6975: 0x000090CA, + 6976: 0x000090CE, + 6977: 0x000090C1, + 6978: 0x000090C3, + 6979: 0x0000914B, + 6980: 0x0000914A, + 6981: 0x000091CD, + 6982: 0x00009582, + 6983: 0x00009650, + 6984: 0x0000964B, + 6985: 0x0000964C, + 6986: 0x0000964D, + 6987: 0x00009762, + 6988: 0x00009769, + 6989: 0x000097CB, + 6990: 0x000097ED, + 6991: 0x000097F3, + 6992: 0x00009801, + 6993: 0x000098A8, + 6994: 0x000098DB, + 6995: 0x000098DF, + 6996: 0x00009996, + 6997: 0x00009999, + 6998: 0x00004E58, + 6999: 0x00004EB3, + 7000: 0x0000500C, + 7001: 0x0000500D, + 7002: 0x00005023, + 7003: 0x00004FEF, + 7004: 0x00005026, + 7005: 0x00005025, + 7006: 0x00004FF8, + 7007: 0x00005029, + 7008: 0x00005016, + 7009: 0x00005006, + 7010: 0x0000503C, + 7011: 0x0000501F, + 7012: 0x0000501A, + 7013: 0x00005012, + 7014: 0x00005011, + 7015: 0x00004FFA, + 7016: 0x00005000, + 7017: 0x00005014, + 7018: 0x00005028, + 7019: 0x00004FF1, + 7020: 0x00005021, + 7021: 0x0000500B, + 7022: 0x00005019, + 7023: 0x00005018, + 7024: 0x00004FF3, + 7025: 0x00004FEE, + 7026: 0x0000502D, + 7027: 0x0000502A, + 7028: 0x00004FFE, + 7029: 0x0000502B, + 7030: 0x00005009, + 7031: 0x0000517C, + 7032: 0x000051A4, + 7033: 0x000051A5, + 7034: 0x000051A2, + 7035: 0x000051CD, + 7036: 0x000051CC, + 7037: 0x000051C6, + 7038: 0x000051CB, + 7039: 0x00005256, + 7040: 0x0000525C, + 7041: 0x00005254, + 7042: 0x0000525B, + 7043: 0x0000525D, + 7044: 0x0000532A, + 7045: 0x0000537F, + 7046: 0x0000539F, + 7047: 0x0000539D, + 7048: 0x000053DF, + 7049: 0x000054E8, + 7050: 0x00005510, + 7051: 0x00005501, + 7052: 0x00005537, + 7053: 0x000054FC, + 7054: 0x000054E5, + 7055: 0x000054F2, + 7056: 0x00005506, + 7057: 0x000054FA, + 7058: 0x00005514, + 7059: 0x000054E9, + 7060: 0x000054ED, + 7061: 0x000054E1, + 7062: 0x00005509, + 7063: 0x000054EE, + 7064: 0x000054EA, + 7065: 0x000054E6, + 7066: 0x00005527, + 7067: 0x00005507, + 7068: 0x000054FD, + 7069: 0x0000550F, + 7070: 0x00005703, + 7071: 0x00005704, + 7072: 0x000057C2, + 7073: 0x000057D4, + 7074: 0x000057CB, + 7075: 0x000057C3, + 7076: 0x00005809, + 7077: 0x0000590F, + 7078: 0x00005957, + 7079: 0x00005958, + 7080: 0x0000595A, + 7081: 0x00005A11, + 7082: 0x00005A18, + 7083: 0x00005A1C, + 7084: 0x00005A1F, + 7085: 0x00005A1B, + 7086: 0x00005A13, + 7087: 0x000059EC, + 7088: 0x00005A20, + 7089: 0x00005A23, + 7090: 0x00005A29, + 7091: 0x00005A25, + 7092: 0x00005A0C, + 7093: 0x00005A09, + 7094: 0x00005B6B, + 7095: 0x00005C58, + 7096: 0x00005BB0, + 7097: 0x00005BB3, + 7098: 0x00005BB6, + 7099: 0x00005BB4, + 7100: 0x00005BAE, + 7101: 0x00005BB5, + 7102: 0x00005BB9, + 7103: 0x00005BB8, + 7104: 0x00005C04, + 7105: 0x00005C51, + 7106: 0x00005C55, + 7107: 0x00005C50, + 7108: 0x00005CED, + 7109: 0x00005CFD, + 7110: 0x00005CFB, + 7111: 0x00005CEA, + 7112: 0x00005CE8, + 7113: 0x00005CF0, + 7114: 0x00005CF6, + 7115: 0x00005D01, + 7116: 0x00005CF4, + 7117: 0x00005DEE, + 7118: 0x00005E2D, + 7119: 0x00005E2B, + 7120: 0x00005EAB, + 7121: 0x00005EAD, + 7122: 0x00005EA7, + 7123: 0x00005F31, + 7124: 0x00005F92, + 7125: 0x00005F91, + 7126: 0x00005F90, + 7127: 0x00006059, + 7128: 0x00006063, + 7129: 0x00006065, + 7130: 0x00006050, + 7131: 0x00006055, + 7132: 0x0000606D, + 7133: 0x00006069, + 7134: 0x0000606F, + 7135: 0x00006084, + 7136: 0x0000609F, + 7137: 0x0000609A, + 7138: 0x0000608D, + 7139: 0x00006094, + 7140: 0x0000608C, + 7141: 0x00006085, + 7142: 0x00006096, + 7143: 0x00006247, + 7144: 0x000062F3, + 7145: 0x00006308, + 7146: 0x000062FF, + 7147: 0x0000634E, + 7148: 0x0000633E, + 7149: 0x0000632F, + 7150: 0x00006355, + 7151: 0x00006342, + 7152: 0x00006346, + 7153: 0x0000634F, + 7154: 0x00006349, + 7155: 0x0000633A, + 7156: 0x00006350, + 7157: 0x0000633D, + 7158: 0x0000632A, + 7159: 0x0000632B, + 7160: 0x00006328, + 7161: 0x0000634D, + 7162: 0x0000634C, + 7163: 0x00006548, + 7164: 0x00006549, + 7165: 0x00006599, + 7166: 0x000065C1, + 7167: 0x000065C5, + 7168: 0x00006642, + 7169: 0x00006649, + 7170: 0x0000664F, + 7171: 0x00006643, + 7172: 0x00006652, + 7173: 0x0000664C, + 7174: 0x00006645, + 7175: 0x00006641, + 7176: 0x000066F8, + 7177: 0x00006714, + 7178: 0x00006715, + 7179: 0x00006717, + 7180: 0x00006821, + 7181: 0x00006838, + 7182: 0x00006848, + 7183: 0x00006846, + 7184: 0x00006853, + 7185: 0x00006839, + 7186: 0x00006842, + 7187: 0x00006854, + 7188: 0x00006829, + 7189: 0x000068B3, + 7190: 0x00006817, + 7191: 0x0000684C, + 7192: 0x00006851, + 7193: 0x0000683D, + 7194: 0x000067F4, + 7195: 0x00006850, + 7196: 0x00006840, + 7197: 0x0000683C, + 7198: 0x00006843, + 7199: 0x0000682A, + 7200: 0x00006845, + 7201: 0x00006813, + 7202: 0x00006818, + 7203: 0x00006841, + 7204: 0x00006B8A, + 7205: 0x00006B89, + 7206: 0x00006BB7, + 7207: 0x00006C23, + 7208: 0x00006C27, + 7209: 0x00006C28, + 7210: 0x00006C26, + 7211: 0x00006C24, + 7212: 0x00006CF0, + 7213: 0x00006D6A, + 7214: 0x00006D95, + 7215: 0x00006D88, + 7216: 0x00006D87, + 7217: 0x00006D66, + 7218: 0x00006D78, + 7219: 0x00006D77, + 7220: 0x00006D59, + 7221: 0x00006D93, + 7222: 0x00006D6C, + 7223: 0x00006D89, + 7224: 0x00006D6E, + 7225: 0x00006D5A, + 7226: 0x00006D74, + 7227: 0x00006D69, + 7228: 0x00006D8C, + 7229: 0x00006D8A, + 7230: 0x00006D79, + 7231: 0x00006D85, + 7232: 0x00006D65, + 7233: 0x00006D94, + 7234: 0x000070CA, + 7235: 0x000070D8, + 7236: 0x000070E4, + 7237: 0x000070D9, + 7238: 0x000070C8, + 7239: 0x000070CF, + 7240: 0x00007239, + 7241: 0x00007279, + 7242: 0x000072FC, + 7243: 0x000072F9, + 7244: 0x000072FD, + 7245: 0x000072F8, + 7246: 0x000072F7, + 7247: 0x00007386, + 7248: 0x000073ED, + 7249: 0x00007409, + 7250: 0x000073EE, + 7251: 0x000073E0, + 7252: 0x000073EA, + 7253: 0x000073DE, + 7254: 0x00007554, + 7255: 0x0000755D, + 7256: 0x0000755C, + 7257: 0x0000755A, + 7258: 0x00007559, + 7259: 0x000075BE, + 7260: 0x000075C5, + 7261: 0x000075C7, + 7262: 0x000075B2, + 7263: 0x000075B3, + 7264: 0x000075BD, + 7265: 0x000075BC, + 7266: 0x000075B9, + 7267: 0x000075C2, + 7268: 0x000075B8, + 7269: 0x0000768B, + 7270: 0x000076B0, + 7271: 0x000076CA, + 7272: 0x000076CD, + 7273: 0x000076CE, + 7274: 0x00007729, + 7275: 0x0000771F, + 7276: 0x00007720, + 7277: 0x00007728, + 7278: 0x000077E9, + 7279: 0x00007830, + 7280: 0x00007827, + 7281: 0x00007838, + 7282: 0x0000781D, + 7283: 0x00007834, + 7284: 0x00007837, + 7285: 0x00007825, + 7286: 0x0000782D, + 7287: 0x00007820, + 7288: 0x0000781F, + 7289: 0x00007832, + 7290: 0x00007955, + 7291: 0x00007950, + 7292: 0x00007960, + 7293: 0x0000795F, + 7294: 0x00007956, + 7295: 0x0000795E, + 7296: 0x0000795D, + 7297: 0x00007957, + 7298: 0x0000795A, + 7299: 0x000079E4, + 7300: 0x000079E3, + 7301: 0x000079E7, + 7302: 0x000079DF, + 7303: 0x000079E6, + 7304: 0x000079E9, + 7305: 0x000079D8, + 7306: 0x00007A84, + 7307: 0x00007A88, + 7308: 0x00007AD9, + 7309: 0x00007B06, + 7310: 0x00007B11, + 7311: 0x00007C89, + 7312: 0x00007D21, + 7313: 0x00007D17, + 7314: 0x00007D0B, + 7315: 0x00007D0A, + 7316: 0x00007D20, + 7317: 0x00007D22, + 7318: 0x00007D14, + 7319: 0x00007D10, + 7320: 0x00007D15, + 7321: 0x00007D1A, + 7322: 0x00007D1C, + 7323: 0x00007D0D, + 7324: 0x00007D19, + 7325: 0x00007D1B, + 7326: 0x00007F3A, + 7327: 0x00007F5F, + 7328: 0x00007F94, + 7329: 0x00007FC5, + 7330: 0x00007FC1, + 7331: 0x00008006, + 7332: 0x00008018, + 7333: 0x00008015, + 7334: 0x00008019, + 7335: 0x00008017, + 7336: 0x0000803D, + 7337: 0x0000803F, + 7338: 0x000080F1, + 7339: 0x00008102, + 7340: 0x000080F0, + 7341: 0x00008105, + 7342: 0x000080ED, + 7343: 0x000080F4, + 7344: 0x00008106, + 7345: 0x000080F8, + 7346: 0x000080F3, + 7347: 0x00008108, + 7348: 0x000080FD, + 7349: 0x0000810A, + 7350: 0x000080FC, + 7351: 0x000080EF, + 7352: 0x000081ED, + 7353: 0x000081EC, + 7354: 0x00008200, + 7355: 0x00008210, + 7356: 0x0000822A, + 7357: 0x0000822B, + 7358: 0x00008228, + 7359: 0x0000822C, + 7360: 0x000082BB, + 7361: 0x0000832B, + 7362: 0x00008352, + 7363: 0x00008354, + 7364: 0x0000834A, + 7365: 0x00008338, + 7366: 0x00008350, + 7367: 0x00008349, + 7368: 0x00008335, + 7369: 0x00008334, + 7370: 0x0000834F, + 7371: 0x00008332, + 7372: 0x00008339, + 7373: 0x00008336, + 7374: 0x00008317, + 7375: 0x00008340, + 7376: 0x00008331, + 7377: 0x00008328, + 7378: 0x00008343, + 7379: 0x00008654, + 7380: 0x0000868A, + 7381: 0x000086AA, + 7382: 0x00008693, + 7383: 0x000086A4, + 7384: 0x000086A9, + 7385: 0x0000868C, + 7386: 0x000086A3, + 7387: 0x0000869C, + 7388: 0x00008870, + 7389: 0x00008877, + 7390: 0x00008881, + 7391: 0x00008882, + 7392: 0x0000887D, + 7393: 0x00008879, + 7394: 0x00008A18, + 7395: 0x00008A10, + 7396: 0x00008A0E, + 7397: 0x00008A0C, + 7398: 0x00008A15, + 7399: 0x00008A0A, + 7400: 0x00008A17, + 7401: 0x00008A13, + 7402: 0x00008A16, + 7403: 0x00008A0F, + 7404: 0x00008A11, + 7405: 0x00008C48, + 7406: 0x00008C7A, + 7407: 0x00008C79, + 7408: 0x00008CA1, + 7409: 0x00008CA2, + 7410: 0x00008D77, + 7411: 0x00008EAC, + 7412: 0x00008ED2, + 7413: 0x00008ED4, + 7414: 0x00008ECF, + 7415: 0x00008FB1, + 7416: 0x00009001, + 7417: 0x00009006, + 7418: 0x00008FF7, + 7419: 0x00009000, + 7420: 0x00008FFA, + 7421: 0x00008FF4, + 7422: 0x00009003, + 7423: 0x00008FFD, + 7424: 0x00009005, + 7425: 0x00008FF8, + 7426: 0x00009095, + 7427: 0x000090E1, + 7428: 0x000090DD, + 7429: 0x000090E2, + 7430: 0x00009152, + 7431: 0x0000914D, + 7432: 0x0000914C, + 7433: 0x000091D8, + 7434: 0x000091DD, + 7435: 0x000091D7, + 7436: 0x000091DC, + 7437: 0x000091D9, + 7438: 0x00009583, + 7439: 0x00009662, + 7440: 0x00009663, + 7441: 0x00009661, + 7442: 0x0000965B, + 7443: 0x0000965D, + 7444: 0x00009664, + 7445: 0x00009658, + 7446: 0x0000965E, + 7447: 0x000096BB, + 7448: 0x000098E2, + 7449: 0x000099AC, + 7450: 0x00009AA8, + 7451: 0x00009AD8, + 7452: 0x00009B25, + 7453: 0x00009B32, + 7454: 0x00009B3C, + 7455: 0x00004E7E, + 7456: 0x0000507A, + 7457: 0x0000507D, + 7458: 0x0000505C, + 7459: 0x00005047, + 7460: 0x00005043, + 7461: 0x0000504C, + 7462: 0x0000505A, + 7463: 0x00005049, + 7464: 0x00005065, + 7465: 0x00005076, + 7466: 0x0000504E, + 7467: 0x00005055, + 7468: 0x00005075, + 7469: 0x00005074, + 7470: 0x00005077, + 7471: 0x0000504F, + 7472: 0x0000500F, + 7473: 0x0000506F, + 7474: 0x0000506D, + 7475: 0x0000515C, + 7476: 0x00005195, + 7477: 0x000051F0, + 7478: 0x0000526A, + 7479: 0x0000526F, + 7480: 0x000052D2, + 7481: 0x000052D9, + 7482: 0x000052D8, + 7483: 0x000052D5, + 7484: 0x00005310, + 7485: 0x0000530F, + 7486: 0x00005319, + 7487: 0x0000533F, + 7488: 0x00005340, + 7489: 0x0000533E, + 7490: 0x000053C3, + 7491: 0x000066FC, + 7492: 0x00005546, + 7493: 0x0000556A, + 7494: 0x00005566, + 7495: 0x00005544, + 7496: 0x0000555E, + 7497: 0x00005561, + 7498: 0x00005543, + 7499: 0x0000554A, + 7500: 0x00005531, + 7501: 0x00005556, + 7502: 0x0000554F, + 7503: 0x00005555, + 7504: 0x0000552F, + 7505: 0x00005564, + 7506: 0x00005538, + 7507: 0x0000552E, + 7508: 0x0000555C, + 7509: 0x0000552C, + 7510: 0x00005563, + 7511: 0x00005533, + 7512: 0x00005541, + 7513: 0x00005557, + 7514: 0x00005708, + 7515: 0x0000570B, + 7516: 0x00005709, + 7517: 0x000057DF, + 7518: 0x00005805, + 7519: 0x0000580A, + 7520: 0x00005806, + 7521: 0x000057E0, + 7522: 0x000057E4, + 7523: 0x000057FA, + 7524: 0x00005802, + 7525: 0x00005835, + 7526: 0x000057F7, + 7527: 0x000057F9, + 7528: 0x00005920, + 7529: 0x00005962, + 7530: 0x00005A36, + 7531: 0x00005A41, + 7532: 0x00005A49, + 7533: 0x00005A66, + 7534: 0x00005A6A, + 7535: 0x00005A40, + 7536: 0x00005A3C, + 7537: 0x00005A62, + 7538: 0x00005A5A, + 7539: 0x00005A46, + 7540: 0x00005A4A, + 7541: 0x00005B70, + 7542: 0x00005BC7, + 7543: 0x00005BC5, + 7544: 0x00005BC4, + 7545: 0x00005BC2, + 7546: 0x00005BBF, + 7547: 0x00005BC6, + 7548: 0x00005C09, + 7549: 0x00005C08, + 7550: 0x00005C07, + 7551: 0x00005C60, + 7552: 0x00005C5C, + 7553: 0x00005C5D, + 7554: 0x00005D07, + 7555: 0x00005D06, + 7556: 0x00005D0E, + 7557: 0x00005D1B, + 7558: 0x00005D16, + 7559: 0x00005D22, + 7560: 0x00005D11, + 7561: 0x00005D29, + 7562: 0x00005D14, + 7563: 0x00005D19, + 7564: 0x00005D24, + 7565: 0x00005D27, + 7566: 0x00005D17, + 7567: 0x00005DE2, + 7568: 0x00005E38, + 7569: 0x00005E36, + 7570: 0x00005E33, + 7571: 0x00005E37, + 7572: 0x00005EB7, + 7573: 0x00005EB8, + 7574: 0x00005EB6, + 7575: 0x00005EB5, + 7576: 0x00005EBE, + 7577: 0x00005F35, + 7578: 0x00005F37, + 7579: 0x00005F57, + 7580: 0x00005F6C, + 7581: 0x00005F69, + 7582: 0x00005F6B, + 7583: 0x00005F97, + 7584: 0x00005F99, + 7585: 0x00005F9E, + 7586: 0x00005F98, + 7587: 0x00005FA1, + 7588: 0x00005FA0, + 7589: 0x00005F9C, + 7590: 0x0000607F, + 7591: 0x000060A3, + 7592: 0x00006089, + 7593: 0x000060A0, + 7594: 0x000060A8, + 7595: 0x000060CB, + 7596: 0x000060B4, + 7597: 0x000060E6, + 7598: 0x000060BD, + 7599: 0x000060C5, + 7600: 0x000060BB, + 7601: 0x000060B5, + 7602: 0x000060DC, + 7603: 0x000060BC, + 7604: 0x000060D8, + 7605: 0x000060D5, + 7606: 0x000060C6, + 7607: 0x000060DF, + 7608: 0x000060B8, + 7609: 0x000060DA, + 7610: 0x000060C7, + 7611: 0x0000621A, + 7612: 0x0000621B, + 7613: 0x00006248, + 7614: 0x000063A0, + 7615: 0x000063A7, + 7616: 0x00006372, + 7617: 0x00006396, + 7618: 0x000063A2, + 7619: 0x000063A5, + 7620: 0x00006377, + 7621: 0x00006367, + 7622: 0x00006398, + 7623: 0x000063AA, + 7624: 0x00006371, + 7625: 0x000063A9, + 7626: 0x00006389, + 7627: 0x00006383, + 7628: 0x0000639B, + 7629: 0x0000636B, + 7630: 0x000063A8, + 7631: 0x00006384, + 7632: 0x00006388, + 7633: 0x00006399, + 7634: 0x000063A1, + 7635: 0x000063AC, + 7636: 0x00006392, + 7637: 0x0000638F, + 7638: 0x00006380, + 7639: 0x0000637B, + 7640: 0x00006369, + 7641: 0x00006368, + 7642: 0x0000637A, + 7643: 0x0000655D, + 7644: 0x00006556, + 7645: 0x00006551, + 7646: 0x00006559, + 7647: 0x00006557, + 7648: 0x0000555F, + 7649: 0x0000654F, + 7650: 0x00006558, + 7651: 0x00006555, + 7652: 0x00006554, + 7653: 0x0000659C, + 7654: 0x0000659B, + 7655: 0x000065AC, + 7656: 0x000065CF, + 7657: 0x000065CB, + 7658: 0x000065CC, + 7659: 0x000065CE, + 7660: 0x0000665D, + 7661: 0x0000665A, + 7662: 0x00006664, + 7663: 0x00006668, + 7664: 0x00006666, + 7665: 0x0000665E, + 7666: 0x000066F9, + 7667: 0x000052D7, + 7668: 0x0000671B, + 7669: 0x00006881, + 7670: 0x000068AF, + 7671: 0x000068A2, + 7672: 0x00006893, + 7673: 0x000068B5, + 7674: 0x0000687F, + 7675: 0x00006876, + 7676: 0x000068B1, + 7677: 0x000068A7, + 7678: 0x00006897, + 7679: 0x000068B0, + 7680: 0x00006883, + 7681: 0x000068C4, + 7682: 0x000068AD, + 7683: 0x00006886, + 7684: 0x00006885, + 7685: 0x00006894, + 7686: 0x0000689D, + 7687: 0x000068A8, + 7688: 0x0000689F, + 7689: 0x000068A1, + 7690: 0x00006882, + 7691: 0x00006B32, + 7692: 0x00006BBA, + 7693: 0x00006BEB, + 7694: 0x00006BEC, + 7695: 0x00006C2B, + 7696: 0x00006D8E, + 7697: 0x00006DBC, + 7698: 0x00006DF3, + 7699: 0x00006DD9, + 7700: 0x00006DB2, + 7701: 0x00006DE1, + 7702: 0x00006DCC, + 7703: 0x00006DE4, + 7704: 0x00006DFB, + 7705: 0x00006DFA, + 7706: 0x00006E05, + 7707: 0x00006DC7, + 7708: 0x00006DCB, + 7709: 0x00006DAF, + 7710: 0x00006DD1, + 7711: 0x00006DAE, + 7712: 0x00006DDE, + 7713: 0x00006DF9, + 7714: 0x00006DB8, + 7715: 0x00006DF7, + 7716: 0x00006DF5, + 7717: 0x00006DC5, + 7718: 0x00006DD2, + 7719: 0x00006E1A, + 7720: 0x00006DB5, + 7721: 0x00006DDA, + 7722: 0x00006DEB, + 7723: 0x00006DD8, + 7724: 0x00006DEA, + 7725: 0x00006DF1, + 7726: 0x00006DEE, + 7727: 0x00006DE8, + 7728: 0x00006DC6, + 7729: 0x00006DC4, + 7730: 0x00006DAA, + 7731: 0x00006DEC, + 7732: 0x00006DBF, + 7733: 0x00006DE6, + 7734: 0x000070F9, + 7735: 0x00007109, + 7736: 0x0000710A, + 7737: 0x000070FD, + 7738: 0x000070EF, + 7739: 0x0000723D, + 7740: 0x0000727D, + 7741: 0x00007281, + 7742: 0x0000731C, + 7743: 0x0000731B, + 7744: 0x00007316, + 7745: 0x00007313, + 7746: 0x00007319, + 7747: 0x00007387, + 7748: 0x00007405, + 7749: 0x0000740A, + 7750: 0x00007403, + 7751: 0x00007406, + 7752: 0x000073FE, + 7753: 0x0000740D, + 7754: 0x000074E0, + 7755: 0x000074F6, + 7756: 0x000074F7, + 7757: 0x0000751C, + 7758: 0x00007522, + 7759: 0x00007565, + 7760: 0x00007566, + 7761: 0x00007562, + 7762: 0x00007570, + 7763: 0x0000758F, + 7764: 0x000075D4, + 7765: 0x000075D5, + 7766: 0x000075B5, + 7767: 0x000075CA, + 7768: 0x000075CD, + 7769: 0x0000768E, + 7770: 0x000076D4, + 7771: 0x000076D2, + 7772: 0x000076DB, + 7773: 0x00007737, + 7774: 0x0000773E, + 7775: 0x0000773C, + 7776: 0x00007736, + 7777: 0x00007738, + 7778: 0x0000773A, + 7779: 0x0000786B, + 7780: 0x00007843, + 7781: 0x0000784E, + 7782: 0x00007965, + 7783: 0x00007968, + 7784: 0x0000796D, + 7785: 0x000079FB, + 7786: 0x00007A92, + 7787: 0x00007A95, + 7788: 0x00007B20, + 7789: 0x00007B28, + 7790: 0x00007B1B, + 7791: 0x00007B2C, + 7792: 0x00007B26, + 7793: 0x00007B19, + 7794: 0x00007B1E, + 7795: 0x00007B2E, + 7796: 0x00007C92, + 7797: 0x00007C97, + 7798: 0x00007C95, + 7799: 0x00007D46, + 7800: 0x00007D43, + 7801: 0x00007D71, + 7802: 0x00007D2E, + 7803: 0x00007D39, + 7804: 0x00007D3C, + 7805: 0x00007D40, + 7806: 0x00007D30, + 7807: 0x00007D33, + 7808: 0x00007D44, + 7809: 0x00007D2F, + 7810: 0x00007D42, + 7811: 0x00007D32, + 7812: 0x00007D31, + 7813: 0x00007F3D, + 7814: 0x00007F9E, + 7815: 0x00007F9A, + 7816: 0x00007FCC, + 7817: 0x00007FCE, + 7818: 0x00007FD2, + 7819: 0x0000801C, + 7820: 0x0000804A, + 7821: 0x00008046, + 7822: 0x0000812F, + 7823: 0x00008116, + 7824: 0x00008123, + 7825: 0x0000812B, + 7826: 0x00008129, + 7827: 0x00008130, + 7828: 0x00008124, + 7829: 0x00008202, + 7830: 0x00008235, + 7831: 0x00008237, + 7832: 0x00008236, + 7833: 0x00008239, + 7834: 0x0000838E, + 7835: 0x0000839E, + 7836: 0x00008398, + 7837: 0x00008378, + 7838: 0x000083A2, + 7839: 0x00008396, + 7840: 0x000083BD, + 7841: 0x000083AB, + 7842: 0x00008392, + 7843: 0x0000838A, + 7844: 0x00008393, + 7845: 0x00008389, + 7846: 0x000083A0, + 7847: 0x00008377, + 7848: 0x0000837B, + 7849: 0x0000837C, + 7850: 0x00008386, + 7851: 0x000083A7, + 7852: 0x00008655, + 7853: 0x00005F6A, + 7854: 0x000086C7, + 7855: 0x000086C0, + 7856: 0x000086B6, + 7857: 0x000086C4, + 7858: 0x000086B5, + 7859: 0x000086C6, + 7860: 0x000086CB, + 7861: 0x000086B1, + 7862: 0x000086AF, + 7863: 0x000086C9, + 7864: 0x00008853, + 7865: 0x0000889E, + 7866: 0x00008888, + 7867: 0x000088AB, + 7868: 0x00008892, + 7869: 0x00008896, + 7870: 0x0000888D, + 7871: 0x0000888B, + 7872: 0x00008993, + 7873: 0x0000898F, + 7874: 0x00008A2A, + 7875: 0x00008A1D, + 7876: 0x00008A23, + 7877: 0x00008A25, + 7878: 0x00008A31, + 7879: 0x00008A2D, + 7880: 0x00008A1F, + 7881: 0x00008A1B, + 7882: 0x00008A22, + 7883: 0x00008C49, + 7884: 0x00008C5A, + 7885: 0x00008CA9, + 7886: 0x00008CAC, + 7887: 0x00008CAB, + 7888: 0x00008CA8, + 7889: 0x00008CAA, + 7890: 0x00008CA7, + 7891: 0x00008D67, + 7892: 0x00008D66, + 7893: 0x00008DBE, + 7894: 0x00008DBA, + 7895: 0x00008EDB, + 7896: 0x00008EDF, + 7897: 0x00009019, + 7898: 0x0000900D, + 7899: 0x0000901A, + 7900: 0x00009017, + 7901: 0x00009023, + 7902: 0x0000901F, + 7903: 0x0000901D, + 7904: 0x00009010, + 7905: 0x00009015, + 7906: 0x0000901E, + 7907: 0x00009020, + 7908: 0x0000900F, + 7909: 0x00009022, + 7910: 0x00009016, + 7911: 0x0000901B, + 7912: 0x00009014, + 7913: 0x000090E8, + 7914: 0x000090ED, + 7915: 0x000090FD, + 7916: 0x00009157, + 7917: 0x000091CE, + 7918: 0x000091F5, + 7919: 0x000091E6, + 7920: 0x000091E3, + 7921: 0x000091E7, + 7922: 0x000091ED, + 7923: 0x000091E9, + 7924: 0x00009589, + 7925: 0x0000966A, + 7926: 0x00009675, + 7927: 0x00009673, + 7928: 0x00009678, + 7929: 0x00009670, + 7930: 0x00009674, + 7931: 0x00009676, + 7932: 0x00009677, + 7933: 0x0000966C, + 7934: 0x000096C0, + 7935: 0x000096EA, + 7936: 0x000096E9, + 7937: 0x00007AE0, + 7938: 0x00007ADF, + 7939: 0x00009802, + 7940: 0x00009803, + 7941: 0x00009B5A, + 7942: 0x00009CE5, + 7943: 0x00009E75, + 7944: 0x00009E7F, + 7945: 0x00009EA5, + 7946: 0x00009EBB, + 7947: 0x000050A2, + 7948: 0x0000508D, + 7949: 0x00005085, + 7950: 0x00005099, + 7951: 0x00005091, + 7952: 0x00005080, + 7953: 0x00005096, + 7954: 0x00005098, + 7955: 0x0000509A, + 7956: 0x00006700, + 7957: 0x000051F1, + 7958: 0x00005272, + 7959: 0x00005274, + 7960: 0x00005275, + 7961: 0x00005269, + 7962: 0x000052DE, + 7963: 0x000052DD, + 7964: 0x000052DB, + 7965: 0x0000535A, + 7966: 0x000053A5, + 7967: 0x0000557B, + 7968: 0x00005580, + 7969: 0x000055A7, + 7970: 0x0000557C, + 7971: 0x0000558A, + 7972: 0x0000559D, + 7973: 0x00005598, + 7974: 0x00005582, + 7975: 0x0000559C, + 7976: 0x000055AA, + 7977: 0x00005594, + 7978: 0x00005587, + 7979: 0x0000558B, + 7980: 0x00005583, + 7981: 0x000055B3, + 7982: 0x000055AE, + 7983: 0x0000559F, + 7984: 0x0000553E, + 7985: 0x000055B2, + 7986: 0x0000559A, + 7987: 0x000055BB, + 7988: 0x000055AC, + 7989: 0x000055B1, + 7990: 0x0000557E, + 7991: 0x00005589, + 7992: 0x000055AB, + 7993: 0x00005599, + 7994: 0x0000570D, + 7995: 0x0000582F, + 7996: 0x0000582A, + 7997: 0x00005834, + 7998: 0x00005824, + 7999: 0x00005830, + 8000: 0x00005831, + 8001: 0x00005821, + 8002: 0x0000581D, + 8003: 0x00005820, + 8004: 0x000058F9, + 8005: 0x000058FA, + 8006: 0x00005960, + 8007: 0x00005A77, + 8008: 0x00005A9A, + 8009: 0x00005A7F, + 8010: 0x00005A92, + 8011: 0x00005A9B, + 8012: 0x00005AA7, + 8013: 0x00005B73, + 8014: 0x00005B71, + 8015: 0x00005BD2, + 8016: 0x00005BCC, + 8017: 0x00005BD3, + 8018: 0x00005BD0, + 8019: 0x00005C0A, + 8020: 0x00005C0B, + 8021: 0x00005C31, + 8022: 0x00005D4C, + 8023: 0x00005D50, + 8024: 0x00005D34, + 8025: 0x00005D47, + 8026: 0x00005DFD, + 8027: 0x00005E45, + 8028: 0x00005E3D, + 8029: 0x00005E40, + 8030: 0x00005E43, + 8031: 0x00005E7E, + 8032: 0x00005ECA, + 8033: 0x00005EC1, + 8034: 0x00005EC2, + 8035: 0x00005EC4, + 8036: 0x00005F3C, + 8037: 0x00005F6D, + 8038: 0x00005FA9, + 8039: 0x00005FAA, + 8040: 0x00005FA8, + 8041: 0x000060D1, + 8042: 0x000060E1, + 8043: 0x000060B2, + 8044: 0x000060B6, + 8045: 0x000060E0, + 8046: 0x0000611C, + 8047: 0x00006123, + 8048: 0x000060FA, + 8049: 0x00006115, + 8050: 0x000060F0, + 8051: 0x000060FB, + 8052: 0x000060F4, + 8053: 0x00006168, + 8054: 0x000060F1, + 8055: 0x0000610E, + 8056: 0x000060F6, + 8057: 0x00006109, + 8058: 0x00006100, + 8059: 0x00006112, + 8060: 0x0000621F, + 8061: 0x00006249, + 8062: 0x000063A3, + 8063: 0x0000638C, + 8064: 0x000063CF, + 8065: 0x000063C0, + 8066: 0x000063E9, + 8067: 0x000063C9, + 8068: 0x000063C6, + 8069: 0x000063CD, + 8070: 0x000063D2, + 8071: 0x000063E3, + 8072: 0x000063D0, + 8073: 0x000063E1, + 8074: 0x000063D6, + 8075: 0x000063ED, + 8076: 0x000063EE, + 8077: 0x00006376, + 8078: 0x000063F4, + 8079: 0x000063EA, + 8080: 0x000063DB, + 8081: 0x00006452, + 8082: 0x000063DA, + 8083: 0x000063F9, + 8084: 0x0000655E, + 8085: 0x00006566, + 8086: 0x00006562, + 8087: 0x00006563, + 8088: 0x00006591, + 8089: 0x00006590, + 8090: 0x000065AF, + 8091: 0x0000666E, + 8092: 0x00006670, + 8093: 0x00006674, + 8094: 0x00006676, + 8095: 0x0000666F, + 8096: 0x00006691, + 8097: 0x0000667A, + 8098: 0x0000667E, + 8099: 0x00006677, + 8100: 0x000066FE, + 8101: 0x000066FF, + 8102: 0x0000671F, + 8103: 0x0000671D, + 8104: 0x000068FA, + 8105: 0x000068D5, + 8106: 0x000068E0, + 8107: 0x000068D8, + 8108: 0x000068D7, + 8109: 0x00006905, + 8110: 0x000068DF, + 8111: 0x000068F5, + 8112: 0x000068EE, + 8113: 0x000068E7, + 8114: 0x000068F9, + 8115: 0x000068D2, + 8116: 0x000068F2, + 8117: 0x000068E3, + 8118: 0x000068CB, + 8119: 0x000068CD, + 8120: 0x0000690D, + 8121: 0x00006912, + 8122: 0x0000690E, + 8123: 0x000068C9, + 8124: 0x000068DA, + 8125: 0x0000696E, + 8126: 0x000068FB, + 8127: 0x00006B3E, + 8128: 0x00006B3A, + 8129: 0x00006B3D, + 8130: 0x00006B98, + 8131: 0x00006B96, + 8132: 0x00006BBC, + 8133: 0x00006BEF, + 8134: 0x00006C2E, + 8135: 0x00006C2F, + 8136: 0x00006C2C, + 8137: 0x00006E2F, + 8138: 0x00006E38, + 8139: 0x00006E54, + 8140: 0x00006E21, + 8141: 0x00006E32, + 8142: 0x00006E67, + 8143: 0x00006E4A, + 8144: 0x00006E20, + 8145: 0x00006E25, + 8146: 0x00006E23, + 8147: 0x00006E1B, + 8148: 0x00006E5B, + 8149: 0x00006E58, + 8150: 0x00006E24, + 8151: 0x00006E56, + 8152: 0x00006E6E, + 8153: 0x00006E2D, + 8154: 0x00006E26, + 8155: 0x00006E6F, + 8156: 0x00006E34, + 8157: 0x00006E4D, + 8158: 0x00006E3A, + 8159: 0x00006E2C, + 8160: 0x00006E43, + 8161: 0x00006E1D, + 8162: 0x00006E3E, + 8163: 0x00006ECB, + 8164: 0x00006E89, + 8165: 0x00006E19, + 8166: 0x00006E4E, + 8167: 0x00006E63, + 8168: 0x00006E44, + 8169: 0x00006E72, + 8170: 0x00006E69, + 8171: 0x00006E5F, + 8172: 0x00007119, + 8173: 0x0000711A, + 8174: 0x00007126, + 8175: 0x00007130, + 8176: 0x00007121, + 8177: 0x00007136, + 8178: 0x0000716E, + 8179: 0x0000711C, + 8180: 0x0000724C, + 8181: 0x00007284, + 8182: 0x00007280, + 8183: 0x00007336, + 8184: 0x00007325, + 8185: 0x00007334, + 8186: 0x00007329, + 8187: 0x0000743A, + 8188: 0x0000742A, + 8189: 0x00007433, + 8190: 0x00007422, + 8191: 0x00007425, + 8192: 0x00007435, + 8193: 0x00007436, + 8194: 0x00007434, + 8195: 0x0000742F, + 8196: 0x0000741B, + 8197: 0x00007426, + 8198: 0x00007428, + 8199: 0x00007525, + 8200: 0x00007526, + 8201: 0x0000756B, + 8202: 0x0000756A, + 8203: 0x000075E2, + 8204: 0x000075DB, + 8205: 0x000075E3, + 8206: 0x000075D9, + 8207: 0x000075D8, + 8208: 0x000075DE, + 8209: 0x000075E0, + 8210: 0x0000767B, + 8211: 0x0000767C, + 8212: 0x00007696, + 8213: 0x00007693, + 8214: 0x000076B4, + 8215: 0x000076DC, + 8216: 0x0000774F, + 8217: 0x000077ED, + 8218: 0x0000785D, + 8219: 0x0000786C, + 8220: 0x0000786F, + 8221: 0x00007A0D, + 8222: 0x00007A08, + 8223: 0x00007A0B, + 8224: 0x00007A05, + 8225: 0x00007A00, + 8226: 0x00007A98, + 8227: 0x00007A97, + 8228: 0x00007A96, + 8229: 0x00007AE5, + 8230: 0x00007AE3, + 8231: 0x00007B49, + 8232: 0x00007B56, + 8233: 0x00007B46, + 8234: 0x00007B50, + 8235: 0x00007B52, + 8236: 0x00007B54, + 8237: 0x00007B4D, + 8238: 0x00007B4B, + 8239: 0x00007B4F, + 8240: 0x00007B51, + 8241: 0x00007C9F, + 8242: 0x00007CA5, + 8243: 0x00007D5E, + 8244: 0x00007D50, + 8245: 0x00007D68, + 8246: 0x00007D55, + 8247: 0x00007D2B, + 8248: 0x00007D6E, + 8249: 0x00007D72, + 8250: 0x00007D61, + 8251: 0x00007D66, + 8252: 0x00007D62, + 8253: 0x00007D70, + 8254: 0x00007D73, + 8255: 0x00005584, + 8256: 0x00007FD4, + 8257: 0x00007FD5, + 8258: 0x0000800B, + 8259: 0x00008052, + 8260: 0x00008085, + 8261: 0x00008155, + 8262: 0x00008154, + 8263: 0x0000814B, + 8264: 0x00008151, + 8265: 0x0000814E, + 8266: 0x00008139, + 8267: 0x00008146, + 8268: 0x0000813E, + 8269: 0x0000814C, + 8270: 0x00008153, + 8271: 0x00008174, + 8272: 0x00008212, + 8273: 0x0000821C, + 8274: 0x000083E9, + 8275: 0x00008403, + 8276: 0x000083F8, + 8277: 0x0000840D, + 8278: 0x000083E0, + 8279: 0x000083C5, + 8280: 0x0000840B, + 8281: 0x000083C1, + 8282: 0x000083EF, + 8283: 0x000083F1, + 8284: 0x000083F4, + 8285: 0x00008457, + 8286: 0x0000840A, + 8287: 0x000083F0, + 8288: 0x0000840C, + 8289: 0x000083CC, + 8290: 0x000083FD, + 8291: 0x000083F2, + 8292: 0x000083CA, + 8293: 0x00008438, + 8294: 0x0000840E, + 8295: 0x00008404, + 8296: 0x000083DC, + 8297: 0x00008407, + 8298: 0x000083D4, + 8299: 0x000083DF, + 8300: 0x0000865B, + 8301: 0x000086DF, + 8302: 0x000086D9, + 8303: 0x000086ED, + 8304: 0x000086D4, + 8305: 0x000086DB, + 8306: 0x000086E4, + 8307: 0x000086D0, + 8308: 0x000086DE, + 8309: 0x00008857, + 8310: 0x000088C1, + 8311: 0x000088C2, + 8312: 0x000088B1, + 8313: 0x00008983, + 8314: 0x00008996, + 8315: 0x00008A3B, + 8316: 0x00008A60, + 8317: 0x00008A55, + 8318: 0x00008A5E, + 8319: 0x00008A3C, + 8320: 0x00008A41, + 8321: 0x00008A54, + 8322: 0x00008A5B, + 8323: 0x00008A50, + 8324: 0x00008A46, + 8325: 0x00008A34, + 8326: 0x00008A3A, + 8327: 0x00008A36, + 8328: 0x00008A56, + 8329: 0x00008C61, + 8330: 0x00008C82, + 8331: 0x00008CAF, + 8332: 0x00008CBC, + 8333: 0x00008CB3, + 8334: 0x00008CBD, + 8335: 0x00008CC1, + 8336: 0x00008CBB, + 8337: 0x00008CC0, + 8338: 0x00008CB4, + 8339: 0x00008CB7, + 8340: 0x00008CB6, + 8341: 0x00008CBF, + 8342: 0x00008CB8, + 8343: 0x00008D8A, + 8344: 0x00008D85, + 8345: 0x00008D81, + 8346: 0x00008DCE, + 8347: 0x00008DDD, + 8348: 0x00008DCB, + 8349: 0x00008DDA, + 8350: 0x00008DD1, + 8351: 0x00008DCC, + 8352: 0x00008DDB, + 8353: 0x00008DC6, + 8354: 0x00008EFB, + 8355: 0x00008EF8, + 8356: 0x00008EFC, + 8357: 0x00008F9C, + 8358: 0x0000902E, + 8359: 0x00009035, + 8360: 0x00009031, + 8361: 0x00009038, + 8362: 0x00009032, + 8363: 0x00009036, + 8364: 0x00009102, + 8365: 0x000090F5, + 8366: 0x00009109, + 8367: 0x000090FE, + 8368: 0x00009163, + 8369: 0x00009165, + 8370: 0x000091CF, + 8371: 0x00009214, + 8372: 0x00009215, + 8373: 0x00009223, + 8374: 0x00009209, + 8375: 0x0000921E, + 8376: 0x0000920D, + 8377: 0x00009210, + 8378: 0x00009207, + 8379: 0x00009211, + 8380: 0x00009594, + 8381: 0x0000958F, + 8382: 0x0000958B, + 8383: 0x00009591, + 8384: 0x00009593, + 8385: 0x00009592, + 8386: 0x0000958E, + 8387: 0x0000968A, + 8388: 0x0000968E, + 8389: 0x0000968B, + 8390: 0x0000967D, + 8391: 0x00009685, + 8392: 0x00009686, + 8393: 0x0000968D, + 8394: 0x00009672, + 8395: 0x00009684, + 8396: 0x000096C1, + 8397: 0x000096C5, + 8398: 0x000096C4, + 8399: 0x000096C6, + 8400: 0x000096C7, + 8401: 0x000096EF, + 8402: 0x000096F2, + 8403: 0x000097CC, + 8404: 0x00009805, + 8405: 0x00009806, + 8406: 0x00009808, + 8407: 0x000098E7, + 8408: 0x000098EA, + 8409: 0x000098EF, + 8410: 0x000098E9, + 8411: 0x000098F2, + 8412: 0x000098ED, + 8413: 0x000099AE, + 8414: 0x000099AD, + 8415: 0x00009EC3, + 8416: 0x00009ECD, + 8417: 0x00009ED1, + 8418: 0x00004E82, + 8419: 0x000050AD, + 8420: 0x000050B5, + 8421: 0x000050B2, + 8422: 0x000050B3, + 8423: 0x000050C5, + 8424: 0x000050BE, + 8425: 0x000050AC, + 8426: 0x000050B7, + 8427: 0x000050BB, + 8428: 0x000050AF, + 8429: 0x000050C7, + 8430: 0x0000527F, + 8431: 0x00005277, + 8432: 0x0000527D, + 8433: 0x000052DF, + 8434: 0x000052E6, + 8435: 0x000052E4, + 8436: 0x000052E2, + 8437: 0x000052E3, + 8438: 0x0000532F, + 8439: 0x000055DF, + 8440: 0x000055E8, + 8441: 0x000055D3, + 8442: 0x000055E6, + 8443: 0x000055CE, + 8444: 0x000055DC, + 8445: 0x000055C7, + 8446: 0x000055D1, + 8447: 0x000055E3, + 8448: 0x000055E4, + 8449: 0x000055EF, + 8450: 0x000055DA, + 8451: 0x000055E1, + 8452: 0x000055C5, + 8453: 0x000055C6, + 8454: 0x000055E5, + 8455: 0x000055C9, + 8456: 0x00005712, + 8457: 0x00005713, + 8458: 0x0000585E, + 8459: 0x00005851, + 8460: 0x00005858, + 8461: 0x00005857, + 8462: 0x0000585A, + 8463: 0x00005854, + 8464: 0x0000586B, + 8465: 0x0000584C, + 8466: 0x0000586D, + 8467: 0x0000584A, + 8468: 0x00005862, + 8469: 0x00005852, + 8470: 0x0000584B, + 8471: 0x00005967, + 8472: 0x00005AC1, + 8473: 0x00005AC9, + 8474: 0x00005ACC, + 8475: 0x00005ABE, + 8476: 0x00005ABD, + 8477: 0x00005ABC, + 8478: 0x00005AB3, + 8479: 0x00005AC2, + 8480: 0x00005AB2, + 8481: 0x00005D69, + 8482: 0x00005D6F, + 8483: 0x00005E4C, + 8484: 0x00005E79, + 8485: 0x00005EC9, + 8486: 0x00005EC8, + 8487: 0x00005F12, + 8488: 0x00005F59, + 8489: 0x00005FAC, + 8490: 0x00005FAE, + 8491: 0x0000611A, + 8492: 0x0000610F, + 8493: 0x00006148, + 8494: 0x0000611F, + 8495: 0x000060F3, + 8496: 0x0000611B, + 8497: 0x000060F9, + 8498: 0x00006101, + 8499: 0x00006108, + 8500: 0x0000614E, + 8501: 0x0000614C, + 8502: 0x00006144, + 8503: 0x0000614D, + 8504: 0x0000613E, + 8505: 0x00006134, + 8506: 0x00006127, + 8507: 0x0000610D, + 8508: 0x00006106, + 8509: 0x00006137, + 8510: 0x00006221, + 8511: 0x00006222, + 8512: 0x00006413, + 8513: 0x0000643E, + 8514: 0x0000641E, + 8515: 0x0000642A, + 8516: 0x0000642D, + 8517: 0x0000643D, + 8518: 0x0000642C, + 8519: 0x0000640F, + 8520: 0x0000641C, + 8521: 0x00006414, + 8522: 0x0000640D, + 8523: 0x00006436, + 8524: 0x00006416, + 8525: 0x00006417, + 8526: 0x00006406, + 8527: 0x0000656C, + 8528: 0x0000659F, + 8529: 0x000065B0, + 8530: 0x00006697, + 8531: 0x00006689, + 8532: 0x00006687, + 8533: 0x00006688, + 8534: 0x00006696, + 8535: 0x00006684, + 8536: 0x00006698, + 8537: 0x0000668D, + 8538: 0x00006703, + 8539: 0x00006994, + 8540: 0x0000696D, + 8541: 0x0000695A, + 8542: 0x00006977, + 8543: 0x00006960, + 8544: 0x00006954, + 8545: 0x00006975, + 8546: 0x00006930, + 8547: 0x00006982, + 8548: 0x0000694A, + 8549: 0x00006968, + 8550: 0x0000696B, + 8551: 0x0000695E, + 8552: 0x00006953, + 8553: 0x00006979, + 8554: 0x00006986, + 8555: 0x0000695D, + 8556: 0x00006963, + 8557: 0x0000695B, + 8558: 0x00006B47, + 8559: 0x00006B72, + 8560: 0x00006BC0, + 8561: 0x00006BBF, + 8562: 0x00006BD3, + 8563: 0x00006BFD, + 8564: 0x00006EA2, + 8565: 0x00006EAF, + 8566: 0x00006ED3, + 8567: 0x00006EB6, + 8568: 0x00006EC2, + 8569: 0x00006E90, + 8570: 0x00006E9D, + 8571: 0x00006EC7, + 8572: 0x00006EC5, + 8573: 0x00006EA5, + 8574: 0x00006E98, + 8575: 0x00006EBC, + 8576: 0x00006EBA, + 8577: 0x00006EAB, + 8578: 0x00006ED1, + 8579: 0x00006E96, + 8580: 0x00006E9C, + 8581: 0x00006EC4, + 8582: 0x00006ED4, + 8583: 0x00006EAA, + 8584: 0x00006EA7, + 8585: 0x00006EB4, + 8586: 0x0000714E, + 8587: 0x00007159, + 8588: 0x00007169, + 8589: 0x00007164, + 8590: 0x00007149, + 8591: 0x00007167, + 8592: 0x0000715C, + 8593: 0x0000716C, + 8594: 0x00007166, + 8595: 0x0000714C, + 8596: 0x00007165, + 8597: 0x0000715E, + 8598: 0x00007146, + 8599: 0x00007168, + 8600: 0x00007156, + 8601: 0x0000723A, + 8602: 0x00007252, + 8603: 0x00007337, + 8604: 0x00007345, + 8605: 0x0000733F, + 8606: 0x0000733E, + 8607: 0x0000746F, + 8608: 0x0000745A, + 8609: 0x00007455, + 8610: 0x0000745F, + 8611: 0x0000745E, + 8612: 0x00007441, + 8613: 0x0000743F, + 8614: 0x00007459, + 8615: 0x0000745B, + 8616: 0x0000745C, + 8617: 0x00007576, + 8618: 0x00007578, + 8619: 0x00007600, + 8620: 0x000075F0, + 8621: 0x00007601, + 8622: 0x000075F2, + 8623: 0x000075F1, + 8624: 0x000075FA, + 8625: 0x000075FF, + 8626: 0x000075F4, + 8627: 0x000075F3, + 8628: 0x000076DE, + 8629: 0x000076DF, + 8630: 0x0000775B, + 8631: 0x0000776B, + 8632: 0x00007766, + 8633: 0x0000775E, + 8634: 0x00007763, + 8635: 0x00007779, + 8636: 0x0000776A, + 8637: 0x0000776C, + 8638: 0x0000775C, + 8639: 0x00007765, + 8640: 0x00007768, + 8641: 0x00007762, + 8642: 0x000077EE, + 8643: 0x0000788E, + 8644: 0x000078B0, + 8645: 0x00007897, + 8646: 0x00007898, + 8647: 0x0000788C, + 8648: 0x00007889, + 8649: 0x0000787C, + 8650: 0x00007891, + 8651: 0x00007893, + 8652: 0x0000787F, + 8653: 0x0000797A, + 8654: 0x0000797F, + 8655: 0x00007981, + 8656: 0x0000842C, + 8657: 0x000079BD, + 8658: 0x00007A1C, + 8659: 0x00007A1A, + 8660: 0x00007A20, + 8661: 0x00007A14, + 8662: 0x00007A1F, + 8663: 0x00007A1E, + 8664: 0x00007A9F, + 8665: 0x00007AA0, + 8666: 0x00007B77, + 8667: 0x00007BC0, + 8668: 0x00007B60, + 8669: 0x00007B6E, + 8670: 0x00007B67, + 8671: 0x00007CB1, + 8672: 0x00007CB3, + 8673: 0x00007CB5, + 8674: 0x00007D93, + 8675: 0x00007D79, + 8676: 0x00007D91, + 8677: 0x00007D81, + 8678: 0x00007D8F, + 8679: 0x00007D5B, + 8680: 0x00007F6E, + 8681: 0x00007F69, + 8682: 0x00007F6A, + 8683: 0x00007F72, + 8684: 0x00007FA9, + 8685: 0x00007FA8, + 8686: 0x00007FA4, + 8687: 0x00008056, + 8688: 0x00008058, + 8689: 0x00008086, + 8690: 0x00008084, + 8691: 0x00008171, + 8692: 0x00008170, + 8693: 0x00008178, + 8694: 0x00008165, + 8695: 0x0000816E, + 8696: 0x00008173, + 8697: 0x0000816B, + 8698: 0x00008179, + 8699: 0x0000817A, + 8700: 0x00008166, + 8701: 0x00008205, + 8702: 0x00008247, + 8703: 0x00008482, + 8704: 0x00008477, + 8705: 0x0000843D, + 8706: 0x00008431, + 8707: 0x00008475, + 8708: 0x00008466, + 8709: 0x0000846B, + 8710: 0x00008449, + 8711: 0x0000846C, + 8712: 0x0000845B, + 8713: 0x0000843C, + 8714: 0x00008435, + 8715: 0x00008461, + 8716: 0x00008463, + 8717: 0x00008469, + 8718: 0x0000846D, + 8719: 0x00008446, + 8720: 0x0000865E, + 8721: 0x0000865C, + 8722: 0x0000865F, + 8723: 0x000086F9, + 8724: 0x00008713, + 8725: 0x00008708, + 8726: 0x00008707, + 8727: 0x00008700, + 8728: 0x000086FE, + 8729: 0x000086FB, + 8730: 0x00008702, + 8731: 0x00008703, + 8732: 0x00008706, + 8733: 0x0000870A, + 8734: 0x00008859, + 8735: 0x000088DF, + 8736: 0x000088D4, + 8737: 0x000088D9, + 8738: 0x000088DC, + 8739: 0x000088D8, + 8740: 0x000088DD, + 8741: 0x000088E1, + 8742: 0x000088CA, + 8743: 0x000088D5, + 8744: 0x000088D2, + 8745: 0x0000899C, + 8746: 0x000089E3, + 8747: 0x00008A6B, + 8748: 0x00008A72, + 8749: 0x00008A73, + 8750: 0x00008A66, + 8751: 0x00008A69, + 8752: 0x00008A70, + 8753: 0x00008A87, + 8754: 0x00008A7C, + 8755: 0x00008A63, + 8756: 0x00008AA0, + 8757: 0x00008A71, + 8758: 0x00008A85, + 8759: 0x00008A6D, + 8760: 0x00008A62, + 8761: 0x00008A6E, + 8762: 0x00008A6C, + 8763: 0x00008A79, + 8764: 0x00008A7B, + 8765: 0x00008A3E, + 8766: 0x00008A68, + 8767: 0x00008C62, + 8768: 0x00008C8A, + 8769: 0x00008C89, + 8770: 0x00008CCA, + 8771: 0x00008CC7, + 8772: 0x00008CC8, + 8773: 0x00008CC4, + 8774: 0x00008CB2, + 8775: 0x00008CC3, + 8776: 0x00008CC2, + 8777: 0x00008CC5, + 8778: 0x00008DE1, + 8779: 0x00008DDF, + 8780: 0x00008DE8, + 8781: 0x00008DEF, + 8782: 0x00008DF3, + 8783: 0x00008DFA, + 8784: 0x00008DEA, + 8785: 0x00008DE4, + 8786: 0x00008DE6, + 8787: 0x00008EB2, + 8788: 0x00008F03, + 8789: 0x00008F09, + 8790: 0x00008EFE, + 8791: 0x00008F0A, + 8792: 0x00008F9F, + 8793: 0x00008FB2, + 8794: 0x0000904B, + 8795: 0x0000904A, + 8796: 0x00009053, + 8797: 0x00009042, + 8798: 0x00009054, + 8799: 0x0000903C, + 8800: 0x00009055, + 8801: 0x00009050, + 8802: 0x00009047, + 8803: 0x0000904F, + 8804: 0x0000904E, + 8805: 0x0000904D, + 8806: 0x00009051, + 8807: 0x0000903E, + 8808: 0x00009041, + 8809: 0x00009112, + 8810: 0x00009117, + 8811: 0x0000916C, + 8812: 0x0000916A, + 8813: 0x00009169, + 8814: 0x000091C9, + 8815: 0x00009237, + 8816: 0x00009257, + 8817: 0x00009238, + 8818: 0x0000923D, + 8819: 0x00009240, + 8820: 0x0000923E, + 8821: 0x0000925B, + 8822: 0x0000924B, + 8823: 0x00009264, + 8824: 0x00009251, + 8825: 0x00009234, + 8826: 0x00009249, + 8827: 0x0000924D, + 8828: 0x00009245, + 8829: 0x00009239, + 8830: 0x0000923F, + 8831: 0x0000925A, + 8832: 0x00009598, + 8833: 0x00009698, + 8834: 0x00009694, + 8835: 0x00009695, + 8836: 0x000096CD, + 8837: 0x000096CB, + 8838: 0x000096C9, + 8839: 0x000096CA, + 8840: 0x000096F7, + 8841: 0x000096FB, + 8842: 0x000096F9, + 8843: 0x000096F6, + 8844: 0x00009756, + 8845: 0x00009774, + 8846: 0x00009776, + 8847: 0x00009810, + 8848: 0x00009811, + 8849: 0x00009813, + 8850: 0x0000980A, + 8851: 0x00009812, + 8852: 0x0000980C, + 8853: 0x000098FC, + 8854: 0x000098F4, + 8855: 0x000098FD, + 8856: 0x000098FE, + 8857: 0x000099B3, + 8858: 0x000099B1, + 8859: 0x000099B4, + 8860: 0x00009AE1, + 8861: 0x00009CE9, + 8862: 0x00009E82, + 8863: 0x00009F0E, + 8864: 0x00009F13, + 8865: 0x00009F20, + 8866: 0x000050E7, + 8867: 0x000050EE, + 8868: 0x000050E5, + 8869: 0x000050D6, + 8870: 0x000050ED, + 8871: 0x000050DA, + 8872: 0x000050D5, + 8873: 0x000050CF, + 8874: 0x000050D1, + 8875: 0x000050F1, + 8876: 0x000050CE, + 8877: 0x000050E9, + 8878: 0x00005162, + 8879: 0x000051F3, + 8880: 0x00005283, + 8881: 0x00005282, + 8882: 0x00005331, + 8883: 0x000053AD, + 8884: 0x000055FE, + 8885: 0x00005600, + 8886: 0x0000561B, + 8887: 0x00005617, + 8888: 0x000055FD, + 8889: 0x00005614, + 8890: 0x00005606, + 8891: 0x00005609, + 8892: 0x0000560D, + 8893: 0x0000560E, + 8894: 0x000055F7, + 8895: 0x00005616, + 8896: 0x0000561F, + 8897: 0x00005608, + 8898: 0x00005610, + 8899: 0x000055F6, + 8900: 0x00005718, + 8901: 0x00005716, + 8902: 0x00005875, + 8903: 0x0000587E, + 8904: 0x00005883, + 8905: 0x00005893, + 8906: 0x0000588A, + 8907: 0x00005879, + 8908: 0x00005885, + 8909: 0x0000587D, + 8910: 0x000058FD, + 8911: 0x00005925, + 8912: 0x00005922, + 8913: 0x00005924, + 8914: 0x0000596A, + 8915: 0x00005969, + 8916: 0x00005AE1, + 8917: 0x00005AE6, + 8918: 0x00005AE9, + 8919: 0x00005AD7, + 8920: 0x00005AD6, + 8921: 0x00005AD8, + 8922: 0x00005AE3, + 8923: 0x00005B75, + 8924: 0x00005BDE, + 8925: 0x00005BE7, + 8926: 0x00005BE1, + 8927: 0x00005BE5, + 8928: 0x00005BE6, + 8929: 0x00005BE8, + 8930: 0x00005BE2, + 8931: 0x00005BE4, + 8932: 0x00005BDF, + 8933: 0x00005C0D, + 8934: 0x00005C62, + 8935: 0x00005D84, + 8936: 0x00005D87, + 8937: 0x00005E5B, + 8938: 0x00005E63, + 8939: 0x00005E55, + 8940: 0x00005E57, + 8941: 0x00005E54, + 8942: 0x00005ED3, + 8943: 0x00005ED6, + 8944: 0x00005F0A, + 8945: 0x00005F46, + 8946: 0x00005F70, + 8947: 0x00005FB9, + 8948: 0x00006147, + 8949: 0x0000613F, + 8950: 0x0000614B, + 8951: 0x00006177, + 8952: 0x00006162, + 8953: 0x00006163, + 8954: 0x0000615F, + 8955: 0x0000615A, + 8956: 0x00006158, + 8957: 0x00006175, + 8958: 0x0000622A, + 8959: 0x00006487, + 8960: 0x00006458, + 8961: 0x00006454, + 8962: 0x000064A4, + 8963: 0x00006478, + 8964: 0x0000645F, + 8965: 0x0000647A, + 8966: 0x00006451, + 8967: 0x00006467, + 8968: 0x00006434, + 8969: 0x0000646D, + 8970: 0x0000647B, + 8971: 0x00006572, + 8972: 0x000065A1, + 8973: 0x000065D7, + 8974: 0x000065D6, + 8975: 0x000066A2, + 8976: 0x000066A8, + 8977: 0x0000669D, + 8978: 0x0000699C, + 8979: 0x000069A8, + 8980: 0x00006995, + 8981: 0x000069C1, + 8982: 0x000069AE, + 8983: 0x000069D3, + 8984: 0x000069CB, + 8985: 0x0000699B, + 8986: 0x000069B7, + 8987: 0x000069BB, + 8988: 0x000069AB, + 8989: 0x000069B4, + 8990: 0x000069D0, + 8991: 0x000069CD, + 8992: 0x000069AD, + 8993: 0x000069CC, + 8994: 0x000069A6, + 8995: 0x000069C3, + 8996: 0x000069A3, + 8997: 0x00006B49, + 8998: 0x00006B4C, + 8999: 0x00006C33, + 9000: 0x00006F33, + 9001: 0x00006F14, + 9002: 0x00006EFE, + 9003: 0x00006F13, + 9004: 0x00006EF4, + 9005: 0x00006F29, + 9006: 0x00006F3E, + 9007: 0x00006F20, + 9008: 0x00006F2C, + 9009: 0x00006F0F, + 9010: 0x00006F02, + 9011: 0x00006F22, + 9012: 0x00006EFF, + 9013: 0x00006EEF, + 9014: 0x00006F06, + 9015: 0x00006F31, + 9016: 0x00006F38, + 9017: 0x00006F32, + 9018: 0x00006F23, + 9019: 0x00006F15, + 9020: 0x00006F2B, + 9021: 0x00006F2F, + 9022: 0x00006F88, + 9023: 0x00006F2A, + 9024: 0x00006EEC, + 9025: 0x00006F01, + 9026: 0x00006EF2, + 9027: 0x00006ECC, + 9028: 0x00006EF7, + 9029: 0x00007194, + 9030: 0x00007199, + 9031: 0x0000717D, + 9032: 0x0000718A, + 9033: 0x00007184, + 9034: 0x00007192, + 9035: 0x0000723E, + 9036: 0x00007292, + 9037: 0x00007296, + 9038: 0x00007344, + 9039: 0x00007350, + 9040: 0x00007464, + 9041: 0x00007463, + 9042: 0x0000746A, + 9043: 0x00007470, + 9044: 0x0000746D, + 9045: 0x00007504, + 9046: 0x00007591, + 9047: 0x00007627, + 9048: 0x0000760D, + 9049: 0x0000760B, + 9050: 0x00007609, + 9051: 0x00007613, + 9052: 0x000076E1, + 9053: 0x000076E3, + 9054: 0x00007784, + 9055: 0x0000777D, + 9056: 0x0000777F, + 9057: 0x00007761, + 9058: 0x000078C1, + 9059: 0x0000789F, + 9060: 0x000078A7, + 9061: 0x000078B3, + 9062: 0x000078A9, + 9063: 0x000078A3, + 9064: 0x0000798E, + 9065: 0x0000798F, + 9066: 0x0000798D, + 9067: 0x00007A2E, + 9068: 0x00007A31, + 9069: 0x00007AAA, + 9070: 0x00007AA9, + 9071: 0x00007AED, + 9072: 0x00007AEF, + 9073: 0x00007BA1, + 9074: 0x00007B95, + 9075: 0x00007B8B, + 9076: 0x00007B75, + 9077: 0x00007B97, + 9078: 0x00007B9D, + 9079: 0x00007B94, + 9080: 0x00007B8F, + 9081: 0x00007BB8, + 9082: 0x00007B87, + 9083: 0x00007B84, + 9084: 0x00007CB9, + 9085: 0x00007CBD, + 9086: 0x00007CBE, + 9087: 0x00007DBB, + 9088: 0x00007DB0, + 9089: 0x00007D9C, + 9090: 0x00007DBD, + 9091: 0x00007DBE, + 9092: 0x00007DA0, + 9093: 0x00007DCA, + 9094: 0x00007DB4, + 9095: 0x00007DB2, + 9096: 0x00007DB1, + 9097: 0x00007DBA, + 9098: 0x00007DA2, + 9099: 0x00007DBF, + 9100: 0x00007DB5, + 9101: 0x00007DB8, + 9102: 0x00007DAD, + 9103: 0x00007DD2, + 9104: 0x00007DC7, + 9105: 0x00007DAC, + 9106: 0x00007F70, + 9107: 0x00007FE0, + 9108: 0x00007FE1, + 9109: 0x00007FDF, + 9110: 0x0000805E, + 9111: 0x0000805A, + 9112: 0x00008087, + 9113: 0x00008150, + 9114: 0x00008180, + 9115: 0x0000818F, + 9116: 0x00008188, + 9117: 0x0000818A, + 9118: 0x0000817F, + 9119: 0x00008182, + 9120: 0x000081E7, + 9121: 0x000081FA, + 9122: 0x00008207, + 9123: 0x00008214, + 9124: 0x0000821E, + 9125: 0x0000824B, + 9126: 0x000084C9, + 9127: 0x000084BF, + 9128: 0x000084C6, + 9129: 0x000084C4, + 9130: 0x00008499, + 9131: 0x0000849E, + 9132: 0x000084B2, + 9133: 0x0000849C, + 9134: 0x000084CB, + 9135: 0x000084B8, + 9136: 0x000084C0, + 9137: 0x000084D3, + 9138: 0x00008490, + 9139: 0x000084BC, + 9140: 0x000084D1, + 9141: 0x000084CA, + 9142: 0x0000873F, + 9143: 0x0000871C, + 9144: 0x0000873B, + 9145: 0x00008722, + 9146: 0x00008725, + 9147: 0x00008734, + 9148: 0x00008718, + 9149: 0x00008755, + 9150: 0x00008737, + 9151: 0x00008729, + 9152: 0x000088F3, + 9153: 0x00008902, + 9154: 0x000088F4, + 9155: 0x000088F9, + 9156: 0x000088F8, + 9157: 0x000088FD, + 9158: 0x000088E8, + 9159: 0x0000891A, + 9160: 0x000088EF, + 9161: 0x00008AA6, + 9162: 0x00008A8C, + 9163: 0x00008A9E, + 9164: 0x00008AA3, + 9165: 0x00008A8D, + 9166: 0x00008AA1, + 9167: 0x00008A93, + 9168: 0x00008AA4, + 9169: 0x00008AAA, + 9170: 0x00008AA5, + 9171: 0x00008AA8, + 9172: 0x00008A98, + 9173: 0x00008A91, + 9174: 0x00008A9A, + 9175: 0x00008AA7, + 9176: 0x00008C6A, + 9177: 0x00008C8D, + 9178: 0x00008C8C, + 9179: 0x00008CD3, + 9180: 0x00008CD1, + 9181: 0x00008CD2, + 9182: 0x00008D6B, + 9183: 0x00008D99, + 9184: 0x00008D95, + 9185: 0x00008DFC, + 9186: 0x00008F14, + 9187: 0x00008F12, + 9188: 0x00008F15, + 9189: 0x00008F13, + 9190: 0x00008FA3, + 9191: 0x00009060, + 9192: 0x00009058, + 9193: 0x0000905C, + 9194: 0x00009063, + 9195: 0x00009059, + 9196: 0x0000905E, + 9197: 0x00009062, + 9198: 0x0000905D, + 9199: 0x0000905B, + 9200: 0x00009119, + 9201: 0x00009118, + 9202: 0x0000911E, + 9203: 0x00009175, + 9204: 0x00009178, + 9205: 0x00009177, + 9206: 0x00009174, + 9207: 0x00009278, + 9208: 0x00009280, + 9209: 0x00009285, + 9210: 0x00009298, + 9211: 0x00009296, + 9212: 0x0000927B, + 9213: 0x00009293, + 9214: 0x0000929C, + 9215: 0x000092A8, + 9216: 0x0000927C, + 9217: 0x00009291, + 9218: 0x000095A1, + 9219: 0x000095A8, + 9220: 0x000095A9, + 9221: 0x000095A3, + 9222: 0x000095A5, + 9223: 0x000095A4, + 9224: 0x00009699, + 9225: 0x0000969C, + 9226: 0x0000969B, + 9227: 0x000096CC, + 9228: 0x000096D2, + 9229: 0x00009700, + 9230: 0x0000977C, + 9231: 0x00009785, + 9232: 0x000097F6, + 9233: 0x00009817, + 9234: 0x00009818, + 9235: 0x000098AF, + 9236: 0x000098B1, + 9237: 0x00009903, + 9238: 0x00009905, + 9239: 0x0000990C, + 9240: 0x00009909, + 9241: 0x000099C1, + 9242: 0x00009AAF, + 9243: 0x00009AB0, + 9244: 0x00009AE6, + 9245: 0x00009B41, + 9246: 0x00009B42, + 9247: 0x00009CF4, + 9248: 0x00009CF6, + 9249: 0x00009CF3, + 9250: 0x00009EBC, + 9251: 0x00009F3B, + 9252: 0x00009F4A, + 9253: 0x00005104, + 9254: 0x00005100, + 9255: 0x000050FB, + 9256: 0x000050F5, + 9257: 0x000050F9, + 9258: 0x00005102, + 9259: 0x00005108, + 9260: 0x00005109, + 9261: 0x00005105, + 9262: 0x000051DC, + 9263: 0x00005287, + 9264: 0x00005288, + 9265: 0x00005289, + 9266: 0x0000528D, + 9267: 0x0000528A, + 9268: 0x000052F0, + 9269: 0x000053B2, + 9270: 0x0000562E, + 9271: 0x0000563B, + 9272: 0x00005639, + 9273: 0x00005632, + 9274: 0x0000563F, + 9275: 0x00005634, + 9276: 0x00005629, + 9277: 0x00005653, + 9278: 0x0000564E, + 9279: 0x00005657, + 9280: 0x00005674, + 9281: 0x00005636, + 9282: 0x0000562F, + 9283: 0x00005630, + 9284: 0x00005880, + 9285: 0x0000589F, + 9286: 0x0000589E, + 9287: 0x000058B3, + 9288: 0x0000589C, + 9289: 0x000058AE, + 9290: 0x000058A9, + 9291: 0x000058A6, + 9292: 0x0000596D, + 9293: 0x00005B09, + 9294: 0x00005AFB, + 9295: 0x00005B0B, + 9296: 0x00005AF5, + 9297: 0x00005B0C, + 9298: 0x00005B08, + 9299: 0x00005BEE, + 9300: 0x00005BEC, + 9301: 0x00005BE9, + 9302: 0x00005BEB, + 9303: 0x00005C64, + 9304: 0x00005C65, + 9305: 0x00005D9D, + 9306: 0x00005D94, + 9307: 0x00005E62, + 9308: 0x00005E5F, + 9309: 0x00005E61, + 9310: 0x00005EE2, + 9311: 0x00005EDA, + 9312: 0x00005EDF, + 9313: 0x00005EDD, + 9314: 0x00005EE3, + 9315: 0x00005EE0, + 9316: 0x00005F48, + 9317: 0x00005F71, + 9318: 0x00005FB7, + 9319: 0x00005FB5, + 9320: 0x00006176, + 9321: 0x00006167, + 9322: 0x0000616E, + 9323: 0x0000615D, + 9324: 0x00006155, + 9325: 0x00006182, + 9326: 0x0000617C, + 9327: 0x00006170, + 9328: 0x0000616B, + 9329: 0x0000617E, + 9330: 0x000061A7, + 9331: 0x00006190, + 9332: 0x000061AB, + 9333: 0x0000618E, + 9334: 0x000061AC, + 9335: 0x0000619A, + 9336: 0x000061A4, + 9337: 0x00006194, + 9338: 0x000061AE, + 9339: 0x0000622E, + 9340: 0x00006469, + 9341: 0x0000646F, + 9342: 0x00006479, + 9343: 0x0000649E, + 9344: 0x000064B2, + 9345: 0x00006488, + 9346: 0x00006490, + 9347: 0x000064B0, + 9348: 0x000064A5, + 9349: 0x00006493, + 9350: 0x00006495, + 9351: 0x000064A9, + 9352: 0x00006492, + 9353: 0x000064AE, + 9354: 0x000064AD, + 9355: 0x000064AB, + 9356: 0x0000649A, + 9357: 0x000064AC, + 9358: 0x00006499, + 9359: 0x000064A2, + 9360: 0x000064B3, + 9361: 0x00006575, + 9362: 0x00006577, + 9363: 0x00006578, + 9364: 0x000066AE, + 9365: 0x000066AB, + 9366: 0x000066B4, + 9367: 0x000066B1, + 9368: 0x00006A23, + 9369: 0x00006A1F, + 9370: 0x000069E8, + 9371: 0x00006A01, + 9372: 0x00006A1E, + 9373: 0x00006A19, + 9374: 0x000069FD, + 9375: 0x00006A21, + 9376: 0x00006A13, + 9377: 0x00006A0A, + 9378: 0x000069F3, + 9379: 0x00006A02, + 9380: 0x00006A05, + 9381: 0x000069ED, + 9382: 0x00006A11, + 9383: 0x00006B50, + 9384: 0x00006B4E, + 9385: 0x00006BA4, + 9386: 0x00006BC5, + 9387: 0x00006BC6, + 9388: 0x00006F3F, + 9389: 0x00006F7C, + 9390: 0x00006F84, + 9391: 0x00006F51, + 9392: 0x00006F66, + 9393: 0x00006F54, + 9394: 0x00006F86, + 9395: 0x00006F6D, + 9396: 0x00006F5B, + 9397: 0x00006F78, + 9398: 0x00006F6E, + 9399: 0x00006F8E, + 9400: 0x00006F7A, + 9401: 0x00006F70, + 9402: 0x00006F64, + 9403: 0x00006F97, + 9404: 0x00006F58, + 9405: 0x00006ED5, + 9406: 0x00006F6F, + 9407: 0x00006F60, + 9408: 0x00006F5F, + 9409: 0x0000719F, + 9410: 0x000071AC, + 9411: 0x000071B1, + 9412: 0x000071A8, + 9413: 0x00007256, + 9414: 0x0000729B, + 9415: 0x0000734E, + 9416: 0x00007357, + 9417: 0x00007469, + 9418: 0x0000748B, + 9419: 0x00007483, + 9420: 0x0000747E, + 9421: 0x00007480, + 9422: 0x0000757F, + 9423: 0x00007620, + 9424: 0x00007629, + 9425: 0x0000761F, + 9426: 0x00007624, + 9427: 0x00007626, + 9428: 0x00007621, + 9429: 0x00007622, + 9430: 0x0000769A, + 9431: 0x000076BA, + 9432: 0x000076E4, + 9433: 0x0000778E, + 9434: 0x00007787, + 9435: 0x0000778C, + 9436: 0x00007791, + 9437: 0x0000778B, + 9438: 0x000078CB, + 9439: 0x000078C5, + 9440: 0x000078BA, + 9441: 0x000078CA, + 9442: 0x000078BE, + 9443: 0x000078D5, + 9444: 0x000078BC, + 9445: 0x000078D0, + 9446: 0x00007A3F, + 9447: 0x00007A3C, + 9448: 0x00007A40, + 9449: 0x00007A3D, + 9450: 0x00007A37, + 9451: 0x00007A3B, + 9452: 0x00007AAF, + 9453: 0x00007AAE, + 9454: 0x00007BAD, + 9455: 0x00007BB1, + 9456: 0x00007BC4, + 9457: 0x00007BB4, + 9458: 0x00007BC6, + 9459: 0x00007BC7, + 9460: 0x00007BC1, + 9461: 0x00007BA0, + 9462: 0x00007BCC, + 9463: 0x00007CCA, + 9464: 0x00007DE0, + 9465: 0x00007DF4, + 9466: 0x00007DEF, + 9467: 0x00007DFB, + 9468: 0x00007DD8, + 9469: 0x00007DEC, + 9470: 0x00007DDD, + 9471: 0x00007DE8, + 9472: 0x00007DE3, + 9473: 0x00007DDA, + 9474: 0x00007DDE, + 9475: 0x00007DE9, + 9476: 0x00007D9E, + 9477: 0x00007DD9, + 9478: 0x00007DF2, + 9479: 0x00007DF9, + 9480: 0x00007F75, + 9481: 0x00007F77, + 9482: 0x00007FAF, + 9483: 0x00007FE9, + 9484: 0x00008026, + 9485: 0x0000819B, + 9486: 0x0000819C, + 9487: 0x0000819D, + 9488: 0x000081A0, + 9489: 0x0000819A, + 9490: 0x00008198, + 9491: 0x00008517, + 9492: 0x0000853D, + 9493: 0x0000851A, + 9494: 0x000084EE, + 9495: 0x0000852C, + 9496: 0x0000852D, + 9497: 0x00008513, + 9498: 0x00008511, + 9499: 0x00008523, + 9500: 0x00008521, + 9501: 0x00008514, + 9502: 0x000084EC, + 9503: 0x00008525, + 9504: 0x000084FF, + 9505: 0x00008506, + 9506: 0x00008782, + 9507: 0x00008774, + 9508: 0x00008776, + 9509: 0x00008760, + 9510: 0x00008766, + 9511: 0x00008778, + 9512: 0x00008768, + 9513: 0x00008759, + 9514: 0x00008757, + 9515: 0x0000874C, + 9516: 0x00008753, + 9517: 0x0000885B, + 9518: 0x0000885D, + 9519: 0x00008910, + 9520: 0x00008907, + 9521: 0x00008912, + 9522: 0x00008913, + 9523: 0x00008915, + 9524: 0x0000890A, + 9525: 0x00008ABC, + 9526: 0x00008AD2, + 9527: 0x00008AC7, + 9528: 0x00008AC4, + 9529: 0x00008A95, + 9530: 0x00008ACB, + 9531: 0x00008AF8, + 9532: 0x00008AB2, + 9533: 0x00008AC9, + 9534: 0x00008AC2, + 9535: 0x00008ABF, + 9536: 0x00008AB0, + 9537: 0x00008AD6, + 9538: 0x00008ACD, + 9539: 0x00008AB6, + 9540: 0x00008AB9, + 9541: 0x00008ADB, + 9542: 0x00008C4C, + 9543: 0x00008C4E, + 9544: 0x00008C6C, + 9545: 0x00008CE0, + 9546: 0x00008CDE, + 9547: 0x00008CE6, + 9548: 0x00008CE4, + 9549: 0x00008CEC, + 9550: 0x00008CED, + 9551: 0x00008CE2, + 9552: 0x00008CE3, + 9553: 0x00008CDC, + 9554: 0x00008CEA, + 9555: 0x00008CE1, + 9556: 0x00008D6D, + 9557: 0x00008D9F, + 9558: 0x00008DA3, + 9559: 0x00008E2B, + 9560: 0x00008E10, + 9561: 0x00008E1D, + 9562: 0x00008E22, + 9563: 0x00008E0F, + 9564: 0x00008E29, + 9565: 0x00008E1F, + 9566: 0x00008E21, + 9567: 0x00008E1E, + 9568: 0x00008EBA, + 9569: 0x00008F1D, + 9570: 0x00008F1B, + 9571: 0x00008F1F, + 9572: 0x00008F29, + 9573: 0x00008F26, + 9574: 0x00008F2A, + 9575: 0x00008F1C, + 9576: 0x00008F1E, + 9577: 0x00008F25, + 9578: 0x00009069, + 9579: 0x0000906E, + 9580: 0x00009068, + 9581: 0x0000906D, + 9582: 0x00009077, + 9583: 0x00009130, + 9584: 0x0000912D, + 9585: 0x00009127, + 9586: 0x00009131, + 9587: 0x00009187, + 9588: 0x00009189, + 9589: 0x0000918B, + 9590: 0x00009183, + 9591: 0x000092C5, + 9592: 0x000092BB, + 9593: 0x000092B7, + 9594: 0x000092EA, + 9595: 0x000092AC, + 9596: 0x000092E4, + 9597: 0x000092C1, + 9598: 0x000092B3, + 9599: 0x000092BC, + 9600: 0x000092D2, + 9601: 0x000092C7, + 9602: 0x000092F0, + 9603: 0x000092B2, + 9604: 0x000095AD, + 9605: 0x000095B1, + 9606: 0x00009704, + 9607: 0x00009706, + 9608: 0x00009707, + 9609: 0x00009709, + 9610: 0x00009760, + 9611: 0x0000978D, + 9612: 0x0000978B, + 9613: 0x0000978F, + 9614: 0x00009821, + 9615: 0x0000982B, + 9616: 0x0000981C, + 9617: 0x000098B3, + 9618: 0x0000990A, + 9619: 0x00009913, + 9620: 0x00009912, + 9621: 0x00009918, + 9622: 0x000099DD, + 9623: 0x000099D0, + 9624: 0x000099DF, + 9625: 0x000099DB, + 9626: 0x000099D1, + 9627: 0x000099D5, + 9628: 0x000099D2, + 9629: 0x000099D9, + 9630: 0x00009AB7, + 9631: 0x00009AEE, + 9632: 0x00009AEF, + 9633: 0x00009B27, + 9634: 0x00009B45, + 9635: 0x00009B44, + 9636: 0x00009B77, + 9637: 0x00009B6F, + 9638: 0x00009D06, + 9639: 0x00009D09, + 9640: 0x00009D03, + 9641: 0x00009EA9, + 9642: 0x00009EBE, + 9643: 0x00009ECE, + 9644: 0x000058A8, + 9645: 0x00009F52, + 9646: 0x00005112, + 9647: 0x00005118, + 9648: 0x00005114, + 9649: 0x00005110, + 9650: 0x00005115, + 9651: 0x00005180, + 9652: 0x000051AA, + 9653: 0x000051DD, + 9654: 0x00005291, + 9655: 0x00005293, + 9656: 0x000052F3, + 9657: 0x00005659, + 9658: 0x0000566B, + 9659: 0x00005679, + 9660: 0x00005669, + 9661: 0x00005664, + 9662: 0x00005678, + 9663: 0x0000566A, + 9664: 0x00005668, + 9665: 0x00005665, + 9666: 0x00005671, + 9667: 0x0000566F, + 9668: 0x0000566C, + 9669: 0x00005662, + 9670: 0x00005676, + 9671: 0x000058C1, + 9672: 0x000058BE, + 9673: 0x000058C7, + 9674: 0x000058C5, + 9675: 0x0000596E, + 9676: 0x00005B1D, + 9677: 0x00005B34, + 9678: 0x00005B78, + 9679: 0x00005BF0, + 9680: 0x00005C0E, + 9681: 0x00005F4A, + 9682: 0x000061B2, + 9683: 0x00006191, + 9684: 0x000061A9, + 9685: 0x0000618A, + 9686: 0x000061CD, + 9687: 0x000061B6, + 9688: 0x000061BE, + 9689: 0x000061CA, + 9690: 0x000061C8, + 9691: 0x00006230, + 9692: 0x000064C5, + 9693: 0x000064C1, + 9694: 0x000064CB, + 9695: 0x000064BB, + 9696: 0x000064BC, + 9697: 0x000064DA, + 9698: 0x000064C4, + 9699: 0x000064C7, + 9700: 0x000064C2, + 9701: 0x000064CD, + 9702: 0x000064BF, + 9703: 0x000064D2, + 9704: 0x000064D4, + 9705: 0x000064BE, + 9706: 0x00006574, + 9707: 0x000066C6, + 9708: 0x000066C9, + 9709: 0x000066B9, + 9710: 0x000066C4, + 9711: 0x000066C7, + 9712: 0x000066B8, + 9713: 0x00006A3D, + 9714: 0x00006A38, + 9715: 0x00006A3A, + 9716: 0x00006A59, + 9717: 0x00006A6B, + 9718: 0x00006A58, + 9719: 0x00006A39, + 9720: 0x00006A44, + 9721: 0x00006A62, + 9722: 0x00006A61, + 9723: 0x00006A4B, + 9724: 0x00006A47, + 9725: 0x00006A35, + 9726: 0x00006A5F, + 9727: 0x00006A48, + 9728: 0x00006B59, + 9729: 0x00006B77, + 9730: 0x00006C05, + 9731: 0x00006FC2, + 9732: 0x00006FB1, + 9733: 0x00006FA1, + 9734: 0x00006FC3, + 9735: 0x00006FA4, + 9736: 0x00006FC1, + 9737: 0x00006FA7, + 9738: 0x00006FB3, + 9739: 0x00006FC0, + 9740: 0x00006FB9, + 9741: 0x00006FB6, + 9742: 0x00006FA6, + 9743: 0x00006FA0, + 9744: 0x00006FB4, + 9745: 0x000071BE, + 9746: 0x000071C9, + 9747: 0x000071D0, + 9748: 0x000071D2, + 9749: 0x000071C8, + 9750: 0x000071D5, + 9751: 0x000071B9, + 9752: 0x000071CE, + 9753: 0x000071D9, + 9754: 0x000071DC, + 9755: 0x000071C3, + 9756: 0x000071C4, + 9757: 0x00007368, + 9758: 0x0000749C, + 9759: 0x000074A3, + 9760: 0x00007498, + 9761: 0x0000749F, + 9762: 0x0000749E, + 9763: 0x000074E2, + 9764: 0x0000750C, + 9765: 0x0000750D, + 9766: 0x00007634, + 9767: 0x00007638, + 9768: 0x0000763A, + 9769: 0x000076E7, + 9770: 0x000076E5, + 9771: 0x000077A0, + 9772: 0x0000779E, + 9773: 0x0000779F, + 9774: 0x000077A5, + 9775: 0x000078E8, + 9776: 0x000078DA, + 9777: 0x000078EC, + 9778: 0x000078E7, + 9779: 0x000079A6, + 9780: 0x00007A4D, + 9781: 0x00007A4E, + 9782: 0x00007A46, + 9783: 0x00007A4C, + 9784: 0x00007A4B, + 9785: 0x00007ABA, + 9786: 0x00007BD9, + 9787: 0x00007C11, + 9788: 0x00007BC9, + 9789: 0x00007BE4, + 9790: 0x00007BDB, + 9791: 0x00007BE1, + 9792: 0x00007BE9, + 9793: 0x00007BE6, + 9794: 0x00007CD5, + 9795: 0x00007CD6, + 9796: 0x00007E0A, + 9797: 0x00007E11, + 9798: 0x00007E08, + 9799: 0x00007E1B, + 9800: 0x00007E23, + 9801: 0x00007E1E, + 9802: 0x00007E1D, + 9803: 0x00007E09, + 9804: 0x00007E10, + 9805: 0x00007F79, + 9806: 0x00007FB2, + 9807: 0x00007FF0, + 9808: 0x00007FF1, + 9809: 0x00007FEE, + 9810: 0x00008028, + 9811: 0x000081B3, + 9812: 0x000081A9, + 9813: 0x000081A8, + 9814: 0x000081FB, + 9815: 0x00008208, + 9816: 0x00008258, + 9817: 0x00008259, + 9818: 0x0000854A, + 9819: 0x00008559, + 9820: 0x00008548, + 9821: 0x00008568, + 9822: 0x00008569, + 9823: 0x00008543, + 9824: 0x00008549, + 9825: 0x0000856D, + 9826: 0x0000856A, + 9827: 0x0000855E, + 9828: 0x00008783, + 9829: 0x0000879F, + 9830: 0x0000879E, + 9831: 0x000087A2, + 9832: 0x0000878D, + 9833: 0x00008861, + 9834: 0x0000892A, + 9835: 0x00008932, + 9836: 0x00008925, + 9837: 0x0000892B, + 9838: 0x00008921, + 9839: 0x000089AA, + 9840: 0x000089A6, + 9841: 0x00008AE6, + 9842: 0x00008AFA, + 9843: 0x00008AEB, + 9844: 0x00008AF1, + 9845: 0x00008B00, + 9846: 0x00008ADC, + 9847: 0x00008AE7, + 9848: 0x00008AEE, + 9849: 0x00008AFE, + 9850: 0x00008B01, + 9851: 0x00008B02, + 9852: 0x00008AF7, + 9853: 0x00008AED, + 9854: 0x00008AF3, + 9855: 0x00008AF6, + 9856: 0x00008AFC, + 9857: 0x00008C6B, + 9858: 0x00008C6D, + 9859: 0x00008C93, + 9860: 0x00008CF4, + 9861: 0x00008E44, + 9862: 0x00008E31, + 9863: 0x00008E34, + 9864: 0x00008E42, + 9865: 0x00008E39, + 9866: 0x00008E35, + 9867: 0x00008F3B, + 9868: 0x00008F2F, + 9869: 0x00008F38, + 9870: 0x00008F33, + 9871: 0x00008FA8, + 9872: 0x00008FA6, + 9873: 0x00009075, + 9874: 0x00009074, + 9875: 0x00009078, + 9876: 0x00009072, + 9877: 0x0000907C, + 9878: 0x0000907A, + 9879: 0x00009134, + 9880: 0x00009192, + 9881: 0x00009320, + 9882: 0x00009336, + 9883: 0x000092F8, + 9884: 0x00009333, + 9885: 0x0000932F, + 9886: 0x00009322, + 9887: 0x000092FC, + 9888: 0x0000932B, + 9889: 0x00009304, + 9890: 0x0000931A, + 9891: 0x00009310, + 9892: 0x00009326, + 9893: 0x00009321, + 9894: 0x00009315, + 9895: 0x0000932E, + 9896: 0x00009319, + 9897: 0x000095BB, + 9898: 0x000096A7, + 9899: 0x000096A8, + 9900: 0x000096AA, + 9901: 0x000096D5, + 9902: 0x0000970E, + 9903: 0x00009711, + 9904: 0x00009716, + 9905: 0x0000970D, + 9906: 0x00009713, + 9907: 0x0000970F, + 9908: 0x0000975B, + 9909: 0x0000975C, + 9910: 0x00009766, + 9911: 0x00009798, + 9912: 0x00009830, + 9913: 0x00009838, + 9914: 0x0000983B, + 9915: 0x00009837, + 9916: 0x0000982D, + 9917: 0x00009839, + 9918: 0x00009824, + 9919: 0x00009910, + 9920: 0x00009928, + 9921: 0x0000991E, + 9922: 0x0000991B, + 9923: 0x00009921, + 9924: 0x0000991A, + 9925: 0x000099ED, + 9926: 0x000099E2, + 9927: 0x000099F1, + 9928: 0x00009AB8, + 9929: 0x00009ABC, + 9930: 0x00009AFB, + 9931: 0x00009AED, + 9932: 0x00009B28, + 9933: 0x00009B91, + 9934: 0x00009D15, + 9935: 0x00009D23, + 9936: 0x00009D26, + 9937: 0x00009D28, + 9938: 0x00009D12, + 9939: 0x00009D1B, + 9940: 0x00009ED8, + 9941: 0x00009ED4, + 9942: 0x00009F8D, + 9943: 0x00009F9C, + 9944: 0x0000512A, + 9945: 0x0000511F, + 9946: 0x00005121, + 9947: 0x00005132, + 9948: 0x000052F5, + 9949: 0x0000568E, + 9950: 0x00005680, + 9951: 0x00005690, + 9952: 0x00005685, + 9953: 0x00005687, + 9954: 0x0000568F, + 9955: 0x000058D5, + 9956: 0x000058D3, + 9957: 0x000058D1, + 9958: 0x000058CE, + 9959: 0x00005B30, + 9960: 0x00005B2A, + 9961: 0x00005B24, + 9962: 0x00005B7A, + 9963: 0x00005C37, + 9964: 0x00005C68, + 9965: 0x00005DBC, + 9966: 0x00005DBA, + 9967: 0x00005DBD, + 9968: 0x00005DB8, + 9969: 0x00005E6B, + 9970: 0x00005F4C, + 9971: 0x00005FBD, + 9972: 0x000061C9, + 9973: 0x000061C2, + 9974: 0x000061C7, + 9975: 0x000061E6, + 9976: 0x000061CB, + 9977: 0x00006232, + 9978: 0x00006234, + 9979: 0x000064CE, + 9980: 0x000064CA, + 9981: 0x000064D8, + 9982: 0x000064E0, + 9983: 0x000064F0, + 9984: 0x000064E6, + 9985: 0x000064EC, + 9986: 0x000064F1, + 9987: 0x000064E2, + 9988: 0x000064ED, + 9989: 0x00006582, + 9990: 0x00006583, + 9991: 0x000066D9, + 9992: 0x000066D6, + 9993: 0x00006A80, + 9994: 0x00006A94, + 9995: 0x00006A84, + 9996: 0x00006AA2, + 9997: 0x00006A9C, + 9998: 0x00006ADB, + 9999: 0x00006AA3, + 10000: 0x00006A7E, + 10001: 0x00006A97, + 10002: 0x00006A90, + 10003: 0x00006AA0, + 10004: 0x00006B5C, + 10005: 0x00006BAE, + 10006: 0x00006BDA, + 10007: 0x00006C08, + 10008: 0x00006FD8, + 10009: 0x00006FF1, + 10010: 0x00006FDF, + 10011: 0x00006FE0, + 10012: 0x00006FDB, + 10013: 0x00006FE4, + 10014: 0x00006FEB, + 10015: 0x00006FEF, + 10016: 0x00006F80, + 10017: 0x00006FEC, + 10018: 0x00006FE1, + 10019: 0x00006FE9, + 10020: 0x00006FD5, + 10021: 0x00006FEE, + 10022: 0x00006FF0, + 10023: 0x000071E7, + 10024: 0x000071DF, + 10025: 0x000071EE, + 10026: 0x000071E6, + 10027: 0x000071E5, + 10028: 0x000071ED, + 10029: 0x000071EC, + 10030: 0x000071F4, + 10031: 0x000071E0, + 10032: 0x00007235, + 10033: 0x00007246, + 10034: 0x00007370, + 10035: 0x00007372, + 10036: 0x000074A9, + 10037: 0x000074B0, + 10038: 0x000074A6, + 10039: 0x000074A8, + 10040: 0x00007646, + 10041: 0x00007642, + 10042: 0x0000764C, + 10043: 0x000076EA, + 10044: 0x000077B3, + 10045: 0x000077AA, + 10046: 0x000077B0, + 10047: 0x000077AC, + 10048: 0x000077A7, + 10049: 0x000077AD, + 10050: 0x000077EF, + 10051: 0x000078F7, + 10052: 0x000078FA, + 10053: 0x000078F4, + 10054: 0x000078EF, + 10055: 0x00007901, + 10056: 0x000079A7, + 10057: 0x000079AA, + 10058: 0x00007A57, + 10059: 0x00007ABF, + 10060: 0x00007C07, + 10061: 0x00007C0D, + 10062: 0x00007BFE, + 10063: 0x00007BF7, + 10064: 0x00007C0C, + 10065: 0x00007BE0, + 10066: 0x00007CE0, + 10067: 0x00007CDC, + 10068: 0x00007CDE, + 10069: 0x00007CE2, + 10070: 0x00007CDF, + 10071: 0x00007CD9, + 10072: 0x00007CDD, + 10073: 0x00007E2E, + 10074: 0x00007E3E, + 10075: 0x00007E46, + 10076: 0x00007E37, + 10077: 0x00007E32, + 10078: 0x00007E43, + 10079: 0x00007E2B, + 10080: 0x00007E3D, + 10081: 0x00007E31, + 10082: 0x00007E45, + 10083: 0x00007E41, + 10084: 0x00007E34, + 10085: 0x00007E39, + 10086: 0x00007E48, + 10087: 0x00007E35, + 10088: 0x00007E3F, + 10089: 0x00007E2F, + 10090: 0x00007F44, + 10091: 0x00007FF3, + 10092: 0x00007FFC, + 10093: 0x00008071, + 10094: 0x00008072, + 10095: 0x00008070, + 10096: 0x0000806F, + 10097: 0x00008073, + 10098: 0x000081C6, + 10099: 0x000081C3, + 10100: 0x000081BA, + 10101: 0x000081C2, + 10102: 0x000081C0, + 10103: 0x000081BF, + 10104: 0x000081BD, + 10105: 0x000081C9, + 10106: 0x000081BE, + 10107: 0x000081E8, + 10108: 0x00008209, + 10109: 0x00008271, + 10110: 0x000085AA, + 10111: 0x00008584, + 10112: 0x0000857E, + 10113: 0x0000859C, + 10114: 0x00008591, + 10115: 0x00008594, + 10116: 0x000085AF, + 10117: 0x0000859B, + 10118: 0x00008587, + 10119: 0x000085A8, + 10120: 0x0000858A, + 10121: 0x00008667, + 10122: 0x000087C0, + 10123: 0x000087D1, + 10124: 0x000087B3, + 10125: 0x000087D2, + 10126: 0x000087C6, + 10127: 0x000087AB, + 10128: 0x000087BB, + 10129: 0x000087BA, + 10130: 0x000087C8, + 10131: 0x000087CB, + 10132: 0x0000893B, + 10133: 0x00008936, + 10134: 0x00008944, + 10135: 0x00008938, + 10136: 0x0000893D, + 10137: 0x000089AC, + 10138: 0x00008B0E, + 10139: 0x00008B17, + 10140: 0x00008B19, + 10141: 0x00008B1B, + 10142: 0x00008B0A, + 10143: 0x00008B20, + 10144: 0x00008B1D, + 10145: 0x00008B04, + 10146: 0x00008B10, + 10147: 0x00008C41, + 10148: 0x00008C3F, + 10149: 0x00008C73, + 10150: 0x00008CFA, + 10151: 0x00008CFD, + 10152: 0x00008CFC, + 10153: 0x00008CF8, + 10154: 0x00008CFB, + 10155: 0x00008DA8, + 10156: 0x00008E49, + 10157: 0x00008E4B, + 10158: 0x00008E48, + 10159: 0x00008E4A, + 10160: 0x00008F44, + 10161: 0x00008F3E, + 10162: 0x00008F42, + 10163: 0x00008F45, + 10164: 0x00008F3F, + 10165: 0x0000907F, + 10166: 0x0000907D, + 10167: 0x00009084, + 10168: 0x00009081, + 10169: 0x00009082, + 10170: 0x00009080, + 10171: 0x00009139, + 10172: 0x000091A3, + 10173: 0x0000919E, + 10174: 0x0000919C, + 10175: 0x0000934D, + 10176: 0x00009382, + 10177: 0x00009328, + 10178: 0x00009375, + 10179: 0x0000934A, + 10180: 0x00009365, + 10181: 0x0000934B, + 10182: 0x00009318, + 10183: 0x0000937E, + 10184: 0x0000936C, + 10185: 0x0000935B, + 10186: 0x00009370, + 10187: 0x0000935A, + 10188: 0x00009354, + 10189: 0x000095CA, + 10190: 0x000095CB, + 10191: 0x000095CC, + 10192: 0x000095C8, + 10193: 0x000095C6, + 10194: 0x000096B1, + 10195: 0x000096B8, + 10196: 0x000096D6, + 10197: 0x0000971C, + 10198: 0x0000971E, + 10199: 0x000097A0, + 10200: 0x000097D3, + 10201: 0x00009846, + 10202: 0x000098B6, + 10203: 0x00009935, + 10204: 0x00009A01, + 10205: 0x000099FF, + 10206: 0x00009BAE, + 10207: 0x00009BAB, + 10208: 0x00009BAA, + 10209: 0x00009BAD, + 10210: 0x00009D3B, + 10211: 0x00009D3F, + 10212: 0x00009E8B, + 10213: 0x00009ECF, + 10214: 0x00009EDE, + 10215: 0x00009EDC, + 10216: 0x00009EDD, + 10217: 0x00009EDB, + 10218: 0x00009F3E, + 10219: 0x00009F4B, + 10220: 0x000053E2, + 10221: 0x00005695, + 10222: 0x000056AE, + 10223: 0x000058D9, + 10224: 0x000058D8, + 10225: 0x00005B38, + 10226: 0x00005F5D, + 10227: 0x000061E3, + 10228: 0x00006233, + 10229: 0x000064F4, + 10230: 0x000064F2, + 10231: 0x000064FE, + 10232: 0x00006506, + 10233: 0x000064FA, + 10234: 0x000064FB, + 10235: 0x000064F7, + 10236: 0x000065B7, + 10237: 0x000066DC, + 10238: 0x00006726, + 10239: 0x00006AB3, + 10240: 0x00006AAC, + 10241: 0x00006AC3, + 10242: 0x00006ABB, + 10243: 0x00006AB8, + 10244: 0x00006AC2, + 10245: 0x00006AAE, + 10246: 0x00006AAF, + 10247: 0x00006B5F, + 10248: 0x00006B78, + 10249: 0x00006BAF, + 10250: 0x00007009, + 10251: 0x0000700B, + 10252: 0x00006FFE, + 10253: 0x00007006, + 10254: 0x00006FFA, + 10255: 0x00007011, + 10256: 0x0000700F, + 10257: 0x000071FB, + 10258: 0x000071FC, + 10259: 0x000071FE, + 10260: 0x000071F8, + 10261: 0x00007377, + 10262: 0x00007375, + 10263: 0x000074A7, + 10264: 0x000074BF, + 10265: 0x00007515, + 10266: 0x00007656, + 10267: 0x00007658, + 10268: 0x00007652, + 10269: 0x000077BD, + 10270: 0x000077BF, + 10271: 0x000077BB, + 10272: 0x000077BC, + 10273: 0x0000790E, + 10274: 0x000079AE, + 10275: 0x00007A61, + 10276: 0x00007A62, + 10277: 0x00007A60, + 10278: 0x00007AC4, + 10279: 0x00007AC5, + 10280: 0x00007C2B, + 10281: 0x00007C27, + 10282: 0x00007C2A, + 10283: 0x00007C1E, + 10284: 0x00007C23, + 10285: 0x00007C21, + 10286: 0x00007CE7, + 10287: 0x00007E54, + 10288: 0x00007E55, + 10289: 0x00007E5E, + 10290: 0x00007E5A, + 10291: 0x00007E61, + 10292: 0x00007E52, + 10293: 0x00007E59, + 10294: 0x00007F48, + 10295: 0x00007FF9, + 10296: 0x00007FFB, + 10297: 0x00008077, + 10298: 0x00008076, + 10299: 0x000081CD, + 10300: 0x000081CF, + 10301: 0x0000820A, + 10302: 0x000085CF, + 10303: 0x000085A9, + 10304: 0x000085CD, + 10305: 0x000085D0, + 10306: 0x000085C9, + 10307: 0x000085B0, + 10308: 0x000085BA, + 10309: 0x000085B9, + 10310: 0x000085A6, + 10311: 0x000087EF, + 10312: 0x000087EC, + 10313: 0x000087F2, + 10314: 0x000087E0, + 10315: 0x00008986, + 10316: 0x000089B2, + 10317: 0x000089F4, + 10318: 0x00008B28, + 10319: 0x00008B39, + 10320: 0x00008B2C, + 10321: 0x00008B2B, + 10322: 0x00008C50, + 10323: 0x00008D05, + 10324: 0x00008E59, + 10325: 0x00008E63, + 10326: 0x00008E66, + 10327: 0x00008E64, + 10328: 0x00008E5F, + 10329: 0x00008E55, + 10330: 0x00008EC0, + 10331: 0x00008F49, + 10332: 0x00008F4D, + 10333: 0x00009087, + 10334: 0x00009083, + 10335: 0x00009088, + 10336: 0x000091AB, + 10337: 0x000091AC, + 10338: 0x000091D0, + 10339: 0x00009394, + 10340: 0x0000938A, + 10341: 0x00009396, + 10342: 0x000093A2, + 10343: 0x000093B3, + 10344: 0x000093AE, + 10345: 0x000093AC, + 10346: 0x000093B0, + 10347: 0x00009398, + 10348: 0x0000939A, + 10349: 0x00009397, + 10350: 0x000095D4, + 10351: 0x000095D6, + 10352: 0x000095D0, + 10353: 0x000095D5, + 10354: 0x000096E2, + 10355: 0x000096DC, + 10356: 0x000096D9, + 10357: 0x000096DB, + 10358: 0x000096DE, + 10359: 0x00009724, + 10360: 0x000097A3, + 10361: 0x000097A6, + 10362: 0x000097AD, + 10363: 0x000097F9, + 10364: 0x0000984D, + 10365: 0x0000984F, + 10366: 0x0000984C, + 10367: 0x0000984E, + 10368: 0x00009853, + 10369: 0x000098BA, + 10370: 0x0000993E, + 10371: 0x0000993F, + 10372: 0x0000993D, + 10373: 0x0000992E, + 10374: 0x000099A5, + 10375: 0x00009A0E, + 10376: 0x00009AC1, + 10377: 0x00009B03, + 10378: 0x00009B06, + 10379: 0x00009B4F, + 10380: 0x00009B4E, + 10381: 0x00009B4D, + 10382: 0x00009BCA, + 10383: 0x00009BC9, + 10384: 0x00009BFD, + 10385: 0x00009BC8, + 10386: 0x00009BC0, + 10387: 0x00009D51, + 10388: 0x00009D5D, + 10389: 0x00009D60, + 10390: 0x00009EE0, + 10391: 0x00009F15, + 10392: 0x00009F2C, + 10393: 0x00005133, + 10394: 0x000056A5, + 10395: 0x000058DE, + 10396: 0x000058DF, + 10397: 0x000058E2, + 10398: 0x00005BF5, + 10399: 0x00009F90, + 10400: 0x00005EEC, + 10401: 0x000061F2, + 10402: 0x000061F7, + 10403: 0x000061F6, + 10404: 0x000061F5, + 10405: 0x00006500, + 10406: 0x0000650F, + 10407: 0x000066E0, + 10408: 0x000066DD, + 10409: 0x00006AE5, + 10410: 0x00006ADD, + 10411: 0x00006ADA, + 10412: 0x00006AD3, + 10413: 0x0000701B, + 10414: 0x0000701F, + 10415: 0x00007028, + 10416: 0x0000701A, + 10417: 0x0000701D, + 10418: 0x00007015, + 10419: 0x00007018, + 10420: 0x00007206, + 10421: 0x0000720D, + 10422: 0x00007258, + 10423: 0x000072A2, + 10424: 0x00007378, + 10425: 0x0000737A, + 10426: 0x000074BD, + 10427: 0x000074CA, + 10428: 0x000074E3, + 10429: 0x00007587, + 10430: 0x00007586, + 10431: 0x0000765F, + 10432: 0x00007661, + 10433: 0x000077C7, + 10434: 0x00007919, + 10435: 0x000079B1, + 10436: 0x00007A6B, + 10437: 0x00007A69, + 10438: 0x00007C3E, + 10439: 0x00007C3F, + 10440: 0x00007C38, + 10441: 0x00007C3D, + 10442: 0x00007C37, + 10443: 0x00007C40, + 10444: 0x00007E6B, + 10445: 0x00007E6D, + 10446: 0x00007E79, + 10447: 0x00007E69, + 10448: 0x00007E6A, + 10449: 0x00007F85, + 10450: 0x00007E73, + 10451: 0x00007FB6, + 10452: 0x00007FB9, + 10453: 0x00007FB8, + 10454: 0x000081D8, + 10455: 0x000085E9, + 10456: 0x000085DD, + 10457: 0x000085EA, + 10458: 0x000085D5, + 10459: 0x000085E4, + 10460: 0x000085E5, + 10461: 0x000085F7, + 10462: 0x000087FB, + 10463: 0x00008805, + 10464: 0x0000880D, + 10465: 0x000087F9, + 10466: 0x000087FE, + 10467: 0x00008960, + 10468: 0x0000895F, + 10469: 0x00008956, + 10470: 0x0000895E, + 10471: 0x00008B41, + 10472: 0x00008B5C, + 10473: 0x00008B58, + 10474: 0x00008B49, + 10475: 0x00008B5A, + 10476: 0x00008B4E, + 10477: 0x00008B4F, + 10478: 0x00008B46, + 10479: 0x00008B59, + 10480: 0x00008D08, + 10481: 0x00008D0A, + 10482: 0x00008E7C, + 10483: 0x00008E72, + 10484: 0x00008E87, + 10485: 0x00008E76, + 10486: 0x00008E6C, + 10487: 0x00008E7A, + 10488: 0x00008E74, + 10489: 0x00008F54, + 10490: 0x00008F4E, + 10491: 0x00008FAD, + 10492: 0x0000908A, + 10493: 0x0000908B, + 10494: 0x000091B1, + 10495: 0x000091AE, + 10496: 0x000093E1, + 10497: 0x000093D1, + 10498: 0x000093DF, + 10499: 0x000093C3, + 10500: 0x000093C8, + 10501: 0x000093DC, + 10502: 0x000093DD, + 10503: 0x000093D6, + 10504: 0x000093E2, + 10505: 0x000093CD, + 10506: 0x000093D8, + 10507: 0x000093E4, + 10508: 0x000093D7, + 10509: 0x000093E8, + 10510: 0x000095DC, + 10511: 0x000096B4, + 10512: 0x000096E3, + 10513: 0x0000972A, + 10514: 0x00009727, + 10515: 0x00009761, + 10516: 0x000097DC, + 10517: 0x000097FB, + 10518: 0x0000985E, + 10519: 0x00009858, + 10520: 0x0000985B, + 10521: 0x000098BC, + 10522: 0x00009945, + 10523: 0x00009949, + 10524: 0x00009A16, + 10525: 0x00009A19, + 10526: 0x00009B0D, + 10527: 0x00009BE8, + 10528: 0x00009BE7, + 10529: 0x00009BD6, + 10530: 0x00009BDB, + 10531: 0x00009D89, + 10532: 0x00009D61, + 10533: 0x00009D72, + 10534: 0x00009D6A, + 10535: 0x00009D6C, + 10536: 0x00009E92, + 10537: 0x00009E97, + 10538: 0x00009E93, + 10539: 0x00009EB4, + 10540: 0x000052F8, + 10541: 0x000056A8, + 10542: 0x000056B7, + 10543: 0x000056B6, + 10544: 0x000056B4, + 10545: 0x000056BC, + 10546: 0x000058E4, + 10547: 0x00005B40, + 10548: 0x00005B43, + 10549: 0x00005B7D, + 10550: 0x00005BF6, + 10551: 0x00005DC9, + 10552: 0x000061F8, + 10553: 0x000061FA, + 10554: 0x00006518, + 10555: 0x00006514, + 10556: 0x00006519, + 10557: 0x000066E6, + 10558: 0x00006727, + 10559: 0x00006AEC, + 10560: 0x0000703E, + 10561: 0x00007030, + 10562: 0x00007032, + 10563: 0x00007210, + 10564: 0x0000737B, + 10565: 0x000074CF, + 10566: 0x00007662, + 10567: 0x00007665, + 10568: 0x00007926, + 10569: 0x0000792A, + 10570: 0x0000792C, + 10571: 0x0000792B, + 10572: 0x00007AC7, + 10573: 0x00007AF6, + 10574: 0x00007C4C, + 10575: 0x00007C43, + 10576: 0x00007C4D, + 10577: 0x00007CEF, + 10578: 0x00007CF0, + 10579: 0x00008FAE, + 10580: 0x00007E7D, + 10581: 0x00007E7C, + 10582: 0x00007E82, + 10583: 0x00007F4C, + 10584: 0x00008000, + 10585: 0x000081DA, + 10586: 0x00008266, + 10587: 0x000085FB, + 10588: 0x000085F9, + 10589: 0x00008611, + 10590: 0x000085FA, + 10591: 0x00008606, + 10592: 0x0000860B, + 10593: 0x00008607, + 10594: 0x0000860A, + 10595: 0x00008814, + 10596: 0x00008815, + 10597: 0x00008964, + 10598: 0x000089BA, + 10599: 0x000089F8, + 10600: 0x00008B70, + 10601: 0x00008B6C, + 10602: 0x00008B66, + 10603: 0x00008B6F, + 10604: 0x00008B5F, + 10605: 0x00008B6B, + 10606: 0x00008D0F, + 10607: 0x00008D0D, + 10608: 0x00008E89, + 10609: 0x00008E81, + 10610: 0x00008E85, + 10611: 0x00008E82, + 10612: 0x000091B4, + 10613: 0x000091CB, + 10614: 0x00009418, + 10615: 0x00009403, + 10616: 0x000093FD, + 10617: 0x000095E1, + 10618: 0x00009730, + 10619: 0x000098C4, + 10620: 0x00009952, + 10621: 0x00009951, + 10622: 0x000099A8, + 10623: 0x00009A2B, + 10624: 0x00009A30, + 10625: 0x00009A37, + 10626: 0x00009A35, + 10627: 0x00009C13, + 10628: 0x00009C0D, + 10629: 0x00009E79, + 10630: 0x00009EB5, + 10631: 0x00009EE8, + 10632: 0x00009F2F, + 10633: 0x00009F5F, + 10634: 0x00009F63, + 10635: 0x00009F61, + 10636: 0x00005137, + 10637: 0x00005138, + 10638: 0x000056C1, + 10639: 0x000056C0, + 10640: 0x000056C2, + 10641: 0x00005914, + 10642: 0x00005C6C, + 10643: 0x00005DCD, + 10644: 0x000061FC, + 10645: 0x000061FE, + 10646: 0x0000651D, + 10647: 0x0000651C, + 10648: 0x00006595, + 10649: 0x000066E9, + 10650: 0x00006AFB, + 10651: 0x00006B04, + 10652: 0x00006AFA, + 10653: 0x00006BB2, + 10654: 0x0000704C, + 10655: 0x0000721B, + 10656: 0x000072A7, + 10657: 0x000074D6, + 10658: 0x000074D4, + 10659: 0x00007669, + 10660: 0x000077D3, + 10661: 0x00007C50, + 10662: 0x00007E8F, + 10663: 0x00007E8C, + 10664: 0x00007FBC, + 10665: 0x00008617, + 10666: 0x0000862D, + 10667: 0x0000861A, + 10668: 0x00008823, + 10669: 0x00008822, + 10670: 0x00008821, + 10671: 0x0000881F, + 10672: 0x0000896A, + 10673: 0x0000896C, + 10674: 0x000089BD, + 10675: 0x00008B74, + 10676: 0x00008B77, + 10677: 0x00008B7D, + 10678: 0x00008D13, + 10679: 0x00008E8A, + 10680: 0x00008E8D, + 10681: 0x00008E8B, + 10682: 0x00008F5F, + 10683: 0x00008FAF, + 10684: 0x000091BA, + 10685: 0x0000942E, + 10686: 0x00009433, + 10687: 0x00009435, + 10688: 0x0000943A, + 10689: 0x00009438, + 10690: 0x00009432, + 10691: 0x0000942B, + 10692: 0x000095E2, + 10693: 0x00009738, + 10694: 0x00009739, + 10695: 0x00009732, + 10696: 0x000097FF, + 10697: 0x00009867, + 10698: 0x00009865, + 10699: 0x00009957, + 10700: 0x00009A45, + 10701: 0x00009A43, + 10702: 0x00009A40, + 10703: 0x00009A3E, + 10704: 0x00009ACF, + 10705: 0x00009B54, + 10706: 0x00009B51, + 10707: 0x00009C2D, + 10708: 0x00009C25, + 10709: 0x00009DAF, + 10710: 0x00009DB4, + 10711: 0x00009DC2, + 10712: 0x00009DB8, + 10713: 0x00009E9D, + 10714: 0x00009EEF, + 10715: 0x00009F19, + 10716: 0x00009F5C, + 10717: 0x00009F66, + 10718: 0x00009F67, + 10719: 0x0000513C, + 10720: 0x0000513B, + 10721: 0x000056C8, + 10722: 0x000056CA, + 10723: 0x000056C9, + 10724: 0x00005B7F, + 10725: 0x00005DD4, + 10726: 0x00005DD2, + 10727: 0x00005F4E, + 10728: 0x000061FF, + 10729: 0x00006524, + 10730: 0x00006B0A, + 10731: 0x00006B61, + 10732: 0x00007051, + 10733: 0x00007058, + 10734: 0x00007380, + 10735: 0x000074E4, + 10736: 0x0000758A, + 10737: 0x0000766E, + 10738: 0x0000766C, + 10739: 0x000079B3, + 10740: 0x00007C60, + 10741: 0x00007C5F, + 10742: 0x0000807E, + 10743: 0x0000807D, + 10744: 0x000081DF, + 10745: 0x00008972, + 10746: 0x0000896F, + 10747: 0x000089FC, + 10748: 0x00008B80, + 10749: 0x00008D16, + 10750: 0x00008D17, + 10751: 0x00008E91, + 10752: 0x00008E93, + 10753: 0x00008F61, + 10754: 0x00009148, + 10755: 0x00009444, + 10756: 0x00009451, + 10757: 0x00009452, + 10758: 0x0000973D, + 10759: 0x0000973E, + 10760: 0x000097C3, + 10761: 0x000097C1, + 10762: 0x0000986B, + 10763: 0x00009955, + 10764: 0x00009A55, + 10765: 0x00009A4D, + 10766: 0x00009AD2, + 10767: 0x00009B1A, + 10768: 0x00009C49, + 10769: 0x00009C31, + 10770: 0x00009C3E, + 10771: 0x00009C3B, + 10772: 0x00009DD3, + 10773: 0x00009DD7, + 10774: 0x00009F34, + 10775: 0x00009F6C, + 10776: 0x00009F6A, + 10777: 0x00009F94, + 10778: 0x000056CC, + 10779: 0x00005DD6, + 10780: 0x00006200, + 10781: 0x00006523, + 10782: 0x0000652B, + 10783: 0x0000652A, + 10784: 0x000066EC, + 10785: 0x00006B10, + 10786: 0x000074DA, + 10787: 0x00007ACA, + 10788: 0x00007C64, + 10789: 0x00007C63, + 10790: 0x00007C65, + 10791: 0x00007E93, + 10792: 0x00007E96, + 10793: 0x00007E94, + 10794: 0x000081E2, + 10795: 0x00008638, + 10796: 0x0000863F, + 10797: 0x00008831, + 10798: 0x00008B8A, + 10799: 0x00009090, + 10800: 0x0000908F, + 10801: 0x00009463, + 10802: 0x00009460, + 10803: 0x00009464, + 10804: 0x00009768, + 10805: 0x0000986F, + 10806: 0x0000995C, + 10807: 0x00009A5A, + 10808: 0x00009A5B, + 10809: 0x00009A57, + 10810: 0x00009AD3, + 10811: 0x00009AD4, + 10812: 0x00009AD1, + 10813: 0x00009C54, + 10814: 0x00009C57, + 10815: 0x00009C56, + 10816: 0x00009DE5, + 10817: 0x00009E9F, + 10818: 0x00009EF4, + 10819: 0x000056D1, + 10820: 0x000058E9, + 10821: 0x0000652C, + 10822: 0x0000705E, + 10823: 0x00007671, + 10824: 0x00007672, + 10825: 0x000077D7, + 10826: 0x00007F50, + 10827: 0x00007F88, + 10828: 0x00008836, + 10829: 0x00008839, + 10830: 0x00008862, + 10831: 0x00008B93, + 10832: 0x00008B92, + 10833: 0x00008B96, + 10834: 0x00008277, + 10835: 0x00008D1B, + 10836: 0x000091C0, + 10837: 0x0000946A, + 10838: 0x00009742, + 10839: 0x00009748, + 10840: 0x00009744, + 10841: 0x000097C6, + 10842: 0x00009870, + 10843: 0x00009A5F, + 10844: 0x00009B22, + 10845: 0x00009B58, + 10846: 0x00009C5F, + 10847: 0x00009DF9, + 10848: 0x00009DFA, + 10849: 0x00009E7C, + 10850: 0x00009E7D, + 10851: 0x00009F07, + 10852: 0x00009F77, + 10853: 0x00009F72, + 10854: 0x00005EF3, + 10855: 0x00006B16, + 10856: 0x00007063, + 10857: 0x00007C6C, + 10858: 0x00007C6E, + 10859: 0x0000883B, + 10860: 0x000089C0, + 10861: 0x00008EA1, + 10862: 0x000091C1, + 10863: 0x00009472, + 10864: 0x00009470, + 10865: 0x00009871, + 10866: 0x0000995E, + 10867: 0x00009AD6, + 10868: 0x00009B23, + 10869: 0x00009ECC, + 10870: 0x00007064, + 10871: 0x000077DA, + 10872: 0x00008B9A, + 10873: 0x00009477, + 10874: 0x000097C9, + 10875: 0x00009A62, + 10876: 0x00009A65, + 10877: 0x00007E9C, + 10878: 0x00008B9C, + 10879: 0x00008EAA, + 10880: 0x000091C5, + 10881: 0x0000947D, + 10882: 0x0000947E, + 10883: 0x0000947C, + 10884: 0x00009C77, + 10885: 0x00009C78, + 10886: 0x00009EF7, + 10887: 0x00008C54, + 10888: 0x0000947F, + 10889: 0x00009E1A, + 10890: 0x00007228, + 10891: 0x00009A6A, + 10892: 0x00009B31, + 10893: 0x00009E1B, + 10894: 0x00009E1E, + 10895: 0x00007C72, + 10896: 0x00002460, + 10897: 0x00002461, + 10898: 0x00002462, + 10899: 0x00002463, + 10900: 0x00002464, + 10901: 0x00002465, + 10902: 0x00002466, + 10903: 0x00002467, + 10904: 0x00002468, + 10905: 0x00002469, + 10906: 0x00002474, + 10907: 0x00002475, + 10908: 0x00002476, + 10909: 0x00002477, + 10910: 0x00002478, + 10911: 0x00002479, + 10912: 0x0000247A, + 10913: 0x0000247B, + 10914: 0x0000247C, + 10915: 0x0000247D, + 10916: 0x00002170, + 10917: 0x00002171, + 10918: 0x00002172, + 10919: 0x00002173, + 10920: 0x00002174, + 10921: 0x00002175, + 10922: 0x00002176, + 10923: 0x00002177, + 10924: 0x00002178, + 10925: 0x00002179, + 10926: 0x00004E36, + 10927: 0x00004E3F, + 10928: 0x00004E85, + 10929: 0x00004EA0, + 10930: 0x00005182, + 10931: 0x00005196, + 10932: 0x000051AB, + 10933: 0x000052F9, + 10934: 0x00005338, + 10935: 0x00005369, + 10936: 0x000053B6, + 10937: 0x0000590A, + 10938: 0x00005B80, + 10939: 0x00005DDB, + 10940: 0x00002F33, + 10941: 0x00005E7F, + 10942: 0x00005EF4, + 10943: 0x00005F50, + 10944: 0x00005F61, + 10945: 0x00006534, + 10946: 0x000065E0, + 10947: 0x00007592, + 10948: 0x00007676, + 10949: 0x00008FB5, + 10950: 0x000096B6, + 10951: 0x000000A8, + 10952: 0x000002C6, + 10953: 0x000030FD, + 10954: 0x000030FE, + 10955: 0x0000309D, + 10956: 0x0000309E, + 10957: 0x00003003, + 10958: 0x00004EDD, + 10959: 0x00003005, + 10960: 0x00003006, + 10961: 0x00003007, + 10962: 0x000030FC, + 10963: 0x0000FF3B, + 10964: 0x0000FF3D, + 10965: 0x0000273D, + 10966: 0x00003041, + 10967: 0x00003042, + 10968: 0x00003043, + 10969: 0x00003044, + 10970: 0x00003045, + 10971: 0x00003046, + 10972: 0x00003047, + 10973: 0x00003048, + 10974: 0x00003049, + 10975: 0x0000304A, + 10976: 0x0000304B, + 10977: 0x0000304C, + 10978: 0x0000304D, + 10979: 0x0000304E, + 10980: 0x0000304F, + 10981: 0x00003050, + 10982: 0x00003051, + 10983: 0x00003052, + 10984: 0x00003053, + 10985: 0x00003054, + 10986: 0x00003055, + 10987: 0x00003056, + 10988: 0x00003057, + 10989: 0x00003058, + 10990: 0x00003059, + 10991: 0x0000305A, + 10992: 0x0000305B, + 10993: 0x0000305C, + 10994: 0x0000305D, + 10995: 0x0000305E, + 10996: 0x0000305F, + 10997: 0x00003060, + 10998: 0x00003061, + 10999: 0x00003062, + 11000: 0x00003063, + 11001: 0x00003064, + 11002: 0x00003065, + 11003: 0x00003066, + 11004: 0x00003067, + 11005: 0x00003068, + 11006: 0x00003069, + 11007: 0x0000306A, + 11008: 0x0000306B, + 11009: 0x0000306C, + 11010: 0x0000306D, + 11011: 0x0000306E, + 11012: 0x0000306F, + 11013: 0x00003070, + 11014: 0x00003071, + 11015: 0x00003072, + 11016: 0x00003073, + 11017: 0x00003074, + 11018: 0x00003075, + 11019: 0x00003076, + 11020: 0x00003077, + 11021: 0x00003078, + 11022: 0x00003079, + 11023: 0x0000307A, + 11024: 0x0000307B, + 11025: 0x0000307C, + 11026: 0x0000307D, + 11027: 0x0000307E, + 11028: 0x0000307F, + 11029: 0x00003080, + 11030: 0x00003081, + 11031: 0x00003082, + 11032: 0x00003083, + 11033: 0x00003084, + 11034: 0x00003085, + 11035: 0x00003086, + 11036: 0x00003087, + 11037: 0x00003088, + 11038: 0x00003089, + 11039: 0x0000308A, + 11040: 0x0000308B, + 11041: 0x0000308C, + 11042: 0x0000308D, + 11043: 0x0000308E, + 11044: 0x0000308F, + 11045: 0x00003090, + 11046: 0x00003091, + 11047: 0x00003092, + 11048: 0x00003093, + 11049: 0x000030A1, + 11050: 0x000030A2, + 11051: 0x000030A3, + 11052: 0x000030A4, + 11053: 0x000030A5, + 11054: 0x000030A6, + 11055: 0x000030A7, + 11056: 0x000030A8, + 11057: 0x000030A9, + 11058: 0x000030AA, + 11059: 0x000030AB, + 11060: 0x000030AC, + 11061: 0x000030AD, + 11062: 0x000030AE, + 11063: 0x000030AF, + 11064: 0x000030B0, + 11065: 0x000030B1, + 11066: 0x000030B2, + 11067: 0x000030B3, + 11068: 0x000030B4, + 11069: 0x000030B5, + 11070: 0x000030B6, + 11071: 0x000030B7, + 11072: 0x000030B8, + 11073: 0x000030B9, + 11074: 0x000030BA, + 11075: 0x000030BB, + 11076: 0x000030BC, + 11077: 0x000030BD, + 11078: 0x000030BE, + 11079: 0x000030BF, + 11080: 0x000030C0, + 11081: 0x000030C1, + 11082: 0x000030C2, + 11083: 0x000030C3, + 11084: 0x000030C4, + 11085: 0x000030C5, + 11086: 0x000030C6, + 11087: 0x000030C7, + 11088: 0x000030C8, + 11089: 0x000030C9, + 11090: 0x000030CA, + 11091: 0x000030CB, + 11092: 0x000030CC, + 11093: 0x000030CD, + 11094: 0x000030CE, + 11095: 0x000030CF, + 11096: 0x000030D0, + 11097: 0x000030D1, + 11098: 0x000030D2, + 11099: 0x000030D3, + 11100: 0x000030D4, + 11101: 0x000030D5, + 11102: 0x000030D6, + 11103: 0x000030D7, + 11104: 0x000030D8, + 11105: 0x000030D9, + 11106: 0x000030DA, + 11107: 0x000030DB, + 11108: 0x000030DC, + 11109: 0x000030DD, + 11110: 0x000030DE, + 11111: 0x000030DF, + 11112: 0x000030E0, + 11113: 0x000030E1, + 11114: 0x000030E2, + 11115: 0x000030E3, + 11116: 0x000030E4, + 11117: 0x000030E5, + 11118: 0x000030E6, + 11119: 0x000030E7, + 11120: 0x000030E8, + 11121: 0x000030E9, + 11122: 0x000030EA, + 11123: 0x000030EB, + 11124: 0x000030EC, + 11125: 0x000030ED, + 11126: 0x000030EE, + 11127: 0x000030EF, + 11128: 0x000030F0, + 11129: 0x000030F1, + 11130: 0x000030F2, + 11131: 0x000030F3, + 11132: 0x000030F4, + 11133: 0x000030F5, + 11134: 0x000030F6, + 11135: 0x00000410, + 11136: 0x00000411, + 11137: 0x00000412, + 11138: 0x00000413, + 11139: 0x00000414, + 11140: 0x00000415, + 11141: 0x00000401, + 11142: 0x00000416, + 11143: 0x00000417, + 11144: 0x00000418, + 11145: 0x00000419, + 11146: 0x0000041A, + 11147: 0x0000041B, + 11148: 0x0000041C, + 11149: 0x0000041D, + 11150: 0x0000041E, + 11151: 0x0000041F, + 11152: 0x00000420, + 11153: 0x00000421, + 11154: 0x00000422, + 11155: 0x00000423, + 11156: 0x00000424, + 11157: 0x00000425, + 11158: 0x00000426, + 11159: 0x00000427, + 11160: 0x00000428, + 11161: 0x00000429, + 11162: 0x0000042A, + 11163: 0x0000042B, + 11164: 0x0000042C, + 11165: 0x0000042D, + 11166: 0x0000042E, + 11167: 0x0000042F, + 11168: 0x00000430, + 11169: 0x00000431, + 11170: 0x00000432, + 11171: 0x00000433, + 11172: 0x00000434, + 11173: 0x00000435, + 11174: 0x00000451, + 11175: 0x00000436, + 11176: 0x00000437, + 11177: 0x00000438, + 11178: 0x00000439, + 11179: 0x0000043A, + 11180: 0x0000043B, + 11181: 0x0000043C, + 11182: 0x0000043D, + 11183: 0x0000043E, + 11184: 0x0000043F, + 11185: 0x00000440, + 11186: 0x00000441, + 11187: 0x00000442, + 11188: 0x00000443, + 11189: 0x00000444, + 11190: 0x00000445, + 11191: 0x00000446, + 11192: 0x00000447, + 11193: 0x00000448, + 11194: 0x00000449, + 11195: 0x0000044A, + 11196: 0x0000044B, + 11197: 0x0000044C, + 11198: 0x0000044D, + 11199: 0x0000044E, + 11200: 0x0000044F, + 11201: 0x000021E7, + 11202: 0x000021B8, + 11203: 0x000021B9, + 11204: 0x000031CF, + 11205: 0x000200CC, + 11206: 0x00004E5A, + 11207: 0x0002008A, + 11208: 0x00005202, + 11209: 0x00004491, + 11210: 0x00009FB0, + 11211: 0x00005188, + 11212: 0x00009FB1, + 11213: 0x00027607, + 11254: 0x0000FFE2, + 11255: 0x0000FFE4, + 11256: 0x0000FF07, + 11257: 0x0000FF02, + 11258: 0x00003231, + 11259: 0x00002116, + 11260: 0x00002121, + 11261: 0x0000309B, + 11262: 0x0000309C, + 11263: 0x00002E80, + 11264: 0x00002E84, + 11265: 0x00002E86, + 11266: 0x00002E87, + 11267: 0x00002E88, + 11268: 0x00002E8A, + 11269: 0x00002E8C, + 11270: 0x00002E8D, + 11271: 0x00002E95, + 11272: 0x00002E9C, + 11273: 0x00002E9D, + 11274: 0x00002EA5, + 11275: 0x00002EA7, + 11276: 0x00002EAA, + 11277: 0x00002EAC, + 11278: 0x00002EAE, + 11279: 0x00002EB6, + 11280: 0x00002EBC, + 11281: 0x00002EBE, + 11282: 0x00002EC6, + 11283: 0x00002ECA, + 11284: 0x00002ECC, + 11285: 0x00002ECD, + 11286: 0x00002ECF, + 11287: 0x00002ED6, + 11288: 0x00002ED7, + 11289: 0x00002EDE, + 11290: 0x00002EE3, + 11294: 0x00000283, + 11295: 0x00000250, + 11296: 0x0000025B, + 11297: 0x00000254, + 11298: 0x00000275, + 11299: 0x00000153, + 11300: 0x000000F8, + 11301: 0x0000014B, + 11302: 0x0000028A, + 11303: 0x0000026A, + 11304: 0x00004E42, + 11305: 0x00004E5C, + 11306: 0x000051F5, + 11307: 0x0000531A, + 11308: 0x00005382, + 11309: 0x00004E07, + 11310: 0x00004E0C, + 11311: 0x00004E47, + 11312: 0x00004E8D, + 11313: 0x000056D7, + 11314: 0x0000FA0C, + 11315: 0x00005C6E, + 11316: 0x00005F73, + 11317: 0x00004E0F, + 11318: 0x00005187, + 11319: 0x00004E0E, + 11320: 0x00004E2E, + 11321: 0x00004E93, + 11322: 0x00004EC2, + 11323: 0x00004EC9, + 11324: 0x00004EC8, + 11325: 0x00005198, + 11326: 0x000052FC, + 11327: 0x0000536C, + 11328: 0x000053B9, + 11329: 0x00005720, + 11330: 0x00005903, + 11331: 0x0000592C, + 11332: 0x00005C10, + 11333: 0x00005DFF, + 11334: 0x000065E1, + 11335: 0x00006BB3, + 11336: 0x00006BCC, + 11337: 0x00006C14, + 11338: 0x0000723F, + 11339: 0x00004E31, + 11340: 0x00004E3C, + 11341: 0x00004EE8, + 11342: 0x00004EDC, + 11343: 0x00004EE9, + 11344: 0x00004EE1, + 11345: 0x00004EDD, + 11346: 0x00004EDA, + 11347: 0x0000520C, + 11348: 0x0000531C, + 11349: 0x0000534C, + 11350: 0x00005722, + 11351: 0x00005723, + 11352: 0x00005917, + 11353: 0x0000592F, + 11354: 0x00005B81, + 11355: 0x00005B84, + 11356: 0x00005C12, + 11357: 0x00005C3B, + 11358: 0x00005C74, + 11359: 0x00005C73, + 11360: 0x00005E04, + 11361: 0x00005E80, + 11362: 0x00005E82, + 11363: 0x00005FC9, + 11364: 0x00006209, + 11365: 0x00006250, + 11366: 0x00006C15, + 11367: 0x00006C36, + 11368: 0x00006C43, + 11369: 0x00006C3F, + 11370: 0x00006C3B, + 11371: 0x000072AE, + 11372: 0x000072B0, + 11373: 0x0000738A, + 11374: 0x000079B8, + 11375: 0x0000808A, + 11376: 0x0000961E, + 11377: 0x00004F0E, + 11378: 0x00004F18, + 11379: 0x00004F2C, + 11380: 0x00004EF5, + 11381: 0x00004F14, + 11382: 0x00004EF1, + 11383: 0x00004F00, + 11384: 0x00004EF7, + 11385: 0x00004F08, + 11386: 0x00004F1D, + 11387: 0x00004F02, + 11388: 0x00004F05, + 11389: 0x00004F22, + 11390: 0x00004F13, + 11391: 0x00004F04, + 11392: 0x00004EF4, + 11393: 0x00004F12, + 11394: 0x000051B1, + 11395: 0x00005213, + 11396: 0x00005209, + 11397: 0x00005210, + 11398: 0x000052A6, + 11399: 0x00005322, + 11400: 0x0000531F, + 11401: 0x0000534D, + 11402: 0x0000538A, + 11403: 0x00005407, + 11404: 0x000056E1, + 11405: 0x000056DF, + 11406: 0x0000572E, + 11407: 0x0000572A, + 11408: 0x00005734, + 11409: 0x0000593C, + 11410: 0x00005980, + 11411: 0x0000597C, + 11412: 0x00005985, + 11413: 0x0000597B, + 11414: 0x0000597E, + 11415: 0x00005977, + 11416: 0x0000597F, + 11417: 0x00005B56, + 11418: 0x00005C15, + 11419: 0x00005C25, + 11420: 0x00005C7C, + 11421: 0x00005C7A, + 11422: 0x00005C7B, + 11423: 0x00005C7E, + 11424: 0x00005DDF, + 11425: 0x00005E75, + 11426: 0x00005E84, + 11427: 0x00005F02, + 11428: 0x00005F1A, + 11429: 0x00005F74, + 11430: 0x00005FD5, + 11431: 0x00005FD4, + 11432: 0x00005FCF, + 11433: 0x0000625C, + 11434: 0x0000625E, + 11435: 0x00006264, + 11436: 0x00006261, + 11437: 0x00006266, + 11438: 0x00006262, + 11439: 0x00006259, + 11440: 0x00006260, + 11441: 0x0000625A, + 11442: 0x00006265, + 11443: 0x000065EF, + 11444: 0x000065EE, + 11445: 0x0000673E, + 11446: 0x00006739, + 11447: 0x00006738, + 11448: 0x0000673B, + 11449: 0x0000673A, + 11450: 0x0000673F, + 11451: 0x0000673C, + 11452: 0x00006733, + 11453: 0x00006C18, + 11454: 0x00006C46, + 11455: 0x00006C52, + 11456: 0x00006C5C, + 11457: 0x00006C4F, + 11458: 0x00006C4A, + 11459: 0x00006C54, + 11460: 0x00006C4B, + 11461: 0x00006C4C, + 11462: 0x00007071, + 11463: 0x0000725E, + 11464: 0x000072B4, + 11465: 0x000072B5, + 11466: 0x0000738E, + 11467: 0x0000752A, + 11468: 0x0000767F, + 11469: 0x00007A75, + 11470: 0x00007F51, + 11471: 0x00008278, + 11472: 0x0000827C, + 11473: 0x00008280, + 11474: 0x0000827D, + 11475: 0x0000827F, + 11476: 0x0000864D, + 11477: 0x0000897E, + 11478: 0x00009099, + 11479: 0x00009097, + 11480: 0x00009098, + 11481: 0x0000909B, + 11482: 0x00009094, + 11483: 0x00009622, + 11484: 0x00009624, + 11485: 0x00009620, + 11486: 0x00009623, + 11487: 0x00004F56, + 11488: 0x00004F3B, + 11489: 0x00004F62, + 11490: 0x00004F49, + 11491: 0x00004F53, + 11492: 0x00004F64, + 11493: 0x00004F3E, + 11494: 0x00004F67, + 11495: 0x00004F52, + 11496: 0x00004F5F, + 11497: 0x00004F41, + 11498: 0x00004F58, + 11499: 0x00004F2D, + 11500: 0x00004F33, + 11501: 0x00004F3F, + 11502: 0x00004F61, + 11503: 0x0000518F, + 11504: 0x000051B9, + 11505: 0x0000521C, + 11506: 0x0000521E, + 11507: 0x00005221, + 11508: 0x000052AD, + 11509: 0x000052AE, + 11510: 0x00005309, + 11511: 0x00005363, + 11512: 0x00005372, + 11513: 0x0000538E, + 11514: 0x0000538F, + 11515: 0x00005430, + 11516: 0x00005437, + 11517: 0x0000542A, + 11518: 0x00005454, + 11519: 0x00005445, + 11520: 0x00005419, + 11521: 0x0000541C, + 11522: 0x00005425, + 11523: 0x00005418, + 11524: 0x0000543D, + 11525: 0x0000544F, + 11526: 0x00005441, + 11527: 0x00005428, + 11528: 0x00005424, + 11529: 0x00005447, + 11530: 0x000056EE, + 11531: 0x000056E7, + 11532: 0x000056E5, + 11533: 0x00005741, + 11534: 0x00005745, + 11535: 0x0000574C, + 11536: 0x00005749, + 11537: 0x0000574B, + 11538: 0x00005752, + 11539: 0x00005906, + 11540: 0x00005940, + 11541: 0x000059A6, + 11542: 0x00005998, + 11543: 0x000059A0, + 11544: 0x00005997, + 11545: 0x0000598E, + 11546: 0x000059A2, + 11547: 0x00005990, + 11548: 0x0000598F, + 11549: 0x000059A7, + 11550: 0x000059A1, + 11551: 0x00005B8E, + 11552: 0x00005B92, + 11553: 0x00005C28, + 11554: 0x00005C2A, + 11555: 0x00005C8D, + 11556: 0x00005C8F, + 11557: 0x00005C88, + 11558: 0x00005C8B, + 11559: 0x00005C89, + 11560: 0x00005C92, + 11561: 0x00005C8A, + 11562: 0x00005C86, + 11563: 0x00005C93, + 11564: 0x00005C95, + 11565: 0x00005DE0, + 11566: 0x00005E0A, + 11567: 0x00005E0E, + 11568: 0x00005E8B, + 11569: 0x00005E89, + 11570: 0x00005E8C, + 11571: 0x00005E88, + 11572: 0x00005E8D, + 11573: 0x00005F05, + 11574: 0x00005F1D, + 11575: 0x00005F78, + 11576: 0x00005F76, + 11577: 0x00005FD2, + 11578: 0x00005FD1, + 11579: 0x00005FD0, + 11580: 0x00005FED, + 11581: 0x00005FE8, + 11582: 0x00005FEE, + 11583: 0x00005FF3, + 11584: 0x00005FE1, + 11585: 0x00005FE4, + 11586: 0x00005FE3, + 11587: 0x00005FFA, + 11588: 0x00005FEF, + 11589: 0x00005FF7, + 11590: 0x00005FFB, + 11591: 0x00006000, + 11592: 0x00005FF4, + 11593: 0x0000623A, + 11594: 0x00006283, + 11595: 0x0000628C, + 11596: 0x0000628E, + 11597: 0x0000628F, + 11598: 0x00006294, + 11599: 0x00006287, + 11600: 0x00006271, + 11601: 0x0000627B, + 11602: 0x0000627A, + 11603: 0x00006270, + 11604: 0x00006281, + 11605: 0x00006288, + 11606: 0x00006277, + 11607: 0x0000627D, + 11608: 0x00006272, + 11609: 0x00006274, + 11610: 0x00006537, + 11611: 0x000065F0, + 11612: 0x000065F4, + 11613: 0x000065F3, + 11614: 0x000065F2, + 11615: 0x000065F5, + 11616: 0x00006745, + 11617: 0x00006747, + 11618: 0x00006759, + 11619: 0x00006755, + 11620: 0x0000674C, + 11621: 0x00006748, + 11622: 0x0000675D, + 11623: 0x0000674D, + 11624: 0x0000675A, + 11625: 0x0000674B, + 11626: 0x00006BD0, + 11627: 0x00006C19, + 11628: 0x00006C1A, + 11629: 0x00006C78, + 11630: 0x00006C67, + 11631: 0x00006C6B, + 11632: 0x00006C84, + 11633: 0x00006C8B, + 11634: 0x00006C8F, + 11635: 0x00006C71, + 11636: 0x00006C6F, + 11637: 0x00006C69, + 11638: 0x00006C9A, + 11639: 0x00006C6D, + 11640: 0x00006C87, + 11641: 0x00006C95, + 11642: 0x00006C9C, + 11643: 0x00006C66, + 11644: 0x00006C73, + 11645: 0x00006C65, + 11646: 0x00006C7B, + 11647: 0x00006C8E, + 11648: 0x00007074, + 11649: 0x0000707A, + 11650: 0x00007263, + 11651: 0x000072BF, + 11652: 0x000072BD, + 11653: 0x000072C3, + 11654: 0x000072C6, + 11655: 0x000072C1, + 11656: 0x000072BA, + 11657: 0x000072C5, + 11658: 0x00007395, + 11659: 0x00007397, + 11660: 0x00007393, + 11661: 0x00007394, + 11662: 0x00007392, + 11663: 0x0000753A, + 11664: 0x00007539, + 11665: 0x00007594, + 11666: 0x00007595, + 11667: 0x00007681, + 11668: 0x0000793D, + 11669: 0x00008034, + 11670: 0x00008095, + 11671: 0x00008099, + 11672: 0x00008090, + 11673: 0x00008092, + 11674: 0x0000809C, + 11675: 0x00008290, + 11676: 0x0000828F, + 11677: 0x00008285, + 11678: 0x0000828E, + 11679: 0x00008291, + 11680: 0x00008293, + 11681: 0x0000828A, + 11682: 0x00008283, + 11683: 0x00008284, + 11684: 0x00008C78, + 11685: 0x00008FC9, + 11686: 0x00008FBF, + 11687: 0x0000909F, + 11688: 0x000090A1, + 11689: 0x000090A5, + 11690: 0x0000909E, + 11691: 0x000090A7, + 11692: 0x000090A0, + 11693: 0x00009630, + 11694: 0x00009628, + 11695: 0x0000962F, + 11696: 0x0000962D, + 11697: 0x00004E33, + 11698: 0x00004F98, + 11699: 0x00004F7C, + 11700: 0x00004F85, + 11701: 0x00004F7D, + 11702: 0x00004F80, + 11703: 0x00004F87, + 11704: 0x00004F76, + 11705: 0x00004F74, + 11706: 0x00004F89, + 11707: 0x00004F84, + 11708: 0x00004F77, + 11709: 0x00004F4C, + 11710: 0x00004F97, + 11711: 0x00004F6A, + 11712: 0x00004F9A, + 11713: 0x00004F79, + 11714: 0x00004F81, + 11715: 0x00004F78, + 11716: 0x00004F90, + 11717: 0x00004F9C, + 11718: 0x00004F94, + 11719: 0x00004F9E, + 11720: 0x00004F92, + 11721: 0x00004F82, + 11722: 0x00004F95, + 11723: 0x00004F6B, + 11724: 0x00004F6E, + 11725: 0x0000519E, + 11726: 0x000051BC, + 11727: 0x000051BE, + 11728: 0x00005235, + 11729: 0x00005232, + 11730: 0x00005233, + 11731: 0x00005246, + 11732: 0x00005231, + 11733: 0x000052BC, + 11734: 0x0000530A, + 11735: 0x0000530B, + 11736: 0x0000533C, + 11737: 0x00005392, + 11738: 0x00005394, + 11739: 0x00005487, + 11740: 0x0000547F, + 11741: 0x00005481, + 11742: 0x00005491, + 11743: 0x00005482, + 11744: 0x00005488, + 11745: 0x0000546B, + 11746: 0x0000547A, + 11747: 0x0000547E, + 11748: 0x00005465, + 11749: 0x0000546C, + 11750: 0x00005474, + 11751: 0x00005466, + 11752: 0x0000548D, + 11753: 0x0000546F, + 11754: 0x00005461, + 11755: 0x00005460, + 11756: 0x00005498, + 11757: 0x00005463, + 11758: 0x00005467, + 11759: 0x00005464, + 11760: 0x000056F7, + 11761: 0x000056F9, + 11762: 0x0000576F, + 11763: 0x00005772, + 11764: 0x0000576D, + 11765: 0x0000576B, + 11766: 0x00005771, + 11767: 0x00005770, + 11768: 0x00005776, + 11769: 0x00005780, + 11770: 0x00005775, + 11771: 0x0000577B, + 11772: 0x00005773, + 11773: 0x00005774, + 11774: 0x00005762, + 11775: 0x00005768, + 11776: 0x0000577D, + 11777: 0x0000590C, + 11778: 0x00005945, + 11779: 0x000059B5, + 11780: 0x000059BA, + 11781: 0x000059CF, + 11782: 0x000059CE, + 11783: 0x000059B2, + 11784: 0x000059CC, + 11785: 0x000059C1, + 11786: 0x000059B6, + 11787: 0x000059BC, + 11788: 0x000059C3, + 11789: 0x000059D6, + 11790: 0x000059B1, + 11791: 0x000059BD, + 11792: 0x000059C0, + 11793: 0x000059C8, + 11794: 0x000059B4, + 11795: 0x000059C7, + 11796: 0x00005B62, + 11797: 0x00005B65, + 11798: 0x00005B93, + 11799: 0x00005B95, + 11800: 0x00005C44, + 11801: 0x00005C47, + 11802: 0x00005CAE, + 11803: 0x00005CA4, + 11804: 0x00005CA0, + 11805: 0x00005CB5, + 11806: 0x00005CAF, + 11807: 0x00005CA8, + 11808: 0x00005CAC, + 11809: 0x00005C9F, + 11810: 0x00005CA3, + 11811: 0x00005CAD, + 11812: 0x00005CA2, + 11813: 0x00005CAA, + 11814: 0x00005CA7, + 11815: 0x00005C9D, + 11816: 0x00005CA5, + 11817: 0x00005CB6, + 11818: 0x00005CB0, + 11819: 0x00005CA6, + 11820: 0x00005E17, + 11821: 0x00005E14, + 11822: 0x00005E19, + 11823: 0x00005F28, + 11824: 0x00005F22, + 11825: 0x00005F23, + 11826: 0x00005F24, + 11827: 0x00005F54, + 11828: 0x00005F82, + 11829: 0x00005F7E, + 11830: 0x00005F7D, + 11831: 0x00005FDE, + 11832: 0x00005FE5, + 11833: 0x0000602D, + 11834: 0x00006026, + 11835: 0x00006019, + 11836: 0x00006032, + 11837: 0x0000600B, + 11838: 0x00006034, + 11839: 0x0000600A, + 11840: 0x00006017, + 11841: 0x00006033, + 11842: 0x0000601A, + 11843: 0x0000601E, + 11844: 0x0000602C, + 11845: 0x00006022, + 11846: 0x0000600D, + 11847: 0x00006010, + 11848: 0x0000602E, + 11849: 0x00006013, + 11850: 0x00006011, + 11851: 0x0000600C, + 11852: 0x00006009, + 11853: 0x0000601C, + 11854: 0x00006214, + 11855: 0x0000623D, + 11856: 0x000062AD, + 11857: 0x000062B4, + 11858: 0x000062D1, + 11859: 0x000062BE, + 11860: 0x000062AA, + 11861: 0x000062B6, + 11862: 0x000062CA, + 11863: 0x000062AE, + 11864: 0x000062B3, + 11865: 0x000062AF, + 11866: 0x000062BB, + 11867: 0x000062A9, + 11868: 0x000062B0, + 11869: 0x000062B8, + 11870: 0x0000653D, + 11871: 0x000065A8, + 11872: 0x000065BB, + 11873: 0x00006609, + 11874: 0x000065FC, + 11875: 0x00006604, + 11876: 0x00006612, + 11877: 0x00006608, + 11878: 0x000065FB, + 11879: 0x00006603, + 11880: 0x0000660B, + 11881: 0x0000660D, + 11882: 0x00006605, + 11883: 0x000065FD, + 11884: 0x00006611, + 11885: 0x00006610, + 11886: 0x000066F6, + 11887: 0x0000670A, + 11888: 0x00006785, + 11889: 0x0000676C, + 11890: 0x0000678E, + 11891: 0x00006792, + 11892: 0x00006776, + 11893: 0x0000677B, + 11894: 0x00006798, + 11895: 0x00006786, + 11896: 0x00006784, + 11897: 0x00006774, + 11898: 0x0000678D, + 11899: 0x0000678C, + 11900: 0x0000677A, + 11901: 0x0000679F, + 11902: 0x00006791, + 11903: 0x00006799, + 11904: 0x00006783, + 11905: 0x0000677D, + 11906: 0x00006781, + 11907: 0x00006778, + 11908: 0x00006779, + 11909: 0x00006794, + 11910: 0x00006B25, + 11911: 0x00006B80, + 11912: 0x00006B7E, + 11913: 0x00006BDE, + 11914: 0x00006C1D, + 11915: 0x00006C93, + 11916: 0x00006CEC, + 11917: 0x00006CEB, + 11918: 0x00006CEE, + 11919: 0x00006CD9, + 11920: 0x00006CB6, + 11921: 0x00006CD4, + 11922: 0x00006CAD, + 11923: 0x00006CE7, + 11924: 0x00006CB7, + 11925: 0x00006CD0, + 11926: 0x00006CC2, + 11927: 0x00006CBA, + 11928: 0x00006CC3, + 11929: 0x00006CC6, + 11930: 0x00006CED, + 11931: 0x00006CF2, + 11932: 0x00006CD2, + 11933: 0x00006CDD, + 11934: 0x00006CB4, + 11935: 0x00006C8A, + 11936: 0x00006C9D, + 11937: 0x00006C80, + 11938: 0x00006CDE, + 11939: 0x00006CC0, + 11940: 0x00006D30, + 11941: 0x00006CCD, + 11942: 0x00006CC7, + 11943: 0x00006CB0, + 11944: 0x00006CF9, + 11945: 0x00006CCF, + 11946: 0x00006CE9, + 11947: 0x00006CD1, + 11948: 0x00007094, + 11949: 0x00007098, + 11950: 0x00007085, + 11951: 0x00007093, + 11952: 0x00007086, + 11953: 0x00007084, + 11954: 0x00007091, + 11955: 0x00007096, + 11956: 0x00007082, + 11957: 0x0000709A, + 11958: 0x00007083, + 11959: 0x0000726A, + 11960: 0x000072D6, + 11961: 0x000072CB, + 11962: 0x000072D8, + 11963: 0x000072C9, + 11964: 0x000072DC, + 11965: 0x000072D2, + 11966: 0x000072D4, + 11967: 0x000072DA, + 11968: 0x000072CC, + 11969: 0x000072D1, + 11970: 0x000073A4, + 11971: 0x000073A1, + 11972: 0x000073AD, + 11973: 0x000073A6, + 11974: 0x000073A2, + 11975: 0x000073A0, + 11976: 0x000073AC, + 11977: 0x0000739D, + 11978: 0x000074DD, + 11979: 0x000074E8, + 11980: 0x0000753F, + 11981: 0x00007540, + 11982: 0x0000753E, + 11983: 0x0000758C, + 11984: 0x00007598, + 11985: 0x000076AF, + 11986: 0x000076F3, + 11987: 0x000076F1, + 11988: 0x000076F0, + 11989: 0x000076F5, + 11990: 0x000077F8, + 11991: 0x000077FC, + 11992: 0x000077F9, + 11993: 0x000077FB, + 11994: 0x000077FA, + 11995: 0x000077F7, + 11996: 0x00007942, + 11997: 0x0000793F, + 11998: 0x000079C5, + 11999: 0x00007A78, + 12000: 0x00007A7B, + 12001: 0x00007AFB, + 12002: 0x00007C75, + 12003: 0x00007CFD, + 12004: 0x00008035, + 12005: 0x0000808F, + 12006: 0x000080AE, + 12007: 0x000080A3, + 12008: 0x000080B8, + 12009: 0x000080B5, + 12010: 0x000080AD, + 12011: 0x00008220, + 12012: 0x000082A0, + 12013: 0x000082C0, + 12014: 0x000082AB, + 12015: 0x0000829A, + 12016: 0x00008298, + 12017: 0x0000829B, + 12018: 0x000082B5, + 12019: 0x000082A7, + 12020: 0x000082AE, + 12021: 0x000082BC, + 12022: 0x0000829E, + 12023: 0x000082BA, + 12024: 0x000082B4, + 12025: 0x000082A8, + 12026: 0x000082A1, + 12027: 0x000082A9, + 12028: 0x000082C2, + 12029: 0x000082A4, + 12030: 0x000082C3, + 12031: 0x000082B6, + 12032: 0x000082A2, + 12033: 0x00008670, + 12034: 0x0000866F, + 12035: 0x0000866D, + 12036: 0x0000866E, + 12037: 0x00008C56, + 12038: 0x00008FD2, + 12039: 0x00008FCB, + 12040: 0x00008FD3, + 12041: 0x00008FCD, + 12042: 0x00008FD6, + 12043: 0x00008FD5, + 12044: 0x00008FD7, + 12045: 0x000090B2, + 12046: 0x000090B4, + 12047: 0x000090AF, + 12048: 0x000090B3, + 12049: 0x000090B0, + 12050: 0x00009639, + 12051: 0x0000963D, + 12052: 0x0000963C, + 12053: 0x0000963A, + 12054: 0x00009643, + 12055: 0x00004FCD, + 12056: 0x00004FC5, + 12057: 0x00004FD3, + 12058: 0x00004FB2, + 12059: 0x00004FC9, + 12060: 0x00004FCB, + 12061: 0x00004FC1, + 12062: 0x00004FD4, + 12063: 0x00004FDC, + 12064: 0x00004FD9, + 12065: 0x00004FBB, + 12066: 0x00004FB3, + 12067: 0x00004FDB, + 12068: 0x00004FC7, + 12069: 0x00004FD6, + 12070: 0x00004FBA, + 12071: 0x00004FC0, + 12072: 0x00004FB9, + 12073: 0x00004FEC, + 12074: 0x00005244, + 12075: 0x00005249, + 12076: 0x000052C0, + 12077: 0x000052C2, + 12078: 0x0000533D, + 12079: 0x0000537C, + 12080: 0x00005397, + 12081: 0x00005396, + 12082: 0x00005399, + 12083: 0x00005398, + 12084: 0x000054BA, + 12085: 0x000054A1, + 12086: 0x000054AD, + 12087: 0x000054A5, + 12088: 0x000054CF, + 12089: 0x000054C3, + 12090: 0x0000830D, + 12091: 0x000054B7, + 12092: 0x000054AE, + 12093: 0x000054D6, + 12094: 0x000054B6, + 12095: 0x000054C5, + 12096: 0x000054C6, + 12097: 0x000054A0, + 12098: 0x00005470, + 12099: 0x000054BC, + 12100: 0x000054A2, + 12101: 0x000054BE, + 12102: 0x00005472, + 12103: 0x000054DE, + 12104: 0x000054B0, + 12105: 0x000057B5, + 12106: 0x0000579E, + 12107: 0x0000579F, + 12108: 0x000057A4, + 12109: 0x0000578C, + 12110: 0x00005797, + 12111: 0x0000579D, + 12112: 0x0000579B, + 12113: 0x00005794, + 12114: 0x00005798, + 12115: 0x0000578F, + 12116: 0x00005799, + 12117: 0x000057A5, + 12118: 0x0000579A, + 12119: 0x00005795, + 12120: 0x000058F4, + 12121: 0x0000590D, + 12122: 0x00005953, + 12123: 0x000059E1, + 12124: 0x000059DE, + 12125: 0x000059EE, + 12126: 0x00005A00, + 12127: 0x000059F1, + 12128: 0x000059DD, + 12129: 0x000059FA, + 12130: 0x000059FD, + 12131: 0x000059FC, + 12132: 0x000059F6, + 12133: 0x000059E4, + 12134: 0x000059F2, + 12135: 0x000059F7, + 12136: 0x000059DB, + 12137: 0x000059E9, + 12138: 0x000059F3, + 12139: 0x000059F5, + 12140: 0x000059E0, + 12141: 0x000059FE, + 12142: 0x000059F4, + 12143: 0x000059ED, + 12144: 0x00005BA8, + 12145: 0x00005C4C, + 12146: 0x00005CD0, + 12147: 0x00005CD8, + 12148: 0x00005CCC, + 12149: 0x00005CD7, + 12150: 0x00005CCB, + 12151: 0x00005CDB, + 12152: 0x00005CDE, + 12153: 0x00005CDA, + 12154: 0x00005CC9, + 12155: 0x00005CC7, + 12156: 0x00005CCA, + 12157: 0x00005CD6, + 12158: 0x00005CD3, + 12159: 0x00005CD4, + 12160: 0x00005CCF, + 12161: 0x00005CC8, + 12162: 0x00005CC6, + 12163: 0x00005CCE, + 12164: 0x00005CDF, + 12165: 0x00005CF8, + 12166: 0x00005DF9, + 12167: 0x00005E21, + 12168: 0x00005E22, + 12169: 0x00005E23, + 12170: 0x00005E20, + 12171: 0x00005E24, + 12172: 0x00005EB0, + 12173: 0x00005EA4, + 12174: 0x00005EA2, + 12175: 0x00005E9B, + 12176: 0x00005EA3, + 12177: 0x00005EA5, + 12178: 0x00005F07, + 12179: 0x00005F2E, + 12180: 0x00005F56, + 12181: 0x00005F86, + 12182: 0x00006037, + 12183: 0x00006039, + 12184: 0x00006054, + 12185: 0x00006072, + 12186: 0x0000605E, + 12187: 0x00006045, + 12188: 0x00006053, + 12189: 0x00006047, + 12190: 0x00006049, + 12191: 0x0000605B, + 12192: 0x0000604C, + 12193: 0x00006040, + 12194: 0x00006042, + 12195: 0x0000605F, + 12196: 0x00006024, + 12197: 0x00006044, + 12198: 0x00006058, + 12199: 0x00006066, + 12200: 0x0000606E, + 12201: 0x00006242, + 12202: 0x00006243, + 12203: 0x000062CF, + 12204: 0x0000630D, + 12205: 0x0000630B, + 12206: 0x000062F5, + 12207: 0x0000630E, + 12208: 0x00006303, + 12209: 0x000062EB, + 12210: 0x000062F9, + 12211: 0x0000630F, + 12212: 0x0000630C, + 12213: 0x000062F8, + 12214: 0x000062F6, + 12215: 0x00006300, + 12216: 0x00006313, + 12217: 0x00006314, + 12218: 0x000062FA, + 12219: 0x00006315, + 12220: 0x000062FB, + 12221: 0x000062F0, + 12222: 0x00006541, + 12223: 0x00006543, + 12224: 0x000065AA, + 12225: 0x000065BF, + 12226: 0x00006636, + 12227: 0x00006621, + 12228: 0x00006632, + 12229: 0x00006635, + 12230: 0x0000661C, + 12231: 0x00006626, + 12232: 0x00006622, + 12233: 0x00006633, + 12234: 0x0000662B, + 12235: 0x0000663A, + 12236: 0x0000661D, + 12237: 0x00006634, + 12238: 0x00006639, + 12239: 0x0000662E, + 12240: 0x0000670F, + 12241: 0x00006710, + 12242: 0x000067C1, + 12243: 0x000067F2, + 12244: 0x000067C8, + 12245: 0x000067BA, + 12246: 0x000067DC, + 12247: 0x000067BB, + 12248: 0x000067F8, + 12249: 0x000067D8, + 12250: 0x000067C0, + 12251: 0x000067B7, + 12252: 0x000067C5, + 12253: 0x000067EB, + 12254: 0x000067E4, + 12255: 0x000067DF, + 12256: 0x000067B5, + 12257: 0x000067CD, + 12258: 0x000067B3, + 12259: 0x000067F7, + 12260: 0x000067F6, + 12261: 0x000067EE, + 12262: 0x000067E3, + 12263: 0x000067C2, + 12264: 0x000067B9, + 12265: 0x000067CE, + 12266: 0x000067E7, + 12267: 0x000067F0, + 12268: 0x000067B2, + 12269: 0x000067FC, + 12270: 0x000067C6, + 12271: 0x000067ED, + 12272: 0x000067CC, + 12273: 0x000067AE, + 12274: 0x000067E6, + 12275: 0x000067DB, + 12276: 0x000067FA, + 12277: 0x000067C9, + 12278: 0x000067CA, + 12279: 0x000067C3, + 12280: 0x000067EA, + 12281: 0x000067CB, + 12282: 0x00006B28, + 12283: 0x00006B82, + 12284: 0x00006B84, + 12285: 0x00006BB6, + 12286: 0x00006BD6, + 12287: 0x00006BD8, + 12288: 0x00006BE0, + 12289: 0x00006C20, + 12290: 0x00006C21, + 12291: 0x00006D28, + 12292: 0x00006D34, + 12293: 0x00006D2D, + 12294: 0x00006D1F, + 12295: 0x00006D3C, + 12296: 0x00006D3F, + 12297: 0x00006D12, + 12298: 0x00006D0A, + 12299: 0x00006CDA, + 12300: 0x00006D33, + 12301: 0x00006D04, + 12302: 0x00006D19, + 12303: 0x00006D3A, + 12304: 0x00006D1A, + 12305: 0x00006D11, + 12306: 0x00006D00, + 12307: 0x00006D1D, + 12308: 0x00006D42, + 12309: 0x00006D01, + 12310: 0x00006D18, + 12311: 0x00006D37, + 12312: 0x00006D03, + 12313: 0x00006D0F, + 12314: 0x00006D40, + 12315: 0x00006D07, + 12316: 0x00006D20, + 12317: 0x00006D2C, + 12318: 0x00006D08, + 12319: 0x00006D22, + 12320: 0x00006D09, + 12321: 0x00006D10, + 12322: 0x000070B7, + 12323: 0x0000709F, + 12324: 0x000070BE, + 12325: 0x000070B1, + 12326: 0x000070B0, + 12327: 0x000070A1, + 12328: 0x000070B4, + 12329: 0x000070B5, + 12330: 0x000070A9, + 12331: 0x00007241, + 12332: 0x00007249, + 12333: 0x0000724A, + 12334: 0x0000726C, + 12335: 0x00007270, + 12336: 0x00007273, + 12337: 0x0000726E, + 12338: 0x000072CA, + 12339: 0x000072E4, + 12340: 0x000072E8, + 12341: 0x000072EB, + 12342: 0x000072DF, + 12343: 0x000072EA, + 12344: 0x000072E6, + 12345: 0x000072E3, + 12346: 0x00007385, + 12347: 0x000073CC, + 12348: 0x000073C2, + 12349: 0x000073C8, + 12350: 0x000073C5, + 12351: 0x000073B9, + 12352: 0x000073B6, + 12353: 0x000073B5, + 12354: 0x000073B4, + 12355: 0x000073EB, + 12356: 0x000073BF, + 12357: 0x000073C7, + 12358: 0x000073BE, + 12359: 0x000073C3, + 12360: 0x000073C6, + 12361: 0x000073B8, + 12362: 0x000073CB, + 12363: 0x000074EC, + 12364: 0x000074EE, + 12365: 0x0000752E, + 12366: 0x00007547, + 12367: 0x00007548, + 12368: 0x000075A7, + 12369: 0x000075AA, + 12370: 0x00007679, + 12371: 0x000076C4, + 12372: 0x00007708, + 12373: 0x00007703, + 12374: 0x00007704, + 12375: 0x00007705, + 12376: 0x0000770A, + 12377: 0x000076F7, + 12378: 0x000076FB, + 12379: 0x000076FA, + 12380: 0x000077E7, + 12381: 0x000077E8, + 12382: 0x00007806, + 12383: 0x00007811, + 12384: 0x00007812, + 12385: 0x00007805, + 12386: 0x00007810, + 12387: 0x0000780F, + 12388: 0x0000780E, + 12389: 0x00007809, + 12390: 0x00007803, + 12391: 0x00007813, + 12392: 0x0000794A, + 12393: 0x0000794C, + 12394: 0x0000794B, + 12395: 0x00007945, + 12396: 0x00007944, + 12397: 0x000079D5, + 12398: 0x000079CD, + 12399: 0x000079CF, + 12400: 0x000079D6, + 12401: 0x000079CE, + 12402: 0x00007A80, + 12403: 0x00007A7E, + 12404: 0x00007AD1, + 12405: 0x00007B00, + 12406: 0x00007B01, + 12407: 0x00007C7A, + 12408: 0x00007C78, + 12409: 0x00007C79, + 12410: 0x00007C7F, + 12411: 0x00007C80, + 12412: 0x00007C81, + 12413: 0x00007D03, + 12414: 0x00007D08, + 12415: 0x00007D01, + 12416: 0x00007F58, + 12417: 0x00007F91, + 12418: 0x00007F8D, + 12419: 0x00007FBE, + 12420: 0x00008007, + 12421: 0x0000800E, + 12422: 0x0000800F, + 12423: 0x00008014, + 12424: 0x00008037, + 12425: 0x000080D8, + 12426: 0x000080C7, + 12427: 0x000080E0, + 12428: 0x000080D1, + 12429: 0x000080C8, + 12430: 0x000080C2, + 12431: 0x000080D0, + 12432: 0x000080C5, + 12433: 0x000080E3, + 12434: 0x000080D9, + 12435: 0x000080DC, + 12436: 0x000080CA, + 12437: 0x000080D5, + 12438: 0x000080C9, + 12439: 0x000080CF, + 12440: 0x000080D7, + 12441: 0x000080E6, + 12442: 0x000080CD, + 12443: 0x000081FF, + 12444: 0x00008221, + 12445: 0x00008294, + 12446: 0x000082D9, + 12447: 0x000082FE, + 12448: 0x000082F9, + 12449: 0x00008307, + 12450: 0x000082E8, + 12451: 0x00008300, + 12452: 0x000082D5, + 12453: 0x0000833A, + 12454: 0x000082EB, + 12455: 0x000082D6, + 12456: 0x000082F4, + 12457: 0x000082EC, + 12458: 0x000082E1, + 12459: 0x000082F2, + 12460: 0x000082F5, + 12461: 0x0000830C, + 12462: 0x000082FB, + 12463: 0x000082F6, + 12464: 0x000082F0, + 12465: 0x000082EA, + 12466: 0x000082E4, + 12467: 0x000082E0, + 12468: 0x000082FA, + 12469: 0x000082F3, + 12470: 0x000082ED, + 12471: 0x00008677, + 12472: 0x00008674, + 12473: 0x0000867C, + 12474: 0x00008673, + 12475: 0x00008841, + 12476: 0x0000884E, + 12477: 0x00008867, + 12478: 0x0000886A, + 12479: 0x00008869, + 12480: 0x000089D3, + 12481: 0x00008A04, + 12482: 0x00008A07, + 12483: 0x00008D72, + 12484: 0x00008FE3, + 12485: 0x00008FE1, + 12486: 0x00008FEE, + 12487: 0x00008FE0, + 12488: 0x000090F1, + 12489: 0x000090BD, + 12490: 0x000090BF, + 12491: 0x000090D5, + 12492: 0x000090C5, + 12493: 0x000090BE, + 12494: 0x000090C7, + 12495: 0x000090CB, + 12496: 0x000090C8, + 12497: 0x000091D4, + 12498: 0x000091D3, + 12499: 0x00009654, + 12500: 0x0000964F, + 12501: 0x00009651, + 12502: 0x00009653, + 12503: 0x0000964A, + 12504: 0x0000964E, + 12505: 0x0000501E, + 12506: 0x00005005, + 12507: 0x00005007, + 12508: 0x00005013, + 12509: 0x00005022, + 12510: 0x00005030, + 12511: 0x0000501B, + 12512: 0x00004FF5, + 12513: 0x00004FF4, + 12514: 0x00005033, + 12515: 0x00005037, + 12516: 0x0000502C, + 12517: 0x00004FF6, + 12518: 0x00004FF7, + 12519: 0x00005017, + 12520: 0x0000501C, + 12521: 0x00005020, + 12522: 0x00005027, + 12523: 0x00005035, + 12524: 0x0000502F, + 12525: 0x00005031, + 12526: 0x0000500E, + 12527: 0x0000515A, + 12528: 0x00005194, + 12529: 0x00005193, + 12530: 0x000051CA, + 12531: 0x000051C4, + 12532: 0x000051C5, + 12533: 0x000051C8, + 12534: 0x000051CE, + 12535: 0x00005261, + 12536: 0x0000525A, + 12537: 0x00005252, + 12538: 0x0000525E, + 12539: 0x0000525F, + 12540: 0x00005255, + 12541: 0x00005262, + 12542: 0x000052CD, + 12543: 0x0000530E, + 12544: 0x0000539E, + 12545: 0x00005526, + 12546: 0x000054E2, + 12547: 0x00005517, + 12548: 0x00005512, + 12549: 0x000054E7, + 12550: 0x000054F3, + 12551: 0x000054E4, + 12552: 0x0000551A, + 12553: 0x000054FF, + 12554: 0x00005504, + 12555: 0x00005508, + 12556: 0x000054EB, + 12557: 0x00005511, + 12558: 0x00005505, + 12559: 0x000054F1, + 12560: 0x0000550A, + 12561: 0x000054FB, + 12562: 0x000054F7, + 12563: 0x000054F8, + 12564: 0x000054E0, + 12565: 0x0000550E, + 12566: 0x00005503, + 12567: 0x0000550B, + 12568: 0x00005701, + 12569: 0x00005702, + 12570: 0x000057CC, + 12571: 0x00005832, + 12572: 0x000057D5, + 12573: 0x000057D2, + 12574: 0x000057BA, + 12575: 0x000057C6, + 12576: 0x000057BD, + 12577: 0x000057BC, + 12578: 0x000057B8, + 12579: 0x000057B6, + 12580: 0x000057BF, + 12581: 0x000057C7, + 12582: 0x000057D0, + 12583: 0x000057B9, + 12584: 0x000057C1, + 12585: 0x0000590E, + 12586: 0x0000594A, + 12587: 0x00005A19, + 12588: 0x00005A16, + 12589: 0x00005A2D, + 12590: 0x00005A2E, + 12591: 0x00005A15, + 12592: 0x00005A0F, + 12593: 0x00005A17, + 12594: 0x00005A0A, + 12595: 0x00005A1E, + 12596: 0x00005A33, + 12597: 0x00005B6C, + 12598: 0x00005BA7, + 12599: 0x00005BAD, + 12600: 0x00005BAC, + 12601: 0x00005C03, + 12602: 0x00005C56, + 12603: 0x00005C54, + 12604: 0x00005CEC, + 12605: 0x00005CFF, + 12606: 0x00005CEE, + 12607: 0x00005CF1, + 12608: 0x00005CF7, + 12609: 0x00005D00, + 12610: 0x00005CF9, + 12611: 0x00005E29, + 12612: 0x00005E28, + 12613: 0x00005EA8, + 12614: 0x00005EAE, + 12615: 0x00005EAA, + 12616: 0x00005EAC, + 12617: 0x00005F33, + 12618: 0x00005F30, + 12619: 0x00005F67, + 12620: 0x0000605D, + 12621: 0x0000605A, + 12622: 0x00006067, + 12623: 0x00006041, + 12624: 0x000060A2, + 12625: 0x00006088, + 12626: 0x00006080, + 12627: 0x00006092, + 12628: 0x00006081, + 12629: 0x0000609D, + 12630: 0x00006083, + 12631: 0x00006095, + 12632: 0x0000609B, + 12633: 0x00006097, + 12634: 0x00006087, + 12635: 0x0000609C, + 12636: 0x0000608E, + 12637: 0x00006219, + 12638: 0x00006246, + 12639: 0x000062F2, + 12640: 0x00006310, + 12641: 0x00006356, + 12642: 0x0000632C, + 12643: 0x00006344, + 12644: 0x00006345, + 12645: 0x00006336, + 12646: 0x00006343, + 12647: 0x000063E4, + 12648: 0x00006339, + 12649: 0x0000634B, + 12650: 0x0000634A, + 12651: 0x0000633C, + 12652: 0x00006329, + 12653: 0x00006341, + 12654: 0x00006334, + 12655: 0x00006358, + 12656: 0x00006354, + 12657: 0x00006359, + 12658: 0x0000632D, + 12659: 0x00006347, + 12660: 0x00006333, + 12661: 0x0000635A, + 12662: 0x00006351, + 12663: 0x00006338, + 12664: 0x00006357, + 12665: 0x00006340, + 12666: 0x00006348, + 12667: 0x0000654A, + 12668: 0x00006546, + 12669: 0x000065C6, + 12670: 0x000065C3, + 12671: 0x000065C4, + 12672: 0x000065C2, + 12673: 0x0000664A, + 12674: 0x0000665F, + 12675: 0x00006647, + 12676: 0x00006651, + 12677: 0x00006712, + 12678: 0x00006713, + 12679: 0x0000681F, + 12680: 0x0000681A, + 12681: 0x00006849, + 12682: 0x00006832, + 12683: 0x00006833, + 12684: 0x0000683B, + 12685: 0x0000684B, + 12686: 0x0000684F, + 12687: 0x00006816, + 12688: 0x00006831, + 12689: 0x0000681C, + 12690: 0x00006835, + 12691: 0x0000682B, + 12692: 0x0000682D, + 12693: 0x0000682F, + 12694: 0x0000684E, + 12695: 0x00006844, + 12696: 0x00006834, + 12697: 0x0000681D, + 12698: 0x00006812, + 12699: 0x00006814, + 12700: 0x00006826, + 12701: 0x00006828, + 12702: 0x0000682E, + 12703: 0x0000684D, + 12704: 0x0000683A, + 12705: 0x00006825, + 12706: 0x00006820, + 12707: 0x00006B2C, + 12708: 0x00006B2F, + 12709: 0x00006B2D, + 12710: 0x00006B31, + 12711: 0x00006B34, + 12712: 0x00006B6D, + 12713: 0x00008082, + 12714: 0x00006B88, + 12715: 0x00006BE6, + 12716: 0x00006BE4, + 12717: 0x00006BE8, + 12718: 0x00006BE3, + 12719: 0x00006BE2, + 12720: 0x00006BE7, + 12721: 0x00006C25, + 12722: 0x00006D7A, + 12723: 0x00006D63, + 12724: 0x00006D64, + 12725: 0x00006D76, + 12726: 0x00006D0D, + 12727: 0x00006D61, + 12728: 0x00006D92, + 12729: 0x00006D58, + 12730: 0x00006D62, + 12731: 0x00006D6D, + 12732: 0x00006D6F, + 12733: 0x00006D91, + 12734: 0x00006D8D, + 12735: 0x00006DEF, + 12736: 0x00006D7F, + 12737: 0x00006D86, + 12738: 0x00006D5E, + 12739: 0x00006D67, + 12740: 0x00006D60, + 12741: 0x00006D97, + 12742: 0x00006D70, + 12743: 0x00006D7C, + 12744: 0x00006D5F, + 12745: 0x00006D82, + 12746: 0x00006D98, + 12747: 0x00006D2F, + 12748: 0x00006D68, + 12749: 0x00006D8B, + 12750: 0x00006D7E, + 12751: 0x00006D80, + 12752: 0x00006D84, + 12753: 0x00006D16, + 12754: 0x00006D83, + 12755: 0x00006D7B, + 12756: 0x00006D7D, + 12757: 0x00006D75, + 12758: 0x00006D90, + 12759: 0x000070DC, + 12760: 0x000070D3, + 12761: 0x000070D1, + 12762: 0x000070DD, + 12763: 0x000070CB, + 12764: 0x00007F39, + 12765: 0x000070E2, + 12766: 0x000070D7, + 12767: 0x000070D2, + 12768: 0x000070DE, + 12769: 0x000070E0, + 12770: 0x000070D4, + 12771: 0x000070CD, + 12772: 0x000070C5, + 12773: 0x000070C6, + 12774: 0x000070C7, + 12775: 0x000070DA, + 12776: 0x000070CE, + 12777: 0x000070E1, + 12778: 0x00007242, + 12779: 0x00007278, + 12780: 0x00007277, + 12781: 0x00007276, + 12782: 0x00007300, + 12783: 0x000072FA, + 12784: 0x000072F4, + 12785: 0x000072FE, + 12786: 0x000072F6, + 12787: 0x000072F3, + 12788: 0x000072FB, + 12789: 0x00007301, + 12790: 0x000073D3, + 12791: 0x000073D9, + 12792: 0x000073E5, + 12793: 0x000073D6, + 12794: 0x000073BC, + 12795: 0x000073E7, + 12796: 0x000073E3, + 12797: 0x000073E9, + 12798: 0x000073DC, + 12799: 0x000073D2, + 12800: 0x000073DB, + 12801: 0x000073D4, + 12802: 0x000073DD, + 12803: 0x000073DA, + 12804: 0x000073D7, + 12805: 0x000073D8, + 12806: 0x000073E8, + 12807: 0x000074DE, + 12808: 0x000074DF, + 12809: 0x000074F4, + 12810: 0x000074F5, + 12811: 0x00007521, + 12812: 0x0000755B, + 12813: 0x0000755F, + 12814: 0x000075B0, + 12815: 0x000075C1, + 12816: 0x000075BB, + 12817: 0x000075C4, + 12818: 0x000075C0, + 12819: 0x000075BF, + 12820: 0x000075B6, + 12821: 0x000075BA, + 12822: 0x0000768A, + 12823: 0x000076C9, + 12824: 0x0000771D, + 12825: 0x0000771B, + 12826: 0x00007710, + 12827: 0x00007713, + 12828: 0x00007712, + 12829: 0x00007723, + 12830: 0x00007711, + 12831: 0x00007715, + 12832: 0x00007719, + 12833: 0x0000771A, + 12834: 0x00007722, + 12835: 0x00007727, + 12836: 0x00007823, + 12837: 0x0000782C, + 12838: 0x00007822, + 12839: 0x00007835, + 12840: 0x0000782F, + 12841: 0x00007828, + 12842: 0x0000782E, + 12843: 0x0000782B, + 12844: 0x00007821, + 12845: 0x00007829, + 12846: 0x00007833, + 12847: 0x0000782A, + 12848: 0x00007831, + 12849: 0x00007954, + 12850: 0x0000795B, + 12851: 0x0000794F, + 12852: 0x0000795C, + 12853: 0x00007953, + 12854: 0x00007952, + 12855: 0x00007951, + 12856: 0x000079EB, + 12857: 0x000079EC, + 12858: 0x000079E0, + 12859: 0x000079EE, + 12860: 0x000079ED, + 12861: 0x000079EA, + 12862: 0x000079DC, + 12863: 0x000079DE, + 12864: 0x000079DD, + 12865: 0x00007A86, + 12866: 0x00007A89, + 12867: 0x00007A85, + 12868: 0x00007A8B, + 12869: 0x00007A8C, + 12870: 0x00007A8A, + 12871: 0x00007A87, + 12872: 0x00007AD8, + 12873: 0x00007B10, + 12874: 0x00007B04, + 12875: 0x00007B13, + 12876: 0x00007B05, + 12877: 0x00007B0F, + 12878: 0x00007B08, + 12879: 0x00007B0A, + 12880: 0x00007B0E, + 12881: 0x00007B09, + 12882: 0x00007B12, + 12883: 0x00007C84, + 12884: 0x00007C91, + 12885: 0x00007C8A, + 12886: 0x00007C8C, + 12887: 0x00007C88, + 12888: 0x00007C8D, + 12889: 0x00007C85, + 12890: 0x00007D1E, + 12891: 0x00007D1D, + 12892: 0x00007D11, + 12893: 0x00007D0E, + 12894: 0x00007D18, + 12895: 0x00007D16, + 12896: 0x00007D13, + 12897: 0x00007D1F, + 12898: 0x00007D12, + 12899: 0x00007D0F, + 12900: 0x00007D0C, + 12901: 0x00007F5C, + 12902: 0x00007F61, + 12903: 0x00007F5E, + 12904: 0x00007F60, + 12905: 0x00007F5D, + 12906: 0x00007F5B, + 12907: 0x00007F96, + 12908: 0x00007F92, + 12909: 0x00007FC3, + 12910: 0x00007FC2, + 12911: 0x00007FC0, + 12912: 0x00008016, + 12913: 0x0000803E, + 12914: 0x00008039, + 12915: 0x000080FA, + 12916: 0x000080F2, + 12917: 0x000080F9, + 12918: 0x000080F5, + 12919: 0x00008101, + 12920: 0x000080FB, + 12921: 0x00008100, + 12922: 0x00008201, + 12923: 0x0000822F, + 12924: 0x00008225, + 12925: 0x00008333, + 12926: 0x0000832D, + 12927: 0x00008344, + 12928: 0x00008319, + 12929: 0x00008351, + 12930: 0x00008325, + 12931: 0x00008356, + 12932: 0x0000833F, + 12933: 0x00008341, + 12934: 0x00008326, + 12935: 0x0000831C, + 12936: 0x00008322, + 12937: 0x00008342, + 12938: 0x0000834E, + 12939: 0x0000831B, + 12940: 0x0000832A, + 12941: 0x00008308, + 12942: 0x0000833C, + 12943: 0x0000834D, + 12944: 0x00008316, + 12945: 0x00008324, + 12946: 0x00008320, + 12947: 0x00008337, + 12948: 0x0000832F, + 12949: 0x00008329, + 12950: 0x00008347, + 12951: 0x00008345, + 12952: 0x0000834C, + 12953: 0x00008353, + 12954: 0x0000831E, + 12955: 0x0000832C, + 12956: 0x0000834B, + 12957: 0x00008327, + 12958: 0x00008348, + 12959: 0x00008653, + 12960: 0x00008652, + 12961: 0x000086A2, + 12962: 0x000086A8, + 12963: 0x00008696, + 12964: 0x0000868D, + 12965: 0x00008691, + 12966: 0x0000869E, + 12967: 0x00008687, + 12968: 0x00008697, + 12969: 0x00008686, + 12970: 0x0000868B, + 12971: 0x0000869A, + 12972: 0x00008685, + 12973: 0x000086A5, + 12974: 0x00008699, + 12975: 0x000086A1, + 12976: 0x000086A7, + 12977: 0x00008695, + 12978: 0x00008698, + 12979: 0x0000868E, + 12980: 0x0000869D, + 12981: 0x00008690, + 12982: 0x00008694, + 12983: 0x00008843, + 12984: 0x00008844, + 12985: 0x0000886D, + 12986: 0x00008875, + 12987: 0x00008876, + 12988: 0x00008872, + 12989: 0x00008880, + 12990: 0x00008871, + 12991: 0x0000887F, + 12992: 0x0000886F, + 12993: 0x00008883, + 12994: 0x0000887E, + 12995: 0x00008874, + 12996: 0x0000887C, + 12997: 0x00008A12, + 12998: 0x00008C47, + 12999: 0x00008C57, + 13000: 0x00008C7B, + 13001: 0x00008CA4, + 13002: 0x00008CA3, + 13003: 0x00008D76, + 13004: 0x00008D78, + 13005: 0x00008DB5, + 13006: 0x00008DB7, + 13007: 0x00008DB6, + 13008: 0x00008ED1, + 13009: 0x00008ED3, + 13010: 0x00008FFE, + 13011: 0x00008FF5, + 13012: 0x00009002, + 13013: 0x00008FFF, + 13014: 0x00008FFB, + 13015: 0x00009004, + 13016: 0x00008FFC, + 13017: 0x00008FF6, + 13018: 0x000090D6, + 13019: 0x000090E0, + 13020: 0x000090D9, + 13021: 0x000090DA, + 13022: 0x000090E3, + 13023: 0x000090DF, + 13024: 0x000090E5, + 13025: 0x000090D8, + 13026: 0x000090DB, + 13027: 0x000090D7, + 13028: 0x000090DC, + 13029: 0x000090E4, + 13030: 0x00009150, + 13031: 0x0000914E, + 13032: 0x0000914F, + 13033: 0x000091D5, + 13034: 0x000091E2, + 13035: 0x000091DA, + 13036: 0x0000965C, + 13037: 0x0000965F, + 13038: 0x000096BC, + 13039: 0x000098E3, + 13040: 0x00009ADF, + 13041: 0x00009B2F, + 13042: 0x00004E7F, + 13043: 0x00005070, + 13044: 0x0000506A, + 13045: 0x00005061, + 13046: 0x0000505E, + 13047: 0x00005060, + 13048: 0x00005053, + 13049: 0x0000504B, + 13050: 0x0000505D, + 13051: 0x00005072, + 13052: 0x00005048, + 13053: 0x0000504D, + 13054: 0x00005041, + 13055: 0x0000505B, + 13056: 0x0000504A, + 13057: 0x00005062, + 13058: 0x00005015, + 13059: 0x00005045, + 13060: 0x0000505F, + 13061: 0x00005069, + 13062: 0x0000506B, + 13063: 0x00005063, + 13064: 0x00005064, + 13065: 0x00005046, + 13066: 0x00005040, + 13067: 0x0000506E, + 13068: 0x00005073, + 13069: 0x00005057, + 13070: 0x00005051, + 13071: 0x000051D0, + 13072: 0x0000526B, + 13073: 0x0000526D, + 13074: 0x0000526C, + 13075: 0x0000526E, + 13076: 0x000052D6, + 13077: 0x000052D3, + 13078: 0x0000532D, + 13079: 0x0000539C, + 13080: 0x00005575, + 13081: 0x00005576, + 13082: 0x0000553C, + 13083: 0x0000554D, + 13084: 0x00005550, + 13085: 0x00005534, + 13086: 0x0000552A, + 13087: 0x00005551, + 13088: 0x00005562, + 13089: 0x00005536, + 13090: 0x00005535, + 13091: 0x00005530, + 13092: 0x00005552, + 13093: 0x00005545, + 13094: 0x0000550C, + 13095: 0x00005532, + 13096: 0x00005565, + 13097: 0x0000554E, + 13098: 0x00005539, + 13099: 0x00005548, + 13100: 0x0000552D, + 13101: 0x0000553B, + 13102: 0x00005540, + 13103: 0x0000554B, + 13104: 0x0000570A, + 13105: 0x00005707, + 13106: 0x000057FB, + 13107: 0x00005814, + 13108: 0x000057E2, + 13109: 0x000057F6, + 13110: 0x000057DC, + 13111: 0x000057F4, + 13112: 0x00005800, + 13113: 0x000057ED, + 13114: 0x000057FD, + 13115: 0x00005808, + 13116: 0x000057F8, + 13117: 0x0000580B, + 13118: 0x000057F3, + 13119: 0x000057CF, + 13120: 0x00005807, + 13121: 0x000057EE, + 13122: 0x000057E3, + 13123: 0x000057F2, + 13124: 0x000057E5, + 13125: 0x000057EC, + 13126: 0x000057E1, + 13127: 0x0000580E, + 13128: 0x000057FC, + 13129: 0x00005810, + 13130: 0x000057E7, + 13131: 0x00005801, + 13132: 0x0000580C, + 13133: 0x000057F1, + 13134: 0x000057E9, + 13135: 0x000057F0, + 13136: 0x0000580D, + 13137: 0x00005804, + 13138: 0x0000595C, + 13139: 0x00005A60, + 13140: 0x00005A58, + 13141: 0x00005A55, + 13142: 0x00005A67, + 13143: 0x00005A5E, + 13144: 0x00005A38, + 13145: 0x00005A35, + 13146: 0x00005A6D, + 13147: 0x00005A50, + 13148: 0x00005A5F, + 13149: 0x00005A65, + 13150: 0x00005A6C, + 13151: 0x00005A53, + 13152: 0x00005A64, + 13153: 0x00005A57, + 13154: 0x00005A43, + 13155: 0x00005A5D, + 13156: 0x00005A52, + 13157: 0x00005A44, + 13158: 0x00005A5B, + 13159: 0x00005A48, + 13160: 0x00005A8E, + 13161: 0x00005A3E, + 13162: 0x00005A4D, + 13163: 0x00005A39, + 13164: 0x00005A4C, + 13165: 0x00005A70, + 13166: 0x00005A69, + 13167: 0x00005A47, + 13168: 0x00005A51, + 13169: 0x00005A56, + 13170: 0x00005A42, + 13171: 0x00005A5C, + 13172: 0x00005B72, + 13173: 0x00005B6E, + 13174: 0x00005BC1, + 13175: 0x00005BC0, + 13176: 0x00005C59, + 13177: 0x00005D1E, + 13178: 0x00005D0B, + 13179: 0x00005D1D, + 13180: 0x00005D1A, + 13181: 0x00005D20, + 13182: 0x00005D0C, + 13183: 0x00005D28, + 13184: 0x00005D0D, + 13185: 0x00005D26, + 13186: 0x00005D25, + 13187: 0x00005D0F, + 13188: 0x00005D30, + 13189: 0x00005D12, + 13190: 0x00005D23, + 13191: 0x00005D1F, + 13192: 0x00005D2E, + 13193: 0x00005E3E, + 13194: 0x00005E34, + 13195: 0x00005EB1, + 13196: 0x00005EB4, + 13197: 0x00005EB9, + 13198: 0x00005EB2, + 13199: 0x00005EB3, + 13200: 0x00005F36, + 13201: 0x00005F38, + 13202: 0x00005F9B, + 13203: 0x00005F96, + 13204: 0x00005F9F, + 13205: 0x0000608A, + 13206: 0x00006090, + 13207: 0x00006086, + 13208: 0x000060BE, + 13209: 0x000060B0, + 13210: 0x000060BA, + 13211: 0x000060D3, + 13212: 0x000060D4, + 13213: 0x000060CF, + 13214: 0x000060E4, + 13215: 0x000060D9, + 13216: 0x000060DD, + 13217: 0x000060C8, + 13218: 0x000060B1, + 13219: 0x000060DB, + 13220: 0x000060B7, + 13221: 0x000060CA, + 13222: 0x000060BF, + 13223: 0x000060C3, + 13224: 0x000060CD, + 13225: 0x000060C0, + 13226: 0x00006332, + 13227: 0x00006365, + 13228: 0x0000638A, + 13229: 0x00006382, + 13230: 0x0000637D, + 13231: 0x000063BD, + 13232: 0x0000639E, + 13233: 0x000063AD, + 13234: 0x0000639D, + 13235: 0x00006397, + 13236: 0x000063AB, + 13237: 0x0000638E, + 13238: 0x0000636F, + 13239: 0x00006387, + 13240: 0x00006390, + 13241: 0x0000636E, + 13242: 0x000063AF, + 13243: 0x00006375, + 13244: 0x0000639C, + 13245: 0x0000636D, + 13246: 0x000063AE, + 13247: 0x0000637C, + 13248: 0x000063A4, + 13249: 0x0000633B, + 13250: 0x0000639F, + 13251: 0x00006378, + 13252: 0x00006385, + 13253: 0x00006381, + 13254: 0x00006391, + 13255: 0x0000638D, + 13256: 0x00006370, + 13257: 0x00006553, + 13258: 0x000065CD, + 13259: 0x00006665, + 13260: 0x00006661, + 13261: 0x0000665B, + 13262: 0x00006659, + 13263: 0x0000665C, + 13264: 0x00006662, + 13265: 0x00006718, + 13266: 0x00006879, + 13267: 0x00006887, + 13268: 0x00006890, + 13269: 0x0000689C, + 13270: 0x0000686D, + 13271: 0x0000686E, + 13272: 0x000068AE, + 13273: 0x000068AB, + 13274: 0x00006956, + 13275: 0x0000686F, + 13276: 0x000068A3, + 13277: 0x000068AC, + 13278: 0x000068A9, + 13279: 0x00006875, + 13280: 0x00006874, + 13281: 0x000068B2, + 13282: 0x0000688F, + 13283: 0x00006877, + 13284: 0x00006892, + 13285: 0x0000687C, + 13286: 0x0000686B, + 13287: 0x00006872, + 13288: 0x000068AA, + 13289: 0x00006880, + 13290: 0x00006871, + 13291: 0x0000687E, + 13292: 0x0000689B, + 13293: 0x00006896, + 13294: 0x0000688B, + 13295: 0x000068A0, + 13296: 0x00006889, + 13297: 0x000068A4, + 13298: 0x00006878, + 13299: 0x0000687B, + 13300: 0x00006891, + 13301: 0x0000688C, + 13302: 0x0000688A, + 13303: 0x0000687D, + 13304: 0x00006B36, + 13305: 0x00006B33, + 13306: 0x00006B37, + 13307: 0x00006B38, + 13308: 0x00006B91, + 13309: 0x00006B8F, + 13310: 0x00006B8D, + 13311: 0x00006B8E, + 13312: 0x00006B8C, + 13313: 0x00006C2A, + 13314: 0x00006DC0, + 13315: 0x00006DAB, + 13316: 0x00006DB4, + 13317: 0x00006DB3, + 13318: 0x00006E74, + 13319: 0x00006DAC, + 13320: 0x00006DE9, + 13321: 0x00006DE2, + 13322: 0x00006DB7, + 13323: 0x00006DF6, + 13324: 0x00006DD4, + 13325: 0x00006E00, + 13326: 0x00006DC8, + 13327: 0x00006DE0, + 13328: 0x00006DDF, + 13329: 0x00006DD6, + 13330: 0x00006DBE, + 13331: 0x00006DE5, + 13332: 0x00006DDC, + 13333: 0x00006DDD, + 13334: 0x00006DDB, + 13335: 0x00006DF4, + 13336: 0x00006DCA, + 13337: 0x00006DBD, + 13338: 0x00006DED, + 13339: 0x00006DF0, + 13340: 0x00006DBA, + 13341: 0x00006DD5, + 13342: 0x00006DC2, + 13343: 0x00006DCF, + 13344: 0x00006DC9, + 13345: 0x00006DD0, + 13346: 0x00006DF2, + 13347: 0x00006DD3, + 13348: 0x00006DFD, + 13349: 0x00006DD7, + 13350: 0x00006DCD, + 13351: 0x00006DE3, + 13352: 0x00006DBB, + 13353: 0x000070FA, + 13354: 0x0000710D, + 13355: 0x000070F7, + 13356: 0x00007117, + 13357: 0x000070F4, + 13358: 0x0000710C, + 13359: 0x000070F0, + 13360: 0x00007104, + 13361: 0x000070F3, + 13362: 0x00007110, + 13363: 0x000070FC, + 13364: 0x000070FF, + 13365: 0x00007106, + 13366: 0x00007113, + 13367: 0x00007100, + 13368: 0x000070F8, + 13369: 0x000070F6, + 13370: 0x0000710B, + 13371: 0x00007102, + 13372: 0x0000710E, + 13373: 0x0000727E, + 13374: 0x0000727B, + 13375: 0x0000727C, + 13376: 0x0000727F, + 13377: 0x0000731D, + 13378: 0x00007317, + 13379: 0x00007307, + 13380: 0x00007311, + 13381: 0x00007318, + 13382: 0x0000730A, + 13383: 0x00007308, + 13384: 0x000072FF, + 13385: 0x0000730F, + 13386: 0x0000731E, + 13387: 0x00007388, + 13388: 0x000073F6, + 13389: 0x000073F8, + 13390: 0x000073F5, + 13391: 0x00007404, + 13392: 0x00007401, + 13393: 0x000073FD, + 13394: 0x00007407, + 13395: 0x00007400, + 13396: 0x000073FA, + 13397: 0x000073FC, + 13398: 0x000073FF, + 13399: 0x0000740C, + 13400: 0x0000740B, + 13401: 0x000073F4, + 13402: 0x00007408, + 13403: 0x00007564, + 13404: 0x00007563, + 13405: 0x000075CE, + 13406: 0x000075D2, + 13407: 0x000075CF, + 13408: 0x000075CB, + 13409: 0x000075CC, + 13410: 0x000075D1, + 13411: 0x000075D0, + 13412: 0x0000768F, + 13413: 0x00007689, + 13414: 0x000076D3, + 13415: 0x00007739, + 13416: 0x0000772F, + 13417: 0x0000772D, + 13418: 0x00007731, + 13419: 0x00007732, + 13420: 0x00007734, + 13421: 0x00007733, + 13422: 0x0000773D, + 13423: 0x00007725, + 13424: 0x0000773B, + 13425: 0x00007735, + 13426: 0x00007848, + 13427: 0x00007852, + 13428: 0x00007849, + 13429: 0x0000784D, + 13430: 0x0000784A, + 13431: 0x0000784C, + 13432: 0x00007826, + 13433: 0x00007845, + 13434: 0x00007850, + 13435: 0x00007964, + 13436: 0x00007967, + 13437: 0x00007969, + 13438: 0x0000796A, + 13439: 0x00007963, + 13440: 0x0000796B, + 13441: 0x00007961, + 13442: 0x000079BB, + 13443: 0x000079FA, + 13444: 0x000079F8, + 13445: 0x000079F6, + 13446: 0x000079F7, + 13447: 0x00007A8F, + 13448: 0x00007A94, + 13449: 0x00007A90, + 13450: 0x00007B35, + 13451: 0x00007B47, + 13452: 0x00007B34, + 13453: 0x00007B25, + 13454: 0x00007B30, + 13455: 0x00007B22, + 13456: 0x00007B24, + 13457: 0x00007B33, + 13458: 0x00007B18, + 13459: 0x00007B2A, + 13460: 0x00007B1D, + 13461: 0x00007B31, + 13462: 0x00007B2B, + 13463: 0x00007B2D, + 13464: 0x00007B2F, + 13465: 0x00007B32, + 13466: 0x00007B38, + 13467: 0x00007B1A, + 13468: 0x00007B23, + 13469: 0x00007C94, + 13470: 0x00007C98, + 13471: 0x00007C96, + 13472: 0x00007CA3, + 13473: 0x00007D35, + 13474: 0x00007D3D, + 13475: 0x00007D38, + 13476: 0x00007D36, + 13477: 0x00007D3A, + 13478: 0x00007D45, + 13479: 0x00007D2C, + 13480: 0x00007D29, + 13481: 0x00007D41, + 13482: 0x00007D47, + 13483: 0x00007D3E, + 13484: 0x00007D3F, + 13485: 0x00007D4A, + 13486: 0x00007D3B, + 13487: 0x00007D28, + 13488: 0x00007F63, + 13489: 0x00007F95, + 13490: 0x00007F9C, + 13491: 0x00007F9D, + 13492: 0x00007F9B, + 13493: 0x00007FCA, + 13494: 0x00007FCB, + 13495: 0x00007FCD, + 13496: 0x00007FD0, + 13497: 0x00007FD1, + 13498: 0x00007FC7, + 13499: 0x00007FCF, + 13500: 0x00007FC9, + 13501: 0x0000801F, + 13502: 0x0000801E, + 13503: 0x0000801B, + 13504: 0x00008047, + 13505: 0x00008043, + 13506: 0x00008048, + 13507: 0x00008118, + 13508: 0x00008125, + 13509: 0x00008119, + 13510: 0x0000811B, + 13511: 0x0000812D, + 13512: 0x0000811F, + 13513: 0x0000812C, + 13514: 0x0000811E, + 13515: 0x00008121, + 13516: 0x00008115, + 13517: 0x00008127, + 13518: 0x0000811D, + 13519: 0x00008122, + 13520: 0x00008211, + 13521: 0x00008238, + 13522: 0x00008233, + 13523: 0x0000823A, + 13524: 0x00008234, + 13525: 0x00008232, + 13526: 0x00008274, + 13527: 0x00008390, + 13528: 0x000083A3, + 13529: 0x000083A8, + 13530: 0x0000838D, + 13531: 0x0000837A, + 13532: 0x00008373, + 13533: 0x000083A4, + 13534: 0x00008374, + 13535: 0x0000838F, + 13536: 0x00008381, + 13537: 0x00008395, + 13538: 0x00008399, + 13539: 0x00008375, + 13540: 0x00008394, + 13541: 0x000083A9, + 13542: 0x0000837D, + 13543: 0x00008383, + 13544: 0x0000838C, + 13545: 0x0000839D, + 13546: 0x0000839B, + 13547: 0x000083AA, + 13548: 0x0000838B, + 13549: 0x0000837E, + 13550: 0x000083A5, + 13551: 0x000083AF, + 13552: 0x00008388, + 13553: 0x00008397, + 13554: 0x000083B0, + 13555: 0x0000837F, + 13556: 0x000083A6, + 13557: 0x00008387, + 13558: 0x000083AE, + 13559: 0x00008376, + 13560: 0x0000839A, + 13561: 0x00008659, + 13562: 0x00008656, + 13563: 0x000086BF, + 13564: 0x000086B7, + 13565: 0x000086C2, + 13566: 0x000086C1, + 13567: 0x000086C5, + 13568: 0x000086BA, + 13569: 0x000086B0, + 13570: 0x000086C8, + 13571: 0x000086B9, + 13572: 0x000086B3, + 13573: 0x000086B8, + 13574: 0x000086CC, + 13575: 0x000086B4, + 13576: 0x000086BB, + 13577: 0x000086BC, + 13578: 0x000086C3, + 13579: 0x000086BD, + 13580: 0x000086BE, + 13581: 0x00008852, + 13582: 0x00008889, + 13583: 0x00008895, + 13584: 0x000088A8, + 13585: 0x000088A2, + 13586: 0x000088AA, + 13587: 0x0000889A, + 13588: 0x00008891, + 13589: 0x000088A1, + 13590: 0x0000889F, + 13591: 0x00008898, + 13592: 0x000088A7, + 13593: 0x00008899, + 13594: 0x0000889B, + 13595: 0x00008897, + 13596: 0x000088A4, + 13597: 0x000088AC, + 13598: 0x0000888C, + 13599: 0x00008893, + 13600: 0x0000888E, + 13601: 0x00008982, + 13602: 0x000089D6, + 13603: 0x000089D9, + 13604: 0x000089D5, + 13605: 0x00008A30, + 13606: 0x00008A27, + 13607: 0x00008A2C, + 13608: 0x00008A1E, + 13609: 0x00008C39, + 13610: 0x00008C3B, + 13611: 0x00008C5C, + 13612: 0x00008C5D, + 13613: 0x00008C7D, + 13614: 0x00008CA5, + 13615: 0x00008D7D, + 13616: 0x00008D7B, + 13617: 0x00008D79, + 13618: 0x00008DBC, + 13619: 0x00008DC2, + 13620: 0x00008DB9, + 13621: 0x00008DBF, + 13622: 0x00008DC1, + 13623: 0x00008ED8, + 13624: 0x00008EDE, + 13625: 0x00008EDD, + 13626: 0x00008EDC, + 13627: 0x00008ED7, + 13628: 0x00008EE0, + 13629: 0x00008EE1, + 13630: 0x00009024, + 13631: 0x0000900B, + 13632: 0x00009011, + 13633: 0x0000901C, + 13634: 0x0000900C, + 13635: 0x00009021, + 13636: 0x000090EF, + 13637: 0x000090EA, + 13638: 0x000090F0, + 13639: 0x000090F4, + 13640: 0x000090F2, + 13641: 0x000090F3, + 13642: 0x000090D4, + 13643: 0x000090EB, + 13644: 0x000090EC, + 13645: 0x000090E9, + 13646: 0x00009156, + 13647: 0x00009158, + 13648: 0x0000915A, + 13649: 0x00009153, + 13650: 0x00009155, + 13651: 0x000091EC, + 13652: 0x000091F4, + 13653: 0x000091F1, + 13654: 0x000091F3, + 13655: 0x000091F8, + 13656: 0x000091E4, + 13657: 0x000091F9, + 13658: 0x000091EA, + 13659: 0x000091EB, + 13660: 0x000091F7, + 13661: 0x000091E8, + 13662: 0x000091EE, + 13663: 0x0000957A, + 13664: 0x00009586, + 13665: 0x00009588, + 13666: 0x0000967C, + 13667: 0x0000966D, + 13668: 0x0000966B, + 13669: 0x00009671, + 13670: 0x0000966F, + 13671: 0x000096BF, + 13672: 0x0000976A, + 13673: 0x00009804, + 13674: 0x000098E5, + 13675: 0x00009997, + 13676: 0x0000509B, + 13677: 0x00005095, + 13678: 0x00005094, + 13679: 0x0000509E, + 13680: 0x0000508B, + 13681: 0x000050A3, + 13682: 0x00005083, + 13683: 0x0000508C, + 13684: 0x0000508E, + 13685: 0x0000509D, + 13686: 0x00005068, + 13687: 0x0000509C, + 13688: 0x00005092, + 13689: 0x00005082, + 13690: 0x00005087, + 13691: 0x0000515F, + 13692: 0x000051D4, + 13693: 0x00005312, + 13694: 0x00005311, + 13695: 0x000053A4, + 13696: 0x000053A7, + 13697: 0x00005591, + 13698: 0x000055A8, + 13699: 0x000055A5, + 13700: 0x000055AD, + 13701: 0x00005577, + 13702: 0x00005645, + 13703: 0x000055A2, + 13704: 0x00005593, + 13705: 0x00005588, + 13706: 0x0000558F, + 13707: 0x000055B5, + 13708: 0x00005581, + 13709: 0x000055A3, + 13710: 0x00005592, + 13711: 0x000055A4, + 13712: 0x0000557D, + 13713: 0x0000558C, + 13714: 0x000055A6, + 13715: 0x0000557F, + 13716: 0x00005595, + 13717: 0x000055A1, + 13718: 0x0000558E, + 13719: 0x0000570C, + 13720: 0x00005829, + 13721: 0x00005837, + 13722: 0x00005819, + 13723: 0x0000581E, + 13724: 0x00005827, + 13725: 0x00005823, + 13726: 0x00005828, + 13727: 0x000057F5, + 13728: 0x00005848, + 13729: 0x00005825, + 13730: 0x0000581C, + 13731: 0x0000581B, + 13732: 0x00005833, + 13733: 0x0000583F, + 13734: 0x00005836, + 13735: 0x0000582E, + 13736: 0x00005839, + 13737: 0x00005838, + 13738: 0x0000582D, + 13739: 0x0000582C, + 13740: 0x0000583B, + 13741: 0x00005961, + 13742: 0x00005AAF, + 13743: 0x00005A94, + 13744: 0x00005A9F, + 13745: 0x00005A7A, + 13746: 0x00005AA2, + 13747: 0x00005A9E, + 13748: 0x00005A78, + 13749: 0x00005AA6, + 13750: 0x00005A7C, + 13751: 0x00005AA5, + 13752: 0x00005AAC, + 13753: 0x00005A95, + 13754: 0x00005AAE, + 13755: 0x00005A37, + 13756: 0x00005A84, + 13757: 0x00005A8A, + 13758: 0x00005A97, + 13759: 0x00005A83, + 13760: 0x00005A8B, + 13761: 0x00005AA9, + 13762: 0x00005A7B, + 13763: 0x00005A7D, + 13764: 0x00005A8C, + 13765: 0x00005A9C, + 13766: 0x00005A8F, + 13767: 0x00005A93, + 13768: 0x00005A9D, + 13769: 0x00005BEA, + 13770: 0x00005BCD, + 13771: 0x00005BCB, + 13772: 0x00005BD4, + 13773: 0x00005BD1, + 13774: 0x00005BCA, + 13775: 0x00005BCE, + 13776: 0x00005C0C, + 13777: 0x00005C30, + 13778: 0x00005D37, + 13779: 0x00005D43, + 13780: 0x00005D6B, + 13781: 0x00005D41, + 13782: 0x00005D4B, + 13783: 0x00005D3F, + 13784: 0x00005D35, + 13785: 0x00005D51, + 13786: 0x00005D4E, + 13787: 0x00005D55, + 13788: 0x00005D33, + 13789: 0x00005D3A, + 13790: 0x00005D52, + 13791: 0x00005D3D, + 13792: 0x00005D31, + 13793: 0x00005D59, + 13794: 0x00005D42, + 13795: 0x00005D39, + 13796: 0x00005D49, + 13797: 0x00005D38, + 13798: 0x00005D3C, + 13799: 0x00005D32, + 13800: 0x00005D36, + 13801: 0x00005D40, + 13802: 0x00005D45, + 13803: 0x00005E44, + 13804: 0x00005E41, + 13805: 0x00005F58, + 13806: 0x00005FA6, + 13807: 0x00005FA5, + 13808: 0x00005FAB, + 13809: 0x000060C9, + 13810: 0x000060B9, + 13811: 0x000060CC, + 13812: 0x000060E2, + 13813: 0x000060CE, + 13814: 0x000060C4, + 13815: 0x00006114, + 13816: 0x000060F2, + 13817: 0x0000610A, + 13818: 0x00006116, + 13819: 0x00006105, + 13820: 0x000060F5, + 13821: 0x00006113, + 13822: 0x000060F8, + 13823: 0x000060FC, + 13824: 0x000060FE, + 13825: 0x000060C1, + 13826: 0x00006103, + 13827: 0x00006118, + 13828: 0x0000611D, + 13829: 0x00006110, + 13830: 0x000060FF, + 13831: 0x00006104, + 13832: 0x0000610B, + 13833: 0x0000624A, + 13834: 0x00006394, + 13835: 0x000063B1, + 13836: 0x000063B0, + 13837: 0x000063CE, + 13838: 0x000063E5, + 13839: 0x000063E8, + 13840: 0x000063EF, + 13841: 0x000063C3, + 13842: 0x0000649D, + 13843: 0x000063F3, + 13844: 0x000063CA, + 13845: 0x000063E0, + 13846: 0x000063F6, + 13847: 0x000063D5, + 13848: 0x000063F2, + 13849: 0x000063F5, + 13850: 0x00006461, + 13851: 0x000063DF, + 13852: 0x000063BE, + 13853: 0x000063DD, + 13854: 0x000063DC, + 13855: 0x000063C4, + 13856: 0x000063D8, + 13857: 0x000063D3, + 13858: 0x000063C2, + 13859: 0x000063C7, + 13860: 0x000063CC, + 13861: 0x000063CB, + 13862: 0x000063C8, + 13863: 0x000063F0, + 13864: 0x000063D7, + 13865: 0x000063D9, + 13866: 0x00006532, + 13867: 0x00006567, + 13868: 0x0000656A, + 13869: 0x00006564, + 13870: 0x0000655C, + 13871: 0x00006568, + 13872: 0x00006565, + 13873: 0x0000658C, + 13874: 0x0000659D, + 13875: 0x0000659E, + 13876: 0x000065AE, + 13877: 0x000065D0, + 13878: 0x000065D2, + 13879: 0x0000667C, + 13880: 0x0000666C, + 13881: 0x0000667B, + 13882: 0x00006680, + 13883: 0x00006671, + 13884: 0x00006679, + 13885: 0x0000666A, + 13886: 0x00006672, + 13887: 0x00006701, + 13888: 0x0000690C, + 13889: 0x000068D3, + 13890: 0x00006904, + 13891: 0x000068DC, + 13892: 0x0000692A, + 13893: 0x000068EC, + 13894: 0x000068EA, + 13895: 0x000068F1, + 13896: 0x0000690F, + 13897: 0x000068D6, + 13898: 0x000068F7, + 13899: 0x000068EB, + 13900: 0x000068E4, + 13901: 0x000068F6, + 13902: 0x00006913, + 13903: 0x00006910, + 13904: 0x000068F3, + 13905: 0x000068E1, + 13906: 0x00006907, + 13907: 0x000068CC, + 13908: 0x00006908, + 13909: 0x00006970, + 13910: 0x000068B4, + 13911: 0x00006911, + 13912: 0x000068EF, + 13913: 0x000068C6, + 13914: 0x00006914, + 13915: 0x000068F8, + 13916: 0x000068D0, + 13917: 0x000068FD, + 13918: 0x000068FC, + 13919: 0x000068E8, + 13920: 0x0000690B, + 13921: 0x0000690A, + 13922: 0x00006917, + 13923: 0x000068CE, + 13924: 0x000068C8, + 13925: 0x000068DD, + 13926: 0x000068DE, + 13927: 0x000068E6, + 13928: 0x000068F4, + 13929: 0x000068D1, + 13930: 0x00006906, + 13931: 0x000068D4, + 13932: 0x000068E9, + 13933: 0x00006915, + 13934: 0x00006925, + 13935: 0x000068C7, + 13936: 0x00006B39, + 13937: 0x00006B3B, + 13938: 0x00006B3F, + 13939: 0x00006B3C, + 13940: 0x00006B94, + 13941: 0x00006B97, + 13942: 0x00006B99, + 13943: 0x00006B95, + 13944: 0x00006BBD, + 13945: 0x00006BF0, + 13946: 0x00006BF2, + 13947: 0x00006BF3, + 13948: 0x00006C30, + 13949: 0x00006DFC, + 13950: 0x00006E46, + 13951: 0x00006E47, + 13952: 0x00006E1F, + 13953: 0x00006E49, + 13954: 0x00006E88, + 13955: 0x00006E3C, + 13956: 0x00006E3D, + 13957: 0x00006E45, + 13958: 0x00006E62, + 13959: 0x00006E2B, + 13960: 0x00006E3F, + 13961: 0x00006E41, + 13962: 0x00006E5D, + 13963: 0x00006E73, + 13964: 0x00006E1C, + 13965: 0x00006E33, + 13966: 0x00006E4B, + 13967: 0x00006E40, + 13968: 0x00006E51, + 13969: 0x00006E3B, + 13970: 0x00006E03, + 13971: 0x00006E2E, + 13972: 0x00006E5E, + 13973: 0x00006E68, + 13974: 0x00006E5C, + 13975: 0x00006E61, + 13976: 0x00006E31, + 13977: 0x00006E28, + 13978: 0x00006E60, + 13979: 0x00006E71, + 13980: 0x00006E6B, + 13981: 0x00006E39, + 13982: 0x00006E22, + 13983: 0x00006E30, + 13984: 0x00006E53, + 13985: 0x00006E65, + 13986: 0x00006E27, + 13987: 0x00006E78, + 13988: 0x00006E64, + 13989: 0x00006E77, + 13990: 0x00006E55, + 13991: 0x00006E79, + 13992: 0x00006E52, + 13993: 0x00006E66, + 13994: 0x00006E35, + 13995: 0x00006E36, + 13996: 0x00006E5A, + 13997: 0x00007120, + 13998: 0x0000711E, + 13999: 0x0000712F, + 14000: 0x000070FB, + 14001: 0x0000712E, + 14002: 0x00007131, + 14003: 0x00007123, + 14004: 0x00007125, + 14005: 0x00007122, + 14006: 0x00007132, + 14007: 0x0000711F, + 14008: 0x00007128, + 14009: 0x0000713A, + 14010: 0x0000711B, + 14011: 0x0000724B, + 14012: 0x0000725A, + 14013: 0x00007288, + 14014: 0x00007289, + 14015: 0x00007286, + 14016: 0x00007285, + 14017: 0x0000728B, + 14018: 0x00007312, + 14019: 0x0000730B, + 14020: 0x00007330, + 14021: 0x00007322, + 14022: 0x00007331, + 14023: 0x00007333, + 14024: 0x00007327, + 14025: 0x00007332, + 14026: 0x0000732D, + 14027: 0x00007326, + 14028: 0x00007323, + 14029: 0x00007335, + 14030: 0x0000730C, + 14031: 0x0000742E, + 14032: 0x0000742C, + 14033: 0x00007430, + 14034: 0x0000742B, + 14035: 0x00007416, + 14036: 0x0000741A, + 14037: 0x00007421, + 14038: 0x0000742D, + 14039: 0x00007431, + 14040: 0x00007424, + 14041: 0x00007423, + 14042: 0x0000741D, + 14043: 0x00007429, + 14044: 0x00007420, + 14045: 0x00007432, + 14046: 0x000074FB, + 14047: 0x0000752F, + 14048: 0x0000756F, + 14049: 0x0000756C, + 14050: 0x000075E7, + 14051: 0x000075DA, + 14052: 0x000075E1, + 14053: 0x000075E6, + 14054: 0x000075DD, + 14055: 0x000075DF, + 14056: 0x000075E4, + 14057: 0x000075D7, + 14058: 0x00007695, + 14059: 0x00007692, + 14060: 0x000076DA, + 14061: 0x00007746, + 14062: 0x00007747, + 14063: 0x00007744, + 14064: 0x0000774D, + 14065: 0x00007745, + 14066: 0x0000774A, + 14067: 0x0000774E, + 14068: 0x0000774B, + 14069: 0x0000774C, + 14070: 0x000077DE, + 14071: 0x000077EC, + 14072: 0x00007860, + 14073: 0x00007864, + 14074: 0x00007865, + 14075: 0x0000785C, + 14076: 0x0000786D, + 14077: 0x00007871, + 14078: 0x0000786A, + 14079: 0x0000786E, + 14080: 0x00007870, + 14081: 0x00007869, + 14082: 0x00007868, + 14083: 0x0000785E, + 14084: 0x00007862, + 14085: 0x00007974, + 14086: 0x00007973, + 14087: 0x00007972, + 14088: 0x00007970, + 14089: 0x00007A02, + 14090: 0x00007A0A, + 14091: 0x00007A03, + 14092: 0x00007A0C, + 14093: 0x00007A04, + 14094: 0x00007A99, + 14095: 0x00007AE6, + 14096: 0x00007AE4, + 14097: 0x00007B4A, + 14098: 0x00007B3B, + 14099: 0x00007B44, + 14100: 0x00007B48, + 14101: 0x00007B4C, + 14102: 0x00007B4E, + 14103: 0x00007B40, + 14104: 0x00007B58, + 14105: 0x00007B45, + 14106: 0x00007CA2, + 14107: 0x00007C9E, + 14108: 0x00007CA8, + 14109: 0x00007CA1, + 14110: 0x00007D58, + 14111: 0x00007D6F, + 14112: 0x00007D63, + 14113: 0x00007D53, + 14114: 0x00007D56, + 14115: 0x00007D67, + 14116: 0x00007D6A, + 14117: 0x00007D4F, + 14118: 0x00007D6D, + 14119: 0x00007D5C, + 14120: 0x00007D6B, + 14121: 0x00007D52, + 14122: 0x00007D54, + 14123: 0x00007D69, + 14124: 0x00007D51, + 14125: 0x00007D5F, + 14126: 0x00007D4E, + 14127: 0x00007F3E, + 14128: 0x00007F3F, + 14129: 0x00007F65, + 14130: 0x00007F66, + 14131: 0x00007FA2, + 14132: 0x00007FA0, + 14133: 0x00007FA1, + 14134: 0x00007FD7, + 14135: 0x00008051, + 14136: 0x0000804F, + 14137: 0x00008050, + 14138: 0x000080FE, + 14139: 0x000080D4, + 14140: 0x00008143, + 14141: 0x0000814A, + 14142: 0x00008152, + 14143: 0x0000814F, + 14144: 0x00008147, + 14145: 0x0000813D, + 14146: 0x0000814D, + 14147: 0x0000813A, + 14148: 0x000081E6, + 14149: 0x000081EE, + 14150: 0x000081F7, + 14151: 0x000081F8, + 14152: 0x000081F9, + 14153: 0x00008204, + 14154: 0x0000823C, + 14155: 0x0000823D, + 14156: 0x0000823F, + 14157: 0x00008275, + 14158: 0x0000833B, + 14159: 0x000083CF, + 14160: 0x000083F9, + 14161: 0x00008423, + 14162: 0x000083C0, + 14163: 0x000083E8, + 14164: 0x00008412, + 14165: 0x000083E7, + 14166: 0x000083E4, + 14167: 0x000083FC, + 14168: 0x000083F6, + 14169: 0x00008410, + 14170: 0x000083C6, + 14171: 0x000083C8, + 14172: 0x000083EB, + 14173: 0x000083E3, + 14174: 0x000083BF, + 14175: 0x00008401, + 14176: 0x000083DD, + 14177: 0x000083E5, + 14178: 0x000083D8, + 14179: 0x000083FF, + 14180: 0x000083E1, + 14181: 0x000083CB, + 14182: 0x000083CE, + 14183: 0x000083D6, + 14184: 0x000083F5, + 14185: 0x000083C9, + 14186: 0x00008409, + 14187: 0x0000840F, + 14188: 0x000083DE, + 14189: 0x00008411, + 14190: 0x00008406, + 14191: 0x000083C2, + 14192: 0x000083F3, + 14193: 0x000083D5, + 14194: 0x000083FA, + 14195: 0x000083C7, + 14196: 0x000083D1, + 14197: 0x000083EA, + 14198: 0x00008413, + 14199: 0x000083C3, + 14200: 0x000083EC, + 14201: 0x000083EE, + 14202: 0x000083C4, + 14203: 0x000083FB, + 14204: 0x000083D7, + 14205: 0x000083E2, + 14206: 0x0000841B, + 14207: 0x000083DB, + 14208: 0x000083FE, + 14209: 0x000086D8, + 14210: 0x000086E2, + 14211: 0x000086E6, + 14212: 0x000086D3, + 14213: 0x000086E3, + 14214: 0x000086DA, + 14215: 0x000086EA, + 14216: 0x000086DD, + 14217: 0x000086EB, + 14218: 0x000086DC, + 14219: 0x000086EC, + 14220: 0x000086E9, + 14221: 0x000086D7, + 14222: 0x000086E8, + 14223: 0x000086D1, + 14224: 0x00008848, + 14225: 0x00008856, + 14226: 0x00008855, + 14227: 0x000088BA, + 14228: 0x000088D7, + 14229: 0x000088B9, + 14230: 0x000088B8, + 14231: 0x000088C0, + 14232: 0x000088BE, + 14233: 0x000088B6, + 14234: 0x000088BC, + 14235: 0x000088B7, + 14236: 0x000088BD, + 14237: 0x000088B2, + 14238: 0x00008901, + 14239: 0x000088C9, + 14240: 0x00008995, + 14241: 0x00008998, + 14242: 0x00008997, + 14243: 0x000089DD, + 14244: 0x000089DA, + 14245: 0x000089DB, + 14246: 0x00008A4E, + 14247: 0x00008A4D, + 14248: 0x00008A39, + 14249: 0x00008A59, + 14250: 0x00008A40, + 14251: 0x00008A57, + 14252: 0x00008A58, + 14253: 0x00008A44, + 14254: 0x00008A45, + 14255: 0x00008A52, + 14256: 0x00008A48, + 14257: 0x00008A51, + 14258: 0x00008A4A, + 14259: 0x00008A4C, + 14260: 0x00008A4F, + 14261: 0x00008C5F, + 14262: 0x00008C81, + 14263: 0x00008C80, + 14264: 0x00008CBA, + 14265: 0x00008CBE, + 14266: 0x00008CB0, + 14267: 0x00008CB9, + 14268: 0x00008CB5, + 14269: 0x00008D84, + 14270: 0x00008D80, + 14271: 0x00008D89, + 14272: 0x00008DD8, + 14273: 0x00008DD3, + 14274: 0x00008DCD, + 14275: 0x00008DC7, + 14276: 0x00008DD6, + 14277: 0x00008DDC, + 14278: 0x00008DCF, + 14279: 0x00008DD5, + 14280: 0x00008DD9, + 14281: 0x00008DC8, + 14282: 0x00008DD7, + 14283: 0x00008DC5, + 14284: 0x00008EEF, + 14285: 0x00008EF7, + 14286: 0x00008EFA, + 14287: 0x00008EF9, + 14288: 0x00008EE6, + 14289: 0x00008EEE, + 14290: 0x00008EE5, + 14291: 0x00008EF5, + 14292: 0x00008EE7, + 14293: 0x00008EE8, + 14294: 0x00008EF6, + 14295: 0x00008EEB, + 14296: 0x00008EF1, + 14297: 0x00008EEC, + 14298: 0x00008EF4, + 14299: 0x00008EE9, + 14300: 0x0000902D, + 14301: 0x00009034, + 14302: 0x0000902F, + 14303: 0x00009106, + 14304: 0x0000912C, + 14305: 0x00009104, + 14306: 0x000090FF, + 14307: 0x000090FC, + 14308: 0x00009108, + 14309: 0x000090F9, + 14310: 0x000090FB, + 14311: 0x00009101, + 14312: 0x00009100, + 14313: 0x00009107, + 14314: 0x00009105, + 14315: 0x00009103, + 14316: 0x00009161, + 14317: 0x00009164, + 14318: 0x0000915F, + 14319: 0x00009162, + 14320: 0x00009160, + 14321: 0x00009201, + 14322: 0x0000920A, + 14323: 0x00009225, + 14324: 0x00009203, + 14325: 0x0000921A, + 14326: 0x00009226, + 14327: 0x0000920F, + 14328: 0x0000920C, + 14329: 0x00009200, + 14330: 0x00009212, + 14331: 0x000091FF, + 14332: 0x000091FD, + 14333: 0x00009206, + 14334: 0x00009204, + 14335: 0x00009227, + 14336: 0x00009202, + 14337: 0x0000921C, + 14338: 0x00009224, + 14339: 0x00009219, + 14340: 0x00009217, + 14341: 0x00009205, + 14342: 0x00009216, + 14343: 0x0000957B, + 14344: 0x0000958D, + 14345: 0x0000958C, + 14346: 0x00009590, + 14347: 0x00009687, + 14348: 0x0000967E, + 14349: 0x00009688, + 14350: 0x00009689, + 14351: 0x00009683, + 14352: 0x00009680, + 14353: 0x000096C2, + 14354: 0x000096C8, + 14355: 0x000096C3, + 14356: 0x000096F1, + 14357: 0x000096F0, + 14358: 0x0000976C, + 14359: 0x00009770, + 14360: 0x0000976E, + 14361: 0x00009807, + 14362: 0x000098A9, + 14363: 0x000098EB, + 14364: 0x00009CE6, + 14365: 0x00009EF9, + 14366: 0x00004E83, + 14367: 0x00004E84, + 14368: 0x00004EB6, + 14369: 0x000050BD, + 14370: 0x000050BF, + 14371: 0x000050C6, + 14372: 0x000050AE, + 14373: 0x000050C4, + 14374: 0x000050CA, + 14375: 0x000050B4, + 14376: 0x000050C8, + 14377: 0x000050C2, + 14378: 0x000050B0, + 14379: 0x000050C1, + 14380: 0x000050BA, + 14381: 0x000050B1, + 14382: 0x000050CB, + 14383: 0x000050C9, + 14384: 0x000050B6, + 14385: 0x000050B8, + 14386: 0x000051D7, + 14387: 0x0000527A, + 14388: 0x00005278, + 14389: 0x0000527B, + 14390: 0x0000527C, + 14391: 0x000055C3, + 14392: 0x000055DB, + 14393: 0x000055CC, + 14394: 0x000055D0, + 14395: 0x000055CB, + 14396: 0x000055CA, + 14397: 0x000055DD, + 14398: 0x000055C0, + 14399: 0x000055D4, + 14400: 0x000055C4, + 14401: 0x000055E9, + 14402: 0x000055BF, + 14403: 0x000055D2, + 14404: 0x0000558D, + 14405: 0x000055CF, + 14406: 0x000055D5, + 14407: 0x000055E2, + 14408: 0x000055D6, + 14409: 0x000055C8, + 14410: 0x000055F2, + 14411: 0x000055CD, + 14412: 0x000055D9, + 14413: 0x000055C2, + 14414: 0x00005714, + 14415: 0x00005853, + 14416: 0x00005868, + 14417: 0x00005864, + 14418: 0x0000584F, + 14419: 0x0000584D, + 14420: 0x00005849, + 14421: 0x0000586F, + 14422: 0x00005855, + 14423: 0x0000584E, + 14424: 0x0000585D, + 14425: 0x00005859, + 14426: 0x00005865, + 14427: 0x0000585B, + 14428: 0x0000583D, + 14429: 0x00005863, + 14430: 0x00005871, + 14431: 0x000058FC, + 14432: 0x00005AC7, + 14433: 0x00005AC4, + 14434: 0x00005ACB, + 14435: 0x00005ABA, + 14436: 0x00005AB8, + 14437: 0x00005AB1, + 14438: 0x00005AB5, + 14439: 0x00005AB0, + 14440: 0x00005ABF, + 14441: 0x00005AC8, + 14442: 0x00005ABB, + 14443: 0x00005AC6, + 14444: 0x00005AB7, + 14445: 0x00005AC0, + 14446: 0x00005ACA, + 14447: 0x00005AB4, + 14448: 0x00005AB6, + 14449: 0x00005ACD, + 14450: 0x00005AB9, + 14451: 0x00005A90, + 14452: 0x00005BD6, + 14453: 0x00005BD8, + 14454: 0x00005BD9, + 14455: 0x00005C1F, + 14456: 0x00005C33, + 14457: 0x00005D71, + 14458: 0x00005D63, + 14459: 0x00005D4A, + 14460: 0x00005D65, + 14461: 0x00005D72, + 14462: 0x00005D6C, + 14463: 0x00005D5E, + 14464: 0x00005D68, + 14465: 0x00005D67, + 14466: 0x00005D62, + 14467: 0x00005DF0, + 14468: 0x00005E4F, + 14469: 0x00005E4E, + 14470: 0x00005E4A, + 14471: 0x00005E4D, + 14472: 0x00005E4B, + 14473: 0x00005EC5, + 14474: 0x00005ECC, + 14475: 0x00005EC6, + 14476: 0x00005ECB, + 14477: 0x00005EC7, + 14478: 0x00005F40, + 14479: 0x00005FAF, + 14480: 0x00005FAD, + 14481: 0x000060F7, + 14482: 0x00006149, + 14483: 0x0000614A, + 14484: 0x0000612B, + 14485: 0x00006145, + 14486: 0x00006136, + 14487: 0x00006132, + 14488: 0x0000612E, + 14489: 0x00006146, + 14490: 0x0000612F, + 14491: 0x0000614F, + 14492: 0x00006129, + 14493: 0x00006140, + 14494: 0x00006220, + 14495: 0x00009168, + 14496: 0x00006223, + 14497: 0x00006225, + 14498: 0x00006224, + 14499: 0x000063C5, + 14500: 0x000063F1, + 14501: 0x000063EB, + 14502: 0x00006410, + 14503: 0x00006412, + 14504: 0x00006409, + 14505: 0x00006420, + 14506: 0x00006424, + 14507: 0x00006433, + 14508: 0x00006443, + 14509: 0x0000641F, + 14510: 0x00006415, + 14511: 0x00006418, + 14512: 0x00006439, + 14513: 0x00006437, + 14514: 0x00006422, + 14515: 0x00006423, + 14516: 0x0000640C, + 14517: 0x00006426, + 14518: 0x00006430, + 14519: 0x00006428, + 14520: 0x00006441, + 14521: 0x00006435, + 14522: 0x0000642F, + 14523: 0x0000640A, + 14524: 0x0000641A, + 14525: 0x00006440, + 14526: 0x00006425, + 14527: 0x00006427, + 14528: 0x0000640B, + 14529: 0x000063E7, + 14530: 0x0000641B, + 14531: 0x0000642E, + 14532: 0x00006421, + 14533: 0x0000640E, + 14534: 0x0000656F, + 14535: 0x00006592, + 14536: 0x000065D3, + 14537: 0x00006686, + 14538: 0x0000668C, + 14539: 0x00006695, + 14540: 0x00006690, + 14541: 0x0000668B, + 14542: 0x0000668A, + 14543: 0x00006699, + 14544: 0x00006694, + 14545: 0x00006678, + 14546: 0x00006720, + 14547: 0x00006966, + 14548: 0x0000695F, + 14549: 0x00006938, + 14550: 0x0000694E, + 14551: 0x00006962, + 14552: 0x00006971, + 14553: 0x0000693F, + 14554: 0x00006945, + 14555: 0x0000696A, + 14556: 0x00006939, + 14557: 0x00006942, + 14558: 0x00006957, + 14559: 0x00006959, + 14560: 0x0000697A, + 14561: 0x00006948, + 14562: 0x00006949, + 14563: 0x00006935, + 14564: 0x0000696C, + 14565: 0x00006933, + 14566: 0x0000693D, + 14567: 0x00006965, + 14568: 0x000068F0, + 14569: 0x00006978, + 14570: 0x00006934, + 14571: 0x00006969, + 14572: 0x00006940, + 14573: 0x0000696F, + 14574: 0x00006944, + 14575: 0x00006976, + 14576: 0x00006958, + 14577: 0x00006941, + 14578: 0x00006974, + 14579: 0x0000694C, + 14580: 0x0000693B, + 14581: 0x0000694B, + 14582: 0x00006937, + 14583: 0x0000695C, + 14584: 0x0000694F, + 14585: 0x00006951, + 14586: 0x00006932, + 14587: 0x00006952, + 14588: 0x0000692F, + 14589: 0x0000697B, + 14590: 0x0000693C, + 14591: 0x00006B46, + 14592: 0x00006B45, + 14593: 0x00006B43, + 14594: 0x00006B42, + 14595: 0x00006B48, + 14596: 0x00006B41, + 14597: 0x00006B9B, + 14598: 0x0000FA0D, + 14599: 0x00006BFB, + 14600: 0x00006BFC, + 14601: 0x00006BF9, + 14602: 0x00006BF7, + 14603: 0x00006BF8, + 14604: 0x00006E9B, + 14605: 0x00006ED6, + 14606: 0x00006EC8, + 14607: 0x00006E8F, + 14608: 0x00006EC0, + 14609: 0x00006E9F, + 14610: 0x00006E93, + 14611: 0x00006E94, + 14612: 0x00006EA0, + 14613: 0x00006EB1, + 14614: 0x00006EB9, + 14615: 0x00006EC6, + 14616: 0x00006ED2, + 14617: 0x00006EBD, + 14618: 0x00006EC1, + 14619: 0x00006E9E, + 14620: 0x00006EC9, + 14621: 0x00006EB7, + 14622: 0x00006EB0, + 14623: 0x00006ECD, + 14624: 0x00006EA6, + 14625: 0x00006ECF, + 14626: 0x00006EB2, + 14627: 0x00006EBE, + 14628: 0x00006EC3, + 14629: 0x00006EDC, + 14630: 0x00006ED8, + 14631: 0x00006E99, + 14632: 0x00006E92, + 14633: 0x00006E8E, + 14634: 0x00006E8D, + 14635: 0x00006EA4, + 14636: 0x00006EA1, + 14637: 0x00006EBF, + 14638: 0x00006EB3, + 14639: 0x00006ED0, + 14640: 0x00006ECA, + 14641: 0x00006E97, + 14642: 0x00006EAE, + 14643: 0x00006EA3, + 14644: 0x00007147, + 14645: 0x00007154, + 14646: 0x00007152, + 14647: 0x00007163, + 14648: 0x00007160, + 14649: 0x00007141, + 14650: 0x0000715D, + 14651: 0x00007162, + 14652: 0x00007172, + 14653: 0x00007178, + 14654: 0x0000716A, + 14655: 0x00007161, + 14656: 0x00007142, + 14657: 0x00007158, + 14658: 0x00007143, + 14659: 0x0000714B, + 14660: 0x00007170, + 14661: 0x0000715F, + 14662: 0x00007150, + 14663: 0x00007153, + 14664: 0x00007144, + 14665: 0x0000714D, + 14666: 0x0000715A, + 14667: 0x0000724F, + 14668: 0x0000728D, + 14669: 0x0000728C, + 14670: 0x00007291, + 14671: 0x00007290, + 14672: 0x0000728E, + 14673: 0x0000733C, + 14674: 0x00007342, + 14675: 0x0000733B, + 14676: 0x0000733A, + 14677: 0x00007340, + 14678: 0x0000734A, + 14679: 0x00007349, + 14680: 0x00007444, + 14681: 0x0000744A, + 14682: 0x0000744B, + 14683: 0x00007452, + 14684: 0x00007451, + 14685: 0x00007457, + 14686: 0x00007440, + 14687: 0x0000744F, + 14688: 0x00007450, + 14689: 0x0000744E, + 14690: 0x00007442, + 14691: 0x00007446, + 14692: 0x0000744D, + 14693: 0x00007454, + 14694: 0x000074E1, + 14695: 0x000074FF, + 14696: 0x000074FE, + 14697: 0x000074FD, + 14698: 0x0000751D, + 14699: 0x00007579, + 14700: 0x00007577, + 14701: 0x00006983, + 14702: 0x000075EF, + 14703: 0x0000760F, + 14704: 0x00007603, + 14705: 0x000075F7, + 14706: 0x000075FE, + 14707: 0x000075FC, + 14708: 0x000075F9, + 14709: 0x000075F8, + 14710: 0x00007610, + 14711: 0x000075FB, + 14712: 0x000075F6, + 14713: 0x000075ED, + 14714: 0x000075F5, + 14715: 0x000075FD, + 14716: 0x00007699, + 14717: 0x000076B5, + 14718: 0x000076DD, + 14719: 0x00007755, + 14720: 0x0000775F, + 14721: 0x00007760, + 14722: 0x00007752, + 14723: 0x00007756, + 14724: 0x0000775A, + 14725: 0x00007769, + 14726: 0x00007767, + 14727: 0x00007754, + 14728: 0x00007759, + 14729: 0x0000776D, + 14730: 0x000077E0, + 14731: 0x00007887, + 14732: 0x0000789A, + 14733: 0x00007894, + 14734: 0x0000788F, + 14735: 0x00007884, + 14736: 0x00007895, + 14737: 0x00007885, + 14738: 0x00007886, + 14739: 0x000078A1, + 14740: 0x00007883, + 14741: 0x00007879, + 14742: 0x00007899, + 14743: 0x00007880, + 14744: 0x00007896, + 14745: 0x0000787B, + 14746: 0x0000797C, + 14747: 0x00007982, + 14748: 0x0000797D, + 14749: 0x00007979, + 14750: 0x00007A11, + 14751: 0x00007A18, + 14752: 0x00007A19, + 14753: 0x00007A12, + 14754: 0x00007A17, + 14755: 0x00007A15, + 14756: 0x00007A22, + 14757: 0x00007A13, + 14758: 0x00007A1B, + 14759: 0x00007A10, + 14760: 0x00007AA3, + 14761: 0x00007AA2, + 14762: 0x00007A9E, + 14763: 0x00007AEB, + 14764: 0x00007B66, + 14765: 0x00007B64, + 14766: 0x00007B6D, + 14767: 0x00007B74, + 14768: 0x00007B69, + 14769: 0x00007B72, + 14770: 0x00007B65, + 14771: 0x00007B73, + 14772: 0x00007B71, + 14773: 0x00007B70, + 14774: 0x00007B61, + 14775: 0x00007B78, + 14776: 0x00007B76, + 14777: 0x00007B63, + 14778: 0x00007CB2, + 14779: 0x00007CB4, + 14780: 0x00007CAF, + 14781: 0x00007D88, + 14782: 0x00007D86, + 14783: 0x00007D80, + 14784: 0x00007D8D, + 14785: 0x00007D7F, + 14786: 0x00007D85, + 14787: 0x00007D7A, + 14788: 0x00007D8E, + 14789: 0x00007D7B, + 14790: 0x00007D83, + 14791: 0x00007D7C, + 14792: 0x00007D8C, + 14793: 0x00007D94, + 14794: 0x00007D84, + 14795: 0x00007D7D, + 14796: 0x00007D92, + 14797: 0x00007F6D, + 14798: 0x00007F6B, + 14799: 0x00007F67, + 14800: 0x00007F68, + 14801: 0x00007F6C, + 14802: 0x00007FA6, + 14803: 0x00007FA5, + 14804: 0x00007FA7, + 14805: 0x00007FDB, + 14806: 0x00007FDC, + 14807: 0x00008021, + 14808: 0x00008164, + 14809: 0x00008160, + 14810: 0x00008177, + 14811: 0x0000815C, + 14812: 0x00008169, + 14813: 0x0000815B, + 14814: 0x00008162, + 14815: 0x00008172, + 14816: 0x00006721, + 14817: 0x0000815E, + 14818: 0x00008176, + 14819: 0x00008167, + 14820: 0x0000816F, + 14821: 0x00008144, + 14822: 0x00008161, + 14823: 0x0000821D, + 14824: 0x00008249, + 14825: 0x00008244, + 14826: 0x00008240, + 14827: 0x00008242, + 14828: 0x00008245, + 14829: 0x000084F1, + 14830: 0x0000843F, + 14831: 0x00008456, + 14832: 0x00008476, + 14833: 0x00008479, + 14834: 0x0000848F, + 14835: 0x0000848D, + 14836: 0x00008465, + 14837: 0x00008451, + 14838: 0x00008440, + 14839: 0x00008486, + 14840: 0x00008467, + 14841: 0x00008430, + 14842: 0x0000844D, + 14843: 0x0000847D, + 14844: 0x0000845A, + 14845: 0x00008459, + 14846: 0x00008474, + 14847: 0x00008473, + 14848: 0x0000845D, + 14849: 0x00008507, + 14850: 0x0000845E, + 14851: 0x00008437, + 14852: 0x0000843A, + 14853: 0x00008434, + 14854: 0x0000847A, + 14855: 0x00008443, + 14856: 0x00008478, + 14857: 0x00008432, + 14858: 0x00008445, + 14859: 0x00008429, + 14860: 0x000083D9, + 14861: 0x0000844B, + 14862: 0x0000842F, + 14863: 0x00008442, + 14864: 0x0000842D, + 14865: 0x0000845F, + 14866: 0x00008470, + 14867: 0x00008439, + 14868: 0x0000844E, + 14869: 0x0000844C, + 14870: 0x00008452, + 14871: 0x0000846F, + 14872: 0x000084C5, + 14873: 0x0000848E, + 14874: 0x0000843B, + 14875: 0x00008447, + 14876: 0x00008436, + 14877: 0x00008433, + 14878: 0x00008468, + 14879: 0x0000847E, + 14880: 0x00008444, + 14881: 0x0000842B, + 14882: 0x00008460, + 14883: 0x00008454, + 14884: 0x0000846E, + 14885: 0x00008450, + 14886: 0x0000870B, + 14887: 0x00008704, + 14888: 0x000086F7, + 14889: 0x0000870C, + 14890: 0x000086FA, + 14891: 0x000086D6, + 14892: 0x000086F5, + 14893: 0x0000874D, + 14894: 0x000086F8, + 14895: 0x0000870E, + 14896: 0x00008709, + 14897: 0x00008701, + 14898: 0x000086F6, + 14899: 0x0000870D, + 14900: 0x00008705, + 14901: 0x000088D6, + 14902: 0x000088CB, + 14903: 0x000088CD, + 14904: 0x000088CE, + 14905: 0x000088DE, + 14906: 0x000088DB, + 14907: 0x000088DA, + 14908: 0x000088CC, + 14909: 0x000088D0, + 14910: 0x00008985, + 14911: 0x0000899B, + 14912: 0x000089DF, + 14913: 0x000089E5, + 14914: 0x000089E4, + 14915: 0x000089E1, + 14916: 0x000089E0, + 14917: 0x000089E2, + 14918: 0x000089DC, + 14919: 0x000089E6, + 14920: 0x00008A76, + 14921: 0x00008A86, + 14922: 0x00008A7F, + 14923: 0x00008A61, + 14924: 0x00008A3F, + 14925: 0x00008A77, + 14926: 0x00008A82, + 14927: 0x00008A84, + 14928: 0x00008A75, + 14929: 0x00008A83, + 14930: 0x00008A81, + 14931: 0x00008A74, + 14932: 0x00008A7A, + 14933: 0x00008C3C, + 14934: 0x00008C4B, + 14935: 0x00008C4A, + 14936: 0x00008C65, + 14937: 0x00008C64, + 14938: 0x00008C66, + 14939: 0x00008C86, + 14940: 0x00008C84, + 14941: 0x00008C85, + 14942: 0x00008CCC, + 14943: 0x00008D68, + 14944: 0x00008D69, + 14945: 0x00008D91, + 14946: 0x00008D8C, + 14947: 0x00008D8E, + 14948: 0x00008D8F, + 14949: 0x00008D8D, + 14950: 0x00008D93, + 14951: 0x00008D94, + 14952: 0x00008D90, + 14953: 0x00008D92, + 14954: 0x00008DF0, + 14955: 0x00008DE0, + 14956: 0x00008DEC, + 14957: 0x00008DF1, + 14958: 0x00008DEE, + 14959: 0x00008DD0, + 14960: 0x00008DE9, + 14961: 0x00008DE3, + 14962: 0x00008DE2, + 14963: 0x00008DE7, + 14964: 0x00008DF2, + 14965: 0x00008DEB, + 14966: 0x00008DF4, + 14967: 0x00008F06, + 14968: 0x00008EFF, + 14969: 0x00008F01, + 14970: 0x00008F00, + 14971: 0x00008F05, + 14972: 0x00008F07, + 14973: 0x00008F08, + 14974: 0x00008F02, + 14975: 0x00008F0B, + 14976: 0x00009052, + 14977: 0x0000903F, + 14978: 0x00009044, + 14979: 0x00009049, + 14980: 0x0000903D, + 14981: 0x00009110, + 14982: 0x0000910D, + 14983: 0x0000910F, + 14984: 0x00009111, + 14985: 0x00009116, + 14986: 0x00009114, + 14987: 0x0000910B, + 14988: 0x0000910E, + 14989: 0x0000916E, + 14990: 0x0000916F, + 14991: 0x00009248, + 14992: 0x00009252, + 14993: 0x00009230, + 14994: 0x0000923A, + 14995: 0x00009266, + 14996: 0x00009233, + 14997: 0x00009265, + 14998: 0x0000925E, + 14999: 0x00009283, + 15000: 0x0000922E, + 15001: 0x0000924A, + 15002: 0x00009246, + 15003: 0x0000926D, + 15004: 0x0000926C, + 15005: 0x0000924F, + 15006: 0x00009260, + 15007: 0x00009267, + 15008: 0x0000926F, + 15009: 0x00009236, + 15010: 0x00009261, + 15011: 0x00009270, + 15012: 0x00009231, + 15013: 0x00009254, + 15014: 0x00009263, + 15015: 0x00009250, + 15016: 0x00009272, + 15017: 0x0000924E, + 15018: 0x00009253, + 15019: 0x0000924C, + 15020: 0x00009256, + 15021: 0x00009232, + 15022: 0x0000959F, + 15023: 0x0000959C, + 15024: 0x0000959E, + 15025: 0x0000959B, + 15026: 0x00009692, + 15027: 0x00009693, + 15028: 0x00009691, + 15029: 0x00009697, + 15030: 0x000096CE, + 15031: 0x000096FA, + 15032: 0x000096FD, + 15033: 0x000096F8, + 15034: 0x000096F5, + 15035: 0x00009773, + 15036: 0x00009777, + 15037: 0x00009778, + 15038: 0x00009772, + 15039: 0x0000980F, + 15040: 0x0000980D, + 15041: 0x0000980E, + 15042: 0x000098AC, + 15043: 0x000098F6, + 15044: 0x000098F9, + 15045: 0x000099AF, + 15046: 0x000099B2, + 15047: 0x000099B0, + 15048: 0x000099B5, + 15049: 0x00009AAD, + 15050: 0x00009AAB, + 15051: 0x00009B5B, + 15052: 0x00009CEA, + 15053: 0x00009CED, + 15054: 0x00009CE7, + 15055: 0x00009E80, + 15056: 0x00009EFD, + 15057: 0x000050E6, + 15058: 0x000050D4, + 15059: 0x000050D7, + 15060: 0x000050E8, + 15061: 0x000050F3, + 15062: 0x000050DB, + 15063: 0x000050EA, + 15064: 0x000050DD, + 15065: 0x000050E4, + 15066: 0x000050D3, + 15067: 0x000050EC, + 15068: 0x000050F0, + 15069: 0x000050EF, + 15070: 0x000050E3, + 15071: 0x000050E0, + 15072: 0x000051D8, + 15073: 0x00005280, + 15074: 0x00005281, + 15075: 0x000052E9, + 15076: 0x000052EB, + 15077: 0x00005330, + 15078: 0x000053AC, + 15079: 0x00005627, + 15080: 0x00005615, + 15081: 0x0000560C, + 15082: 0x00005612, + 15083: 0x000055FC, + 15084: 0x0000560F, + 15085: 0x0000561C, + 15086: 0x00005601, + 15087: 0x00005613, + 15088: 0x00005602, + 15089: 0x000055FA, + 15090: 0x0000561D, + 15091: 0x00005604, + 15092: 0x000055FF, + 15093: 0x000055F9, + 15094: 0x00005889, + 15095: 0x0000587C, + 15096: 0x00005890, + 15097: 0x00005898, + 15098: 0x00005886, + 15099: 0x00005881, + 15100: 0x0000587F, + 15101: 0x00005874, + 15102: 0x0000588B, + 15103: 0x0000587A, + 15104: 0x00005887, + 15105: 0x00005891, + 15106: 0x0000588E, + 15107: 0x00005876, + 15108: 0x00005882, + 15109: 0x00005888, + 15110: 0x0000587B, + 15111: 0x00005894, + 15112: 0x0000588F, + 15113: 0x000058FE, + 15114: 0x0000596B, + 15115: 0x00005ADC, + 15116: 0x00005AEE, + 15117: 0x00005AE5, + 15118: 0x00005AD5, + 15119: 0x00005AEA, + 15120: 0x00005ADA, + 15121: 0x00005AED, + 15122: 0x00005AEB, + 15123: 0x00005AF3, + 15124: 0x00005AE2, + 15125: 0x00005AE0, + 15126: 0x00005ADB, + 15127: 0x00005AEC, + 15128: 0x00005ADE, + 15129: 0x00005ADD, + 15130: 0x00005AD9, + 15131: 0x00005AE8, + 15132: 0x00005ADF, + 15133: 0x00005B77, + 15134: 0x00005BE0, + 15135: 0x00005BE3, + 15136: 0x00005C63, + 15137: 0x00005D82, + 15138: 0x00005D80, + 15139: 0x00005D7D, + 15140: 0x00005D86, + 15141: 0x00005D7A, + 15142: 0x00005D81, + 15143: 0x00005D77, + 15144: 0x00005D8A, + 15145: 0x00005D89, + 15146: 0x00005D88, + 15147: 0x00005D7E, + 15148: 0x00005D7C, + 15149: 0x00005D8D, + 15150: 0x00005D79, + 15151: 0x00005D7F, + 15152: 0x00005E58, + 15153: 0x00005E59, + 15154: 0x00005E53, + 15155: 0x00005ED8, + 15156: 0x00005ED1, + 15157: 0x00005ED7, + 15158: 0x00005ECE, + 15159: 0x00005EDC, + 15160: 0x00005ED5, + 15161: 0x00005ED9, + 15162: 0x00005ED2, + 15163: 0x00005ED4, + 15164: 0x00005F44, + 15165: 0x00005F43, + 15166: 0x00005F6F, + 15167: 0x00005FB6, + 15168: 0x0000612C, + 15169: 0x00006128, + 15170: 0x00006141, + 15171: 0x0000615E, + 15172: 0x00006171, + 15173: 0x00006173, + 15174: 0x00006152, + 15175: 0x00006153, + 15176: 0x00006172, + 15177: 0x0000616C, + 15178: 0x00006180, + 15179: 0x00006174, + 15180: 0x00006154, + 15181: 0x0000617A, + 15182: 0x0000615B, + 15183: 0x00006165, + 15184: 0x0000613B, + 15185: 0x0000616A, + 15186: 0x00006161, + 15187: 0x00006156, + 15188: 0x00006229, + 15189: 0x00006227, + 15190: 0x0000622B, + 15191: 0x0000642B, + 15192: 0x0000644D, + 15193: 0x0000645B, + 15194: 0x0000645D, + 15195: 0x00006474, + 15196: 0x00006476, + 15197: 0x00006472, + 15198: 0x00006473, + 15199: 0x0000647D, + 15200: 0x00006475, + 15201: 0x00006466, + 15202: 0x000064A6, + 15203: 0x0000644E, + 15204: 0x00006482, + 15205: 0x0000645E, + 15206: 0x0000645C, + 15207: 0x0000644B, + 15208: 0x00006453, + 15209: 0x00006460, + 15210: 0x00006450, + 15211: 0x0000647F, + 15212: 0x0000643F, + 15213: 0x0000646C, + 15214: 0x0000646B, + 15215: 0x00006459, + 15216: 0x00006465, + 15217: 0x00006477, + 15218: 0x00006573, + 15219: 0x000065A0, + 15220: 0x000066A1, + 15221: 0x000066A0, + 15222: 0x0000669F, + 15223: 0x00006705, + 15224: 0x00006704, + 15225: 0x00006722, + 15226: 0x000069B1, + 15227: 0x000069B6, + 15228: 0x000069C9, + 15229: 0x000069A0, + 15230: 0x000069CE, + 15231: 0x00006996, + 15232: 0x000069B0, + 15233: 0x000069AC, + 15234: 0x000069BC, + 15235: 0x00006991, + 15236: 0x00006999, + 15237: 0x0000698E, + 15238: 0x000069A7, + 15239: 0x0000698D, + 15240: 0x000069A9, + 15241: 0x000069BE, + 15242: 0x000069AF, + 15243: 0x000069BF, + 15244: 0x000069C4, + 15245: 0x000069BD, + 15246: 0x000069A4, + 15247: 0x000069D4, + 15248: 0x000069B9, + 15249: 0x000069CA, + 15250: 0x0000699A, + 15251: 0x000069CF, + 15252: 0x000069B3, + 15253: 0x00006993, + 15254: 0x000069AA, + 15255: 0x000069A1, + 15256: 0x0000699E, + 15257: 0x000069D9, + 15258: 0x00006997, + 15259: 0x00006990, + 15260: 0x000069C2, + 15261: 0x000069B5, + 15262: 0x000069A5, + 15263: 0x000069C6, + 15264: 0x00006B4A, + 15265: 0x00006B4D, + 15266: 0x00006B4B, + 15267: 0x00006B9E, + 15268: 0x00006B9F, + 15269: 0x00006BA0, + 15270: 0x00006BC3, + 15271: 0x00006BC4, + 15272: 0x00006BFE, + 15273: 0x00006ECE, + 15274: 0x00006EF5, + 15275: 0x00006EF1, + 15276: 0x00006F03, + 15277: 0x00006F25, + 15278: 0x00006EF8, + 15279: 0x00006F37, + 15280: 0x00006EFB, + 15281: 0x00006F2E, + 15282: 0x00006F09, + 15283: 0x00006F4E, + 15284: 0x00006F19, + 15285: 0x00006F1A, + 15286: 0x00006F27, + 15287: 0x00006F18, + 15288: 0x00006F3B, + 15289: 0x00006F12, + 15290: 0x00006EED, + 15291: 0x00006F0A, + 15292: 0x00006F36, + 15293: 0x00006F73, + 15294: 0x00006EF9, + 15295: 0x00006EEE, + 15296: 0x00006F2D, + 15297: 0x00006F40, + 15298: 0x00006F30, + 15299: 0x00006F3C, + 15300: 0x00006F35, + 15301: 0x00006EEB, + 15302: 0x00006F07, + 15303: 0x00006F0E, + 15304: 0x00006F43, + 15305: 0x00006F05, + 15306: 0x00006EFD, + 15307: 0x00006EF6, + 15308: 0x00006F39, + 15309: 0x00006F1C, + 15310: 0x00006EFC, + 15311: 0x00006F3A, + 15312: 0x00006F1F, + 15313: 0x00006F0D, + 15314: 0x00006F1E, + 15315: 0x00006F08, + 15316: 0x00006F21, + 15317: 0x00007187, + 15318: 0x00007190, + 15319: 0x00007189, + 15320: 0x00007180, + 15321: 0x00007185, + 15322: 0x00007182, + 15323: 0x0000718F, + 15324: 0x0000717B, + 15325: 0x00007186, + 15326: 0x00007181, + 15327: 0x00007197, + 15328: 0x00007244, + 15329: 0x00007253, + 15330: 0x00007297, + 15331: 0x00007295, + 15332: 0x00007293, + 15333: 0x00007343, + 15334: 0x0000734D, + 15335: 0x00007351, + 15336: 0x0000734C, + 15337: 0x00007462, + 15338: 0x00007473, + 15339: 0x00007471, + 15340: 0x00007475, + 15341: 0x00007472, + 15342: 0x00007467, + 15343: 0x0000746E, + 15344: 0x00007500, + 15345: 0x00007502, + 15346: 0x00007503, + 15347: 0x0000757D, + 15348: 0x00007590, + 15349: 0x00007616, + 15350: 0x00007608, + 15351: 0x0000760C, + 15352: 0x00007615, + 15353: 0x00007611, + 15354: 0x0000760A, + 15355: 0x00007614, + 15356: 0x000076B8, + 15357: 0x00007781, + 15358: 0x0000777C, + 15359: 0x00007785, + 15360: 0x00007782, + 15361: 0x0000776E, + 15362: 0x00007780, + 15363: 0x0000776F, + 15364: 0x0000777E, + 15365: 0x00007783, + 15366: 0x000078B2, + 15367: 0x000078AA, + 15368: 0x000078B4, + 15369: 0x000078AD, + 15370: 0x000078A8, + 15371: 0x0000787E, + 15372: 0x000078AB, + 15373: 0x0000789E, + 15374: 0x000078A5, + 15375: 0x000078A0, + 15376: 0x000078AC, + 15377: 0x000078A2, + 15378: 0x000078A4, + 15379: 0x00007998, + 15380: 0x0000798A, + 15381: 0x0000798B, + 15382: 0x00007996, + 15383: 0x00007995, + 15384: 0x00007994, + 15385: 0x00007993, + 15386: 0x00007997, + 15387: 0x00007988, + 15388: 0x00007992, + 15389: 0x00007990, + 15390: 0x00007A2B, + 15391: 0x00007A4A, + 15392: 0x00007A30, + 15393: 0x00007A2F, + 15394: 0x00007A28, + 15395: 0x00007A26, + 15396: 0x00007AA8, + 15397: 0x00007AAB, + 15398: 0x00007AAC, + 15399: 0x00007AEE, + 15400: 0x00007B88, + 15401: 0x00007B9C, + 15402: 0x00007B8A, + 15403: 0x00007B91, + 15404: 0x00007B90, + 15405: 0x00007B96, + 15406: 0x00007B8D, + 15407: 0x00007B8C, + 15408: 0x00007B9B, + 15409: 0x00007B8E, + 15410: 0x00007B85, + 15411: 0x00007B98, + 15412: 0x00005284, + 15413: 0x00007B99, + 15414: 0x00007BA4, + 15415: 0x00007B82, + 15416: 0x00007CBB, + 15417: 0x00007CBF, + 15418: 0x00007CBC, + 15419: 0x00007CBA, + 15420: 0x00007DA7, + 15421: 0x00007DB7, + 15422: 0x00007DC2, + 15423: 0x00007DA3, + 15424: 0x00007DAA, + 15425: 0x00007DC1, + 15426: 0x00007DC0, + 15427: 0x00007DC5, + 15428: 0x00007D9D, + 15429: 0x00007DCE, + 15430: 0x00007DC4, + 15431: 0x00007DC6, + 15432: 0x00007DCB, + 15433: 0x00007DCC, + 15434: 0x00007DAF, + 15435: 0x00007DB9, + 15436: 0x00007D96, + 15437: 0x00007DBC, + 15438: 0x00007D9F, + 15439: 0x00007DA6, + 15440: 0x00007DAE, + 15441: 0x00007DA9, + 15442: 0x00007DA1, + 15443: 0x00007DC9, + 15444: 0x00007F73, + 15445: 0x00007FE2, + 15446: 0x00007FE3, + 15447: 0x00007FE5, + 15448: 0x00007FDE, + 15449: 0x00008024, + 15450: 0x0000805D, + 15451: 0x0000805C, + 15452: 0x00008189, + 15453: 0x00008186, + 15454: 0x00008183, + 15455: 0x00008187, + 15456: 0x0000818D, + 15457: 0x0000818C, + 15458: 0x0000818B, + 15459: 0x00008215, + 15460: 0x00008497, + 15461: 0x000084A4, + 15462: 0x000084A1, + 15463: 0x0000849F, + 15464: 0x000084BA, + 15465: 0x000084CE, + 15466: 0x000084C2, + 15467: 0x000084AC, + 15468: 0x000084AE, + 15469: 0x000084AB, + 15470: 0x000084B9, + 15471: 0x000084B4, + 15472: 0x000084C1, + 15473: 0x000084CD, + 15474: 0x000084AA, + 15475: 0x0000849A, + 15476: 0x000084B1, + 15477: 0x000084D0, + 15478: 0x0000849D, + 15479: 0x000084A7, + 15480: 0x000084BB, + 15481: 0x000084A2, + 15482: 0x00008494, + 15483: 0x000084C7, + 15484: 0x000084CC, + 15485: 0x0000849B, + 15486: 0x000084A9, + 15487: 0x000084AF, + 15488: 0x000084A8, + 15489: 0x000084D6, + 15490: 0x00008498, + 15491: 0x000084B6, + 15492: 0x000084CF, + 15493: 0x000084A0, + 15494: 0x000084D7, + 15495: 0x000084D4, + 15496: 0x000084D2, + 15497: 0x000084DB, + 15498: 0x000084B0, + 15499: 0x00008491, + 15500: 0x00008661, + 15501: 0x00008733, + 15502: 0x00008723, + 15503: 0x00008728, + 15504: 0x0000876B, + 15505: 0x00008740, + 15506: 0x0000872E, + 15507: 0x0000871E, + 15508: 0x00008721, + 15509: 0x00008719, + 15510: 0x0000871B, + 15511: 0x00008743, + 15512: 0x0000872C, + 15513: 0x00008741, + 15514: 0x0000873E, + 15515: 0x00008746, + 15516: 0x00008720, + 15517: 0x00008732, + 15518: 0x0000872A, + 15519: 0x0000872D, + 15520: 0x0000873C, + 15521: 0x00008712, + 15522: 0x0000873A, + 15523: 0x00008731, + 15524: 0x00008735, + 15525: 0x00008742, + 15526: 0x00008726, + 15527: 0x00008727, + 15528: 0x00008738, + 15529: 0x00008724, + 15530: 0x0000871A, + 15531: 0x00008730, + 15532: 0x00008711, + 15533: 0x000088F7, + 15534: 0x000088E7, + 15535: 0x000088F1, + 15536: 0x000088F2, + 15537: 0x000088FA, + 15538: 0x000088FE, + 15539: 0x000088EE, + 15540: 0x000088FC, + 15541: 0x000088F6, + 15542: 0x000088FB, + 15543: 0x000088F0, + 15544: 0x000088EC, + 15545: 0x000088EB, + 15546: 0x0000899D, + 15547: 0x000089A1, + 15548: 0x0000899F, + 15549: 0x0000899E, + 15550: 0x000089E9, + 15551: 0x000089EB, + 15552: 0x000089E8, + 15553: 0x00008AAB, + 15554: 0x00008A99, + 15555: 0x00008A8B, + 15556: 0x00008A92, + 15557: 0x00008A8F, + 15558: 0x00008A96, + 15559: 0x00008C3D, + 15560: 0x00008C68, + 15561: 0x00008C69, + 15562: 0x00008CD5, + 15563: 0x00008CCF, + 15564: 0x00008CD7, + 15565: 0x00008D96, + 15566: 0x00008E09, + 15567: 0x00008E02, + 15568: 0x00008DFF, + 15569: 0x00008E0D, + 15570: 0x00008DFD, + 15571: 0x00008E0A, + 15572: 0x00008E03, + 15573: 0x00008E07, + 15574: 0x00008E06, + 15575: 0x00008E05, + 15576: 0x00008DFE, + 15577: 0x00008E00, + 15578: 0x00008E04, + 15579: 0x00008F10, + 15580: 0x00008F11, + 15581: 0x00008F0E, + 15582: 0x00008F0D, + 15583: 0x00009123, + 15584: 0x0000911C, + 15585: 0x00009120, + 15586: 0x00009122, + 15587: 0x0000911F, + 15588: 0x0000911D, + 15589: 0x0000911A, + 15590: 0x00009124, + 15591: 0x00009121, + 15592: 0x0000911B, + 15593: 0x0000917A, + 15594: 0x00009172, + 15595: 0x00009179, + 15596: 0x00009173, + 15597: 0x000092A5, + 15598: 0x000092A4, + 15599: 0x00009276, + 15600: 0x0000929B, + 15601: 0x0000927A, + 15602: 0x000092A0, + 15603: 0x00009294, + 15604: 0x000092AA, + 15605: 0x0000928D, + 15606: 0x000092A6, + 15607: 0x0000929A, + 15608: 0x000092AB, + 15609: 0x00009279, + 15610: 0x00009297, + 15611: 0x0000927F, + 15612: 0x000092A3, + 15613: 0x000092EE, + 15614: 0x0000928E, + 15615: 0x00009282, + 15616: 0x00009295, + 15617: 0x000092A2, + 15618: 0x0000927D, + 15619: 0x00009288, + 15620: 0x000092A1, + 15621: 0x0000928A, + 15622: 0x00009286, + 15623: 0x0000928C, + 15624: 0x00009299, + 15625: 0x000092A7, + 15626: 0x0000927E, + 15627: 0x00009287, + 15628: 0x000092A9, + 15629: 0x0000929D, + 15630: 0x0000928B, + 15631: 0x0000922D, + 15632: 0x0000969E, + 15633: 0x000096A1, + 15634: 0x000096FF, + 15635: 0x00009758, + 15636: 0x0000977D, + 15637: 0x0000977A, + 15638: 0x0000977E, + 15639: 0x00009783, + 15640: 0x00009780, + 15641: 0x00009782, + 15642: 0x0000977B, + 15643: 0x00009784, + 15644: 0x00009781, + 15645: 0x0000977F, + 15646: 0x000097CE, + 15647: 0x000097CD, + 15648: 0x00009816, + 15649: 0x000098AD, + 15650: 0x000098AE, + 15651: 0x00009902, + 15652: 0x00009900, + 15653: 0x00009907, + 15654: 0x0000999D, + 15655: 0x0000999C, + 15656: 0x000099C3, + 15657: 0x000099B9, + 15658: 0x000099BB, + 15659: 0x000099BA, + 15660: 0x000099C2, + 15661: 0x000099BD, + 15662: 0x000099C7, + 15663: 0x00009AB1, + 15664: 0x00009AE3, + 15665: 0x00009AE7, + 15666: 0x00009B3E, + 15667: 0x00009B3F, + 15668: 0x00009B60, + 15669: 0x00009B61, + 15670: 0x00009B5F, + 15671: 0x00009CF1, + 15672: 0x00009CF2, + 15673: 0x00009CF5, + 15674: 0x00009EA7, + 15675: 0x000050FF, + 15676: 0x00005103, + 15677: 0x00005130, + 15678: 0x000050F8, + 15679: 0x00005106, + 15680: 0x00005107, + 15681: 0x000050F6, + 15682: 0x000050FE, + 15683: 0x0000510B, + 15684: 0x0000510C, + 15685: 0x000050FD, + 15686: 0x0000510A, + 15687: 0x0000528B, + 15688: 0x0000528C, + 15689: 0x000052F1, + 15690: 0x000052EF, + 15691: 0x00005648, + 15692: 0x00005642, + 15693: 0x0000564C, + 15694: 0x00005635, + 15695: 0x00005641, + 15696: 0x0000564A, + 15697: 0x00005649, + 15698: 0x00005646, + 15699: 0x00005658, + 15700: 0x0000565A, + 15701: 0x00005640, + 15702: 0x00005633, + 15703: 0x0000563D, + 15704: 0x0000562C, + 15705: 0x0000563E, + 15706: 0x00005638, + 15707: 0x0000562A, + 15708: 0x0000563A, + 15709: 0x0000571A, + 15710: 0x000058AB, + 15711: 0x0000589D, + 15712: 0x000058B1, + 15713: 0x000058A0, + 15714: 0x000058A3, + 15715: 0x000058AF, + 15716: 0x000058AC, + 15717: 0x000058A5, + 15718: 0x000058A1, + 15719: 0x000058FF, + 15720: 0x00005AFF, + 15721: 0x00005AF4, + 15722: 0x00005AFD, + 15723: 0x00005AF7, + 15724: 0x00005AF6, + 15725: 0x00005B03, + 15726: 0x00005AF8, + 15727: 0x00005B02, + 15728: 0x00005AF9, + 15729: 0x00005B01, + 15730: 0x00005B07, + 15731: 0x00005B05, + 15732: 0x00005B0F, + 15733: 0x00005C67, + 15734: 0x00005D99, + 15735: 0x00005D97, + 15736: 0x00005D9F, + 15737: 0x00005D92, + 15738: 0x00005DA2, + 15739: 0x00005D93, + 15740: 0x00005D95, + 15741: 0x00005DA0, + 15742: 0x00005D9C, + 15743: 0x00005DA1, + 15744: 0x00005D9A, + 15745: 0x00005D9E, + 15746: 0x00005E69, + 15747: 0x00005E5D, + 15748: 0x00005E60, + 15749: 0x00005E5C, + 15750: 0x00007DF3, + 15751: 0x00005EDB, + 15752: 0x00005EDE, + 15753: 0x00005EE1, + 15754: 0x00005F49, + 15755: 0x00005FB2, + 15756: 0x0000618B, + 15757: 0x00006183, + 15758: 0x00006179, + 15759: 0x000061B1, + 15760: 0x000061B0, + 15761: 0x000061A2, + 15762: 0x00006189, + 15763: 0x0000619B, + 15764: 0x00006193, + 15765: 0x000061AF, + 15766: 0x000061AD, + 15767: 0x0000619F, + 15768: 0x00006192, + 15769: 0x000061AA, + 15770: 0x000061A1, + 15771: 0x0000618D, + 15772: 0x00006166, + 15773: 0x000061B3, + 15774: 0x0000622D, + 15775: 0x0000646E, + 15776: 0x00006470, + 15777: 0x00006496, + 15778: 0x000064A0, + 15779: 0x00006485, + 15780: 0x00006497, + 15781: 0x0000649C, + 15782: 0x0000648F, + 15783: 0x0000648B, + 15784: 0x0000648A, + 15785: 0x0000648C, + 15786: 0x000064A3, + 15787: 0x0000649F, + 15788: 0x00006468, + 15789: 0x000064B1, + 15790: 0x00006498, + 15791: 0x00006576, + 15792: 0x0000657A, + 15793: 0x00006579, + 15794: 0x0000657B, + 15795: 0x000065B2, + 15796: 0x000065B3, + 15797: 0x000066B5, + 15798: 0x000066B0, + 15799: 0x000066A9, + 15800: 0x000066B2, + 15801: 0x000066B7, + 15802: 0x000066AA, + 15803: 0x000066AF, + 15804: 0x00006A00, + 15805: 0x00006A06, + 15806: 0x00006A17, + 15807: 0x000069E5, + 15808: 0x000069F8, + 15809: 0x00006A15, + 15810: 0x000069F1, + 15811: 0x000069E4, + 15812: 0x00006A20, + 15813: 0x000069FF, + 15814: 0x000069EC, + 15815: 0x000069E2, + 15816: 0x00006A1B, + 15817: 0x00006A1D, + 15818: 0x000069FE, + 15819: 0x00006A27, + 15820: 0x000069F2, + 15821: 0x000069EE, + 15822: 0x00006A14, + 15823: 0x000069F7, + 15824: 0x000069E7, + 15825: 0x00006A40, + 15826: 0x00006A08, + 15827: 0x000069E6, + 15828: 0x000069FB, + 15829: 0x00006A0D, + 15830: 0x000069FC, + 15831: 0x000069EB, + 15832: 0x00006A09, + 15833: 0x00006A04, + 15834: 0x00006A18, + 15835: 0x00006A25, + 15836: 0x00006A0F, + 15837: 0x000069F6, + 15838: 0x00006A26, + 15839: 0x00006A07, + 15840: 0x000069F4, + 15841: 0x00006A16, + 15842: 0x00006B51, + 15843: 0x00006BA5, + 15844: 0x00006BA3, + 15845: 0x00006BA2, + 15846: 0x00006BA6, + 15847: 0x00006C01, + 15848: 0x00006C00, + 15849: 0x00006BFF, + 15850: 0x00006C02, + 15851: 0x00006F41, + 15852: 0x00006F26, + 15853: 0x00006F7E, + 15854: 0x00006F87, + 15855: 0x00006FC6, + 15856: 0x00006F92, + 15857: 0x00006F8D, + 15858: 0x00006F89, + 15859: 0x00006F8C, + 15860: 0x00006F62, + 15861: 0x00006F4F, + 15862: 0x00006F85, + 15863: 0x00006F5A, + 15864: 0x00006F96, + 15865: 0x00006F76, + 15866: 0x00006F6C, + 15867: 0x00006F82, + 15868: 0x00006F55, + 15869: 0x00006F72, + 15870: 0x00006F52, + 15871: 0x00006F50, + 15872: 0x00006F57, + 15873: 0x00006F94, + 15874: 0x00006F93, + 15875: 0x00006F5D, + 15876: 0x00006F00, + 15877: 0x00006F61, + 15878: 0x00006F6B, + 15879: 0x00006F7D, + 15880: 0x00006F67, + 15881: 0x00006F90, + 15882: 0x00006F53, + 15883: 0x00006F8B, + 15884: 0x00006F69, + 15885: 0x00006F7F, + 15886: 0x00006F95, + 15887: 0x00006F63, + 15888: 0x00006F77, + 15889: 0x00006F6A, + 15890: 0x00006F7B, + 15891: 0x000071B2, + 15892: 0x000071AF, + 15893: 0x0000719B, + 15894: 0x000071B0, + 15895: 0x000071A0, + 15896: 0x0000719A, + 15897: 0x000071A9, + 15898: 0x000071B5, + 15899: 0x0000719D, + 15900: 0x000071A5, + 15901: 0x0000719E, + 15902: 0x000071A4, + 15903: 0x000071A1, + 15904: 0x000071AA, + 15905: 0x0000719C, + 15906: 0x000071A7, + 15907: 0x000071B3, + 15908: 0x00007298, + 15909: 0x0000729A, + 15910: 0x00007358, + 15911: 0x00007352, + 15912: 0x0000735E, + 15913: 0x0000735F, + 15914: 0x00007360, + 15915: 0x0000735D, + 15916: 0x0000735B, + 15917: 0x00007361, + 15918: 0x0000735A, + 15919: 0x00007359, + 15920: 0x00007362, + 15921: 0x00007487, + 15922: 0x00007489, + 15923: 0x0000748A, + 15924: 0x00007486, + 15925: 0x00007481, + 15926: 0x0000747D, + 15927: 0x00007485, + 15928: 0x00007488, + 15929: 0x0000747C, + 15930: 0x00007479, + 15931: 0x00007508, + 15932: 0x00007507, + 15933: 0x0000757E, + 15934: 0x00007625, + 15935: 0x0000761E, + 15936: 0x00007619, + 15937: 0x0000761D, + 15938: 0x0000761C, + 15939: 0x00007623, + 15940: 0x0000761A, + 15941: 0x00007628, + 15942: 0x0000761B, + 15943: 0x0000769C, + 15944: 0x0000769D, + 15945: 0x0000769E, + 15946: 0x0000769B, + 15947: 0x0000778D, + 15948: 0x0000778F, + 15949: 0x00007789, + 15950: 0x00007788, + 15951: 0x000078CD, + 15952: 0x000078BB, + 15953: 0x000078CF, + 15954: 0x000078CC, + 15955: 0x000078D1, + 15956: 0x000078CE, + 15957: 0x000078D4, + 15958: 0x000078C8, + 15959: 0x000078C3, + 15960: 0x000078C4, + 15961: 0x000078C9, + 15962: 0x0000799A, + 15963: 0x000079A1, + 15964: 0x000079A0, + 15965: 0x0000799C, + 15966: 0x000079A2, + 15967: 0x0000799B, + 15968: 0x00006B76, + 15969: 0x00007A39, + 15970: 0x00007AB2, + 15971: 0x00007AB4, + 15972: 0x00007AB3, + 15973: 0x00007BB7, + 15974: 0x00007BCB, + 15975: 0x00007BBE, + 15976: 0x00007BAC, + 15977: 0x00007BCE, + 15978: 0x00007BAF, + 15979: 0x00007BB9, + 15980: 0x00007BCA, + 15981: 0x00007BB5, + 15982: 0x00007CC5, + 15983: 0x00007CC8, + 15984: 0x00007CCC, + 15985: 0x00007CCB, + 15986: 0x00007DF7, + 15987: 0x00007DDB, + 15988: 0x00007DEA, + 15989: 0x00007DE7, + 15990: 0x00007DD7, + 15991: 0x00007DE1, + 15992: 0x00007E03, + 15993: 0x00007DFA, + 15994: 0x00007DE6, + 15995: 0x00007DF6, + 15996: 0x00007DF1, + 15997: 0x00007DF0, + 15998: 0x00007DEE, + 15999: 0x00007DDF, + 16000: 0x00007F76, + 16001: 0x00007FAC, + 16002: 0x00007FB0, + 16003: 0x00007FAD, + 16004: 0x00007FED, + 16005: 0x00007FEB, + 16006: 0x00007FEA, + 16007: 0x00007FEC, + 16008: 0x00007FE6, + 16009: 0x00007FE8, + 16010: 0x00008064, + 16011: 0x00008067, + 16012: 0x000081A3, + 16013: 0x0000819F, + 16014: 0x0000819E, + 16015: 0x00008195, + 16016: 0x000081A2, + 16017: 0x00008199, + 16018: 0x00008197, + 16019: 0x00008216, + 16020: 0x0000824F, + 16021: 0x00008253, + 16022: 0x00008252, + 16023: 0x00008250, + 16024: 0x0000824E, + 16025: 0x00008251, + 16026: 0x00008524, + 16027: 0x0000853B, + 16028: 0x0000850F, + 16029: 0x00008500, + 16030: 0x00008529, + 16031: 0x0000850E, + 16032: 0x00008509, + 16033: 0x0000850D, + 16034: 0x0000851F, + 16035: 0x0000850A, + 16036: 0x00008527, + 16037: 0x0000851C, + 16038: 0x000084FB, + 16039: 0x0000852B, + 16040: 0x000084FA, + 16041: 0x00008508, + 16042: 0x0000850C, + 16043: 0x000084F4, + 16044: 0x0000852A, + 16045: 0x000084F2, + 16046: 0x00008515, + 16047: 0x000084F7, + 16048: 0x000084EB, + 16049: 0x000084F3, + 16050: 0x000084FC, + 16051: 0x00008512, + 16052: 0x000084EA, + 16053: 0x000084E9, + 16054: 0x00008516, + 16055: 0x000084FE, + 16056: 0x00008528, + 16057: 0x0000851D, + 16058: 0x0000852E, + 16059: 0x00008502, + 16060: 0x000084FD, + 16061: 0x0000851E, + 16062: 0x000084F6, + 16063: 0x00008531, + 16064: 0x00008526, + 16065: 0x000084E7, + 16066: 0x000084E8, + 16067: 0x000084F0, + 16068: 0x000084EF, + 16069: 0x000084F9, + 16070: 0x00008518, + 16071: 0x00008520, + 16072: 0x00008530, + 16073: 0x0000850B, + 16074: 0x00008519, + 16075: 0x0000852F, + 16076: 0x00008662, + 16077: 0x00008756, + 16078: 0x00008763, + 16079: 0x00008764, + 16080: 0x00008777, + 16081: 0x000087E1, + 16082: 0x00008773, + 16083: 0x00008758, + 16084: 0x00008754, + 16085: 0x0000875B, + 16086: 0x00008752, + 16087: 0x00008761, + 16088: 0x0000875A, + 16089: 0x00008751, + 16090: 0x0000875E, + 16091: 0x0000876D, + 16092: 0x0000876A, + 16093: 0x00008750, + 16094: 0x0000874E, + 16095: 0x0000875F, + 16096: 0x0000875D, + 16097: 0x0000876F, + 16098: 0x0000876C, + 16099: 0x0000877A, + 16100: 0x0000876E, + 16101: 0x0000875C, + 16102: 0x00008765, + 16103: 0x0000874F, + 16104: 0x0000877B, + 16105: 0x00008775, + 16106: 0x00008762, + 16107: 0x00008767, + 16108: 0x00008769, + 16109: 0x0000885A, + 16110: 0x00008905, + 16111: 0x0000890C, + 16112: 0x00008914, + 16113: 0x0000890B, + 16114: 0x00008917, + 16115: 0x00008918, + 16116: 0x00008919, + 16117: 0x00008906, + 16118: 0x00008916, + 16119: 0x00008911, + 16120: 0x0000890E, + 16121: 0x00008909, + 16122: 0x000089A2, + 16123: 0x000089A4, + 16124: 0x000089A3, + 16125: 0x000089ED, + 16126: 0x000089F0, + 16127: 0x000089EC, + 16128: 0x00008ACF, + 16129: 0x00008AC6, + 16130: 0x00008AB8, + 16131: 0x00008AD3, + 16132: 0x00008AD1, + 16133: 0x00008AD4, + 16134: 0x00008AD5, + 16135: 0x00008ABB, + 16136: 0x00008AD7, + 16137: 0x00008ABE, + 16138: 0x00008AC0, + 16139: 0x00008AC5, + 16140: 0x00008AD8, + 16141: 0x00008AC3, + 16142: 0x00008ABA, + 16143: 0x00008ABD, + 16144: 0x00008AD9, + 16145: 0x00008C3E, + 16146: 0x00008C4D, + 16147: 0x00008C8F, + 16148: 0x00008CE5, + 16149: 0x00008CDF, + 16150: 0x00008CD9, + 16151: 0x00008CE8, + 16152: 0x00008CDA, + 16153: 0x00008CDD, + 16154: 0x00008CE7, + 16155: 0x00008DA0, + 16156: 0x00008D9C, + 16157: 0x00008DA1, + 16158: 0x00008D9B, + 16159: 0x00008E20, + 16160: 0x00008E23, + 16161: 0x00008E25, + 16162: 0x00008E24, + 16163: 0x00008E2E, + 16164: 0x00008E15, + 16165: 0x00008E1B, + 16166: 0x00008E16, + 16167: 0x00008E11, + 16168: 0x00008E19, + 16169: 0x00008E26, + 16170: 0x00008E27, + 16171: 0x00008E14, + 16172: 0x00008E12, + 16173: 0x00008E18, + 16174: 0x00008E13, + 16175: 0x00008E1C, + 16176: 0x00008E17, + 16177: 0x00008E1A, + 16178: 0x00008F2C, + 16179: 0x00008F24, + 16180: 0x00008F18, + 16181: 0x00008F1A, + 16182: 0x00008F20, + 16183: 0x00008F23, + 16184: 0x00008F16, + 16185: 0x00008F17, + 16186: 0x00009073, + 16187: 0x00009070, + 16188: 0x0000906F, + 16189: 0x00009067, + 16190: 0x0000906B, + 16191: 0x0000912F, + 16192: 0x0000912B, + 16193: 0x00009129, + 16194: 0x0000912A, + 16195: 0x00009132, + 16196: 0x00009126, + 16197: 0x0000912E, + 16198: 0x00009185, + 16199: 0x00009186, + 16200: 0x0000918A, + 16201: 0x00009181, + 16202: 0x00009182, + 16203: 0x00009184, + 16204: 0x00009180, + 16205: 0x000092D0, + 16206: 0x000092C3, + 16207: 0x000092C4, + 16208: 0x000092C0, + 16209: 0x000092D9, + 16210: 0x000092B6, + 16211: 0x000092CF, + 16212: 0x000092F1, + 16213: 0x000092DF, + 16214: 0x000092D8, + 16215: 0x000092E9, + 16216: 0x000092D7, + 16217: 0x000092DD, + 16218: 0x000092CC, + 16219: 0x000092EF, + 16220: 0x000092C2, + 16221: 0x000092E8, + 16222: 0x000092CA, + 16223: 0x000092C8, + 16224: 0x000092CE, + 16225: 0x000092E6, + 16226: 0x000092CD, + 16227: 0x000092D5, + 16228: 0x000092C9, + 16229: 0x000092E0, + 16230: 0x000092DE, + 16231: 0x000092E7, + 16232: 0x000092D1, + 16233: 0x000092D3, + 16234: 0x000092B5, + 16235: 0x000092E1, + 16236: 0x000092C6, + 16237: 0x000092B4, + 16238: 0x0000957C, + 16239: 0x000095AC, + 16240: 0x000095AB, + 16241: 0x000095AE, + 16242: 0x000095B0, + 16243: 0x000096A4, + 16244: 0x000096A2, + 16245: 0x000096D3, + 16246: 0x00009705, + 16247: 0x00009708, + 16248: 0x00009702, + 16249: 0x0000975A, + 16250: 0x0000978A, + 16251: 0x0000978E, + 16252: 0x00009788, + 16253: 0x000097D0, + 16254: 0x000097CF, + 16255: 0x0000981E, + 16256: 0x0000981D, + 16257: 0x00009826, + 16258: 0x00009829, + 16259: 0x00009828, + 16260: 0x00009820, + 16261: 0x0000981B, + 16262: 0x00009827, + 16263: 0x000098B2, + 16264: 0x00009908, + 16265: 0x000098FA, + 16266: 0x00009911, + 16267: 0x00009914, + 16268: 0x00009916, + 16269: 0x00009917, + 16270: 0x00009915, + 16271: 0x000099DC, + 16272: 0x000099CD, + 16273: 0x000099CF, + 16274: 0x000099D3, + 16275: 0x000099D4, + 16276: 0x000099CE, + 16277: 0x000099C9, + 16278: 0x000099D6, + 16279: 0x000099D8, + 16280: 0x000099CB, + 16281: 0x000099D7, + 16282: 0x000099CC, + 16283: 0x00009AB3, + 16284: 0x00009AEC, + 16285: 0x00009AEB, + 16286: 0x00009AF3, + 16287: 0x00009AF2, + 16288: 0x00009AF1, + 16289: 0x00009B46, + 16290: 0x00009B43, + 16291: 0x00009B67, + 16292: 0x00009B74, + 16293: 0x00009B71, + 16294: 0x00009B66, + 16295: 0x00009B76, + 16296: 0x00009B75, + 16297: 0x00009B70, + 16298: 0x00009B68, + 16299: 0x00009B64, + 16300: 0x00009B6C, + 16301: 0x00009CFC, + 16302: 0x00009CFA, + 16303: 0x00009CFD, + 16304: 0x00009CFF, + 16305: 0x00009CF7, + 16306: 0x00009D07, + 16307: 0x00009D00, + 16308: 0x00009CF9, + 16309: 0x00009CFB, + 16310: 0x00009D08, + 16311: 0x00009D05, + 16312: 0x00009D04, + 16313: 0x00009E83, + 16314: 0x00009ED3, + 16315: 0x00009F0F, + 16316: 0x00009F10, + 16317: 0x0000511C, + 16318: 0x00005113, + 16319: 0x00005117, + 16320: 0x0000511A, + 16321: 0x00005111, + 16322: 0x000051DE, + 16323: 0x00005334, + 16324: 0x000053E1, + 16325: 0x00005670, + 16326: 0x00005660, + 16327: 0x0000566E, + 16328: 0x00005673, + 16329: 0x00005666, + 16330: 0x00005663, + 16331: 0x0000566D, + 16332: 0x00005672, + 16333: 0x0000565E, + 16334: 0x00005677, + 16335: 0x0000571C, + 16336: 0x0000571B, + 16337: 0x000058C8, + 16338: 0x000058BD, + 16339: 0x000058C9, + 16340: 0x000058BF, + 16341: 0x000058BA, + 16342: 0x000058C2, + 16343: 0x000058BC, + 16344: 0x000058C6, + 16345: 0x00005B17, + 16346: 0x00005B19, + 16347: 0x00005B1B, + 16348: 0x00005B21, + 16349: 0x00005B14, + 16350: 0x00005B13, + 16351: 0x00005B10, + 16352: 0x00005B16, + 16353: 0x00005B28, + 16354: 0x00005B1A, + 16355: 0x00005B20, + 16356: 0x00005B1E, + 16357: 0x00005BEF, + 16358: 0x00005DAC, + 16359: 0x00005DB1, + 16360: 0x00005DA9, + 16361: 0x00005DA7, + 16362: 0x00005DB5, + 16363: 0x00005DB0, + 16364: 0x00005DAE, + 16365: 0x00005DAA, + 16366: 0x00005DA8, + 16367: 0x00005DB2, + 16368: 0x00005DAD, + 16369: 0x00005DAF, + 16370: 0x00005DB4, + 16371: 0x00005E67, + 16372: 0x00005E68, + 16373: 0x00005E66, + 16374: 0x00005E6F, + 16375: 0x00005EE9, + 16376: 0x00005EE7, + 16377: 0x00005EE6, + 16378: 0x00005EE8, + 16379: 0x00005EE5, + 16380: 0x00005F4B, + 16381: 0x00005FBC, + 16382: 0x0000619D, + 16383: 0x000061A8, + 16384: 0x00006196, + 16385: 0x000061C5, + 16386: 0x000061B4, + 16387: 0x000061C6, + 16388: 0x000061C1, + 16389: 0x000061CC, + 16390: 0x000061BA, + 16391: 0x000061BF, + 16392: 0x000061B8, + 16393: 0x0000618C, + 16394: 0x000064D7, + 16395: 0x000064D6, + 16396: 0x000064D0, + 16397: 0x000064CF, + 16398: 0x000064C9, + 16399: 0x000064BD, + 16400: 0x00006489, + 16401: 0x000064C3, + 16402: 0x000064DB, + 16403: 0x000064F3, + 16404: 0x000064D9, + 16405: 0x00006533, + 16406: 0x0000657F, + 16407: 0x0000657C, + 16408: 0x000065A2, + 16409: 0x000066C8, + 16410: 0x000066BE, + 16411: 0x000066C0, + 16412: 0x000066CA, + 16413: 0x000066CB, + 16414: 0x000066CF, + 16415: 0x000066BD, + 16416: 0x000066BB, + 16417: 0x000066BA, + 16418: 0x000066CC, + 16419: 0x00006723, + 16420: 0x00006A34, + 16421: 0x00006A66, + 16422: 0x00006A49, + 16423: 0x00006A67, + 16424: 0x00006A32, + 16425: 0x00006A68, + 16426: 0x00006A3E, + 16427: 0x00006A5D, + 16428: 0x00006A6D, + 16429: 0x00006A76, + 16430: 0x00006A5B, + 16431: 0x00006A51, + 16432: 0x00006A28, + 16433: 0x00006A5A, + 16434: 0x00006A3B, + 16435: 0x00006A3F, + 16436: 0x00006A41, + 16437: 0x00006A6A, + 16438: 0x00006A64, + 16439: 0x00006A50, + 16440: 0x00006A4F, + 16441: 0x00006A54, + 16442: 0x00006A6F, + 16443: 0x00006A69, + 16444: 0x00006A60, + 16445: 0x00006A3C, + 16446: 0x00006A5E, + 16447: 0x00006A56, + 16448: 0x00006A55, + 16449: 0x00006A4D, + 16450: 0x00006A4E, + 16451: 0x00006A46, + 16452: 0x00006B55, + 16453: 0x00006B54, + 16454: 0x00006B56, + 16455: 0x00006BA7, + 16456: 0x00006BAA, + 16457: 0x00006BAB, + 16458: 0x00006BC8, + 16459: 0x00006BC7, + 16460: 0x00006C04, + 16461: 0x00006C03, + 16462: 0x00006C06, + 16463: 0x00006FAD, + 16464: 0x00006FCB, + 16465: 0x00006FA3, + 16466: 0x00006FC7, + 16467: 0x00006FBC, + 16468: 0x00006FCE, + 16469: 0x00006FC8, + 16470: 0x00006F5E, + 16471: 0x00006FC4, + 16472: 0x00006FBD, + 16473: 0x00006F9E, + 16474: 0x00006FCA, + 16475: 0x00006FA8, + 16476: 0x00007004, + 16477: 0x00006FA5, + 16478: 0x00006FAE, + 16479: 0x00006FBA, + 16480: 0x00006FAC, + 16481: 0x00006FAA, + 16482: 0x00006FCF, + 16483: 0x00006FBF, + 16484: 0x00006FB8, + 16485: 0x00006FA2, + 16486: 0x00006FC9, + 16487: 0x00006FAB, + 16488: 0x00006FCD, + 16489: 0x00006FAF, + 16490: 0x00006FB2, + 16491: 0x00006FB0, + 16492: 0x000071C5, + 16493: 0x000071C2, + 16494: 0x000071BF, + 16495: 0x000071B8, + 16496: 0x000071D6, + 16497: 0x000071C0, + 16498: 0x000071C1, + 16499: 0x000071CB, + 16500: 0x000071D4, + 16501: 0x000071CA, + 16502: 0x000071C7, + 16503: 0x000071CF, + 16504: 0x000071BD, + 16505: 0x000071D8, + 16506: 0x000071BC, + 16507: 0x000071C6, + 16508: 0x000071DA, + 16509: 0x000071DB, + 16510: 0x0000729D, + 16511: 0x0000729E, + 16512: 0x00007369, + 16513: 0x00007366, + 16514: 0x00007367, + 16515: 0x0000736C, + 16516: 0x00007365, + 16517: 0x0000736B, + 16518: 0x0000736A, + 16519: 0x0000747F, + 16520: 0x0000749A, + 16521: 0x000074A0, + 16522: 0x00007494, + 16523: 0x00007492, + 16524: 0x00007495, + 16525: 0x000074A1, + 16526: 0x0000750B, + 16527: 0x00007580, + 16528: 0x0000762F, + 16529: 0x0000762D, + 16530: 0x00007631, + 16531: 0x0000763D, + 16532: 0x00007633, + 16533: 0x0000763C, + 16534: 0x00007635, + 16535: 0x00007632, + 16536: 0x00007630, + 16537: 0x000076BB, + 16538: 0x000076E6, + 16539: 0x0000779A, + 16540: 0x0000779D, + 16541: 0x000077A1, + 16542: 0x0000779C, + 16543: 0x0000779B, + 16544: 0x000077A2, + 16545: 0x000077A3, + 16546: 0x00007795, + 16547: 0x00007799, + 16548: 0x00007797, + 16549: 0x000078DD, + 16550: 0x000078E9, + 16551: 0x000078E5, + 16552: 0x000078EA, + 16553: 0x000078DE, + 16554: 0x000078E3, + 16555: 0x000078DB, + 16556: 0x000078E1, + 16557: 0x000078E2, + 16558: 0x000078ED, + 16559: 0x000078DF, + 16560: 0x000078E0, + 16561: 0x000079A4, + 16562: 0x00007A44, + 16563: 0x00007A48, + 16564: 0x00007A47, + 16565: 0x00007AB6, + 16566: 0x00007AB8, + 16567: 0x00007AB5, + 16568: 0x00007AB1, + 16569: 0x00007AB7, + 16570: 0x00007BDE, + 16571: 0x00007BE3, + 16572: 0x00007BE7, + 16573: 0x00007BDD, + 16574: 0x00007BD5, + 16575: 0x00007BE5, + 16576: 0x00007BDA, + 16577: 0x00007BE8, + 16578: 0x00007BF9, + 16579: 0x00007BD4, + 16580: 0x00007BEA, + 16581: 0x00007BE2, + 16582: 0x00007BDC, + 16583: 0x00007BEB, + 16584: 0x00007BD8, + 16585: 0x00007BDF, + 16586: 0x00007CD2, + 16587: 0x00007CD4, + 16588: 0x00007CD7, + 16589: 0x00007CD0, + 16590: 0x00007CD1, + 16591: 0x00007E12, + 16592: 0x00007E21, + 16593: 0x00007E17, + 16594: 0x00007E0C, + 16595: 0x00007E1F, + 16596: 0x00007E20, + 16597: 0x00007E13, + 16598: 0x00007E0E, + 16599: 0x00007E1C, + 16600: 0x00007E15, + 16601: 0x00007E1A, + 16602: 0x00007E22, + 16603: 0x00007E0B, + 16604: 0x00007E0F, + 16605: 0x00007E16, + 16606: 0x00007E0D, + 16607: 0x00007E14, + 16608: 0x00007E25, + 16609: 0x00007E24, + 16610: 0x00007F43, + 16611: 0x00007F7B, + 16612: 0x00007F7C, + 16613: 0x00007F7A, + 16614: 0x00007FB1, + 16615: 0x00007FEF, + 16616: 0x0000802A, + 16617: 0x00008029, + 16618: 0x0000806C, + 16619: 0x000081B1, + 16620: 0x000081A6, + 16621: 0x000081AE, + 16622: 0x000081B9, + 16623: 0x000081B5, + 16624: 0x000081AB, + 16625: 0x000081B0, + 16626: 0x000081AC, + 16627: 0x000081B4, + 16628: 0x000081B2, + 16629: 0x000081B7, + 16630: 0x000081A7, + 16631: 0x000081F2, + 16632: 0x00008255, + 16633: 0x00008256, + 16634: 0x00008257, + 16635: 0x00008556, + 16636: 0x00008545, + 16637: 0x0000856B, + 16638: 0x0000854D, + 16639: 0x00008553, + 16640: 0x00008561, + 16641: 0x00008558, + 16642: 0x00008540, + 16643: 0x00008546, + 16644: 0x00008564, + 16645: 0x00008541, + 16646: 0x00008562, + 16647: 0x00008544, + 16648: 0x00008551, + 16649: 0x00008547, + 16650: 0x00008563, + 16651: 0x0000853E, + 16652: 0x0000855B, + 16653: 0x00008571, + 16654: 0x0000854E, + 16655: 0x0000856E, + 16656: 0x00008575, + 16657: 0x00008555, + 16658: 0x00008567, + 16659: 0x00008560, + 16660: 0x0000858C, + 16661: 0x00008566, + 16662: 0x0000855D, + 16663: 0x00008554, + 16664: 0x00008565, + 16665: 0x0000856C, + 16666: 0x00008663, + 16667: 0x00008665, + 16668: 0x00008664, + 16669: 0x0000879B, + 16670: 0x0000878F, + 16671: 0x00008797, + 16672: 0x00008793, + 16673: 0x00008792, + 16674: 0x00008788, + 16675: 0x00008781, + 16676: 0x00008796, + 16677: 0x00008798, + 16678: 0x00008779, + 16679: 0x00008787, + 16680: 0x000087A3, + 16681: 0x00008785, + 16682: 0x00008790, + 16683: 0x00008791, + 16684: 0x0000879D, + 16685: 0x00008784, + 16686: 0x00008794, + 16687: 0x0000879C, + 16688: 0x0000879A, + 16689: 0x00008789, + 16690: 0x0000891E, + 16691: 0x00008926, + 16692: 0x00008930, + 16693: 0x0000892D, + 16694: 0x0000892E, + 16695: 0x00008927, + 16696: 0x00008931, + 16697: 0x00008922, + 16698: 0x00008929, + 16699: 0x00008923, + 16700: 0x0000892F, + 16701: 0x0000892C, + 16702: 0x0000891F, + 16703: 0x000089F1, + 16704: 0x00008AE0, + 16705: 0x00008AE2, + 16706: 0x00008AF2, + 16707: 0x00008AF4, + 16708: 0x00008AF5, + 16709: 0x00008ADD, + 16710: 0x00008B14, + 16711: 0x00008AE4, + 16712: 0x00008ADF, + 16713: 0x00008AF0, + 16714: 0x00008AC8, + 16715: 0x00008ADE, + 16716: 0x00008AE1, + 16717: 0x00008AE8, + 16718: 0x00008AFF, + 16719: 0x00008AEF, + 16720: 0x00008AFB, + 16721: 0x00008C91, + 16722: 0x00008C92, + 16723: 0x00008C90, + 16724: 0x00008CF5, + 16725: 0x00008CEE, + 16726: 0x00008CF1, + 16727: 0x00008CF0, + 16728: 0x00008CF3, + 16729: 0x00008D6C, + 16730: 0x00008D6E, + 16731: 0x00008DA5, + 16732: 0x00008DA7, + 16733: 0x00008E33, + 16734: 0x00008E3E, + 16735: 0x00008E38, + 16736: 0x00008E40, + 16737: 0x00008E45, + 16738: 0x00008E36, + 16739: 0x00008E3C, + 16740: 0x00008E3D, + 16741: 0x00008E41, + 16742: 0x00008E30, + 16743: 0x00008E3F, + 16744: 0x00008EBD, + 16745: 0x00008F36, + 16746: 0x00008F2E, + 16747: 0x00008F35, + 16748: 0x00008F32, + 16749: 0x00008F39, + 16750: 0x00008F37, + 16751: 0x00008F34, + 16752: 0x00009076, + 16753: 0x00009079, + 16754: 0x0000907B, + 16755: 0x00009086, + 16756: 0x000090FA, + 16757: 0x00009133, + 16758: 0x00009135, + 16759: 0x00009136, + 16760: 0x00009193, + 16761: 0x00009190, + 16762: 0x00009191, + 16763: 0x0000918D, + 16764: 0x0000918F, + 16765: 0x00009327, + 16766: 0x0000931E, + 16767: 0x00009308, + 16768: 0x0000931F, + 16769: 0x00009306, + 16770: 0x0000930F, + 16771: 0x0000937A, + 16772: 0x00009338, + 16773: 0x0000933C, + 16774: 0x0000931B, + 16775: 0x00009323, + 16776: 0x00009312, + 16777: 0x00009301, + 16778: 0x00009346, + 16779: 0x0000932D, + 16780: 0x0000930E, + 16781: 0x0000930D, + 16782: 0x000092CB, + 16783: 0x0000931D, + 16784: 0x000092FA, + 16785: 0x00009325, + 16786: 0x00009313, + 16787: 0x000092F9, + 16788: 0x000092F7, + 16789: 0x00009334, + 16790: 0x00009302, + 16791: 0x00009324, + 16792: 0x000092FF, + 16793: 0x00009329, + 16794: 0x00009339, + 16795: 0x00009335, + 16796: 0x0000932A, + 16797: 0x00009314, + 16798: 0x0000930C, + 16799: 0x0000930B, + 16800: 0x000092FE, + 16801: 0x00009309, + 16802: 0x00009300, + 16803: 0x000092FB, + 16804: 0x00009316, + 16805: 0x000095BC, + 16806: 0x000095CD, + 16807: 0x000095BE, + 16808: 0x000095B9, + 16809: 0x000095BA, + 16810: 0x000095B6, + 16811: 0x000095BF, + 16812: 0x000095B5, + 16813: 0x000095BD, + 16814: 0x000096A9, + 16815: 0x000096D4, + 16816: 0x0000970B, + 16817: 0x00009712, + 16818: 0x00009710, + 16819: 0x00009799, + 16820: 0x00009797, + 16821: 0x00009794, + 16822: 0x000097F0, + 16823: 0x000097F8, + 16824: 0x00009835, + 16825: 0x0000982F, + 16826: 0x00009832, + 16827: 0x00009924, + 16828: 0x0000991F, + 16829: 0x00009927, + 16830: 0x00009929, + 16831: 0x0000999E, + 16832: 0x000099EE, + 16833: 0x000099EC, + 16834: 0x000099E5, + 16835: 0x000099E4, + 16836: 0x000099F0, + 16837: 0x000099E3, + 16838: 0x000099EA, + 16839: 0x000099E9, + 16840: 0x000099E7, + 16841: 0x00009AB9, + 16842: 0x00009ABF, + 16843: 0x00009AB4, + 16844: 0x00009ABB, + 16845: 0x00009AF6, + 16846: 0x00009AFA, + 16847: 0x00009AF9, + 16848: 0x00009AF7, + 16849: 0x00009B33, + 16850: 0x00009B80, + 16851: 0x00009B85, + 16852: 0x00009B87, + 16853: 0x00009B7C, + 16854: 0x00009B7E, + 16855: 0x00009B7B, + 16856: 0x00009B82, + 16857: 0x00009B93, + 16858: 0x00009B92, + 16859: 0x00009B90, + 16860: 0x00009B7A, + 16861: 0x00009B95, + 16862: 0x00009B7D, + 16863: 0x00009B88, + 16864: 0x00009D25, + 16865: 0x00009D17, + 16866: 0x00009D20, + 16867: 0x00009D1E, + 16868: 0x00009D14, + 16869: 0x00009D29, + 16870: 0x00009D1D, + 16871: 0x00009D18, + 16872: 0x00009D22, + 16873: 0x00009D10, + 16874: 0x00009D19, + 16875: 0x00009D1F, + 16876: 0x00009E88, + 16877: 0x00009E86, + 16878: 0x00009E87, + 16879: 0x00009EAE, + 16880: 0x00009EAD, + 16881: 0x00009ED5, + 16882: 0x00009ED6, + 16883: 0x00009EFA, + 16884: 0x00009F12, + 16885: 0x00009F3D, + 16886: 0x00005126, + 16887: 0x00005125, + 16888: 0x00005122, + 16889: 0x00005124, + 16890: 0x00005120, + 16891: 0x00005129, + 16892: 0x000052F4, + 16893: 0x00005693, + 16894: 0x0000568C, + 16895: 0x0000568D, + 16896: 0x00005686, + 16897: 0x00005684, + 16898: 0x00005683, + 16899: 0x0000567E, + 16900: 0x00005682, + 16901: 0x0000567F, + 16902: 0x00005681, + 16903: 0x000058D6, + 16904: 0x000058D4, + 16905: 0x000058CF, + 16906: 0x000058D2, + 16907: 0x00005B2D, + 16908: 0x00005B25, + 16909: 0x00005B32, + 16910: 0x00005B23, + 16911: 0x00005B2C, + 16912: 0x00005B27, + 16913: 0x00005B26, + 16914: 0x00005B2F, + 16915: 0x00005B2E, + 16916: 0x00005B7B, + 16917: 0x00005BF1, + 16918: 0x00005BF2, + 16919: 0x00005DB7, + 16920: 0x00005E6C, + 16921: 0x00005E6A, + 16922: 0x00005FBE, + 16923: 0x00005FBB, + 16924: 0x000061C3, + 16925: 0x000061B5, + 16926: 0x000061BC, + 16927: 0x000061E7, + 16928: 0x000061E0, + 16929: 0x000061E5, + 16930: 0x000061E4, + 16931: 0x000061E8, + 16932: 0x000061DE, + 16933: 0x000064EF, + 16934: 0x000064E9, + 16935: 0x000064E3, + 16936: 0x000064EB, + 16937: 0x000064E4, + 16938: 0x000064E8, + 16939: 0x00006581, + 16940: 0x00006580, + 16941: 0x000065B6, + 16942: 0x000065DA, + 16943: 0x000066D2, + 16944: 0x00006A8D, + 16945: 0x00006A96, + 16946: 0x00006A81, + 16947: 0x00006AA5, + 16948: 0x00006A89, + 16949: 0x00006A9F, + 16950: 0x00006A9B, + 16951: 0x00006AA1, + 16952: 0x00006A9E, + 16953: 0x00006A87, + 16954: 0x00006A93, + 16955: 0x00006A8E, + 16956: 0x00006A95, + 16957: 0x00006A83, + 16958: 0x00006AA8, + 16959: 0x00006AA4, + 16960: 0x00006A91, + 16961: 0x00006A7F, + 16962: 0x00006AA6, + 16963: 0x00006A9A, + 16964: 0x00006A85, + 16965: 0x00006A8C, + 16966: 0x00006A92, + 16967: 0x00006B5B, + 16968: 0x00006BAD, + 16969: 0x00006C09, + 16970: 0x00006FCC, + 16971: 0x00006FA9, + 16972: 0x00006FF4, + 16973: 0x00006FD4, + 16974: 0x00006FE3, + 16975: 0x00006FDC, + 16976: 0x00006FED, + 16977: 0x00006FE7, + 16978: 0x00006FE6, + 16979: 0x00006FDE, + 16980: 0x00006FF2, + 16981: 0x00006FDD, + 16982: 0x00006FE2, + 16983: 0x00006FE8, + 16984: 0x000071E1, + 16985: 0x000071F1, + 16986: 0x000071E8, + 16987: 0x000071F2, + 16988: 0x000071E4, + 16989: 0x000071F0, + 16990: 0x000071E2, + 16991: 0x00007373, + 16992: 0x0000736E, + 16993: 0x0000736F, + 16994: 0x00007497, + 16995: 0x000074B2, + 16996: 0x000074AB, + 16997: 0x00007490, + 16998: 0x000074AA, + 16999: 0x000074AD, + 17000: 0x000074B1, + 17001: 0x000074A5, + 17002: 0x000074AF, + 17003: 0x00007510, + 17004: 0x00007511, + 17005: 0x00007512, + 17006: 0x0000750F, + 17007: 0x00007584, + 17008: 0x00007643, + 17009: 0x00007648, + 17010: 0x00007649, + 17011: 0x00007647, + 17012: 0x000076A4, + 17013: 0x000076E9, + 17014: 0x000077B5, + 17015: 0x000077AB, + 17016: 0x000077B2, + 17017: 0x000077B7, + 17018: 0x000077B6, + 17019: 0x000077B4, + 17020: 0x000077B1, + 17021: 0x000077A8, + 17022: 0x000077F0, + 17023: 0x000078F3, + 17024: 0x000078FD, + 17025: 0x00007902, + 17026: 0x000078FB, + 17027: 0x000078FC, + 17028: 0x000078F2, + 17029: 0x00007905, + 17030: 0x000078F9, + 17031: 0x000078FE, + 17032: 0x00007904, + 17033: 0x000079AB, + 17034: 0x000079A8, + 17035: 0x00007A5C, + 17036: 0x00007A5B, + 17037: 0x00007A56, + 17038: 0x00007A58, + 17039: 0x00007A54, + 17040: 0x00007A5A, + 17041: 0x00007ABE, + 17042: 0x00007AC0, + 17043: 0x00007AC1, + 17044: 0x00007C05, + 17045: 0x00007C0F, + 17046: 0x00007BF2, + 17047: 0x00007C00, + 17048: 0x00007BFF, + 17049: 0x00007BFB, + 17050: 0x00007C0E, + 17051: 0x00007BF4, + 17052: 0x00007C0B, + 17053: 0x00007BF3, + 17054: 0x00007C02, + 17055: 0x00007C09, + 17056: 0x00007C03, + 17057: 0x00007C01, + 17058: 0x00007BF8, + 17059: 0x00007BFD, + 17060: 0x00007C06, + 17061: 0x00007BF0, + 17062: 0x00007BF1, + 17063: 0x00007C10, + 17064: 0x00007C0A, + 17065: 0x00007CE8, + 17066: 0x00007E2D, + 17067: 0x00007E3C, + 17068: 0x00007E42, + 17069: 0x00007E33, + 17070: 0x00009848, + 17071: 0x00007E38, + 17072: 0x00007E2A, + 17073: 0x00007E49, + 17074: 0x00007E40, + 17075: 0x00007E47, + 17076: 0x00007E29, + 17077: 0x00007E4C, + 17078: 0x00007E30, + 17079: 0x00007E3B, + 17080: 0x00007E36, + 17081: 0x00007E44, + 17082: 0x00007E3A, + 17083: 0x00007F45, + 17084: 0x00007F7F, + 17085: 0x00007F7E, + 17086: 0x00007F7D, + 17087: 0x00007FF4, + 17088: 0x00007FF2, + 17089: 0x0000802C, + 17090: 0x000081BB, + 17091: 0x000081C4, + 17092: 0x000081CC, + 17093: 0x000081CA, + 17094: 0x000081C5, + 17095: 0x000081C7, + 17096: 0x000081BC, + 17097: 0x000081E9, + 17098: 0x0000825B, + 17099: 0x0000825A, + 17100: 0x0000825C, + 17101: 0x00008583, + 17102: 0x00008580, + 17103: 0x0000858F, + 17104: 0x000085A7, + 17105: 0x00008595, + 17106: 0x000085A0, + 17107: 0x0000858B, + 17108: 0x000085A3, + 17109: 0x0000857B, + 17110: 0x000085A4, + 17111: 0x0000859A, + 17112: 0x0000859E, + 17113: 0x00008577, + 17114: 0x0000857C, + 17115: 0x00008589, + 17116: 0x000085A1, + 17117: 0x0000857A, + 17118: 0x00008578, + 17119: 0x00008557, + 17120: 0x0000858E, + 17121: 0x00008596, + 17122: 0x00008586, + 17123: 0x0000858D, + 17124: 0x00008599, + 17125: 0x0000859D, + 17126: 0x00008581, + 17127: 0x000085A2, + 17128: 0x00008582, + 17129: 0x00008588, + 17130: 0x00008585, + 17131: 0x00008579, + 17132: 0x00008576, + 17133: 0x00008598, + 17134: 0x00008590, + 17135: 0x0000859F, + 17136: 0x00008668, + 17137: 0x000087BE, + 17138: 0x000087AA, + 17139: 0x000087AD, + 17140: 0x000087C5, + 17141: 0x000087B0, + 17142: 0x000087AC, + 17143: 0x000087B9, + 17144: 0x000087B5, + 17145: 0x000087BC, + 17146: 0x000087AE, + 17147: 0x000087C9, + 17148: 0x000087C3, + 17149: 0x000087C2, + 17150: 0x000087CC, + 17151: 0x000087B7, + 17152: 0x000087AF, + 17153: 0x000087C4, + 17154: 0x000087CA, + 17155: 0x000087B4, + 17156: 0x000087B6, + 17157: 0x000087BF, + 17158: 0x000087B8, + 17159: 0x000087BD, + 17160: 0x000087DE, + 17161: 0x000087B2, + 17162: 0x00008935, + 17163: 0x00008933, + 17164: 0x0000893C, + 17165: 0x0000893E, + 17166: 0x00008941, + 17167: 0x00008952, + 17168: 0x00008937, + 17169: 0x00008942, + 17170: 0x000089AD, + 17171: 0x000089AF, + 17172: 0x000089AE, + 17173: 0x000089F2, + 17174: 0x000089F3, + 17175: 0x00008B1E, + 17176: 0x00008B18, + 17177: 0x00008B16, + 17178: 0x00008B11, + 17179: 0x00008B05, + 17180: 0x00008B0B, + 17181: 0x00008B22, + 17182: 0x00008B0F, + 17183: 0x00008B12, + 17184: 0x00008B15, + 17185: 0x00008B07, + 17186: 0x00008B0D, + 17187: 0x00008B08, + 17188: 0x00008B06, + 17189: 0x00008B1C, + 17190: 0x00008B13, + 17191: 0x00008B1A, + 17192: 0x00008C4F, + 17193: 0x00008C70, + 17194: 0x00008C72, + 17195: 0x00008C71, + 17196: 0x00008C6F, + 17197: 0x00008C95, + 17198: 0x00008C94, + 17199: 0x00008CF9, + 17200: 0x00008D6F, + 17201: 0x00008E4E, + 17202: 0x00008E4D, + 17203: 0x00008E53, + 17204: 0x00008E50, + 17205: 0x00008E4C, + 17206: 0x00008E47, + 17207: 0x00008F43, + 17208: 0x00008F40, + 17209: 0x00009085, + 17210: 0x0000907E, + 17211: 0x00009138, + 17212: 0x0000919A, + 17213: 0x000091A2, + 17214: 0x0000919B, + 17215: 0x00009199, + 17216: 0x0000919F, + 17217: 0x000091A1, + 17218: 0x0000919D, + 17219: 0x000091A0, + 17220: 0x000093A1, + 17221: 0x00009383, + 17222: 0x000093AF, + 17223: 0x00009364, + 17224: 0x00009356, + 17225: 0x00009347, + 17226: 0x0000937C, + 17227: 0x00009358, + 17228: 0x0000935C, + 17229: 0x00009376, + 17230: 0x00009349, + 17231: 0x00009350, + 17232: 0x00009351, + 17233: 0x00009360, + 17234: 0x0000936D, + 17235: 0x0000938F, + 17236: 0x0000934C, + 17237: 0x0000936A, + 17238: 0x00009379, + 17239: 0x00009357, + 17240: 0x00009355, + 17241: 0x00009352, + 17242: 0x0000934F, + 17243: 0x00009371, + 17244: 0x00009377, + 17245: 0x0000937B, + 17246: 0x00009361, + 17247: 0x0000935E, + 17248: 0x00009363, + 17249: 0x00009367, + 17250: 0x00009380, + 17251: 0x0000934E, + 17252: 0x00009359, + 17253: 0x000095C7, + 17254: 0x000095C0, + 17255: 0x000095C9, + 17256: 0x000095C3, + 17257: 0x000095C5, + 17258: 0x000095B7, + 17259: 0x000096AE, + 17260: 0x000096B0, + 17261: 0x000096AC, + 17262: 0x00009720, + 17263: 0x0000971F, + 17264: 0x00009718, + 17265: 0x0000971D, + 17266: 0x00009719, + 17267: 0x0000979A, + 17268: 0x000097A1, + 17269: 0x0000979C, + 17270: 0x0000979E, + 17271: 0x0000979D, + 17272: 0x000097D5, + 17273: 0x000097D4, + 17274: 0x000097F1, + 17275: 0x00009841, + 17276: 0x00009844, + 17277: 0x0000984A, + 17278: 0x00009849, + 17279: 0x00009845, + 17280: 0x00009843, + 17281: 0x00009925, + 17282: 0x0000992B, + 17283: 0x0000992C, + 17284: 0x0000992A, + 17285: 0x00009933, + 17286: 0x00009932, + 17287: 0x0000992F, + 17288: 0x0000992D, + 17289: 0x00009931, + 17290: 0x00009930, + 17291: 0x00009998, + 17292: 0x000099A3, + 17293: 0x000099A1, + 17294: 0x00009A02, + 17295: 0x000099FA, + 17296: 0x000099F4, + 17297: 0x000099F7, + 17298: 0x000099F9, + 17299: 0x000099F8, + 17300: 0x000099F6, + 17301: 0x000099FB, + 17302: 0x000099FD, + 17303: 0x000099FE, + 17304: 0x000099FC, + 17305: 0x00009A03, + 17306: 0x00009ABE, + 17307: 0x00009AFE, + 17308: 0x00009AFD, + 17309: 0x00009B01, + 17310: 0x00009AFC, + 17311: 0x00009B48, + 17312: 0x00009B9A, + 17313: 0x00009BA8, + 17314: 0x00009B9E, + 17315: 0x00009B9B, + 17316: 0x00009BA6, + 17317: 0x00009BA1, + 17318: 0x00009BA5, + 17319: 0x00009BA4, + 17320: 0x00009B86, + 17321: 0x00009BA2, + 17322: 0x00009BA0, + 17323: 0x00009BAF, + 17324: 0x00009D33, + 17325: 0x00009D41, + 17326: 0x00009D67, + 17327: 0x00009D36, + 17328: 0x00009D2E, + 17329: 0x00009D2F, + 17330: 0x00009D31, + 17331: 0x00009D38, + 17332: 0x00009D30, + 17333: 0x00009D45, + 17334: 0x00009D42, + 17335: 0x00009D43, + 17336: 0x00009D3E, + 17337: 0x00009D37, + 17338: 0x00009D40, + 17339: 0x00009D3D, + 17340: 0x00007FF5, + 17341: 0x00009D2D, + 17342: 0x00009E8A, + 17343: 0x00009E89, + 17344: 0x00009E8D, + 17345: 0x00009EB0, + 17346: 0x00009EC8, + 17347: 0x00009EDA, + 17348: 0x00009EFB, + 17349: 0x00009EFF, + 17350: 0x00009F24, + 17351: 0x00009F23, + 17352: 0x00009F22, + 17353: 0x00009F54, + 17354: 0x00009FA0, + 17355: 0x00005131, + 17356: 0x0000512D, + 17357: 0x0000512E, + 17358: 0x00005698, + 17359: 0x0000569C, + 17360: 0x00005697, + 17361: 0x0000569A, + 17362: 0x0000569D, + 17363: 0x00005699, + 17364: 0x00005970, + 17365: 0x00005B3C, + 17366: 0x00005C69, + 17367: 0x00005C6A, + 17368: 0x00005DC0, + 17369: 0x00005E6D, + 17370: 0x00005E6E, + 17371: 0x000061D8, + 17372: 0x000061DF, + 17373: 0x000061ED, + 17374: 0x000061EE, + 17375: 0x000061F1, + 17376: 0x000061EA, + 17377: 0x000061F0, + 17378: 0x000061EB, + 17379: 0x000061D6, + 17380: 0x000061E9, + 17381: 0x000064FF, + 17382: 0x00006504, + 17383: 0x000064FD, + 17384: 0x000064F8, + 17385: 0x00006501, + 17386: 0x00006503, + 17387: 0x000064FC, + 17388: 0x00006594, + 17389: 0x000065DB, + 17390: 0x000066DA, + 17391: 0x000066DB, + 17392: 0x000066D8, + 17393: 0x00006AC5, + 17394: 0x00006AB9, + 17395: 0x00006ABD, + 17396: 0x00006AE1, + 17397: 0x00006AC6, + 17398: 0x00006ABA, + 17399: 0x00006AB6, + 17400: 0x00006AB7, + 17401: 0x00006AC7, + 17402: 0x00006AB4, + 17403: 0x00006AAD, + 17404: 0x00006B5E, + 17405: 0x00006BC9, + 17406: 0x00006C0B, + 17407: 0x00007007, + 17408: 0x0000700C, + 17409: 0x0000700D, + 17410: 0x00007001, + 17411: 0x00007005, + 17412: 0x00007014, + 17413: 0x0000700E, + 17414: 0x00006FFF, + 17415: 0x00007000, + 17416: 0x00006FFB, + 17417: 0x00007026, + 17418: 0x00006FFC, + 17419: 0x00006FF7, + 17420: 0x0000700A, + 17421: 0x00007201, + 17422: 0x000071FF, + 17423: 0x000071F9, + 17424: 0x00007203, + 17425: 0x000071FD, + 17426: 0x00007376, + 17427: 0x000074B8, + 17428: 0x000074C0, + 17429: 0x000074B5, + 17430: 0x000074C1, + 17431: 0x000074BE, + 17432: 0x000074B6, + 17433: 0x000074BB, + 17434: 0x000074C2, + 17435: 0x00007514, + 17436: 0x00007513, + 17437: 0x0000765C, + 17438: 0x00007664, + 17439: 0x00007659, + 17440: 0x00007650, + 17441: 0x00007653, + 17442: 0x00007657, + 17443: 0x0000765A, + 17444: 0x000076A6, + 17445: 0x000076BD, + 17446: 0x000076EC, + 17447: 0x000077C2, + 17448: 0x000077BA, + 17449: 0x000078FF, + 17450: 0x0000790C, + 17451: 0x00007913, + 17452: 0x00007914, + 17453: 0x00007909, + 17454: 0x00007910, + 17455: 0x00007912, + 17456: 0x00007911, + 17457: 0x000079AD, + 17458: 0x000079AC, + 17459: 0x00007A5F, + 17460: 0x00007C1C, + 17461: 0x00007C29, + 17462: 0x00007C19, + 17463: 0x00007C20, + 17464: 0x00007C1F, + 17465: 0x00007C2D, + 17466: 0x00007C1D, + 17467: 0x00007C26, + 17468: 0x00007C28, + 17469: 0x00007C22, + 17470: 0x00007C25, + 17471: 0x00007C30, + 17472: 0x00007E5C, + 17473: 0x00007E50, + 17474: 0x00007E56, + 17475: 0x00007E63, + 17476: 0x00007E58, + 17477: 0x00007E62, + 17478: 0x00007E5F, + 17479: 0x00007E51, + 17480: 0x00007E60, + 17481: 0x00007E57, + 17482: 0x00007E53, + 17483: 0x00007FB5, + 17484: 0x00007FB3, + 17485: 0x00007FF7, + 17486: 0x00007FF8, + 17487: 0x00008075, + 17488: 0x000081D1, + 17489: 0x000081D2, + 17490: 0x000081D0, + 17491: 0x0000825F, + 17492: 0x0000825E, + 17493: 0x000085B4, + 17494: 0x000085C6, + 17495: 0x000085C0, + 17496: 0x000085C3, + 17497: 0x000085C2, + 17498: 0x000085B3, + 17499: 0x000085B5, + 17500: 0x000085BD, + 17501: 0x000085C7, + 17502: 0x000085C4, + 17503: 0x000085BF, + 17504: 0x000085CB, + 17505: 0x000085CE, + 17506: 0x000085C8, + 17507: 0x000085C5, + 17508: 0x000085B1, + 17509: 0x000085B6, + 17510: 0x000085D2, + 17511: 0x00008624, + 17512: 0x000085B8, + 17513: 0x000085B7, + 17514: 0x000085BE, + 17515: 0x00008669, + 17516: 0x000087E7, + 17517: 0x000087E6, + 17518: 0x000087E2, + 17519: 0x000087DB, + 17520: 0x000087EB, + 17521: 0x000087EA, + 17522: 0x000087E5, + 17523: 0x000087DF, + 17524: 0x000087F3, + 17525: 0x000087E4, + 17526: 0x000087D4, + 17527: 0x000087DC, + 17528: 0x000087D3, + 17529: 0x000087ED, + 17530: 0x000087D8, + 17531: 0x000087E3, + 17532: 0x000087A4, + 17533: 0x000087D7, + 17534: 0x000087D9, + 17535: 0x00008801, + 17536: 0x000087F4, + 17537: 0x000087E8, + 17538: 0x000087DD, + 17539: 0x00008953, + 17540: 0x0000894B, + 17541: 0x0000894F, + 17542: 0x0000894C, + 17543: 0x00008946, + 17544: 0x00008950, + 17545: 0x00008951, + 17546: 0x00008949, + 17547: 0x00008B2A, + 17548: 0x00008B27, + 17549: 0x00008B23, + 17550: 0x00008B33, + 17551: 0x00008B30, + 17552: 0x00008B35, + 17553: 0x00008B47, + 17554: 0x00008B2F, + 17555: 0x00008B3C, + 17556: 0x00008B3E, + 17557: 0x00008B31, + 17558: 0x00008B25, + 17559: 0x00008B37, + 17560: 0x00008B26, + 17561: 0x00008B36, + 17562: 0x00008B2E, + 17563: 0x00008B24, + 17564: 0x00008B3B, + 17565: 0x00008B3D, + 17566: 0x00008B3A, + 17567: 0x00008C42, + 17568: 0x00008C75, + 17569: 0x00008C99, + 17570: 0x00008C98, + 17571: 0x00008C97, + 17572: 0x00008CFE, + 17573: 0x00008D04, + 17574: 0x00008D02, + 17575: 0x00008D00, + 17576: 0x00008E5C, + 17577: 0x00008E62, + 17578: 0x00008E60, + 17579: 0x00008E57, + 17580: 0x00008E56, + 17581: 0x00008E5E, + 17582: 0x00008E65, + 17583: 0x00008E67, + 17584: 0x00008E5B, + 17585: 0x00008E5A, + 17586: 0x00008E61, + 17587: 0x00008E5D, + 17588: 0x00008E69, + 17589: 0x00008E54, + 17590: 0x00008F46, + 17591: 0x00008F47, + 17592: 0x00008F48, + 17593: 0x00008F4B, + 17594: 0x00009128, + 17595: 0x0000913A, + 17596: 0x0000913B, + 17597: 0x0000913E, + 17598: 0x000091A8, + 17599: 0x000091A5, + 17600: 0x000091A7, + 17601: 0x000091AF, + 17602: 0x000091AA, + 17603: 0x000093B5, + 17604: 0x0000938C, + 17605: 0x00009392, + 17606: 0x000093B7, + 17607: 0x0000939B, + 17608: 0x0000939D, + 17609: 0x00009389, + 17610: 0x000093A7, + 17611: 0x0000938E, + 17612: 0x000093AA, + 17613: 0x0000939E, + 17614: 0x000093A6, + 17615: 0x00009395, + 17616: 0x00009388, + 17617: 0x00009399, + 17618: 0x0000939F, + 17619: 0x0000938D, + 17620: 0x000093B1, + 17621: 0x00009391, + 17622: 0x000093B2, + 17623: 0x000093A4, + 17624: 0x000093A8, + 17625: 0x000093B4, + 17626: 0x000093A3, + 17627: 0x000093A5, + 17628: 0x000095D2, + 17629: 0x000095D3, + 17630: 0x000095D1, + 17631: 0x000096B3, + 17632: 0x000096D7, + 17633: 0x000096DA, + 17634: 0x00005DC2, + 17635: 0x000096DF, + 17636: 0x000096D8, + 17637: 0x000096DD, + 17638: 0x00009723, + 17639: 0x00009722, + 17640: 0x00009725, + 17641: 0x000097AC, + 17642: 0x000097AE, + 17643: 0x000097A8, + 17644: 0x000097AB, + 17645: 0x000097A4, + 17646: 0x000097AA, + 17647: 0x000097A2, + 17648: 0x000097A5, + 17649: 0x000097D7, + 17650: 0x000097D9, + 17651: 0x000097D6, + 17652: 0x000097D8, + 17653: 0x000097FA, + 17654: 0x00009850, + 17655: 0x00009851, + 17656: 0x00009852, + 17657: 0x000098B8, + 17658: 0x00009941, + 17659: 0x0000993C, + 17660: 0x0000993A, + 17661: 0x00009A0F, + 17662: 0x00009A0B, + 17663: 0x00009A09, + 17664: 0x00009A0D, + 17665: 0x00009A04, + 17666: 0x00009A11, + 17667: 0x00009A0A, + 17668: 0x00009A05, + 17669: 0x00009A07, + 17670: 0x00009A06, + 17671: 0x00009AC0, + 17672: 0x00009ADC, + 17673: 0x00009B08, + 17674: 0x00009B04, + 17675: 0x00009B05, + 17676: 0x00009B29, + 17677: 0x00009B35, + 17678: 0x00009B4A, + 17679: 0x00009B4C, + 17680: 0x00009B4B, + 17681: 0x00009BC7, + 17682: 0x00009BC6, + 17683: 0x00009BC3, + 17684: 0x00009BBF, + 17685: 0x00009BC1, + 17686: 0x00009BB5, + 17687: 0x00009BB8, + 17688: 0x00009BD3, + 17689: 0x00009BB6, + 17690: 0x00009BC4, + 17691: 0x00009BB9, + 17692: 0x00009BBD, + 17693: 0x00009D5C, + 17694: 0x00009D53, + 17695: 0x00009D4F, + 17696: 0x00009D4A, + 17697: 0x00009D5B, + 17698: 0x00009D4B, + 17699: 0x00009D59, + 17700: 0x00009D56, + 17701: 0x00009D4C, + 17702: 0x00009D57, + 17703: 0x00009D52, + 17704: 0x00009D54, + 17705: 0x00009D5F, + 17706: 0x00009D58, + 17707: 0x00009D5A, + 17708: 0x00009E8E, + 17709: 0x00009E8C, + 17710: 0x00009EDF, + 17711: 0x00009F01, + 17712: 0x00009F00, + 17713: 0x00009F16, + 17714: 0x00009F25, + 17715: 0x00009F2B, + 17716: 0x00009F2A, + 17717: 0x00009F29, + 17718: 0x00009F28, + 17719: 0x00009F4C, + 17720: 0x00009F55, + 17721: 0x00005134, + 17722: 0x00005135, + 17723: 0x00005296, + 17724: 0x000052F7, + 17725: 0x000053B4, + 17726: 0x000056AB, + 17727: 0x000056AD, + 17728: 0x000056A6, + 17729: 0x000056A7, + 17730: 0x000056AA, + 17731: 0x000056AC, + 17732: 0x000058DA, + 17733: 0x000058DD, + 17734: 0x000058DB, + 17735: 0x00005912, + 17736: 0x00005B3D, + 17737: 0x00005B3E, + 17738: 0x00005B3F, + 17739: 0x00005DC3, + 17740: 0x00005E70, + 17741: 0x00005FBF, + 17742: 0x000061FB, + 17743: 0x00006507, + 17744: 0x00006510, + 17745: 0x0000650D, + 17746: 0x00006509, + 17747: 0x0000650C, + 17748: 0x0000650E, + 17749: 0x00006584, + 17750: 0x000065DE, + 17751: 0x000065DD, + 17752: 0x000066DE, + 17753: 0x00006AE7, + 17754: 0x00006AE0, + 17755: 0x00006ACC, + 17756: 0x00006AD1, + 17757: 0x00006AD9, + 17758: 0x00006ACB, + 17759: 0x00006ADF, + 17760: 0x00006ADC, + 17761: 0x00006AD0, + 17762: 0x00006AEB, + 17763: 0x00006ACF, + 17764: 0x00006ACD, + 17765: 0x00006ADE, + 17766: 0x00006B60, + 17767: 0x00006BB0, + 17768: 0x00006C0C, + 17769: 0x00007019, + 17770: 0x00007027, + 17771: 0x00007020, + 17772: 0x00007016, + 17773: 0x0000702B, + 17774: 0x00007021, + 17775: 0x00007022, + 17776: 0x00007023, + 17777: 0x00007029, + 17778: 0x00007017, + 17779: 0x00007024, + 17780: 0x0000701C, + 17781: 0x0000702A, + 17782: 0x0000720C, + 17783: 0x0000720A, + 17784: 0x00007207, + 17785: 0x00007202, + 17786: 0x00007205, + 17787: 0x000072A5, + 17788: 0x000072A6, + 17789: 0x000072A4, + 17790: 0x000072A3, + 17791: 0x000072A1, + 17792: 0x000074CB, + 17793: 0x000074C5, + 17794: 0x000074B7, + 17795: 0x000074C3, + 17796: 0x00007516, + 17797: 0x00007660, + 17798: 0x000077C9, + 17799: 0x000077CA, + 17800: 0x000077C4, + 17801: 0x000077F1, + 17802: 0x0000791D, + 17803: 0x0000791B, + 17804: 0x00007921, + 17805: 0x0000791C, + 17806: 0x00007917, + 17807: 0x0000791E, + 17808: 0x000079B0, + 17809: 0x00007A67, + 17810: 0x00007A68, + 17811: 0x00007C33, + 17812: 0x00007C3C, + 17813: 0x00007C39, + 17814: 0x00007C2C, + 17815: 0x00007C3B, + 17816: 0x00007CEC, + 17817: 0x00007CEA, + 17818: 0x00007E76, + 17819: 0x00007E75, + 17820: 0x00007E78, + 17821: 0x00007E70, + 17822: 0x00007E77, + 17823: 0x00007E6F, + 17824: 0x00007E7A, + 17825: 0x00007E72, + 17826: 0x00007E74, + 17827: 0x00007E68, + 17828: 0x00007F4B, + 17829: 0x00007F4A, + 17830: 0x00007F83, + 17831: 0x00007F86, + 17832: 0x00007FB7, + 17833: 0x00007FFD, + 17834: 0x00007FFE, + 17835: 0x00008078, + 17836: 0x000081D7, + 17837: 0x000081D5, + 17838: 0x00008264, + 17839: 0x00008261, + 17840: 0x00008263, + 17841: 0x000085EB, + 17842: 0x000085F1, + 17843: 0x000085ED, + 17844: 0x000085D9, + 17845: 0x000085E1, + 17846: 0x000085E8, + 17847: 0x000085DA, + 17848: 0x000085D7, + 17849: 0x000085EC, + 17850: 0x000085F2, + 17851: 0x000085F8, + 17852: 0x000085D8, + 17853: 0x000085DF, + 17854: 0x000085E3, + 17855: 0x000085DC, + 17856: 0x000085D1, + 17857: 0x000085F0, + 17858: 0x000085E6, + 17859: 0x000085EF, + 17860: 0x000085DE, + 17861: 0x000085E2, + 17862: 0x00008800, + 17863: 0x000087FA, + 17864: 0x00008803, + 17865: 0x000087F6, + 17866: 0x000087F7, + 17867: 0x00008809, + 17868: 0x0000880C, + 17869: 0x0000880B, + 17870: 0x00008806, + 17871: 0x000087FC, + 17872: 0x00008808, + 17873: 0x000087FF, + 17874: 0x0000880A, + 17875: 0x00008802, + 17876: 0x00008962, + 17877: 0x0000895A, + 17878: 0x0000895B, + 17879: 0x00008957, + 17880: 0x00008961, + 17881: 0x0000895C, + 17882: 0x00008958, + 17883: 0x0000895D, + 17884: 0x00008959, + 17885: 0x00008988, + 17886: 0x000089B7, + 17887: 0x000089B6, + 17888: 0x000089F6, + 17889: 0x00008B50, + 17890: 0x00008B48, + 17891: 0x00008B4A, + 17892: 0x00008B40, + 17893: 0x00008B53, + 17894: 0x00008B56, + 17895: 0x00008B54, + 17896: 0x00008B4B, + 17897: 0x00008B55, + 17898: 0x00008B51, + 17899: 0x00008B42, + 17900: 0x00008B52, + 17901: 0x00008B57, + 17902: 0x00008C43, + 17903: 0x00008C77, + 17904: 0x00008C76, + 17905: 0x00008C9A, + 17906: 0x00008D06, + 17907: 0x00008D07, + 17908: 0x00008D09, + 17909: 0x00008DAC, + 17910: 0x00008DAA, + 17911: 0x00008DAD, + 17912: 0x00008DAB, + 17913: 0x00008E6D, + 17914: 0x00008E78, + 17915: 0x00008E73, + 17916: 0x00008E6A, + 17917: 0x00008E6F, + 17918: 0x00008E7B, + 17919: 0x00008EC2, + 17920: 0x00008F52, + 17921: 0x00008F51, + 17922: 0x00008F4F, + 17923: 0x00008F50, + 17924: 0x00008F53, + 17925: 0x00008FB4, + 17926: 0x00009140, + 17927: 0x0000913F, + 17928: 0x000091B0, + 17929: 0x000091AD, + 17930: 0x000093DE, + 17931: 0x000093C7, + 17932: 0x000093CF, + 17933: 0x000093C2, + 17934: 0x000093DA, + 17935: 0x000093D0, + 17936: 0x000093F9, + 17937: 0x000093EC, + 17938: 0x000093CC, + 17939: 0x000093D9, + 17940: 0x000093A9, + 17941: 0x000093E6, + 17942: 0x000093CA, + 17943: 0x000093D4, + 17944: 0x000093EE, + 17945: 0x000093E3, + 17946: 0x000093D5, + 17947: 0x000093C4, + 17948: 0x000093CE, + 17949: 0x000093C0, + 17950: 0x000093D2, + 17951: 0x000093E7, + 17952: 0x0000957D, + 17953: 0x000095DA, + 17954: 0x000095DB, + 17955: 0x000096E1, + 17956: 0x00009729, + 17957: 0x0000972B, + 17958: 0x0000972C, + 17959: 0x00009728, + 17960: 0x00009726, + 17961: 0x000097B3, + 17962: 0x000097B7, + 17963: 0x000097B6, + 17964: 0x000097DD, + 17965: 0x000097DE, + 17966: 0x000097DF, + 17967: 0x0000985C, + 17968: 0x00009859, + 17969: 0x0000985D, + 17970: 0x00009857, + 17971: 0x000098BF, + 17972: 0x000098BD, + 17973: 0x000098BB, + 17974: 0x000098BE, + 17975: 0x00009948, + 17976: 0x00009947, + 17977: 0x00009943, + 17978: 0x000099A6, + 17979: 0x000099A7, + 17980: 0x00009A1A, + 17981: 0x00009A15, + 17982: 0x00009A25, + 17983: 0x00009A1D, + 17984: 0x00009A24, + 17985: 0x00009A1B, + 17986: 0x00009A22, + 17987: 0x00009A20, + 17988: 0x00009A27, + 17989: 0x00009A23, + 17990: 0x00009A1E, + 17991: 0x00009A1C, + 17992: 0x00009A14, + 17993: 0x00009AC2, + 17994: 0x00009B0B, + 17995: 0x00009B0A, + 17996: 0x00009B0E, + 17997: 0x00009B0C, + 17998: 0x00009B37, + 17999: 0x00009BEA, + 18000: 0x00009BEB, + 18001: 0x00009BE0, + 18002: 0x00009BDE, + 18003: 0x00009BE4, + 18004: 0x00009BE6, + 18005: 0x00009BE2, + 18006: 0x00009BF0, + 18007: 0x00009BD4, + 18008: 0x00009BD7, + 18009: 0x00009BEC, + 18010: 0x00009BDC, + 18011: 0x00009BD9, + 18012: 0x00009BE5, + 18013: 0x00009BD5, + 18014: 0x00009BE1, + 18015: 0x00009BDA, + 18016: 0x00009D77, + 18017: 0x00009D81, + 18018: 0x00009D8A, + 18019: 0x00009D84, + 18020: 0x00009D88, + 18021: 0x00009D71, + 18022: 0x00009D80, + 18023: 0x00009D78, + 18024: 0x00009D86, + 18025: 0x00009D8B, + 18026: 0x00009D8C, + 18027: 0x00009D7D, + 18028: 0x00009D6B, + 18029: 0x00009D74, + 18030: 0x00009D75, + 18031: 0x00009D70, + 18032: 0x00009D69, + 18033: 0x00009D85, + 18034: 0x00009D73, + 18035: 0x00009D7B, + 18036: 0x00009D82, + 18037: 0x00009D6F, + 18038: 0x00009D79, + 18039: 0x00009D7F, + 18040: 0x00009D87, + 18041: 0x00009D68, + 18042: 0x00009E94, + 18043: 0x00009E91, + 18044: 0x00009EC0, + 18045: 0x00009EFC, + 18046: 0x00009F2D, + 18047: 0x00009F40, + 18048: 0x00009F41, + 18049: 0x00009F4D, + 18050: 0x00009F56, + 18051: 0x00009F57, + 18052: 0x00009F58, + 18053: 0x00005337, + 18054: 0x000056B2, + 18055: 0x000056B5, + 18056: 0x000056B3, + 18057: 0x000058E3, + 18058: 0x00005B45, + 18059: 0x00005DC6, + 18060: 0x00005DC7, + 18061: 0x00005EEE, + 18062: 0x00005EEF, + 18063: 0x00005FC0, + 18064: 0x00005FC1, + 18065: 0x000061F9, + 18066: 0x00006517, + 18067: 0x00006516, + 18068: 0x00006515, + 18069: 0x00006513, + 18070: 0x000065DF, + 18071: 0x000066E8, + 18072: 0x000066E3, + 18073: 0x000066E4, + 18074: 0x00006AF3, + 18075: 0x00006AF0, + 18076: 0x00006AEA, + 18077: 0x00006AE8, + 18078: 0x00006AF9, + 18079: 0x00006AF1, + 18080: 0x00006AEE, + 18081: 0x00006AEF, + 18082: 0x0000703C, + 18083: 0x00007035, + 18084: 0x0000702F, + 18085: 0x00007037, + 18086: 0x00007034, + 18087: 0x00007031, + 18088: 0x00007042, + 18089: 0x00007038, + 18090: 0x0000703F, + 18091: 0x0000703A, + 18092: 0x00007039, + 18093: 0x00007040, + 18094: 0x0000703B, + 18095: 0x00007033, + 18096: 0x00007041, + 18097: 0x00007213, + 18098: 0x00007214, + 18099: 0x000072A8, + 18100: 0x0000737D, + 18101: 0x0000737C, + 18102: 0x000074BA, + 18103: 0x000076AB, + 18104: 0x000076AA, + 18105: 0x000076BE, + 18106: 0x000076ED, + 18107: 0x000077CC, + 18108: 0x000077CE, + 18109: 0x000077CF, + 18110: 0x000077CD, + 18111: 0x000077F2, + 18112: 0x00007925, + 18113: 0x00007923, + 18114: 0x00007927, + 18115: 0x00007928, + 18116: 0x00007924, + 18117: 0x00007929, + 18118: 0x000079B2, + 18119: 0x00007A6E, + 18120: 0x00007A6C, + 18121: 0x00007A6D, + 18122: 0x00007AF7, + 18123: 0x00007C49, + 18124: 0x00007C48, + 18125: 0x00007C4A, + 18126: 0x00007C47, + 18127: 0x00007C45, + 18128: 0x00007CEE, + 18129: 0x00007E7B, + 18130: 0x00007E7E, + 18131: 0x00007E81, + 18132: 0x00007E80, + 18133: 0x00007FBA, + 18134: 0x00007FFF, + 18135: 0x00008079, + 18136: 0x000081DB, + 18137: 0x000081D9, + 18138: 0x0000820B, + 18139: 0x00008268, + 18140: 0x00008269, + 18141: 0x00008622, + 18142: 0x000085FF, + 18143: 0x00008601, + 18144: 0x000085FE, + 18145: 0x0000861B, + 18146: 0x00008600, + 18147: 0x000085F6, + 18148: 0x00008604, + 18149: 0x00008609, + 18150: 0x00008605, + 18151: 0x0000860C, + 18152: 0x000085FD, + 18153: 0x00008819, + 18154: 0x00008810, + 18155: 0x00008811, + 18156: 0x00008817, + 18157: 0x00008813, + 18158: 0x00008816, + 18159: 0x00008963, + 18160: 0x00008966, + 18161: 0x000089B9, + 18162: 0x000089F7, + 18163: 0x00008B60, + 18164: 0x00008B6A, + 18165: 0x00008B5D, + 18166: 0x00008B68, + 18167: 0x00008B63, + 18168: 0x00008B65, + 18169: 0x00008B67, + 18170: 0x00008B6D, + 18171: 0x00008DAE, + 18172: 0x00008E86, + 18173: 0x00008E88, + 18174: 0x00008E84, + 18175: 0x00008F59, + 18176: 0x00008F56, + 18177: 0x00008F57, + 18178: 0x00008F55, + 18179: 0x00008F58, + 18180: 0x00008F5A, + 18181: 0x0000908D, + 18182: 0x00009143, + 18183: 0x00009141, + 18184: 0x000091B7, + 18185: 0x000091B5, + 18186: 0x000091B2, + 18187: 0x000091B3, + 18188: 0x0000940B, + 18189: 0x00009413, + 18190: 0x000093FB, + 18191: 0x00009420, + 18192: 0x0000940F, + 18193: 0x00009414, + 18194: 0x000093FE, + 18195: 0x00009415, + 18196: 0x00009410, + 18197: 0x00009428, + 18198: 0x00009419, + 18199: 0x0000940D, + 18200: 0x000093F5, + 18201: 0x00009400, + 18202: 0x000093F7, + 18203: 0x00009407, + 18204: 0x0000940E, + 18205: 0x00009416, + 18206: 0x00009412, + 18207: 0x000093FA, + 18208: 0x00009409, + 18209: 0x000093F8, + 18210: 0x0000940A, + 18211: 0x000093FF, + 18212: 0x000093FC, + 18213: 0x0000940C, + 18214: 0x000093F6, + 18215: 0x00009411, + 18216: 0x00009406, + 18217: 0x000095DE, + 18218: 0x000095E0, + 18219: 0x000095DF, + 18220: 0x0000972E, + 18221: 0x0000972F, + 18222: 0x000097B9, + 18223: 0x000097BB, + 18224: 0x000097FD, + 18225: 0x000097FE, + 18226: 0x00009860, + 18227: 0x00009862, + 18228: 0x00009863, + 18229: 0x0000985F, + 18230: 0x000098C1, + 18231: 0x000098C2, + 18232: 0x00009950, + 18233: 0x0000994E, + 18234: 0x00009959, + 18235: 0x0000994C, + 18236: 0x0000994B, + 18237: 0x00009953, + 18238: 0x00009A32, + 18239: 0x00009A34, + 18240: 0x00009A31, + 18241: 0x00009A2C, + 18242: 0x00009A2A, + 18243: 0x00009A36, + 18244: 0x00009A29, + 18245: 0x00009A2E, + 18246: 0x00009A38, + 18247: 0x00009A2D, + 18248: 0x00009AC7, + 18249: 0x00009ACA, + 18250: 0x00009AC6, + 18251: 0x00009B10, + 18252: 0x00009B12, + 18253: 0x00009B11, + 18254: 0x00009C0B, + 18255: 0x00009C08, + 18256: 0x00009BF7, + 18257: 0x00009C05, + 18258: 0x00009C12, + 18259: 0x00009BF8, + 18260: 0x00009C40, + 18261: 0x00009C07, + 18262: 0x00009C0E, + 18263: 0x00009C06, + 18264: 0x00009C17, + 18265: 0x00009C14, + 18266: 0x00009C09, + 18267: 0x00009D9F, + 18268: 0x00009D99, + 18269: 0x00009DA4, + 18270: 0x00009D9D, + 18271: 0x00009D92, + 18272: 0x00009D98, + 18273: 0x00009D90, + 18274: 0x00009D9B, + 18275: 0x00009DA0, + 18276: 0x00009D94, + 18277: 0x00009D9C, + 18278: 0x00009DAA, + 18279: 0x00009D97, + 18280: 0x00009DA1, + 18281: 0x00009D9A, + 18282: 0x00009DA2, + 18283: 0x00009DA8, + 18284: 0x00009D9E, + 18285: 0x00009DA3, + 18286: 0x00009DBF, + 18287: 0x00009DA9, + 18288: 0x00009D96, + 18289: 0x00009DA6, + 18290: 0x00009DA7, + 18291: 0x00009E99, + 18292: 0x00009E9B, + 18293: 0x00009E9A, + 18294: 0x00009EE5, + 18295: 0x00009EE4, + 18296: 0x00009EE7, + 18297: 0x00009EE6, + 18298: 0x00009F30, + 18299: 0x00009F2E, + 18300: 0x00009F5B, + 18301: 0x00009F60, + 18302: 0x00009F5E, + 18303: 0x00009F5D, + 18304: 0x00009F59, + 18305: 0x00009F91, + 18306: 0x0000513A, + 18307: 0x00005139, + 18308: 0x00005298, + 18309: 0x00005297, + 18310: 0x000056C3, + 18311: 0x000056BD, + 18312: 0x000056BE, + 18313: 0x00005B48, + 18314: 0x00005B47, + 18315: 0x00005DCB, + 18316: 0x00005DCF, + 18317: 0x00005EF1, + 18318: 0x000061FD, + 18319: 0x0000651B, + 18320: 0x00006B02, + 18321: 0x00006AFC, + 18322: 0x00006B03, + 18323: 0x00006AF8, + 18324: 0x00006B00, + 18325: 0x00007043, + 18326: 0x00007044, + 18327: 0x0000704A, + 18328: 0x00007048, + 18329: 0x00007049, + 18330: 0x00007045, + 18331: 0x00007046, + 18332: 0x0000721D, + 18333: 0x0000721A, + 18334: 0x00007219, + 18335: 0x0000737E, + 18336: 0x00007517, + 18337: 0x0000766A, + 18338: 0x000077D0, + 18339: 0x0000792D, + 18340: 0x00007931, + 18341: 0x0000792F, + 18342: 0x00007C54, + 18343: 0x00007C53, + 18344: 0x00007CF2, + 18345: 0x00007E8A, + 18346: 0x00007E87, + 18347: 0x00007E88, + 18348: 0x00007E8B, + 18349: 0x00007E86, + 18350: 0x00007E8D, + 18351: 0x00007F4D, + 18352: 0x00007FBB, + 18353: 0x00008030, + 18354: 0x000081DD, + 18355: 0x00008618, + 18356: 0x0000862A, + 18357: 0x00008626, + 18358: 0x0000861F, + 18359: 0x00008623, + 18360: 0x0000861C, + 18361: 0x00008619, + 18362: 0x00008627, + 18363: 0x0000862E, + 18364: 0x00008621, + 18365: 0x00008620, + 18366: 0x00008629, + 18367: 0x0000861E, + 18368: 0x00008625, + 18369: 0x00008829, + 18370: 0x0000881D, + 18371: 0x0000881B, + 18372: 0x00008820, + 18373: 0x00008824, + 18374: 0x0000881C, + 18375: 0x0000882B, + 18376: 0x0000884A, + 18377: 0x0000896D, + 18378: 0x00008969, + 18379: 0x0000896E, + 18380: 0x0000896B, + 18381: 0x000089FA, + 18382: 0x00008B79, + 18383: 0x00008B78, + 18384: 0x00008B45, + 18385: 0x00008B7A, + 18386: 0x00008B7B, + 18387: 0x00008D10, + 18388: 0x00008D14, + 18389: 0x00008DAF, + 18390: 0x00008E8E, + 18391: 0x00008E8C, + 18392: 0x00008F5E, + 18393: 0x00008F5B, + 18394: 0x00008F5D, + 18395: 0x00009146, + 18396: 0x00009144, + 18397: 0x00009145, + 18398: 0x000091B9, + 18399: 0x0000943F, + 18400: 0x0000943B, + 18401: 0x00009436, + 18402: 0x00009429, + 18403: 0x0000943D, + 18404: 0x0000943C, + 18405: 0x00009430, + 18406: 0x00009439, + 18407: 0x0000942A, + 18408: 0x00009437, + 18409: 0x0000942C, + 18410: 0x00009440, + 18411: 0x00009431, + 18412: 0x000095E5, + 18413: 0x000095E4, + 18414: 0x000095E3, + 18415: 0x00009735, + 18416: 0x0000973A, + 18417: 0x000097BF, + 18418: 0x000097E1, + 18419: 0x00009864, + 18420: 0x000098C9, + 18421: 0x000098C6, + 18422: 0x000098C0, + 18423: 0x00009958, + 18424: 0x00009956, + 18425: 0x00009A39, + 18426: 0x00009A3D, + 18427: 0x00009A46, + 18428: 0x00009A44, + 18429: 0x00009A42, + 18430: 0x00009A41, + 18431: 0x00009A3A, + 18432: 0x00009A3F, + 18433: 0x00009ACD, + 18434: 0x00009B15, + 18435: 0x00009B17, + 18436: 0x00009B18, + 18437: 0x00009B16, + 18438: 0x00009B3A, + 18439: 0x00009B52, + 18440: 0x00009C2B, + 18441: 0x00009C1D, + 18442: 0x00009C1C, + 18443: 0x00009C2C, + 18444: 0x00009C23, + 18445: 0x00009C28, + 18446: 0x00009C29, + 18447: 0x00009C24, + 18448: 0x00009C21, + 18449: 0x00009DB7, + 18450: 0x00009DB6, + 18451: 0x00009DBC, + 18452: 0x00009DC1, + 18453: 0x00009DC7, + 18454: 0x00009DCA, + 18455: 0x00009DCF, + 18456: 0x00009DBE, + 18457: 0x00009DC5, + 18458: 0x00009DC3, + 18459: 0x00009DBB, + 18460: 0x00009DB5, + 18461: 0x00009DCE, + 18462: 0x00009DB9, + 18463: 0x00009DBA, + 18464: 0x00009DAC, + 18465: 0x00009DC8, + 18466: 0x00009DB1, + 18467: 0x00009DAD, + 18468: 0x00009DCC, + 18469: 0x00009DB3, + 18470: 0x00009DCD, + 18471: 0x00009DB2, + 18472: 0x00009E7A, + 18473: 0x00009E9C, + 18474: 0x00009EEB, + 18475: 0x00009EEE, + 18476: 0x00009EED, + 18477: 0x00009F1B, + 18478: 0x00009F18, + 18479: 0x00009F1A, + 18480: 0x00009F31, + 18481: 0x00009F4E, + 18482: 0x00009F65, + 18483: 0x00009F64, + 18484: 0x00009F92, + 18485: 0x00004EB9, + 18486: 0x000056C6, + 18487: 0x000056C5, + 18488: 0x000056CB, + 18489: 0x00005971, + 18490: 0x00005B4B, + 18491: 0x00005B4C, + 18492: 0x00005DD5, + 18493: 0x00005DD1, + 18494: 0x00005EF2, + 18495: 0x00006521, + 18496: 0x00006520, + 18497: 0x00006526, + 18498: 0x00006522, + 18499: 0x00006B0B, + 18500: 0x00006B08, + 18501: 0x00006B09, + 18502: 0x00006C0D, + 18503: 0x00007055, + 18504: 0x00007056, + 18505: 0x00007057, + 18506: 0x00007052, + 18507: 0x0000721E, + 18508: 0x0000721F, + 18509: 0x000072A9, + 18510: 0x0000737F, + 18511: 0x000074D8, + 18512: 0x000074D5, + 18513: 0x000074D9, + 18514: 0x000074D7, + 18515: 0x0000766D, + 18516: 0x000076AD, + 18517: 0x00007935, + 18518: 0x000079B4, + 18519: 0x00007A70, + 18520: 0x00007A71, + 18521: 0x00007C57, + 18522: 0x00007C5C, + 18523: 0x00007C59, + 18524: 0x00007C5B, + 18525: 0x00007C5A, + 18526: 0x00007CF4, + 18527: 0x00007CF1, + 18528: 0x00007E91, + 18529: 0x00007F4F, + 18530: 0x00007F87, + 18531: 0x000081DE, + 18532: 0x0000826B, + 18533: 0x00008634, + 18534: 0x00008635, + 18535: 0x00008633, + 18536: 0x0000862C, + 18537: 0x00008632, + 18538: 0x00008636, + 18539: 0x0000882C, + 18540: 0x00008828, + 18541: 0x00008826, + 18542: 0x0000882A, + 18543: 0x00008825, + 18544: 0x00008971, + 18545: 0x000089BF, + 18546: 0x000089BE, + 18547: 0x000089FB, + 18548: 0x00008B7E, + 18549: 0x00008B84, + 18550: 0x00008B82, + 18551: 0x00008B86, + 18552: 0x00008B85, + 18553: 0x00008B7F, + 18554: 0x00008D15, + 18555: 0x00008E95, + 18556: 0x00008E94, + 18557: 0x00008E9A, + 18558: 0x00008E92, + 18559: 0x00008E90, + 18560: 0x00008E96, + 18561: 0x00008E97, + 18562: 0x00008F60, + 18563: 0x00008F62, + 18564: 0x00009147, + 18565: 0x0000944C, + 18566: 0x00009450, + 18567: 0x0000944A, + 18568: 0x0000944B, + 18569: 0x0000944F, + 18570: 0x00009447, + 18571: 0x00009445, + 18572: 0x00009448, + 18573: 0x00009449, + 18574: 0x00009446, + 18575: 0x0000973F, + 18576: 0x000097E3, + 18577: 0x0000986A, + 18578: 0x00009869, + 18579: 0x000098CB, + 18580: 0x00009954, + 18581: 0x0000995B, + 18582: 0x00009A4E, + 18583: 0x00009A53, + 18584: 0x00009A54, + 18585: 0x00009A4C, + 18586: 0x00009A4F, + 18587: 0x00009A48, + 18588: 0x00009A4A, + 18589: 0x00009A49, + 18590: 0x00009A52, + 18591: 0x00009A50, + 18592: 0x00009AD0, + 18593: 0x00009B19, + 18594: 0x00009B2B, + 18595: 0x00009B3B, + 18596: 0x00009B56, + 18597: 0x00009B55, + 18598: 0x00009C46, + 18599: 0x00009C48, + 18600: 0x00009C3F, + 18601: 0x00009C44, + 18602: 0x00009C39, + 18603: 0x00009C33, + 18604: 0x00009C41, + 18605: 0x00009C3C, + 18606: 0x00009C37, + 18607: 0x00009C34, + 18608: 0x00009C32, + 18609: 0x00009C3D, + 18610: 0x00009C36, + 18611: 0x00009DDB, + 18612: 0x00009DD2, + 18613: 0x00009DDE, + 18614: 0x00009DDA, + 18615: 0x00009DCB, + 18616: 0x00009DD0, + 18617: 0x00009DDC, + 18618: 0x00009DD1, + 18619: 0x00009DDF, + 18620: 0x00009DE9, + 18621: 0x00009DD9, + 18622: 0x00009DD8, + 18623: 0x00009DD6, + 18624: 0x00009DF5, + 18625: 0x00009DD5, + 18626: 0x00009DDD, + 18627: 0x00009EB6, + 18628: 0x00009EF0, + 18629: 0x00009F35, + 18630: 0x00009F33, + 18631: 0x00009F32, + 18632: 0x00009F42, + 18633: 0x00009F6B, + 18634: 0x00009F95, + 18635: 0x00009FA2, + 18636: 0x0000513D, + 18637: 0x00005299, + 18638: 0x000058E8, + 18639: 0x000058E7, + 18640: 0x00005972, + 18641: 0x00005B4D, + 18642: 0x00005DD8, + 18643: 0x0000882F, + 18644: 0x00005F4F, + 18645: 0x00006201, + 18646: 0x00006203, + 18647: 0x00006204, + 18648: 0x00006529, + 18649: 0x00006525, + 18650: 0x00006596, + 18651: 0x000066EB, + 18652: 0x00006B11, + 18653: 0x00006B12, + 18654: 0x00006B0F, + 18655: 0x00006BCA, + 18656: 0x0000705B, + 18657: 0x0000705A, + 18658: 0x00007222, + 18659: 0x00007382, + 18660: 0x00007381, + 18661: 0x00007383, + 18662: 0x00007670, + 18663: 0x000077D4, + 18664: 0x00007C67, + 18665: 0x00007C66, + 18666: 0x00007E95, + 18667: 0x0000826C, + 18668: 0x0000863A, + 18669: 0x00008640, + 18670: 0x00008639, + 18671: 0x0000863C, + 18672: 0x00008631, + 18673: 0x0000863B, + 18674: 0x0000863E, + 18675: 0x00008830, + 18676: 0x00008832, + 18677: 0x0000882E, + 18678: 0x00008833, + 18679: 0x00008976, + 18680: 0x00008974, + 18681: 0x00008973, + 18682: 0x000089FE, + 18683: 0x00008B8C, + 18684: 0x00008B8E, + 18685: 0x00008B8B, + 18686: 0x00008B88, + 18687: 0x00008C45, + 18688: 0x00008D19, + 18689: 0x00008E98, + 18690: 0x00008F64, + 18691: 0x00008F63, + 18692: 0x000091BC, + 18693: 0x00009462, + 18694: 0x00009455, + 18695: 0x0000945D, + 18696: 0x00009457, + 18697: 0x0000945E, + 18698: 0x000097C4, + 18699: 0x000097C5, + 18700: 0x00009800, + 18701: 0x00009A56, + 18702: 0x00009A59, + 18703: 0x00009B1E, + 18704: 0x00009B1F, + 18705: 0x00009B20, + 18706: 0x00009C52, + 18707: 0x00009C58, + 18708: 0x00009C50, + 18709: 0x00009C4A, + 18710: 0x00009C4D, + 18711: 0x00009C4B, + 18712: 0x00009C55, + 18713: 0x00009C59, + 18714: 0x00009C4C, + 18715: 0x00009C4E, + 18716: 0x00009DFB, + 18717: 0x00009DF7, + 18718: 0x00009DEF, + 18719: 0x00009DE3, + 18720: 0x00009DEB, + 18721: 0x00009DF8, + 18722: 0x00009DE4, + 18723: 0x00009DF6, + 18724: 0x00009DE1, + 18725: 0x00009DEE, + 18726: 0x00009DE6, + 18727: 0x00009DF2, + 18728: 0x00009DF0, + 18729: 0x00009DE2, + 18730: 0x00009DEC, + 18731: 0x00009DF4, + 18732: 0x00009DF3, + 18733: 0x00009DE8, + 18734: 0x00009DED, + 18735: 0x00009EC2, + 18736: 0x00009ED0, + 18737: 0x00009EF2, + 18738: 0x00009EF3, + 18739: 0x00009F06, + 18740: 0x00009F1C, + 18741: 0x00009F38, + 18742: 0x00009F37, + 18743: 0x00009F36, + 18744: 0x00009F43, + 18745: 0x00009F4F, + 18746: 0x00009F71, + 18747: 0x00009F70, + 18748: 0x00009F6E, + 18749: 0x00009F6F, + 18750: 0x000056D3, + 18751: 0x000056CD, + 18752: 0x00005B4E, + 18753: 0x00005C6D, + 18754: 0x0000652D, + 18755: 0x000066ED, + 18756: 0x000066EE, + 18757: 0x00006B13, + 18758: 0x0000705F, + 18759: 0x00007061, + 18760: 0x0000705D, + 18761: 0x00007060, + 18762: 0x00007223, + 18763: 0x000074DB, + 18764: 0x000074E5, + 18765: 0x000077D5, + 18766: 0x00007938, + 18767: 0x000079B7, + 18768: 0x000079B6, + 18769: 0x00007C6A, + 18770: 0x00007E97, + 18771: 0x00007F89, + 18772: 0x0000826D, + 18773: 0x00008643, + 18774: 0x00008838, + 18775: 0x00008837, + 18776: 0x00008835, + 18777: 0x0000884B, + 18778: 0x00008B94, + 18779: 0x00008B95, + 18780: 0x00008E9E, + 18781: 0x00008E9F, + 18782: 0x00008EA0, + 18783: 0x00008E9D, + 18784: 0x000091BE, + 18785: 0x000091BD, + 18786: 0x000091C2, + 18787: 0x0000946B, + 18788: 0x00009468, + 18789: 0x00009469, + 18790: 0x000096E5, + 18791: 0x00009746, + 18792: 0x00009743, + 18793: 0x00009747, + 18794: 0x000097C7, + 18795: 0x000097E5, + 18796: 0x00009A5E, + 18797: 0x00009AD5, + 18798: 0x00009B59, + 18799: 0x00009C63, + 18800: 0x00009C67, + 18801: 0x00009C66, + 18802: 0x00009C62, + 18803: 0x00009C5E, + 18804: 0x00009C60, + 18805: 0x00009E02, + 18806: 0x00009DFE, + 18807: 0x00009E07, + 18808: 0x00009E03, + 18809: 0x00009E06, + 18810: 0x00009E05, + 18811: 0x00009E00, + 18812: 0x00009E01, + 18813: 0x00009E09, + 18814: 0x00009DFF, + 18815: 0x00009DFD, + 18816: 0x00009E04, + 18817: 0x00009EA0, + 18818: 0x00009F1E, + 18819: 0x00009F46, + 18820: 0x00009F74, + 18821: 0x00009F75, + 18822: 0x00009F76, + 18823: 0x000056D4, + 18824: 0x0000652E, + 18825: 0x000065B8, + 18826: 0x00006B18, + 18827: 0x00006B19, + 18828: 0x00006B17, + 18829: 0x00006B1A, + 18830: 0x00007062, + 18831: 0x00007226, + 18832: 0x000072AA, + 18833: 0x000077D8, + 18834: 0x000077D9, + 18835: 0x00007939, + 18836: 0x00007C69, + 18837: 0x00007C6B, + 18838: 0x00007CF6, + 18839: 0x00007E9A, + 18840: 0x00007E98, + 18841: 0x00007E9B, + 18842: 0x00007E99, + 18843: 0x000081E0, + 18844: 0x000081E1, + 18845: 0x00008646, + 18846: 0x00008647, + 18847: 0x00008648, + 18848: 0x00008979, + 18849: 0x0000897A, + 18850: 0x0000897C, + 18851: 0x0000897B, + 18852: 0x000089FF, + 18853: 0x00008B98, + 18854: 0x00008B99, + 18855: 0x00008EA5, + 18856: 0x00008EA4, + 18857: 0x00008EA3, + 18858: 0x0000946E, + 18859: 0x0000946D, + 18860: 0x0000946F, + 18861: 0x00009471, + 18862: 0x00009473, + 18863: 0x00009749, + 18864: 0x00009872, + 18865: 0x0000995F, + 18866: 0x00009C68, + 18867: 0x00009C6E, + 18868: 0x00009C6D, + 18869: 0x00009E0B, + 18870: 0x00009E0D, + 18871: 0x00009E10, + 18872: 0x00009E0F, + 18873: 0x00009E12, + 18874: 0x00009E11, + 18875: 0x00009EA1, + 18876: 0x00009EF5, + 18877: 0x00009F09, + 18878: 0x00009F47, + 18879: 0x00009F78, + 18880: 0x00009F7B, + 18881: 0x00009F7A, + 18882: 0x00009F79, + 18883: 0x0000571E, + 18884: 0x00007066, + 18885: 0x00007C6F, + 18886: 0x0000883C, + 18887: 0x00008DB2, + 18888: 0x00008EA6, + 18889: 0x000091C3, + 18890: 0x00009474, + 18891: 0x00009478, + 18892: 0x00009476, + 18893: 0x00009475, + 18894: 0x00009A60, + 18895: 0x00009C74, + 18896: 0x00009C73, + 18897: 0x00009C71, + 18898: 0x00009C75, + 18899: 0x00009E14, + 18900: 0x00009E13, + 18901: 0x00009EF6, + 18902: 0x00009F0A, + 18903: 0x00009FA4, + 18904: 0x00007068, + 18905: 0x00007065, + 18906: 0x00007CF7, + 18907: 0x0000866A, + 18908: 0x0000883E, + 18909: 0x0000883D, + 18910: 0x0000883F, + 18911: 0x00008B9E, + 18912: 0x00008C9C, + 18913: 0x00008EA9, + 18914: 0x00008EC9, + 18915: 0x0000974B, + 18916: 0x00009873, + 18917: 0x00009874, + 18918: 0x000098CC, + 18919: 0x00009961, + 18920: 0x000099AB, + 18921: 0x00009A64, + 18922: 0x00009A66, + 18923: 0x00009A67, + 18924: 0x00009B24, + 18925: 0x00009E15, + 18926: 0x00009E17, + 18927: 0x00009F48, + 18928: 0x00006207, + 18929: 0x00006B1E, + 18930: 0x00007227, + 18931: 0x0000864C, + 18932: 0x00008EA8, + 18933: 0x00009482, + 18934: 0x00009480, + 18935: 0x00009481, + 18936: 0x00009A69, + 18937: 0x00009A68, + 18938: 0x00009B2E, + 18939: 0x00009E19, + 18940: 0x00007229, + 18941: 0x0000864B, + 18942: 0x00008B9F, + 18943: 0x00009483, + 18944: 0x00009C79, + 18945: 0x00009EB7, + 18946: 0x00007675, + 18947: 0x00009A6B, + 18948: 0x00009C7A, + 18949: 0x00009E1D, + 18950: 0x00007069, + 18951: 0x0000706A, + 18952: 0x00009EA4, + 18953: 0x00009F7E, + 18954: 0x00009F49, + 18955: 0x00009F98, + 18956: 0x00007881, + 18957: 0x000092B9, + 18958: 0x000088CF, + 18959: 0x000058BB, + 18960: 0x00006052, + 18961: 0x00007CA7, + 18962: 0x00005AFA, + 18963: 0x00002554, + 18964: 0x00002566, + 18965: 0x00002557, + 18966: 0x00002560, + 18967: 0x0000256C, + 18968: 0x00002563, + 18969: 0x0000255A, + 18970: 0x00002569, + 18971: 0x0000255D, + 18972: 0x00002552, + 18973: 0x00002564, + 18974: 0x00002555, + 18975: 0x0000255E, + 18976: 0x0000256A, + 18977: 0x00002561, + 18978: 0x00002558, + 18979: 0x00002567, + 18980: 0x0000255B, + 18981: 0x00002553, + 18982: 0x00002565, + 18983: 0x00002556, + 18984: 0x0000255F, + 18985: 0x0000256B, + 18986: 0x00002562, + 18987: 0x00002559, + 18988: 0x00002568, + 18989: 0x0000255C, + 18990: 0x00002551, + 18991: 0x00002550, + 18992: 0x0000256D, + 18993: 0x0000256E, + 18994: 0x00002570, + 18995: 0x0000256F, + 18996: 0x0000FFED, + 18997: 0x00020547, + 18998: 0x000092DB, + 18999: 0x000205DF, + 19000: 0x00023FC5, + 19001: 0x0000854C, + 19002: 0x000042B5, + 19003: 0x000073EF, + 19004: 0x000051B5, + 19005: 0x00003649, + 19006: 0x00024942, + 19007: 0x000289E4, + 19008: 0x00009344, + 19009: 0x000219DB, + 19010: 0x000082EE, + 19011: 0x00023CC8, + 19012: 0x0000783C, + 19013: 0x00006744, + 19014: 0x000062DF, + 19015: 0x00024933, + 19016: 0x000289AA, + 19017: 0x000202A0, + 19018: 0x00026BB3, + 19019: 0x00021305, + 19020: 0x00004FAB, + 19021: 0x000224ED, + 19022: 0x00005008, + 19023: 0x00026D29, + 19024: 0x00027A84, + 19025: 0x00023600, + 19026: 0x00024AB1, + 19027: 0x00022513, + 19028: 0x00005029, + 19029: 0x0002037E, + 19030: 0x00005FA4, + 19031: 0x00020380, + 19032: 0x00020347, + 19033: 0x00006EDB, + 19034: 0x0002041F, + 19035: 0x0000507D, + 19036: 0x00005101, + 19037: 0x0000347A, + 19038: 0x0000510E, + 19039: 0x0000986C, + 19040: 0x00003743, + 19041: 0x00008416, + 19042: 0x000249A4, + 19043: 0x00020487, + 19044: 0x00005160, + 19045: 0x000233B4, + 19046: 0x0000516A, + 19047: 0x00020BFF, + 19048: 0x000220FC, + 19049: 0x000202E5, + 19050: 0x00022530, + 19051: 0x0002058E, + 19052: 0x00023233, + 19053: 0x00021983, + 19054: 0x00005B82, + 19055: 0x0000877D, + 19056: 0x000205B3, + 19057: 0x00023C99, + 19058: 0x000051B2, + 19059: 0x000051B8, + 19060: 0x00009D34, + 19061: 0x000051C9, + 19062: 0x000051CF, + 19063: 0x000051D1, + 19064: 0x00003CDC, + 19065: 0x000051D3, + 19066: 0x00024AA6, + 19067: 0x000051B3, + 19068: 0x000051E2, + 19069: 0x00005342, + 19070: 0x000051ED, + 19071: 0x000083CD, + 19072: 0x0000693E, + 19073: 0x0002372D, + 19074: 0x00005F7B, + 19075: 0x0000520B, + 19076: 0x00005226, + 19077: 0x0000523C, + 19078: 0x000052B5, + 19079: 0x00005257, + 19080: 0x00005294, + 19081: 0x000052B9, + 19082: 0x000052C5, + 19083: 0x00007C15, + 19084: 0x00008542, + 19085: 0x000052E0, + 19086: 0x0000860D, + 19087: 0x00026B13, + 19088: 0x00005305, + 19089: 0x00028ADE, + 19090: 0x00005549, + 19091: 0x00006ED9, + 19092: 0x00023F80, + 19093: 0x00020954, + 19094: 0x00023FEC, + 19095: 0x00005333, + 19096: 0x00005344, + 19097: 0x00020BE2, + 19098: 0x00006CCB, + 19099: 0x00021726, + 19100: 0x0000681B, + 19101: 0x000073D5, + 19102: 0x0000604A, + 19103: 0x00003EAA, + 19104: 0x000038CC, + 19105: 0x000216E8, + 19106: 0x000071DD, + 19107: 0x000044A2, + 19108: 0x0000536D, + 19109: 0x00005374, + 19110: 0x000286AB, + 19111: 0x0000537E, + 19112: 0x0000537F, + 19113: 0x00021596, + 19114: 0x00021613, + 19115: 0x000077E6, + 19116: 0x00005393, + 19117: 0x00028A9B, + 19118: 0x000053A0, + 19119: 0x000053AB, + 19120: 0x000053AE, + 19121: 0x000073A7, + 19122: 0x00025772, + 19123: 0x00003F59, + 19124: 0x0000739C, + 19125: 0x000053C1, + 19126: 0x000053C5, + 19127: 0x00006C49, + 19128: 0x00004E49, + 19129: 0x000057FE, + 19130: 0x000053D9, + 19131: 0x00003AAB, + 19132: 0x00020B8F, + 19133: 0x000053E0, + 19134: 0x00023FEB, + 19135: 0x00022DA3, + 19136: 0x000053F6, + 19137: 0x00020C77, + 19138: 0x00005413, + 19139: 0x00007079, + 19140: 0x0000552B, + 19141: 0x00006657, + 19142: 0x00006D5B, + 19143: 0x0000546D, + 19144: 0x00026B53, + 19145: 0x00020D74, + 19146: 0x0000555D, + 19147: 0x0000548F, + 19148: 0x000054A4, + 19149: 0x000047A6, + 19150: 0x0002170D, + 19151: 0x00020EDD, + 19152: 0x00003DB4, + 19153: 0x00020D4D, + 19154: 0x000289BC, + 19155: 0x00022698, + 19156: 0x00005547, + 19157: 0x00004CED, + 19158: 0x0000542F, + 19159: 0x00007417, + 19160: 0x00005586, + 19161: 0x000055A9, + 19162: 0x00005605, + 19163: 0x000218D7, + 19164: 0x0002403A, + 19165: 0x00004552, + 19166: 0x00024435, + 19167: 0x000066B3, + 19168: 0x000210B4, + 19169: 0x00005637, + 19170: 0x000066CD, + 19171: 0x0002328A, + 19172: 0x000066A4, + 19173: 0x000066AD, + 19174: 0x0000564D, + 19175: 0x0000564F, + 19176: 0x000078F1, + 19177: 0x000056F1, + 19178: 0x00009787, + 19179: 0x000053FE, + 19180: 0x00005700, + 19181: 0x000056EF, + 19182: 0x000056ED, + 19183: 0x00028B66, + 19184: 0x00003623, + 19185: 0x0002124F, + 19186: 0x00005746, + 19187: 0x000241A5, + 19188: 0x00006C6E, + 19189: 0x0000708B, + 19190: 0x00005742, + 19191: 0x000036B1, + 19192: 0x00026C7E, + 19193: 0x000057E6, + 19194: 0x00021416, + 19195: 0x00005803, + 19196: 0x00021454, + 19197: 0x00024363, + 19198: 0x00005826, + 19199: 0x00024BF5, + 19200: 0x0000585C, + 19201: 0x000058AA, + 19202: 0x00003561, + 19203: 0x000058E0, + 19204: 0x000058DC, + 19205: 0x0002123C, + 19206: 0x000058FB, + 19207: 0x00005BFF, + 19208: 0x00005743, + 19209: 0x0002A150, + 19210: 0x00024278, + 19211: 0x000093D3, + 19212: 0x000035A1, + 19213: 0x0000591F, + 19214: 0x000068A6, + 19215: 0x000036C3, + 19216: 0x00006E59, + 19217: 0x0002163E, + 19218: 0x00005A24, + 19219: 0x00005553, + 19220: 0x00021692, + 19221: 0x00008505, + 19222: 0x000059C9, + 19223: 0x00020D4E, + 19224: 0x00026C81, + 19225: 0x00026D2A, + 19226: 0x000217DC, + 19227: 0x000059D9, + 19228: 0x000217FB, + 19229: 0x000217B2, + 19230: 0x00026DA6, + 19231: 0x00006D71, + 19232: 0x00021828, + 19233: 0x000216D5, + 19234: 0x000059F9, + 19235: 0x00026E45, + 19236: 0x00005AAB, + 19237: 0x00005A63, + 19238: 0x000036E6, + 19239: 0x000249A9, + 19240: 0x00005A77, + 19241: 0x00003708, + 19242: 0x00005A96, + 19243: 0x00007465, + 19244: 0x00005AD3, + 19245: 0x00026FA1, + 19246: 0x00022554, + 19247: 0x00003D85, + 19248: 0x00021911, + 19249: 0x00003732, + 19250: 0x000216B8, + 19251: 0x00005E83, + 19252: 0x000052D0, + 19253: 0x00005B76, + 19254: 0x00006588, + 19255: 0x00005B7C, + 19256: 0x00027A0E, + 19257: 0x00004004, + 19258: 0x0000485D, + 19259: 0x00020204, + 19260: 0x00005BD5, + 19261: 0x00006160, + 19262: 0x00021A34, + 19263: 0x000259CC, + 19264: 0x000205A5, + 19265: 0x00005BF3, + 19266: 0x00005B9D, + 19267: 0x00004D10, + 19268: 0x00005C05, + 19269: 0x00021B44, + 19270: 0x00005C13, + 19271: 0x000073CE, + 19272: 0x00005C14, + 19273: 0x00021CA5, + 19274: 0x00026B28, + 19275: 0x00005C49, + 19276: 0x000048DD, + 19277: 0x00005C85, + 19278: 0x00005CE9, + 19279: 0x00005CEF, + 19280: 0x00005D8B, + 19281: 0x00021DF9, + 19282: 0x00021E37, + 19283: 0x00005D10, + 19284: 0x00005D18, + 19285: 0x00005D46, + 19286: 0x00021EA4, + 19287: 0x00005CBA, + 19288: 0x00005DD7, + 19289: 0x000082FC, + 19290: 0x0000382D, + 19291: 0x00024901, + 19292: 0x00022049, + 19293: 0x00022173, + 19294: 0x00008287, + 19295: 0x00003836, + 19296: 0x00003BC2, + 19297: 0x00005E2E, + 19298: 0x00006A8A, + 19299: 0x00005E75, + 19300: 0x00005E7A, + 19301: 0x000244BC, + 19302: 0x00020CD3, + 19303: 0x000053A6, + 19304: 0x00004EB7, + 19305: 0x00005ED0, + 19306: 0x000053A8, + 19307: 0x00021771, + 19308: 0x00005E09, + 19309: 0x00005EF4, + 19310: 0x00028482, + 19311: 0x00005EF9, + 19312: 0x00005EFB, + 19313: 0x000038A0, + 19314: 0x00005EFC, + 19315: 0x0000683E, + 19316: 0x0000941B, + 19317: 0x00005F0D, + 19318: 0x000201C1, + 19319: 0x0002F894, + 19320: 0x00003ADE, + 19321: 0x000048AE, + 19322: 0x0002133A, + 19323: 0x00005F3A, + 19324: 0x00026888, + 19325: 0x000223D0, + 19326: 0x00005F58, + 19327: 0x00022471, + 19328: 0x00005F63, + 19329: 0x000097BD, + 19330: 0x00026E6E, + 19331: 0x00005F72, + 19332: 0x00009340, + 19333: 0x00028A36, + 19334: 0x00005FA7, + 19335: 0x00005DB6, + 19336: 0x00003D5F, + 19337: 0x00025250, + 19338: 0x00021F6A, + 19339: 0x000270F8, + 19340: 0x00022668, + 19341: 0x000091D6, + 19342: 0x0002029E, + 19343: 0x00028A29, + 19344: 0x00006031, + 19345: 0x00006685, + 19346: 0x00021877, + 19347: 0x00003963, + 19348: 0x00003DC7, + 19349: 0x00003639, + 19350: 0x00005790, + 19351: 0x000227B4, + 19352: 0x00007971, + 19353: 0x00003E40, + 19354: 0x0000609E, + 19355: 0x000060A4, + 19356: 0x000060B3, + 19357: 0x00024982, + 19358: 0x0002498F, + 19359: 0x00027A53, + 19360: 0x000074A4, + 19361: 0x000050E1, + 19362: 0x00005AA0, + 19363: 0x00006164, + 19364: 0x00008424, + 19365: 0x00006142, + 19366: 0x0002F8A6, + 19367: 0x00026ED2, + 19368: 0x00006181, + 19369: 0x000051F4, + 19370: 0x00020656, + 19371: 0x00006187, + 19372: 0x00005BAA, + 19373: 0x00023FB7, + 19374: 0x0002285F, + 19375: 0x000061D3, + 19376: 0x00028B9D, + 19377: 0x0002995D, + 19378: 0x000061D0, + 19379: 0x00003932, + 19380: 0x00022980, + 19381: 0x000228C1, + 19382: 0x00006023, + 19383: 0x0000615C, + 19384: 0x0000651E, + 19385: 0x0000638B, + 19386: 0x00020118, + 19387: 0x000062C5, + 19388: 0x00021770, + 19389: 0x000062D5, + 19390: 0x00022E0D, + 19391: 0x0000636C, + 19392: 0x000249DF, + 19393: 0x00003A17, + 19394: 0x00006438, + 19395: 0x000063F8, + 19396: 0x0002138E, + 19397: 0x000217FC, + 19398: 0x00006490, + 19399: 0x00006F8A, + 19400: 0x00022E36, + 19401: 0x00009814, + 19402: 0x0002408C, + 19403: 0x0002571D, + 19404: 0x000064E1, + 19405: 0x000064E5, + 19406: 0x0000947B, + 19407: 0x00003A66, + 19408: 0x0000643A, + 19409: 0x00003A57, + 19410: 0x0000654D, + 19411: 0x00006F16, + 19412: 0x00024A28, + 19413: 0x00024A23, + 19414: 0x00006585, + 19415: 0x0000656D, + 19416: 0x0000655F, + 19417: 0x0002307E, + 19418: 0x000065B5, + 19419: 0x00024940, + 19420: 0x00004B37, + 19421: 0x000065D1, + 19422: 0x000040D8, + 19423: 0x00021829, + 19424: 0x000065E0, + 19425: 0x000065E3, + 19426: 0x00005FDF, + 19427: 0x00023400, + 19428: 0x00006618, + 19429: 0x000231F7, + 19430: 0x000231F8, + 19431: 0x00006644, + 19432: 0x000231A4, + 19433: 0x000231A5, + 19434: 0x0000664B, + 19435: 0x00020E75, + 19436: 0x00006667, + 19437: 0x000251E6, + 19438: 0x00006673, + 19439: 0x00006674, + 19440: 0x00021E3D, + 19441: 0x00023231, + 19442: 0x000285F4, + 19443: 0x000231C8, + 19444: 0x00025313, + 19445: 0x000077C5, + 19446: 0x000228F7, + 19447: 0x000099A4, + 19448: 0x00006702, + 19449: 0x0002439C, + 19450: 0x00024A21, + 19451: 0x00003B2B, + 19452: 0x000069FA, + 19453: 0x000237C2, + 19454: 0x0000675E, + 19455: 0x00006767, + 19456: 0x00006762, + 19457: 0x000241CD, + 19458: 0x000290ED, + 19459: 0x000067D7, + 19460: 0x000044E9, + 19461: 0x00006822, + 19462: 0x00006E50, + 19463: 0x0000923C, + 19464: 0x00006801, + 19465: 0x000233E6, + 19466: 0x00026DA0, + 19467: 0x0000685D, + 19468: 0x0002346F, + 19469: 0x000069E1, + 19470: 0x00006A0B, + 19471: 0x00028ADF, + 19472: 0x00006973, + 19473: 0x000068C3, + 19474: 0x000235CD, + 19475: 0x00006901, + 19476: 0x00006900, + 19477: 0x00003D32, + 19478: 0x00003A01, + 19479: 0x0002363C, + 19480: 0x00003B80, + 19481: 0x000067AC, + 19482: 0x00006961, + 19483: 0x00028A4A, + 19484: 0x000042FC, + 19485: 0x00006936, + 19486: 0x00006998, + 19487: 0x00003BA1, + 19488: 0x000203C9, + 19489: 0x00008363, + 19490: 0x00005090, + 19491: 0x000069F9, + 19492: 0x00023659, + 19493: 0x0002212A, + 19494: 0x00006A45, + 19495: 0x00023703, + 19496: 0x00006A9D, + 19497: 0x00003BF3, + 19498: 0x000067B1, + 19499: 0x00006AC8, + 19500: 0x0002919C, + 19501: 0x00003C0D, + 19502: 0x00006B1D, + 19503: 0x00020923, + 19504: 0x000060DE, + 19505: 0x00006B35, + 19506: 0x00006B74, + 19507: 0x000227CD, + 19508: 0x00006EB5, + 19509: 0x00023ADB, + 19510: 0x000203B5, + 19511: 0x00021958, + 19512: 0x00003740, + 19513: 0x00005421, + 19514: 0x00023B5A, + 19515: 0x00006BE1, + 19516: 0x00023EFC, + 19517: 0x00006BDC, + 19518: 0x00006C37, + 19519: 0x0002248B, + 19520: 0x000248F1, + 19521: 0x00026B51, + 19522: 0x00006C5A, + 19523: 0x00008226, + 19524: 0x00006C79, + 19525: 0x00023DBC, + 19526: 0x000044C5, + 19527: 0x00023DBD, + 19528: 0x000241A4, + 19529: 0x0002490C, + 19530: 0x00024900, + 19531: 0x00023CC9, + 19532: 0x000036E5, + 19533: 0x00003CEB, + 19534: 0x00020D32, + 19535: 0x00009B83, + 19536: 0x000231F9, + 19537: 0x00022491, + 19538: 0x00007F8F, + 19539: 0x00006837, + 19540: 0x00026D25, + 19541: 0x00026DA1, + 19542: 0x00026DEB, + 19543: 0x00006D96, + 19544: 0x00006D5C, + 19545: 0x00006E7C, + 19546: 0x00006F04, + 19547: 0x0002497F, + 19548: 0x00024085, + 19549: 0x00026E72, + 19550: 0x00008533, + 19551: 0x00026F74, + 19552: 0x000051C7, + 19553: 0x00006C9C, + 19554: 0x00006E1D, + 19555: 0x0000842E, + 19556: 0x00028B21, + 19557: 0x00006E2F, + 19558: 0x00023E2F, + 19559: 0x00007453, + 19560: 0x00023F82, + 19561: 0x000079CC, + 19562: 0x00006E4F, + 19563: 0x00005A91, + 19564: 0x0002304B, + 19565: 0x00006FF8, + 19566: 0x0000370D, + 19567: 0x00006F9D, + 19568: 0x00023E30, + 19569: 0x00006EFA, + 19570: 0x00021497, + 19571: 0x0002403D, + 19572: 0x00004555, + 19573: 0x000093F0, + 19574: 0x00006F44, + 19575: 0x00006F5C, + 19576: 0x00003D4E, + 19577: 0x00006F74, + 19578: 0x00029170, + 19579: 0x00003D3B, + 19580: 0x00006F9F, + 19581: 0x00024144, + 19582: 0x00006FD3, + 19583: 0x00024091, + 19584: 0x00024155, + 19585: 0x00024039, + 19586: 0x00023FF0, + 19587: 0x00023FB4, + 19588: 0x0002413F, + 19589: 0x000051DF, + 19590: 0x00024156, + 19591: 0x00024157, + 19592: 0x00024140, + 19593: 0x000261DD, + 19594: 0x0000704B, + 19595: 0x0000707E, + 19596: 0x000070A7, + 19597: 0x00007081, + 19598: 0x000070CC, + 19599: 0x000070D5, + 19600: 0x000070D6, + 19601: 0x000070DF, + 19602: 0x00004104, + 19603: 0x00003DE8, + 19604: 0x000071B4, + 19605: 0x00007196, + 19606: 0x00024277, + 19607: 0x0000712B, + 19608: 0x00007145, + 19609: 0x00005A88, + 19610: 0x0000714A, + 19611: 0x0000716E, + 19612: 0x00005C9C, + 19613: 0x00024365, + 19614: 0x0000714F, + 19615: 0x00009362, + 19616: 0x000242C1, + 19617: 0x0000712C, + 19618: 0x0002445A, + 19619: 0x00024A27, + 19620: 0x00024A22, + 19621: 0x000071BA, + 19622: 0x00028BE8, + 19623: 0x000070BD, + 19624: 0x0000720E, + 19625: 0x00009442, + 19626: 0x00007215, + 19627: 0x00005911, + 19628: 0x00009443, + 19629: 0x00007224, + 19630: 0x00009341, + 19631: 0x00025605, + 19632: 0x0000722E, + 19633: 0x00007240, + 19634: 0x00024974, + 19635: 0x000068BD, + 19636: 0x00007255, + 19637: 0x00007257, + 19638: 0x00003E55, + 19639: 0x00023044, + 19640: 0x0000680D, + 19641: 0x00006F3D, + 19642: 0x00007282, + 19643: 0x0000732A, + 19644: 0x0000732B, + 19645: 0x00024823, + 19646: 0x0002882B, + 19647: 0x000048ED, + 19648: 0x00028804, + 19649: 0x00007328, + 19650: 0x0000732E, + 19651: 0x000073CF, + 19652: 0x000073AA, + 19653: 0x00020C3A, + 19654: 0x00026A2E, + 19655: 0x000073C9, + 19656: 0x00007449, + 19657: 0x000241E2, + 19658: 0x000216E7, + 19659: 0x00024A24, + 19660: 0x00006623, + 19661: 0x000036C5, + 19662: 0x000249B7, + 19663: 0x0002498D, + 19664: 0x000249FB, + 19665: 0x000073F7, + 19666: 0x00007415, + 19667: 0x00006903, + 19668: 0x00024A26, + 19669: 0x00007439, + 19670: 0x000205C3, + 19671: 0x00003ED7, + 19672: 0x0000745C, + 19673: 0x000228AD, + 19674: 0x00007460, + 19675: 0x00028EB2, + 19676: 0x00007447, + 19677: 0x000073E4, + 19678: 0x00007476, + 19679: 0x000083B9, + 19680: 0x0000746C, + 19681: 0x00003730, + 19682: 0x00007474, + 19683: 0x000093F1, + 19684: 0x00006A2C, + 19685: 0x00007482, + 19686: 0x00004953, + 19687: 0x00024A8C, + 19688: 0x0002415F, + 19689: 0x00024A79, + 19690: 0x00028B8F, + 19691: 0x00005B46, + 19692: 0x00028C03, + 19693: 0x0002189E, + 19694: 0x000074C8, + 19695: 0x00021988, + 19696: 0x0000750E, + 19697: 0x000074E9, + 19698: 0x0000751E, + 19699: 0x00028ED9, + 19700: 0x00021A4B, + 19701: 0x00005BD7, + 19702: 0x00028EAC, + 19703: 0x00009385, + 19704: 0x0000754D, + 19705: 0x0000754A, + 19706: 0x00007567, + 19707: 0x0000756E, + 19708: 0x00024F82, + 19709: 0x00003F04, + 19710: 0x00024D13, + 19711: 0x0000758E, + 19712: 0x0000745D, + 19713: 0x0000759E, + 19714: 0x000075B4, + 19715: 0x00007602, + 19716: 0x0000762C, + 19717: 0x00007651, + 19718: 0x0000764F, + 19719: 0x0000766F, + 19720: 0x00007676, + 19721: 0x000263F5, + 19722: 0x00007690, + 19723: 0x000081EF, + 19724: 0x000037F8, + 19725: 0x00026911, + 19726: 0x0002690E, + 19727: 0x000076A1, + 19728: 0x000076A5, + 19729: 0x000076B7, + 19730: 0x000076CC, + 19731: 0x00026F9F, + 19732: 0x00008462, + 19733: 0x0002509D, + 19734: 0x0002517D, + 19735: 0x00021E1C, + 19736: 0x0000771E, + 19737: 0x00007726, + 19738: 0x00007740, + 19739: 0x000064AF, + 19740: 0x00025220, + 19741: 0x00007758, + 19742: 0x000232AC, + 19743: 0x000077AF, + 19744: 0x00028964, + 19745: 0x00028968, + 19746: 0x000216C1, + 19747: 0x000077F4, + 19748: 0x00007809, + 19749: 0x00021376, + 19750: 0x00024A12, + 19751: 0x000068CA, + 19752: 0x000078AF, + 19753: 0x000078C7, + 19754: 0x000078D3, + 19755: 0x000096A5, + 19756: 0x0000792E, + 19757: 0x000255E0, + 19758: 0x000078D7, + 19759: 0x00007934, + 19760: 0x000078B1, + 19761: 0x0002760C, + 19762: 0x00008FB8, + 19763: 0x00008884, + 19764: 0x00028B2B, + 19765: 0x00026083, + 19766: 0x0002261C, + 19767: 0x00007986, + 19768: 0x00008900, + 19769: 0x00006902, + 19770: 0x00007980, + 19771: 0x00025857, + 19772: 0x0000799D, + 19773: 0x00027B39, + 19774: 0x0000793C, + 19775: 0x000079A9, + 19776: 0x00006E2A, + 19777: 0x00027126, + 19778: 0x00003EA8, + 19779: 0x000079C6, + 19780: 0x0002910D, + 19781: 0x000079D4, +} + +const numEncodeTables = 8 + +// encodeX are the encoding tables from Unicode to Big5 code, +// sorted by decreasing length. +// encode0: 42633 entries for runes in [131105, 173738). +// encode1: 29004 entries for runes in [ 11904, 40908). +// encode2: 2176 entries for runes in [ 7870, 10046). +// encode3: 939 entries for runes in [ 167, 1106). +// encode4: 446 entries for runes in [ 65072, 65518). +// encode5: 432 entries for runes in [194597, 195029). +// encode6: 263 entries for runes in [ 63751, 64014). +// encode7: 1 entries for runes in [175615, 175616). + +const encode0Low, encode0High = 131105, 173738 + +var encode0 = [...]uint16{ + 131105 - 131105: 0x9C71, + 131134 - 131105: 0x9375, + 131142 - 131105: 0x9376, + 131150 - 131105: 0x9548, + 131176 - 131105: 0x8EC6, + 131206 - 131105: 0x8BC5, + 131207 - 131105: 0x8BFA, + 131210 - 131105: 0xC87C, + 131220 - 131105: 0x9AB4, + 131274 - 131105: 0x884E, + 131275 - 131105: 0x884B, + 131276 - 131105: 0xC87A, + 131277 - 131105: 0x8848, + 131281 - 131105: 0x8847, + 131310 - 131105: 0xA0F6, + 131340 - 131105: 0x8845, + 131342 - 131105: 0x8853, + 131352 - 131105: 0xFCAD, + 131492 - 131105: 0x8CF5, + 131497 - 131105: 0x8AAD, + 131499 - 131105: 0x9272, + 131521 - 131105: 0xFC47, + 131540 - 131105: 0x94DF, + 131570 - 131105: 0x9FD1, + 131588 - 131105: 0xFBCB, + 131596 - 131105: 0x927D, + 131604 - 131105: 0x98A4, + 131641 - 131105: 0x8CF9, + 131675 - 131105: 0x94E7, + 131700 - 131105: 0x90CB, + 131701 - 131105: 0x927B, + 131737 - 131105: 0x94D8, + 131742 - 131105: 0xFC5F, + 131744 - 131105: 0xFA54, + 131767 - 131105: 0x9AB5, + 131775 - 131105: 0x96DA, + 131776 - 131105: 0x9279, + 131813 - 131105: 0xFA74, + 131850 - 131105: 0x9275, + 131877 - 131105: 0x8DFB, + 131905 - 131105: 0x8A49, + 131909 - 131105: 0x92DF, + 131910 - 131105: 0x9B7C, + 131911 - 131105: 0xFA63, + 131966 - 131105: 0xFA60, + 131967 - 131105: 0x926D, + 131968 - 131105: 0xFA62, + 132000 - 131105: 0x9AB6, + 132007 - 131105: 0x976B, + 132021 - 131105: 0xFD6A, + 132041 - 131105: 0xFD54, + 132043 - 131105: 0x9273, + 132085 - 131105: 0x97D8, + 132092 - 131105: 0x9FBB, + 132115 - 131105: 0x9342, + 132116 - 131105: 0x9276, + 132127 - 131105: 0xFA65, + 132197 - 131105: 0x926C, + 132231 - 131105: 0xFA6E, + 132238 - 131105: 0x9EE0, + 132241 - 131105: 0x92C0, + 132242 - 131105: 0x92BF, + 132259 - 131105: 0x92BE, + 132311 - 131105: 0x9ABA, + 132348 - 131105: 0x8AB3, + 132350 - 131105: 0x9775, + 132423 - 131105: 0xFA40, + 132494 - 131105: 0xFA76, + 132517 - 131105: 0xFBD0, + 132531 - 131105: 0xFA7B, + 132547 - 131105: 0xFE6D, + 132554 - 131105: 0x9BB3, + 132560 - 131105: 0x89CC, + 132565 - 131105: 0x9ABE, + 132575 - 131105: 0xFA42, + 132576 - 131105: 0x92BC, + 132587 - 131105: 0x945C, + 132625 - 131105: 0x9BB5, + 132629 - 131105: 0x9ABF, + 132633 - 131105: 0x98A7, + 132634 - 131105: 0x97A4, + 132656 - 131105: 0x90FD, + 132694 - 131105: 0xFC7B, + 132726 - 131105: 0x9AC0, + 132878 - 131105: 0x92C3, + 132913 - 131105: 0x8AAA, + 132985 - 131105: 0x9BD0, + 133164 - 131105: 0x9550, + 133235 - 131105: 0x92C6, + 133333 - 131105: 0x98A6, + 133398 - 131105: 0x9546, + 133411 - 131105: 0xFD63, + 133460 - 131105: 0xFAC2, + 133497 - 131105: 0x9EC3, + 133607 - 131105: 0x89B2, + 133649 - 131105: 0x9C66, + 133712 - 131105: 0x9053, + 133743 - 131105: 0x8C62, + 133770 - 131105: 0x87A8, + 133812 - 131105: 0x97C1, + 133826 - 131105: 0x9AC4, + 133837 - 131105: 0x9AC5, + 133901 - 131105: 0x8EEF, + 134031 - 131105: 0xFAE9, + 134047 - 131105: 0x8D40, + 134056 - 131105: 0x9262, + 134057 - 131105: 0x8AF7, + 134079 - 131105: 0x9AC6, + 134086 - 131105: 0x92E1, + 134091 - 131105: 0x9AC9, + 134114 - 131105: 0xFAC6, + 134123 - 131105: 0x97A5, + 134139 - 131105: 0x9ACB, + 134143 - 131105: 0xFA72, + 134155 - 131105: 0x8A5E, + 134157 - 131105: 0x94E0, + 134176 - 131105: 0x92CC, + 134196 - 131105: 0x8AE5, + 134202 - 131105: 0xFE5C, + 134203 - 131105: 0x9ACC, + 134209 - 131105: 0x9DF9, + 134210 - 131105: 0x8A43, + 134211 - 131105: 0x8AA6, + 134227 - 131105: 0x9ACD, + 134245 - 131105: 0x9ACE, + 134263 - 131105: 0xFAEE, + 134264 - 131105: 0x9BCC, + 134268 - 131105: 0x9ACF, + 134285 - 131105: 0x9AD1, + 134294 - 131105: 0x9DFA, + 134300 - 131105: 0x9D7C, + 134325 - 131105: 0x9AD3, + 134328 - 131105: 0x97A6, + 134351 - 131105: 0x995F, + 134355 - 131105: 0xFBF6, + 134356 - 131105: 0x9FC5, + 134357 - 131105: 0x8A59, + 134358 - 131105: 0x8B6B, + 134365 - 131105: 0x9AD4, + 134381 - 131105: 0x9AD5, + 134399 - 131105: 0x97A2, + 134421 - 131105: 0x8A44, + 134440 - 131105: 0x9F4A, + 134449 - 131105: 0x90A1, + 134450 - 131105: 0xFDA4, + 134470 - 131105: 0x8A64, + 134471 - 131105: 0x8AF2, + 134472 - 131105: 0x8AF8, + 134473 - 131105: 0x9DD8, + 134476 - 131105: 0x94D6, + 134477 - 131105: 0xFAFE, + 134478 - 131105: 0xFBA7, + 134511 - 131105: 0x9AD6, + 134513 - 131105: 0x9F4D, + 134516 - 131105: 0xFAF6, + 134524 - 131105: 0x8A57, + 134526 - 131105: 0x8B43, + 134527 - 131105: 0x8B44, + 134550 - 131105: 0x8AB6, + 134556 - 131105: 0x8AC0, + 134567 - 131105: 0x9E54, + 134578 - 131105: 0x9AD7, + 134600 - 131105: 0x9AD8, + 134660 - 131105: 0x9ADC, + 134665 - 131105: 0x8ACA, + 134666 - 131105: 0x9EA8, + 134669 - 131105: 0x9263, + 134670 - 131105: 0x9ADD, + 134671 - 131105: 0x8B65, + 134672 - 131105: 0x8B6F, + 134673 - 131105: 0x8B7E, + 134678 - 131105: 0x8F43, + 134685 - 131105: 0x92D0, + 134732 - 131105: 0x8AF4, + 134765 - 131105: 0x9DBE, + 134771 - 131105: 0x9AE1, + 134773 - 131105: 0xFCDE, + 134774 - 131105: 0x9DFD, + 134775 - 131105: 0x8B66, + 134776 - 131105: 0x8B70, + 134777 - 131105: 0x8B75, + 134778 - 131105: 0x8AE4, + 134779 - 131105: 0x8BA4, + 134796 - 131105: 0x8AED, + 134806 - 131105: 0x8A5D, + 134808 - 131105: 0x8B48, + 134813 - 131105: 0x9DED, + 134818 - 131105: 0x9E40, + 134826 - 131105: 0x8AEF, + 134827 - 131105: 0x8AF6, + 134828 - 131105: 0x9E76, + 134838 - 131105: 0x9EE3, + 134871 - 131105: 0x9ADE, + 134872 - 131105: 0x8DFE, + 134877 - 131105: 0xFAFC, + 134904 - 131105: 0x9CB1, + 134905 - 131105: 0x9E77, + 134906 - 131105: 0x8B64, + 134907 - 131105: 0x8B67, + 134941 - 131105: 0x974B, + 134950 - 131105: 0x9653, + 134957 - 131105: 0x9AE0, + 134958 - 131105: 0x8B4A, + 134960 - 131105: 0x8AF1, + 134961 - 131105: 0x8AD7, + 134971 - 131105: 0xA0AB, + 134988 - 131105: 0x8AB5, + 135012 - 131105: 0x8A5F, + 135053 - 131105: 0x8AEE, + 135056 - 131105: 0x9ADF, + 135085 - 131105: 0x8AFE, + 135092 - 131105: 0x8A58, + 135093 - 131105: 0x8BA3, + 135094 - 131105: 0x8BA7, + 135100 - 131105: 0x9AE3, + 135135 - 131105: 0x9261, + 135146 - 131105: 0x9DD7, + 135147 - 131105: 0x9E7D, + 135148 - 131105: 0x9EA7, + 135149 - 131105: 0x9EAB, + 135188 - 131105: 0x9042, + 135197 - 131105: 0x8B79, + 135198 - 131105: 0x8B7A, + 135247 - 131105: 0x9AE6, + 135260 - 131105: 0x9AE5, + 135279 - 131105: 0x8A7E, + 135285 - 131105: 0x9E44, + 135286 - 131105: 0x9AE7, + 135287 - 131105: 0x8A7C, + 135288 - 131105: 0x8B71, + 135291 - 131105: 0x9AE9, + 135304 - 131105: 0x9AEA, + 135318 - 131105: 0x9AEB, + 135325 - 131105: 0x8ABD, + 135348 - 131105: 0xFB4E, + 135359 - 131105: 0x9AED, + 135360 - 131105: 0x8AF9, + 135361 - 131105: 0x9E63, + 135367 - 131105: 0x8B49, + 135368 - 131105: 0x8ACE, + 135369 - 131105: 0x8B6E, + 135375 - 131105: 0x8AE8, + 135379 - 131105: 0x9AEE, + 135396 - 131105: 0x92CE, + 135412 - 131105: 0x8A5A, + 135413 - 131105: 0x8B7B, + 135414 - 131105: 0x8B7C, + 135471 - 131105: 0x9AEF, + 135483 - 131105: 0x9AF0, + 135485 - 131105: 0x8AFA, + 135493 - 131105: 0x8941, + 135496 - 131105: 0x8B72, + 135503 - 131105: 0x8AF3, + 135552 - 131105: 0x8BA8, + 135559 - 131105: 0x9EAE, + 135641 - 131105: 0x9E72, + 135740 - 131105: 0xFB73, + 135759 - 131105: 0xFB5F, + 135804 - 131105: 0x90BA, + 135848 - 131105: 0x91FE, + 135849 - 131105: 0x9EF6, + 135856 - 131105: 0x97ED, + 135907 - 131105: 0x9AF3, + 135934 - 131105: 0xA0EE, + 135938 - 131105: 0x967C, + 135939 - 131105: 0x9345, + 135940 - 131105: 0x986E, + 135941 - 131105: 0xFA56, + 135990 - 131105: 0x9AF5, + 135994 - 131105: 0xFC4B, + 136053 - 131105: 0x9AF4, + 136054 - 131105: 0xFEDE, + 136078 - 131105: 0xFCB7, + 136088 - 131105: 0x97F1, + 136092 - 131105: 0x97C7, + 136133 - 131105: 0x9CCB, + 136134 - 131105: 0x9240, + 136173 - 131105: 0x9CE8, + 136190 - 131105: 0x91FD, + 136211 - 131105: 0x974E, + 136214 - 131105: 0xFB68, + 136228 - 131105: 0x976C, + 136255 - 131105: 0x8CC2, + 136274 - 131105: 0x97E8, + 136276 - 131105: 0xFB6A, + 136277 - 131105: 0x8B74, + 136330 - 131105: 0x8EE7, + 136343 - 131105: 0xFDC8, + 136374 - 131105: 0x9241, + 136424 - 131105: 0x96A1, + 136445 - 131105: 0x8EF3, + 136567 - 131105: 0x9AF7, + 136578 - 131105: 0x8FA6, + 136598 - 131105: 0xFAD6, + 136714 - 131105: 0x9CC7, + 136723 - 131105: 0xFAD7, + 136729 - 131105: 0x9AF8, + 136766 - 131105: 0xFBA1, + 136801 - 131105: 0x8EC5, + 136850 - 131105: 0xFBA4, + 136888 - 131105: 0xFBC2, + 136890 - 131105: 0x9AC1, + 136896 - 131105: 0x91FA, + 136897 - 131105: 0xFEDB, + 136898 - 131105: 0x97AB, + 136915 - 131105: 0x9147, + 136917 - 131105: 0xFBB1, + 136927 - 131105: 0x8FEA, + 136934 - 131105: 0x94D2, + 136935 - 131105: 0xFE61, + 136936 - 131105: 0xFACE, + 136954 - 131105: 0x92ED, + 136955 - 131105: 0x91F3, + 136956 - 131105: 0x93C6, + 136958 - 131105: 0x935A, + 136973 - 131105: 0xFAFB, + 136976 - 131105: 0x92EF, + 136998 - 131105: 0xFAC8, + 137018 - 131105: 0x9847, + 137019 - 131105: 0x9366, + 137020 - 131105: 0x9855, + 137047 - 131105: 0x96E6, + 137068 - 131105: 0x9F43, + 137069 - 131105: 0x9FAA, + 137070 - 131105: 0x94DA, + 137071 - 131105: 0x92EE, + 137072 - 131105: 0xFCAF, + 137073 - 131105: 0xFBFB, + 137075 - 131105: 0x8EF9, + 137076 - 131105: 0x91F6, + 137131 - 131105: 0x9364, + 137136 - 131105: 0x94F5, + 137137 - 131105: 0x9CB6, + 137138 - 131105: 0xFBAD, + 137139 - 131105: 0x984E, + 137140 - 131105: 0x8F44, + 137141 - 131105: 0x96FD, + 137155 - 131105: 0x9AF9, + 137159 - 131105: 0x9AFA, + 137177 - 131105: 0x9769, + 137178 - 131105: 0x95D4, + 137179 - 131105: 0x984B, + 137180 - 131105: 0xFBAA, + 137183 - 131105: 0x987C, + 137199 - 131105: 0x91EA, + 137205 - 131105: 0x9DAF, + 137206 - 131105: 0x9DC5, + 137208 - 131105: 0x91F1, + 137209 - 131105: 0x8EB1, + 137210 - 131105: 0x97A9, + 137211 - 131105: 0xFBAC, + 137212 - 131105: 0xFCB8, + 137248 - 131105: 0x9CB9, + 137256 - 131105: 0xFBB0, + 137257 - 131105: 0xFCD2, + 137258 - 131105: 0x93CB, + 137261 - 131105: 0x9AFD, + 137273 - 131105: 0x91F4, + 137274 - 131105: 0x8BAC, + 137275 - 131105: 0xA055, + 137280 - 131105: 0x9574, + 137285 - 131105: 0x95BE, + 137298 - 131105: 0x97AD, + 137310 - 131105: 0x8EE9, + 137313 - 131105: 0x92F8, + 137314 - 131105: 0x97BE, + 137315 - 131105: 0x916C, + 137316 - 131105: 0x94AA, + 137335 - 131105: 0xFC63, + 137339 - 131105: 0x9DC6, + 137347 - 131105: 0x97B5, + 137348 - 131105: 0x92B8, + 137349 - 131105: 0x91EF, + 137374 - 131105: 0xFEA6, + 137375 - 131105: 0x9760, + 137376 - 131105: 0x9358, + 137377 - 131105: 0x9576, + 137378 - 131105: 0x8FAC, + 137406 - 131105: 0x91EC, + 137407 - 131105: 0x97B4, + 137425 - 131105: 0x91F7, + 137430 - 131105: 0x974A, + 137431 - 131105: 0xFB49, + 137432 - 131105: 0x9578, + 137433 - 131105: 0x93BC, + 137466 - 131105: 0x91D6, + 137475 - 131105: 0x9355, + 137476 - 131105: 0x9356, + 137477 - 131105: 0x9851, + 137488 - 131105: 0x8FF8, + 137489 - 131105: 0xFBC0, + 137490 - 131105: 0x93F2, + 137493 - 131105: 0x90D0, + 137500 - 131105: 0x9C44, + 137506 - 131105: 0x9255, + 137511 - 131105: 0x9363, + 137531 - 131105: 0x91A5, + 137540 - 131105: 0xA0ED, + 137560 - 131105: 0xFD6B, + 137578 - 131105: 0x9AFE, + 137596 - 131105: 0x9351, + 137600 - 131105: 0x8C57, + 137603 - 131105: 0xFA78, + 137608 - 131105: 0xFEA8, + 137622 - 131105: 0x9350, + 137691 - 131105: 0xFA4C, + 137715 - 131105: 0x92F7, + 137773 - 131105: 0x9B40, + 137780 - 131105: 0xFBCE, + 137797 - 131105: 0x9B41, + 137803 - 131105: 0xFEAD, + 137827 - 131105: 0x8761, + 138052 - 131105: 0xFBD5, + 138177 - 131105: 0x8BC2, + 138178 - 131105: 0x9A7C, + 138282 - 131105: 0x9B42, + 138352 - 131105: 0x9B43, + 138402 - 131105: 0x9E79, + 138405 - 131105: 0xFBD9, + 138412 - 131105: 0x9B44, + 138566 - 131105: 0xA0A7, + 138579 - 131105: 0x877B, + 138590 - 131105: 0x876E, + 138640 - 131105: 0x9BF3, + 138678 - 131105: 0x8C79, + 138682 - 131105: 0x935E, + 138698 - 131105: 0x89CB, + 138705 - 131105: 0x9F53, + 138731 - 131105: 0x93D7, + 138745 - 131105: 0xFBE1, + 138780 - 131105: 0xFED0, + 138787 - 131105: 0x8CF1, + 138807 - 131105: 0xFBE2, + 138813 - 131105: 0xFCE3, + 138889 - 131105: 0x9074, + 138916 - 131105: 0xFBE6, + 138920 - 131105: 0x9BB7, + 138952 - 131105: 0x9B45, + 138965 - 131105: 0x9B47, + 139023 - 131105: 0x9F50, + 139029 - 131105: 0x9B48, + 139114 - 131105: 0xFC5B, + 139166 - 131105: 0x98A9, + 139169 - 131105: 0x9CFD, + 139240 - 131105: 0x884C, + 139333 - 131105: 0x9B4B, + 139337 - 131105: 0xFBEC, + 139390 - 131105: 0x8C69, + 139418 - 131105: 0x9BA8, + 139463 - 131105: 0x8AD5, + 139516 - 131105: 0xFA73, + 139562 - 131105: 0xFD59, + 139611 - 131105: 0x91A2, + 139635 - 131105: 0xFBED, + 139642 - 131105: 0x9CA9, + 139681 - 131105: 0x8AA8, + 139713 - 131105: 0x8D42, + 139715 - 131105: 0x9BC3, + 139784 - 131105: 0x8AE1, + 139900 - 131105: 0x9B4E, + 140065 - 131105: 0x95D0, + 140069 - 131105: 0x905F, + 140221 - 131105: 0x97EE, + 140240 - 131105: 0xFC4E, + 140247 - 131105: 0x9B4F, + 140282 - 131105: 0x9B50, + 140389 - 131105: 0x9EC6, + 140401 - 131105: 0xFC50, + 140427 - 131105: 0xFD73, + 140433 - 131105: 0xFDA7, + 140464 - 131105: 0x9DA2, + 140476 - 131105: 0x87D1, + 140481 - 131105: 0x87D3, + 140489 - 131105: 0x87D4, + 140492 - 131105: 0x87D5, + 140525 - 131105: 0xFA58, + 140563 - 131105: 0xFA5E, + 140571 - 131105: 0xA059, + 140592 - 131105: 0xFA75, + 140628 - 131105: 0xFBBE, + 140685 - 131105: 0x9CA2, + 140719 - 131105: 0x9370, + 140734 - 131105: 0x9371, + 140827 - 131105: 0x9377, + 140828 - 131105: 0xFEEF, + 140843 - 131105: 0x936D, + 140904 - 131105: 0xFC5D, + 140922 - 131105: 0x90B8, + 140950 - 131105: 0x8AFC, + 140952 - 131105: 0xFB41, + 141044 - 131105: 0x9E6B, + 141045 - 131105: 0x94E3, + 141046 - 131105: 0x8EE2, + 141074 - 131105: 0x8C7D, + 141076 - 131105: 0x8ED7, + 141083 - 131105: 0x9C4D, + 141087 - 131105: 0x96A3, + 141098 - 131105: 0x9B51, + 141173 - 131105: 0x8AC3, + 141185 - 131105: 0x96AA, + 141206 - 131105: 0x8CE2, + 141236 - 131105: 0xFC68, + 141237 - 131105: 0x8B6D, + 141261 - 131105: 0xFD67, + 141315 - 131105: 0x8AE9, + 141407 - 131105: 0xFCA1, + 141408 - 131105: 0x936C, + 141425 - 131105: 0x9B52, + 141485 - 131105: 0xFE70, + 141505 - 131105: 0xFCA8, + 141559 - 131105: 0xFCE9, + 141606 - 131105: 0x9CB4, + 141625 - 131105: 0x8AEA, + 141647 - 131105: 0x9B53, + 141671 - 131105: 0x9B55, + 141675 - 131105: 0x96AB, + 141696 - 131105: 0xFCA7, + 141715 - 131105: 0x9B56, + 141926 - 131105: 0x8ABC, + 142031 - 131105: 0x8ACB, + 142037 - 131105: 0x9B57, + 142054 - 131105: 0x89CD, + 142056 - 131105: 0x9B59, + 142094 - 131105: 0x9B5B, + 142114 - 131105: 0x93A5, + 142143 - 131105: 0x9B5D, + 142147 - 131105: 0x9E4F, + 142186 - 131105: 0x93A3, + 142282 - 131105: 0x8A7B, + 142286 - 131105: 0x8B42, + 142374 - 131105: 0x9750, + 142375 - 131105: 0x8FB3, + 142392 - 131105: 0x8A50, + 142412 - 131105: 0x9B60, + 142417 - 131105: 0x8B45, + 142421 - 131105: 0x8B46, + 142434 - 131105: 0x9DFE, + 142472 - 131105: 0x9B62, + 142491 - 131105: 0x937B, + 142497 - 131105: 0x93B1, + 142505 - 131105: 0x8A60, + 142514 - 131105: 0x8AD8, + 142519 - 131105: 0x9B63, + 142530 - 131105: 0x8A69, + 142534 - 131105: 0x8A47, + 142537 - 131105: 0x8ACC, + 142599 - 131105: 0x937C, + 142600 - 131105: 0x9B65, + 142610 - 131105: 0x9B66, + 142660 - 131105: 0x8A72, + 142668 - 131105: 0x8A7A, + 142695 - 131105: 0x93AF, + 142733 - 131105: 0x8AB0, + 142741 - 131105: 0x9B68, + 142752 - 131105: 0x9EA3, + 142755 - 131105: 0xFAEC, + 142756 - 131105: 0x8B77, + 142775 - 131105: 0x9B67, + 142830 - 131105: 0x8B59, + 142861 - 131105: 0xFCB1, + 142902 - 131105: 0xFCBB, + 142914 - 131105: 0x9B69, + 142968 - 131105: 0x93A8, + 142987 - 131105: 0x8AE0, + 143027 - 131105: 0x9E51, + 143087 - 131105: 0x8F5F, + 143220 - 131105: 0x9B6A, + 143308 - 131105: 0x9B6B, + 143331 - 131105: 0x97EC, + 143411 - 131105: 0x9B6C, + 143428 - 131105: 0xFE4E, + 143435 - 131105: 0xFDC2, + 143462 - 131105: 0x9B6D, + 143485 - 131105: 0x9167, + 143486 - 131105: 0xFCCC, + 143502 - 131105: 0x93B6, + 143543 - 131105: 0x90E4, + 143548 - 131105: 0x90E5, + 143578 - 131105: 0x9EF2, + 143619 - 131105: 0x93CA, + 143677 - 131105: 0x8BBC, + 143741 - 131105: 0x8F46, + 143746 - 131105: 0x93CF, + 143780 - 131105: 0xFCDB, + 143781 - 131105: 0xFCDC, + 143795 - 131105: 0x93C0, + 143816 - 131105: 0xFCE6, + 143817 - 131105: 0x96E7, + 143850 - 131105: 0x87A7, + 143863 - 131105: 0xFCD8, + 143864 - 131105: 0xFCD9, + 143865 - 131105: 0xFDA6, + 143887 - 131105: 0x93CE, + 143909 - 131105: 0x95F1, + 143919 - 131105: 0x9CE9, + 143921 - 131105: 0xFCE4, + 143922 - 131105: 0x94AF, + 143923 - 131105: 0xFA77, + 143924 - 131105: 0x93CC, + 143958 - 131105: 0x8CE1, + 143966 - 131105: 0x87A9, + 143970 - 131105: 0x905A, + 144001 - 131105: 0x8C54, + 144009 - 131105: 0x93BF, + 144010 - 131105: 0xFB51, + 144043 - 131105: 0x93B9, + 144044 - 131105: 0xFED7, + 144045 - 131105: 0x93B7, + 144082 - 131105: 0x93D9, + 144096 - 131105: 0x93BB, + 144097 - 131105: 0x93DA, + 144128 - 131105: 0x98A3, + 144138 - 131105: 0x90D1, + 144159 - 131105: 0x9B6E, + 144308 - 131105: 0xFA70, + 144332 - 131105: 0x9BEB, + 144350 - 131105: 0x9B6F, + 144358 - 131105: 0xFCFC, + 144372 - 131105: 0x8B40, + 144373 - 131105: 0xA07B, + 144377 - 131105: 0x8CA1, + 144378 - 131105: 0x97F7, + 144382 - 131105: 0x93E2, + 144384 - 131105: 0xFCD6, + 144447 - 131105: 0x9559, + 144464 - 131105: 0x93A6, + 144495 - 131105: 0xFD40, + 144498 - 131105: 0x935F, + 144613 - 131105: 0x97F2, + 144665 - 131105: 0x9C76, + 144688 - 131105: 0x8EF8, + 144721 - 131105: 0x8CEB, + 144730 - 131105: 0x8F47, + 144743 - 131105: 0x9B74, + 144789 - 131105: 0x92B4, + 144793 - 131105: 0x91ED, + 144796 - 131105: 0x96D2, + 144827 - 131105: 0x87D8, + 144845 - 131105: 0xFD46, + 144846 - 131105: 0x8F4F, + 144847 - 131105: 0x9549, + 144883 - 131105: 0x9B75, + 144896 - 131105: 0xFA5C, + 144919 - 131105: 0x8751, + 144922 - 131105: 0x9B79, + 144956 - 131105: 0xFD4B, + 144960 - 131105: 0x96D3, + 144985 - 131105: 0xFD58, + 144991 - 131105: 0x945F, + 145015 - 131105: 0xA0F5, + 145038 - 131105: 0x87C7, + 145054 - 131105: 0x877C, + 145062 - 131105: 0x9243, + 145069 - 131105: 0x97FA, + 145082 - 131105: 0x9DD9, + 145119 - 131105: 0x97F4, + 145134 - 131105: 0x924D, + 145155 - 131105: 0xFD5B, + 145174 - 131105: 0x9B7A, + 145184 - 131105: 0x9ED5, + 145197 - 131105: 0xFAAE, + 145199 - 131105: 0x9CC9, + 145215 - 131105: 0x9258, + 145254 - 131105: 0x8EC8, + 145281 - 131105: 0x94B4, + 145314 - 131105: 0x93E1, + 145340 - 131105: 0x93DF, + 145346 - 131105: 0xFCF0, + 145365 - 131105: 0x93EC, + 145366 - 131105: 0x97F6, + 145367 - 131105: 0x96CF, + 145466 - 131105: 0x93DE, + 145858 - 131105: 0x8ACF, + 146087 - 131105: 0x9BA2, + 146139 - 131105: 0xFD69, + 146158 - 131105: 0x9352, + 146170 - 131105: 0x98A2, + 146202 - 131105: 0x8CE7, + 146266 - 131105: 0xFD6E, + 146531 - 131105: 0x8CA4, + 146585 - 131105: 0xFA7C, + 146586 - 131105: 0x93FA, + 146587 - 131105: 0x907C, + 146613 - 131105: 0x8F67, + 146615 - 131105: 0x9DB7, + 146631 - 131105: 0xA0E9, + 146632 - 131105: 0xFA4E, + 146633 - 131105: 0xFDA1, + 146684 - 131105: 0x9E74, + 146685 - 131105: 0x9FBF, + 146686 - 131105: 0x9ECB, + 146687 - 131105: 0x9BB9, + 146752 - 131105: 0x9DD4, + 146779 - 131105: 0x97B9, + 146814 - 131105: 0x8EF1, + 146831 - 131105: 0x957B, + 146870 - 131105: 0x9ED2, + 146871 - 131105: 0x9753, + 146872 - 131105: 0x96A4, + 146873 - 131105: 0x8FBE, + 146874 - 131105: 0x94D9, + 146875 - 131105: 0x9058, + 146876 - 131105: 0xFD79, + 146877 - 131105: 0xFD7B, + 146915 - 131105: 0x8EDA, + 146936 - 131105: 0x8EFA, + 146950 - 131105: 0x8762, + 146961 - 131105: 0x9BA5, + 146988 - 131105: 0x9ED9, + 146989 - 131105: 0x97D4, + 146990 - 131105: 0x90BB, + 146991 - 131105: 0xFDBC, + 146992 - 131105: 0xFDC6, + 146993 - 131105: 0x9248, + 147001 - 131105: 0x92B5, + 147080 - 131105: 0x9DC1, + 147081 - 131105: 0x92B9, + 147082 - 131105: 0x92A6, + 147083 - 131105: 0x8F4B, + 147129 - 131105: 0x9BA6, + 147135 - 131105: 0x92B6, + 147159 - 131105: 0x8E40, + 147191 - 131105: 0x9ED8, + 147192 - 131105: 0x945E, + 147193 - 131105: 0x985F, + 147194 - 131105: 0x94CE, + 147195 - 131105: 0x924A, + 147196 - 131105: 0xFD70, + 147253 - 131105: 0x9467, + 147265 - 131105: 0x8DEC, + 147274 - 131105: 0x9BD8, + 147297 - 131105: 0x8763, + 147327 - 131105: 0x9448, + 147328 - 131105: 0xFAC1, + 147329 - 131105: 0x9CF7, + 147330 - 131105: 0xFDBE, + 147343 - 131105: 0x8FDA, + 147380 - 131105: 0xFDD9, + 147383 - 131105: 0xFC7E, + 147392 - 131105: 0x93F9, + 147397 - 131105: 0xFA43, + 147435 - 131105: 0xFAEB, + 147436 - 131105: 0xFAC3, + 147437 - 131105: 0x97D3, + 147438 - 131105: 0x95F9, + 147439 - 131105: 0x9C48, + 147440 - 131105: 0xFDD8, + 147473 - 131105: 0xA0D8, + 147513 - 131105: 0xFDD7, + 147514 - 131105: 0xFB4A, + 147515 - 131105: 0x9BAF, + 147516 - 131105: 0x944B, + 147517 - 131105: 0xFDC9, + 147543 - 131105: 0x8EAC, + 147589 - 131105: 0xFDB2, + 147595 - 131105: 0x925A, + 147596 - 131105: 0xFCBD, + 147597 - 131105: 0x92D9, + 147601 - 131105: 0xFDD5, + 147657 - 131105: 0x92DD, + 147681 - 131105: 0x9259, + 147692 - 131105: 0x8CF0, + 147716 - 131105: 0x96BA, + 147727 - 131105: 0x925B, + 147737 - 131105: 0x9BAB, + 147775 - 131105: 0xFDDA, + 147776 - 131105: 0xFDDE, + 147780 - 131105: 0xFDD3, + 147790 - 131105: 0x8C46, + 147797 - 131105: 0xFDD6, + 147798 - 131105: 0xFDDC, + 147799 - 131105: 0xFDDD, + 147804 - 131105: 0x90FE, + 147807 - 131105: 0xFEA1, + 147809 - 131105: 0x87A5, + 147831 - 131105: 0x8BAD, + 147834 - 131105: 0x9CD8, + 147875 - 131105: 0x9E6D, + 147876 - 131105: 0xFD7C, + 147877 - 131105: 0xFB61, + 147884 - 131105: 0x96F8, + 147893 - 131105: 0x96F0, + 147917 - 131105: 0xFCF4, + 147938 - 131105: 0xFE60, + 147964 - 131105: 0x9852, + 147995 - 131105: 0x964F, + 148043 - 131105: 0x916E, + 148054 - 131105: 0x986D, + 148057 - 131105: 0x9864, + 148086 - 131105: 0x9453, + 148087 - 131105: 0xFDEC, + 148088 - 131105: 0xFB78, + 148100 - 131105: 0x95BA, + 148115 - 131105: 0x985D, + 148117 - 131105: 0x92F9, + 148133 - 131105: 0x985A, + 148159 - 131105: 0x8750, + 148161 - 131105: 0xFDF6, + 148169 - 131105: 0x93D0, + 148170 - 131105: 0x9862, + 148206 - 131105: 0x9BAD, + 148218 - 131105: 0x974F, + 148237 - 131105: 0x9BAE, + 148250 - 131105: 0x9452, + 148276 - 131105: 0x9BB0, + 148296 - 131105: 0x91D2, + 148322 - 131105: 0x97EA, + 148323 - 131105: 0xFB6B, + 148324 - 131105: 0x91B1, + 148325 - 131105: 0xFDF3, + 148364 - 131105: 0x92CB, + 148374 - 131105: 0x9BB1, + 148380 - 131105: 0xFCEC, + 148413 - 131105: 0x986B, + 148417 - 131105: 0x9751, + 148457 - 131105: 0x9871, + 148458 - 131105: 0x95EF, + 148466 - 131105: 0x9EF3, + 148472 - 131105: 0x91E8, + 148484 - 131105: 0x9BBA, + 148533 - 131105: 0xFB4C, + 148534 - 131105: 0x926A, + 148570 - 131105: 0xFDF8, + 148571 - 131105: 0x9861, + 148595 - 131105: 0x91E7, + 148615 - 131105: 0x93ED, + 148616 - 131105: 0x9744, + 148665 - 131105: 0x91E1, + 148668 - 131105: 0xFBF5, + 148686 - 131105: 0x9869, + 148691 - 131105: 0x8A62, + 148694 - 131105: 0x9BBB, + 148741 - 131105: 0x8CA8, + 148769 - 131105: 0x9C55, + 148856 - 131105: 0x8E77, + 148936 - 131105: 0x8AB2, + 149016 - 131105: 0x9EBC, + 149034 - 131105: 0x93E6, + 149093 - 131105: 0x93A2, + 149108 - 131105: 0x9BBD, + 149143 - 131105: 0x94B3, + 149204 - 131105: 0x937D, + 149254 - 131105: 0x9E66, + 149285 - 131105: 0x9459, + 149295 - 131105: 0x9BBF, + 149391 - 131105: 0x9458, + 149472 - 131105: 0x9EA5, + 149522 - 131105: 0x9BC7, + 149539 - 131105: 0xFE54, + 149634 - 131105: 0x8E74, + 149737 - 131105: 0x8BD6, + 149744 - 131105: 0x94B6, + 149745 - 131105: 0xFD74, + 149746 - 131105: 0x98C0, + 149747 - 131105: 0x94A5, + 149755 - 131105: 0x9BC8, + 149759 - 131105: 0x95ED, + 149760 - 131105: 0xFD7E, + 149761 - 131105: 0xFBEB, + 149772 - 131105: 0xFD7D, + 149782 - 131105: 0x976F, + 149783 - 131105: 0x9461, + 149785 - 131105: 0x9FC1, + 149807 - 131105: 0x95D7, + 149811 - 131105: 0xFA52, + 149812 - 131105: 0x9C58, + 149822 - 131105: 0x9F68, + 149823 - 131105: 0x9BE7, + 149824 - 131105: 0xFCCE, + 149825 - 131105: 0x96E8, + 149826 - 131105: 0xFA49, + 149827 - 131105: 0x97A1, + 149858 - 131105: 0x954D, + 149859 - 131105: 0x9EF8, + 149876 - 131105: 0xFE49, + 149877 - 131105: 0x91CE, + 149878 - 131105: 0x9771, + 149883 - 131105: 0x8CCF, + 149887 - 131105: 0xFDB1, + 149890 - 131105: 0xFC6E, + 149896 - 131105: 0x9CF2, + 149897 - 131105: 0x93B8, + 149898 - 131105: 0x9043, + 149899 - 131105: 0x9759, + 149900 - 131105: 0x94D7, + 149901 - 131105: 0xFE66, + 149902 - 131105: 0x947D, + 149903 - 131105: 0xFC6F, + 149908 - 131105: 0x9246, + 149924 - 131105: 0xFA6D, + 149927 - 131105: 0x8EF7, + 149929 - 131105: 0xFBB7, + 149931 - 131105: 0x947C, + 149932 - 131105: 0x92CD, + 149933 - 131105: 0x97B2, + 149943 - 131105: 0xFE65, + 149944 - 131105: 0x967E, + 149945 - 131105: 0x9758, + 149946 - 131105: 0x9B77, + 149947 - 131105: 0x91CF, + 149957 - 131105: 0x94A4, + 149968 - 131105: 0x9CAD, + 149978 - 131105: 0x8BAB, + 149982 - 131105: 0x96D5, + 149983 - 131105: 0xFCB3, + 149987 - 131105: 0x93AE, + 149989 - 131105: 0x976D, + 149996 - 131105: 0x9446, + 149997 - 131105: 0x95F7, + 150006 - 131105: 0x9C46, + 150007 - 131105: 0x955B, + 150008 - 131105: 0x91D1, + 150009 - 131105: 0x94F4, + 150011 - 131105: 0xFE67, + 150030 - 131105: 0x92A5, + 150034 - 131105: 0xFEDF, + 150035 - 131105: 0x8CAB, + 150037 - 131105: 0x9BC9, + 150049 - 131105: 0xFCED, + 150050 - 131105: 0xFDFA, + 150051 - 131105: 0xFCC8, + 150052 - 131105: 0xFE62, + 150053 - 131105: 0x91FC, + 150054 - 131105: 0xFE6B, + 150055 - 131105: 0xFDF9, + 150056 - 131105: 0xFCC7, + 150057 - 131105: 0x914E, + 150058 - 131105: 0x9CB8, + 150078 - 131105: 0x9767, + 150082 - 131105: 0x95EE, + 150085 - 131105: 0x9BB2, + 150090 - 131105: 0x9460, + 150094 - 131105: 0x94A2, + 150095 - 131105: 0x9875, + 150096 - 131105: 0x97AC, + 150097 - 131105: 0x91D3, + 150109 - 131105: 0x987B, + 150117 - 131105: 0x8EEB, + 150118 - 131105: 0x976A, + 150119 - 131105: 0x965E, + 150129 - 131105: 0x97EB, + 150135 - 131105: 0x9FF9, + 150136 - 131105: 0x95F8, + 150137 - 131105: 0xFEA2, + 150138 - 131105: 0x8FE6, + 150156 - 131105: 0xFE7E, + 150163 - 131105: 0x9DA4, + 150164 - 131105: 0x9768, + 150165 - 131105: 0x8EEC, + 150166 - 131105: 0x94BD, + 150180 - 131105: 0x945B, + 150181 - 131105: 0x9CF6, + 150182 - 131105: 0xFAA7, + 150183 - 131105: 0x9BD9, + 150193 - 131105: 0xFA5D, + 150194 - 131105: 0x9656, + 150195 - 131105: 0x9762, + 150202 - 131105: 0x94BA, + 150203 - 131105: 0xA04F, + 150204 - 131105: 0x92D8, + 150208 - 131105: 0x9BCB, + 150215 - 131105: 0x94BB, + 150218 - 131105: 0x9D5F, + 150225 - 131105: 0x90CF, + 150239 - 131105: 0x9465, + 150242 - 131105: 0x9F4C, + 150249 - 131105: 0x90D8, + 150287 - 131105: 0x8D5B, + 150382 - 131105: 0x9EBE, + 150517 - 131105: 0xFB6D, + 150537 - 131105: 0x95CA, + 150686 - 131105: 0x9DC2, + 150687 - 131105: 0x97F8, + 150729 - 131105: 0x8FFC, + 150745 - 131105: 0x9473, + 150790 - 131105: 0x9474, + 150803 - 131105: 0xFEB7, + 150968 - 131105: 0x8A4B, + 151018 - 131105: 0x8A55, + 151019 - 131105: 0x8B69, + 151099 - 131105: 0x8ADC, + 151120 - 131105: 0x8B76, + 151205 - 131105: 0x9BCE, + 151207 - 131105: 0x8A68, + 151310 - 131105: 0xA0F8, + 151388 - 131105: 0x98DF, + 151426 - 131105: 0xFEB5, + 151430 - 131105: 0x9BCF, + 151447 - 131105: 0x96FB, + 151450 - 131105: 0x9BFB, + 151465 - 131105: 0x9ECE, + 151480 - 131105: 0x8EE5, + 151490 - 131105: 0x9E7B, + 151596 - 131105: 0x9BD2, + 151634 - 131105: 0x8AA5, + 151709 - 131105: 0xFECE, + 151851 - 131105: 0x8A45, + 151880 - 131105: 0x9DFC, + 151933 - 131105: 0xFECF, + 151934 - 131105: 0x8BA5, + 152013 - 131105: 0x8C4A, + 152035 - 131105: 0x8AEC, + 152038 - 131105: 0xFCE0, + 152039 - 131105: 0x94AD, + 152096 - 131105: 0xFED5, + 152097 - 131105: 0x94AC, + 152144 - 131105: 0xFC5A, + 152217 - 131105: 0x9BD6, + 152263 - 131105: 0x8A6F, + 152280 - 131105: 0x8BA9, + 152334 - 131105: 0x8E5F, + 152337 - 131105: 0x9DCB, + 152339 - 131105: 0xFCE7, + 152601 - 131105: 0x9BD7, + 152613 - 131105: 0x93C8, + 152623 - 131105: 0x91F0, + 152624 - 131105: 0x8FE0, + 152646 - 131105: 0x9BDB, + 152684 - 131105: 0x90ED, + 152686 - 131105: 0x9BDC, + 152730 - 131105: 0x8D53, + 152881 - 131105: 0xA0EC, + 152885 - 131105: 0x98FA, + 152895 - 131105: 0x9BE0, + 152923 - 131105: 0x93C7, + 152924 - 131105: 0x9249, + 152925 - 131105: 0x96E1, + 152926 - 131105: 0x9BE2, + 152930 - 131105: 0x9BE4, + 152933 - 131105: 0x8FE1, + 152934 - 131105: 0x9BE5, + 152961 - 131105: 0x94C0, + 152964 - 131105: 0x93C3, + 152975 - 131105: 0x93C5, + 153017 - 131105: 0x9079, + 153045 - 131105: 0x977B, + 153051 - 131105: 0x907E, + 153056 - 131105: 0xFEE6, + 153093 - 131105: 0xFE46, + 153141 - 131105: 0x9DB8, + 153169 - 131105: 0x9270, + 153219 - 131105: 0x95A8, + 153237 - 131105: 0x8CB0, + 153315 - 131105: 0x94C8, + 153334 - 131105: 0x98B9, + 153350 - 131105: 0x9140, + 153373 - 131105: 0xFCBE, + 153381 - 131105: 0x9157, + 153405 - 131105: 0x8BB2, + 153458 - 131105: 0xFADF, + 153543 - 131105: 0x9BE6, + 153567 - 131105: 0x9643, + 153568 - 131105: 0x8E44, + 153569 - 131105: 0x9C4F, + 153687 - 131105: 0xFEF4, + 153693 - 131105: 0x9BE8, + 153714 - 131105: 0x93DC, + 153800 - 131105: 0x966F, + 153822 - 131105: 0x87A1, + 153825 - 131105: 0x8E4A, + 153859 - 131105: 0x9BED, + 153926 - 131105: 0x92F6, + 153942 - 131105: 0x9DB9, + 154028 - 131105: 0x8E4E, + 154060 - 131105: 0xFBCF, + 154196 - 131105: 0x8760, + 154261 - 131105: 0x9EC2, + 154268 - 131105: 0x94E5, + 154286 - 131105: 0x9BF0, + 154287 - 131105: 0x94E4, + 154345 - 131105: 0x9551, + 154484 - 131105: 0x8BBB, + 154505 - 131105: 0x9BF1, + 154547 - 131105: 0x94F0, + 154548 - 131105: 0x8E64, + 154566 - 131105: 0x94EA, + 154596 - 131105: 0x8F61, + 154600 - 131105: 0x9B64, + 154625 - 131105: 0x8E5B, + 154630 - 131105: 0x9BF2, + 154657 - 131105: 0x9FBE, + 154698 - 131105: 0x9DC9, + 154725 - 131105: 0x8E6C, + 154769 - 131105: 0x8F73, + 154788 - 131105: 0x8CAF, + 154816 - 131105: 0x8F75, + 154817 - 131105: 0x8E71, + 154878 - 131105: 0x8E60, + 154912 - 131105: 0x8E6A, + 154928 - 131105: 0x8C4C, + 154947 - 131105: 0x9552, + 155033 - 131105: 0x87CF, + 155065 - 131105: 0x87C0, + 155150 - 131105: 0x9554, + 155209 - 131105: 0x8AD4, + 155265 - 131105: 0x9DBB, + 155266 - 131105: 0x9543, + 155267 - 131105: 0x92FE, + 155302 - 131105: 0x94F2, + 155324 - 131105: 0x94F1, + 155351 - 131105: 0xA0EA, + 155352 - 131105: 0x9DD2, + 155418 - 131105: 0xA0B1, + 155467 - 131105: 0x91F8, + 155617 - 131105: 0x9462, + 155618 - 131105: 0x9BA4, + 155681 - 131105: 0x877D, + 155689 - 131105: 0x8EAD, + 155720 - 131105: 0x9EAD, + 155748 - 131105: 0x96D0, + 155779 - 131105: 0xFEEE, + 155799 - 131105: 0x8AB4, + 155812 - 131105: 0x9757, + 155813 - 131105: 0x8A77, + 155906 - 131105: 0x9BF7, + 155937 - 131105: 0x8EB5, + 155993 - 131105: 0xA06D, + 155994 - 131105: 0x8EB6, + 155995 - 131105: 0x9756, + 155996 - 131105: 0x9540, + 156077 - 131105: 0xA0F3, + 156078 - 131105: 0x94BE, + 156082 - 131105: 0x9BFA, + 156125 - 131105: 0xFDDF, + 156248 - 131105: 0x9DBC, + 156257 - 131105: 0x94FE, + 156266 - 131105: 0x8BDB, + 156267 - 131105: 0xA0FE, + 156368 - 131105: 0x8EC0, + 156469 - 131105: 0x9F47, + 156491 - 131105: 0x8BDE, + 156492 - 131105: 0xA0FB, + 156497 - 131105: 0x8EC3, + 156606 - 131105: 0x9649, + 156661 - 131105: 0xFEC2, + 156664 - 131105: 0x954C, + 156674 - 131105: 0x9BFD, + 156688 - 131105: 0x90CC, + 156689 - 131105: 0x9C60, + 156690 - 131105: 0x954B, + 156746 - 131105: 0x9BFE, + 156777 - 131105: 0x9C70, + 156804 - 131105: 0x9C43, + 156808 - 131105: 0x9C47, + 156809 - 131105: 0x8ECC, + 156813 - 131105: 0x8E54, + 156824 - 131105: 0x8EE4, + 156946 - 131105: 0x9C49, + 157042 - 131105: 0x8B5E, + 157088 - 131105: 0x955E, + 157101 - 131105: 0x955C, + 157119 - 131105: 0x9C4B, + 157202 - 131105: 0x8BE1, + 157222 - 131105: 0x8ED9, + 157359 - 131105: 0x9DB4, + 157361 - 131105: 0x925F, + 157365 - 131105: 0x9C4C, + 157402 - 131105: 0x8AA1, + 157416 - 131105: 0x8EDB, + 157436 - 131105: 0x9C56, + 157462 - 131105: 0x8AA2, + 157505 - 131105: 0x9754, + 157593 - 131105: 0x9C5E, + 157619 - 131105: 0x9ED4, + 157620 - 131105: 0x9568, + 157644 - 131105: 0xA0C3, + 157724 - 131105: 0x8AE6, + 157766 - 131105: 0xA0F7, + 157790 - 131105: 0x9C61, + 157806 - 131105: 0x9C5F, + 157832 - 131105: 0xFC4D, + 157834 - 131105: 0x9E5B, + 157843 - 131105: 0x9E69, + 157895 - 131105: 0x9C63, + 157966 - 131105: 0xFEC7, + 157969 - 131105: 0xFEC6, + 157990 - 131105: 0x9C67, + 158009 - 131105: 0x9C69, + 158033 - 131105: 0x8BE2, + 158120 - 131105: 0x9165, + 158133 - 131105: 0x9CE7, + 158194 - 131105: 0x8A54, + 158202 - 131105: 0x9C6C, + 158253 - 131105: 0x9C6E, + 158254 - 131105: 0xFE5D, + 158260 - 131105: 0x9C73, + 158274 - 131105: 0x956A, + 158289 - 131105: 0x956D, + 158290 - 131105: 0x8EF0, + 158469 - 131105: 0x8F4D, + 158474 - 131105: 0x8EF6, + 158483 - 131105: 0xFABC, + 158485 - 131105: 0x8CD5, + 158499 - 131105: 0x875E, + 158504 - 131105: 0xFBDA, + 158544 - 131105: 0x8B4C, + 158545 - 131105: 0xFD75, + 158546 - 131105: 0x9BDD, + 158547 - 131105: 0xFAF5, + 158555 - 131105: 0x9C74, + 158581 - 131105: 0x9545, + 158594 - 131105: 0x96C6, + 158614 - 131105: 0x8F6A, + 158615 - 131105: 0x8F4E, + 158621 - 131105: 0x9C78, + 158643 - 131105: 0xFA55, + 158656 - 131105: 0x97E4, + 158711 - 131105: 0x9C41, + 158753 - 131105: 0x925C, + 158784 - 131105: 0x96FA, + 158785 - 131105: 0x8CF6, + 158790 - 131105: 0x8D4D, + 158846 - 131105: 0xFB66, + 158847 - 131105: 0x8E65, + 158848 - 131105: 0x9849, + 158849 - 131105: 0xFBA8, + 158850 - 131105: 0x9842, + 158884 - 131105: 0x9C7A, + 158903 - 131105: 0x97FB, + 158904 - 131105: 0x90CA, + 158909 - 131105: 0x9C5B, + 158912 - 131105: 0x974D, + 158915 - 131105: 0x8ED3, + 158929 - 131105: 0x9561, + 159010 - 131105: 0x9F4B, + 159011 - 131105: 0x9FB5, + 159012 - 131105: 0x93D2, + 159013 - 131105: 0xFDAA, + 159014 - 131105: 0x9840, + 159015 - 131105: 0x9146, + 159016 - 131105: 0x9867, + 159017 - 131105: 0xFA5A, + 159018 - 131105: 0xFBA9, + 159057 - 131105: 0x9841, + 159092 - 131105: 0x8CD3, + 159136 - 131105: 0xFCFD, + 159137 - 131105: 0xFDAB, + 159138 - 131105: 0x91BD, + 159139 - 131105: 0x8F4C, + 159140 - 131105: 0x96C9, + 159141 - 131105: 0x8F55, + 159142 - 131105: 0xFBAE, + 159143 - 131105: 0x956F, + 159150 - 131105: 0x9C7D, + 159196 - 131105: 0xA0F0, + 159210 - 131105: 0x946F, + 159211 - 131105: 0xFDAC, + 159216 - 131105: 0x96CB, + 159232 - 131105: 0x96CE, + 159237 - 131105: 0xA056, + 159239 - 131105: 0x9CE1, + 159250 - 131105: 0x96C4, + 159298 - 131105: 0x8F5E, + 159299 - 131105: 0x8F6C, + 159300 - 131105: 0x8EA3, + 159301 - 131105: 0xFBB3, + 159342 - 131105: 0xFC53, + 159346 - 131105: 0xFDB3, + 159351 - 131105: 0x8F6B, + 159364 - 131105: 0x96CA, + 159368 - 131105: 0x87CD, + 159371 - 131105: 0x8753, + 159385 - 131105: 0x8F79, + 159440 - 131105: 0x9E6F, + 159441 - 131105: 0xA0C5, + 159442 - 131105: 0xFC78, + 159443 - 131105: 0x8E42, + 159444 - 131105: 0x8F5A, + 159445 - 131105: 0x90C2, + 159446 - 131105: 0x8EA5, + 159447 - 131105: 0x9061, + 159526 - 131105: 0x924F, + 159603 - 131105: 0x9373, + 159604 - 131105: 0xFDB5, + 159647 - 131105: 0xFECC, + 159649 - 131105: 0xFBBD, + 159678 - 131105: 0x8CD6, + 159710 - 131105: 0x9843, + 159711 - 131105: 0x96C5, + 159758 - 131105: 0x89BC, + 159819 - 131105: 0x9CA3, + 159826 - 131105: 0x924B, + 159827 - 131105: 0x984A, + 159880 - 131105: 0x8FA4, + 159917 - 131105: 0xA0F1, + 159918 - 131105: 0x9EFB, + 159919 - 131105: 0x9CD2, + 159949 - 131105: 0x8FA7, + 159954 - 131105: 0x8754, + 159992 - 131105: 0xFC5C, + 160009 - 131105: 0x9845, + 160012 - 131105: 0x9046, + 160013 - 131105: 0x8CD1, + 160038 - 131105: 0xFEFA, + 160039 - 131105: 0x9560, + 160100 - 131105: 0x9F48, + 160101 - 131105: 0x9247, + 160117 - 131105: 0x90FB, + 160205 - 131105: 0x9CA4, + 160283 - 131105: 0x9571, + 160359 - 131105: 0x8745, + 160384 - 131105: 0x9CA6, + 160389 - 131105: 0x9CA7, + 160395 - 131105: 0x9CAA, + 160434 - 131105: 0x9ED3, + 160438 - 131105: 0x9E70, + 160486 - 131105: 0x9CAC, + 160594 - 131105: 0x8752, + 160666 - 131105: 0x8FAE, + 160767 - 131105: 0x8D50, + 160802 - 131105: 0x957D, + 160848 - 131105: 0x9CB0, + 160900 - 131105: 0x97B6, + 160902 - 131105: 0xA0BD, + 161140 - 131105: 0x8ADF, + 161187 - 131105: 0x9EAA, + 161248 - 131105: 0x8FBD, + 161252 - 131105: 0x8FBF, + 161277 - 131105: 0x9369, + 161278 - 131105: 0x9BA7, + 161287 - 131105: 0xC8A4, + 161292 - 131105: 0xFEEA, + 161330 - 131105: 0x9BE1, + 161337 - 131105: 0x8B41, + 161365 - 131105: 0x9DB6, + 161366 - 131105: 0xA0EB, + 161367 - 131105: 0x9BA3, + 161428 - 131105: 0x8BA1, + 161551 - 131105: 0x8FC8, + 161589 - 131105: 0x894C, + 161590 - 131105: 0x9860, + 161601 - 131105: 0x94C7, + 161630 - 131105: 0x8B58, + 161668 - 131105: 0x95AB, + 161669 - 131105: 0x95AA, + 161740 - 131105: 0x9CC3, + 161880 - 131105: 0x9CC4, + 161904 - 131105: 0x93D6, + 161949 - 131105: 0x9DAC, + 161970 - 131105: 0x8BE6, + 161992 - 131105: 0x8A71, + 162084 - 131105: 0x8FD1, + 162151 - 131105: 0x99D5, + 162170 - 131105: 0x90F4, + 162208 - 131105: 0x8AA3, + 162269 - 131105: 0x9CCE, + 162301 - 131105: 0x9CD4, + 162314 - 131105: 0x9CD5, + 162318 - 131105: 0xFBC8, + 162366 - 131105: 0x9DB3, + 162387 - 131105: 0xFC70, + 162393 - 131105: 0x8FD7, + 162425 - 131105: 0x9B73, + 162436 - 131105: 0xFA5B, + 162493 - 131105: 0x8FD2, + 162494 - 131105: 0x9064, + 162548 - 131105: 0x98B6, + 162566 - 131105: 0x9668, + 162571 - 131105: 0x9CD6, + 162584 - 131105: 0x98BD, + 162616 - 131105: 0x8FDC, + 162617 - 131105: 0xFEF6, + 162618 - 131105: 0x8FD9, + 162632 - 131105: 0x9541, + 162661 - 131105: 0x87CA, + 162799 - 131105: 0x876C, + 162804 - 131105: 0x97F3, + 162834 - 131105: 0x9BF8, + 162924 - 131105: 0x875A, + 162993 - 131105: 0x8748, + 163013 - 131105: 0x874A, + 163119 - 131105: 0x9E6C, + 163155 - 131105: 0x8FF2, + 163156 - 131105: 0x8FEE, + 163174 - 131105: 0x9CD7, + 163187 - 131105: 0x9E6E, + 163204 - 131105: 0x8A40, + 163215 - 131105: 0x8FEF, + 163224 - 131105: 0x8FF4, + 163261 - 131105: 0x8FF5, + 163292 - 131105: 0x95C2, + 163405 - 131105: 0x986A, + 163407 - 131105: 0x97CF, + 163630 - 131105: 0x9EE5, + 163833 - 131105: 0x9E7C, + 163842 - 131105: 0x9041, + 163849 - 131105: 0x9CDB, + 163870 - 131105: 0x9441, + 163875 - 131105: 0x9CE6, + 163876 - 131105: 0x9DB0, + 163912 - 131105: 0x9CEA, + 163971 - 131105: 0x9CED, + 163984 - 131105: 0x9CFA, + 164029 - 131105: 0x8B62, + 164030 - 131105: 0x8A4E, + 164072 - 131105: 0x9CCA, + 164073 - 131105: 0x8A66, + 164084 - 131105: 0x9CFB, + 164142 - 131105: 0x9CFC, + 164175 - 131105: 0x9CFE, + 164189 - 131105: 0x8A53, + 164207 - 131105: 0x9CE5, + 164233 - 131105: 0x9D40, + 164271 - 131105: 0x9D41, + 164284 - 131105: 0x9045, + 164359 - 131105: 0x8B73, + 164376 - 131105: 0x97CA, + 164378 - 131105: 0x9D42, + 164438 - 131105: 0x8A61, + 164476 - 131105: 0x8BAE, + 164507 - 131105: 0x8AD2, + 164557 - 131105: 0x8BA2, + 164578 - 131105: 0x9DF2, + 164614 - 131105: 0x9D43, + 164632 - 131105: 0x9CDF, + 164655 - 131105: 0x9D44, + 164666 - 131105: 0x8ECA, + 164709 - 131105: 0x904E, + 164717 - 131105: 0x8EB3, + 164733 - 131105: 0x9FF5, + 164746 - 131105: 0x9D45, + 164882 - 131105: 0x904F, + 164968 - 131105: 0x9D47, + 164972 - 131105: 0x89CA, + 164979 - 131105: 0x9CB5, + 164994 - 131105: 0xFBFE, + 165121 - 131105: 0x905E, + 165180 - 131105: 0x9063, + 165181 - 131105: 0x9057, + 165228 - 131105: 0x9066, + 165352 - 131105: 0x9BC0, + 165364 - 131105: 0xFCE5, + 165376 - 131105: 0x9162, + 165387 - 131105: 0x9067, + 165413 - 131105: 0x8FA1, + 165435 - 131105: 0x8FA2, + 165546 - 131105: 0x9D48, + 165547 - 131105: 0xFAD3, + 165554 - 131105: 0x8D4F, + 165564 - 131105: 0x905D, + 165592 - 131105: 0x90B9, + 165606 - 131105: 0x906B, + 165647 - 131105: 0x8C5C, + 165651 - 131105: 0x9069, + 165892 - 131105: 0xFE57, + 165931 - 131105: 0xFE55, + 166157 - 131105: 0x87A6, + 166195 - 131105: 0x9073, + 166216 - 131105: 0x9BEF, + 166217 - 131105: 0x9CF0, + 166230 - 131105: 0x9D4B, + 166244 - 131105: 0xFED9, + 166248 - 131105: 0xFEDA, + 166252 - 131105: 0x91E0, + 166253 - 131105: 0x8D43, + 166270 - 131105: 0x91D8, + 166281 - 131105: 0x9646, + 166312 - 131105: 0x9360, + 166314 - 131105: 0xFA53, + 166315 - 131105: 0x9CD3, + 166328 - 131105: 0x9D4E, + 166332 - 131105: 0xFB40, + 166336 - 131105: 0x8DE2, + 166364 - 131105: 0x9442, + 166366 - 131105: 0x9056, + 166369 - 131105: 0x9865, + 166371 - 131105: 0x8C6C, + 166372 - 131105: 0xFA4A, + 166375 - 131105: 0x9D50, + 166376 - 131105: 0x9D52, + 166393 - 131105: 0x95AF, + 166394 - 131105: 0x975A, + 166395 - 131105: 0x9349, + 166396 - 131105: 0x9747, + 166415 - 131105: 0xA0F4, + 166422 - 131105: 0x9778, + 166437 - 131105: 0x8FCF, + 166441 - 131105: 0xFC60, + 166450 - 131105: 0x8C4E, + 166454 - 131105: 0xFC56, + 166468 - 131105: 0x91DC, + 166469 - 131105: 0x9661, + 166470 - 131105: 0x92EC, + 166471 - 131105: 0x935D, + 166472 - 131105: 0x8EDE, + 166473 - 131105: 0x96FE, + 166474 - 131105: 0xFD4F, + 166475 - 131105: 0x95DE, + 166489 - 131105: 0x98B0, + 166490 - 131105: 0xA040, + 166529 - 131105: 0x97BD, + 166530 - 131105: 0x977D, + 166531 - 131105: 0x97F5, + 166554 - 131105: 0x9BAC, + 166555 - 131105: 0xFADA, + 166556 - 131105: 0x92C2, + 166592 - 131105: 0x97B1, + 166598 - 131105: 0x907B, + 166603 - 131105: 0x93FE, + 166604 - 131105: 0x947B, + 166606 - 131105: 0x9777, + 166622 - 131105: 0xFABE, + 166623 - 131105: 0xFD43, + 166624 - 131105: 0x90C6, + 166625 - 131105: 0x90A4, + 166626 - 131105: 0x90A8, + 166627 - 131105: 0x94A9, + 166629 - 131105: 0x90A9, + 166634 - 131105: 0x8C65, + 166652 - 131105: 0x95E0, + 166668 - 131105: 0x907D, + 166675 - 131105: 0x9265, + 166689 - 131105: 0xFDBA, + 166690 - 131105: 0x93C4, + 166699 - 131105: 0xFEED, + 166700 - 131105: 0x9DAB, + 166701 - 131105: 0xA0E3, + 166703 - 131105: 0x9648, + 166726 - 131105: 0x9D53, + 166732 - 131105: 0x8AA9, + 166734 - 131105: 0x9BC5, + 166736 - 131105: 0x965D, + 166755 - 131105: 0x975F, + 166756 - 131105: 0x965F, + 166757 - 131105: 0x966E, + 166758 - 131105: 0xFB5D, + 166764 - 131105: 0x9DB1, + 166799 - 131105: 0xFEA3, + 166809 - 131105: 0x9DB2, + 166812 - 131105: 0x95AE, + 166813 - 131105: 0xFCA3, + 166841 - 131105: 0x8769, + 166850 - 131105: 0xA0A2, + 166853 - 131105: 0x9655, + 166868 - 131105: 0x9D54, + 166871 - 131105: 0x9341, + 166873 - 131105: 0x95AD, + 166874 - 131105: 0x91D5, + 166887 - 131105: 0x977A, + 166888 - 131105: 0xFDFC, + 166889 - 131105: 0x8E47, + 166890 - 131105: 0x93FD, + 166891 - 131105: 0x90A5, + 166892 - 131105: 0x90AC, + 166901 - 131105: 0x95AC, + 166911 - 131105: 0x90AE, + 166915 - 131105: 0xFEA5, + 166921 - 131105: 0x9D56, + 166940 - 131105: 0x97E3, + 166941 - 131105: 0x95E2, + 166947 - 131105: 0x9466, + 166950 - 131105: 0x9647, + 166955 - 131105: 0x91B8, + 166960 - 131105: 0x9CEC, + 166969 - 131105: 0x90AD, + 166971 - 131105: 0x95E3, + 167114 - 131105: 0x8B4F, + 167117 - 131105: 0x8AE3, + 167122 - 131105: 0x8B4D, + 167220 - 131105: 0x95EA, + 167321 - 131105: 0x8B4E, + 167353 - 131105: 0x8CC1, + 167439 - 131105: 0x8BED, + 167478 - 131105: 0x91D9, + 167481 - 131105: 0xA0A4, + 167525 - 131105: 0x95F5, + 167526 - 131105: 0x95F4, + 167575 - 131105: 0x9FB3, + 167596 - 131105: 0xFEAF, + 167602 - 131105: 0xFE72, + 167603 - 131105: 0x927A, + 167641 - 131105: 0xFEAC, + 167655 - 131105: 0x95F3, + 167877 - 131105: 0x9D58, + 168057 - 131105: 0x8D46, + 168072 - 131105: 0x9372, + 168075 - 131105: 0x91C5, + 168083 - 131105: 0x9642, + 168111 - 131105: 0x90CD, + 168112 - 131105: 0x95FE, + 168113 - 131105: 0x9159, + 168128 - 131105: 0x9C65, + 168164 - 131105: 0x97CC, + 168165 - 131105: 0x90CE, + 168172 - 131105: 0x9D59, + 168173 - 131105: 0xFCF5, + 168205 - 131105: 0xFEFD, + 168208 - 131105: 0x9D5B, + 168252 - 131105: 0x9D5C, + 168269 - 131105: 0x937E, + 168283 - 131105: 0x98AC, + 168286 - 131105: 0x9D5E, + 168304 - 131105: 0xFDD0, + 168348 - 131105: 0xFD60, + 168360 - 131105: 0x9CCF, + 168405 - 131105: 0x90DD, + 168427 - 131105: 0x90E0, + 168989 - 131105: 0x90F3, + 168992 - 131105: 0x98B1, + 169011 - 131105: 0x90F0, + 169023 - 131105: 0x93BD, + 169032 - 131105: 0x95B7, + 169168 - 131105: 0x9F46, + 169177 - 131105: 0x8E4B, + 169178 - 131105: 0x9658, + 169189 - 131105: 0x8A4C, + 169191 - 131105: 0x9D63, + 169374 - 131105: 0x9ECF, + 169392 - 131105: 0x9D65, + 169400 - 131105: 0x9D66, + 169431 - 131105: 0x965A, + 169449 - 131105: 0x9D64, + 169460 - 131105: 0x8A6C, + 169760 - 131105: 0x8AD9, + 169778 - 131105: 0x9D67, + 169940 - 131105: 0x8A70, + 170000 - 131105: 0x8BF3, + 170071 - 131105: 0x9150, + 170148 - 131105: 0x9CC1, + 170193 - 131105: 0x9D68, + 170218 - 131105: 0x93A7, + 170225 - 131105: 0x9674, + 170234 - 131105: 0x8CFD, + 170243 - 131105: 0xA0EF, + 170245 - 131105: 0x9151, + 170287 - 131105: 0x96C1, + 170309 - 131105: 0x8777, + 170311 - 131105: 0x8C64, + 170312 - 131105: 0x9676, + 170313 - 131105: 0x9D69, + 170333 - 131105: 0xFCA4, + 170346 - 131105: 0x9D6A, + 170397 - 131105: 0x924E, + 170435 - 131105: 0x9D6B, + 170441 - 131105: 0x9BC1, + 170536 - 131105: 0x9D6C, + 170573 - 131105: 0x8A65, + 170757 - 131105: 0x915D, + 170766 - 131105: 0x9D6D, + 170965 - 131105: 0x915A, + 171123 - 131105: 0x8C42, + 171181 - 131105: 0x9CC0, + 171326 - 131105: 0x916A, + 171354 - 131105: 0x9D6E, + 171388 - 131105: 0x9EA6, + 171416 - 131105: 0x9DCD, + 171419 - 131105: 0x9D6F, + 171510 - 131105: 0x89BB, + 171526 - 131105: 0x9EF9, + 171565 - 131105: 0x96B4, + 171624 - 131105: 0x9172, + 171692 - 131105: 0x9EC8, + 171696 - 131105: 0x8771, + 171715 - 131105: 0x8B55, + 171768 - 131105: 0x9D71, + 171811 - 131105: 0x9D72, + 171824 - 131105: 0x9ECC, + 171959 - 131105: 0x9174, + 171998 - 131105: 0x9ED0, + 172052 - 131105: 0x905C, + 172167 - 131105: 0x8ED2, + 172217 - 131105: 0x91A8, + 172257 - 131105: 0x9177, + 172269 - 131105: 0x96BF, + 172275 - 131105: 0x96C0, + 172280 - 131105: 0x8FB1, + 172286 - 131105: 0x96B7, + 172295 - 131105: 0x8C55, + 172323 - 131105: 0x9178, + 172339 - 131105: 0x89BE, + 172340 - 131105: 0x917C, + 172368 - 131105: 0xFB77, + 172434 - 131105: 0x9175, + 172435 - 131105: 0x91A3, + 172459 - 131105: 0x9176, + 172468 - 131105: 0x96BE, + 172469 - 131105: 0x8D49, + 172511 - 131105: 0x9179, + 172533 - 131105: 0x96B6, + 172576 - 131105: 0x91A4, + 172595 - 131105: 0x91A6, + 172691 - 131105: 0x9D75, + 172703 - 131105: 0x9052, + 172722 - 131105: 0xA045, + 172724 - 131105: 0x91A9, + 172726 - 131105: 0x98AA, + 172730 - 131105: 0x8C5F, + 172733 - 131105: 0x8BAA, + 172767 - 131105: 0x9CDD, + 172799 - 131105: 0x9D77, + 172881 - 131105: 0x8756, + 172969 - 131105: 0x8940, + 173108 - 131105: 0x9EEC, + 173147 - 131105: 0x93AA, + 173510 - 131105: 0x9478, + 173515 - 131105: 0x9D7A, + 173569 - 131105: 0x8AC9, + 173618 - 131105: 0x8B4B, + 173642 - 131105: 0x9FEC, + 173659 - 131105: 0x8AE2, + 173737 - 131105: 0x9E75, +} + +const encode1Low, encode1High = 11904, 40908 + +var encode1 = [...]uint16{ + 11904 - 11904: 0xC8D6, + 11908 - 11904: 0xC8D7, + 11910 - 11904: 0xC8D8, + 11911 - 11904: 0xC8D9, + 11912 - 11904: 0xC8DA, + 11914 - 11904: 0xC8DB, + 11916 - 11904: 0xC8DC, + 11917 - 11904: 0xC8DD, + 11925 - 11904: 0xC8DE, + 11932 - 11904: 0xC8DF, + 11933 - 11904: 0xC8E0, + 11941 - 11904: 0xC8E1, + 11943 - 11904: 0xC8E2, + 11946 - 11904: 0xC8E3, + 11948 - 11904: 0xC8E4, + 11950 - 11904: 0xC8E5, + 11958 - 11904: 0xC8E6, + 11964 - 11904: 0xC8E7, + 11966 - 11904: 0xC8E8, + 11974 - 11904: 0xC8E9, + 11978 - 11904: 0xC8EA, + 11980 - 11904: 0xC8EB, + 11981 - 11904: 0xC8EC, + 11983 - 11904: 0xC8ED, + 11990 - 11904: 0xC8EE, + 11991 - 11904: 0xC8EF, + 11998 - 11904: 0xC8F0, + 12003 - 11904: 0xC8F1, + 12083 - 11904: 0xC6CD, + 12288 - 11904: 0xA140, + 12289 - 11904: 0xA142, + 12290 - 11904: 0xA143, + 12291 - 11904: 0xC6DE, + 12293 - 11904: 0xC6E0, + 12294 - 11904: 0xC6E1, + 12295 - 11904: 0xC6E2, + 12296 - 11904: 0xA171, + 12297 - 11904: 0xA172, + 12298 - 11904: 0xA16D, + 12299 - 11904: 0xA16E, + 12300 - 11904: 0xA175, + 12301 - 11904: 0xA176, + 12302 - 11904: 0xA179, + 12303 - 11904: 0xA17A, + 12304 - 11904: 0xA169, + 12305 - 11904: 0xA16A, + 12306 - 11904: 0xA245, + 12308 - 11904: 0xA165, + 12309 - 11904: 0xA166, + 12317 - 11904: 0xA1A9, + 12318 - 11904: 0xA1AA, + 12321 - 11904: 0xA2C3, + 12322 - 11904: 0xA2C4, + 12323 - 11904: 0xA2C5, + 12324 - 11904: 0xA2C6, + 12325 - 11904: 0xA2C7, + 12326 - 11904: 0xA2C8, + 12327 - 11904: 0xA2C9, + 12328 - 11904: 0xA2CA, + 12329 - 11904: 0xA2CB, + 12353 - 11904: 0xC6E7, + 12354 - 11904: 0xC6E8, + 12355 - 11904: 0xC6E9, + 12356 - 11904: 0xC6EA, + 12357 - 11904: 0xC6EB, + 12358 - 11904: 0xC6EC, + 12359 - 11904: 0xC6ED, + 12360 - 11904: 0xC6EE, + 12361 - 11904: 0xC6EF, + 12362 - 11904: 0xC6F0, + 12363 - 11904: 0xC6F1, + 12364 - 11904: 0xC6F2, + 12365 - 11904: 0xC6F3, + 12366 - 11904: 0xC6F4, + 12367 - 11904: 0xC6F5, + 12368 - 11904: 0xC6F6, + 12369 - 11904: 0xC6F7, + 12370 - 11904: 0xC6F8, + 12371 - 11904: 0xC6F9, + 12372 - 11904: 0xC6FA, + 12373 - 11904: 0xC6FB, + 12374 - 11904: 0xC6FC, + 12375 - 11904: 0xC6FD, + 12376 - 11904: 0xC6FE, + 12377 - 11904: 0xC740, + 12378 - 11904: 0xC741, + 12379 - 11904: 0xC742, + 12380 - 11904: 0xC743, + 12381 - 11904: 0xC744, + 12382 - 11904: 0xC745, + 12383 - 11904: 0xC746, + 12384 - 11904: 0xC747, + 12385 - 11904: 0xC748, + 12386 - 11904: 0xC749, + 12387 - 11904: 0xC74A, + 12388 - 11904: 0xC74B, + 12389 - 11904: 0xC74C, + 12390 - 11904: 0xC74D, + 12391 - 11904: 0xC74E, + 12392 - 11904: 0xC74F, + 12393 - 11904: 0xC750, + 12394 - 11904: 0xC751, + 12395 - 11904: 0xC752, + 12396 - 11904: 0xC753, + 12397 - 11904: 0xC754, + 12398 - 11904: 0xC755, + 12399 - 11904: 0xC756, + 12400 - 11904: 0xC757, + 12401 - 11904: 0xC758, + 12402 - 11904: 0xC759, + 12403 - 11904: 0xC75A, + 12404 - 11904: 0xC75B, + 12405 - 11904: 0xC75C, + 12406 - 11904: 0xC75D, + 12407 - 11904: 0xC75E, + 12408 - 11904: 0xC75F, + 12409 - 11904: 0xC760, + 12410 - 11904: 0xC761, + 12411 - 11904: 0xC762, + 12412 - 11904: 0xC763, + 12413 - 11904: 0xC764, + 12414 - 11904: 0xC765, + 12415 - 11904: 0xC766, + 12416 - 11904: 0xC767, + 12417 - 11904: 0xC768, + 12418 - 11904: 0xC769, + 12419 - 11904: 0xC76A, + 12420 - 11904: 0xC76B, + 12421 - 11904: 0xC76C, + 12422 - 11904: 0xC76D, + 12423 - 11904: 0xC76E, + 12424 - 11904: 0xC76F, + 12425 - 11904: 0xC770, + 12426 - 11904: 0xC771, + 12427 - 11904: 0xC772, + 12428 - 11904: 0xC773, + 12429 - 11904: 0xC774, + 12430 - 11904: 0xC775, + 12431 - 11904: 0xC776, + 12432 - 11904: 0xC777, + 12433 - 11904: 0xC778, + 12434 - 11904: 0xC779, + 12435 - 11904: 0xC77A, + 12443 - 11904: 0xC8D4, + 12444 - 11904: 0xC8D5, + 12445 - 11904: 0xC6DC, + 12446 - 11904: 0xC6DD, + 12449 - 11904: 0xC77B, + 12450 - 11904: 0xC77C, + 12451 - 11904: 0xC77D, + 12452 - 11904: 0xC77E, + 12453 - 11904: 0xC7A1, + 12454 - 11904: 0xC7A2, + 12455 - 11904: 0xC7A3, + 12456 - 11904: 0xC7A4, + 12457 - 11904: 0xC7A5, + 12458 - 11904: 0xC7A6, + 12459 - 11904: 0xC7A7, + 12460 - 11904: 0xC7A8, + 12461 - 11904: 0xC7A9, + 12462 - 11904: 0xC7AA, + 12463 - 11904: 0xC7AB, + 12464 - 11904: 0xC7AC, + 12465 - 11904: 0xC7AD, + 12466 - 11904: 0xC7AE, + 12467 - 11904: 0xC7AF, + 12468 - 11904: 0xC7B0, + 12469 - 11904: 0xC7B1, + 12470 - 11904: 0xC7B2, + 12471 - 11904: 0xC7B3, + 12472 - 11904: 0xC7B4, + 12473 - 11904: 0xC7B5, + 12474 - 11904: 0xC7B6, + 12475 - 11904: 0xC7B7, + 12476 - 11904: 0xC7B8, + 12477 - 11904: 0xC7B9, + 12478 - 11904: 0xC7BA, + 12479 - 11904: 0xC7BB, + 12480 - 11904: 0xC7BC, + 12481 - 11904: 0xC7BD, + 12482 - 11904: 0xC7BE, + 12483 - 11904: 0xC7BF, + 12484 - 11904: 0xC7C0, + 12485 - 11904: 0xC7C1, + 12486 - 11904: 0xC7C2, + 12487 - 11904: 0xC7C3, + 12488 - 11904: 0xC7C4, + 12489 - 11904: 0xC7C5, + 12490 - 11904: 0xC7C6, + 12491 - 11904: 0xC7C7, + 12492 - 11904: 0xC7C8, + 12493 - 11904: 0xC7C9, + 12494 - 11904: 0xC7CA, + 12495 - 11904: 0xC7CB, + 12496 - 11904: 0xC7CC, + 12497 - 11904: 0xC7CD, + 12498 - 11904: 0xC7CE, + 12499 - 11904: 0xC7CF, + 12500 - 11904: 0xC7D0, + 12501 - 11904: 0xC7D1, + 12502 - 11904: 0xC7D2, + 12503 - 11904: 0xC7D3, + 12504 - 11904: 0xC7D4, + 12505 - 11904: 0xC7D5, + 12506 - 11904: 0xC7D6, + 12507 - 11904: 0xC7D7, + 12508 - 11904: 0xC7D8, + 12509 - 11904: 0xC7D9, + 12510 - 11904: 0xC7DA, + 12511 - 11904: 0xC7DB, + 12512 - 11904: 0xC7DC, + 12513 - 11904: 0xC7DD, + 12514 - 11904: 0xC7DE, + 12515 - 11904: 0xC7DF, + 12516 - 11904: 0xC7E0, + 12517 - 11904: 0xC7E1, + 12518 - 11904: 0xC7E2, + 12519 - 11904: 0xC7E3, + 12520 - 11904: 0xC7E4, + 12521 - 11904: 0xC7E5, + 12522 - 11904: 0xC7E6, + 12523 - 11904: 0xC7E7, + 12524 - 11904: 0xC7E8, + 12525 - 11904: 0xC7E9, + 12526 - 11904: 0xC7EA, + 12527 - 11904: 0xC7EB, + 12528 - 11904: 0xC7EC, + 12529 - 11904: 0xC7ED, + 12530 - 11904: 0xC7EE, + 12531 - 11904: 0xC7EF, + 12532 - 11904: 0xC7F0, + 12533 - 11904: 0xC7F1, + 12534 - 11904: 0xC7F2, + 12540 - 11904: 0xC6E3, + 12541 - 11904: 0xC6DA, + 12542 - 11904: 0xC6DB, + 12549 - 11904: 0xA374, + 12550 - 11904: 0xA375, + 12551 - 11904: 0xA376, + 12552 - 11904: 0xA377, + 12553 - 11904: 0xA378, + 12554 - 11904: 0xA379, + 12555 - 11904: 0xA37A, + 12556 - 11904: 0xA37B, + 12557 - 11904: 0xA37C, + 12558 - 11904: 0xA37D, + 12559 - 11904: 0xA37E, + 12560 - 11904: 0xA3A1, + 12561 - 11904: 0xA3A2, + 12562 - 11904: 0xA3A3, + 12563 - 11904: 0xA3A4, + 12564 - 11904: 0xA3A5, + 12565 - 11904: 0xA3A6, + 12566 - 11904: 0xA3A7, + 12567 - 11904: 0xA3A8, + 12568 - 11904: 0xA3A9, + 12569 - 11904: 0xA3AA, + 12570 - 11904: 0xA3AB, + 12571 - 11904: 0xA3AC, + 12572 - 11904: 0xA3AD, + 12573 - 11904: 0xA3AE, + 12574 - 11904: 0xA3AF, + 12575 - 11904: 0xA3B0, + 12576 - 11904: 0xA3B1, + 12577 - 11904: 0xA3B2, + 12578 - 11904: 0xA3B3, + 12579 - 11904: 0xA3B4, + 12580 - 11904: 0xA3B5, + 12581 - 11904: 0xA3B6, + 12582 - 11904: 0xA3B7, + 12583 - 11904: 0xA3B8, + 12584 - 11904: 0xA3B9, + 12585 - 11904: 0xA3BA, + 12736 - 11904: 0x8840, + 12737 - 11904: 0x8841, + 12738 - 11904: 0x8842, + 12739 - 11904: 0x8843, + 12740 - 11904: 0x8844, + 12741 - 11904: 0x8846, + 12742 - 11904: 0x8849, + 12743 - 11904: 0x884A, + 12744 - 11904: 0x884D, + 12745 - 11904: 0x884F, + 12746 - 11904: 0x8850, + 12747 - 11904: 0x8851, + 12748 - 11904: 0x8852, + 12749 - 11904: 0x8854, + 12750 - 11904: 0x8855, + 12751 - 11904: 0xC879, + 12849 - 11904: 0xC8D1, + 12963 - 11904: 0xA1C0, + 13198 - 11904: 0xA255, + 13199 - 11904: 0xA256, + 13212 - 11904: 0xA250, + 13213 - 11904: 0xA251, + 13214 - 11904: 0xA252, + 13217 - 11904: 0xA254, + 13252 - 11904: 0xA257, + 13262 - 11904: 0xA253, + 13265 - 11904: 0xA1EB, + 13266 - 11904: 0xA1EA, + 13269 - 11904: 0xA24F, + 13365 - 11904: 0x9277, + 13376 - 11904: 0x96DF, + 13386 - 11904: 0x8CF4, + 13388 - 11904: 0x89D5, + 13412 - 11904: 0x93CD, + 13427 - 11904: 0x9BDF, + 13434 - 11904: 0xFA68, + 13437 - 11904: 0x89DA, + 13438 - 11904: 0x8F59, + 13459 - 11904: 0x89DB, + 13462 - 11904: 0x8F5D, + 13477 - 11904: 0x89DC, + 13487 - 11904: 0x96F7, + 13500 - 11904: 0x8ADA, + 13505 - 11904: 0x8BDC, + 13512 - 11904: 0x97DB, + 13535 - 11904: 0x9E53, + 13540 - 11904: 0x9DAA, + 13542 - 11904: 0x87BE, + 13563 - 11904: 0x9BEA, + 13574 - 11904: 0x8A6E, + 13630 - 11904: 0x8BC8, + 13649 - 11904: 0x89E8, + 13651 - 11904: 0x89EA, + 13657 - 11904: 0x8C4B, + 13665 - 11904: 0xFB70, + 13677 - 11904: 0x89ED, + 13680 - 11904: 0x94DD, + 13682 - 11904: 0x89EE, + 13687 - 11904: 0x9EB4, + 13688 - 11904: 0x8AD3, + 13700 - 11904: 0x92DB, + 13719 - 11904: 0x94DB, + 13720 - 11904: 0x89F9, + 13729 - 11904: 0xFB7A, + 13733 - 11904: 0x89FB, + 13741 - 11904: 0x9EFC, + 13759 - 11904: 0x89FC, + 13761 - 11904: 0x89BF, + 13765 - 11904: 0x89FE, + 13767 - 11904: 0x89E6, + 13770 - 11904: 0x9D46, + 13774 - 11904: 0x9DEE, + 13778 - 11904: 0xA07E, + 13782 - 11904: 0xA068, + 13787 - 11904: 0x98E9, + 13789 - 11904: 0x8B68, + 13809 - 11904: 0x8DFD, + 13810 - 11904: 0x8BBE, + 13811 - 11904: 0x9FD9, + 13819 - 11904: 0x8AEB, + 13822 - 11904: 0x9FD7, + 13833 - 11904: 0x8B6A, + 13848 - 11904: 0x9C5C, + 13850 - 11904: 0x8BB1, + 13859 - 11904: 0xFB5E, + 13861 - 11904: 0x8770, + 13869 - 11904: 0x9DF3, + 13877 - 11904: 0xA0D0, + 13881 - 11904: 0xFC66, + 13886 - 11904: 0x92E9, + 13895 - 11904: 0x9AEC, + 13896 - 11904: 0x8FAB, + 13897 - 11904: 0xFA48, + 13902 - 11904: 0x8E45, + 13919 - 11904: 0x9C6F, + 13921 - 11904: 0x8D5C, + 13946 - 11904: 0x9EDE, + 13953 - 11904: 0x89EF, + 13978 - 11904: 0x96E9, + 13989 - 11904: 0x9EBB, + 13994 - 11904: 0x94DE, + 13996 - 11904: 0x9EB8, + 14000 - 11904: 0x97BA, + 14001 - 11904: 0xFB65, + 14005 - 11904: 0x95D6, + 14009 - 11904: 0x9CBB, + 14012 - 11904: 0x97DA, + 14017 - 11904: 0x8F45, + 14019 - 11904: 0xFB7D, + 14020 - 11904: 0x9158, + 14021 - 11904: 0xFE64, + 14023 - 11904: 0x9856, + 14024 - 11904: 0x9B4D, + 14035 - 11904: 0x935B, + 14036 - 11904: 0x95C7, + 14038 - 11904: 0x97E7, + 14045 - 11904: 0x9359, + 14049 - 11904: 0x91F5, + 14050 - 11904: 0x97B8, + 14053 - 11904: 0xFDA2, + 14054 - 11904: 0xFBB6, + 14069 - 11904: 0x92FA, + 14081 - 11904: 0x9357, + 14083 - 11904: 0x8BA6, + 14088 - 11904: 0xFBB9, + 14090 - 11904: 0x97B0, + 14093 - 11904: 0xFDC4, + 14108 - 11904: 0x9CA1, + 14114 - 11904: 0x91F2, + 14115 - 11904: 0x91F9, + 14117 - 11904: 0x8FF1, + 14124 - 11904: 0x9745, + 14125 - 11904: 0x9853, + 14128 - 11904: 0xFE78, + 14130 - 11904: 0xFBC1, + 14131 - 11904: 0x9251, + 14138 - 11904: 0x9DAD, + 14144 - 11904: 0xFD6C, + 14147 - 11904: 0xFA6B, + 14178 - 11904: 0x9BC2, + 14191 - 11904: 0x9A7B, + 14231 - 11904: 0x8B60, + 14240 - 11904: 0x934B, + 14265 - 11904: 0x9ABD, + 14270 - 11904: 0x91B7, + 14294 - 11904: 0x8D4B, + 14322 - 11904: 0x95B4, + 14328 - 11904: 0xFEC5, + 14331 - 11904: 0x9EF0, + 14351 - 11904: 0x8D64, + 14361 - 11904: 0x9269, + 14368 - 11904: 0x8D67, + 14381 - 11904: 0xFBEA, + 14390 - 11904: 0xFBEF, + 14392 - 11904: 0x8D68, + 14435 - 11904: 0x93EB, + 14453 - 11904: 0x877A, + 14496 - 11904: 0xFC42, + 14531 - 11904: 0x9166, + 14540 - 11904: 0xFACD, + 14545 - 11904: 0x93DD, + 14548 - 11904: 0x8D52, + 14586 - 11904: 0x8BCC, + 14600 - 11904: 0x8D6D, + 14612 - 11904: 0x8D6E, + 14631 - 11904: 0x96A8, + 14642 - 11904: 0xFCA6, + 14655 - 11904: 0x8D6F, + 14669 - 11904: 0x8D70, + 14691 - 11904: 0xFC64, + 14712 - 11904: 0x8CF3, + 14720 - 11904: 0x9060, + 14729 - 11904: 0x8D74, + 14730 - 11904: 0x97C3, + 14738 - 11904: 0x8AD0, + 14745 - 11904: 0x9274, + 14747 - 11904: 0x9BBE, + 14753 - 11904: 0x9CC8, + 14756 - 11904: 0x9CBA, + 14776 - 11904: 0x8D78, + 14812 - 11904: 0x9EB9, + 14818 - 11904: 0x955A, + 14821 - 11904: 0x91B4, + 14828 - 11904: 0x8A48, + 14840 - 11904: 0x8D7D, + 14843 - 11904: 0x8A7D, + 14846 - 11904: 0x8AC2, + 14849 - 11904: 0xFD4A, + 14851 - 11904: 0x8DA1, + 14854 - 11904: 0x8AD1, + 14871 - 11904: 0xFCB4, + 14872 - 11904: 0x8B47, + 14889 - 11904: 0x93A4, + 14890 - 11904: 0x9EDA, + 14900 - 11904: 0x8A51, + 14923 - 11904: 0x8DA6, + 14930 - 11904: 0x9EC5, + 14935 - 11904: 0xFCC4, + 14940 - 11904: 0xA078, + 14942 - 11904: 0x94B5, + 14950 - 11904: 0xFCC2, + 14951 - 11904: 0x8A6B, + 14999 - 11904: 0x8DAB, + 15019 - 11904: 0xFAE8, + 15037 - 11904: 0x8DAD, + 15070 - 11904: 0xFC49, + 15072 - 11904: 0x93C1, + 15088 - 11904: 0x906F, + 15090 - 11904: 0x8DB0, + 15093 - 11904: 0x87A2, + 15099 - 11904: 0x947E, + 15118 - 11904: 0x90FA, + 15129 - 11904: 0x9479, + 15138 - 11904: 0x8DB2, + 15147 - 11904: 0xFCEE, + 15161 - 11904: 0x997B, + 15170 - 11904: 0x8DB4, + 15192 - 11904: 0x8DB7, + 15200 - 11904: 0x91B3, + 15217 - 11904: 0x8DBB, + 15218 - 11904: 0x8DBA, + 15227 - 11904: 0x8DBC, + 15228 - 11904: 0x9044, + 15232 - 11904: 0xFD4C, + 15253 - 11904: 0x874B, + 15254 - 11904: 0x93E4, + 15257 - 11904: 0x93E0, + 15265 - 11904: 0xFD53, + 15292 - 11904: 0x8DC3, + 15294 - 11904: 0x9BB8, + 15298 - 11904: 0xFBF0, + 15300 - 11904: 0x93E9, + 15319 - 11904: 0x93F6, + 15325 - 11904: 0x8DC5, + 15340 - 11904: 0x8DCA, + 15346 - 11904: 0x8DCC, + 15347 - 11904: 0xFD5D, + 15348 - 11904: 0x93B5, + 15373 - 11904: 0xFD61, + 15377 - 11904: 0x9CF8, + 15381 - 11904: 0x9252, + 15384 - 11904: 0xA0E8, + 15444 - 11904: 0x9CA5, + 15499 - 11904: 0x8C56, + 15563 - 11904: 0x8DD6, + 15565 - 11904: 0x97C0, + 15569 - 11904: 0xA0DE, + 15574 - 11904: 0x97D2, + 15580 - 11904: 0xFAA5, + 15595 - 11904: 0xFDA3, + 15599 - 11904: 0x8DDB, + 15634 - 11904: 0x8CEA, + 15635 - 11904: 0x8EAF, + 15645 - 11904: 0x91B5, + 15666 - 11904: 0xFD49, + 15675 - 11904: 0xFDD1, + 15686 - 11904: 0x8DEB, + 15692 - 11904: 0x97C6, + 15694 - 11904: 0xFDCE, + 15697 - 11904: 0x90FC, + 15711 - 11904: 0xFC59, + 15714 - 11904: 0x96D6, + 15721 - 11904: 0x97C5, + 15722 - 11904: 0x8DEF, + 15727 - 11904: 0x97D7, + 15733 - 11904: 0x8DF0, + 15741 - 11904: 0x96A6, + 15749 - 11904: 0xFBBF, + 15752 - 11904: 0x8CDF, + 15754 - 11904: 0x8DF3, + 15759 - 11904: 0x9449, + 15761 - 11904: 0x8DF5, + 15781 - 11904: 0x9872, + 15789 - 11904: 0x8E6B, + 15796 - 11904: 0xFAFD, + 15807 - 11904: 0x8F50, + 15814 - 11904: 0x9DCC, + 15815 - 11904: 0xFC65, + 15817 - 11904: 0x8C44, + 15820 - 11904: 0x996E, + 15821 - 11904: 0x94A1, + 15827 - 11904: 0x8F63, + 15835 - 11904: 0xA0DA, + 15847 - 11904: 0x9253, + 15848 - 11904: 0xFDE9, + 15851 - 11904: 0x9DB5, + 15859 - 11904: 0x9879, + 15860 - 11904: 0x876A, + 15863 - 11904: 0x9D5D, + 15868 - 11904: 0x8D63, + 15869 - 11904: 0x9669, + 15878 - 11904: 0x9F70, + 15936 - 11904: 0xFC6A, + 15939 - 11904: 0x8AC7, + 15944 - 11904: 0x89D7, + 15957 - 11904: 0xFE4D, + 15988 - 11904: 0x9EDD, + 16040 - 11904: 0xFEFB, + 16041 - 11904: 0x98BC, + 16042 - 11904: 0xFACC, + 16045 - 11904: 0x95B0, + 16049 - 11904: 0x9464, + 16056 - 11904: 0x936F, + 16063 - 11904: 0x94B9, + 16066 - 11904: 0x95EC, + 16071 - 11904: 0x91EE, + 16074 - 11904: 0x98C3, + 16076 - 11904: 0x95F6, + 16080 - 11904: 0x8FFD, + 16081 - 11904: 0x98C5, + 16086 - 11904: 0x9766, + 16087 - 11904: 0xFE6E, + 16090 - 11904: 0x97DD, + 16091 - 11904: 0x8CAA, + 16094 - 11904: 0x92D2, + 16097 - 11904: 0x9761, + 16098 - 11904: 0x98CB, + 16103 - 11904: 0x95F0, + 16105 - 11904: 0x975D, + 16107 - 11904: 0x91E3, + 16108 - 11904: 0x877E, + 16112 - 11904: 0x98CC, + 16115 - 11904: 0x9469, + 16116 - 11904: 0x98CD, + 16122 - 11904: 0x98CE, + 16124 - 11904: 0x95FC, + 16127 - 11904: 0x94A3, + 16128 - 11904: 0x9662, + 16132 - 11904: 0xFEB6, + 16134 - 11904: 0x9463, + 16135 - 11904: 0x8D47, + 16142 - 11904: 0x98D0, + 16211 - 11904: 0x98D1, + 16216 - 11904: 0x9475, + 16217 - 11904: 0xFAE0, + 16227 - 11904: 0x9472, + 16252 - 11904: 0x98D6, + 16275 - 11904: 0x8AF0, + 16320 - 11904: 0x98D9, + 16328 - 11904: 0x8D5A, + 16343 - 11904: 0x98DB, + 16348 - 11904: 0x98DD, + 16357 - 11904: 0x98A8, + 16365 - 11904: 0x8A6D, + 16377 - 11904: 0x8AFB, + 16378 - 11904: 0x8AAE, + 16388 - 11904: 0xFBC9, + 16393 - 11904: 0x8C5D, + 16413 - 11904: 0x98E4, + 16441 - 11904: 0x98E6, + 16453 - 11904: 0x98E8, + 16467 - 11904: 0x8A4D, + 16471 - 11904: 0x9257, + 16482 - 11904: 0x95DF, + 16485 - 11904: 0xA0AC, + 16490 - 11904: 0x98EB, + 16495 - 11904: 0x98EC, + 16497 - 11904: 0x8CC3, + 16552 - 11904: 0x98F4, + 16564 - 11904: 0x87D9, + 16571 - 11904: 0x8AB8, + 16575 - 11904: 0x9EE7, + 16584 - 11904: 0x94BC, + 16600 - 11904: 0xFCD1, + 16607 - 11904: 0x9CC6, + 16632 - 11904: 0x8D4A, + 16634 - 11904: 0x9E7E, + 16642 - 11904: 0x8D44, + 16643 - 11904: 0x98FE, + 16644 - 11904: 0xFDE8, + 16649 - 11904: 0x9940, + 16654 - 11904: 0x94C9, + 16689 - 11904: 0x87C6, + 16690 - 11904: 0x94D3, + 16743 - 11904: 0x9946, + 16748 - 11904: 0x90C0, + 16750 - 11904: 0x94D1, + 16764 - 11904: 0x8D4E, + 16767 - 11904: 0x9573, + 16769 - 11904: 0x87CE, + 16784 - 11904: 0x93C2, + 16818 - 11904: 0x9948, + 16836 - 11904: 0x994B, + 16842 - 11904: 0x8E55, + 16847 - 11904: 0x994E, + 16859 - 11904: 0x8EFE, + 16877 - 11904: 0x8D5F, + 16879 - 11904: 0x8E59, + 16889 - 11904: 0x94EC, + 16913 - 11904: 0x94EF, + 16931 - 11904: 0x8C60, + 16960 - 11904: 0x8F74, + 16992 - 11904: 0x9955, + 17002 - 11904: 0x9544, + 17014 - 11904: 0x8CCB, + 17018 - 11904: 0x9956, + 17036 - 11904: 0x9959, + 17044 - 11904: 0x995B, + 17058 - 11904: 0x8CC4, + 17077 - 11904: 0xFA45, + 17081 - 11904: 0x90B7, + 17084 - 11904: 0x9743, + 17140 - 11904: 0x95CD, + 17147 - 11904: 0x97C9, + 17148 - 11904: 0xFD50, + 17162 - 11904: 0x87AA, + 17195 - 11904: 0x8EB9, + 17262 - 11904: 0x95C6, + 17303 - 11904: 0x9967, + 17306 - 11904: 0x8CE3, + 17338 - 11904: 0x8AB9, + 17345 - 11904: 0x8DFC, + 17369 - 11904: 0x8A76, + 17375 - 11904: 0x9D51, + 17389 - 11904: 0x9973, + 17392 - 11904: 0x8740, + 17394 - 11904: 0x9D4F, + 17409 - 11904: 0x997A, + 17410 - 11904: 0x9564, + 17427 - 11904: 0x99A1, + 17445 - 11904: 0x99A5, + 17453 - 11904: 0x99A7, + 17530 - 11904: 0x8EED, + 17551 - 11904: 0x99AD, + 17553 - 11904: 0xC87E, + 17567 - 11904: 0x946E, + 17568 - 11904: 0x8F70, + 17570 - 11904: 0xFAD0, + 17584 - 11904: 0x99B3, + 17591 - 11904: 0xA053, + 17597 - 11904: 0x8D5E, + 17600 - 11904: 0x965C, + 17603 - 11904: 0x8CE0, + 17605 - 11904: 0xFD7A, + 17614 - 11904: 0x97FE, + 17629 - 11904: 0x92BD, + 17630 - 11904: 0x8D5D, + 17631 - 11904: 0x97FD, + 17633 - 11904: 0x87DB, + 17636 - 11904: 0x8F64, + 17641 - 11904: 0xFCF7, + 17642 - 11904: 0x9562, + 17643 - 11904: 0x97CD, + 17644 - 11904: 0x9E64, + 17652 - 11904: 0x924C, + 17667 - 11904: 0x8EC9, + 17668 - 11904: 0x99BC, + 17673 - 11904: 0x9DA5, + 17675 - 11904: 0x8F54, + 17686 - 11904: 0x8F7C, + 17691 - 11904: 0x8D55, + 17693 - 11904: 0x8EA2, + 17703 - 11904: 0x8F7A, + 17710 - 11904: 0x97AE, + 17715 - 11904: 0x96C8, + 17718 - 11904: 0x8CE4, + 17723 - 11904: 0x99C3, + 17725 - 11904: 0x90D6, + 17727 - 11904: 0x9CBE, + 17731 - 11904: 0x8F76, + 17745 - 11904: 0x9470, + 17746 - 11904: 0xFB4B, + 17749 - 11904: 0xFDCA, + 17752 - 11904: 0x8CEF, + 17756 - 11904: 0x8EC7, + 17761 - 11904: 0x8D54, + 17762 - 11904: 0xA0F9, + 17770 - 11904: 0x8FA9, + 17773 - 11904: 0x8D51, + 17783 - 11904: 0x99C7, + 17784 - 11904: 0x8744, + 17797 - 11904: 0x90D7, + 17830 - 11904: 0x8743, + 17843 - 11904: 0x8747, + 17882 - 11904: 0x8758, + 17897 - 11904: 0x9EDF, + 17898 - 11904: 0x8D59, + 17923 - 11904: 0x8742, + 17926 - 11904: 0x99CE, + 17935 - 11904: 0x8FBA, + 17941 - 11904: 0x8FEB, + 17943 - 11904: 0x99CF, + 18011 - 11904: 0x8FC2, + 18042 - 11904: 0x92C9, + 18048 - 11904: 0x97DC, + 18081 - 11904: 0x875D, + 18094 - 11904: 0x87CC, + 18107 - 11904: 0x8D45, + 18127 - 11904: 0x95B3, + 18128 - 11904: 0x9C79, + 18165 - 11904: 0x95B2, + 18167 - 11904: 0x8D4C, + 18195 - 11904: 0x8FDB, + 18200 - 11904: 0x9BE3, + 18230 - 11904: 0x874C, + 18244 - 11904: 0x874D, + 18254 - 11904: 0x9E7A, + 18255 - 11904: 0x8757, + 18300 - 11904: 0x9BEE, + 18328 - 11904: 0x99DE, + 18342 - 11904: 0xFAFA, + 18389 - 11904: 0x8A52, + 18413 - 11904: 0x99E1, + 18420 - 11904: 0x8A67, + 18432 - 11904: 0x8BB5, + 18443 - 11904: 0x8AAC, + 18487 - 11904: 0x99E9, + 18525 - 11904: 0xFBCA, + 18545 - 11904: 0x97DE, + 18587 - 11904: 0x95D1, + 18605 - 11904: 0x99F5, + 18606 - 11904: 0xFC4A, + 18640 - 11904: 0x9BA9, + 18653 - 11904: 0xFBDC, + 18669 - 11904: 0xFE56, + 18675 - 11904: 0x9EA4, + 18682 - 11904: 0x9D49, + 18694 - 11904: 0x95DB, + 18705 - 11904: 0x89C5, + 18718 - 11904: 0x99F8, + 18725 - 11904: 0x9664, + 18730 - 11904: 0x9055, + 18733 - 11904: 0x96D4, + 18735 - 11904: 0x87C4, + 18736 - 11904: 0x87AE, + 18741 - 11904: 0x977C, + 18748 - 11904: 0x964D, + 18750 - 11904: 0x97E1, + 18757 - 11904: 0x9A48, + 18769 - 11904: 0x9A49, + 18771 - 11904: 0xFE7D, + 18789 - 11904: 0x90AA, + 18794 - 11904: 0x9A50, + 18802 - 11904: 0x9347, + 18825 - 11904: 0x8ED8, + 18849 - 11904: 0x90C9, + 18855 - 11904: 0x9A55, + 18911 - 11904: 0x90BC, + 18917 - 11904: 0x9A58, + 18919 - 11904: 0x8BB8, + 18959 - 11904: 0x90D5, + 18973 - 11904: 0x9641, + 18980 - 11904: 0x9A5A, + 18997 - 11904: 0x9A5C, + 19094 - 11904: 0x97C2, + 19108 - 11904: 0x875C, + 19124 - 11904: 0x8ABB, + 19128 - 11904: 0x9BAA, + 19153 - 11904: 0x90F5, + 19172 - 11904: 0x9A60, + 19199 - 11904: 0x9145, + 19216 - 11904: 0x8C58, + 19225 - 11904: 0x9A63, + 19232 - 11904: 0x8C49, + 19244 - 11904: 0x8BB6, + 19255 - 11904: 0xFCCF, + 19311 - 11904: 0x966B, + 19312 - 11904: 0x9A6E, + 19314 - 11904: 0x914F, + 19323 - 11904: 0x9746, + 19326 - 11904: 0xA0E6, + 19342 - 11904: 0x92D7, + 19344 - 11904: 0x9675, + 19347 - 11904: 0x93D4, + 19350 - 11904: 0x91BB, + 19351 - 11904: 0x9679, + 19357 - 11904: 0x9A70, + 19389 - 11904: 0x9678, + 19390 - 11904: 0x91CD, + 19392 - 11904: 0x9C4A, + 19460 - 11904: 0xA06F, + 19463 - 11904: 0xA06A, + 19470 - 11904: 0x915F, + 19506 - 11904: 0x8741, + 19515 - 11904: 0x9FA5, + 19518 - 11904: 0x89BA, + 19520 - 11904: 0x874F, + 19527 - 11904: 0x874E, + 19543 - 11904: 0x8755, + 19547 - 11904: 0x9ECD, + 19565 - 11904: 0x9A79, + 19575 - 11904: 0x8CF2, + 19579 - 11904: 0x8D57, + 19581 - 11904: 0x9DCE, + 19585 - 11904: 0x8CD2, + 19589 - 11904: 0x8759, + 19620 - 11904: 0x9D73, + 19630 - 11904: 0x96B9, + 19632 - 11904: 0x96BC, + 19639 - 11904: 0x9CD1, + 19661 - 11904: 0x89B7, + 19681 - 11904: 0x9EEE, + 19682 - 11904: 0x8749, + 19693 - 11904: 0xFB43, + 19719 - 11904: 0x875B, + 19721 - 11904: 0x9EC9, + 19728 - 11904: 0xFBD3, + 19764 - 11904: 0x91AE, + 19830 - 11904: 0x8D58, + 19831 - 11904: 0x8746, + 19849 - 11904: 0x8D56, + 19857 - 11904: 0x9D78, + 19868 - 11904: 0x9D7B, + 19968 - 11904: 0xA440, + 19969 - 11904: 0xA442, + 19971 - 11904: 0xA443, + 19972 - 11904: 0x9EB3, + 19975 - 11904: 0xC945, + 19976 - 11904: 0xA456, + 19977 - 11904: 0xA454, + 19978 - 11904: 0xA457, + 19979 - 11904: 0xA455, + 19980 - 11904: 0xC946, + 19981 - 11904: 0xA4A3, + 19982 - 11904: 0xC94F, + 19983 - 11904: 0xC94D, + 19984 - 11904: 0xA4A2, + 19985 - 11904: 0xA4A1, + 19988 - 11904: 0xA542, + 19989 - 11904: 0xA541, + 19990 - 11904: 0xA540, + 19992 - 11904: 0xA543, + 19993 - 11904: 0xA4FE, + 19994 - 11904: 0x9EB2, + 19996 - 11904: 0x9DD6, + 19998 - 11904: 0xA5E0, + 19999 - 11904: 0xA5E1, + 20001 - 11904: 0x994F, + 20004 - 11904: 0x89CE, + 20006 - 11904: 0xA8C3, + 20008 - 11904: 0x8BC0, + 20010 - 11904: 0x9FC4, + 20011 - 11904: 0xA458, + 20012 - 11904: 0x8BD4, + 20013 - 11904: 0xA4A4, + 20014 - 11904: 0xC950, + 20015 - 11904: 0x8C72, + 20016 - 11904: 0xA4A5, + 20017 - 11904: 0xC963, + 20018 - 11904: 0xA6EA, + 20019 - 11904: 0xCBB1, + 20022 - 11904: 0xC6BF, + 20023 - 11904: 0x8BF9, + 20024 - 11904: 0xA459, + 20025 - 11904: 0xA4A6, + 20027 - 11904: 0xA544, + 20028 - 11904: 0xC964, + 20029 - 11904: 0x8946, + 20031 - 11904: 0xC6C0, + 20034 - 11904: 0xC940, + 20035 - 11904: 0xA444, + 20037 - 11904: 0xA45B, + 20039 - 11904: 0xC947, + 20040 - 11904: 0xA45C, + 20041 - 11904: 0xFAE5, + 20043 - 11904: 0xA4A7, + 20045 - 11904: 0xA545, + 20046 - 11904: 0xA547, + 20047 - 11904: 0xA546, + 20050 - 11904: 0xA5E2, + 20051 - 11904: 0xA5E3, + 20054 - 11904: 0xA8C4, + 20056 - 11904: 0xADBC, + 20057 - 11904: 0xA441, + 20058 - 11904: 0xC87B, + 20059 - 11904: 0x8BC6, + 20060 - 11904: 0xC941, + 20061 - 11904: 0xA445, + 20062 - 11904: 0xA45E, + 20063 - 11904: 0xA45D, + 20073 - 11904: 0xA5E4, + 20074 - 11904: 0x9C57, + 20083 - 11904: 0xA8C5, + 20088 - 11904: 0x9AFB, + 20094 - 11904: 0xB0AE, + 20095 - 11904: 0xD44B, + 20096 - 11904: 0x89D0, + 20097 - 11904: 0x89CF, + 20098 - 11904: 0xB6C3, + 20099 - 11904: 0xDCB1, + 20100 - 11904: 0xDCB2, + 20101 - 11904: 0xC6C1, + 20102 - 11904: 0xA446, + 20103 - 11904: 0x89D1, + 20104 - 11904: 0xA4A9, + 20105 - 11904: 0x89E2, + 20107 - 11904: 0xA8C6, + 20108 - 11904: 0xA447, + 20109 - 11904: 0xC948, + 20110 - 11904: 0xA45F, + 20113 - 11904: 0xA4AA, + 20114 - 11904: 0xA4AC, + 20115 - 11904: 0xC951, + 20116 - 11904: 0xA4AD, + 20117 - 11904: 0xA4AB, + 20120 - 11904: 0x927E, + 20121 - 11904: 0xA5E5, + 20122 - 11904: 0x9DBA, + 20123 - 11904: 0xA8C7, + 20126 - 11904: 0xA8C8, + 20127 - 11904: 0xAB45, + 20128 - 11904: 0xC6C2, + 20129 - 11904: 0xA460, + 20130 - 11904: 0xA4AE, + 20131 - 11904: 0x8C6F, + 20132 - 11904: 0xA5E6, + 20133 - 11904: 0xA5E8, + 20134 - 11904: 0xA5E7, + 20136 - 11904: 0xA6EB, + 20139 - 11904: 0xA8C9, + 20140 - 11904: 0xA8CA, + 20141 - 11904: 0xAB46, + 20142 - 11904: 0xAB47, + 20147 - 11904: 0xADBD, + 20150 - 11904: 0xDCB3, + 20151 - 11904: 0xFBF8, + 20153 - 11904: 0xF6D6, + 20154 - 11904: 0xA448, + 20155 - 11904: 0x8BC7, + 20156 - 11904: 0x926B, + 20159 - 11904: 0x89D2, + 20160 - 11904: 0xA4B0, + 20161 - 11904: 0xA4AF, + 20162 - 11904: 0xC952, + 20163 - 11904: 0xA4B1, + 20164 - 11904: 0xA4B7, + 20166 - 11904: 0xA4B2, + 20167 - 11904: 0xA4B3, + 20168 - 11904: 0xC954, + 20169 - 11904: 0xC953, + 20170 - 11904: 0xA4B5, + 20171 - 11904: 0xA4B6, + 20173 - 11904: 0xA4B4, + 20174 - 11904: 0x9FCF, + 20180 - 11904: 0xA54A, + 20181 - 11904: 0xA54B, + 20182 - 11904: 0xA54C, + 20183 - 11904: 0xA54D, + 20184 - 11904: 0xA549, + 20185 - 11904: 0xA550, + 20186 - 11904: 0xC96A, + 20188 - 11904: 0xC966, + 20189 - 11904: 0xC969, + 20190 - 11904: 0xA551, + 20191 - 11904: 0xA561, + 20193 - 11904: 0xC968, + 20195 - 11904: 0xA54E, + 20196 - 11904: 0xA54F, + 20197 - 11904: 0xA548, + 20200 - 11904: 0xC965, + 20201 - 11904: 0xC967, + 20202 - 11904: 0x9DA9, + 20203 - 11904: 0x89D3, + 20206 - 11904: 0x99E2, + 20208 - 11904: 0xA5F5, + 20209 - 11904: 0xC9B0, + 20210 - 11904: 0xA5F2, + 20211 - 11904: 0xA5F6, + 20212 - 11904: 0xC9BA, + 20213 - 11904: 0xC9AE, + 20214 - 11904: 0xA5F3, + 20215 - 11904: 0xC9B2, + 20216 - 11904: 0x9267, + 20219 - 11904: 0xA5F4, + 20221 - 11904: 0xA5F7, + 20223 - 11904: 0xA5E9, + 20224 - 11904: 0xC9B1, + 20225 - 11904: 0xA5F8, + 20226 - 11904: 0xC9B5, + 20227 - 11904: 0x92A4, + 20228 - 11904: 0xC9B9, + 20229 - 11904: 0xC9B6, + 20232 - 11904: 0xC9B3, + 20233 - 11904: 0xA5EA, + 20234 - 11904: 0xA5EC, + 20235 - 11904: 0xA5F9, + 20237 - 11904: 0xA5EE, + 20238 - 11904: 0xC9AB, + 20239 - 11904: 0xA5F1, + 20240 - 11904: 0xA5EF, + 20241 - 11904: 0xA5F0, + 20242 - 11904: 0xC9BB, + 20243 - 11904: 0xC9B8, + 20244 - 11904: 0xC9AF, + 20245 - 11904: 0xA5ED, + 20247 - 11904: 0x8C73, + 20248 - 11904: 0xC9AC, + 20249 - 11904: 0xA5EB, + 20250 - 11904: 0x894E, + 20253 - 11904: 0xC9B4, + 20258 - 11904: 0xC9B7, + 20264 - 11904: 0x894F, + 20265 - 11904: 0x9278, + 20268 - 11904: 0xC9AD, + 20269 - 11904: 0xCA66, + 20271 - 11904: 0xA742, + 20272 - 11904: 0xA6F4, + 20274 - 11904: 0x91B6, + 20275 - 11904: 0xCA67, + 20276 - 11904: 0xA6F1, + 20278 - 11904: 0xA744, + 20279 - 11904: 0x89D4, + 20280 - 11904: 0xA6F9, + 20281 - 11904: 0x9FD2, + 20282 - 11904: 0xA6F8, + 20283 - 11904: 0xCA5B, + 20284 - 11904: 0xA6FC, + 20285 - 11904: 0xA6F7, + 20286 - 11904: 0xCA60, + 20287 - 11904: 0xCA68, + 20289 - 11904: 0xCA64, + 20290 - 11904: 0x92A7, + 20291 - 11904: 0xA6FA, + 20293 - 11904: 0x95A2, + 20294 - 11904: 0xA6FD, + 20295 - 11904: 0xA6EE, + 20296 - 11904: 0xA747, + 20297 - 11904: 0xCA5D, + 20299 - 11904: 0x926E, + 20300 - 11904: 0xCBBD, + 20301 - 11904: 0xA6EC, + 20302 - 11904: 0xA743, + 20303 - 11904: 0xA6ED, + 20304 - 11904: 0xA6F5, + 20305 - 11904: 0xA6F6, + 20306 - 11904: 0xCA62, + 20307 - 11904: 0xCA5E, + 20308 - 11904: 0xA6FB, + 20309 - 11904: 0xA6F3, + 20310 - 11904: 0xCA5A, + 20311 - 11904: 0xA6EF, + 20312 - 11904: 0xCA65, + 20313 - 11904: 0xA745, + 20314 - 11904: 0xA748, + 20315 - 11904: 0xA6F2, + 20316 - 11904: 0xA740, + 20317 - 11904: 0xA746, + 20318 - 11904: 0xA6F0, + 20319 - 11904: 0xCA63, + 20320 - 11904: 0xA741, + 20321 - 11904: 0xCA69, + 20322 - 11904: 0xCA5C, + 20323 - 11904: 0xA6FE, + 20324 - 11904: 0xCA5F, + 20327 - 11904: 0xCA61, + 20329 - 11904: 0xA8D8, + 20330 - 11904: 0xCBBF, + 20331 - 11904: 0xCBCB, + 20332 - 11904: 0xA8D0, + 20334 - 11904: 0xCBCC, + 20335 - 11904: 0xA8CB, + 20336 - 11904: 0xA8D5, + 20338 - 11904: 0x96EA, + 20339 - 11904: 0xA8CE, + 20340 - 11904: 0xCBB9, + 20341 - 11904: 0xA8D6, + 20342 - 11904: 0xCBB8, + 20343 - 11904: 0xCBBC, + 20344 - 11904: 0xCBC3, + 20345 - 11904: 0xCBC1, + 20346 - 11904: 0xA8DE, + 20347 - 11904: 0xA8D9, + 20348 - 11904: 0xCBB3, + 20349 - 11904: 0xCBB5, + 20350 - 11904: 0xA8DB, + 20351 - 11904: 0xA8CF, + 20352 - 11904: 0xCBB6, + 20353 - 11904: 0xCBC2, + 20354 - 11904: 0xCBC9, + 20355 - 11904: 0xA8D4, + 20356 - 11904: 0xCBBB, + 20357 - 11904: 0xCBB4, + 20358 - 11904: 0xA8D3, + 20359 - 11904: 0xCBB7, + 20360 - 11904: 0xA8D7, + 20361 - 11904: 0xCBBA, + 20362 - 11904: 0x926F, + 20363 - 11904: 0xA8D2, + 20365 - 11904: 0xA8CD, + 20367 - 11904: 0xA8DC, + 20368 - 11904: 0xCBC4, + 20369 - 11904: 0xA8DD, + 20370 - 11904: 0xCBC8, + 20372 - 11904: 0xCBC6, + 20373 - 11904: 0xCBCA, + 20374 - 11904: 0xA8DA, + 20375 - 11904: 0xCBBE, + 20376 - 11904: 0xCBB2, + 20378 - 11904: 0xCBC0, + 20379 - 11904: 0xA8D1, + 20380 - 11904: 0xCBC5, + 20381 - 11904: 0xA8CC, + 20382 - 11904: 0xCBC7, + 20386 - 11904: 0x92A3, + 20392 - 11904: 0x8950, + 20395 - 11904: 0xFA57, + 20398 - 11904: 0xAB56, + 20399 - 11904: 0xAB4A, + 20400 - 11904: 0x9866, + 20402 - 11904: 0xCDE0, + 20403 - 11904: 0xCDE8, + 20404 - 11904: 0x8CF8, + 20405 - 11904: 0xAB49, + 20406 - 11904: 0xAB51, + 20407 - 11904: 0xAB5D, + 20409 - 11904: 0xCDEE, + 20410 - 11904: 0xCDEC, + 20411 - 11904: 0xCDE7, + 20413 - 11904: 0x89D6, + 20415 - 11904: 0xAB4B, + 20416 - 11904: 0xCDED, + 20417 - 11904: 0xCDE3, + 20418 - 11904: 0xAB59, + 20419 - 11904: 0xAB50, + 20420 - 11904: 0xAB58, + 20421 - 11904: 0xCDDE, + 20423 - 11904: 0xCDEA, + 20424 - 11904: 0x98B2, + 20425 - 11904: 0xCDE1, + 20426 - 11904: 0xAB54, + 20427 - 11904: 0xCDE2, + 20428 - 11904: 0x92AB, + 20429 - 11904: 0xCDDD, + 20430 - 11904: 0xAB5B, + 20431 - 11904: 0xAB4E, + 20432 - 11904: 0xAB57, + 20433 - 11904: 0xAB4D, + 20435 - 11904: 0xCDDF, + 20436 - 11904: 0xCDE4, + 20438 - 11904: 0xCDEB, + 20439 - 11904: 0xAB55, + 20440 - 11904: 0xAB52, + 20441 - 11904: 0xCDE6, + 20442 - 11904: 0xAB5A, + 20443 - 11904: 0xCDE9, + 20444 - 11904: 0xCDE5, + 20445 - 11904: 0xAB4F, + 20446 - 11904: 0xAB5C, + 20447 - 11904: 0xAB53, + 20448 - 11904: 0xAB4C, + 20449 - 11904: 0xAB48, + 20452 - 11904: 0x96DE, + 20453 - 11904: 0x92AC, + 20460 - 11904: 0xCDEF, + 20462 - 11904: 0xADD7, + 20463 - 11904: 0xADC1, + 20464 - 11904: 0x8C70, + 20465 - 11904: 0xADD1, + 20466 - 11904: 0x9F6E, + 20467 - 11904: 0xADD6, + 20468 - 11904: 0xD0D0, + 20469 - 11904: 0xD0CF, + 20470 - 11904: 0xD0D4, + 20471 - 11904: 0xD0D5, + 20472 - 11904: 0xADC4, + 20473 - 11904: 0x8EF2, + 20474 - 11904: 0xADCD, + 20477 - 11904: 0x9F6C, + 20478 - 11904: 0xADDA, + 20480 - 11904: 0xADCE, + 20483 - 11904: 0x89D8, + 20485 - 11904: 0xD0C9, + 20486 - 11904: 0xADC7, + 20487 - 11904: 0xD0CA, + 20488 - 11904: 0xFA59, + 20489 - 11904: 0xADDC, + 20491 - 11904: 0xADD3, + 20492 - 11904: 0xADBE, + 20493 - 11904: 0xADBF, + 20494 - 11904: 0xD0DD, + 20495 - 11904: 0xB0BF, + 20497 - 11904: 0xADCC, + 20498 - 11904: 0xADCB, + 20499 - 11904: 0xD0CB, + 20500 - 11904: 0xADCF, + 20501 - 11904: 0xD45B, + 20502 - 11904: 0xADC6, + 20503 - 11904: 0xD0D6, + 20504 - 11904: 0xADD5, + 20505 - 11904: 0xADD4, + 20506 - 11904: 0xADCA, + 20507 - 11904: 0xD0CE, + 20508 - 11904: 0xD0D7, + 20510 - 11904: 0xD0C8, + 20511 - 11904: 0xADC9, + 20512 - 11904: 0xD0D8, + 20513 - 11904: 0xADD2, + 20514 - 11904: 0xD0CC, + 20515 - 11904: 0xADC0, + 20517 - 11904: 0xADC3, + 20518 - 11904: 0xADC2, + 20519 - 11904: 0xD0D9, + 20520 - 11904: 0xADD0, + 20521 - 11904: 0xFA5F, + 20522 - 11904: 0xADD9, + 20523 - 11904: 0xADDB, + 20524 - 11904: 0xD0D3, + 20525 - 11904: 0xADD8, + 20526 - 11904: 0x92A8, + 20527 - 11904: 0xD0DB, + 20528 - 11904: 0xD0CD, + 20529 - 11904: 0xD0DC, + 20531 - 11904: 0xD0D1, + 20532 - 11904: 0x9163, + 20533 - 11904: 0xD0DA, + 20535 - 11904: 0xD0D2, + 20539 - 11904: 0x8C40, + 20540 - 11904: 0xADC8, + 20544 - 11904: 0xD463, + 20545 - 11904: 0xD457, + 20547 - 11904: 0xB0B3, + 20549 - 11904: 0xD45C, + 20550 - 11904: 0xD462, + 20551 - 11904: 0xB0B2, + 20552 - 11904: 0xD455, + 20553 - 11904: 0xB0B6, + 20554 - 11904: 0xD459, + 20555 - 11904: 0xD452, + 20556 - 11904: 0xB0B4, + 20557 - 11904: 0xD456, + 20558 - 11904: 0xB0B9, + 20559 - 11904: 0xB0BE, + 20561 - 11904: 0xD467, + 20563 - 11904: 0xD451, + 20565 - 11904: 0xB0BA, + 20566 - 11904: 0x9F73, + 20567 - 11904: 0xD466, + 20568 - 11904: 0x92AD, + 20570 - 11904: 0xB0B5, + 20571 - 11904: 0xD458, + 20572 - 11904: 0xB0B1, + 20573 - 11904: 0xD453, + 20574 - 11904: 0xD44F, + 20575 - 11904: 0xD45D, + 20576 - 11904: 0xD450, + 20577 - 11904: 0xD44E, + 20578 - 11904: 0xD45A, + 20579 - 11904: 0xD460, + 20580 - 11904: 0xD461, + 20581 - 11904: 0xB0B7, + 20582 - 11904: 0x9BE9, + 20584 - 11904: 0xD85B, + 20585 - 11904: 0xD45E, + 20586 - 11904: 0xD44D, + 20587 - 11904: 0xD45F, + 20588 - 11904: 0x92A9, + 20589 - 11904: 0xB0C1, + 20590 - 11904: 0xD464, + 20591 - 11904: 0xB0C0, + 20592 - 11904: 0xD44C, + 20594 - 11904: 0xD454, + 20595 - 11904: 0xD465, + 20596 - 11904: 0xB0BC, + 20597 - 11904: 0xB0BB, + 20598 - 11904: 0xB0B8, + 20599 - 11904: 0xB0BD, + 20602 - 11904: 0xB0AF, + 20605 - 11904: 0xFA66, + 20608 - 11904: 0xB3C8, + 20609 - 11904: 0x92AA, + 20610 - 11904: 0xD85E, + 20611 - 11904: 0xD857, + 20613 - 11904: 0xB3C5, + 20615 - 11904: 0xD85F, + 20616 - 11904: 0x89D9, + 20619 - 11904: 0xD855, + 20620 - 11904: 0xD858, + 20621 - 11904: 0xB3C4, + 20622 - 11904: 0xD859, + 20624 - 11904: 0xFD56, + 20625 - 11904: 0xB3C7, + 20626 - 11904: 0xD85D, + 20628 - 11904: 0xD853, + 20629 - 11904: 0xD852, + 20630 - 11904: 0xB3C9, + 20632 - 11904: 0xB3CA, + 20633 - 11904: 0xB3C6, + 20634 - 11904: 0xB3CB, + 20635 - 11904: 0xD851, + 20636 - 11904: 0xD85C, + 20637 - 11904: 0xD85A, + 20638 - 11904: 0xD854, + 20642 - 11904: 0xB3C3, + 20643 - 11904: 0xD856, + 20646 - 11904: 0x9FA8, + 20652 - 11904: 0xB6CA, + 20653 - 11904: 0xB6C4, + 20654 - 11904: 0xDCB7, + 20655 - 11904: 0xB6CD, + 20656 - 11904: 0xDCBD, + 20657 - 11904: 0xDCC0, + 20658 - 11904: 0xB6C6, + 20659 - 11904: 0xB6C7, + 20660 - 11904: 0xDCBA, + 20661 - 11904: 0xB6C5, + 20662 - 11904: 0xDCC3, + 20663 - 11904: 0xB6CB, + 20664 - 11904: 0xDCC4, + 20666 - 11904: 0xDCBF, + 20667 - 11904: 0xB6CC, + 20668 - 11904: 0x8C71, + 20669 - 11904: 0xDCB4, + 20670 - 11904: 0xB6C9, + 20671 - 11904: 0xDCB5, + 20673 - 11904: 0xDCBE, + 20674 - 11904: 0xDCBC, + 20676 - 11904: 0xDCB8, + 20677 - 11904: 0xB6C8, + 20678 - 11904: 0xDCB6, + 20679 - 11904: 0xB6CE, + 20680 - 11904: 0xDCBB, + 20681 - 11904: 0xDCC2, + 20682 - 11904: 0xDCB9, + 20683 - 11904: 0xDCC1, + 20685 - 11904: 0x92A1, + 20686 - 11904: 0xB9B6, + 20687 - 11904: 0xB9B3, + 20688 - 11904: 0x90E3, + 20689 - 11904: 0xB9B4, + 20691 - 11904: 0xE0F9, + 20692 - 11904: 0xE0F1, + 20693 - 11904: 0xB9B2, + 20694 - 11904: 0xB9AF, + 20695 - 11904: 0xE0F2, + 20697 - 11904: 0xA0A6, + 20698 - 11904: 0xB9B1, + 20699 - 11904: 0xE0F5, + 20701 - 11904: 0xE0F7, + 20703 - 11904: 0x94AB, + 20704 - 11904: 0xE0FE, + 20705 - 11904: 0xFC72, + 20707 - 11904: 0xE0FD, + 20708 - 11904: 0xE0F8, + 20709 - 11904: 0xB9AE, + 20710 - 11904: 0xE0F0, + 20711 - 11904: 0xB9AC, + 20712 - 11904: 0xE0F3, + 20713 - 11904: 0xB9B7, + 20714 - 11904: 0xE0F6, + 20716 - 11904: 0xE0FA, + 20717 - 11904: 0xB9B0, + 20718 - 11904: 0xB9AD, + 20719 - 11904: 0xE0FC, + 20720 - 11904: 0xE0FB, + 20721 - 11904: 0xB9B5, + 20723 - 11904: 0xE0F4, + 20724 - 11904: 0x97C4, + 20725 - 11904: 0xBBF8, + 20726 - 11904: 0xE4EC, + 20728 - 11904: 0xE4E9, + 20729 - 11904: 0xBBF9, + 20731 - 11904: 0xBBF7, + 20732 - 11904: 0x92AE, + 20733 - 11904: 0xE4F0, + 20734 - 11904: 0xE4ED, + 20735 - 11904: 0xE4E6, + 20736 - 11904: 0xBBF6, + 20737 - 11904: 0xFA67, + 20738 - 11904: 0xBBFA, + 20739 - 11904: 0xE4E7, + 20740 - 11904: 0xBBF5, + 20741 - 11904: 0xBBFD, + 20742 - 11904: 0xE4EA, + 20743 - 11904: 0xE4EB, + 20744 - 11904: 0xBBFB, + 20745 - 11904: 0xBBFC, + 20746 - 11904: 0xE4F1, + 20747 - 11904: 0xE4EE, + 20748 - 11904: 0xE4EF, + 20749 - 11904: 0x92A2, + 20750 - 11904: 0xFA69, + 20752 - 11904: 0xBEAA, + 20753 - 11904: 0xE8F8, + 20754 - 11904: 0xBEA7, + 20755 - 11904: 0xE8F5, + 20756 - 11904: 0xBEA9, + 20757 - 11904: 0xBEAB, + 20759 - 11904: 0xE8F6, + 20760 - 11904: 0xBEA8, + 20762 - 11904: 0xE8F7, + 20764 - 11904: 0xE8F4, + 20767 - 11904: 0xC076, + 20768 - 11904: 0xECBD, + 20769 - 11904: 0xC077, + 20770 - 11904: 0xECBB, + 20772 - 11904: 0xECBC, + 20773 - 11904: 0xECBA, + 20774 - 11904: 0xECB9, + 20777 - 11904: 0xECBE, + 20778 - 11904: 0xC075, + 20779 - 11904: 0x9268, + 20781 - 11904: 0xEFB8, + 20782 - 11904: 0xEFB9, + 20784 - 11904: 0xE4E8, + 20785 - 11904: 0xEFB7, + 20786 - 11904: 0xC078, + 20787 - 11904: 0xC35F, + 20788 - 11904: 0xF1EB, + 20789 - 11904: 0xF1EC, + 20791 - 11904: 0xC4D7, + 20792 - 11904: 0xC4D8, + 20793 - 11904: 0xF5C1, + 20794 - 11904: 0xF5C0, + 20795 - 11904: 0xC56C, + 20796 - 11904: 0xC56B, + 20797 - 11904: 0xF7D0, + 20799 - 11904: 0xA449, + 20800 - 11904: 0xA461, + 20801 - 11904: 0xA4B9, + 20803 - 11904: 0xA4B8, + 20804 - 11904: 0xA553, + 20805 - 11904: 0xA552, + 20806 - 11904: 0xA5FC, + 20807 - 11904: 0xA5FB, + 20808 - 11904: 0xA5FD, + 20809 - 11904: 0xA5FA, + 20811 - 11904: 0xA74A, + 20812 - 11904: 0xA749, + 20813 - 11904: 0xA74B, + 20818 - 11904: 0xA8E0, + 20820 - 11904: 0xA8DF, + 20821 - 11904: 0xA8E1, + 20822 - 11904: 0x8951, + 20823 - 11904: 0xAB5E, + 20825 - 11904: 0xA259, + 20826 - 11904: 0xD0DE, + 20827 - 11904: 0xA25A, + 20828 - 11904: 0xB0C2, + 20829 - 11904: 0xA25C, + 20830 - 11904: 0xA25B, + 20831 - 11904: 0xD860, + 20832 - 11904: 0xFA6F, + 20833 - 11904: 0xA25D, + 20834 - 11904: 0xB9B8, + 20835 - 11904: 0xA25E, + 20837 - 11904: 0xA44A, + 20839 - 11904: 0xA4BA, + 20840 - 11904: 0xA5FE, + 20841 - 11904: 0xA8E2, + 20842 - 11904: 0xFA71, + 20843 - 11904: 0xA44B, + 20844 - 11904: 0xA4BD, + 20845 - 11904: 0xA4BB, + 20846 - 11904: 0xA4BC, + 20849 - 11904: 0xA640, + 20852 - 11904: 0x8952, + 20853 - 11904: 0xA74C, + 20854 - 11904: 0xA8E4, + 20855 - 11904: 0xA8E3, + 20856 - 11904: 0xA8E5, + 20857 - 11904: 0x945A, + 20860 - 11904: 0xADDD, + 20864 - 11904: 0xBEAC, + 20866 - 11904: 0xC6C3, + 20870 - 11904: 0x89DD, + 20871 - 11904: 0xC94E, + 20872 - 11904: 0xC8A2, + 20873 - 11904: 0xA554, + 20874 - 11904: 0xA555, + 20877 - 11904: 0xA641, + 20879 - 11904: 0xCA6A, + 20881 - 11904: 0xAB60, + 20882 - 11904: 0xAB5F, + 20883 - 11904: 0xD0E0, + 20884 - 11904: 0xD0DF, + 20885 - 11904: 0xB0C3, + 20886 - 11904: 0xC6C4, + 20887 - 11904: 0xA4BE, + 20888 - 11904: 0xC955, + 20890 - 11904: 0x9E52, + 20892 - 11904: 0x8953, + 20894 - 11904: 0xCBCD, + 20896 - 11904: 0xAB61, + 20898 - 11904: 0xADE0, + 20900 - 11904: 0xADDE, + 20901 - 11904: 0xADDF, + 20903 - 11904: 0x9E55, + 20904 - 11904: 0x92BA, + 20906 - 11904: 0xBEAD, + 20907 - 11904: 0xC6C5, + 20908 - 11904: 0xA556, + 20910 - 11904: 0x8C5B, + 20912 - 11904: 0xA642, + 20913 - 11904: 0xC9BC, + 20914 - 11904: 0xFA7D, + 20915 - 11904: 0xFAA8, + 20916 - 11904: 0x9A68, + 20917 - 11904: 0xFA47, + 20918 - 11904: 0xA74D, + 20919 - 11904: 0xA74E, + 20920 - 11904: 0xFA7E, + 20921 - 11904: 0xCA6B, + 20924 - 11904: 0xCBCE, + 20925 - 11904: 0xA8E6, + 20926 - 11904: 0xCBCF, + 20931 - 11904: 0x92BB, + 20932 - 11904: 0xD0E2, + 20933 - 11904: 0xD0E3, + 20934 - 11904: 0xADE3, + 20935 - 11904: 0xFDB6, + 20936 - 11904: 0xD0E4, + 20937 - 11904: 0xFAA2, + 20938 - 11904: 0xD0E1, + 20939 - 11904: 0xADE4, + 20940 - 11904: 0xADE2, + 20941 - 11904: 0xADE1, + 20942 - 11904: 0xD0E5, + 20943 - 11904: 0xFAA3, + 20944 - 11904: 0xD468, + 20945 - 11904: 0xFAA4, + 20946 - 11904: 0x9BB4, + 20947 - 11904: 0xFAA6, + 20948 - 11904: 0xD861, + 20951 - 11904: 0xDCC5, + 20952 - 11904: 0xE140, + 20955 - 11904: 0x89DF, + 20956 - 11904: 0xBBFE, + 20957 - 11904: 0xBEAE, + 20958 - 11904: 0xE8F9, + 20959 - 11904: 0xFDDB, + 20960 - 11904: 0xA44C, + 20961 - 11904: 0xA45A, + 20962 - 11904: 0xFAA9, + 20964 - 11904: 0x8954, + 20973 - 11904: 0xFAAB, + 20976 - 11904: 0xB0C4, + 20977 - 11904: 0xB3CD, + 20979 - 11904: 0xB9B9, + 20980 - 11904: 0xFC7A, + 20981 - 11904: 0xC942, + 20982 - 11904: 0xA4BF, + 20984 - 11904: 0xA559, + 20985 - 11904: 0xA557, + 20986 - 11904: 0xA558, + 20988 - 11904: 0x89E0, + 20989 - 11904: 0xA8E7, + 20990 - 11904: 0x9F4F, + 20992 - 11904: 0xA44D, + 20993 - 11904: 0xA44E, + 20994 - 11904: 0xC87D, + 20995 - 11904: 0xA462, + 20997 - 11904: 0x89E1, + 20998 - 11904: 0xA4C0, + 20999 - 11904: 0xA4C1, + 21000 - 11904: 0xA4C2, + 21001 - 11904: 0xC9BE, + 21002 - 11904: 0xA55A, + 21003 - 11904: 0xFAB0, + 21004 - 11904: 0xC96B, + 21006 - 11904: 0xA646, + 21008 - 11904: 0xC9BF, + 21009 - 11904: 0xA644, + 21010 - 11904: 0xA645, + 21011 - 11904: 0xC9BD, + 21014 - 11904: 0xA647, + 21015 - 11904: 0xA643, + 21020 - 11904: 0xCA6C, + 21021 - 11904: 0xAAEC, + 21022 - 11904: 0xCA6D, + 21023 - 11904: 0x9FCD, + 21024 - 11904: 0xA0E7, + 21025 - 11904: 0xCA6E, + 21028 - 11904: 0xA750, + 21029 - 11904: 0xA74F, + 21030 - 11904: 0xFAB1, + 21031 - 11904: 0x89A6, + 21032 - 11904: 0xA753, + 21033 - 11904: 0xA751, + 21034 - 11904: 0xA752, + 21038 - 11904: 0xA8ED, + 21040 - 11904: 0xA8EC, + 21041 - 11904: 0xCBD4, + 21042 - 11904: 0xCBD1, + 21043 - 11904: 0xCBD2, + 21044 - 11904: 0x9EFA, + 21045 - 11904: 0xCBD0, + 21046 - 11904: 0xA8EE, + 21047 - 11904: 0xA8EA, + 21048 - 11904: 0xA8E9, + 21050 - 11904: 0xA8EB, + 21051 - 11904: 0xA8E8, + 21052 - 11904: 0xFAB2, + 21057 - 11904: 0xA8EF, + 21059 - 11904: 0xAB63, + 21060 - 11904: 0xCDF0, + 21062 - 11904: 0xCBD3, + 21063 - 11904: 0xAB68, + 21065 - 11904: 0xCDF1, + 21066 - 11904: 0xAB64, + 21067 - 11904: 0xAB67, + 21068 - 11904: 0xAB66, + 21069 - 11904: 0xAB65, + 21070 - 11904: 0xAB62, + 21071 - 11904: 0x87BC, + 21074 - 11904: 0xD0E8, + 21076 - 11904: 0xADE7, + 21077 - 11904: 0xD0EB, + 21078 - 11904: 0xADE5, + 21079 - 11904: 0xFAB4, + 21081 - 11904: 0x92C4, + 21082 - 11904: 0xD0E7, + 21083 - 11904: 0xADE8, + 21084 - 11904: 0xADE6, + 21085 - 11904: 0xADE9, + 21086 - 11904: 0xD0E9, + 21087 - 11904: 0xD0EA, + 21088 - 11904: 0x9F6F, + 21089 - 11904: 0xD0E6, + 21090 - 11904: 0xD0EC, + 21096 - 11904: 0x8BB0, + 21097 - 11904: 0xB3D1, + 21098 - 11904: 0xB0C5, + 21099 - 11904: 0xD469, + 21100 - 11904: 0xD46B, + 21101 - 11904: 0xD46A, + 21102 - 11904: 0xD46C, + 21103 - 11904: 0xB0C6, + 21106 - 11904: 0xB3CE, + 21107 - 11904: 0x9FAC, + 21108 - 11904: 0xB3CF, + 21109 - 11904: 0xB3D0, + 21111 - 11904: 0xB6D0, + 21112 - 11904: 0xDCC7, + 21113 - 11904: 0x89E3, + 21114 - 11904: 0xDCC6, + 21115 - 11904: 0xDCC8, + 21116 - 11904: 0xDCC9, + 21117 - 11904: 0xB6D1, + 21119 - 11904: 0xB6CF, + 21120 - 11904: 0xE141, + 21121 - 11904: 0xE142, + 21122 - 11904: 0xB9BB, + 21123 - 11904: 0xB9BA, + 21124 - 11904: 0xE35A, + 21127 - 11904: 0xBC40, + 21128 - 11904: 0xBC41, + 21129 - 11904: 0xBC42, + 21130 - 11904: 0xBC44, + 21131 - 11904: 0xE4F2, + 21132 - 11904: 0xE4F3, + 21133 - 11904: 0xBC43, + 21135 - 11904: 0x9BD3, + 21136 - 11904: 0x89E4, + 21137 - 11904: 0xBEAF, + 21139 - 11904: 0xBEB0, + 21140 - 11904: 0xFAB5, + 21142 - 11904: 0xF1ED, + 21143 - 11904: 0xF5C3, + 21144 - 11904: 0xF5C2, + 21145 - 11904: 0xF7D1, + 21146 - 11904: 0x9FD5, + 21147 - 11904: 0xA44F, + 21151 - 11904: 0xA55C, + 21152 - 11904: 0xA55B, + 21153 - 11904: 0x8955, + 21155 - 11904: 0xA648, + 21156 - 11904: 0x92C5, + 21158 - 11904: 0xC9C0, + 21160 - 11904: 0x8956, + 21161 - 11904: 0xA755, + 21162 - 11904: 0xA756, + 21163 - 11904: 0xA754, + 21164 - 11904: 0xA757, + 21165 - 11904: 0xCA6F, + 21166 - 11904: 0xCA70, + 21173 - 11904: 0xFAB3, + 21177 - 11904: 0xFAB6, + 21179 - 11904: 0xA8F1, + 21180 - 11904: 0xCBD5, + 21182 - 11904: 0xA8F0, + 21184 - 11904: 0xCDF2, + 21185 - 11904: 0xAB6C, + 21186 - 11904: 0xCDF3, + 21187 - 11904: 0xAB6B, + 21189 - 11904: 0xFAB7, + 21191 - 11904: 0xAB69, + 21193 - 11904: 0xAB6A, + 21196 - 11904: 0x9EDC, + 21197 - 11904: 0xD0ED, + 21200 - 11904: 0xFBC4, + 21201 - 11904: 0x9F71, + 21202 - 11904: 0xB0C7, + 21203 - 11904: 0xD46E, + 21205 - 11904: 0xB0CA, + 21206 - 11904: 0xD46D, + 21207 - 11904: 0xB1E5, + 21208 - 11904: 0xB0C9, + 21209 - 11904: 0xB0C8, + 21211 - 11904: 0xB3D4, + 21213 - 11904: 0xB3D3, + 21214 - 11904: 0xB3D2, + 21215 - 11904: 0xB6D2, + 21216 - 11904: 0xFABA, + 21217 - 11904: 0x92C7, + 21218 - 11904: 0xB6D5, + 21219 - 11904: 0xB6D6, + 21220 - 11904: 0xB6D4, + 21222 - 11904: 0xB6D3, + 21225 - 11904: 0xE143, + 21227 - 11904: 0xE144, + 21231 - 11904: 0xE4F5, + 21232 - 11904: 0xBC45, + 21233 - 11904: 0xE4F4, + 21235 - 11904: 0xBEB1, + 21236 - 11904: 0xECBF, + 21237 - 11904: 0xC079, + 21239 - 11904: 0xF1EE, + 21240 - 11904: 0xC455, + 21241 - 11904: 0xC6C6, + 21242 - 11904: 0xA463, + 21243 - 11904: 0xA4C3, + 21244 - 11904: 0xC956, + 21246 - 11904: 0xA4C4, + 21247 - 11904: 0xA4C5, + 21249 - 11904: 0x9A4C, + 21253 - 11904: 0xFABD, + 21254 - 11904: 0xA55E, + 21256 - 11904: 0xA649, + 21257 - 11904: 0xCA71, + 21258 - 11904: 0xCBD6, + 21259 - 11904: 0xCBD7, + 21261 - 11904: 0xAB6D, + 21262 - 11904: 0xD0EE, + 21263 - 11904: 0xB0CC, + 21264 - 11904: 0xB0CB, + 21265 - 11904: 0xD863, + 21266 - 11904: 0xD862, + 21269 - 11904: 0xA450, + 21270 - 11904: 0xA4C6, + 21271 - 11904: 0xA55F, + 21273 - 11904: 0xB0CD, + 21274 - 11904: 0xC943, + 21276 - 11904: 0xC96C, + 21277 - 11904: 0xA560, + 21279 - 11904: 0xC9C2, + 21280 - 11904: 0xA64B, + 21281 - 11904: 0xA64A, + 21282 - 11904: 0xC9C1, + 21283 - 11904: 0xA758, + 21284 - 11904: 0x8C68, + 21287 - 11904: 0x89E5, + 21290 - 11904: 0xADEA, + 21292 - 11904: 0x9F7D, + 21293 - 11904: 0xD46F, + 21295 - 11904: 0xB6D7, + 21296 - 11904: 0xE145, + 21297 - 11904: 0xB9BC, + 21298 - 11904: 0xA0A9, + 21299 - 11904: 0xFAC4, + 21300 - 11904: 0xE8FA, + 21303 - 11904: 0xF3FD, + 21304 - 11904: 0xC6C7, + 21305 - 11904: 0xA4C7, + 21307 - 11904: 0x8957, + 21308 - 11904: 0xCBD8, + 21309 - 11904: 0xCDF4, + 21310 - 11904: 0xB0D0, + 21311 - 11904: 0xB0CE, + 21312 - 11904: 0xB0CF, + 21313 - 11904: 0xA451, + 21314 - 11904: 0xFAAA, + 21315 - 11904: 0xA464, + 21316 - 11904: 0xFAC5, + 21317 - 11904: 0xA4CA, + 21319 - 11904: 0xA4C9, + 21320 - 11904: 0xA4C8, + 21321 - 11904: 0xA563, + 21322 - 11904: 0xA562, + 21324 - 11904: 0xC96D, + 21325 - 11904: 0xC9C3, + 21326 - 11904: 0x8958, + 21329 - 11904: 0xA8F5, + 21330 - 11904: 0xA8F2, + 21331 - 11904: 0xA8F4, + 21332 - 11904: 0xA8F3, + 21335 - 11904: 0xAB6E, + 21338 - 11904: 0xB3D5, + 21340 - 11904: 0xA452, + 21341 - 11904: 0x8BE3, + 21342 - 11904: 0xA4CB, + 21343 - 11904: 0x8B61, + 21344 - 11904: 0xA565, + 21345 - 11904: 0xA564, + 21347 - 11904: 0xCA72, + 21348 - 11904: 0x9AF1, + 21350 - 11904: 0xA8F6, + 21351 - 11904: 0x9EB7, + 21353 - 11904: 0xC6C8, + 21356 - 11904: 0xC957, + 21357 - 11904: 0xFAD1, + 21358 - 11904: 0xA567, + 21359 - 11904: 0xA566, + 21360 - 11904: 0xA64C, + 21361 - 11904: 0xA64D, + 21362 - 11904: 0xCA73, + 21363 - 11904: 0xA759, + 21364 - 11904: 0xFAD2, + 21365 - 11904: 0xA75A, + 21367 - 11904: 0xA8F7, + 21368 - 11904: 0xA8F8, + 21369 - 11904: 0xA8F9, + 21371 - 11904: 0xAB6F, + 21372 - 11904: 0xCDF5, + 21373 - 11904: 0x9EBA, + 21374 - 11904: 0xFAD4, + 21375 - 11904: 0xFAD5, + 21378 - 11904: 0xC944, + 21380 - 11904: 0xA4CC, + 21386 - 11904: 0xC9C4, + 21390 - 11904: 0xCA74, + 21391 - 11904: 0xCA75, + 21394 - 11904: 0xCBD9, + 21395 - 11904: 0xFAD9, + 21396 - 11904: 0xCBDA, + 21398 - 11904: 0xCDF7, + 21399 - 11904: 0xCDF6, + 21400 - 11904: 0xCDF9, + 21401 - 11904: 0xCDF8, + 21402 - 11904: 0xAB70, + 21404 - 11904: 0xD470, + 21405 - 11904: 0xADED, + 21406 - 11904: 0xD0EF, + 21407 - 11904: 0xADEC, + 21408 - 11904: 0xFADB, + 21410 - 11904: 0x9CE0, + 21412 - 11904: 0xD864, + 21413 - 11904: 0xB3D6, + 21414 - 11904: 0xFBF7, + 21415 - 11904: 0xD865, + 21416 - 11904: 0xFBFA, + 21417 - 11904: 0x89E7, + 21418 - 11904: 0xA07A, + 21419 - 11904: 0xFADC, + 21420 - 11904: 0xE146, + 21421 - 11904: 0xB9BD, + 21422 - 11904: 0xFADD, + 21424 - 11904: 0x89E9, + 21426 - 11904: 0xBC46, + 21428 - 11904: 0xF1EF, + 21430 - 11904: 0xC6C9, + 21433 - 11904: 0xC958, + 21435 - 11904: 0xA568, + 21441 - 11904: 0xFAE2, + 21442 - 11904: 0x89EB, + 21443 - 11904: 0xB0D1, + 21445 - 11904: 0xFAE3, + 21448 - 11904: 0xA453, + 21449 - 11904: 0xA465, + 21450 - 11904: 0xA4CE, + 21451 - 11904: 0xA4CD, + 21452 - 11904: 0x90C8, + 21453 - 11904: 0xA4CF, + 21456 - 11904: 0x92DA, + 21457 - 11904: 0x8959, + 21458 - 11904: 0x9CF5, + 21460 - 11904: 0xA8FB, + 21462 - 11904: 0xA8FA, + 21463 - 11904: 0xA8FC, + 21464 - 11904: 0x895A, + 21465 - 11904: 0xFAE7, + 21466 - 11904: 0x9FA2, + 21467 - 11904: 0xAB71, + 21471 - 11904: 0xADEE, + 21472 - 11904: 0xFAEA, + 21473 - 11904: 0xE8FB, + 21474 - 11904: 0xC24F, + 21475 - 11904: 0xA466, + 21476 - 11904: 0xA56A, + 21477 - 11904: 0xA579, + 21478 - 11904: 0xA574, + 21480 - 11904: 0xA56F, + 21481 - 11904: 0xA56E, + 21482 - 11904: 0xA575, + 21483 - 11904: 0xA573, + 21484 - 11904: 0xA56C, + 21485 - 11904: 0xA57A, + 21486 - 11904: 0xA56D, + 21487 - 11904: 0xA569, + 21488 - 11904: 0xA578, + 21489 - 11904: 0xA577, + 21490 - 11904: 0xA576, + 21491 - 11904: 0xA56B, + 21493 - 11904: 0xA572, + 21494 - 11904: 0xFAED, + 21495 - 11904: 0x8FAD, + 21496 - 11904: 0xA571, + 21499 - 11904: 0xA57B, + 21500 - 11904: 0xA570, + 21502 - 11904: 0xFB59, + 21505 - 11904: 0xA653, + 21507 - 11904: 0xA659, + 21508 - 11904: 0xA655, + 21510 - 11904: 0xA65B, + 21511 - 11904: 0xC9C5, + 21512 - 11904: 0xA658, + 21513 - 11904: 0xA64E, + 21514 - 11904: 0xA651, + 21515 - 11904: 0xA654, + 21516 - 11904: 0xA650, + 21517 - 11904: 0xA657, + 21518 - 11904: 0xA65A, + 21519 - 11904: 0xA64F, + 21520 - 11904: 0xA652, + 21521 - 11904: 0xA656, + 21522 - 11904: 0xA65C, + 21523 - 11904: 0xFAEF, + 21524 - 11904: 0x96EF, + 21526 - 11904: 0x9DEC, + 21528 - 11904: 0xCA7E, + 21529 - 11904: 0xCA7B, + 21530 - 11904: 0x9DCA, + 21531 - 11904: 0xA767, + 21532 - 11904: 0xCA7C, + 21533 - 11904: 0xA75B, + 21534 - 11904: 0xA75D, + 21535 - 11904: 0xA775, + 21536 - 11904: 0xA770, + 21537 - 11904: 0xFD6D, + 21539 - 11904: 0x89EC, + 21540 - 11904: 0xCAA5, + 21541 - 11904: 0xCA7D, + 21542 - 11904: 0xA75F, + 21543 - 11904: 0xA761, + 21544 - 11904: 0xCAA4, + 21545 - 11904: 0xA768, + 21546 - 11904: 0xCA78, + 21547 - 11904: 0xA774, + 21548 - 11904: 0xA776, + 21549 - 11904: 0xA75C, + 21550 - 11904: 0xA76D, + 21551 - 11904: 0xFB44, + 21552 - 11904: 0xCA76, + 21553 - 11904: 0xA773, + 21554 - 11904: 0x9DE2, + 21555 - 11904: 0xA764, + 21556 - 11904: 0x8C75, + 21557 - 11904: 0xA76E, + 21558 - 11904: 0xA76F, + 21559 - 11904: 0xCA77, + 21560 - 11904: 0xA76C, + 21561 - 11904: 0xA76A, + 21563 - 11904: 0xA76B, + 21564 - 11904: 0xA771, + 21565 - 11904: 0xCAA1, + 21566 - 11904: 0xA75E, + 21568 - 11904: 0xA772, + 21569 - 11904: 0xCAA3, + 21570 - 11904: 0xA766, + 21571 - 11904: 0xA763, + 21573 - 11904: 0xCA7A, + 21574 - 11904: 0xA762, + 21575 - 11904: 0xCAA6, + 21576 - 11904: 0xA765, + 21578 - 11904: 0xA769, + 21579 - 11904: 0x9EC0, + 21580 - 11904: 0x87C5, + 21581 - 11904: 0x9E56, + 21582 - 11904: 0xA760, + 21583 - 11904: 0xCAA2, + 21588 - 11904: 0xCA79, + 21600 - 11904: 0xCBEB, + 21601 - 11904: 0xCBEA, + 21602 - 11904: 0xA94F, + 21603 - 11904: 0xCBED, + 21604 - 11904: 0xCBEF, + 21605 - 11904: 0xCBE4, + 21606 - 11904: 0xCBE7, + 21607 - 11904: 0xCBEE, + 21608 - 11904: 0xA950, + 21609 - 11904: 0x9F79, + 21610 - 11904: 0x9AC7, + 21611 - 11904: 0xCBE1, + 21612 - 11904: 0xCBE5, + 21613 - 11904: 0xFAF4, + 21615 - 11904: 0xCBE9, + 21616 - 11904: 0xCE49, + 21617 - 11904: 0xA94B, + 21618 - 11904: 0xCE4D, + 21619 - 11904: 0xA8FD, + 21620 - 11904: 0xCBE6, + 21621 - 11904: 0xA8FE, + 21622 - 11904: 0xA94C, + 21623 - 11904: 0xA945, + 21624 - 11904: 0xA941, + 21626 - 11904: 0xCBE2, + 21627 - 11904: 0xA944, + 21628 - 11904: 0xA949, + 21629 - 11904: 0xA952, + 21630 - 11904: 0xCBE3, + 21631 - 11904: 0xCBDC, + 21632 - 11904: 0xA943, + 21633 - 11904: 0xCBDD, + 21634 - 11904: 0xCBDF, + 21636 - 11904: 0xA946, + 21637 - 11904: 0x98A1, + 21638 - 11904: 0xA948, + 21639 - 11904: 0xCBDB, + 21640 - 11904: 0xCBE0, + 21643 - 11904: 0xA951, + 21644 - 11904: 0xA94D, + 21645 - 11904: 0xCBE8, + 21646 - 11904: 0xA953, + 21647 - 11904: 0xFAF8, + 21648 - 11904: 0xA94A, + 21649 - 11904: 0xCBDE, + 21650 - 11904: 0xA947, + 21651 - 11904: 0x89F0, + 21652 - 11904: 0x9E47, + 21653 - 11904: 0xA942, + 21654 - 11904: 0xA940, + 21655 - 11904: 0x9DF7, + 21656 - 11904: 0xCBEC, + 21658 - 11904: 0xA94E, + 21660 - 11904: 0x9FD3, + 21662 - 11904: 0x9ACA, + 21664 - 11904: 0xCE48, + 21665 - 11904: 0xCDFB, + 21666 - 11904: 0xCE4B, + 21667 - 11904: 0x89F1, + 21668 - 11904: 0xFAF9, + 21669 - 11904: 0xCDFD, + 21670 - 11904: 0xAB78, + 21671 - 11904: 0xABA8, + 21672 - 11904: 0xAB74, + 21673 - 11904: 0xABA7, + 21674 - 11904: 0xAB7D, + 21675 - 11904: 0xABA4, + 21676 - 11904: 0xAB72, + 21677 - 11904: 0xCDFC, + 21678 - 11904: 0xCE43, + 21679 - 11904: 0xABA3, + 21680 - 11904: 0xCE4F, + 21681 - 11904: 0xABA5, + 21682 - 11904: 0x8E5A, + 21683 - 11904: 0xAB79, + 21684 - 11904: 0x89F2, + 21686 - 11904: 0xCE45, + 21687 - 11904: 0xCE42, + 21688 - 11904: 0xAB77, + 21689 - 11904: 0x89F3, + 21690 - 11904: 0xCDFA, + 21691 - 11904: 0xABA6, + 21692 - 11904: 0xCE4A, + 21693 - 11904: 0xAB7C, + 21694 - 11904: 0xCE4C, + 21695 - 11904: 0xABA9, + 21696 - 11904: 0xAB73, + 21697 - 11904: 0xAB7E, + 21698 - 11904: 0xAB7B, + 21699 - 11904: 0xCE40, + 21700 - 11904: 0xABA1, + 21701 - 11904: 0xCE46, + 21702 - 11904: 0xCE47, + 21703 - 11904: 0xAB7A, + 21704 - 11904: 0xABA2, + 21705 - 11904: 0xAB76, + 21707 - 11904: 0x925D, + 21708 - 11904: 0x8B51, + 21709 - 11904: 0x92E0, + 21710 - 11904: 0xAB75, + 21711 - 11904: 0xCDFE, + 21712 - 11904: 0x89F4, + 21718 - 11904: 0xCE44, + 21722 - 11904: 0x9FD4, + 21726 - 11904: 0xCE4E, + 21728 - 11904: 0xD144, + 21729 - 11904: 0xADFB, + 21730 - 11904: 0xD0F1, + 21731 - 11904: 0x8A79, + 21732 - 11904: 0xD0F6, + 21733 - 11904: 0xADF4, + 21734 - 11904: 0xAE40, + 21735 - 11904: 0xD0F4, + 21736 - 11904: 0xADEF, + 21737 - 11904: 0xADF9, + 21738 - 11904: 0xADFE, + 21739 - 11904: 0xD0FB, + 21741 - 11904: 0xADFA, + 21742 - 11904: 0xADFD, + 21743 - 11904: 0x89F5, + 21745 - 11904: 0xD0FE, + 21746 - 11904: 0xADF5, + 21747 - 11904: 0xD0F5, + 21751 - 11904: 0xD142, + 21752 - 11904: 0xD143, + 21754 - 11904: 0xADF7, + 21755 - 11904: 0xD141, + 21756 - 11904: 0xADF3, + 21757 - 11904: 0xAE43, + 21759 - 11904: 0xD0F8, + 21761 - 11904: 0xADF1, + 21762 - 11904: 0x97A7, + 21763 - 11904: 0xD146, + 21764 - 11904: 0xD0F9, + 21765 - 11904: 0xD0FD, + 21766 - 11904: 0xADF6, + 21767 - 11904: 0xAE42, + 21768 - 11904: 0xD0FA, + 21769 - 11904: 0xADFC, + 21770 - 11904: 0xD140, + 21771 - 11904: 0xD147, + 21772 - 11904: 0xD4A1, + 21773 - 11904: 0x93BA, + 21774 - 11904: 0xD145, + 21775 - 11904: 0xAE44, + 21776 - 11904: 0xADF0, + 21777 - 11904: 0xD0FC, + 21778 - 11904: 0xD0F3, + 21779 - 11904: 0x9E58, + 21780 - 11904: 0xADF8, + 21783 - 11904: 0xD0F2, + 21784 - 11904: 0x89F6, + 21786 - 11904: 0xD0F7, + 21790 - 11904: 0x9E57, + 21795 - 11904: 0x89F7, + 21797 - 11904: 0x8A41, + 21798 - 11904: 0xD0F0, + 21799 - 11904: 0xAE41, + 21800 - 11904: 0x89F8, + 21802 - 11904: 0xD477, + 21803 - 11904: 0xFAF1, + 21804 - 11904: 0xB0E4, + 21805 - 11904: 0xD4A7, + 21806 - 11904: 0xB0E2, + 21807 - 11904: 0xB0DF, + 21808 - 11904: 0xD47C, + 21809 - 11904: 0xB0DB, + 21810 - 11904: 0xD4A2, + 21811 - 11904: 0xB0E6, + 21812 - 11904: 0xD476, + 21813 - 11904: 0xD47B, + 21814 - 11904: 0xD47A, + 21815 - 11904: 0xADF2, + 21816 - 11904: 0xB0E1, + 21817 - 11904: 0xD4A5, + 21819 - 11904: 0xD4A8, + 21820 - 11904: 0xD473, + 21822 - 11904: 0xB3E8, + 21823 - 11904: 0x89FA, + 21824 - 11904: 0xD4A9, + 21825 - 11904: 0xB0E7, + 21827 - 11904: 0xB0D9, + 21828 - 11904: 0xB0D6, + 21829 - 11904: 0xD47E, + 21830 - 11904: 0xB0D3, + 21831 - 11904: 0xFB42, + 21832 - 11904: 0xD4A6, + 21833 - 11904: 0xFABF, + 21834 - 11904: 0xB0DA, + 21835 - 11904: 0xD4AA, + 21837 - 11904: 0xD474, + 21838 - 11904: 0xD4A4, + 21839 - 11904: 0xB0DD, + 21840 - 11904: 0xD475, + 21841 - 11904: 0xD478, + 21842 - 11904: 0xD47D, + 21843 - 11904: 0xFBA3, + 21845 - 11904: 0xB0DE, + 21846 - 11904: 0xB0DC, + 21847 - 11904: 0xB0E8, + 21852 - 11904: 0xB0E3, + 21853 - 11904: 0xFAF7, + 21854 - 11904: 0xB0D7, + 21855 - 11904: 0xB1D2, + 21857 - 11904: 0xB0D8, + 21858 - 11904: 0xD479, + 21859 - 11904: 0xB0E5, + 21860 - 11904: 0xB0E0, + 21861 - 11904: 0xD4A3, + 21862 - 11904: 0xB0D5, + 21865 - 11904: 0x9E4E, + 21866 - 11904: 0xB0D4, + 21867 - 11904: 0x94DC, + 21873 - 11904: 0x95DA, + 21874 - 11904: 0x9DF8, + 21875 - 11904: 0x9F6A, + 21877 - 11904: 0xD471, + 21878 - 11904: 0xD472, + 21879 - 11904: 0xD86A, + 21881 - 11904: 0x8AB7, + 21883 - 11904: 0xB3D7, + 21884 - 11904: 0xB3DA, + 21885 - 11904: 0xD875, + 21886 - 11904: 0xB3EE, + 21887 - 11904: 0xD878, + 21888 - 11904: 0xB3D8, + 21889 - 11904: 0xD871, + 21890 - 11904: 0xB3DE, + 21891 - 11904: 0xB3E4, + 21892 - 11904: 0xB5BD, + 21894 - 11904: 0xFB46, + 21895 - 11904: 0xB3E2, + 21896 - 11904: 0xD86E, + 21897 - 11904: 0xB3EF, + 21898 - 11904: 0xB3DB, + 21899 - 11904: 0xB3E3, + 21900 - 11904: 0xD876, + 21901 - 11904: 0xDCD7, + 21902 - 11904: 0xD87B, + 21903 - 11904: 0xD86F, + 21904 - 11904: 0x8A46, + 21905 - 11904: 0xD866, + 21906 - 11904: 0xD873, + 21907 - 11904: 0xD86D, + 21908 - 11904: 0xB3E1, + 21909 - 11904: 0xD879, + 21912 - 11904: 0xB3DD, + 21913 - 11904: 0xB3F1, + 21914 - 11904: 0xB3EA, + 21916 - 11904: 0xB3DF, + 21917 - 11904: 0xB3DC, + 21919 - 11904: 0xB3E7, + 21921 - 11904: 0xD87A, + 21922 - 11904: 0xD86C, + 21923 - 11904: 0xD872, + 21924 - 11904: 0xD874, + 21925 - 11904: 0xD868, + 21926 - 11904: 0xD877, + 21927 - 11904: 0xB3D9, + 21928 - 11904: 0xD867, + 21929 - 11904: 0xFB47, + 21930 - 11904: 0xB3E0, + 21931 - 11904: 0xB3F0, + 21932 - 11904: 0xB3EC, + 21933 - 11904: 0xD869, + 21934 - 11904: 0xB3E6, + 21936 - 11904: 0x9148, + 21937 - 11904: 0xB3ED, + 21938 - 11904: 0xB3E9, + 21939 - 11904: 0xB3E5, + 21940 - 11904: 0x92DE, + 21941 - 11904: 0xD870, + 21945 - 11904: 0x8B53, + 21946 - 11904: 0x9DF6, + 21947 - 11904: 0xB3EB, + 21948 - 11904: 0x9BDA, + 21951 - 11904: 0xDCD5, + 21952 - 11904: 0xDCD1, + 21953 - 11904: 0x9D7E, + 21954 - 11904: 0xDCE0, + 21955 - 11904: 0xDCCA, + 21956 - 11904: 0xDCD3, + 21957 - 11904: 0xB6E5, + 21958 - 11904: 0xB6E6, + 21959 - 11904: 0xB6DE, + 21960 - 11904: 0xDCDC, + 21961 - 11904: 0xB6E8, + 21962 - 11904: 0xDCCF, + 21963 - 11904: 0xDCCE, + 21964 - 11904: 0xDCCC, + 21965 - 11904: 0xDCDE, + 21966 - 11904: 0xB6DC, + 21967 - 11904: 0xDCD8, + 21968 - 11904: 0xDCCD, + 21969 - 11904: 0xB6DF, + 21970 - 11904: 0xDCD6, + 21971 - 11904: 0xB6DA, + 21972 - 11904: 0xDCD2, + 21973 - 11904: 0xDCD9, + 21974 - 11904: 0xDCDB, + 21975 - 11904: 0x89FD, + 21976 - 11904: 0x99E4, + 21977 - 11904: 0xDCDF, + 21978 - 11904: 0xB6E3, + 21979 - 11904: 0xDCCB, + 21980 - 11904: 0xB6DD, + 21981 - 11904: 0xDCD0, + 21982 - 11904: 0x9E43, + 21983 - 11904: 0xB6D8, + 21985 - 11904: 0xB6E4, + 21986 - 11904: 0xDCDA, + 21987 - 11904: 0xB6E0, + 21988 - 11904: 0xB6E1, + 21989 - 11904: 0xB6E7, + 21990 - 11904: 0xB6DB, + 21991 - 11904: 0xA25F, + 21992 - 11904: 0xB6D9, + 21993 - 11904: 0xDCD4, + 21994 - 11904: 0x9DE9, + 21996 - 11904: 0x8F52, + 21999 - 11904: 0xB6E2, + 22000 - 11904: 0x9DF5, + 22001 - 11904: 0x9DF0, + 22002 - 11904: 0xDCDD, + 22005 - 11904: 0x99E7, + 22006 - 11904: 0xB9CD, + 22007 - 11904: 0xB9C8, + 22009 - 11904: 0xE155, + 22010 - 11904: 0xE151, + 22011 - 11904: 0x8BBD, + 22012 - 11904: 0xE14B, + 22013 - 11904: 0xB9C2, + 22014 - 11904: 0xB9BE, + 22015 - 11904: 0xE154, + 22016 - 11904: 0xB9BF, + 22017 - 11904: 0xE14E, + 22018 - 11904: 0xE150, + 22020 - 11904: 0xE153, + 22021 - 11904: 0xFB48, + 22022 - 11904: 0xB9C4, + 22024 - 11904: 0xB9CB, + 22025 - 11904: 0xB9C5, + 22028 - 11904: 0xE149, + 22029 - 11904: 0xB9C6, + 22030 - 11904: 0xB9C7, + 22031 - 11904: 0xE14C, + 22032 - 11904: 0xB9CC, + 22033 - 11904: 0x9FB7, + 22034 - 11904: 0xE14A, + 22035 - 11904: 0xE14F, + 22036 - 11904: 0xB9C3, + 22037 - 11904: 0xE148, + 22038 - 11904: 0xB9C9, + 22039 - 11904: 0xB9C1, + 22043 - 11904: 0xB9C0, + 22044 - 11904: 0xE14D, + 22045 - 11904: 0xE152, + 22046 - 11904: 0x9DD0, + 22047 - 11904: 0xB9CA, + 22048 - 11904: 0x9FEB, + 22049 - 11904: 0x8DA9, + 22050 - 11904: 0x9DCF, + 22051 - 11904: 0x98E1, + 22053 - 11904: 0x9DE5, + 22055 - 11904: 0xE147, + 22057 - 11904: 0xBC4D, + 22058 - 11904: 0xE547, + 22060 - 11904: 0xE544, + 22061 - 11904: 0x9DC8, + 22062 - 11904: 0xBC47, + 22063 - 11904: 0xBC53, + 22064 - 11904: 0xBC54, + 22066 - 11904: 0xBC4A, + 22067 - 11904: 0xE542, + 22068 - 11904: 0xBC4C, + 22069 - 11904: 0xE4F9, + 22070 - 11904: 0xBC52, + 22071 - 11904: 0xFB4F, + 22072 - 11904: 0xE546, + 22073 - 11904: 0xBC49, + 22074 - 11904: 0xE548, + 22075 - 11904: 0xBC48, + 22077 - 11904: 0xE543, + 22078 - 11904: 0xE545, + 22079 - 11904: 0xBC4B, + 22080 - 11904: 0xE541, + 22081 - 11904: 0xE4FA, + 22082 - 11904: 0xE4F7, + 22083 - 11904: 0x9DEB, + 22085 - 11904: 0xD86B, + 22086 - 11904: 0xE4FD, + 22088 - 11904: 0xE4F6, + 22089 - 11904: 0xE4FC, + 22090 - 11904: 0xE4FB, + 22092 - 11904: 0xE4F8, + 22093 - 11904: 0xFB54, + 22094 - 11904: 0xBC4F, + 22095 - 11904: 0xFB55, + 22096 - 11904: 0x9AA2, + 22098 - 11904: 0x8AD6, + 22099 - 11904: 0xBC4E, + 22100 - 11904: 0x9A5F, + 22103 - 11904: 0xBC50, + 22104 - 11904: 0xE4FE, + 22105 - 11904: 0xBEB2, + 22106 - 11904: 0xE540, + 22109 - 11904: 0x9EF5, + 22110 - 11904: 0xE945, + 22112 - 11904: 0xE8FD, + 22113 - 11904: 0x8FB7, + 22114 - 11904: 0xBEBE, + 22115 - 11904: 0xE942, + 22116 - 11904: 0xBEB6, + 22117 - 11904: 0xBEBA, + 22118 - 11904: 0xE941, + 22120 - 11904: 0xBEB9, + 22121 - 11904: 0xBEB5, + 22122 - 11904: 0xBEB8, + 22123 - 11904: 0xBEB3, + 22124 - 11904: 0xBEBD, + 22125 - 11904: 0xE943, + 22126 - 11904: 0xE8FE, + 22127 - 11904: 0xBEBC, + 22128 - 11904: 0xE8FC, + 22129 - 11904: 0xBEBB, + 22130 - 11904: 0xE944, + 22131 - 11904: 0xE940, + 22132 - 11904: 0xBC51, + 22134 - 11904: 0xBEBF, + 22135 - 11904: 0xE946, + 22136 - 11904: 0xBEB7, + 22137 - 11904: 0xBEB4, + 22138 - 11904: 0x9AD2, + 22139 - 11904: 0x9E6A, + 22140 - 11904: 0x9EE8, + 22142 - 11904: 0xECC6, + 22143 - 11904: 0xECC8, + 22144 - 11904: 0xC07B, + 22145 - 11904: 0xECC9, + 22146 - 11904: 0xECC7, + 22147 - 11904: 0xECC5, + 22148 - 11904: 0xECC4, + 22149 - 11904: 0xC07D, + 22150 - 11904: 0xECC3, + 22151 - 11904: 0xC07E, + 22153 - 11904: 0x8BBF, + 22154 - 11904: 0x91C2, + 22155 - 11904: 0x9D62, + 22156 - 11904: 0xECC1, + 22157 - 11904: 0xECC2, + 22158 - 11904: 0xC07A, + 22159 - 11904: 0xC0A1, + 22160 - 11904: 0xC07C, + 22162 - 11904: 0x9260, + 22163 - 11904: 0xECC0, + 22165 - 11904: 0xC250, + 22167 - 11904: 0xEFBC, + 22168 - 11904: 0xEFBA, + 22169 - 11904: 0xEFBF, + 22170 - 11904: 0xEFBD, + 22172 - 11904: 0xEFBB, + 22173 - 11904: 0xEFBE, + 22174 - 11904: 0x925E, + 22175 - 11904: 0x91C1, + 22177 - 11904: 0x8AC5, + 22180 - 11904: 0x97A3, + 22181 - 11904: 0xC360, + 22182 - 11904: 0xF1F2, + 22183 - 11904: 0xF1F3, + 22184 - 11904: 0xC456, + 22186 - 11904: 0xF1F4, + 22187 - 11904: 0xF1F0, + 22188 - 11904: 0xF1F5, + 22189 - 11904: 0xF1F1, + 22190 - 11904: 0xC251, + 22191 - 11904: 0x8B6C, + 22193 - 11904: 0x8D7E, + 22194 - 11904: 0xF3FE, + 22195 - 11904: 0xF441, + 22196 - 11904: 0xC459, + 22197 - 11904: 0xF440, + 22198 - 11904: 0xC458, + 22199 - 11904: 0xC457, + 22201 - 11904: 0x9C54, + 22204 - 11904: 0xC45A, + 22205 - 11904: 0xF5C5, + 22206 - 11904: 0xF5C6, + 22207 - 11904: 0x9DBD, + 22208 - 11904: 0xC4DA, + 22209 - 11904: 0xC4D9, + 22210 - 11904: 0xC4DB, + 22211 - 11904: 0xF5C4, + 22213 - 11904: 0xF6D8, + 22214 - 11904: 0xF6D7, + 22216 - 11904: 0xC56D, + 22217 - 11904: 0xC56F, + 22218 - 11904: 0xC56E, + 22219 - 11904: 0xF6D9, + 22220 - 11904: 0xC5C8, + 22221 - 11904: 0xF8A6, + 22225 - 11904: 0xC5F1, + 22227 - 11904: 0xF8A5, + 22228 - 11904: 0xF8EE, + 22230 - 11904: 0x9CC5, + 22231 - 11904: 0xC949, + 22234 - 11904: 0xA57D, + 22235 - 11904: 0xA57C, + 22237 - 11904: 0xA65F, + 22238 - 11904: 0xA65E, + 22239 - 11904: 0xC9C7, + 22240 - 11904: 0xA65D, + 22241 - 11904: 0xC9C6, + 22242 - 11904: 0x895B, + 22244 - 11904: 0xA779, + 22245 - 11904: 0xCAA9, + 22247 - 11904: 0xCAA8, + 22250 - 11904: 0xA777, + 22251 - 11904: 0xA77A, + 22253 - 11904: 0xFB5C, + 22254 - 11904: 0xCAA7, + 22255 - 11904: 0xFB5B, + 22256 - 11904: 0xA778, + 22257 - 11904: 0xFB57, + 22263 - 11904: 0xCBF0, + 22265 - 11904: 0xCBF1, + 22266 - 11904: 0xA954, + 22267 - 11904: 0x8765, + 22269 - 11904: 0x98C7, + 22271 - 11904: 0xABAA, + 22272 - 11904: 0xFB5A, + 22273 - 11904: 0xD148, + 22274 - 11904: 0xD149, + 22275 - 11904: 0xAE45, + 22276 - 11904: 0xAE46, + 22279 - 11904: 0xD4AC, + 22280 - 11904: 0xB0E9, + 22281 - 11904: 0xB0EB, + 22282 - 11904: 0xD4AB, + 22283 - 11904: 0xB0EA, + 22284 - 11904: 0xD87C, + 22285 - 11904: 0xB3F2, + 22290 - 11904: 0xB6E9, + 22291 - 11904: 0xB6EA, + 22292 - 11904: 0xDCE1, + 22293 - 11904: 0x9CEE, + 22294 - 11904: 0xB9CF, + 22296 - 11904: 0xB9CE, + 22298 - 11904: 0xE549, + 22299 - 11904: 0xE948, + 22300 - 11904: 0xE947, + 22301 - 11904: 0x92E2, + 22302 - 11904: 0xF96B, + 22303 - 11904: 0xA467, + 22304 - 11904: 0xC959, + 22306 - 11904: 0xC96E, + 22307 - 11904: 0xC96F, + 22312 - 11904: 0xA662, + 22313 - 11904: 0xA666, + 22314 - 11904: 0xC9C9, + 22316 - 11904: 0xA664, + 22317 - 11904: 0xA663, + 22318 - 11904: 0xC9C8, + 22319 - 11904: 0xA665, + 22320 - 11904: 0xA661, + 22322 - 11904: 0x94A7, + 22323 - 11904: 0xA660, + 22324 - 11904: 0xC9CA, + 22331 - 11904: 0xA7A6, + 22333 - 11904: 0x8CCC, + 22334 - 11904: 0xA7A3, + 22335 - 11904: 0x9BD4, + 22336 - 11904: 0xA77D, + 22337 - 11904: 0xCAAA, + 22338 - 11904: 0xFB64, + 22339 - 11904: 0xFB76, + 22341 - 11904: 0xCAAB, + 22342 - 11904: 0xFB60, + 22343 - 11904: 0xA7A1, + 22345 - 11904: 0xCAAD, + 22346 - 11904: 0xA77B, + 22347 - 11904: 0xCAAE, + 22348 - 11904: 0xCAAC, + 22349 - 11904: 0xA77E, + 22350 - 11904: 0xA7A2, + 22351 - 11904: 0xA7A5, + 22352 - 11904: 0xA7A4, + 22353 - 11904: 0xA77C, + 22354 - 11904: 0xCAAF, + 22356 - 11904: 0x99E5, + 22359 - 11904: 0x9AC2, + 22363 - 11904: 0x91FB, + 22367 - 11904: 0xA073, + 22369 - 11904: 0xA959, + 22370 - 11904: 0xCBFE, + 22372 - 11904: 0xA95B, + 22374 - 11904: 0xA95A, + 22375 - 11904: 0x9F72, + 22376 - 11904: 0xCC40, + 22377 - 11904: 0xA958, + 22378 - 11904: 0xA957, + 22379 - 11904: 0xCBF5, + 22381 - 11904: 0xCBF4, + 22383 - 11904: 0xCBF2, + 22384 - 11904: 0xCBF7, + 22385 - 11904: 0xCBF6, + 22386 - 11904: 0xCBF3, + 22387 - 11904: 0xCBFC, + 22388 - 11904: 0xCBFD, + 22389 - 11904: 0xCBFA, + 22390 - 11904: 0xCBF8, + 22391 - 11904: 0xA956, + 22394 - 11904: 0x9FCC, + 22395 - 11904: 0xCBFB, + 22396 - 11904: 0xA95C, + 22397 - 11904: 0xCC41, + 22398 - 11904: 0x98A5, + 22399 - 11904: 0x92E8, + 22400 - 11904: 0xCBF9, + 22402 - 11904: 0xABAB, + 22403 - 11904: 0xA955, + 22408 - 11904: 0x9BBC, + 22410 - 11904: 0x96F3, + 22411 - 11904: 0xABAC, + 22412 - 11904: 0xCE54, + 22413 - 11904: 0x92E7, + 22415 - 11904: 0xCE5A, + 22416 - 11904: 0xFC67, + 22419 - 11904: 0xABB2, + 22420 - 11904: 0xCE58, + 22421 - 11904: 0xCE5E, + 22423 - 11904: 0xCE55, + 22424 - 11904: 0xCE59, + 22425 - 11904: 0xCE5B, + 22426 - 11904: 0xCE5D, + 22427 - 11904: 0xCE57, + 22428 - 11904: 0x8B7D, + 22429 - 11904: 0xCE56, + 22430 - 11904: 0xCE51, + 22431 - 11904: 0xCE52, + 22432 - 11904: 0xABAD, + 22433 - 11904: 0x9BF4, + 22434 - 11904: 0xABAF, + 22435 - 11904: 0xABAE, + 22436 - 11904: 0xCE53, + 22437 - 11904: 0xCE5C, + 22439 - 11904: 0x9EF7, + 22442 - 11904: 0x9EC1, + 22446 - 11904: 0xABB1, + 22451 - 11904: 0x87C3, + 22452 - 11904: 0x996F, + 22453 - 11904: 0xCE50, + 22454 - 11904: 0xD153, + 22456 - 11904: 0xD152, + 22457 - 11904: 0xD157, + 22458 - 11904: 0xD14E, + 22459 - 11904: 0x96F1, + 22460 - 11904: 0xD151, + 22461 - 11904: 0xD150, + 22462 - 11904: 0x8E41, + 22463 - 11904: 0xD154, + 22465 - 11904: 0xD158, + 22466 - 11904: 0xAE47, + 22467 - 11904: 0xAE4A, + 22468 - 11904: 0x954A, + 22470 - 11904: 0xD14F, + 22471 - 11904: 0xD155, + 22472 - 11904: 0x97E6, + 22475 - 11904: 0xAE49, + 22476 - 11904: 0xD14A, + 22478 - 11904: 0xABB0, + 22479 - 11904: 0xD4BA, + 22480 - 11904: 0xD156, + 22482 - 11904: 0xD14D, + 22484 - 11904: 0xAE48, + 22485 - 11904: 0xD14C, + 22487 - 11904: 0x96F5, + 22492 - 11904: 0xD4B1, + 22493 - 11904: 0x92E6, + 22494 - 11904: 0x9F42, + 22495 - 11904: 0xB0EC, + 22496 - 11904: 0xB0F0, + 22497 - 11904: 0xD4C1, + 22498 - 11904: 0xD4AF, + 22499 - 11904: 0xD4BD, + 22500 - 11904: 0xB0F1, + 22501 - 11904: 0xD4BF, + 22502 - 11904: 0xFB67, + 22503 - 11904: 0xD4C5, + 22505 - 11904: 0xD4C9, + 22508 - 11904: 0xD4C0, + 22509 - 11904: 0xD4B4, + 22510 - 11904: 0xD4BC, + 22511 - 11904: 0x99A9, + 22512 - 11904: 0xD4CA, + 22513 - 11904: 0xD4C8, + 22514 - 11904: 0xD4BE, + 22515 - 11904: 0xD4B9, + 22516 - 11904: 0xD4B2, + 22517 - 11904: 0xD8A6, + 22518 - 11904: 0xD4B0, + 22519 - 11904: 0xB0F5, + 22520 - 11904: 0xD4B7, + 22521 - 11904: 0xB0F6, + 22522 - 11904: 0xB0F2, + 22523 - 11904: 0xD4AD, + 22524 - 11904: 0xD4C3, + 22525 - 11904: 0xD4B5, + 22526 - 11904: 0xFAE6, + 22528 - 11904: 0xD4B3, + 22529 - 11904: 0xD4C6, + 22530 - 11904: 0xB0F3, + 22531 - 11904: 0xFB69, + 22532 - 11904: 0xD4CC, + 22533 - 11904: 0xB0ED, + 22534 - 11904: 0xB0EF, + 22535 - 11904: 0xD4BB, + 22536 - 11904: 0xD4B6, + 22537 - 11904: 0xAE4B, + 22538 - 11904: 0xB0EE, + 22539 - 11904: 0xD4B8, + 22540 - 11904: 0xD4C7, + 22541 - 11904: 0xD4CB, + 22542 - 11904: 0xD4C2, + 22544 - 11904: 0xD4C4, + 22546 - 11904: 0x97E5, + 22548 - 11904: 0xD4AE, + 22552 - 11904: 0x87C8, + 22553 - 11904: 0xD8A1, + 22555 - 11904: 0xD8AA, + 22556 - 11904: 0xD8A9, + 22557 - 11904: 0xB3FA, + 22558 - 11904: 0xD8A2, + 22560 - 11904: 0xB3FB, + 22561 - 11904: 0xB3F9, + 22562 - 11904: 0x967D, + 22563 - 11904: 0xD8A4, + 22564 - 11904: 0xB3F6, + 22565 - 11904: 0xD8A8, + 22566 - 11904: 0xFB6C, + 22567 - 11904: 0xD8A3, + 22568 - 11904: 0xD8A5, + 22569 - 11904: 0xD87D, + 22570 - 11904: 0xB3F4, + 22572 - 11904: 0xD8B2, + 22573 - 11904: 0xD8B1, + 22574 - 11904: 0xD8AE, + 22575 - 11904: 0xB3F3, + 22576 - 11904: 0xB3F7, + 22577 - 11904: 0xB3F8, + 22578 - 11904: 0xD14B, + 22579 - 11904: 0xD8AB, + 22580 - 11904: 0xB3F5, + 22581 - 11904: 0xB0F4, + 22582 - 11904: 0xD8AD, + 22583 - 11904: 0xD87E, + 22584 - 11904: 0xD8B0, + 22585 - 11904: 0xD8AF, + 22586 - 11904: 0x99A2, + 22587 - 11904: 0xD8B3, + 22589 - 11904: 0xDCEF, + 22591 - 11904: 0xD8AC, + 22592 - 11904: 0x9ABB, + 22596 - 11904: 0x9A65, + 22599 - 11904: 0x944E, + 22600 - 11904: 0xD8A7, + 22601 - 11904: 0xDCE7, + 22602 - 11904: 0xB6F4, + 22603 - 11904: 0xB6F7, + 22604 - 11904: 0xB6F2, + 22605 - 11904: 0xDCE6, + 22606 - 11904: 0xDCEA, + 22607 - 11904: 0xDCE5, + 22609 - 11904: 0xB6EC, + 22610 - 11904: 0xB6F6, + 22611 - 11904: 0xDCE2, + 22612 - 11904: 0xB6F0, + 22613 - 11904: 0xDCE9, + 22615 - 11904: 0xB6EE, + 22616 - 11904: 0xB6ED, + 22617 - 11904: 0xDCEC, + 22618 - 11904: 0xB6EF, + 22619 - 11904: 0xDCEE, + 22620 - 11904: 0xFB6E, + 22621 - 11904: 0xDCEB, + 22622 - 11904: 0xB6EB, + 22623 - 11904: 0x99DF, + 22626 - 11904: 0xB6F5, + 22627 - 11904: 0xDCF0, + 22628 - 11904: 0xDCE4, + 22629 - 11904: 0xDCED, + 22632 - 11904: 0xDCE3, + 22633 - 11904: 0x98E3, + 22635 - 11904: 0xB6F1, + 22636 - 11904: 0x9254, + 22637 - 11904: 0xB6F3, + 22639 - 11904: 0xDCE8, + 22641 - 11904: 0xDCF1, + 22642 - 11904: 0x967B, + 22643 - 11904: 0x8AAF, + 22644 - 11904: 0xE15D, + 22645 - 11904: 0xB9D0, + 22646 - 11904: 0xE163, + 22649 - 11904: 0xB9D5, + 22650 - 11904: 0xE15F, + 22651 - 11904: 0xE166, + 22652 - 11904: 0xE157, + 22653 - 11904: 0xB9D7, + 22654 - 11904: 0xB9D1, + 22655 - 11904: 0xE15C, + 22656 - 11904: 0xBC55, + 22657 - 11904: 0xE15B, + 22658 - 11904: 0xE164, + 22659 - 11904: 0xB9D2, + 22661 - 11904: 0xB9D6, + 22662 - 11904: 0xE15A, + 22663 - 11904: 0xE160, + 22664 - 11904: 0xE165, + 22665 - 11904: 0xE156, + 22666 - 11904: 0xB9D4, + 22667 - 11904: 0xE15E, + 22670 - 11904: 0xE162, + 22671 - 11904: 0xE168, + 22672 - 11904: 0xE158, + 22673 - 11904: 0xE161, + 22674 - 11904: 0x8C77, + 22675 - 11904: 0xB9D3, + 22676 - 11904: 0xE167, + 22678 - 11904: 0x87B0, + 22680 - 11904: 0xE159, + 22681 - 11904: 0x8BAF, + 22682 - 11904: 0x9EBD, + 22684 - 11904: 0xBC59, + 22685 - 11904: 0xE54B, + 22686 - 11904: 0xBC57, + 22687 - 11904: 0xBC56, + 22688 - 11904: 0xE54D, + 22689 - 11904: 0xE552, + 22691 - 11904: 0xE54E, + 22693 - 11904: 0xE551, + 22694 - 11904: 0xBC5C, + 22695 - 11904: 0x9EE6, + 22696 - 11904: 0xBEA5, + 22697 - 11904: 0xBC5B, + 22698 - 11904: 0xFB6F, + 22699 - 11904: 0xE54A, + 22700 - 11904: 0xE550, + 22702 - 11904: 0xBC5A, + 22703 - 11904: 0xE54F, + 22704 - 11904: 0x8EE1, + 22705 - 11904: 0xE54C, + 22707 - 11904: 0xBC58, + 22709 - 11904: 0x9B7D, + 22710 - 11904: 0x9C7E, + 22714 - 11904: 0xE94D, + 22715 - 11904: 0xF9D9, + 22716 - 11904: 0xE94F, + 22717 - 11904: 0xE94A, + 22718 - 11904: 0xBEC1, + 22719 - 11904: 0xE94C, + 22721 - 11904: 0xBEC0, + 22722 - 11904: 0xE94E, + 22725 - 11904: 0xBEC3, + 22726 - 11904: 0xE950, + 22727 - 11904: 0xBEC2, + 22728 - 11904: 0xE949, + 22729 - 11904: 0xE94B, + 22731 - 11904: 0x92EA, + 22734 - 11904: 0xC0A5, + 22735 - 11904: 0xECCC, + 22736 - 11904: 0x8C78, + 22737 - 11904: 0xC0A4, + 22738 - 11904: 0xECCD, + 22739 - 11904: 0xC0A3, + 22740 - 11904: 0xECCB, + 22741 - 11904: 0xC0A2, + 22742 - 11904: 0xECCA, + 22744 - 11904: 0xC253, + 22745 - 11904: 0xC252, + 22746 - 11904: 0xF1F6, + 22747 - 11904: 0xF1F8, + 22748 - 11904: 0xFB72, + 22749 - 11904: 0xF1F7, + 22750 - 11904: 0xC361, + 22751 - 11904: 0xC362, + 22752 - 11904: 0xFB71, + 22754 - 11904: 0xC363, + 22755 - 11904: 0xF442, + 22756 - 11904: 0xC45B, + 22759 - 11904: 0xF7D3, + 22760 - 11904: 0xF7D2, + 22761 - 11904: 0xC5F2, + 22763 - 11904: 0xA468, + 22764 - 11904: 0xA4D0, + 22767 - 11904: 0xA7A7, + 22768 - 11904: 0x895C, + 22770 - 11904: 0x98F0, + 22771 - 11904: 0x96F2, + 22772 - 11904: 0xCE5F, + 22777 - 11904: 0xB3FC, + 22778 - 11904: 0xB3FD, + 22779 - 11904: 0xFB74, + 22780 - 11904: 0xDCF2, + 22781 - 11904: 0xB9D8, + 22782 - 11904: 0xE169, + 22783 - 11904: 0xE553, + 22786 - 11904: 0x8BC1, + 22787 - 11904: 0xC95A, + 22788 - 11904: 0x895D, + 22789 - 11904: 0x89DE, + 22790 - 11904: 0xCAB0, + 22791 - 11904: 0x895E, + 22794 - 11904: 0xC6CA, + 22796 - 11904: 0xCC42, + 22797 - 11904: 0xCE60, + 22798 - 11904: 0xD159, + 22799 - 11904: 0xAE4C, + 22801 - 11904: 0xFE42, + 22802 - 11904: 0xF1F9, + 22804 - 11904: 0xC4DC, + 22805 - 11904: 0xA469, + 22806 - 11904: 0xA57E, + 22807 - 11904: 0xC970, + 22809 - 11904: 0xA667, + 22810 - 11904: 0xA668, + 22812 - 11904: 0xA95D, + 22813 - 11904: 0x8768, + 22815 - 11904: 0xFB7B, + 22816 - 11904: 0xB0F7, + 22818 - 11904: 0xB9DA, + 22820 - 11904: 0xB9DB, + 22821 - 11904: 0xB9D9, + 22823 - 11904: 0xA46A, + 22825 - 11904: 0xA4D1, + 22826 - 11904: 0xA4D3, + 22827 - 11904: 0xA4D2, + 22828 - 11904: 0xC95B, + 22829 - 11904: 0xA4D4, + 22830 - 11904: 0xA5A1, + 22831 - 11904: 0xC971, + 22833 - 11904: 0xA5A2, + 22834 - 11904: 0x895F, + 22836 - 11904: 0x8960, + 22839 - 11904: 0xA669, + 22840 - 11904: 0xA66A, + 22844 - 11904: 0xC9CB, + 22846 - 11904: 0xA7A8, + 22848 - 11904: 0xCAB1, + 22852 - 11904: 0xA961, + 22853 - 11904: 0xCC43, + 22855 - 11904: 0xA95F, + 22856 - 11904: 0xA960, + 22857 - 11904: 0xA95E, + 22858 - 11904: 0xD15A, + 22862 - 11904: 0xABB6, + 22863 - 11904: 0xABB5, + 22864 - 11904: 0xABB7, + 22865 - 11904: 0xABB4, + 22867 - 11904: 0xCE61, + 22868 - 11904: 0xA962, + 22869 - 11904: 0xABB3, + 22871 - 11904: 0xAE4D, + 22872 - 11904: 0xAE4E, + 22874 - 11904: 0xAE4F, + 22876 - 11904: 0xD4CD, + 22880 - 11904: 0xB3FE, + 22881 - 11904: 0xD8B4, + 22882 - 11904: 0xB0F8, + 22885 - 11904: 0x9BCD, + 22887 - 11904: 0xB6F8, + 22889 - 11904: 0xB9DD, + 22890 - 11904: 0xB9DC, + 22891 - 11904: 0xE16A, + 22893 - 11904: 0xBC5D, + 22894 - 11904: 0xBEC4, + 22896 - 11904: 0xEFC0, + 22897 - 11904: 0xF6DA, + 22898 - 11904: 0xF7D4, + 22899 - 11904: 0xA46B, + 22900 - 11904: 0xA5A3, + 22901 - 11904: 0x9DD3, + 22902 - 11904: 0xA5A4, + 22903 - 11904: 0xC9D1, + 22904 - 11904: 0xA66C, + 22905 - 11904: 0xA66F, + 22907 - 11904: 0xC9CF, + 22908 - 11904: 0xC9CD, + 22909 - 11904: 0xA66E, + 22910 - 11904: 0xC9D0, + 22911 - 11904: 0xC9D2, + 22912 - 11904: 0xC9CC, + 22913 - 11904: 0xA671, + 22914 - 11904: 0xA670, + 22915 - 11904: 0xA66D, + 22916 - 11904: 0xA66B, + 22917 - 11904: 0xC9CE, + 22921 - 11904: 0x984C, + 22922 - 11904: 0xA7B3, + 22925 - 11904: 0xA7B0, + 22926 - 11904: 0xCAB6, + 22927 - 11904: 0xCAB9, + 22928 - 11904: 0xCAB8, + 22930 - 11904: 0xA7AA, + 22931 - 11904: 0xA7B2, + 22932 - 11904: 0x9752, + 22934 - 11904: 0xA7AF, + 22935 - 11904: 0xCAB5, + 22936 - 11904: 0xCAB3, + 22937 - 11904: 0xA7AE, + 22938 - 11904: 0x95C3, + 22941 - 11904: 0xA7A9, + 22942 - 11904: 0xA7AC, + 22943 - 11904: 0x9BB6, + 22944 - 11904: 0xCAB4, + 22945 - 11904: 0xCABB, + 22946 - 11904: 0xCAB7, + 22947 - 11904: 0xA7AD, + 22948 - 11904: 0xA7B1, + 22949 - 11904: 0xA7B4, + 22950 - 11904: 0xCAB2, + 22951 - 11904: 0xCABA, + 22952 - 11904: 0xA7AB, + 22956 - 11904: 0x9AB9, + 22958 - 11904: 0xA967, + 22959 - 11904: 0xA96F, + 22960 - 11904: 0x97B3, + 22961 - 11904: 0xCC4F, + 22962 - 11904: 0xCC48, + 22963 - 11904: 0xA970, + 22964 - 11904: 0xCC53, + 22965 - 11904: 0xCC44, + 22966 - 11904: 0xCC4B, + 22967 - 11904: 0x9F74, + 22968 - 11904: 0x92F1, + 22969 - 11904: 0xA966, + 22970 - 11904: 0xCC45, + 22971 - 11904: 0xA964, + 22972 - 11904: 0xCC4C, + 22973 - 11904: 0xCC50, + 22974 - 11904: 0xA963, + 22975 - 11904: 0x8CFA, + 22976 - 11904: 0xCC51, + 22977 - 11904: 0xCC4A, + 22979 - 11904: 0xCC4D, + 22980 - 11904: 0x97DF, + 22981 - 11904: 0xA972, + 22982 - 11904: 0xA969, + 22983 - 11904: 0xCC54, + 22984 - 11904: 0xCC52, + 22985 - 11904: 0xFBA6, + 22986 - 11904: 0xA96E, + 22987 - 11904: 0xA96C, + 22988 - 11904: 0xCC49, + 22989 - 11904: 0xA96B, + 22990 - 11904: 0xCC47, + 22991 - 11904: 0xCC46, + 22992 - 11904: 0xA96A, + 22993 - 11904: 0xA968, + 22994 - 11904: 0xA971, + 22995 - 11904: 0xA96D, + 22996 - 11904: 0xA965, + 22998 - 11904: 0xCC4E, + 23000 - 11904: 0xABB9, + 23001 - 11904: 0xFBAB, + 23002 - 11904: 0xABC0, + 23003 - 11904: 0xCE6F, + 23004 - 11904: 0xABB8, + 23005 - 11904: 0xCE67, + 23006 - 11904: 0xCE63, + 23008 - 11904: 0xCE73, + 23009 - 11904: 0xCE62, + 23011 - 11904: 0xABBB, + 23012 - 11904: 0xCE6C, + 23013 - 11904: 0xABBE, + 23014 - 11904: 0xABC1, + 23016 - 11904: 0xABBC, + 23017 - 11904: 0xCE70, + 23018 - 11904: 0xABBF, + 23019 - 11904: 0x9877, + 23020 - 11904: 0xAE56, + 23021 - 11904: 0xCE76, + 23022 - 11904: 0xCE64, + 23023 - 11904: 0x9854, + 23024 - 11904: 0x95C5, + 23025 - 11904: 0xCE66, + 23026 - 11904: 0xCE6D, + 23027 - 11904: 0xCE71, + 23028 - 11904: 0xCE75, + 23029 - 11904: 0xCE72, + 23030 - 11904: 0xCE6B, + 23031 - 11904: 0xCE6E, + 23032 - 11904: 0x9D55, + 23033 - 11904: 0xFBB2, + 23034 - 11904: 0xCE68, + 23035 - 11904: 0xABC3, + 23036 - 11904: 0xCE6A, + 23037 - 11904: 0xCE69, + 23038 - 11904: 0xCE74, + 23039 - 11904: 0xABBA, + 23040 - 11904: 0xCE65, + 23041 - 11904: 0xABC2, + 23042 - 11904: 0x957E, + 23043 - 11904: 0xABBD, + 23049 - 11904: 0xAE5C, + 23050 - 11904: 0xD162, + 23051 - 11904: 0x9742, + 23052 - 11904: 0xAE5B, + 23053 - 11904: 0x94E6, + 23055 - 11904: 0xD160, + 23057 - 11904: 0xAE50, + 23058 - 11904: 0x92F5, + 23059 - 11904: 0xAE55, + 23061 - 11904: 0xD15F, + 23062 - 11904: 0xD15C, + 23063 - 11904: 0xD161, + 23064 - 11904: 0xAE51, + 23065 - 11904: 0xD15B, + 23066 - 11904: 0x8CC5, + 23067 - 11904: 0xAE54, + 23068 - 11904: 0xAE52, + 23070 - 11904: 0xD163, + 23071 - 11904: 0xAE53, + 23072 - 11904: 0xAE57, + 23073 - 11904: 0x92FD, + 23075 - 11904: 0xAE58, + 23076 - 11904: 0xFBA2, + 23077 - 11904: 0xAE5A, + 23079 - 11904: 0x9C51, + 23081 - 11904: 0xAE59, + 23082 - 11904: 0x94E9, + 23083 - 11904: 0x985C, + 23084 - 11904: 0x92F0, + 23085 - 11904: 0xD15D, + 23086 - 11904: 0xD15E, + 23091 - 11904: 0xD164, + 23093 - 11904: 0xD4D4, + 23094 - 11904: 0xB0F9, + 23095 - 11904: 0xD8C2, + 23096 - 11904: 0xD4D3, + 23097 - 11904: 0xD4E6, + 23100 - 11904: 0xB140, + 23101 - 11904: 0x944C, + 23102 - 11904: 0xD4E4, + 23104 - 11904: 0xB0FE, + 23105 - 11904: 0xB0FA, + 23106 - 11904: 0xD4ED, + 23107 - 11904: 0xD4DD, + 23108 - 11904: 0xD4E0, + 23109 - 11904: 0x916B, + 23110 - 11904: 0xB143, + 23111 - 11904: 0xD4EA, + 23112 - 11904: 0xD4E2, + 23113 - 11904: 0xB0FB, + 23114 - 11904: 0xB144, + 23116 - 11904: 0xD4E7, + 23117 - 11904: 0xD4E5, + 23120 - 11904: 0xD4D6, + 23121 - 11904: 0xD4EB, + 23122 - 11904: 0xD4DF, + 23123 - 11904: 0xD4DA, + 23124 - 11904: 0x8B78, + 23125 - 11904: 0xD4D0, + 23126 - 11904: 0xD4EC, + 23127 - 11904: 0xD4DC, + 23128 - 11904: 0xD4CF, + 23129 - 11904: 0x94E2, + 23130 - 11904: 0xB142, + 23131 - 11904: 0xD4E1, + 23132 - 11904: 0xD4EE, + 23133 - 11904: 0xD4DE, + 23134 - 11904: 0xD4D2, + 23135 - 11904: 0xD4D7, + 23136 - 11904: 0xD4CE, + 23137 - 11904: 0x984F, + 23138 - 11904: 0xB141, + 23139 - 11904: 0xFBB5, + 23140 - 11904: 0xD4DB, + 23141 - 11904: 0xD4D8, + 23142 - 11904: 0xB0FC, + 23143 - 11904: 0xD4D1, + 23144 - 11904: 0x9271, + 23145 - 11904: 0xD4E9, + 23146 - 11904: 0xB0FD, + 23147 - 11904: 0x9365, + 23148 - 11904: 0xD4D9, + 23149 - 11904: 0xD4D5, + 23150 - 11904: 0x985B, + 23152 - 11904: 0xD4E8, + 23153 - 11904: 0x9850, + 23159 - 11904: 0xFBB8, + 23160 - 11904: 0xD8BB, + 23161 - 11904: 0x97BC, + 23162 - 11904: 0xD8B8, + 23163 - 11904: 0xD8C9, + 23164 - 11904: 0xD8BD, + 23165 - 11904: 0xD8CA, + 23166 - 11904: 0x92F3, + 23167 - 11904: 0xB442, + 23169 - 11904: 0x9340, + 23170 - 11904: 0x984D, + 23171 - 11904: 0xD8C6, + 23172 - 11904: 0xD8C3, + 23174 - 11904: 0x9572, + 23176 - 11904: 0xFDEF, + 23178 - 11904: 0xD8C4, + 23179 - 11904: 0xD8C7, + 23180 - 11904: 0xD8CB, + 23182 - 11904: 0xD4E3, + 23183 - 11904: 0xD8CD, + 23184 - 11904: 0xDD47, + 23185 - 11904: 0xFDC1, + 23186 - 11904: 0xB443, + 23187 - 11904: 0xD8CE, + 23188 - 11904: 0xD8B6, + 23189 - 11904: 0xD8C0, + 23190 - 11904: 0xFBBA, + 23191 - 11904: 0xD8C5, + 23193 - 11904: 0x92EB, + 23194 - 11904: 0xB441, + 23195 - 11904: 0xB444, + 23196 - 11904: 0xD8CC, + 23197 - 11904: 0xD8CF, + 23198 - 11904: 0xD8BA, + 23199 - 11904: 0xD8B7, + 23200 - 11904: 0xFC73, + 23201 - 11904: 0x97B7, + 23202 - 11904: 0xD8B9, + 23204 - 11904: 0x876F, + 23205 - 11904: 0xD8BE, + 23206 - 11904: 0xD8BC, + 23207 - 11904: 0xB445, + 23209 - 11904: 0xD8C8, + 23211 - 11904: 0xFBB4, + 23212 - 11904: 0xD8BF, + 23214 - 11904: 0xD8C1, + 23215 - 11904: 0xD8B5, + 23216 - 11904: 0xDCFA, + 23217 - 11904: 0xDCF8, + 23218 - 11904: 0xB742, + 23219 - 11904: 0xB740, + 23220 - 11904: 0xDD43, + 23221 - 11904: 0xDCF9, + 23222 - 11904: 0xDD44, + 23223 - 11904: 0xDD40, + 23224 - 11904: 0xDCF7, + 23225 - 11904: 0xDD46, + 23226 - 11904: 0xDCF6, + 23227 - 11904: 0xDCFD, + 23228 - 11904: 0xB6FE, + 23229 - 11904: 0xB6FD, + 23230 - 11904: 0xB6FC, + 23231 - 11904: 0xDCFB, + 23232 - 11904: 0xDD41, + 23233 - 11904: 0xB6F9, + 23234 - 11904: 0xB741, + 23235 - 11904: 0x90A7, + 23236 - 11904: 0xDCF4, + 23238 - 11904: 0xDCFE, + 23239 - 11904: 0xDCF3, + 23240 - 11904: 0xDCFC, + 23241 - 11904: 0xB6FA, + 23242 - 11904: 0xDD42, + 23243 - 11904: 0xDCF5, + 23244 - 11904: 0xB6FB, + 23245 - 11904: 0xDD45, + 23246 - 11904: 0x9741, + 23247 - 11904: 0x92F4, + 23249 - 11904: 0x8772, + 23251 - 11904: 0xFBBC, + 23253 - 11904: 0xE16E, + 23254 - 11904: 0xB9E2, + 23255 - 11904: 0xB9E1, + 23256 - 11904: 0xB9E3, + 23257 - 11904: 0xE17A, + 23258 - 11904: 0xE170, + 23259 - 11904: 0xE176, + 23260 - 11904: 0xE16B, + 23261 - 11904: 0xE179, + 23262 - 11904: 0xE178, + 23263 - 11904: 0xE17C, + 23264 - 11904: 0xE175, + 23265 - 11904: 0xB9DE, + 23266 - 11904: 0xE174, + 23267 - 11904: 0xB9E4, + 23268 - 11904: 0x9577, + 23269 - 11904: 0xE16D, + 23270 - 11904: 0xB9DF, + 23272 - 11904: 0xE17B, + 23273 - 11904: 0xB9E0, + 23274 - 11904: 0xE16F, + 23275 - 11904: 0xE172, + 23276 - 11904: 0xE177, + 23277 - 11904: 0xE171, + 23278 - 11904: 0xE16C, + 23280 - 11904: 0x9EE2, + 23282 - 11904: 0x8F78, + 23283 - 11904: 0xE173, + 23284 - 11904: 0xE555, + 23285 - 11904: 0xBC61, + 23286 - 11904: 0xE558, + 23287 - 11904: 0xE557, + 23288 - 11904: 0xE55A, + 23289 - 11904: 0xE55C, + 23290 - 11904: 0xF9DC, + 23291 - 11904: 0xBC5F, + 23293 - 11904: 0xE556, + 23294 - 11904: 0x9672, + 23295 - 11904: 0xE554, + 23297 - 11904: 0xE55D, + 23298 - 11904: 0xE55B, + 23299 - 11904: 0xE559, + 23301 - 11904: 0xE55F, + 23303 - 11904: 0xE55E, + 23304 - 11904: 0xBC63, + 23305 - 11904: 0xBC5E, + 23307 - 11904: 0xBC60, + 23308 - 11904: 0xBC62, + 23309 - 11904: 0x9EB5, + 23311 - 11904: 0xE560, + 23312 - 11904: 0xE957, + 23313 - 11904: 0x964B, + 23315 - 11904: 0xE956, + 23316 - 11904: 0xE955, + 23317 - 11904: 0x8CAC, + 23318 - 11904: 0xE958, + 23319 - 11904: 0xE951, + 23321 - 11904: 0xE952, + 23322 - 11904: 0xE95A, + 23323 - 11904: 0xE953, + 23325 - 11904: 0xBEC5, + 23326 - 11904: 0xE95C, + 23327 - 11904: 0xA0FA, + 23328 - 11904: 0xE95B, + 23329 - 11904: 0xE954, + 23331 - 11904: 0xECD1, + 23332 - 11904: 0xC0A8, + 23333 - 11904: 0xECCF, + 23334 - 11904: 0xECD4, + 23335 - 11904: 0xECD3, + 23336 - 11904: 0xE959, + 23338 - 11904: 0xC0A7, + 23339 - 11904: 0x9575, + 23340 - 11904: 0xECD2, + 23341 - 11904: 0xECCE, + 23342 - 11904: 0xECD6, + 23343 - 11904: 0xECD5, + 23344 - 11904: 0xC0A6, + 23346 - 11904: 0xECD0, + 23348 - 11904: 0xBEC6, + 23352 - 11904: 0xC254, + 23356 - 11904: 0xEFC1, + 23357 - 11904: 0xF1FA, + 23358 - 11904: 0xF1FB, + 23359 - 11904: 0xF1FC, + 23360 - 11904: 0xC45C, + 23361 - 11904: 0x90DA, + 23363 - 11904: 0xC45D, + 23364 - 11904: 0x9367, + 23365 - 11904: 0xF443, + 23366 - 11904: 0xFEA4, + 23367 - 11904: 0xF5C8, + 23368 - 11904: 0xF5C7, + 23370 - 11904: 0x90DF, + 23371 - 11904: 0xF6DB, + 23372 - 11904: 0xF6DC, + 23373 - 11904: 0xF7D5, + 23374 - 11904: 0xF8A7, + 23375 - 11904: 0x9354, + 23376 - 11904: 0xA46C, + 23377 - 11904: 0xA46D, + 23379 - 11904: 0xA46E, + 23380 - 11904: 0xA4D5, + 23381 - 11904: 0xA5A5, + 23382 - 11904: 0xC9D3, + 23383 - 11904: 0xA672, + 23384 - 11904: 0xA673, + 23386 - 11904: 0xA7B7, + 23387 - 11904: 0xA7B8, + 23388 - 11904: 0xA7B6, + 23389 - 11904: 0xA7B5, + 23391 - 11904: 0xA973, + 23394 - 11904: 0xCC55, + 23395 - 11904: 0xA975, + 23396 - 11904: 0xA974, + 23397 - 11904: 0xCC56, + 23398 - 11904: 0x8961, + 23400 - 11904: 0x8BB4, + 23401 - 11904: 0xABC4, + 23403 - 11904: 0xAE5D, + 23404 - 11904: 0xD165, + 23405 - 11904: 0x9DC0, + 23406 - 11904: 0xD4F0, + 23408 - 11904: 0xB145, + 23409 - 11904: 0xB447, + 23410 - 11904: 0xD4EF, + 23411 - 11904: 0xB446, + 23412 - 11904: 0x8E48, + 23413 - 11904: 0xB9E5, + 23414 - 11904: 0xFBC5, + 23415 - 11904: 0xE17D, + 23416 - 11904: 0xBEC7, + 23418 - 11904: 0xC0A9, + 23419 - 11904: 0xECD7, + 23420 - 11904: 0xFBC7, + 23421 - 11904: 0xC45E, + 23423 - 11904: 0xC570, + 23424 - 11904: 0xC6CB, + 23425 - 11904: 0xC972, + 23426 - 11904: 0xFA79, + 23427 - 11904: 0xA5A6, + 23428 - 11904: 0xC973, + 23429 - 11904: 0xA676, + 23431 - 11904: 0xA674, + 23432 - 11904: 0xA675, + 23433 - 11904: 0xA677, + 23435 - 11904: 0xA7BA, + 23436 - 11904: 0xA7B9, + 23438 - 11904: 0xCABC, + 23439 - 11904: 0xA7BB, + 23440 - 11904: 0x9E67, + 23442 - 11904: 0xCABD, + 23443 - 11904: 0xCC57, + 23445 - 11904: 0xCC58, + 23446 - 11904: 0x8CD9, + 23447 - 11904: 0xA976, + 23448 - 11904: 0xA978, + 23449 - 11904: 0xA97A, + 23450 - 11904: 0xA977, + 23451 - 11904: 0xA97B, + 23452 - 11904: 0xA979, + 23453 - 11904: 0xFBD2, + 23454 - 11904: 0x8962, + 23455 - 11904: 0x8963, + 23458 - 11904: 0xABC8, + 23459 - 11904: 0xABC5, + 23460 - 11904: 0xABC7, + 23461 - 11904: 0xABC9, + 23462 - 11904: 0xABC6, + 23463 - 11904: 0xD166, + 23464 - 11904: 0xCE77, + 23466 - 11904: 0xFC7D, + 23468 - 11904: 0xD168, + 23469 - 11904: 0xD167, + 23470 - 11904: 0xAE63, + 23472 - 11904: 0xAE5F, + 23475 - 11904: 0xAE60, + 23476 - 11904: 0xAE62, + 23477 - 11904: 0xAE64, + 23478 - 11904: 0xAE61, + 23479 - 11904: 0x8773, + 23480 - 11904: 0xAE66, + 23481 - 11904: 0xAE65, + 23487 - 11904: 0xB14A, + 23488 - 11904: 0xD4F2, + 23489 - 11904: 0xD4F1, + 23490 - 11904: 0xB149, + 23491 - 11904: 0x9F6B, + 23492 - 11904: 0xB148, + 23493 - 11904: 0xB147, + 23494 - 11904: 0xB14B, + 23495 - 11904: 0xB146, + 23498 - 11904: 0xD8D5, + 23499 - 11904: 0xD8D2, + 23500 - 11904: 0xB449, + 23501 - 11904: 0xD8D1, + 23502 - 11904: 0xD8D6, + 23504 - 11904: 0xB44B, + 23505 - 11904: 0xD8D4, + 23506 - 11904: 0xB448, + 23507 - 11904: 0xB44A, + 23508 - 11904: 0xD8D3, + 23509 - 11904: 0xFBCC, + 23510 - 11904: 0xDD48, + 23511 - 11904: 0xFEAE, + 23512 - 11904: 0xDD49, + 23513 - 11904: 0xDD4A, + 23515 - 11904: 0x876D, + 23518 - 11904: 0xB9E6, + 23519 - 11904: 0xB9EE, + 23520 - 11904: 0xE17E, + 23521 - 11904: 0xB9E8, + 23522 - 11904: 0xB9EC, + 23523 - 11904: 0xE1A1, + 23524 - 11904: 0xB9ED, + 23525 - 11904: 0xB9E9, + 23526 - 11904: 0xB9EA, + 23527 - 11904: 0xB9E7, + 23528 - 11904: 0xB9EB, + 23529 - 11904: 0xBC66, + 23530 - 11904: 0xD8D0, + 23531 - 11904: 0xBC67, + 23532 - 11904: 0xBC65, + 23534 - 11904: 0xBC64, + 23535 - 11904: 0xE95D, + 23536 - 11904: 0xBEC8, + 23537 - 11904: 0xECD8, + 23538 - 11904: 0xECD9, + 23539 - 11904: 0xFBD1, + 23541 - 11904: 0xC364, + 23542 - 11904: 0xC45F, + 23544 - 11904: 0xA46F, + 23546 - 11904: 0xA678, + 23551 - 11904: 0xFB75, + 23553 - 11904: 0xABCA, + 23555 - 11904: 0xD169, + 23556 - 11904: 0xAE67, + 23557 - 11904: 0xFBD4, + 23559 - 11904: 0xB14E, + 23560 - 11904: 0xB14D, + 23561 - 11904: 0xB14C, + 23562 - 11904: 0xB44C, + 23563 - 11904: 0xB44D, + 23564 - 11904: 0xD8D7, + 23565 - 11904: 0xB9EF, + 23566 - 11904: 0xBEC9, + 23567 - 11904: 0xA470, + 23568 - 11904: 0xC95C, + 23569 - 11904: 0xA4D6, + 23570 - 11904: 0xC974, + 23571 - 11904: 0xFBD6, + 23572 - 11904: 0xFBD8, + 23573 - 11904: 0xC9D4, + 23574 - 11904: 0xA679, + 23578 - 11904: 0xA97C, + 23580 - 11904: 0x8B5D, + 23582 - 11904: 0x934C, + 23583 - 11904: 0xDD4B, + 23584 - 11904: 0x9AE2, + 23586 - 11904: 0xA471, + 23587 - 11904: 0x8BC9, + 23588 - 11904: 0xA4D7, + 23589 - 11904: 0xC9D5, + 23592 - 11904: 0xCABE, + 23594 - 11904: 0xCABF, + 23596 - 11904: 0xA7BC, + 23600 - 11904: 0xD8D8, + 23601 - 11904: 0xB44E, + 23603 - 11904: 0xDD4C, + 23607 - 11904: 0xC0AA, + 23608 - 11904: 0xA472, + 23609 - 11904: 0xA4A8, + 23610 - 11904: 0xA4D8, + 23611 - 11904: 0xC975, + 23612 - 11904: 0xA5A7, + 23614 - 11904: 0xA7C0, + 23615 - 11904: 0xA7BF, + 23616 - 11904: 0xA7BD, + 23617 - 11904: 0xA7BE, + 23620 - 11904: 0xCC59, + 23621 - 11904: 0xA97E, + 23622 - 11904: 0xA9A1, + 23623 - 11904: 0xCC5A, + 23624 - 11904: 0xA97D, + 23625 - 11904: 0xFBDB, + 23626 - 11904: 0x9FC9, + 23627 - 11904: 0xABCE, + 23628 - 11904: 0xCE78, + 23629 - 11904: 0xABCD, + 23630 - 11904: 0xABCB, + 23631 - 11904: 0xABCC, + 23632 - 11904: 0xAE6A, + 23633 - 11904: 0xAE68, + 23635 - 11904: 0x9F44, + 23636 - 11904: 0xD16B, + 23637 - 11904: 0xAE69, + 23638 - 11904: 0xD16A, + 23640 - 11904: 0xAE5E, + 23641 - 11904: 0xD4F3, + 23644 - 11904: 0xB150, + 23645 - 11904: 0xB151, + 23646 - 11904: 0x98ED, + 23648 - 11904: 0xB14F, + 23650 - 11904: 0xB9F0, + 23651 - 11904: 0xE1A2, + 23652 - 11904: 0xBC68, + 23653 - 11904: 0xBC69, + 23655 - 11904: 0xE561, + 23656 - 11904: 0xC0AB, + 23657 - 11904: 0xEFC2, + 23658 - 11904: 0xEFC3, + 23660 - 11904: 0xC4DD, + 23661 - 11904: 0xF8A8, + 23662 - 11904: 0xC94B, + 23663 - 11904: 0xA4D9, + 23665 - 11904: 0xA473, + 23667 - 11904: 0xC977, + 23668 - 11904: 0xC976, + 23672 - 11904: 0x8CE9, + 23673 - 11904: 0xA67A, + 23674 - 11904: 0xC9D7, + 23675 - 11904: 0xC9D8, + 23676 - 11904: 0xC9D6, + 23678 - 11904: 0xC9D9, + 23685 - 11904: 0xFBDD, + 23686 - 11904: 0xCAC7, + 23688 - 11904: 0xCAC2, + 23689 - 11904: 0xCAC4, + 23690 - 11904: 0xCAC6, + 23691 - 11904: 0xCAC3, + 23692 - 11904: 0xA7C4, + 23693 - 11904: 0xCAC0, + 23695 - 11904: 0xCAC1, + 23696 - 11904: 0xA7C1, + 23697 - 11904: 0xA7C2, + 23698 - 11904: 0xCAC5, + 23699 - 11904: 0xCAC8, + 23700 - 11904: 0xA7C3, + 23701 - 11904: 0xCAC9, + 23705 - 11904: 0x8DF2, + 23706 - 11904: 0x8964, + 23708 - 11904: 0xFDF2, + 23709 - 11904: 0xCC68, + 23710 - 11904: 0x934D, + 23711 - 11904: 0xCC62, + 23712 - 11904: 0xCC5D, + 23713 - 11904: 0xA9A3, + 23714 - 11904: 0xCC65, + 23715 - 11904: 0xCC63, + 23716 - 11904: 0xCC5C, + 23717 - 11904: 0xCC69, + 23718 - 11904: 0xCC6C, + 23719 - 11904: 0xCC67, + 23720 - 11904: 0xCC60, + 23721 - 11904: 0xA9A5, + 23722 - 11904: 0xCC66, + 23723 - 11904: 0xA9A6, + 23724 - 11904: 0xCC61, + 23725 - 11904: 0xCC64, + 23726 - 11904: 0xCC5B, + 23727 - 11904: 0xCC5F, + 23728 - 11904: 0xCC6B, + 23729 - 11904: 0xA9A7, + 23731 - 11904: 0xA9A8, + 23733 - 11904: 0xCC5E, + 23734 - 11904: 0xCC6A, + 23735 - 11904: 0xA9A2, + 23736 - 11904: 0xA9A4, + 23738 - 11904: 0xFBE7, + 23745 - 11904: 0xA0F2, + 23746 - 11904: 0x9868, + 23750 - 11904: 0xCEAB, + 23751 - 11904: 0xCEA4, + 23752 - 11904: 0xCEAA, + 23753 - 11904: 0xCEA3, + 23754 - 11904: 0xCEA5, + 23755 - 11904: 0xCE7D, + 23756 - 11904: 0xCE7B, + 23758 - 11904: 0xCEAC, + 23759 - 11904: 0xCEA9, + 23760 - 11904: 0xCE79, + 23761 - 11904: 0x9F58, + 23762 - 11904: 0xABD0, + 23763 - 11904: 0xCEA7, + 23764 - 11904: 0xCEA8, + 23765 - 11904: 0x8CE6, + 23766 - 11904: 0xCEA6, + 23767 - 11904: 0xCE7C, + 23768 - 11904: 0xCE7A, + 23769 - 11904: 0xABCF, + 23770 - 11904: 0xCEA2, + 23771 - 11904: 0xCE7E, + 23774 - 11904: 0xCEA1, + 23775 - 11904: 0xCEAD, + 23781 - 11904: 0x8D73, + 23784 - 11904: 0xAE6F, + 23785 - 11904: 0xFBDE, + 23786 - 11904: 0xAE6E, + 23788 - 11904: 0xD16C, + 23789 - 11904: 0xAE6B, + 23790 - 11904: 0xD16E, + 23791 - 11904: 0xFBDF, + 23792 - 11904: 0xAE70, + 23793 - 11904: 0xD16F, + 23796 - 11904: 0xAE73, + 23797 - 11904: 0x8C48, + 23798 - 11904: 0xAE71, + 23799 - 11904: 0xD170, + 23800 - 11904: 0xCEAE, + 23801 - 11904: 0xD172, + 23803 - 11904: 0xAE6D, + 23804 - 11904: 0x8774, + 23805 - 11904: 0xAE6C, + 23807 - 11904: 0xD16D, + 23808 - 11904: 0xD171, + 23809 - 11904: 0xAE72, + 23814 - 11904: 0xB153, + 23815 - 11904: 0xB152, + 23819 - 11904: 0xD4F5, + 23820 - 11904: 0xD4F9, + 23821 - 11904: 0xD4FB, + 23822 - 11904: 0xB154, + 23823 - 11904: 0xD4FE, + 23824 - 11904: 0xFBE3, + 23825 - 11904: 0xB158, + 23826 - 11904: 0xD541, + 23828 - 11904: 0xB15A, + 23829 - 11904: 0x8DA8, + 23830 - 11904: 0xB156, + 23831 - 11904: 0xB15E, + 23832 - 11904: 0xFBE4, + 23833 - 11904: 0xB15B, + 23834 - 11904: 0xD4F7, + 23835 - 11904: 0xB155, + 23837 - 11904: 0xD4F6, + 23838 - 11904: 0xD4F4, + 23839 - 11904: 0xD543, + 23840 - 11904: 0xD4F8, + 23842 - 11904: 0xB157, + 23843 - 11904: 0xD542, + 23844 - 11904: 0xB15C, + 23845 - 11904: 0xD4FD, + 23846 - 11904: 0xD4FC, + 23847 - 11904: 0xB15D, + 23848 - 11904: 0xD4FA, + 23849 - 11904: 0xB159, + 23852 - 11904: 0x9C75, + 23854 - 11904: 0xD544, + 23855 - 11904: 0x9878, + 23856 - 11904: 0xD540, + 23857 - 11904: 0xD8E7, + 23858 - 11904: 0xD8EE, + 23859 - 11904: 0xD8E3, + 23860 - 11904: 0xB451, + 23861 - 11904: 0xD8DF, + 23862 - 11904: 0xD8EF, + 23863 - 11904: 0xD8D9, + 23864 - 11904: 0xD8EC, + 23865 - 11904: 0xD8EA, + 23866 - 11904: 0xD8E4, + 23868 - 11904: 0xD8ED, + 23869 - 11904: 0xD8E6, + 23870 - 11904: 0x8D60, + 23871 - 11904: 0xD8DE, + 23872 - 11904: 0xD8F0, + 23873 - 11904: 0xD8DC, + 23874 - 11904: 0xD8E9, + 23875 - 11904: 0xD8DA, + 23877 - 11904: 0xD8F1, + 23878 - 11904: 0xFBE5, + 23879 - 11904: 0xB452, + 23880 - 11904: 0x8D61, + 23881 - 11904: 0xD8EB, + 23882 - 11904: 0xDD4F, + 23883 - 11904: 0xD8DD, + 23884 - 11904: 0xB44F, + 23886 - 11904: 0xD8E1, + 23888 - 11904: 0xB450, + 23889 - 11904: 0xD8E0, + 23890 - 11904: 0xD8E5, + 23893 - 11904: 0xD8E2, + 23894 - 11904: 0x8D62, + 23895 - 11904: 0xA0A1, + 23897 - 11904: 0xD8E8, + 23899 - 11904: 0x9C40, + 23902 - 11904: 0xDD53, + 23906 - 11904: 0xDD56, + 23907 - 11904: 0xDD4E, + 23909 - 11904: 0xDD50, + 23911 - 11904: 0xDD55, + 23912 - 11904: 0xDD54, + 23913 - 11904: 0xB743, + 23915 - 11904: 0xD8DB, + 23916 - 11904: 0xDD52, + 23919 - 11904: 0xB744, + 23920 - 11904: 0x98AD, + 23921 - 11904: 0xDD4D, + 23922 - 11904: 0xDD51, + 23924 - 11904: 0x9EEA, + 23927 - 11904: 0xE1A9, + 23928 - 11904: 0x8CEC, + 23929 - 11904: 0xE1B0, + 23930 - 11904: 0xE1A7, + 23931 - 11904: 0x8CD4, + 23932 - 11904: 0xE1AE, + 23933 - 11904: 0xE1A5, + 23934 - 11904: 0xE1AD, + 23935 - 11904: 0xE1B1, + 23936 - 11904: 0xE1A4, + 23937 - 11904: 0xE1A8, + 23938 - 11904: 0xE1A3, + 23940 - 11904: 0xB9F1, + 23941 - 11904: 0x9CEB, + 23942 - 11904: 0xE1A6, + 23943 - 11904: 0xB9F2, + 23944 - 11904: 0xE1AC, + 23945 - 11904: 0xE1AB, + 23946 - 11904: 0xE1AA, + 23947 - 11904: 0xFBE0, + 23949 - 11904: 0xE1AF, + 23950 - 11904: 0x9F51, + 23954 - 11904: 0xE565, + 23955 - 11904: 0xE567, + 23956 - 11904: 0xBC6B, + 23957 - 11904: 0xE568, + 23959 - 11904: 0xE563, + 23961 - 11904: 0xE562, + 23962 - 11904: 0xE56C, + 23964 - 11904: 0xE56A, + 23965 - 11904: 0xBC6A, + 23966 - 11904: 0xE56D, + 23967 - 11904: 0xE564, + 23968 - 11904: 0xE569, + 23969 - 11904: 0xE56B, + 23970 - 11904: 0xE566, + 23972 - 11904: 0x8D65, + 23975 - 11904: 0xE961, + 23976 - 11904: 0xE966, + 23977 - 11904: 0xE960, + 23978 - 11904: 0xE965, + 23979 - 11904: 0x9CF1, + 23980 - 11904: 0xE95E, + 23981 - 11904: 0xE968, + 23982 - 11904: 0xE964, + 23983 - 11904: 0xE969, + 23984 - 11904: 0xE963, + 23985 - 11904: 0xE95F, + 23986 - 11904: 0xE967, + 23988 - 11904: 0xE96A, + 23989 - 11904: 0xE962, + 23990 - 11904: 0xFC58, + 23991 - 11904: 0xECDA, + 23992 - 11904: 0xC0AF, + 23993 - 11904: 0x8D66, + 23994 - 11904: 0xC0AD, + 23996 - 11904: 0xC0AC, + 23997 - 11904: 0xC0AE, + 24000 - 11904: 0xEFC4, + 24001 - 11904: 0x9654, + 24002 - 11904: 0xF172, + 24003 - 11904: 0xF1FD, + 24006 - 11904: 0xF444, + 24007 - 11904: 0xF445, + 24009 - 11904: 0xC460, + 24011 - 11904: 0xF5C9, + 24013 - 11904: 0xC4DE, + 24015 - 11904: 0xF5CA, + 24017 - 11904: 0xF6DE, + 24018 - 11904: 0xC572, + 24020 - 11904: 0xC571, + 24021 - 11904: 0xF6DD, + 24022 - 11904: 0xC5C9, + 24023 - 11904: 0xFBE8, + 24024 - 11904: 0xF7D6, + 24027 - 11904: 0xC6CC, + 24029 - 11904: 0xA474, + 24030 - 11904: 0xA67B, + 24031 - 11904: 0xC9DA, + 24032 - 11904: 0xCACA, + 24033 - 11904: 0xA8B5, + 24034 - 11904: 0xB15F, + 24037 - 11904: 0xA475, + 24038 - 11904: 0xA5AA, + 24039 - 11904: 0xA5A9, + 24040 - 11904: 0xA5A8, + 24043 - 11904: 0xA7C5, + 24046 - 11904: 0xAE74, + 24048 - 11904: 0xDD57, + 24049 - 11904: 0xA476, + 24050 - 11904: 0xA477, + 24051 - 11904: 0xA478, + 24052 - 11904: 0xA4DA, + 24053 - 11904: 0x9FCE, + 24055 - 11904: 0xABD1, + 24057 - 11904: 0xCEAF, + 24061 - 11904: 0xB453, + 24062 - 11904: 0xA479, + 24063 - 11904: 0xC95D, + 24066 - 11904: 0xA5AB, + 24067 - 11904: 0xA5AC, + 24068 - 11904: 0xC978, + 24070 - 11904: 0xA67C, + 24073 - 11904: 0xFBFC, + 24074 - 11904: 0xCACB, + 24075 - 11904: 0x9AE4, + 24076 - 11904: 0xA7C6, + 24078 - 11904: 0xCACC, + 24081 - 11904: 0xA9AE, + 24082 - 11904: 0x9F75, + 24084 - 11904: 0xCC6E, + 24085 - 11904: 0xA9AC, + 24086 - 11904: 0xA9AB, + 24087 - 11904: 0xCC6D, + 24088 - 11904: 0xA9A9, + 24089 - 11904: 0xCC6F, + 24090 - 11904: 0xA9AA, + 24091 - 11904: 0xA9AD, + 24093 - 11904: 0xABD2, + 24095 - 11904: 0xABD4, + 24096 - 11904: 0xCEB3, + 24097 - 11904: 0xCEB0, + 24098 - 11904: 0xCEB1, + 24099 - 11904: 0xCEB2, + 24100 - 11904: 0xCEB4, + 24101 - 11904: 0xABD3, + 24104 - 11904: 0xD174, + 24105 - 11904: 0xD173, + 24107 - 11904: 0xAE76, + 24109 - 11904: 0xAE75, + 24110 - 11904: 0xFBF1, + 24115 - 11904: 0xB162, + 24116 - 11904: 0xD546, + 24118 - 11904: 0xB161, + 24119 - 11904: 0xB163, + 24120 - 11904: 0xB160, + 24125 - 11904: 0xB455, + 24126 - 11904: 0xD545, + 24128 - 11904: 0xB456, + 24129 - 11904: 0xD8F3, + 24130 - 11904: 0x8D69, + 24131 - 11904: 0xB457, + 24132 - 11904: 0xD8F2, + 24133 - 11904: 0xB454, + 24136 - 11904: 0x934F, + 24138 - 11904: 0xDD5A, + 24139 - 11904: 0xDD5C, + 24140 - 11904: 0xB745, + 24141 - 11904: 0xDD5B, + 24142 - 11904: 0xDD59, + 24143 - 11904: 0xDD58, + 24147 - 11904: 0xE1B4, + 24148 - 11904: 0xB9F7, + 24149 - 11904: 0xB9F5, + 24151 - 11904: 0xB9F6, + 24152 - 11904: 0xE1B2, + 24153 - 11904: 0xE1B3, + 24155 - 11904: 0xB9F3, + 24156 - 11904: 0xE571, + 24157 - 11904: 0xE56F, + 24158 - 11904: 0x934E, + 24159 - 11904: 0xBC6D, + 24160 - 11904: 0xE570, + 24161 - 11904: 0xBC6E, + 24162 - 11904: 0xBC6C, + 24163 - 11904: 0xB9F4, + 24166 - 11904: 0xE96D, + 24167 - 11904: 0xE96B, + 24168 - 11904: 0xE96C, + 24169 - 11904: 0xE56E, + 24170 - 11904: 0xECDC, + 24171 - 11904: 0xC0B0, + 24172 - 11904: 0xECDB, + 24173 - 11904: 0xEFC5, + 24174 - 11904: 0xEFC6, + 24175 - 11904: 0xE96E, + 24176 - 11904: 0xF1FE, + 24178 - 11904: 0xA47A, + 24179 - 11904: 0xA5AD, + 24180 - 11904: 0xA67E, + 24181 - 11904: 0xFBF3, + 24182 - 11904: 0xA67D, + 24184 - 11904: 0xA9AF, + 24185 - 11904: 0xB746, + 24186 - 11904: 0xFBF4, + 24187 - 11904: 0xA4DB, + 24188 - 11904: 0xA5AE, + 24189 - 11904: 0xABD5, + 24190 - 11904: 0xB458, + 24191 - 11904: 0xC6CE, + 24192 - 11904: 0xC979, + 24194 - 11904: 0xC97A, + 24195 - 11904: 0xFBC3, + 24196 - 11904: 0xC9DC, + 24198 - 11904: 0x8965, + 24199 - 11904: 0xA7C8, + 24200 - 11904: 0xCAD0, + 24201 - 11904: 0xCACE, + 24202 - 11904: 0xA7C9, + 24203 - 11904: 0xCACD, + 24204 - 11904: 0xCACF, + 24205 - 11904: 0xCAD1, + 24207 - 11904: 0xA7C7, + 24210 - 11904: 0x8C7A, + 24213 - 11904: 0xA9B3, + 24214 - 11904: 0xA9B4, + 24215 - 11904: 0xA9B1, + 24217 - 11904: 0x8C7B, + 24218 - 11904: 0xA9B0, + 24219 - 11904: 0xCEB8, + 24220 - 11904: 0xA9B2, + 24224 - 11904: 0xABD6, + 24226 - 11904: 0xCEB7, + 24227 - 11904: 0xCEB9, + 24228 - 11904: 0xCEB6, + 24229 - 11904: 0xCEBA, + 24230 - 11904: 0xABD7, + 24231 - 11904: 0xAE79, + 24232 - 11904: 0xD175, + 24234 - 11904: 0xD177, + 24235 - 11904: 0xAE77, + 24236 - 11904: 0xD178, + 24237 - 11904: 0xAE78, + 24238 - 11904: 0xD176, + 24240 - 11904: 0xCEB5, + 24241 - 11904: 0xD547, + 24242 - 11904: 0xD54A, + 24243 - 11904: 0xD54B, + 24244 - 11904: 0xD548, + 24245 - 11904: 0xB167, + 24246 - 11904: 0xB166, + 24247 - 11904: 0xB164, + 24248 - 11904: 0xB165, + 24249 - 11904: 0xD549, + 24253 - 11904: 0x8D6A, + 24254 - 11904: 0xB168, + 24257 - 11904: 0xB45A, + 24258 - 11904: 0xB45B, + 24260 - 11904: 0xB45C, + 24261 - 11904: 0xDD5D, + 24262 - 11904: 0xDD5F, + 24263 - 11904: 0xDD61, + 24264 - 11904: 0xB748, + 24265 - 11904: 0xB747, + 24266 - 11904: 0xB459, + 24267 - 11904: 0xDD60, + 24268 - 11904: 0xDD5E, + 24269 - 11904: 0x9353, + 24270 - 11904: 0xE1B8, + 24272 - 11904: 0xFBF9, + 24273 - 11904: 0xE1B6, + 24274 - 11904: 0xE1BC, + 24275 - 11904: 0xB9F8, + 24276 - 11904: 0xE1BD, + 24277 - 11904: 0xE1BA, + 24278 - 11904: 0xB9F9, + 24279 - 11904: 0xE1B7, + 24280 - 11904: 0xE1B5, + 24281 - 11904: 0xE1BB, + 24282 - 11904: 0xBC70, + 24283 - 11904: 0xE573, + 24284 - 11904: 0xE1B9, + 24285 - 11904: 0xBC72, + 24286 - 11904: 0xE574, + 24287 - 11904: 0xBC71, + 24288 - 11904: 0xBC74, + 24289 - 11904: 0xE575, + 24290 - 11904: 0xBC6F, + 24291 - 11904: 0xBC73, + 24293 - 11904: 0xE973, + 24294 - 11904: 0xE971, + 24295 - 11904: 0xE970, + 24296 - 11904: 0xE972, + 24297 - 11904: 0xE96F, + 24300 - 11904: 0xC366, + 24302 - 11904: 0xF446, + 24303 - 11904: 0xF447, + 24305 - 11904: 0xF5CB, + 24306 - 11904: 0xF6DF, + 24307 - 11904: 0xC655, + 24308 - 11904: 0xFBFD, + 24310 - 11904: 0xA9B5, + 24311 - 11904: 0xA7CA, + 24312 - 11904: 0x9059, + 24313 - 11904: 0xFC40, + 24314 - 11904: 0xABD8, + 24315 - 11904: 0xFC41, + 24316 - 11904: 0xFC43, + 24318 - 11904: 0xA47B, + 24319 - 11904: 0xA4DC, + 24321 - 11904: 0xA5AF, + 24322 - 11904: 0xC9DD, + 24324 - 11904: 0xA7CB, + 24325 - 11904: 0xCAD2, + 24327 - 11904: 0xCEBB, + 24328 - 11904: 0xABD9, + 24330 - 11904: 0xB9FA, + 24331 - 11904: 0xA47C, + 24332 - 11904: 0x9FD8, + 24333 - 11904: 0xFC46, + 24334 - 11904: 0x9362, + 24335 - 11904: 0xA6A1, + 24338 - 11904: 0xB749, + 24339 - 11904: 0xA47D, + 24340 - 11904: 0xA4DD, + 24341 - 11904: 0xA4DE, + 24343 - 11904: 0xA5B1, + 24344 - 11904: 0xA5B0, + 24346 - 11904: 0xC9DE, + 24347 - 11904: 0xA6A2, + 24349 - 11904: 0xCAD3, + 24351 - 11904: 0xA7CC, + 24354 - 11904: 0xCC71, + 24355 - 11904: 0xCC72, + 24356 - 11904: 0xCC73, + 24357 - 11904: 0x8D6B, + 24358 - 11904: 0xA9B6, + 24359 - 11904: 0xA9B7, + 24360 - 11904: 0xCC70, + 24361 - 11904: 0xA9B8, + 24365 - 11904: 0xABDA, + 24366 - 11904: 0xCEBC, + 24368 - 11904: 0xD17A, + 24369 - 11904: 0xAE7A, + 24371 - 11904: 0xD179, + 24373 - 11904: 0xB169, + 24374 - 11904: 0xD54C, + 24375 - 11904: 0xB16A, + 24376 - 11904: 0xD54D, + 24378 - 11904: 0xFC4C, + 24379 - 11904: 0x8CFE, + 24380 - 11904: 0xB45D, + 24384 - 11904: 0xDD62, + 24387 - 11904: 0xE1BF, + 24388 - 11904: 0xE1BE, + 24390 - 11904: 0xB9FB, + 24392 - 11904: 0xBC75, + 24393 - 11904: 0xE576, + 24394 - 11904: 0xBECA, + 24395 - 11904: 0xE974, + 24396 - 11904: 0xC0B1, + 24397 - 11904: 0x95B8, + 24398 - 11904: 0xC573, + 24399 - 11904: 0xF7D8, + 24400 - 11904: 0xC6D0, + 24401 - 11904: 0x8BCA, + 24404 - 11904: 0xCC74, + 24406 - 11904: 0xCEBD, + 24407 - 11904: 0xB16B, + 24408 - 11904: 0xFC4F, + 24409 - 11904: 0xB74A, + 24412 - 11904: 0x987A, + 24413 - 11904: 0xC255, + 24417 - 11904: 0xC6D1, + 24418 - 11904: 0xA7CE, + 24419 - 11904: 0xFC51, + 24420 - 11904: 0xA7CD, + 24421 - 11904: 0xABDB, + 24423 - 11904: 0xD17B, + 24425 - 11904: 0xB16D, + 24426 - 11904: 0xB343, + 24427 - 11904: 0xB16E, + 24428 - 11904: 0xB16C, + 24429 - 11904: 0xB45E, + 24431 - 11904: 0xE1C0, + 24432 - 11904: 0xB9FC, + 24433 - 11904: 0xBC76, + 24434 - 11904: 0xFC54, + 24435 - 11904: 0xC94C, + 24436 - 11904: 0xC9DF, + 24438 - 11904: 0xCAD5, + 24439 - 11904: 0xA7CF, + 24440 - 11904: 0xCAD4, + 24441 - 11904: 0xA7D0, + 24443 - 11904: 0xFAAF, + 24444 - 11904: 0xA9BC, + 24445 - 11904: 0xCC77, + 24446 - 11904: 0xCC76, + 24447 - 11904: 0xA9BB, + 24448 - 11904: 0xA9B9, + 24449 - 11904: 0xA9BA, + 24450 - 11904: 0xCC75, + 24451 - 11904: 0x8D6C, + 24453 - 11904: 0xABDD, + 24454 - 11904: 0xCEBE, + 24455 - 11904: 0xABE0, + 24456 - 11904: 0xABDC, + 24457 - 11904: 0xABE2, + 24458 - 11904: 0xABDE, + 24459 - 11904: 0xABDF, + 24460 - 11904: 0xABE1, + 24464 - 11904: 0xAE7D, + 24465 - 11904: 0xAE7C, + 24466 - 11904: 0xAE7B, + 24470 - 11904: 0xD54F, + 24471 - 11904: 0xB16F, + 24472 - 11904: 0xB172, + 24473 - 11904: 0xB170, + 24475 - 11904: 0xD54E, + 24476 - 11904: 0xB175, + 24478 - 11904: 0xB171, + 24479 - 11904: 0xD550, + 24480 - 11904: 0xB174, + 24481 - 11904: 0xB173, + 24484 - 11904: 0xFA61, + 24485 - 11904: 0xD8F6, + 24486 - 11904: 0xD8F5, + 24487 - 11904: 0xFC57, + 24488 - 11904: 0xB461, + 24489 - 11904: 0xB45F, + 24490 - 11904: 0xB460, + 24491 - 11904: 0xD8F7, + 24492 - 11904: 0xB74B, + 24493 - 11904: 0xDD64, + 24494 - 11904: 0xB74C, + 24495 - 11904: 0xDD63, + 24497 - 11904: 0x9B70, + 24498 - 11904: 0xE577, + 24501 - 11904: 0xBC78, + 24502 - 11904: 0xE1C1, + 24503 - 11904: 0xBC77, + 24505 - 11904: 0xB9FD, + 24506 - 11904: 0xA051, + 24507 - 11904: 0xECDE, + 24508 - 11904: 0xE975, + 24509 - 11904: 0xC0B2, + 24510 - 11904: 0xECDD, + 24511 - 11904: 0xF240, + 24512 - 11904: 0xF448, + 24513 - 11904: 0xF449, + 24514 - 11904: 0x8C7C, + 24515 - 11904: 0xA4DF, + 24516 - 11904: 0x8BCB, + 24517 - 11904: 0xA5B2, + 24521 - 11904: 0xC97B, + 24524 - 11904: 0xA7D2, + 24525 - 11904: 0xA7D4, + 24527 - 11904: 0xC9E2, + 24528 - 11904: 0xCAD8, + 24529 - 11904: 0xCAD7, + 24530 - 11904: 0xCAD6, + 24532 - 11904: 0xC9E1, + 24533 - 11904: 0xC9E0, + 24534 - 11904: 0xA6A4, + 24535 - 11904: 0xA7D3, + 24536 - 11904: 0xA7D1, + 24537 - 11904: 0xA6A3, + 24539 - 11904: 0x936E, + 24541 - 11904: 0xA9BD, + 24542 - 11904: 0xCC78, + 24543 - 11904: 0xFCD5, + 24544 - 11904: 0xA9BE, + 24545 - 11904: 0xCADD, + 24547 - 11904: 0xCADF, + 24548 - 11904: 0xCADE, + 24549 - 11904: 0xCC79, + 24552 - 11904: 0xCADA, + 24554 - 11904: 0xA7D8, + 24555 - 11904: 0xA7D6, + 24557 - 11904: 0xCAD9, + 24558 - 11904: 0xCADB, + 24559 - 11904: 0xCAE1, + 24561 - 11904: 0xA7D5, + 24563 - 11904: 0xCADC, + 24564 - 11904: 0xCAE5, + 24565 - 11904: 0xA9C0, + 24567 - 11904: 0xCAE2, + 24568 - 11904: 0xA7D7, + 24570 - 11904: 0xCAE0, + 24571 - 11904: 0xCAE3, + 24573 - 11904: 0xA9BF, + 24575 - 11904: 0xA9C1, + 24576 - 11904: 0xCAE4, + 24585 - 11904: 0xCCAF, + 24586 - 11904: 0xCCA2, + 24587 - 11904: 0xCC7E, + 24588 - 11904: 0xCCAE, + 24589 - 11904: 0xCCA9, + 24590 - 11904: 0xABE7, + 24591 - 11904: 0xA9C2, + 24592 - 11904: 0xCCAA, + 24593 - 11904: 0xCCAD, + 24594 - 11904: 0xABE3, + 24595 - 11904: 0xCCAC, + 24596 - 11904: 0xA9C3, + 24597 - 11904: 0xA9C8, + 24598 - 11904: 0xA9C6, + 24599 - 11904: 0xCCA3, + 24601 - 11904: 0xCC7C, + 24602 - 11904: 0xCCA5, + 24603 - 11904: 0xA9CD, + 24604 - 11904: 0xCCB0, + 24605 - 11904: 0xABE4, + 24606 - 11904: 0xCCA6, + 24608 - 11904: 0xABE5, + 24609 - 11904: 0xA9C9, + 24610 - 11904: 0xCCA8, + 24611 - 11904: 0xFCA9, + 24612 - 11904: 0xCECD, + 24613 - 11904: 0xABE6, + 24614 - 11904: 0xCC7B, + 24615 - 11904: 0xA9CA, + 24616 - 11904: 0xABE8, + 24617 - 11904: 0xA9CB, + 24618 - 11904: 0xA9C7, + 24619 - 11904: 0xA9CC, + 24620 - 11904: 0xCCA7, + 24621 - 11904: 0xCC7A, + 24622 - 11904: 0xCCAB, + 24623 - 11904: 0xA9C4, + 24625 - 11904: 0xFC61, + 24626 - 11904: 0xCC7D, + 24627 - 11904: 0xCCA4, + 24628 - 11904: 0xCCA1, + 24629 - 11904: 0xA9C5, + 24631 - 11904: 0xCEBF, + 24633 - 11904: 0xCEC0, + 24635 - 11904: 0x8966, + 24640 - 11904: 0xCECA, + 24641 - 11904: 0xD1A1, + 24642 - 11904: 0xCECB, + 24643 - 11904: 0xABEE, + 24644 - 11904: 0xCECE, + 24645 - 11904: 0xCEC4, + 24646 - 11904: 0xABED, + 24647 - 11904: 0xCEC6, + 24649 - 11904: 0xCEC7, + 24650 - 11904: 0xFACB, + 24652 - 11904: 0xCEC9, + 24653 - 11904: 0xABE9, + 24656 - 11904: 0xAEA3, + 24658 - 11904: 0xF9DA, + 24659 - 11904: 0xCEC5, + 24660 - 11904: 0xCEC1, + 24661 - 11904: 0xAEA4, + 24664 - 11904: 0xCECF, + 24665 - 11904: 0xAE7E, + 24666 - 11904: 0xD17D, + 24667 - 11904: 0xCEC8, + 24669 - 11904: 0xD17C, + 24670 - 11904: 0xCEC3, + 24671 - 11904: 0xCECC, + 24674 - 11904: 0xABEC, + 24675 - 11904: 0xAEA1, + 24676 - 11904: 0xABF2, + 24677 - 11904: 0xAEA2, + 24678 - 11904: 0xCED0, + 24679 - 11904: 0xD17E, + 24680 - 11904: 0xABEB, + 24681 - 11904: 0xAEA6, + 24682 - 11904: 0xABF1, + 24683 - 11904: 0xABF0, + 24684 - 11904: 0xABEF, + 24685 - 11904: 0xAEA5, + 24686 - 11904: 0xCED1, + 24687 - 11904: 0xAEA7, + 24688 - 11904: 0xABEA, + 24690 - 11904: 0xCEC2, + 24693 - 11904: 0x937A, + 24695 - 11904: 0xA0E0, + 24702 - 11904: 0x936B, + 24703 - 11904: 0xB176, + 24704 - 11904: 0xD1A4, + 24705 - 11904: 0xD1A6, + 24707 - 11904: 0xD1A8, + 24708 - 11904: 0xAEA8, + 24709 - 11904: 0xAEAE, + 24710 - 11904: 0xD553, + 24711 - 11904: 0xD1AC, + 24712 - 11904: 0xD1A3, + 24713 - 11904: 0xB178, + 24714 - 11904: 0xD551, + 24716 - 11904: 0xAEAD, + 24717 - 11904: 0xAEAB, + 24718 - 11904: 0xD1AE, + 24720 - 11904: 0xD552, + 24722 - 11904: 0xD1A5, + 24724 - 11904: 0xAEAC, + 24725 - 11904: 0xD1A9, + 24726 - 11904: 0xAEAF, + 24727 - 11904: 0xD1AB, + 24730 - 11904: 0xAEAA, + 24731 - 11904: 0xD1AA, + 24732 - 11904: 0xD1AD, + 24733 - 11904: 0xD1A7, + 24734 - 11904: 0xFC6B, + 24735 - 11904: 0xAEA9, + 24736 - 11904: 0xB179, + 24738 - 11904: 0xD1A2, + 24739 - 11904: 0xB177, + 24740 - 11904: 0xFC6C, + 24743 - 11904: 0x9468, + 24744 - 11904: 0xB17A, + 24752 - 11904: 0xD555, + 24753 - 11904: 0xD55E, + 24754 - 11904: 0xB464, + 24755 - 11904: 0xFC6D, + 24756 - 11904: 0xB17C, + 24757 - 11904: 0xB1A3, + 24758 - 11904: 0xB465, + 24759 - 11904: 0xD560, + 24760 - 11904: 0xB1AA, + 24761 - 11904: 0xD8F9, + 24762 - 11904: 0xD556, + 24763 - 11904: 0xB1A2, + 24764 - 11904: 0xB1A5, + 24765 - 11904: 0xB17E, + 24766 - 11904: 0xD554, + 24767 - 11904: 0xD562, + 24768 - 11904: 0xD565, + 24769 - 11904: 0xD949, + 24771 - 11904: 0xD563, + 24772 - 11904: 0xD8FD, + 24773 - 11904: 0xB1A1, + 24774 - 11904: 0xB1A8, + 24775 - 11904: 0xB1AC, + 24776 - 11904: 0xD55D, + 24777 - 11904: 0xD8F8, + 24778 - 11904: 0xD561, + 24779 - 11904: 0xB17B, + 24780 - 11904: 0xD8FA, + 24781 - 11904: 0xD564, + 24782 - 11904: 0xD8FC, + 24783 - 11904: 0xD559, + 24785 - 11904: 0xB462, + 24787 - 11904: 0xD557, + 24788 - 11904: 0xD558, + 24789 - 11904: 0xB1A7, + 24791 - 11904: 0x8D71, + 24792 - 11904: 0xB1A6, + 24793 - 11904: 0xD55B, + 24794 - 11904: 0xB1AB, + 24795 - 11904: 0xD55F, + 24796 - 11904: 0xB1A4, + 24797 - 11904: 0xD55C, + 24798 - 11904: 0xFD64, + 24799 - 11904: 0xB1A9, + 24800 - 11904: 0xB466, + 24801 - 11904: 0xB463, + 24802 - 11904: 0xD8FB, + 24803 - 11904: 0x99BA, + 24804 - 11904: 0xD55A, + 24806 - 11904: 0xB17D, + 24807 - 11904: 0x9AD0, + 24808 - 11904: 0x9A61, + 24809 - 11904: 0xA0E5, + 24816 - 11904: 0xB46B, + 24817 - 11904: 0xB46F, + 24818 - 11904: 0xD940, + 24819 - 11904: 0xB751, + 24820 - 11904: 0xB46D, + 24821 - 11904: 0xD944, + 24822 - 11904: 0xB471, + 24823 - 11904: 0xDD65, + 24824 - 11904: 0xD946, + 24825 - 11904: 0xB753, + 24826 - 11904: 0xB469, + 24827 - 11904: 0xB46C, + 24828 - 11904: 0xD947, + 24829 - 11904: 0xA05B, + 24830 - 11904: 0xD948, + 24831 - 11904: 0xD94E, + 24832 - 11904: 0xB473, + 24833 - 11904: 0xB754, + 24835 - 11904: 0xD94A, + 24836 - 11904: 0xD94F, + 24837 - 11904: 0xD943, + 24838 - 11904: 0xB75E, + 24839 - 11904: 0x96AC, + 24840 - 11904: 0xB755, + 24841 - 11904: 0xB472, + 24842 - 11904: 0xD941, + 24843 - 11904: 0xD950, + 24844 - 11904: 0x9740, + 24845 - 11904: 0xB75D, + 24846 - 11904: 0xB470, + 24847 - 11904: 0xB74E, + 24848 - 11904: 0xD94D, + 24850 - 11904: 0xB474, + 24851 - 11904: 0xD945, + 24852 - 11904: 0xD8FE, + 24853 - 11904: 0xB46A, + 24854 - 11904: 0xD942, + 24856 - 11904: 0xD94B, + 24857 - 11904: 0x9EF1, + 24858 - 11904: 0xB74D, + 24859 - 11904: 0xB752, + 24860 - 11904: 0xB467, + 24861 - 11904: 0xD94C, + 24863 - 11904: 0xB750, + 24866 - 11904: 0x8C4D, + 24867 - 11904: 0xB468, + 24871 - 11904: 0xB75C, + 24872 - 11904: 0xE1C3, + 24873 - 11904: 0xDD70, + 24875 - 11904: 0xDD68, + 24876 - 11904: 0xE1C2, + 24878 - 11904: 0xDD6C, + 24879 - 11904: 0xDD6E, + 24880 - 11904: 0x9F7E, + 24882 - 11904: 0xDD6B, + 24884 - 11904: 0xB75B, + 24886 - 11904: 0xDD6A, + 24887 - 11904: 0xB75F, + 24891 - 11904: 0xE1D2, + 24893 - 11904: 0x8D72, + 24894 - 11904: 0xB75A, + 24895 - 11904: 0xBA40, + 24896 - 11904: 0xDD71, + 24897 - 11904: 0xE1C4, + 24898 - 11904: 0xFC76, + 24900 - 11904: 0xB758, + 24901 - 11904: 0xDD69, + 24902 - 11904: 0xDD6D, + 24903 - 11904: 0xB9FE, + 24904 - 11904: 0xB74F, + 24905 - 11904: 0xDD66, + 24906 - 11904: 0xDD67, + 24907 - 11904: 0xBA41, + 24908 - 11904: 0xB757, + 24909 - 11904: 0xB759, + 24910 - 11904: 0xB756, + 24911 - 11904: 0xDD6F, + 24912 - 11904: 0x96A9, + 24914 - 11904: 0xE1C8, + 24915 - 11904: 0xE1C9, + 24916 - 11904: 0xE1CE, + 24917 - 11904: 0xBC7D, + 24918 - 11904: 0xE1D5, + 24920 - 11904: 0xBA47, + 24921 - 11904: 0xA06E, + 24922 - 11904: 0xBA46, + 24923 - 11904: 0xE1D0, + 24924 - 11904: 0xFCAA, + 24925 - 11904: 0xBC7C, + 24926 - 11904: 0xE1C5, + 24927 - 11904: 0xBA45, + 24928 - 11904: 0xFBCD, + 24929 - 11904: 0xE1D4, + 24930 - 11904: 0xBA43, + 24931 - 11904: 0xBA44, + 24932 - 11904: 0xFC74, + 24933 - 11904: 0xE1D1, + 24934 - 11904: 0xE5AA, + 24935 - 11904: 0xBC7A, + 24936 - 11904: 0xB46E, + 24938 - 11904: 0xE1D3, + 24939 - 11904: 0xBCA3, + 24940 - 11904: 0xE1CB, + 24942 - 11904: 0xBC7B, + 24943 - 11904: 0xA074, + 24944 - 11904: 0xBCA2, + 24945 - 11904: 0xE1C6, + 24946 - 11904: 0xE1CA, + 24947 - 11904: 0xE1C7, + 24948 - 11904: 0xE1CD, + 24949 - 11904: 0xBA48, + 24950 - 11904: 0xBC79, + 24951 - 11904: 0xBA42, + 24953 - 11904: 0xE57A, + 24954 - 11904: 0xE1CF, + 24956 - 11904: 0xBCA1, + 24957 - 11904: 0xA071, + 24958 - 11904: 0xBCA4, + 24960 - 11904: 0xE1CC, + 24961 - 11904: 0xFC79, + 24962 - 11904: 0xBC7E, + 24963 - 11904: 0xE579, + 24967 - 11904: 0xFC7C, + 24969 - 11904: 0xE57E, + 24970 - 11904: 0xBECE, + 24971 - 11904: 0xE578, + 24972 - 11904: 0xE9A3, + 24973 - 11904: 0xE5A9, + 24974 - 11904: 0xBCA8, + 24976 - 11904: 0xBCA6, + 24977 - 11904: 0xBECC, + 24978 - 11904: 0xE5A6, + 24979 - 11904: 0xE5A2, + 24980 - 11904: 0xBCAC, + 24981 - 11904: 0x9C50, + 24982 - 11904: 0xE978, + 24984 - 11904: 0x9379, + 24985 - 11904: 0x9378, + 24986 - 11904: 0xBCAA, + 24987 - 11904: 0xE5A1, + 24988 - 11904: 0xA0DD, + 24989 - 11904: 0xE976, + 24991 - 11904: 0xE5A5, + 24993 - 11904: 0xE5A8, + 24994 - 11904: 0xE57D, + 24996 - 11904: 0xBCAB, + 24999 - 11904: 0xBCA5, + 25000 - 11904: 0xE977, + 25001 - 11904: 0xBECD, + 25002 - 11904: 0xE5A7, + 25003 - 11904: 0xBCA7, + 25004 - 11904: 0xBCA9, + 25005 - 11904: 0xE5A4, + 25006 - 11904: 0xBCAD, + 25007 - 11904: 0xE5A3, + 25008 - 11904: 0xE57C, + 25009 - 11904: 0xE57B, + 25010 - 11904: 0xBECB, + 25011 - 11904: 0xE5AB, + 25012 - 11904: 0xE97A, + 25013 - 11904: 0xECE0, + 25014 - 11904: 0xBED0, + 25015 - 11904: 0x8D75, + 25016 - 11904: 0xE9A2, + 25017 - 11904: 0x8D76, + 25018 - 11904: 0xE97E, + 25020 - 11904: 0xECE1, + 25022 - 11904: 0xBED1, + 25023 - 11904: 0xE9A1, + 25024 - 11904: 0x9374, + 25025 - 11904: 0xE97C, + 25026 - 11904: 0xC0B4, + 25027 - 11904: 0xECDF, + 25029 - 11904: 0xE979, + 25030 - 11904: 0xE97B, + 25031 - 11904: 0xC0B5, + 25032 - 11904: 0xBED3, + 25033 - 11904: 0xC0B3, + 25034 - 11904: 0xBED2, + 25035 - 11904: 0xC0B7, + 25036 - 11904: 0xE97D, + 25037 - 11904: 0xBECF, + 25039 - 11904: 0x8D77, + 25040 - 11904: 0xFCA5, + 25043 - 11904: 0xFCA2, + 25046 - 11904: 0xEFCF, + 25048 - 11904: 0xEFC7, + 25050 - 11904: 0x90C3, + 25054 - 11904: 0xECE7, + 25055 - 11904: 0xEFC8, + 25056 - 11904: 0xECE3, + 25058 - 11904: 0xA079, + 25059 - 11904: 0xC256, + 25060 - 11904: 0xECE5, + 25061 - 11904: 0xECE4, + 25062 - 11904: 0xC0B6, + 25063 - 11904: 0xECE2, + 25064 - 11904: 0xECE6, + 25065 - 11904: 0xEFD0, + 25066 - 11904: 0xEFCC, + 25067 - 11904: 0xEFCE, + 25069 - 11904: 0xEFC9, + 25070 - 11904: 0xEFCA, + 25072 - 11904: 0xEFCD, + 25073 - 11904: 0xEFCB, + 25074 - 11904: 0xC367, + 25077 - 11904: 0xC36A, + 25078 - 11904: 0xC369, + 25079 - 11904: 0xC368, + 25080 - 11904: 0xC461, + 25081 - 11904: 0xF44A, + 25082 - 11904: 0xC462, + 25083 - 11904: 0xF241, + 25084 - 11904: 0xC4DF, + 25085 - 11904: 0xF5CC, + 25086 - 11904: 0xC4E0, + 25087 - 11904: 0xC574, + 25088 - 11904: 0xC5CA, + 25089 - 11904: 0xF7D9, + 25091 - 11904: 0xF7DA, + 25092 - 11904: 0xF7DB, + 25095 - 11904: 0xF9BA, + 25096 - 11904: 0xA4E0, + 25097 - 11904: 0xC97C, + 25098 - 11904: 0xA5B3, + 25100 - 11904: 0xA6A6, + 25101 - 11904: 0xA6A7, + 25102 - 11904: 0xA6A5, + 25104 - 11904: 0xA6A8, + 25105 - 11904: 0xA7DA, + 25106 - 11904: 0xA7D9, + 25108 - 11904: 0xCCB1, + 25109 - 11904: 0xA9CF, + 25110 - 11904: 0xA9CE, + 25113 - 11904: 0xD1AF, + 25114 - 11904: 0xB1AD, + 25115 - 11904: 0xB1AE, + 25119 - 11904: 0xB475, + 25120 - 11904: 0xDD72, + 25121 - 11904: 0xB760, + 25122 - 11904: 0xB761, + 25123 - 11904: 0xDD74, + 25124 - 11904: 0xDD76, + 25125 - 11904: 0xDD75, + 25127 - 11904: 0xE1D7, + 25129 - 11904: 0xE1D6, + 25130 - 11904: 0xBA49, + 25131 - 11904: 0xE1D8, + 25132 - 11904: 0x8D79, + 25133 - 11904: 0xE5AC, + 25134 - 11904: 0xBCAE, + 25136 - 11904: 0xBED4, + 25138 - 11904: 0xC0B8, + 25139 - 11904: 0xC257, + 25140 - 11904: 0xC0B9, + 25142 - 11904: 0xA4E1, + 25143 - 11904: 0x8BFC, + 25145 - 11904: 0xA076, + 25146 - 11904: 0xCAE6, + 25149 - 11904: 0xCCB2, + 25150 - 11904: 0xA9D1, + 25151 - 11904: 0xA9D0, + 25152 - 11904: 0xA9D2, + 25153 - 11904: 0xABF3, + 25154 - 11904: 0xCED2, + 25155 - 11904: 0xCED3, + 25158 - 11904: 0xD1B0, + 25159 - 11904: 0xAEB0, + 25160 - 11904: 0xB1AF, + 25161 - 11904: 0xB476, + 25162 - 11904: 0xD951, + 25163 - 11904: 0xA4E2, + 25164 - 11904: 0x8BCD, + 25165 - 11904: 0xA47E, + 25166 - 11904: 0xA4E3, + 25168 - 11904: 0xC97D, + 25169 - 11904: 0xA5B7, + 25170 - 11904: 0xA5B6, + 25171 - 11904: 0xA5B4, + 25172 - 11904: 0xA5B5, + 25176 - 11904: 0xA6AB, + 25177 - 11904: 0xC9E9, + 25178 - 11904: 0xC9EB, + 25179 - 11904: 0xA6AA, + 25180 - 11904: 0xC9E3, + 25182 - 11904: 0xC9E4, + 25184 - 11904: 0xC9EA, + 25185 - 11904: 0xC9E6, + 25186 - 11904: 0xC9E8, + 25187 - 11904: 0xA6A9, + 25188 - 11904: 0xC9E5, + 25189 - 11904: 0xC9EC, + 25190 - 11904: 0xC9E7, + 25192 - 11904: 0x9F5A, + 25197 - 11904: 0xA7E1, + 25198 - 11904: 0xA7EA, + 25199 - 11904: 0xA7E8, + 25200 - 11904: 0xCAF0, + 25201 - 11904: 0xCAED, + 25202 - 11904: 0xCAF5, + 25203 - 11904: 0xA7E6, + 25204 - 11904: 0xCAF6, + 25206 - 11904: 0xA7DF, + 25207 - 11904: 0xCAF3, + 25209 - 11904: 0xA7E5, + 25210 - 11904: 0xCAEF, + 25211 - 11904: 0xCAEE, + 25212 - 11904: 0xA7E3, + 25213 - 11904: 0xCAF4, + 25214 - 11904: 0xA7E4, + 25215 - 11904: 0xA9D3, + 25216 - 11904: 0xA7DE, + 25217 - 11904: 0xCAF1, + 25218 - 11904: 0x9FF4, + 25219 - 11904: 0xCAE7, + 25220 - 11904: 0xA7DB, + 25221 - 11904: 0x9FBA, + 25222 - 11904: 0xA7EE, + 25223 - 11904: 0xCAEC, + 25224 - 11904: 0xCAF2, + 25225 - 11904: 0xA7E0, + 25226 - 11904: 0xA7E2, + 25228 - 11904: 0xCAE8, + 25230 - 11904: 0xCAE9, + 25231 - 11904: 0xCAEA, + 25232 - 11904: 0x8D7A, + 25233 - 11904: 0xA7ED, + 25234 - 11904: 0xA7E7, + 25235 - 11904: 0xA7EC, + 25236 - 11904: 0xCAEB, + 25237 - 11904: 0xA7EB, + 25238 - 11904: 0xA7DD, + 25239 - 11904: 0xA7DC, + 25240 - 11904: 0xA7E9, + 25245 - 11904: 0x9E45, + 25252 - 11904: 0x93B0, + 25254 - 11904: 0xA075, + 25256 - 11904: 0xA9E1, + 25257 - 11904: 0xCCBE, + 25258 - 11904: 0xCCB7, + 25259 - 11904: 0xA9DC, + 25260 - 11904: 0xA9EF, + 25261 - 11904: 0xCCB3, + 25262 - 11904: 0xCCBA, + 25263 - 11904: 0xCCBC, + 25264 - 11904: 0xCCBF, + 25265 - 11904: 0xA9EA, + 25267 - 11904: 0xCCBB, + 25268 - 11904: 0xCCB4, + 25269 - 11904: 0xA9E8, + 25270 - 11904: 0xCCB8, + 25272 - 11904: 0xCCC0, + 25273 - 11904: 0xA9D9, + 25275 - 11904: 0xCCBD, + 25276 - 11904: 0xA9E3, + 25277 - 11904: 0xA9E2, + 25278 - 11904: 0xCCB6, + 25279 - 11904: 0xA9D7, + 25281 - 11904: 0x87DD, + 25282 - 11904: 0xA9D8, + 25283 - 11904: 0x9B46, + 25284 - 11904: 0xA9D6, + 25285 - 11904: 0xFCAE, + 25286 - 11904: 0xA9EE, + 25287 - 11904: 0xA9E6, + 25288 - 11904: 0xA9E0, + 25289 - 11904: 0xA9D4, + 25290 - 11904: 0xCCB9, + 25291 - 11904: 0xA9DF, + 25292 - 11904: 0xA9D5, + 25293 - 11904: 0xA9E7, + 25294 - 11904: 0xA9F0, + 25295 - 11904: 0xCED4, + 25296 - 11904: 0xA9E4, + 25297 - 11904: 0xCCB5, + 25298 - 11904: 0xA9DA, + 25299 - 11904: 0xA9DD, + 25300 - 11904: 0xA9DE, + 25301 - 11904: 0xFCB0, + 25302 - 11904: 0xA9EC, + 25303 - 11904: 0xA9ED, + 25304 - 11904: 0xA9EB, + 25305 - 11904: 0xA9E5, + 25306 - 11904: 0xA9E9, + 25307 - 11904: 0xA9DB, + 25308 - 11904: 0xABF4, + 25311 - 11904: 0xFA51, + 25317 - 11904: 0x8D7B, + 25323 - 11904: 0xCEDA, + 25324 - 11904: 0xAC41, + 25325 - 11904: 0xABF8, + 25326 - 11904: 0xABFA, + 25327 - 11904: 0xAC40, + 25328 - 11904: 0xCEE6, + 25329 - 11904: 0xABFD, + 25330 - 11904: 0xD1B1, + 25331 - 11904: 0xAEB1, + 25332 - 11904: 0xAC43, + 25333 - 11904: 0xCED7, + 25334 - 11904: 0xCEDF, + 25335 - 11904: 0xABFE, + 25336 - 11904: 0xCEDE, + 25337 - 11904: 0xCEDB, + 25338 - 11904: 0xCEE3, + 25339 - 11904: 0xCEE5, + 25340 - 11904: 0xABF7, + 25341 - 11904: 0xABFB, + 25342 - 11904: 0xAC42, + 25343 - 11904: 0xAEB3, + 25344 - 11904: 0xCEE0, + 25345 - 11904: 0xABF9, + 25346 - 11904: 0xAC45, + 25347 - 11904: 0xCED9, + 25351 - 11904: 0xABFC, + 25352 - 11904: 0xAEB2, + 25353 - 11904: 0xABF6, + 25355 - 11904: 0xCED6, + 25356 - 11904: 0xCEDD, + 25357 - 11904: 0xCED5, + 25358 - 11904: 0xCED8, + 25359 - 11904: 0xCEDC, + 25360 - 11904: 0xD1B2, + 25361 - 11904: 0xAC44, + 25363 - 11904: 0xCEE1, + 25364 - 11904: 0xCEE2, + 25365 - 11904: 0xCEE4, + 25366 - 11904: 0xABF5, + 25368 - 11904: 0x8D7C, + 25384 - 11904: 0xAEC1, + 25385 - 11904: 0xD1BE, + 25386 - 11904: 0xAEBF, + 25387 - 11904: 0xAEC0, + 25388 - 11904: 0xD1B4, + 25389 - 11904: 0xD1C4, + 25390 - 11904: 0x9ED6, + 25391 - 11904: 0xAEB6, + 25393 - 11904: 0x93AC, + 25394 - 11904: 0xD566, + 25395 - 11904: 0xD1C6, + 25396 - 11904: 0xD1C0, + 25397 - 11904: 0x9F5B, + 25398 - 11904: 0xD1B7, + 25399 - 11904: 0x93A9, + 25400 - 11904: 0xD1C9, + 25401 - 11904: 0xD1BA, + 25402 - 11904: 0xAEBC, + 25403 - 11904: 0xD57D, + 25404 - 11904: 0xD1BD, + 25405 - 11904: 0xAEBE, + 25406 - 11904: 0xAEB5, + 25408 - 11904: 0xD1CB, + 25409 - 11904: 0xD1BF, + 25410 - 11904: 0xAEB8, + 25411 - 11904: 0xD1B8, + 25412 - 11904: 0xD1B5, + 25413 - 11904: 0xD1B6, + 25414 - 11904: 0xAEB9, + 25415 - 11904: 0xD1C5, + 25416 - 11904: 0xD1CC, + 25417 - 11904: 0xAEBB, + 25418 - 11904: 0xD1BC, + 25419 - 11904: 0xD1BB, + 25420 - 11904: 0xAEC3, + 25421 - 11904: 0xAEC2, + 25422 - 11904: 0xAEB4, + 25423 - 11904: 0xAEBA, + 25424 - 11904: 0xAEBD, + 25425 - 11904: 0xD1C8, + 25428 - 11904: 0xD1C2, + 25429 - 11904: 0xAEB7, + 25430 - 11904: 0xD1B3, + 25431 - 11904: 0xD1CA, + 25432 - 11904: 0xD1C1, + 25433 - 11904: 0xD1C3, + 25434 - 11904: 0xD1C7, + 25444 - 11904: 0xA07C, + 25445 - 11904: 0xD567, + 25447 - 11904: 0xB1B7, + 25448 - 11904: 0xB1CB, + 25449 - 11904: 0xB1CA, + 25451 - 11904: 0xB1BF, + 25452 - 11904: 0xFCB2, + 25453 - 11904: 0xD579, + 25454 - 11904: 0xD575, + 25455 - 11904: 0xD572, + 25456 - 11904: 0xD5A6, + 25457 - 11904: 0xB1BA, + 25458 - 11904: 0xB1B2, + 25461 - 11904: 0xD577, + 25462 - 11904: 0xB4A8, + 25463 - 11904: 0xB1B6, + 25464 - 11904: 0xD5A1, + 25465 - 11904: 0x8AC1, + 25466 - 11904: 0xB1CC, + 25467 - 11904: 0xB1C9, + 25468 - 11904: 0xD57B, + 25469 - 11904: 0xD56A, + 25471 - 11904: 0x9FB4, + 25472 - 11904: 0xB1C8, + 25473 - 11904: 0xD5A3, + 25474 - 11904: 0xD569, + 25475 - 11904: 0xB1BD, + 25476 - 11904: 0xB1C1, + 25477 - 11904: 0xD5A2, + 25479 - 11904: 0xD573, + 25480 - 11904: 0xB1C2, + 25481 - 11904: 0xB1BC, + 25482 - 11904: 0xD568, + 25483 - 11904: 0xFCAC, + 25484 - 11904: 0xB478, + 25485 - 11904: 0xD5A5, + 25486 - 11904: 0xD571, + 25487 - 11904: 0xB1C7, + 25488 - 11904: 0xD574, + 25489 - 11904: 0xD5A4, + 25490 - 11904: 0xB1C6, + 25492 - 11904: 0xD952, + 25494 - 11904: 0xB1B3, + 25495 - 11904: 0xD56F, + 25496 - 11904: 0xB1B8, + 25497 - 11904: 0xB1C3, + 25499 - 11904: 0xB1BE, + 25500 - 11904: 0xD578, + 25501 - 11904: 0xD56E, + 25502 - 11904: 0xD56C, + 25503 - 11904: 0xD57E, + 25504 - 11904: 0xB1B0, + 25505 - 11904: 0xB1C4, + 25506 - 11904: 0xB1B4, + 25507 - 11904: 0xB477, + 25508 - 11904: 0xD57C, + 25509 - 11904: 0xB1B5, + 25511 - 11904: 0xB1B1, + 25512 - 11904: 0xB1C0, + 25513 - 11904: 0xB1BB, + 25514 - 11904: 0xB1B9, + 25515 - 11904: 0xD570, + 25516 - 11904: 0xB1C5, + 25517 - 11904: 0xD56D, + 25518 - 11904: 0xD57A, + 25519 - 11904: 0xD576, + 25520 - 11904: 0xD954, + 25521 - 11904: 0xD953, + 25529 - 11904: 0x9E4C, + 25533 - 11904: 0xD56B, + 25534 - 11904: 0xD964, + 25536 - 11904: 0xB47A, + 25537 - 11904: 0x8FC5, + 25538 - 11904: 0xD96A, + 25539 - 11904: 0xD959, + 25540 - 11904: 0xD967, + 25541 - 11904: 0xDD77, + 25542 - 11904: 0xB47D, + 25543 - 11904: 0xD96B, + 25544 - 11904: 0xD96E, + 25545 - 11904: 0xB47C, + 25546 - 11904: 0xD95C, + 25547 - 11904: 0xD96D, + 25548 - 11904: 0xD96C, + 25549 - 11904: 0xB47E, + 25550 - 11904: 0xD955, + 25551 - 11904: 0xB479, + 25552 - 11904: 0xB4A3, + 25553 - 11904: 0x93AD, + 25554 - 11904: 0xB4A1, + 25555 - 11904: 0xD969, + 25557 - 11904: 0xD95F, + 25558 - 11904: 0xB4A5, + 25559 - 11904: 0xD970, + 25560 - 11904: 0xD968, + 25561 - 11904: 0xD971, + 25562 - 11904: 0xB4AD, + 25563 - 11904: 0xB4AB, + 25564 - 11904: 0xD966, + 25565 - 11904: 0xD965, + 25566 - 11904: 0x9DC3, + 25567 - 11904: 0xD963, + 25568 - 11904: 0xD95D, + 25569 - 11904: 0xB4A4, + 25570 - 11904: 0x8DA2, + 25571 - 11904: 0xB4A2, + 25572 - 11904: 0xD1B9, + 25573 - 11904: 0xD956, + 25574 - 11904: 0x9D4A, + 25575 - 11904: 0xDDB7, + 25576 - 11904: 0xD957, + 25577 - 11904: 0xB47B, + 25578 - 11904: 0xB4AA, + 25579 - 11904: 0xDD79, + 25581 - 11904: 0xB4A6, + 25582 - 11904: 0xB4A7, + 25583 - 11904: 0xD958, + 25584 - 11904: 0xD96F, + 25585 - 11904: 0xDD78, + 25586 - 11904: 0xD960, + 25587 - 11904: 0xD95B, + 25588 - 11904: 0xB4A9, + 25589 - 11904: 0xD961, + 25590 - 11904: 0xD95E, + 25592 - 11904: 0xFCB6, + 25593 - 11904: 0xB4AE, + 25595 - 11904: 0x8DA3, + 25596 - 11904: 0x9E4B, + 25598 - 11904: 0x9E4D, + 25606 - 11904: 0xB770, + 25607 - 11904: 0x8DA4, + 25609 - 11904: 0xDD7C, + 25610 - 11904: 0xDDB1, + 25611 - 11904: 0xDDB6, + 25612 - 11904: 0xDDAA, + 25613 - 11904: 0xB76C, + 25614 - 11904: 0xDDBB, + 25615 - 11904: 0xB769, + 25616 - 11904: 0xDD7A, + 25618 - 11904: 0xDD7B, + 25619 - 11904: 0xB762, + 25620 - 11904: 0xB76B, + 25621 - 11904: 0xDDA4, + 25622 - 11904: 0xB76E, + 25623 - 11904: 0xB76F, + 25624 - 11904: 0xDDA5, + 25626 - 11904: 0xDDB2, + 25627 - 11904: 0xDDB8, + 25628 - 11904: 0xB76A, + 25630 - 11904: 0xB764, + 25631 - 11904: 0xDDA3, + 25632 - 11904: 0xDD7D, + 25633 - 11904: 0xDDBA, + 25634 - 11904: 0xDDA8, + 25635 - 11904: 0xDDA9, + 25636 - 11904: 0xDD7E, + 25637 - 11904: 0xDDB4, + 25638 - 11904: 0xDDAB, + 25639 - 11904: 0xDDB5, + 25640 - 11904: 0xDDAD, + 25642 - 11904: 0xB765, + 25643 - 11904: 0xE1D9, + 25644 - 11904: 0xB768, + 25645 - 11904: 0xB766, + 25646 - 11904: 0xDDB9, + 25647 - 11904: 0xDDB0, + 25648 - 11904: 0xDDAC, + 25650 - 11904: 0x8AFD, + 25651 - 11904: 0xDDA1, + 25652 - 11904: 0xBA53, + 25653 - 11904: 0xDDAF, + 25654 - 11904: 0xB76D, + 25655 - 11904: 0xDDA7, + 25656 - 11904: 0xFCB5, + 25657 - 11904: 0xDDA6, + 25658 - 11904: 0xFCC3, + 25659 - 11904: 0x93B2, + 25661 - 11904: 0xB767, + 25662 - 11904: 0xB763, + 25663 - 11904: 0xE1EE, + 25664 - 11904: 0xDDB3, + 25665 - 11904: 0xDDAE, + 25667 - 11904: 0xDDA2, + 25675 - 11904: 0xE1E9, + 25677 - 11904: 0xE1DA, + 25678 - 11904: 0xE1E5, + 25680 - 11904: 0xE1EC, + 25681 - 11904: 0xBA51, + 25682 - 11904: 0xB4AC, + 25683 - 11904: 0xE1EA, + 25684 - 11904: 0xBA4C, + 25688 - 11904: 0xBA4B, + 25689 - 11904: 0xE1F1, + 25690 - 11904: 0x8DA5, + 25691 - 11904: 0xE1DB, + 25692 - 11904: 0xE1E8, + 25693 - 11904: 0xE1DC, + 25694 - 11904: 0xE1E7, + 25695 - 11904: 0xBA4F, + 25696 - 11904: 0xE1EB, + 25697 - 11904: 0xD962, + 25701 - 11904: 0xE1F2, + 25702 - 11904: 0xE1E3, + 25703 - 11904: 0xBA52, + 25704 - 11904: 0xE5BA, + 25705 - 11904: 0xBCAF, + 25707 - 11904: 0xE1F0, + 25708 - 11904: 0xE1EF, + 25709 - 11904: 0xBA54, + 25710 - 11904: 0xE5AD, + 25711 - 11904: 0xBCB0, + 25712 - 11904: 0xE5AE, + 25713 - 11904: 0x93A1, + 25714 - 11904: 0xE1DF, + 25715 - 11904: 0xE1E0, + 25716 - 11904: 0xE1DD, + 25717 - 11904: 0xE1E2, + 25718 - 11904: 0xE1DE, + 25719 - 11904: 0xE1F3, + 25720 - 11904: 0xBA4E, + 25721 - 11904: 0xBCB1, + 25722 - 11904: 0xBA50, + 25723 - 11904: 0xBA55, + 25724 - 11904: 0x8AC6, + 25725 - 11904: 0xE1E1, + 25727 - 11904: 0xE1ED, + 25730 - 11904: 0xE1E6, + 25733 - 11904: 0xE5B1, + 25735 - 11904: 0xBA4A, + 25736 - 11904: 0xBCB4, + 25737 - 11904: 0xE9AA, + 25738 - 11904: 0xE5B6, + 25739 - 11904: 0xE5B5, + 25740 - 11904: 0xE5B7, + 25741 - 11904: 0x8A5B, + 25743 - 11904: 0xE5B4, + 25744 - 11904: 0xFCB9, + 25745 - 11904: 0x894D, + 25746 - 11904: 0xBCBB, + 25747 - 11904: 0xBCB8, + 25749 - 11904: 0xBCB9, + 25750 - 11904: 0xE5AF, + 25751 - 11904: 0xE5B2, + 25752 - 11904: 0xE5BC, + 25753 - 11904: 0xBCC1, + 25754 - 11904: 0xBCBF, + 25756 - 11904: 0xE5B3, + 25757 - 11904: 0xD95A, + 25758 - 11904: 0xBCB2, + 25759 - 11904: 0xE5B9, + 25760 - 11904: 0xE5B0, + 25762 - 11904: 0xBCC2, + 25763 - 11904: 0xE5B8, + 25764 - 11904: 0xBA4D, + 25765 - 11904: 0xBCB7, + 25766 - 11904: 0xE1E4, + 25769 - 11904: 0xBCBA, + 25771 - 11904: 0xBCBE, + 25772 - 11904: 0xBCC0, + 25773 - 11904: 0xBCBD, + 25774 - 11904: 0xBCBC, + 25775 - 11904: 0xFED4, + 25776 - 11904: 0xBCB6, + 25777 - 11904: 0xE5BB, + 25778 - 11904: 0xBCB3, + 25779 - 11904: 0xBCC3, + 25780 - 11904: 0x8A78, + 25782 - 11904: 0x93AB, + 25787 - 11904: 0xBED8, + 25788 - 11904: 0xBED9, + 25789 - 11904: 0xE9A9, + 25790 - 11904: 0xBEE2, + 25791 - 11904: 0xBEDF, + 25792 - 11904: 0x8DA7, + 25793 - 11904: 0xBED6, + 25794 - 11904: 0xBEDD, + 25795 - 11904: 0xE9AB, + 25796 - 11904: 0xBEDB, + 25797 - 11904: 0xBED5, + 25799 - 11904: 0xBEDC, + 25801 - 11904: 0xE9A8, + 25802 - 11904: 0xC0BB, + 25803 - 11904: 0xBED7, + 25805 - 11904: 0xBEDE, + 25806 - 11904: 0xC0BA, + 25807 - 11904: 0xE9A7, + 25808 - 11904: 0xE9A6, + 25810 - 11904: 0xBEE0, + 25811 - 11904: 0x9F45, + 25812 - 11904: 0xBEE1, + 25814 - 11904: 0xE9A5, + 25815 - 11904: 0xE9A4, + 25816 - 11904: 0xC0BC, + 25817 - 11904: 0xE9AE, + 25818 - 11904: 0xBEDA, + 25819 - 11904: 0xE9AC, + 25821 - 11904: 0x8A56, + 25824 - 11904: 0xC0BD, + 25825 - 11904: 0xFCBF, + 25826 - 11904: 0xC0C2, + 25827 - 11904: 0xECEA, + 25828 - 11904: 0xECEC, + 25829 - 11904: 0xFCC0, + 25830 - 11904: 0xC0BF, + 25831 - 11904: 0x8EE6, + 25832 - 11904: 0xECED, + 25833 - 11904: 0xECE9, + 25834 - 11904: 0x8AA4, + 25835 - 11904: 0xECEB, + 25836 - 11904: 0xC0C0, + 25837 - 11904: 0xC0C3, + 25839 - 11904: 0xECE8, + 25840 - 11904: 0xC0BE, + 25841 - 11904: 0xC0C1, + 25842 - 11904: 0xC259, + 25843 - 11904: 0xE9AD, + 25844 - 11904: 0xC258, + 25847 - 11904: 0xC25E, + 25848 - 11904: 0xEFD4, + 25850 - 11904: 0xC25C, + 25851 - 11904: 0xC25D, + 25852 - 11904: 0xEFD7, + 25853 - 11904: 0xEFD3, + 25854 - 11904: 0xC25A, + 25855 - 11904: 0xEFD1, + 25856 - 11904: 0xC36B, + 25857 - 11904: 0xEFD5, + 25859 - 11904: 0xEFD6, + 25860 - 11904: 0xEFD2, + 25862 - 11904: 0xC25B, + 25863 - 11904: 0xF242, + 25865 - 11904: 0xF245, + 25866 - 11904: 0x8943, + 25868 - 11904: 0xF246, + 25869 - 11904: 0xF244, + 25870 - 11904: 0xF247, + 25871 - 11904: 0xC36C, + 25872 - 11904: 0xF243, + 25873 - 11904: 0x93F3, + 25875 - 11904: 0xF44E, + 25876 - 11904: 0xC464, + 25877 - 11904: 0xF44D, + 25878 - 11904: 0xF44C, + 25879 - 11904: 0xF44B, + 25880 - 11904: 0xC463, + 25881 - 11904: 0xC465, + 25883 - 11904: 0xF5CD, + 25884 - 11904: 0xC4E2, + 25885 - 11904: 0xC4E1, + 25886 - 11904: 0xFCAB, + 25887 - 11904: 0x9EA2, + 25888 - 11904: 0xF6E1, + 25889 - 11904: 0xF6E0, + 25890 - 11904: 0xF6E3, + 25891 - 11904: 0xC5CB, + 25892 - 11904: 0xC575, + 25893 - 11904: 0xF7DD, + 25894 - 11904: 0xF6E2, + 25897 - 11904: 0xF7DC, + 25898 - 11904: 0xC5CD, + 25899 - 11904: 0xC5CC, + 25900 - 11904: 0xC5F3, + 25901 - 11904: 0xF8A9, + 25902 - 11904: 0xF8EF, + 25903 - 11904: 0xA4E4, + 25904 - 11904: 0x9DC7, + 25906 - 11904: 0xD972, + 25907 - 11904: 0xE9AF, + 25908 - 11904: 0xC6D2, + 25909 - 11904: 0x8BCE, + 25910 - 11904: 0xA6AC, + 25911 - 11904: 0xCAF7, + 25912 - 11904: 0xA7F1, + 25913 - 11904: 0xA7EF, + 25915 - 11904: 0xA7F0, + 25917 - 11904: 0xCCC1, + 25918 - 11904: 0xA9F1, + 25919 - 11904: 0xAC46, + 25921 - 11904: 0xCEE7, + 25923 - 11904: 0xCEE8, + 25925 - 11904: 0xAC47, + 25926 - 11904: 0xD1CE, + 25928 - 11904: 0xAEC4, + 25929 - 11904: 0xAEC5, + 25930 - 11904: 0xD1CD, + 25933 - 11904: 0xFCC5, + 25935 - 11904: 0xB1D3, + 25937 - 11904: 0xB1CF, + 25939 - 11904: 0xD5A7, + 25940 - 11904: 0xB1D6, + 25941 - 11904: 0xB1D5, + 25942 - 11904: 0xB1CE, + 25943 - 11904: 0xB1D1, + 25944 - 11904: 0xB1D4, + 25945 - 11904: 0xB1D0, + 25948 - 11904: 0xD976, + 25949 - 11904: 0xB1CD, + 25950 - 11904: 0xB4AF, + 25951 - 11904: 0xFCCB, + 25954 - 11904: 0xB4B1, + 25955 - 11904: 0xB4B2, + 25956 - 11904: 0xD975, + 25957 - 11904: 0xD978, + 25958 - 11904: 0xB4B0, + 25959 - 11904: 0xD973, + 25960 - 11904: 0xD977, + 25962 - 11904: 0xD974, + 25963 - 11904: 0x93B3, + 25964 - 11904: 0xB771, + 25965 - 11904: 0xFCCA, + 25967 - 11904: 0xDDBC, + 25970 - 11904: 0xBA56, + 25971 - 11904: 0xE1F4, + 25972 - 11904: 0xBEE3, + 25973 - 11904: 0xBCC4, + 25974 - 11904: 0xE5BD, + 25975 - 11904: 0xBCC5, + 25976 - 11904: 0xBCC6, + 25977 - 11904: 0xE5BF, + 25978 - 11904: 0xE5BE, + 25979 - 11904: 0xE5C0, + 25980 - 11904: 0xE9B1, + 25983 - 11904: 0xE9B0, + 25984 - 11904: 0xECEF, + 25985 - 11904: 0xECEE, + 25986 - 11904: 0xC0C4, + 25987 - 11904: 0xC0C5, + 25988 - 11904: 0xF248, + 25989 - 11904: 0xFCC9, + 25990 - 11904: 0x8DAC, + 25991 - 11904: 0xA4E5, + 25992 - 11904: 0xFBC6, + 25993 - 11904: 0x8967, + 25995 - 11904: 0x8C7E, + 25996 - 11904: 0xD979, + 26000 - 11904: 0xB4B4, + 26001 - 11904: 0xB4B3, + 26002 - 11904: 0xDDBD, + 26004 - 11904: 0xEFD8, + 26005 - 11904: 0xC4E3, + 26006 - 11904: 0xF7DE, + 26007 - 11904: 0xA4E6, + 26009 - 11904: 0xAEC6, + 26011 - 11904: 0xB1D8, + 26012 - 11904: 0xB1D7, + 26013 - 11904: 0xD97A, + 26014 - 11904: 0xD97B, + 26015 - 11904: 0xB772, + 26016 - 11904: 0xE1F5, + 26017 - 11904: 0xBA57, + 26018 - 11904: 0xE9B2, + 26020 - 11904: 0xA4E7, + 26021 - 11904: 0xA5B8, + 26023 - 11904: 0xA9F2, + 26024 - 11904: 0xCCC2, + 26026 - 11904: 0xCEE9, + 26027 - 11904: 0xAC48, + 26028 - 11904: 0xB1D9, + 26030 - 11904: 0xD97C, + 26031 - 11904: 0xB4B5, + 26032 - 11904: 0xB773, + 26034 - 11904: 0xE5C1, + 26035 - 11904: 0xE5C2, + 26037 - 11904: 0xFCCD, + 26038 - 11904: 0xECF0, + 26039 - 11904: 0xC25F, + 26040 - 11904: 0xF8F0, + 26041 - 11904: 0xA4E8, + 26043 - 11904: 0xCCC3, + 26044 - 11904: 0xA9F3, + 26045 - 11904: 0xAC49, + 26046 - 11904: 0x9CF3, + 26047 - 11904: 0xCEEA, + 26049 - 11904: 0xAEC7, + 26050 - 11904: 0xD1D2, + 26051 - 11904: 0xD1D0, + 26052 - 11904: 0xD1D1, + 26053 - 11904: 0xAEC8, + 26054 - 11904: 0xD1CF, + 26059 - 11904: 0xB1DB, + 26060 - 11904: 0xB1DC, + 26061 - 11904: 0xD5A8, + 26062 - 11904: 0xB1DD, + 26063 - 11904: 0xB1DA, + 26064 - 11904: 0xD97D, + 26065 - 11904: 0xFCD0, + 26066 - 11904: 0xD97E, + 26067 - 11904: 0xDDBE, + 26068 - 11904: 0x95BB, + 26070 - 11904: 0xBA59, + 26071 - 11904: 0xBA58, + 26074 - 11904: 0xECF1, + 26075 - 11904: 0xEFD9, + 26077 - 11904: 0xF24A, + 26078 - 11904: 0xF249, + 26079 - 11904: 0xF44F, + 26080 - 11904: 0xFCD3, + 26081 - 11904: 0xC95E, + 26082 - 11904: 0xAC4A, + 26083 - 11904: 0xFCD4, + 26085 - 11904: 0xA4E9, + 26086 - 11904: 0xA5B9, + 26088 - 11904: 0xA6AE, + 26089 - 11904: 0xA6AD, + 26092 - 11904: 0xA6AF, + 26093 - 11904: 0xA6B0, + 26094 - 11904: 0xC9EE, + 26095 - 11904: 0xC9ED, + 26096 - 11904: 0xCAF8, + 26097 - 11904: 0xA7F2, + 26098 - 11904: 0xCAFB, + 26099 - 11904: 0xCAFA, + 26100 - 11904: 0xCAF9, + 26101 - 11904: 0xCAFC, + 26106 - 11904: 0xA9F4, + 26107 - 11904: 0xCCC9, + 26108 - 11904: 0xCCC5, + 26109 - 11904: 0xCCCE, + 26111 - 11904: 0x8DAE, + 26112 - 11904: 0xA9FB, + 26114 - 11904: 0xA9F9, + 26115 - 11904: 0xCCCA, + 26116 - 11904: 0xCCC6, + 26117 - 11904: 0xCCCD, + 26118 - 11904: 0xA9F8, + 26119 - 11904: 0xAA40, + 26120 - 11904: 0xCCC8, + 26121 - 11904: 0xCCC4, + 26122 - 11904: 0xA9FE, + 26123 - 11904: 0xCCCB, + 26124 - 11904: 0xA9F7, + 26125 - 11904: 0xCCCC, + 26126 - 11904: 0xA9FA, + 26127 - 11904: 0xA9FC, + 26128 - 11904: 0xCCD0, + 26129 - 11904: 0xCCCF, + 26130 - 11904: 0xCCC7, + 26131 - 11904: 0xA9F6, + 26132 - 11904: 0xA9F5, + 26133 - 11904: 0xA9FD, + 26136 - 11904: 0xFCD7, + 26140 - 11904: 0xCEEF, + 26141 - 11904: 0xCEF5, + 26142 - 11904: 0x93DB, + 26143 - 11904: 0xAC50, + 26144 - 11904: 0xAC4D, + 26145 - 11904: 0xCEEC, + 26146 - 11904: 0xCEF1, + 26147 - 11904: 0xFE63, + 26148 - 11904: 0xAC53, + 26149 - 11904: 0xAC4B, + 26150 - 11904: 0xCEF0, + 26151 - 11904: 0xAC4E, + 26152 - 11904: 0xAC51, + 26155 - 11904: 0xCEF3, + 26157 - 11904: 0xAC4C, + 26158 - 11904: 0xCEF8, + 26159 - 11904: 0xAC4F, + 26160 - 11904: 0x93D5, + 26161 - 11904: 0xAC52, + 26162 - 11904: 0xCEED, + 26163 - 11904: 0xCEF2, + 26164 - 11904: 0xCEF6, + 26165 - 11904: 0xCEEE, + 26166 - 11904: 0xCEEB, + 26169 - 11904: 0xCEF7, + 26170 - 11904: 0xCEF4, + 26177 - 11904: 0xAED0, + 26178 - 11904: 0xAEC9, + 26179 - 11904: 0xAECC, + 26180 - 11904: 0xFCDA, + 26181 - 11904: 0xAECF, + 26183 - 11904: 0xD1D5, + 26184 - 11904: 0x9B71, + 26185 - 11904: 0xAECA, + 26186 - 11904: 0xD1D3, + 26187 - 11904: 0xFCDD, + 26188 - 11904: 0xAECE, + 26189 - 11904: 0x8764, + 26191 - 11904: 0xAECB, + 26193 - 11904: 0xD1D6, + 26194 - 11904: 0xAECD, + 26195 - 11904: 0x8DAF, + 26199 - 11904: 0xFAF2, + 26201 - 11904: 0xD5AC, + 26202 - 11904: 0xB1DF, + 26203 - 11904: 0xD5AB, + 26204 - 11904: 0xD5AD, + 26205 - 11904: 0xB1DE, + 26206 - 11904: 0xB1E3, + 26207 - 11904: 0xD1D4, + 26208 - 11904: 0x87B5, + 26209 - 11904: 0xD5AA, + 26210 - 11904: 0xD5AE, + 26211 - 11904: 0x93D8, + 26212 - 11904: 0xB1E0, + 26213 - 11904: 0xD5A9, + 26214 - 11904: 0xB1E2, + 26215 - 11904: 0xFCDF, + 26216 - 11904: 0xB1E1, + 26218 - 11904: 0xD9A7, + 26219 - 11904: 0x93D3, + 26220 - 11904: 0xD9A2, + 26222 - 11904: 0xB4B6, + 26223 - 11904: 0xB4BA, + 26224 - 11904: 0xB4B7, + 26225 - 11904: 0xD9A5, + 26226 - 11904: 0xD9A8, + 26227 - 11904: 0xFCE1, + 26228 - 11904: 0xFCE2, + 26230 - 11904: 0xB4B9, + 26231 - 11904: 0xB4BE, + 26232 - 11904: 0xDDC7, + 26233 - 11904: 0xD9A6, + 26234 - 11904: 0xB4BC, + 26235 - 11904: 0xD9A3, + 26236 - 11904: 0xD9A1, + 26237 - 11904: 0x8E76, + 26238 - 11904: 0xB4BD, + 26240 - 11904: 0xD9A4, + 26244 - 11904: 0xB779, + 26245 - 11904: 0xFC62, + 26246 - 11904: 0xDDBF, + 26247 - 11904: 0xB776, + 26248 - 11904: 0xB777, + 26249 - 11904: 0xB775, + 26250 - 11904: 0xDDC4, + 26251 - 11904: 0xDDC3, + 26252 - 11904: 0xDDC0, + 26253 - 11904: 0xB77B, + 26254 - 11904: 0x93D1, + 26256 - 11904: 0xDDC2, + 26257 - 11904: 0xB4BB, + 26258 - 11904: 0x8DB1, + 26260 - 11904: 0xDDC6, + 26261 - 11904: 0xDDC1, + 26262 - 11904: 0xB778, + 26263 - 11904: 0xB774, + 26264 - 11904: 0xB77A, + 26265 - 11904: 0xDDC5, + 26266 - 11904: 0x9859, + 26269 - 11904: 0xBA5C, + 26271 - 11904: 0xE1F8, + 26272 - 11904: 0xE1F7, + 26273 - 11904: 0xE1F6, + 26274 - 11904: 0xBA5A, + 26276 - 11904: 0xFB52, + 26280 - 11904: 0xBA5B, + 26281 - 11904: 0xE5C5, + 26282 - 11904: 0xE5C8, + 26283 - 11904: 0xBCC8, + 26285 - 11904: 0xFB53, + 26286 - 11904: 0xBCC7, + 26287 - 11904: 0xE5C9, + 26288 - 11904: 0xE5C4, + 26289 - 11904: 0xBCCA, + 26290 - 11904: 0xE5C6, + 26291 - 11904: 0xFB4D, + 26292 - 11904: 0xBCC9, + 26293 - 11904: 0xE5C3, + 26294 - 11904: 0x9CBF, + 26295 - 11904: 0xE5C7, + 26296 - 11904: 0xBEE9, + 26297 - 11904: 0xBEE6, + 26298 - 11904: 0xE9BB, + 26299 - 11904: 0xE9BA, + 26301 - 11904: 0xE9B9, + 26302 - 11904: 0xE9B4, + 26303 - 11904: 0x9B72, + 26304 - 11904: 0xE9B5, + 26308 - 11904: 0xBEE7, + 26310 - 11904: 0xBEE4, + 26311 - 11904: 0xBEE8, + 26312 - 11904: 0xE9B3, + 26313 - 11904: 0xBEE5, + 26314 - 11904: 0xE9B6, + 26315 - 11904: 0xE9B7, + 26316 - 11904: 0xE9BC, + 26317 - 11904: 0xFB50, + 26318 - 11904: 0x93BE, + 26319 - 11904: 0xE9B8, + 26322 - 11904: 0xECF2, + 26326 - 11904: 0xC0C7, + 26328 - 11904: 0xEFDC, + 26329 - 11904: 0xC0C6, + 26330 - 11904: 0xEFDA, + 26331 - 11904: 0xEFDB, + 26332 - 11904: 0xC260, + 26333 - 11904: 0xC36E, + 26334 - 11904: 0xF24B, + 26336 - 11904: 0xC36D, + 26339 - 11904: 0xF451, + 26340 - 11904: 0xF452, + 26342 - 11904: 0xC466, + 26343 - 11904: 0x8CDB, + 26344 - 11904: 0xF450, + 26345 - 11904: 0xC4E4, + 26347 - 11904: 0xF7DF, + 26348 - 11904: 0xC5CE, + 26349 - 11904: 0xF8AA, + 26350 - 11904: 0xF8AB, + 26352 - 11904: 0xA4EA, + 26353 - 11904: 0x9DF1, + 26354 - 11904: 0xA6B1, + 26355 - 11904: 0xA6B2, + 26356 - 11904: 0xA7F3, + 26358 - 11904: 0xCCD1, + 26359 - 11904: 0xAC54, + 26360 - 11904: 0xAED1, + 26361 - 11904: 0xB1E4, + 26364 - 11904: 0xB0D2, + 26366 - 11904: 0xB4BF, + 26367 - 11904: 0xB4C0, + 26368 - 11904: 0xB3CC, + 26369 - 11904: 0xD9A9, + 26370 - 11904: 0xFCEB, + 26371 - 11904: 0xB77C, + 26372 - 11904: 0xE1FA, + 26373 - 11904: 0xE1F9, + 26376 - 11904: 0xA4EB, + 26377 - 11904: 0xA6B3, + 26378 - 11904: 0xCCD2, + 26379 - 11904: 0xAA42, + 26380 - 11904: 0xA0BB, + 26381 - 11904: 0xAA41, + 26382 - 11904: 0x9B7E, + 26383 - 11904: 0xCEF9, + 26384 - 11904: 0xCEFA, + 26386 - 11904: 0xD1D7, + 26387 - 11904: 0xD1D8, + 26388 - 11904: 0xAED2, + 26389 - 11904: 0xAED3, + 26390 - 11904: 0x8DB3, + 26391 - 11904: 0xAED4, + 26392 - 11904: 0xD5AF, + 26393 - 11904: 0x8C52, + 26395 - 11904: 0xB1E6, + 26397 - 11904: 0xB4C2, + 26398 - 11904: 0x9AE8, + 26399 - 11904: 0xB4C1, + 26400 - 11904: 0xDDC8, + 26401 - 11904: 0xDF7A, + 26402 - 11904: 0xE1FB, + 26403 - 11904: 0xE9BD, + 26405 - 11904: 0x8EDC, + 26406 - 11904: 0xC261, + 26407 - 11904: 0xC467, + 26408 - 11904: 0xA4EC, + 26410 - 11904: 0xA5BC, + 26411 - 11904: 0xA5BD, + 26412 - 11904: 0xA5BB, + 26413 - 11904: 0xA5BE, + 26414 - 11904: 0xA5BA, + 26417 - 11904: 0xA6B6, + 26419 - 11904: 0xC9F6, + 26420 - 11904: 0xA6B5, + 26421 - 11904: 0xA6B7, + 26422 - 11904: 0x9CF9, + 26424 - 11904: 0xC9F1, + 26425 - 11904: 0xC9F0, + 26426 - 11904: 0xC9F3, + 26427 - 11904: 0xC9F2, + 26428 - 11904: 0xC9F5, + 26429 - 11904: 0xA6B4, + 26430 - 11904: 0xC9EF, + 26431 - 11904: 0xC9F4, + 26436 - 11904: 0xFA50, + 26437 - 11904: 0xCAFD, + 26438 - 11904: 0xA7FD, + 26439 - 11904: 0xCAFE, + 26440 - 11904: 0xCB43, + 26441 - 11904: 0xA7FC, + 26443 - 11904: 0xCB47, + 26444 - 11904: 0xCB42, + 26445 - 11904: 0xCB45, + 26446 - 11904: 0xA7F5, + 26447 - 11904: 0xA7F6, + 26448 - 11904: 0xA7F7, + 26449 - 11904: 0xA7F8, + 26451 - 11904: 0xA840, + 26453 - 11904: 0xCB41, + 26454 - 11904: 0xA7FA, + 26455 - 11904: 0xA841, + 26457 - 11904: 0xCB40, + 26458 - 11904: 0xCB46, + 26460 - 11904: 0xA7F9, + 26461 - 11904: 0xCB44, + 26462 - 11904: 0xFCF1, + 26463 - 11904: 0xA7F4, + 26464 - 11904: 0xA7FE, + 26465 - 11904: 0x98E7, + 26466 - 11904: 0xFCF3, + 26471 - 11904: 0xFCF2, + 26474 - 11904: 0xAA57, + 26475 - 11904: 0x8CCA, + 26476 - 11904: 0xCCD4, + 26477 - 11904: 0xAA43, + 26478 - 11904: 0x8775, + 26479 - 11904: 0xAA4D, + 26480 - 11904: 0xAA4E, + 26481 - 11904: 0xAA46, + 26482 - 11904: 0xAA58, + 26483 - 11904: 0xAA48, + 26484 - 11904: 0xCCDC, + 26485 - 11904: 0xAA53, + 26486 - 11904: 0xCCD7, + 26487 - 11904: 0xAA49, + 26488 - 11904: 0xCCE6, + 26489 - 11904: 0xCCE7, + 26490 - 11904: 0xCCDF, + 26491 - 11904: 0xCCD8, + 26492 - 11904: 0xAA56, + 26493 - 11904: 0xCCE4, + 26494 - 11904: 0xAA51, + 26495 - 11904: 0xAA4F, + 26497 - 11904: 0xCCE5, + 26498 - 11904: 0x87BA, + 26499 - 11904: 0xCCE3, + 26500 - 11904: 0xCCDB, + 26501 - 11904: 0xCCD3, + 26502 - 11904: 0xCCDA, + 26503 - 11904: 0xAA4A, + 26505 - 11904: 0xAA50, + 26507 - 11904: 0xAA44, + 26508 - 11904: 0xCCDE, + 26509 - 11904: 0xCCDD, + 26510 - 11904: 0xCCD5, + 26511 - 11904: 0x93E5, + 26512 - 11904: 0xAA52, + 26513 - 11904: 0xCCE1, + 26514 - 11904: 0xCCD6, + 26515 - 11904: 0xAA55, + 26516 - 11904: 0xCCE8, + 26517 - 11904: 0xAA45, + 26519 - 11904: 0xAA4C, + 26520 - 11904: 0xCCD9, + 26521 - 11904: 0xCCE2, + 26522 - 11904: 0xAA54, + 26524 - 11904: 0xAA47, + 26525 - 11904: 0xAA4B, + 26527 - 11904: 0xCCE0, + 26528 - 11904: 0x9A59, + 26532 - 11904: 0x8DB5, + 26540 - 11904: 0xFD4D, + 26542 - 11904: 0xCF5B, + 26543 - 11904: 0xAC5C, + 26544 - 11904: 0xAC69, + 26545 - 11904: 0xFD5E, + 26546 - 11904: 0xCF56, + 26547 - 11904: 0xCF4C, + 26548 - 11904: 0xAC62, + 26549 - 11904: 0xCF4A, + 26550 - 11904: 0xAC5B, + 26551 - 11904: 0xCF45, + 26552 - 11904: 0xAC65, + 26553 - 11904: 0xCF52, + 26554 - 11904: 0xCEFE, + 26555 - 11904: 0xCF41, + 26559 - 11904: 0x8F7D, + 26560 - 11904: 0xCF44, + 26561 - 11904: 0xCEFB, + 26562 - 11904: 0xCF51, + 26563 - 11904: 0xCF61, + 26564 - 11904: 0xAC60, + 26565 - 11904: 0xCF46, + 26566 - 11904: 0xCF58, + 26568 - 11904: 0xCEFD, + 26569 - 11904: 0xCF5F, + 26570 - 11904: 0xCF60, + 26571 - 11904: 0xCF63, + 26572 - 11904: 0xCF5A, + 26573 - 11904: 0xCF4B, + 26574 - 11904: 0xCF53, + 26575 - 11904: 0xAC66, + 26576 - 11904: 0xAC59, + 26577 - 11904: 0xAC61, + 26578 - 11904: 0xAC6D, + 26579 - 11904: 0xAC56, + 26580 - 11904: 0xAC58, + 26582 - 11904: 0x9547, + 26583 - 11904: 0xFCF6, + 26584 - 11904: 0xCF43, + 26585 - 11904: 0xAC6A, + 26586 - 11904: 0xAC63, + 26587 - 11904: 0xCF5D, + 26588 - 11904: 0xCF40, + 26589 - 11904: 0xAC6C, + 26590 - 11904: 0xAC67, + 26591 - 11904: 0xCF49, + 26594 - 11904: 0xAC6B, + 26595 - 11904: 0xCF50, + 26596 - 11904: 0xCF48, + 26597 - 11904: 0xAC64, + 26598 - 11904: 0xCF5C, + 26599 - 11904: 0xCF54, + 26601 - 11904: 0xAC5E, + 26602 - 11904: 0xCF62, + 26603 - 11904: 0xCF47, + 26604 - 11904: 0xAC5A, + 26605 - 11904: 0xCF59, + 26606 - 11904: 0xCF4F, + 26607 - 11904: 0xAC5F, + 26608 - 11904: 0xCF55, + 26609 - 11904: 0xAC57, + 26610 - 11904: 0xCEFC, + 26611 - 11904: 0xAC68, + 26612 - 11904: 0xAEE3, + 26613 - 11904: 0xAC5D, + 26614 - 11904: 0xCF4E, + 26615 - 11904: 0xCF4D, + 26616 - 11904: 0xCF42, + 26617 - 11904: 0x9250, + 26618 - 11904: 0xCF5E, + 26620 - 11904: 0xCF57, + 26622 - 11904: 0x8968, + 26623 - 11904: 0xAC55, + 26624 - 11904: 0x8DB6, + 26625 - 11904: 0xFCFB, + 26626 - 11904: 0xA07D, + 26627 - 11904: 0x98FC, + 26628 - 11904: 0x8969, + 26637 - 11904: 0xFE4F, + 26640 - 11904: 0x9256, + 26642 - 11904: 0xD1EC, + 26643 - 11904: 0xAEEA, + 26644 - 11904: 0xD1ED, + 26646 - 11904: 0xD1E1, + 26647 - 11904: 0xAEDF, + 26648 - 11904: 0xAEEB, + 26650 - 11904: 0xD1DA, + 26651 - 11904: 0xFAC9, + 26652 - 11904: 0xD1E3, + 26653 - 11904: 0xD1EB, + 26654 - 11904: 0x93E8, + 26655 - 11904: 0xD1D9, + 26656 - 11904: 0xD1F4, + 26657 - 11904: 0xAED5, + 26658 - 11904: 0xFCF8, + 26661 - 11904: 0xD1F3, + 26662 - 11904: 0xD1EE, + 26664 - 11904: 0xD1EF, + 26665 - 11904: 0xAEDD, + 26666 - 11904: 0xAEE8, + 26667 - 11904: 0xD1E5, + 26669 - 11904: 0xD1E6, + 26670 - 11904: 0xD1F0, + 26671 - 11904: 0xD1E7, + 26673 - 11904: 0xD1E2, + 26674 - 11904: 0xD1DC, + 26675 - 11904: 0xD1DD, + 26676 - 11904: 0xD1EA, + 26677 - 11904: 0xD1E4, + 26678 - 11904: 0x9CE3, + 26679 - 11904: 0xFDA9, + 26680 - 11904: 0xAED6, + 26681 - 11904: 0xAEDA, + 26682 - 11904: 0xD1F2, + 26683 - 11904: 0xD1DE, + 26684 - 11904: 0xAEE6, + 26685 - 11904: 0xAEE2, + 26686 - 11904: 0xFC44, + 26688 - 11904: 0xAEE5, + 26689 - 11904: 0xAEEC, + 26690 - 11904: 0xAEDB, + 26691 - 11904: 0xAEE7, + 26692 - 11904: 0xD1E9, + 26693 - 11904: 0xAEE9, + 26694 - 11904: 0xAED8, + 26695 - 11904: 0x9640, + 26696 - 11904: 0xAED7, + 26697 - 11904: 0xD1DB, + 26698 - 11904: 0x8DB8, + 26699 - 11904: 0xD1DF, + 26700 - 11904: 0xAEE0, + 26701 - 11904: 0xD1F1, + 26702 - 11904: 0xD1E8, + 26703 - 11904: 0xD1E0, + 26704 - 11904: 0xAEE4, + 26705 - 11904: 0xAEE1, + 26707 - 11904: 0xAED9, + 26708 - 11904: 0xAEDC, + 26709 - 11904: 0x9B4A, + 26710 - 11904: 0x8FB9, + 26717 - 11904: 0xFCFE, + 26725 - 11904: 0x896A, + 26731 - 11904: 0xD5C4, + 26733 - 11904: 0xD5B4, + 26734 - 11904: 0xD5B5, + 26735 - 11904: 0xD5B9, + 26737 - 11904: 0xD5C8, + 26738 - 11904: 0xD5C5, + 26740 - 11904: 0xD5BE, + 26741 - 11904: 0xD5BD, + 26742 - 11904: 0xB1ED, + 26743 - 11904: 0xD5C1, + 26744 - 11904: 0xD5D0, + 26745 - 11904: 0xD5B0, + 26747 - 11904: 0xD5D1, + 26748 - 11904: 0xD5C3, + 26749 - 11904: 0xD5D5, + 26750 - 11904: 0xD5C9, + 26751 - 11904: 0xB1EC, + 26752 - 11904: 0xD5C7, + 26753 - 11904: 0xB1E7, + 26754 - 11904: 0xB1FC, + 26755 - 11904: 0xB1F2, + 26756 - 11904: 0x8DB9, + 26757 - 11904: 0xB1F6, + 26758 - 11904: 0xB1F5, + 26759 - 11904: 0xD5B1, + 26760 - 11904: 0x917E, + 26761 - 11904: 0xD5CE, + 26762 - 11904: 0xD5D4, + 26763 - 11904: 0xD5CC, + 26764 - 11904: 0xD5D3, + 26767 - 11904: 0xD5C0, + 26768 - 11904: 0xD5B2, + 26769 - 11904: 0xD5D2, + 26770 - 11904: 0xD5C2, + 26771 - 11904: 0xB1EA, + 26772 - 11904: 0xB1F7, + 26774 - 11904: 0xD5CB, + 26775 - 11904: 0xB1F0, + 26776 - 11904: 0x93F4, + 26779 - 11904: 0xD5CA, + 26780 - 11904: 0xD5B3, + 26781 - 11904: 0xB1F8, + 26783 - 11904: 0xB1FA, + 26784 - 11904: 0xD5CD, + 26785 - 11904: 0xB1FB, + 26786 - 11904: 0xB1E9, + 26787 - 11904: 0xD5BA, + 26788 - 11904: 0xD5CF, + 26790 - 11904: 0xFB7C, + 26791 - 11904: 0xB1EF, + 26792 - 11904: 0xB1F9, + 26793 - 11904: 0xD5BC, + 26794 - 11904: 0xD5C6, + 26795 - 11904: 0xD5B7, + 26796 - 11904: 0xD5BB, + 26797 - 11904: 0xB1F4, + 26798 - 11904: 0xD5B6, + 26799 - 11904: 0xB1E8, + 26800 - 11904: 0xB1F1, + 26801 - 11904: 0xB1EE, + 26802 - 11904: 0xD5BF, + 26803 - 11904: 0xAEDE, + 26804 - 11904: 0xD9C0, + 26805 - 11904: 0xB1EB, + 26806 - 11904: 0x93E7, + 26809 - 11904: 0x97EF, + 26813 - 11904: 0xFE4A, + 26819 - 11904: 0xFD45, + 26820 - 11904: 0xB1F3, + 26821 - 11904: 0x96A5, + 26822 - 11904: 0xD9C3, + 26823 - 11904: 0xD9D9, + 26824 - 11904: 0xD9CE, + 26825 - 11904: 0xB4D6, + 26826 - 11904: 0xFEE0, + 26827 - 11904: 0xB4D1, + 26828 - 11904: 0xD9BD, + 26829 - 11904: 0xB4D2, + 26830 - 11904: 0xD9CD, + 26832 - 11904: 0xD9C6, + 26833 - 11904: 0xD9D3, + 26834 - 11904: 0xB4CE, + 26835 - 11904: 0xD9AB, + 26836 - 11904: 0xD9D5, + 26837 - 11904: 0xB4C4, + 26838 - 11904: 0xD9B3, + 26839 - 11904: 0xB4C7, + 26840 - 11904: 0xB4C6, + 26842 - 11904: 0xB4D7, + 26844 - 11904: 0xD9AD, + 26845 - 11904: 0xD9CF, + 26846 - 11904: 0xD9D0, + 26847 - 11904: 0xB4C9, + 26848 - 11904: 0xB4C5, + 26849 - 11904: 0xD9BB, + 26851 - 11904: 0xB4D0, + 26852 - 11904: 0xD9B6, + 26854 - 11904: 0xD9D1, + 26855 - 11904: 0xB4CC, + 26856 - 11904: 0xD9C9, + 26857 - 11904: 0xD9D6, + 26858 - 11904: 0xD9B0, + 26859 - 11904: 0xD9B5, + 26860 - 11904: 0xD9AF, + 26862 - 11904: 0xB4CB, + 26863 - 11904: 0xD9C2, + 26864 - 11904: 0xDDDE, + 26865 - 11904: 0xD9B1, + 26866 - 11904: 0xB4CF, + 26867 - 11904: 0xD9BA, + 26868 - 11904: 0xD9D2, + 26869 - 11904: 0xB4CA, + 26870 - 11904: 0xD9B7, + 26871 - 11904: 0xD9B4, + 26872 - 11904: 0xD9C5, + 26873 - 11904: 0xB4CD, + 26874 - 11904: 0xB4C3, + 26875 - 11904: 0xB4D9, + 26876 - 11904: 0xD9C8, + 26877 - 11904: 0xD9C7, + 26880 - 11904: 0xFD48, + 26881 - 11904: 0xFD47, + 26882 - 11904: 0xFEF2, + 26883 - 11904: 0xFE6A, + 26884 - 11904: 0xD9AC, + 26885 - 11904: 0xB4C8, + 26886 - 11904: 0xD9D4, + 26887 - 11904: 0xD9BC, + 26888 - 11904: 0xD9BE, + 26889 - 11904: 0x8DBD, + 26890 - 11904: 0xD9CB, + 26891 - 11904: 0xD9CA, + 26892 - 11904: 0xD9AA, + 26893 - 11904: 0xB4D3, + 26894 - 11904: 0xB4D5, + 26895 - 11904: 0xD9B2, + 26896 - 11904: 0xD9B9, + 26897 - 11904: 0xD9C1, + 26898 - 11904: 0xB4D4, + 26899 - 11904: 0xD9B8, + 26900 - 11904: 0xD9C4, + 26901 - 11904: 0xD9D7, + 26903 - 11904: 0xD9CC, + 26904 - 11904: 0x9BA1, + 26905 - 11904: 0x8CA2, + 26906 - 11904: 0x9AB7, + 26907 - 11904: 0x8EFC, + 26917 - 11904: 0xD9D8, + 26922 - 11904: 0xD9AE, + 26924 - 11904: 0x9FA1, + 26927 - 11904: 0xDDF2, + 26928 - 11904: 0xB7A6, + 26930 - 11904: 0xDDF0, + 26931 - 11904: 0xDDDB, + 26932 - 11904: 0xDDE0, + 26933 - 11904: 0xDDD9, + 26934 - 11904: 0xFD51, + 26935 - 11904: 0xDDEC, + 26936 - 11904: 0xDDCB, + 26937 - 11904: 0xDDD2, + 26939 - 11904: 0xDDEA, + 26940 - 11904: 0xDDF4, + 26941 - 11904: 0xDDDC, + 26942 - 11904: 0xFAAD, + 26943 - 11904: 0xDDCF, + 26944 - 11904: 0xDDE2, + 26945 - 11904: 0xDDE7, + 26946 - 11904: 0xDDD3, + 26947 - 11904: 0x8DBE, + 26948 - 11904: 0xDDE4, + 26949 - 11904: 0xDDD0, + 26950 - 11904: 0x89A4, + 26952 - 11904: 0xDDD7, + 26953 - 11904: 0xDDD8, + 26954 - 11904: 0xB7A8, + 26955 - 11904: 0xDDEB, + 26956 - 11904: 0xDDE9, + 26958 - 11904: 0xDDCC, + 26959 - 11904: 0xDDEE, + 26961 - 11904: 0xDDEF, + 26962 - 11904: 0xDDF1, + 26963 - 11904: 0xB7AC, + 26964 - 11904: 0xB7A4, + 26965 - 11904: 0x9AD9, + 26966 - 11904: 0xD5B8, + 26967 - 11904: 0xDDD4, + 26968 - 11904: 0xDDE6, + 26969 - 11904: 0xDDD5, + 26970 - 11904: 0xB7A1, + 26971 - 11904: 0xB7B1, + 26972 - 11904: 0xDDED, + 26973 - 11904: 0xB7AF, + 26974 - 11904: 0xB7AB, + 26975 - 11904: 0xDDCA, + 26976 - 11904: 0xB7A3, + 26977 - 11904: 0xFD4E, + 26978 - 11904: 0xDDCD, + 26979 - 11904: 0xB7B0, + 26980 - 11904: 0x8DC0, + 26981 - 11904: 0xDDDD, + 26982 - 11904: 0xDDC9, + 26983 - 11904: 0x97F0, + 26984 - 11904: 0xB7A9, + 26985 - 11904: 0xDDE1, + 26986 - 11904: 0xDDD1, + 26987 - 11904: 0xB7AA, + 26988 - 11904: 0xDDDA, + 26989 - 11904: 0xB77E, + 26990 - 11904: 0xB4D8, + 26991 - 11904: 0xDDE3, + 26992 - 11904: 0xD9BF, + 26993 - 11904: 0xDDCE, + 26994 - 11904: 0x93B4, + 26995 - 11904: 0xFD44, + 26996 - 11904: 0xDDE8, + 26997 - 11904: 0xB7A5, + 26998 - 11904: 0xDDE5, + 26999 - 11904: 0xB7A2, + 27000 - 11904: 0xDDDF, + 27001 - 11904: 0xB7AD, + 27002 - 11904: 0xDDD6, + 27003 - 11904: 0xDDF3, + 27008 - 11904: 0x9FA7, + 27010 - 11904: 0xB7A7, + 27011 - 11904: 0xDEC6, + 27013 - 11904: 0x8DC2, + 27014 - 11904: 0xB7AE, + 27018 - 11904: 0x99B6, + 27021 - 11904: 0xE24A, + 27022 - 11904: 0xE248, + 27024 - 11904: 0xE25E, + 27025 - 11904: 0xE246, + 27027 - 11904: 0xE258, + 27028 - 11904: 0xB77D, + 27029 - 11904: 0xBA5F, + 27030 - 11904: 0xE242, + 27031 - 11904: 0xE25D, + 27032 - 11904: 0xFD52, + 27033 - 11904: 0xE247, + 27034 - 11904: 0xE255, + 27035 - 11904: 0xBA64, + 27036 - 11904: 0xBA5D, + 27038 - 11904: 0xE25B, + 27039 - 11904: 0x8DC1, + 27040 - 11904: 0xE240, + 27041 - 11904: 0xE25A, + 27042 - 11904: 0x8E46, + 27043 - 11904: 0xBA6F, + 27044 - 11904: 0xE251, + 27045 - 11904: 0xE261, + 27046 - 11904: 0xBA6D, + 27047 - 11904: 0xE249, + 27048 - 11904: 0xBA5E, + 27049 - 11904: 0xE24B, + 27050 - 11904: 0xE259, + 27051 - 11904: 0xBA67, + 27052 - 11904: 0xE244, + 27053 - 11904: 0xBA6B, + 27054 - 11904: 0xBA61, + 27055 - 11904: 0xE24D, + 27056 - 11904: 0xE243, + 27057 - 11904: 0xE1FC, + 27058 - 11904: 0xA0D1, + 27059 - 11904: 0xE257, + 27060 - 11904: 0xBA68, + 27061 - 11904: 0xE260, + 27062 - 11904: 0xE1FD, + 27063 - 11904: 0xBA65, + 27065 - 11904: 0xE253, + 27067 - 11904: 0xBA66, + 27068 - 11904: 0xE245, + 27069 - 11904: 0xE250, + 27070 - 11904: 0xE24C, + 27071 - 11904: 0xE24E, + 27072 - 11904: 0x9FCA, + 27073 - 11904: 0xBA60, + 27074 - 11904: 0xE25F, + 27075 - 11904: 0xBA6E, + 27076 - 11904: 0xE24F, + 27078 - 11904: 0xE262, + 27081 - 11904: 0xE1FE, + 27082 - 11904: 0xE254, + 27083 - 11904: 0xBA63, + 27084 - 11904: 0xBA6C, + 27085 - 11904: 0xBA6A, + 27086 - 11904: 0xE241, + 27087 - 11904: 0xE256, + 27088 - 11904: 0xBA69, + 27089 - 11904: 0x92CF, + 27091 - 11904: 0xBA62, + 27092 - 11904: 0xE252, + 27093 - 11904: 0x9CF4, + 27094 - 11904: 0x8DC4, + 27097 - 11904: 0xE25C, + 27105 - 11904: 0xFD41, + 27106 - 11904: 0xE5D5, + 27108 - 11904: 0xE5D1, + 27109 - 11904: 0xE5CD, + 27110 - 11904: 0xE5E1, + 27111 - 11904: 0xE5DE, + 27112 - 11904: 0xBCCD, + 27113 - 11904: 0x9B4C, + 27115 - 11904: 0xE5E5, + 27116 - 11904: 0xE5D4, + 27117 - 11904: 0xBCD8, + 27118 - 11904: 0xE5DB, + 27121 - 11904: 0xE5D0, + 27122 - 11904: 0xE5DA, + 27123 - 11904: 0xBCD5, + 27124 - 11904: 0xE5EE, + 27126 - 11904: 0xE5EB, + 27127 - 11904: 0xE5DD, + 27128 - 11904: 0xE5CE, + 27129 - 11904: 0xFD57, + 27130 - 11904: 0xFCEF, + 27131 - 11904: 0xE5E2, + 27132 - 11904: 0xE5E4, + 27133 - 11904: 0xBCD1, + 27134 - 11904: 0xE5D8, + 27135 - 11904: 0xE5D3, + 27136 - 11904: 0xE5CA, + 27137 - 11904: 0xBCCE, + 27138 - 11904: 0xBCD6, + 27139 - 11904: 0x9CDE, + 27140 - 11904: 0xE5E7, + 27141 - 11904: 0xBCD7, + 27142 - 11904: 0xE5CB, + 27143 - 11904: 0xE5ED, + 27144 - 11904: 0xE5E0, + 27145 - 11904: 0xE5E6, + 27146 - 11904: 0xBCD4, + 27147 - 11904: 0xFD42, + 27148 - 11904: 0x986C, + 27149 - 11904: 0xE5E3, + 27151 - 11904: 0xE5EA, + 27153 - 11904: 0xBCD9, + 27155 - 11904: 0xBCD3, + 27156 - 11904: 0xE5DC, + 27157 - 11904: 0xE5CF, + 27158 - 11904: 0xE5EF, + 27159 - 11904: 0xE5CC, + 27160 - 11904: 0xE5E8, + 27161 - 11904: 0xBCD0, + 27162 - 11904: 0x97F9, + 27163 - 11904: 0xE5D6, + 27164 - 11904: 0x9558, + 27165 - 11904: 0xE5D7, + 27166 - 11904: 0xBCCF, + 27167 - 11904: 0xBCCC, + 27168 - 11904: 0xE5D2, + 27169 - 11904: 0xBCD2, + 27171 - 11904: 0xBCCB, + 27173 - 11904: 0xE5E9, + 27174 - 11904: 0xE5EC, + 27175 - 11904: 0xE5D9, + 27176 - 11904: 0xE9CA, + 27177 - 11904: 0x87B6, + 27179 - 11904: 0x985E, + 27180 - 11904: 0xFE7B, + 27181 - 11904: 0x94CD, + 27186 - 11904: 0xE9C2, + 27187 - 11904: 0x93EE, + 27188 - 11904: 0xE9BE, + 27189 - 11904: 0xBEF6, + 27192 - 11904: 0xBEEB, + 27193 - 11904: 0xBEF0, + 27194 - 11904: 0xBEEC, + 27195 - 11904: 0xE9CC, + 27196 - 11904: 0xE9D7, + 27197 - 11904: 0xBEEA, + 27198 - 11904: 0xE9C4, + 27199 - 11904: 0xE9CD, + 27200 - 11904: 0xE5DF, + 27201 - 11904: 0xE9CE, + 27203 - 11904: 0x8CA3, + 27204 - 11904: 0xBEF1, + 27205 - 11904: 0xFD5A, + 27206 - 11904: 0xE9DD, + 27207 - 11904: 0xBEF5, + 27208 - 11904: 0xBEF8, + 27209 - 11904: 0xE9C0, + 27211 - 11904: 0xBEF4, + 27212 - 11904: 0x93F5, + 27213 - 11904: 0xE9DB, + 27214 - 11904: 0xE9DC, + 27215 - 11904: 0xE9D2, + 27216 - 11904: 0xE9D1, + 27217 - 11904: 0xE9C9, + 27218 - 11904: 0x93EF, + 27219 - 11904: 0x8EEA, + 27220 - 11904: 0xE9D3, + 27221 - 11904: 0xE9DA, + 27222 - 11904: 0xE9D9, + 27223 - 11904: 0x8F5B, + 27224 - 11904: 0xBEEF, + 27225 - 11904: 0xBEED, + 27226 - 11904: 0xE9CB, + 27227 - 11904: 0xE9C8, + 27229 - 11904: 0xE9C5, + 27230 - 11904: 0xE9D8, + 27231 - 11904: 0xBEF7, + 27232 - 11904: 0xE9D6, + 27233 - 11904: 0xBEF3, + 27234 - 11904: 0xBEF2, + 27235 - 11904: 0x8C5E, + 27236 - 11904: 0xE9D0, + 27237 - 11904: 0x8DC6, + 27238 - 11904: 0xE9BF, + 27239 - 11904: 0xE9C1, + 27240 - 11904: 0xE9C3, + 27241 - 11904: 0xE9D5, + 27242 - 11904: 0xE9CF, + 27243 - 11904: 0xBEEE, + 27245 - 11904: 0xE9C6, + 27247 - 11904: 0xE9D4, + 27249 - 11904: 0x8DC8, + 27252 - 11904: 0x8DC7, + 27254 - 11904: 0xE9C7, + 27258 - 11904: 0x93F7, + 27262 - 11904: 0xC0CF, + 27263 - 11904: 0xED45, + 27264 - 11904: 0xC0C8, + 27265 - 11904: 0xECF5, + 27266 - 11904: 0x8DC9, + 27267 - 11904: 0xED41, + 27268 - 11904: 0xC0CA, + 27269 - 11904: 0xED48, + 27271 - 11904: 0xECFC, + 27273 - 11904: 0xECF7, + 27274 - 11904: 0xFBF2, + 27276 - 11904: 0xED49, + 27277 - 11904: 0xECF3, + 27278 - 11904: 0xECFE, + 27279 - 11904: 0x9670, + 27280 - 11904: 0xC0D1, + 27281 - 11904: 0xED44, + 27282 - 11904: 0xED4A, + 27283 - 11904: 0xECFD, + 27284 - 11904: 0xC0C9, + 27285 - 11904: 0xED40, + 27286 - 11904: 0xECF4, + 27287 - 11904: 0xC0D0, + 27289 - 11904: 0x8DCB, + 27290 - 11904: 0xED47, + 27291 - 11904: 0xECF9, + 27292 - 11904: 0xC0CC, + 27293 - 11904: 0xFD5C, + 27294 - 11904: 0xECFB, + 27295 - 11904: 0xECF8, + 27296 - 11904: 0xC0D2, + 27297 - 11904: 0xECFA, + 27298 - 11904: 0xC0CB, + 27299 - 11904: 0xC0CE, + 27300 - 11904: 0xED43, + 27301 - 11904: 0xECF6, + 27302 - 11904: 0xED46, + 27303 - 11904: 0x8F65, + 27304 - 11904: 0xED42, + 27307 - 11904: 0x8DCD, + 27308 - 11904: 0xC263, + 27309 - 11904: 0xEFE7, + 27310 - 11904: 0xC268, + 27311 - 11904: 0xC269, + 27313 - 11904: 0x9DA8, + 27314 - 11904: 0x94F9, + 27315 - 11904: 0xC262, + 27316 - 11904: 0xEFE6, + 27317 - 11904: 0x8DCE, + 27318 - 11904: 0xEFE3, + 27319 - 11904: 0xEFE4, + 27320 - 11904: 0xC266, + 27321 - 11904: 0xEFDE, + 27322 - 11904: 0xEFE2, + 27323 - 11904: 0xC265, + 27325 - 11904: 0xEFDF, + 27326 - 11904: 0x93EA, + 27330 - 11904: 0xC267, + 27331 - 11904: 0xC264, + 27333 - 11904: 0xEFDD, + 27334 - 11904: 0xEFE1, + 27335 - 11904: 0xEFE5, + 27336 - 11904: 0xFD5F, + 27337 - 11904: 0x93F0, + 27338 - 11904: 0x9FB6, + 27339 - 11904: 0xF251, + 27340 - 11904: 0xF24E, + 27341 - 11904: 0xF257, + 27343 - 11904: 0xF256, + 27344 - 11904: 0xF254, + 27345 - 11904: 0xF24F, + 27347 - 11904: 0xC372, + 27348 - 11904: 0x8DCF, + 27352 - 11904: 0x9763, + 27353 - 11904: 0xF250, + 27354 - 11904: 0xC371, + 27355 - 11904: 0xC0CD, + 27356 - 11904: 0xF253, + 27357 - 11904: 0xC370, + 27358 - 11904: 0xF258, + 27359 - 11904: 0xF252, + 27360 - 11904: 0xF24D, + 27361 - 11904: 0xEFE0, + 27365 - 11904: 0xC36F, + 27367 - 11904: 0xF24C, + 27368 - 11904: 0xF456, + 27370 - 11904: 0xF455, + 27371 - 11904: 0xF255, + 27372 - 11904: 0xC468, + 27374 - 11904: 0xF459, + 27375 - 11904: 0xF45A, + 27376 - 11904: 0xF454, + 27377 - 11904: 0xF458, + 27379 - 11904: 0xF453, + 27382 - 11904: 0x8DD0, + 27384 - 11904: 0xF5D1, + 27385 - 11904: 0xF457, + 27386 - 11904: 0xC4E7, + 27387 - 11904: 0xC4E5, + 27388 - 11904: 0xF5CF, + 27392 - 11904: 0xF5D2, + 27394 - 11904: 0xF5CE, + 27395 - 11904: 0xF5D0, + 27396 - 11904: 0xC4E6, + 27397 - 11904: 0x93F1, + 27400 - 11904: 0xF6E5, + 27401 - 11904: 0xF6E6, + 27402 - 11904: 0xC576, + 27403 - 11904: 0xF6E4, + 27407 - 11904: 0xF7E2, + 27408 - 11904: 0xC5CF, + 27409 - 11904: 0xF7E0, + 27410 - 11904: 0xF7E1, + 27411 - 11904: 0xF8AC, + 27414 - 11904: 0xC656, + 27415 - 11904: 0xF8F3, + 27416 - 11904: 0xF8F1, + 27417 - 11904: 0xF8F2, + 27418 - 11904: 0xF8F4, + 27421 - 11904: 0xFD62, + 27422 - 11904: 0xF9BB, + 27424 - 11904: 0xA4ED, + 27425 - 11904: 0xA6B8, + 27427 - 11904: 0xAA59, + 27429 - 11904: 0xCCE9, + 27432 - 11904: 0xCF64, + 27436 - 11904: 0xD1F5, + 27437 - 11904: 0xD1F7, + 27439 - 11904: 0xD1F6, + 27441 - 11904: 0xD1F8, + 27442 - 11904: 0xB1FD, + 27443 - 11904: 0xD5D7, + 27444 - 11904: 0xD1F9, + 27445 - 11904: 0xFD65, + 27446 - 11904: 0xD5D6, + 27447 - 11904: 0xD5D8, + 27448 - 11904: 0xD5D9, + 27449 - 11904: 0xD9DA, + 27450 - 11904: 0xB4DB, + 27451 - 11904: 0xD9DB, + 27452 - 11904: 0xD9DD, + 27453 - 11904: 0xB4DC, + 27454 - 11904: 0xB4DA, + 27455 - 11904: 0xD9DC, + 27457 - 11904: 0xDDFA, + 27458 - 11904: 0xDDF8, + 27459 - 11904: 0xDDF7, + 27461 - 11904: 0xDDF6, + 27462 - 11904: 0xDDF5, + 27463 - 11904: 0xB7B2, + 27464 - 11904: 0xDDF9, + 27465 - 11904: 0xBA70, + 27466 - 11904: 0xE263, + 27467 - 11904: 0xE265, + 27468 - 11904: 0xBA71, + 27469 - 11904: 0xE264, + 27470 - 11904: 0xBCDB, + 27472 - 11904: 0xBCDA, + 27473 - 11904: 0xE5F0, + 27474 - 11904: 0x9FDB, + 27476 - 11904: 0xE9DF, + 27477 - 11904: 0xE9DE, + 27478 - 11904: 0xE9E0, + 27479 - 11904: 0x93F8, + 27481 - 11904: 0xBEF9, + 27483 - 11904: 0xED4B, + 27484 - 11904: 0xC0D3, + 27486 - 11904: 0xEFE8, + 27487 - 11904: 0xC26A, + 27488 - 11904: 0xF259, + 27489 - 11904: 0xC577, + 27490 - 11904: 0xA4EE, + 27491 - 11904: 0xA5BF, + 27492 - 11904: 0xA6B9, + 27493 - 11904: 0xA842, + 27494 - 11904: 0xAA5A, + 27495 - 11904: 0xAA5B, + 27498 - 11904: 0xAC6E, + 27501 - 11904: 0xD1FA, + 27503 - 11904: 0x8BF7, + 27506 - 11904: 0xB7B3, + 27508 - 11904: 0xFD66, + 27510 - 11904: 0xE6D1, + 27511 - 11904: 0xBEFA, + 27512 - 11904: 0xC26B, + 27513 - 11904: 0xA4EF, + 27514 - 11904: 0x8BCF, + 27515 - 11904: 0xA6BA, + 27518 - 11904: 0xCCEB, + 27519 - 11904: 0xAA5C, + 27520 - 11904: 0xCCEA, + 27521 - 11904: 0x8DD1, + 27522 - 11904: 0xCF65, + 27523 - 11904: 0xAC6F, + 27524 - 11904: 0xCF66, + 27526 - 11904: 0xAC70, + 27528 - 11904: 0xD1FC, + 27529 - 11904: 0xAEEE, + 27530 - 11904: 0xAEED, + 27532 - 11904: 0xD5DE, + 27533 - 11904: 0xD5DC, + 27534 - 11904: 0xD5DD, + 27535 - 11904: 0xD5DB, + 27537 - 11904: 0xD5DA, + 27540 - 11904: 0xD9DE, + 27541 - 11904: 0xD9E1, + 27542 - 11904: 0xB4DE, + 27543 - 11904: 0xD9DF, + 27544 - 11904: 0xB4DD, + 27545 - 11904: 0xD9E0, + 27547 - 11904: 0xDDFB, + 27550 - 11904: 0xE266, + 27551 - 11904: 0xE267, + 27552 - 11904: 0xE268, + 27554 - 11904: 0xE5F3, + 27555 - 11904: 0xE5F2, + 27556 - 11904: 0xBCDC, + 27557 - 11904: 0xE5F1, + 27558 - 11904: 0xE5F4, + 27559 - 11904: 0xE9E1, + 27562 - 11904: 0xE9E2, + 27563 - 11904: 0xE9E3, + 27565 - 11904: 0xED4C, + 27566 - 11904: 0xC0D4, + 27567 - 11904: 0xC26C, + 27568 - 11904: 0xF25A, + 27570 - 11904: 0xC4E8, + 27571 - 11904: 0xC95F, + 27573 - 11904: 0xAC71, + 27574 - 11904: 0xCF67, + 27575 - 11904: 0xAEEF, + 27578 - 11904: 0xB1FE, + 27580 - 11904: 0xB4DF, + 27581 - 11904: 0xD9E2, + 27583 - 11904: 0xB7B5, + 27584 - 11904: 0xB7B4, + 27585 - 11904: 0x8DD2, + 27587 - 11904: 0xE269, + 27588 - 11904: 0xE26A, + 27589 - 11904: 0xBCDD, + 27590 - 11904: 0xBCDE, + 27591 - 11904: 0xE9E5, + 27592 - 11904: 0xE9E4, + 27593 - 11904: 0xEFE9, + 27594 - 11904: 0xF7E3, + 27595 - 11904: 0xA4F0, + 27596 - 11904: 0xC960, + 27597 - 11904: 0xA5C0, + 27599 - 11904: 0xA843, + 27600 - 11904: 0xCB48, + 27602 - 11904: 0xAC72, + 27603 - 11904: 0xB7B6, + 27604 - 11904: 0xA4F1, + 27606 - 11904: 0xCF68, + 27607 - 11904: 0xAC73, + 27608 - 11904: 0xCF69, + 27610 - 11904: 0xC0D5, + 27611 - 11904: 0xA4F2, + 27612 - 11904: 0xFD71, + 27614 - 11904: 0xCCEC, + 27616 - 11904: 0xCF6A, + 27617 - 11904: 0xFD6F, + 27618 - 11904: 0xD242, + 27619 - 11904: 0xD241, + 27620 - 11904: 0xD1FE, + 27622 - 11904: 0xD1FD, + 27623 - 11904: 0xD243, + 27624 - 11904: 0xD240, + 27626 - 11904: 0x8DD3, + 27627 - 11904: 0xB240, + 27628 - 11904: 0xB241, + 27631 - 11904: 0xB4E0, + 27632 - 11904: 0xD9E3, + 27634 - 11904: 0xD9E4, + 27635 - 11904: 0xD9E5, + 27639 - 11904: 0xDE41, + 27640 - 11904: 0xDE42, + 27641 - 11904: 0xDE40, + 27642 - 11904: 0x9FE7, + 27643 - 11904: 0xDDFD, + 27644 - 11904: 0xDDFE, + 27645 - 11904: 0xB7B7, + 27646 - 11904: 0xE26B, + 27647 - 11904: 0xE5F7, + 27648 - 11904: 0xE5F6, + 27649 - 11904: 0xE5F5, + 27650 - 11904: 0xE5F8, + 27651 - 11904: 0xE9E7, + 27652 - 11904: 0xE9E6, + 27653 - 11904: 0xBEFB, + 27654 - 11904: 0xE9E8, + 27656 - 11904: 0xC0D6, + 27657 - 11904: 0xED4D, + 27659 - 11904: 0xEFEA, + 27660 - 11904: 0xF25B, + 27661 - 11904: 0xF6E7, + 27663 - 11904: 0xA4F3, + 27664 - 11904: 0xA5C2, + 27665 - 11904: 0xA5C1, + 27667 - 11904: 0xAA5D, + 27668 - 11904: 0xC961, + 27669 - 11904: 0xC97E, + 27670 - 11904: 0xA6BB, + 27672 - 11904: 0xC9F7, + 27673 - 11904: 0xCB49, + 27674 - 11904: 0xCB4A, + 27675 - 11904: 0xAA5E, + 27676 - 11904: 0x90BD, + 27677 - 11904: 0xCCED, + 27679 - 11904: 0xAC74, + 27680 - 11904: 0xCF6B, + 27681 - 11904: 0xCF6C, + 27683 - 11904: 0xAEF0, + 27684 - 11904: 0xAEF4, + 27685 - 11904: 0xD244, + 27686 - 11904: 0xAEF3, + 27687 - 11904: 0xAEF1, + 27688 - 11904: 0xAEF2, + 27690 - 11904: 0xD5DF, + 27691 - 11904: 0xB242, + 27692 - 11904: 0xB4E3, + 27694 - 11904: 0xB4E1, + 27695 - 11904: 0xB4E2, + 27696 - 11904: 0xD9E6, + 27697 - 11904: 0x9FD0, + 27699 - 11904: 0xBA72, + 27700 - 11904: 0xA4F4, + 27701 - 11904: 0x8BD0, + 27702 - 11904: 0xC9A1, + 27703 - 11904: 0xFD72, + 27704 - 11904: 0xA5C3, + 27705 - 11904: 0x9CAE, + 27706 - 11904: 0x8BD1, + 27707 - 11904: 0xC9A4, + 27709 - 11904: 0x8ADB, + 27710 - 11904: 0xA5C6, + 27711 - 11904: 0xC9A3, + 27712 - 11904: 0xA5C5, + 27713 - 11904: 0xA5C4, + 27714 - 11904: 0xA844, + 27715 - 11904: 0xC9A2, + 27718 - 11904: 0xC9F8, + 27721 - 11904: 0xFAE4, + 27722 - 11904: 0xC9FC, + 27723 - 11904: 0xC9FE, + 27724 - 11904: 0xCA40, + 27725 - 11904: 0xA6C5, + 27726 - 11904: 0xA6C6, + 27727 - 11904: 0xC9FB, + 27728 - 11904: 0xA6C1, + 27730 - 11904: 0xC9F9, + 27732 - 11904: 0xC9FD, + 27733 - 11904: 0xA6C2, + 27735 - 11904: 0xA6BD, + 27736 - 11904: 0x95CE, + 27737 - 11904: 0xA6BE, + 27738 - 11904: 0xFD76, + 27739 - 11904: 0xA6C4, + 27740 - 11904: 0xC9FA, + 27741 - 11904: 0xA6BC, + 27742 - 11904: 0xA845, + 27743 - 11904: 0xA6BF, + 27744 - 11904: 0xA6C0, + 27745 - 11904: 0xA6C3, + 27749 - 11904: 0xCB5B, + 27750 - 11904: 0xCB59, + 27751 - 11904: 0xCB4C, + 27752 - 11904: 0xA851, + 27753 - 11904: 0xCB53, + 27754 - 11904: 0xA84C, + 27755 - 11904: 0xCB4D, + 27757 - 11904: 0xCB55, + 27758 - 11904: 0xFB62, + 27759 - 11904: 0xCB52, + 27760 - 11904: 0xA84F, + 27761 - 11904: 0xCB51, + 27762 - 11904: 0xA856, + 27763 - 11904: 0xCB5A, + 27764 - 11904: 0xA858, + 27765 - 11904: 0x8DD4, + 27766 - 11904: 0xA85A, + 27768 - 11904: 0xCB4B, + 27769 - 11904: 0xFD78, + 27770 - 11904: 0xA84D, + 27771 - 11904: 0xCB5C, + 27773 - 11904: 0xA854, + 27774 - 11904: 0xA857, + 27775 - 11904: 0x8EE3, + 27776 - 11904: 0xCD45, + 27777 - 11904: 0xA847, + 27778 - 11904: 0xA85E, + 27779 - 11904: 0xA855, + 27780 - 11904: 0xCB4E, + 27781 - 11904: 0xA84A, + 27782 - 11904: 0xA859, + 27783 - 11904: 0xCB56, + 27784 - 11904: 0xA848, + 27785 - 11904: 0xA849, + 27786 - 11904: 0xCD43, + 27787 - 11904: 0xCB4F, + 27788 - 11904: 0xA850, + 27789 - 11904: 0xA85B, + 27790 - 11904: 0xCB5D, + 27791 - 11904: 0xCB50, + 27792 - 11904: 0xA84E, + 27794 - 11904: 0xA853, + 27795 - 11904: 0xCCEE, + 27796 - 11904: 0xA85C, + 27797 - 11904: 0xCB57, + 27798 - 11904: 0xA852, + 27800 - 11904: 0xA85D, + 27801 - 11904: 0xA846, + 27802 - 11904: 0xCB54, + 27803 - 11904: 0xA84B, + 27804 - 11904: 0xFDB7, + 27805 - 11904: 0xCD44, + 27807 - 11904: 0x9076, + 27810 - 11904: 0x98C6, + 27818 - 11904: 0x8DD5, + 27819 - 11904: 0xAA6A, + 27820 - 11904: 0xAA7A, + 27821 - 11904: 0xCCF5, + 27822 - 11904: 0xAA71, + 27823 - 11904: 0x97D1, + 27824 - 11904: 0xCD4B, + 27825 - 11904: 0xAA62, + 27826 - 11904: 0x9EB6, + 27827 - 11904: 0xAA65, + 27828 - 11904: 0xCD42, + 27830 - 11904: 0xCCF3, + 27831 - 11904: 0xCCF7, + 27832 - 11904: 0xAA6D, + 27833 - 11904: 0xAA6F, + 27834 - 11904: 0xCCFA, + 27835 - 11904: 0xAA76, + 27836 - 11904: 0xAA68, + 27837 - 11904: 0xAA66, + 27838 - 11904: 0xAA67, + 27839 - 11904: 0xAA75, + 27840 - 11904: 0xCD47, + 27841 - 11904: 0xAA70, + 27842 - 11904: 0xCCF9, + 27843 - 11904: 0xCCFB, + 27844 - 11904: 0xAA6E, + 27845 - 11904: 0xAA73, + 27846 - 11904: 0xCCFC, + 27847 - 11904: 0xCD4A, + 27849 - 11904: 0xAC75, + 27850 - 11904: 0xAA79, + 27851 - 11904: 0xFAC7, + 27852 - 11904: 0xAA63, + 27853 - 11904: 0xCD49, + 27854 - 11904: 0xA042, + 27855 - 11904: 0xCD4D, + 27856 - 11904: 0xCCF8, + 27857 - 11904: 0xCD4F, + 27858 - 11904: 0xCD40, + 27859 - 11904: 0xAA6C, + 27860 - 11904: 0xCCF4, + 27861 - 11904: 0xAA6B, + 27862 - 11904: 0xAA7D, + 27863 - 11904: 0xAA72, + 27865 - 11904: 0xCCF2, + 27866 - 11904: 0xCF75, + 27867 - 11904: 0xAA78, + 27868 - 11904: 0xAA7C, + 27869 - 11904: 0xCD41, + 27870 - 11904: 0xCD46, + 27871 - 11904: 0x9873, + 27872 - 11904: 0xAA7E, + 27873 - 11904: 0xAA77, + 27874 - 11904: 0xAA69, + 27875 - 11904: 0xAA5F, + 27877 - 11904: 0xAA64, + 27879 - 11904: 0xCCF6, + 27880 - 11904: 0xAA60, + 27881 - 11904: 0xCD4E, + 27882 - 11904: 0x9FFC, + 27883 - 11904: 0xCCF0, + 27884 - 11904: 0xCCEF, + 27885 - 11904: 0xCCFD, + 27886 - 11904: 0xCCF1, + 27887 - 11904: 0xAA7B, + 27888 - 11904: 0xAEF5, + 27889 - 11904: 0xAA74, + 27890 - 11904: 0xCCFE, + 27891 - 11904: 0xAA61, + 27893 - 11904: 0xACA6, + 27897 - 11904: 0xCD4C, + 27903 - 11904: 0x8CA5, + 27904 - 11904: 0xCF7C, + 27905 - 11904: 0xCFA1, + 27906 - 11904: 0x8DD7, + 27907 - 11904: 0xCFA4, + 27908 - 11904: 0xCF77, + 27909 - 11904: 0x92FB, + 27910 - 11904: 0x8DD8, + 27911 - 11904: 0xCFA7, + 27912 - 11904: 0xCFAA, + 27913 - 11904: 0xCFAC, + 27914 - 11904: 0xCF74, + 27915 - 11904: 0xAC76, + 27916 - 11904: 0xAC7B, + 27917 - 11904: 0xD249, + 27918 - 11904: 0xACAD, + 27919 - 11904: 0xCFA5, + 27920 - 11904: 0xCFAD, + 27921 - 11904: 0xCF7B, + 27922 - 11904: 0xCF73, + 27926 - 11904: 0xD264, + 27927 - 11904: 0xAC7E, + 27928 - 11904: 0xCFA2, + 27929 - 11904: 0xCF78, + 27930 - 11904: 0xCF7A, + 27931 - 11904: 0xACA5, + 27933 - 11904: 0xCF7D, + 27934 - 11904: 0xAC7D, + 27935 - 11904: 0xCF70, + 27936 - 11904: 0xCFA8, + 27938 - 11904: 0xCFAB, + 27940 - 11904: 0x944F, + 27941 - 11904: 0xAC7A, + 27942 - 11904: 0x8DD9, + 27943 - 11904: 0xACA8, + 27944 - 11904: 0xCF6D, + 27945 - 11904: 0xACAA, + 27946 - 11904: 0xAC78, + 27947 - 11904: 0xACAE, + 27948 - 11904: 0xCFA9, + 27949 - 11904: 0xCF6F, + 27950 - 11904: 0xACAB, + 27951 - 11904: 0xD25E, + 27952 - 11904: 0xCD48, + 27953 - 11904: 0xAC7C, + 27954 - 11904: 0xAC77, + 27955 - 11904: 0xCF76, + 27956 - 11904: 0xCF6E, + 27957 - 11904: 0xACAC, + 27958 - 11904: 0xACA4, + 27959 - 11904: 0xCFA3, + 27960 - 11904: 0xACA9, + 27961 - 11904: 0xACA7, + 27962 - 11904: 0xCF79, + 27963 - 11904: 0xACA1, + 27964 - 11904: 0xCF71, + 27965 - 11904: 0xACA2, + 27966 - 11904: 0xACA3, + 27967 - 11904: 0xCF72, + 27968 - 11904: 0xCFA6, + 27969 - 11904: 0xAC79, + 27970 - 11904: 0xCF7E, + 27982 - 11904: 0x896B, + 27991 - 11904: 0x97CE, + 27992 - 11904: 0xD24C, + 27993 - 11904: 0xAEFD, + 27994 - 11904: 0xAF43, + 27995 - 11904: 0xFAF3, + 27996 - 11904: 0xFDAE, + 27998 - 11904: 0xD255, + 27999 - 11904: 0xD25B, + 28000 - 11904: 0xD257, + 28001 - 11904: 0xD24A, + 28002 - 11904: 0xD24D, + 28003 - 11904: 0xD246, + 28004 - 11904: 0xD247, + 28005 - 11904: 0xAF4A, + 28006 - 11904: 0xAEFA, + 28007 - 11904: 0xD256, + 28008 - 11904: 0xD25F, + 28009 - 11904: 0xAF45, + 28010 - 11904: 0xAEF6, + 28012 - 11904: 0xAF40, + 28013 - 11904: 0xD24E, + 28014 - 11904: 0xAF42, + 28015 - 11904: 0xD24F, + 28016 - 11904: 0xD259, + 28017 - 11904: 0xFBAF, + 28018 - 11904: 0x92B7, + 28020 - 11904: 0xAF44, + 28021 - 11904: 0xD268, + 28022 - 11904: 0xD248, + 28023 - 11904: 0xAEFC, + 28024 - 11904: 0xAEFB, + 28025 - 11904: 0xAF48, + 28026 - 11904: 0xD245, + 28027 - 11904: 0xD266, + 28028 - 11904: 0xD25A, + 28029 - 11904: 0xD267, + 28030 - 11904: 0xD261, + 28031 - 11904: 0xD253, + 28032 - 11904: 0xD262, + 28033 - 11904: 0x8DDA, + 28034 - 11904: 0xD25C, + 28035 - 11904: 0xD265, + 28036 - 11904: 0xD263, + 28037 - 11904: 0xAF49, + 28038 - 11904: 0xD254, + 28039 - 11904: 0xAEF9, + 28040 - 11904: 0xAEF8, + 28041 - 11904: 0xAF41, + 28042 - 11904: 0xAF47, + 28043 - 11904: 0xD260, + 28044 - 11904: 0xAF46, + 28045 - 11904: 0xD251, + 28046 - 11904: 0xB243, + 28047 - 11904: 0x9C5A, + 28048 - 11904: 0xD269, + 28049 - 11904: 0xD250, + 28050 - 11904: 0xD24B, + 28051 - 11904: 0xAEFE, + 28052 - 11904: 0xAF4B, + 28053 - 11904: 0xAEF7, + 28054 - 11904: 0xFDAD, + 28055 - 11904: 0xD258, + 28056 - 11904: 0xD25D, + 28068 - 11904: 0x8DDC, + 28069 - 11904: 0x9444, + 28074 - 11904: 0xB265, + 28075 - 11904: 0xD5E1, + 28076 - 11904: 0xD5E5, + 28078 - 11904: 0xB252, + 28079 - 11904: 0xB250, + 28081 - 11904: 0x8DDD, + 28082 - 11904: 0xB247, + 28083 - 11904: 0xD5E3, + 28084 - 11904: 0xD5E2, + 28085 - 11904: 0xB25B, + 28087 - 11904: 0xD5E8, + 28088 - 11904: 0xB255, + 28089 - 11904: 0xA0D6, + 28090 - 11904: 0xD5FA, + 28091 - 11904: 0xD647, + 28092 - 11904: 0xB244, + 28093 - 11904: 0xD5F7, + 28094 - 11904: 0xD5F0, + 28095 - 11904: 0xB267, + 28096 - 11904: 0xD5E0, + 28098 - 11904: 0xD5FC, + 28100 - 11904: 0xB264, + 28101 - 11904: 0xB258, + 28102 - 11904: 0xB263, + 28103 - 11904: 0xB24E, + 28104 - 11904: 0xD5EC, + 28105 - 11904: 0xD5FE, + 28106 - 11904: 0xD5F6, + 28107 - 11904: 0xB24F, + 28108 - 11904: 0xB249, + 28109 - 11904: 0xD645, + 28111 - 11904: 0xD5FD, + 28112 - 11904: 0xD640, + 28113 - 11904: 0xB251, + 28114 - 11904: 0xB259, + 28115 - 11904: 0xD642, + 28116 - 11904: 0xD5EA, + 28117 - 11904: 0xD5FB, + 28118 - 11904: 0xD5EF, + 28119 - 11904: 0xD644, + 28120 - 11904: 0xB25E, + 28121 - 11904: 0xB246, + 28122 - 11904: 0xB25C, + 28123 - 11904: 0xD5F4, + 28124 - 11904: 0xD5F2, + 28125 - 11904: 0xD5F3, + 28126 - 11904: 0xB253, + 28127 - 11904: 0xD5EE, + 28128 - 11904: 0xD5ED, + 28129 - 11904: 0xB248, + 28130 - 11904: 0xD5E7, + 28131 - 11904: 0xD646, + 28132 - 11904: 0xB24A, + 28133 - 11904: 0xD5F1, + 28134 - 11904: 0xB268, + 28136 - 11904: 0xB262, + 28137 - 11904: 0xD5E6, + 28138 - 11904: 0xB25F, + 28139 - 11904: 0xB25D, + 28140 - 11904: 0xB266, + 28141 - 11904: 0xD5F8, + 28142 - 11904: 0xB261, + 28143 - 11904: 0xD252, + 28144 - 11904: 0xD5F9, + 28145 - 11904: 0xB260, + 28146 - 11904: 0xD641, + 28147 - 11904: 0xB245, + 28148 - 11904: 0xD5F5, + 28149 - 11904: 0xB257, + 28150 - 11904: 0xD5E9, + 28151 - 11904: 0xB256, + 28153 - 11904: 0xB254, + 28154 - 11904: 0xB24C, + 28155 - 11904: 0xB24B, + 28156 - 11904: 0xD9E7, + 28157 - 11904: 0xD643, + 28158 - 11904: 0x8C41, + 28160 - 11904: 0xD5EB, + 28162 - 11904: 0x97D5, + 28163 - 11904: 0xD9FC, + 28164 - 11904: 0x944A, + 28165 - 11904: 0xB24D, + 28170 - 11904: 0x944D, + 28175 - 11904: 0x97CB, + 28181 - 11904: 0x8DDE, + 28184 - 11904: 0x8DDF, + 28185 - 11904: 0xB541, + 28186 - 11904: 0xB25A, + 28187 - 11904: 0xB4EE, + 28188 - 11904: 0xD9F6, + 28189 - 11904: 0xFDB8, + 28191 - 11904: 0xD9EA, + 28192 - 11904: 0xB4EB, + 28193 - 11904: 0xB4E7, + 28194 - 11904: 0xDA49, + 28195 - 11904: 0xB4ED, + 28196 - 11904: 0xB4F1, + 28197 - 11904: 0xB4EC, + 28198 - 11904: 0xB4F5, + 28199 - 11904: 0xDA4D, + 28200 - 11904: 0xDA44, + 28201 - 11904: 0x8DE0, + 28202 - 11904: 0xFEF9, + 28203 - 11904: 0xD9F1, + 28204 - 11904: 0xB4FA, + 28205 - 11904: 0xB4F4, + 28206 - 11904: 0xD9FD, + 28207 - 11904: 0xFDBB, + 28208 - 11904: 0xDA4A, + 28209 - 11904: 0xDA43, + 28210 - 11904: 0xB4E8, + 28211 - 11904: 0xD9F7, + 28212 - 11904: 0xB4F7, + 28213 - 11904: 0xDA55, + 28214 - 11904: 0xDA56, + 28216 - 11904: 0xB4E5, + 28217 - 11904: 0xDA48, + 28218 - 11904: 0xB4F9, + 28219 - 11904: 0xD9FB, + 28220 - 11904: 0xD9ED, + 28221 - 11904: 0xD9EE, + 28222 - 11904: 0xB4FD, + 28223 - 11904: 0xD9F2, + 28224 - 11904: 0xD9F9, + 28225 - 11904: 0xD9F3, + 28227 - 11904: 0xB4FB, + 28228 - 11904: 0xB544, + 28229 - 11904: 0xD9EF, + 28230 - 11904: 0xD9E8, + 28231 - 11904: 0xD9E9, + 28233 - 11904: 0xD9EB, + 28234 - 11904: 0xB4EA, + 28235 - 11904: 0xD9F8, + 28237 - 11904: 0xB4F8, + 28238 - 11904: 0xB542, + 28239 - 11904: 0xFDC0, + 28240 - 11904: 0xFCF9, + 28241 - 11904: 0xD9FA, + 28242 - 11904: 0xDA53, + 28243 - 11904: 0xDA4B, + 28244 - 11904: 0xB4E6, + 28245 - 11904: 0xDA51, + 28246 - 11904: 0xB4F2, + 28247 - 11904: 0x8CDD, + 28248 - 11904: 0xB4F0, + 28249 - 11904: 0xFB7E, + 28250 - 11904: 0xDA57, + 28251 - 11904: 0xB4EF, + 28252 - 11904: 0xDA41, + 28253 - 11904: 0xD9F4, + 28254 - 11904: 0xD9FE, + 28255 - 11904: 0xB547, + 28256 - 11904: 0xDA45, + 28257 - 11904: 0xDA42, + 28258 - 11904: 0xD9F0, + 28259 - 11904: 0xB543, + 28260 - 11904: 0xDA4F, + 28261 - 11904: 0xDA4C, + 28262 - 11904: 0xDA54, + 28263 - 11904: 0xB4E9, + 28264 - 11904: 0xDA40, + 28265 - 11904: 0xB546, + 28267 - 11904: 0xDA47, + 28270 - 11904: 0xB4F3, + 28271 - 11904: 0xB4F6, + 28273 - 11904: 0xDA46, + 28274 - 11904: 0xB545, + 28275 - 11904: 0xD9F5, + 28276 - 11904: 0xD5E4, + 28278 - 11904: 0x92B3, + 28279 - 11904: 0xDA50, + 28280 - 11904: 0xDA4E, + 28281 - 11904: 0xDA52, + 28284 - 11904: 0xFDAF, + 28294 - 11904: 0x8DE1, + 28296 - 11904: 0xD9EC, + 28297 - 11904: 0xB540, + 28299 - 11904: 0x95D3, + 28301 - 11904: 0xDE61, + 28302 - 11904: 0xDE60, + 28303 - 11904: 0xDE46, + 28304 - 11904: 0xB7BD, + 28306 - 11904: 0xDE5F, + 28307 - 11904: 0xDE49, + 28308 - 11904: 0xDE4A, + 28310 - 11904: 0xB7C7, + 28311 - 11904: 0xDE68, + 28312 - 11904: 0xB7C2, + 28313 - 11904: 0xDE5E, + 28314 - 11904: 0x89C1, + 28315 - 11904: 0xDE43, + 28316 - 11904: 0xB7C8, + 28317 - 11904: 0xB7BE, + 28318 - 11904: 0xDE52, + 28319 - 11904: 0xDE48, + 28320 - 11904: 0xDE4B, + 28321 - 11904: 0xDE63, + 28322 - 11904: 0xB7B8, + 28323 - 11904: 0xDE6A, + 28324 - 11904: 0xDE62, + 28325 - 11904: 0xB7C1, + 28326 - 11904: 0xDE57, + 28327 - 11904: 0xB7CC, + 28330 - 11904: 0xB7CB, + 28331 - 11904: 0xB7C5, + 28334 - 11904: 0xDE69, + 28335 - 11904: 0xB7B9, + 28336 - 11904: 0xDE55, + 28337 - 11904: 0xDE4C, + 28338 - 11904: 0xDE59, + 28339 - 11904: 0xDE65, + 28340 - 11904: 0xB7CD, + 28341 - 11904: 0xFD68, + 28342 - 11904: 0xB7BB, + 28343 - 11904: 0xDE54, + 28344 - 11904: 0x9CB7, + 28345 - 11904: 0xDE4D, + 28346 - 11904: 0xB7C4, + 28347 - 11904: 0x8DE3, + 28348 - 11904: 0xB7C3, + 28349 - 11904: 0xDE50, + 28350 - 11904: 0xDE5A, + 28351 - 11904: 0xDE64, + 28352 - 11904: 0xDE47, + 28353 - 11904: 0xDE51, + 28354 - 11904: 0xB7BC, + 28355 - 11904: 0xDE5B, + 28356 - 11904: 0xB7C9, + 28357 - 11904: 0xB7C0, + 28358 - 11904: 0xDE4E, + 28359 - 11904: 0xB7BF, + 28360 - 11904: 0xDE45, + 28361 - 11904: 0xDE53, + 28362 - 11904: 0xDE67, + 28363 - 11904: 0xB4FE, + 28364 - 11904: 0xBAB0, + 28365 - 11904: 0xDE56, + 28366 - 11904: 0xE26C, + 28367 - 11904: 0xDE58, + 28368 - 11904: 0xDE66, + 28369 - 11904: 0xB7C6, + 28370 - 11904: 0xDE4F, + 28371 - 11904: 0xB7BA, + 28372 - 11904: 0xB7CA, + 28373 - 11904: 0xBCF0, + 28374 - 11904: 0xDE44, + 28376 - 11904: 0xDE5D, + 28377 - 11904: 0xFAC0, + 28378 - 11904: 0x8DE5, + 28379 - 11904: 0xFA64, + 28380 - 11904: 0xDE5C, + 28381 - 11904: 0x8947, + 28386 - 11904: 0x8DE4, + 28392 - 11904: 0x8DE7, + 28393 - 11904: 0x8DE8, + 28395 - 11904: 0xE2AA, + 28396 - 11904: 0xBAAD, + 28397 - 11904: 0xE27D, + 28398 - 11904: 0xE2A4, + 28399 - 11904: 0xBAA2, + 28401 - 11904: 0xE26E, + 28402 - 11904: 0xBAAF, + 28404 - 11904: 0xBA77, + 28405 - 11904: 0xE26D, + 28406 - 11904: 0xE2B0, + 28407 - 11904: 0xBAB1, + 28408 - 11904: 0xE271, + 28409 - 11904: 0xE2A3, + 28410 - 11904: 0xFDC7, + 28411 - 11904: 0xE273, + 28412 - 11904: 0xE2B3, + 28413 - 11904: 0xE2AF, + 28414 - 11904: 0xBA75, + 28415 - 11904: 0xBAA1, + 28416 - 11904: 0xE653, + 28417 - 11904: 0xBAAE, + 28418 - 11904: 0xBA7D, + 28419 - 11904: 0xE26F, + 28420 - 11904: 0xFDB0, + 28421 - 11904: 0xE2AE, + 28422 - 11904: 0xBAA3, + 28423 - 11904: 0xE2AB, + 28424 - 11904: 0xE2B8, + 28425 - 11904: 0xE275, + 28426 - 11904: 0xE27E, + 28427 - 11904: 0x9445, + 28428 - 11904: 0x97D6, + 28429 - 11904: 0xE2B6, + 28430 - 11904: 0xE2AC, + 28431 - 11904: 0xBA7C, + 28434 - 11904: 0xE27C, + 28435 - 11904: 0xBA76, + 28436 - 11904: 0xBA74, + 28437 - 11904: 0xBAA8, + 28438 - 11904: 0xFCC6, + 28439 - 11904: 0x9844, + 28440 - 11904: 0xE27A, + 28441 - 11904: 0xE277, + 28442 - 11904: 0xE278, + 28444 - 11904: 0xE2B2, + 28446 - 11904: 0xE2B7, + 28447 - 11904: 0xE2B5, + 28448 - 11904: 0xBA7A, + 28449 - 11904: 0xE2B9, + 28450 - 11904: 0xBA7E, + 28451 - 11904: 0xBAA7, + 28452 - 11904: 0x8DE9, + 28453 - 11904: 0xE270, + 28454 - 11904: 0xE5FA, + 28455 - 11904: 0xE279, + 28457 - 11904: 0xBA78, + 28458 - 11904: 0xBAAC, + 28459 - 11904: 0xBAA9, + 28460 - 11904: 0xBA7B, + 28461 - 11904: 0xE2A5, + 28462 - 11904: 0xE274, + 28463 - 11904: 0xBAAA, + 28464 - 11904: 0xE2A7, + 28465 - 11904: 0xBAA4, + 28466 - 11904: 0xBAA6, + 28467 - 11904: 0xBA73, + 28468 - 11904: 0x8DEA, + 28469 - 11904: 0xE2A9, + 28470 - 11904: 0xE2A1, + 28471 - 11904: 0xE272, + 28472 - 11904: 0xBAA5, + 28473 - 11904: 0xE2B1, + 28474 - 11904: 0xE2B4, + 28475 - 11904: 0xE27B, + 28476 - 11904: 0xE2A8, + 28477 - 11904: 0xFE50, + 28478 - 11904: 0xBA79, + 28479 - 11904: 0xBCDF, + 28480 - 11904: 0xE2A6, + 28481 - 11904: 0xE5F9, + 28483 - 11904: 0xE2AD, + 28484 - 11904: 0xFDCC, + 28494 - 11904: 0xE276, + 28495 - 11904: 0xE644, + 28496 - 11904: 0xE64E, + 28497 - 11904: 0xBCE2, + 28498 - 11904: 0xE64D, + 28499 - 11904: 0xE659, + 28500 - 11904: 0xBCE4, + 28501 - 11904: 0xE64B, + 28502 - 11904: 0x9DA7, + 28503 - 11904: 0xE64F, + 28504 - 11904: 0xBCEF, + 28506 - 11904: 0xE646, + 28507 - 11904: 0xBCE7, + 28508 - 11904: 0xFDCD, + 28509 - 11904: 0xE652, + 28510 - 11904: 0xE9F0, + 28511 - 11904: 0xBCF3, + 28512 - 11904: 0xBCF2, + 28513 - 11904: 0xE654, + 28514 - 11904: 0xE643, + 28515 - 11904: 0xE65E, + 28516 - 11904: 0xBCED, + 28518 - 11904: 0xBCE3, + 28519 - 11904: 0xE657, + 28521 - 11904: 0xE65B, + 28522 - 11904: 0xE660, + 28523 - 11904: 0xE655, + 28524 - 11904: 0xE649, + 28525 - 11904: 0xBCE6, + 28526 - 11904: 0xBCE9, + 28527 - 11904: 0xBCF1, + 28528 - 11904: 0xBCEC, + 28530 - 11904: 0xE64C, + 28531 - 11904: 0xE2A2, + 28532 - 11904: 0xFDCF, + 28534 - 11904: 0xE648, + 28535 - 11904: 0xE65F, + 28536 - 11904: 0xBCE8, + 28537 - 11904: 0x95D2, + 28538 - 11904: 0xBCEB, + 28539 - 11904: 0xE661, + 28540 - 11904: 0xBCE0, + 28541 - 11904: 0xE656, + 28542 - 11904: 0xE5FB, + 28543 - 11904: 0xE65C, + 28544 - 11904: 0xC0DF, + 28545 - 11904: 0x8DED, + 28546 - 11904: 0xE64A, + 28548 - 11904: 0xBCE1, + 28549 - 11904: 0xE645, + 28550 - 11904: 0xBCE5, + 28551 - 11904: 0xE5FC, + 28552 - 11904: 0xBAAB, + 28553 - 11904: 0xE641, + 28554 - 11904: 0xFCBA, + 28555 - 11904: 0xE65A, + 28556 - 11904: 0xE642, + 28557 - 11904: 0xE640, + 28558 - 11904: 0xBCEA, + 28560 - 11904: 0xE658, + 28562 - 11904: 0xE5FE, + 28563 - 11904: 0xE651, + 28564 - 11904: 0xE650, + 28565 - 11904: 0xE65D, + 28566 - 11904: 0xE647, + 28567 - 11904: 0xBCEE, + 28573 - 11904: 0xFDC5, + 28574 - 11904: 0xE9F3, + 28575 - 11904: 0xFDD2, + 28576 - 11904: 0xBF49, + 28577 - 11904: 0xBEFE, + 28578 - 11904: 0xEA40, + 28579 - 11904: 0xE9EB, + 28580 - 11904: 0xBF41, + 28581 - 11904: 0xE9F7, + 28582 - 11904: 0xBF48, + 28583 - 11904: 0xBF43, + 28584 - 11904: 0xE9F5, + 28585 - 11904: 0xED4F, + 28586 - 11904: 0xE9FB, + 28587 - 11904: 0xEA42, + 28588 - 11904: 0xE9FA, + 28589 - 11904: 0xE9E9, + 28590 - 11904: 0xE9F8, + 28591 - 11904: 0xEA44, + 28592 - 11904: 0xEA46, + 28593 - 11904: 0xBEFD, + 28594 - 11904: 0xEA45, + 28595 - 11904: 0xBF44, + 28596 - 11904: 0xBF4A, + 28597 - 11904: 0x9CDC, + 28598 - 11904: 0xBF47, + 28600 - 11904: 0xE9FE, + 28601 - 11904: 0xBF46, + 28602 - 11904: 0xE9F9, + 28603 - 11904: 0x95CF, + 28604 - 11904: 0xE9ED, + 28605 - 11904: 0xE9F2, + 28606 - 11904: 0x8DEE, + 28607 - 11904: 0xE9FD, + 28608 - 11904: 0xBF45, + 28609 - 11904: 0xBF42, + 28610 - 11904: 0xBEFC, + 28611 - 11904: 0xBF40, + 28612 - 11904: 0xE9F1, + 28614 - 11904: 0xE5FD, + 28615 - 11904: 0xE9EC, + 28616 - 11904: 0xE9EF, + 28617 - 11904: 0xEA41, + 28618 - 11904: 0xE9F4, + 28619 - 11904: 0xE9EA, + 28620 - 11904: 0xED4E, + 28621 - 11904: 0xEA43, + 28622 - 11904: 0xE9EE, + 28623 - 11904: 0xE9FC, + 28627 - 11904: 0xFDD4, + 28628 - 11904: 0xED51, + 28629 - 11904: 0xC0E3, + 28632 - 11904: 0xC0D7, + 28633 - 11904: 0x96EC, + 28634 - 11904: 0x96EB, + 28635 - 11904: 0xC0DB, + 28636 - 11904: 0xED53, + 28637 - 11904: 0xED59, + 28638 - 11904: 0xED57, + 28639 - 11904: 0xC0D9, + 28640 - 11904: 0xC0DA, + 28641 - 11904: 0xC0E1, + 28642 - 11904: 0xED5A, + 28643 - 11904: 0xED52, + 28644 - 11904: 0xC0DC, + 28646 - 11904: 0xED56, + 28647 - 11904: 0xED55, + 28648 - 11904: 0xED5B, + 28649 - 11904: 0xC0E2, + 28651 - 11904: 0xC0DD, + 28652 - 11904: 0xC0E0, + 28653 - 11904: 0xED54, + 28654 - 11904: 0xC0E4, + 28655 - 11904: 0xC0DE, + 28656 - 11904: 0xC0E5, + 28657 - 11904: 0xC0D8, + 28658 - 11904: 0xED58, + 28660 - 11904: 0xED50, + 28662 - 11904: 0x90B6, + 28663 - 11904: 0xEFF7, + 28664 - 11904: 0xFDC3, + 28666 - 11904: 0xC271, + 28667 - 11904: 0xEFF4, + 28668 - 11904: 0xEFF6, + 28670 - 11904: 0xC26F, + 28671 - 11904: 0xEFF2, + 28672 - 11904: 0xEFF3, + 28673 - 11904: 0xEFEE, + 28675 - 11904: 0x98AB, + 28676 - 11904: 0xE9F6, + 28677 - 11904: 0xEFEF, + 28678 - 11904: 0xC270, + 28679 - 11904: 0xEFEB, + 28681 - 11904: 0xC26D, + 28682 - 11904: 0xEFF8, + 28683 - 11904: 0xC26E, + 28684 - 11904: 0xEFEC, + 28685 - 11904: 0xEFED, + 28686 - 11904: 0xEFF1, + 28687 - 11904: 0xC273, + 28689 - 11904: 0xC272, + 28692 - 11904: 0xEFF0, + 28693 - 11904: 0xC378, + 28694 - 11904: 0xF25F, + 28695 - 11904: 0xF265, + 28696 - 11904: 0xC379, + 28697 - 11904: 0xF25C, + 28698 - 11904: 0xC376, + 28699 - 11904: 0xC373, + 28700 - 11904: 0xF267, + 28701 - 11904: 0xC377, + 28702 - 11904: 0x96EE, + 28703 - 11904: 0xC374, + 28704 - 11904: 0xF25E, + 28705 - 11904: 0xF261, + 28706 - 11904: 0xF262, + 28707 - 11904: 0xF263, + 28708 - 11904: 0xF266, + 28710 - 11904: 0xEFF5, + 28711 - 11904: 0xF25D, + 28712 - 11904: 0xC375, + 28713 - 11904: 0xF264, + 28714 - 11904: 0xF268, + 28715 - 11904: 0xF260, + 28716 - 11904: 0x8DF4, + 28719 - 11904: 0xF45D, + 28720 - 11904: 0xC46A, + 28721 - 11904: 0xF460, + 28722 - 11904: 0xC46B, + 28723 - 11904: 0xF468, + 28724 - 11904: 0xF45F, + 28725 - 11904: 0xF45C, + 28727 - 11904: 0xF45E, + 28728 - 11904: 0xF462, + 28729 - 11904: 0xF465, + 28730 - 11904: 0xF464, + 28731 - 11904: 0xF467, + 28732 - 11904: 0xF45B, + 28734 - 11904: 0xC469, + 28735 - 11904: 0xF463, + 28736 - 11904: 0xF466, + 28737 - 11904: 0xF469, + 28738 - 11904: 0xF461, + 28739 - 11904: 0xF5D3, + 28740 - 11904: 0xF5D4, + 28741 - 11904: 0xF5D8, + 28742 - 11904: 0xF5D9, + 28744 - 11904: 0xF5D6, + 28745 - 11904: 0xF5D7, + 28746 - 11904: 0xF5D5, + 28747 - 11904: 0xFDE0, + 28748 - 11904: 0xC4E9, + 28749 - 11904: 0x8C67, + 28752 - 11904: 0x8DF6, + 28753 - 11904: 0xC578, + 28754 - 11904: 0xF6EB, + 28756 - 11904: 0x8DF7, + 28757 - 11904: 0xF6E8, + 28758 - 11904: 0xF6E9, + 28759 - 11904: 0xF6EA, + 28760 - 11904: 0xC579, + 28762 - 11904: 0xF7E5, + 28763 - 11904: 0xF7E4, + 28764 - 11904: 0x8FFA, + 28765 - 11904: 0xF8AF, + 28766 - 11904: 0xC5F4, + 28767 - 11904: 0xF8AD, + 28768 - 11904: 0xF8B0, + 28769 - 11904: 0xF8AE, + 28770 - 11904: 0xF8F5, + 28771 - 11904: 0xC657, + 28772 - 11904: 0xC665, + 28773 - 11904: 0xF9A3, + 28774 - 11904: 0xF96C, + 28775 - 11904: 0x97D0, + 28776 - 11904: 0xF9A2, + 28777 - 11904: 0xF9D0, + 28778 - 11904: 0xF9D1, + 28779 - 11904: 0xA4F5, + 28780 - 11904: 0x8BD2, + 28782 - 11904: 0x87DE, + 28783 - 11904: 0x8DF8, + 28784 - 11904: 0xA6C7, + 28785 - 11904: 0xCA41, + 28788 - 11904: 0xCB5E, + 28789 - 11904: 0x90D9, + 28790 - 11904: 0xA85F, + 28791 - 11904: 0x8C47, + 28792 - 11904: 0xA862, + 28793 - 11904: 0xFAF0, + 28794 - 11904: 0xCB5F, + 28796 - 11904: 0xA860, + 28797 - 11904: 0xA861, + 28798 - 11904: 0xFDE1, + 28799 - 11904: 0x8DF9, + 28801 - 11904: 0xFDE3, + 28802 - 11904: 0xCD58, + 28803 - 11904: 0xCD5A, + 28804 - 11904: 0xCD55, + 28805 - 11904: 0xCD52, + 28806 - 11904: 0xCD54, + 28809 - 11904: 0x8DFA, + 28810 - 11904: 0xAAA4, + 28811 - 11904: 0xFB63, + 28814 - 11904: 0xAAA2, + 28815 - 11904: 0x90A6, + 28817 - 11904: 0xCD56, + 28818 - 11904: 0xAAA3, + 28819 - 11904: 0xCD53, + 28820 - 11904: 0xCD50, + 28821 - 11904: 0xAAA1, + 28822 - 11904: 0xCD57, + 28824 - 11904: 0xCD51, + 28825 - 11904: 0xAAA5, + 28826 - 11904: 0xCD59, + 28831 - 11904: 0xCFAF, + 28832 - 11904: 0x9970, + 28833 - 11904: 0xCFB3, + 28835 - 11904: 0x91EB, + 28836 - 11904: 0xACB7, + 28837 - 11904: 0x9770, + 28838 - 11904: 0x986F, + 28839 - 11904: 0xFDE2, + 28841 - 11904: 0xCFB6, + 28843 - 11904: 0xACAF, + 28844 - 11904: 0xACB2, + 28845 - 11904: 0xACB4, + 28846 - 11904: 0xACB6, + 28847 - 11904: 0xACB3, + 28848 - 11904: 0xCFB2, + 28849 - 11904: 0xCFB1, + 28851 - 11904: 0xACB1, + 28852 - 11904: 0xCFB4, + 28853 - 11904: 0xCFB5, + 28855 - 11904: 0xCFAE, + 28856 - 11904: 0xACB5, + 28857 - 11904: 0x98F2, + 28858 - 11904: 0xACB0, + 28859 - 11904: 0x9AFC, + 28860 - 11904: 0x896C, + 28861 - 11904: 0xFDFD, + 28862 - 11904: 0xCFB0, + 28864 - 11904: 0x995E, + 28868 - 11904: 0x95BD, + 28869 - 11904: 0xD277, + 28870 - 11904: 0xD278, + 28871 - 11904: 0xD279, + 28872 - 11904: 0xAF50, + 28874 - 11904: 0xAF4C, + 28875 - 11904: 0xD26E, + 28876 - 11904: 0xFDE4, + 28877 - 11904: 0xD276, + 28878 - 11904: 0xD27B, + 28879 - 11904: 0xAF51, + 28880 - 11904: 0x91E6, + 28881 - 11904: 0xD26C, + 28882 - 11904: 0xD272, + 28883 - 11904: 0xD26B, + 28884 - 11904: 0xD275, + 28885 - 11904: 0xFDE5, + 28886 - 11904: 0xFDE6, + 28887 - 11904: 0xD271, + 28888 - 11904: 0xAF4D, + 28889 - 11904: 0xAF4F, + 28890 - 11904: 0xD27A, + 28892 - 11904: 0xD26A, + 28893 - 11904: 0xD26D, + 28894 - 11904: 0xD273, + 28895 - 11904: 0xFDE7, + 28896 - 11904: 0xD274, + 28897 - 11904: 0xD27C, + 28898 - 11904: 0xD270, + 28900 - 11904: 0xAF4E, + 28911 - 11904: 0xB26D, + 28912 - 11904: 0xD64E, + 28913 - 11904: 0x9454, + 28915 - 11904: 0xD650, + 28916 - 11904: 0xD64C, + 28917 - 11904: 0x99B8, + 28918 - 11904: 0xD658, + 28919 - 11904: 0xD64A, + 28920 - 11904: 0xD657, + 28921 - 11904: 0xB269, + 28922 - 11904: 0xD648, + 28923 - 11904: 0xDA5B, + 28924 - 11904: 0xD652, + 28925 - 11904: 0xB26C, + 28926 - 11904: 0x97E9, + 28927 - 11904: 0xD653, + 28928 - 11904: 0xD656, + 28930 - 11904: 0xD65A, + 28932 - 11904: 0xD64F, + 28933 - 11904: 0x9346, + 28934 - 11904: 0xD654, + 28937 - 11904: 0xB26A, + 28938 - 11904: 0xB26B, + 28939 - 11904: 0xD659, + 28940 - 11904: 0xD64D, + 28941 - 11904: 0xD649, + 28942 - 11904: 0xD65B, + 28944 - 11904: 0xD651, + 28947 - 11904: 0xD655, + 28951 - 11904: 0xD64B, + 28953 - 11904: 0xB548, + 28954 - 11904: 0xB549, + 28955 - 11904: 0xDA65, + 28956 - 11904: 0xB54F, + 28957 - 11904: 0x9863, + 28958 - 11904: 0xDA59, + 28959 - 11904: 0xDA62, + 28960 - 11904: 0xDA58, + 28961 - 11904: 0xB54C, + 28962 - 11904: 0xDA60, + 28963 - 11904: 0xDA5E, + 28965 - 11904: 0xDA5F, + 28966 - 11904: 0xB54A, + 28968 - 11904: 0xDA63, + 28969 - 11904: 0x95BC, + 28971 - 11904: 0xFDED, + 28972 - 11904: 0xFDF7, + 28974 - 11904: 0xDA5C, + 28975 - 11904: 0xDA5A, + 28976 - 11904: 0xB54B, + 28977 - 11904: 0xDA5D, + 28978 - 11904: 0xDA61, + 28979 - 11904: 0x9870, + 28980 - 11904: 0x96F6, + 28981 - 11904: 0x8EA9, + 28982 - 11904: 0xB54D, + 28986 - 11904: 0xDA64, + 28987 - 11904: 0x9451, + 28990 - 11904: 0x8E43, + 28992 - 11904: 0x8B5A, + 28993 - 11904: 0xDE70, + 28994 - 11904: 0xDE77, + 28995 - 11904: 0xDE79, + 28996 - 11904: 0xDEA1, + 28997 - 11904: 0xFDEE, + 28998 - 11904: 0xB7DA, + 28999 - 11904: 0xDE6B, + 29001 - 11904: 0xB7D2, + 29002 - 11904: 0xFDF0, + 29003 - 11904: 0xDE7A, + 29004 - 11904: 0xB7D7, + 29005 - 11904: 0xDEA2, + 29006 - 11904: 0xB7CE, + 29007 - 11904: 0xFDF4, + 29008 - 11904: 0xDE7D, + 29009 - 11904: 0x9BF5, + 29010 - 11904: 0xDE6D, + 29011 - 11904: 0xDE7E, + 29012 - 11904: 0xDE6C, + 29014 - 11904: 0xB7DC, + 29015 - 11904: 0x8CEE, + 29016 - 11904: 0xDE78, + 29017 - 11904: 0xB7CF, + 29018 - 11904: 0xDEA3, + 29020 - 11904: 0xB7D4, + 29021 - 11904: 0xDE71, + 29022 - 11904: 0xB7D9, + 29023 - 11904: 0xDE7C, + 29024 - 11904: 0xDE6F, + 29025 - 11904: 0xDE76, + 29026 - 11904: 0xDE72, + 29027 - 11904: 0xDE6E, + 29028 - 11904: 0xB7D1, + 29029 - 11904: 0xB7D8, + 29030 - 11904: 0xB7D6, + 29031 - 11904: 0xB7D3, + 29032 - 11904: 0xB7DB, + 29033 - 11904: 0xB7D0, + 29034 - 11904: 0xDE75, + 29035 - 11904: 0x977E, + 29036 - 11904: 0xB7D5, + 29038 - 11904: 0xFDF1, + 29040 - 11904: 0xDE7B, + 29041 - 11904: 0x9BD5, + 29042 - 11904: 0xDE73, + 29043 - 11904: 0x9AC3, + 29045 - 11904: 0x97C8, + 29046 - 11904: 0xA0DB, + 29047 - 11904: 0x91D0, + 29048 - 11904: 0xDE74, + 29050 - 11904: 0x9FE4, + 29051 - 11904: 0xE2C1, + 29052 - 11904: 0x8FDD, + 29053 - 11904: 0xBAB4, + 29054 - 11904: 0x91E9, + 29056 - 11904: 0xE2BD, + 29057 - 11904: 0xE2C3, + 29058 - 11904: 0xE2BF, + 29060 - 11904: 0xBAB6, + 29061 - 11904: 0xE2BE, + 29062 - 11904: 0xE2C2, + 29063 - 11904: 0xE2BA, + 29064 - 11904: 0x98E0, + 29065 - 11904: 0xE2BC, + 29066 - 11904: 0xBAB5, + 29068 - 11904: 0x92CA, + 29070 - 11904: 0x9857, + 29071 - 11904: 0xE2C0, + 29072 - 11904: 0xE2BB, + 29073 - 11904: 0x8C51, + 29074 - 11904: 0xBAB7, + 29076 - 11904: 0xBAB2, + 29078 - 11904: 0xFDEB, + 29079 - 11904: 0xE2C4, + 29080 - 11904: 0x9B49, + 29081 - 11904: 0xBAB3, + 29082 - 11904: 0xE667, + 29083 - 11904: 0xE664, + 29084 - 11904: 0xE670, + 29085 - 11904: 0xE66A, + 29086 - 11904: 0xE66C, + 29087 - 11904: 0xBCF4, + 29088 - 11904: 0xE666, + 29089 - 11904: 0xE66E, + 29090 - 11904: 0x9D76, + 29091 - 11904: 0x9EAF, + 29092 - 11904: 0xE66D, + 29093 - 11904: 0xE66B, + 29095 - 11904: 0xE671, + 29096 - 11904: 0xBCF7, + 29097 - 11904: 0xE668, + 29098 - 11904: 0xE66F, + 29100 - 11904: 0xBCF5, + 29101 - 11904: 0x9CCC, + 29103 - 11904: 0xE663, + 29104 - 11904: 0xE665, + 29105 - 11904: 0xBCF6, + 29106 - 11904: 0xE662, + 29107 - 11904: 0xE672, + 29108 - 11904: 0xFDEA, + 29109 - 11904: 0xE669, + 29111 - 11904: 0x8DF1, + 29112 - 11904: 0xEA4A, + 29113 - 11904: 0xBF51, + 29114 - 11904: 0xFDFB, + 29116 - 11904: 0xEA55, + 29117 - 11904: 0xEA53, + 29118 - 11904: 0xBF4B, + 29119 - 11904: 0xEA49, + 29120 - 11904: 0xEA4C, + 29121 - 11904: 0xEA4D, + 29122 - 11904: 0xEA48, + 29123 - 11904: 0xBF55, + 29124 - 11904: 0xBF56, + 29125 - 11904: 0xEA47, + 29126 - 11904: 0xEA56, + 29127 - 11904: 0xEA51, + 29128 - 11904: 0xBF4F, + 29129 - 11904: 0xBF4C, + 29130 - 11904: 0xEA50, + 29131 - 11904: 0xEA4E, + 29134 - 11904: 0xBF52, + 29135 - 11904: 0xEA52, + 29136 - 11904: 0xBF4D, + 29137 - 11904: 0x8E53, + 29138 - 11904: 0xBF4E, + 29140 - 11904: 0xEA4F, + 29141 - 11904: 0xBF50, + 29142 - 11904: 0xEA4B, + 29144 - 11904: 0xEA54, + 29145 - 11904: 0xBF53, + 29146 - 11904: 0xEA57, + 29147 - 11904: 0xEA58, + 29148 - 11904: 0xBF54, + 29149 - 11904: 0xFACF, + 29151 - 11904: 0xC0E7, + 29152 - 11904: 0xC0EE, + 29153 - 11904: 0xED5C, + 29154 - 11904: 0xED62, + 29156 - 11904: 0xED60, + 29157 - 11904: 0xC0EA, + 29158 - 11904: 0xC0E9, + 29159 - 11904: 0xC0E6, + 29160 - 11904: 0xED5E, + 29163 - 11904: 0x96F9, + 29164 - 11904: 0xC0EC, + 29165 - 11904: 0xC0EB, + 29166 - 11904: 0xC0E8, + 29168 - 11904: 0xED61, + 29169 - 11904: 0xED5D, + 29170 - 11904: 0xED5F, + 29172 - 11904: 0xC0ED, + 29173 - 11904: 0x98BF, + 29174 - 11904: 0x9E49, + 29176 - 11904: 0xC277, + 29177 - 11904: 0xEFFB, + 29179 - 11904: 0xC274, + 29180 - 11904: 0xC275, + 29181 - 11904: 0xEFFD, + 29182 - 11904: 0xC276, + 29183 - 11904: 0xEFFA, + 29184 - 11904: 0x8CA7, + 29185 - 11904: 0xEFF9, + 29186 - 11904: 0xF26C, + 29187 - 11904: 0xEFFC, + 29189 - 11904: 0xF26D, + 29190 - 11904: 0xC37A, + 29191 - 11904: 0xF26B, + 29193 - 11904: 0x9BCA, + 29194 - 11904: 0xF26A, + 29196 - 11904: 0xF269, + 29197 - 11904: 0xC37B, + 29198 - 11904: 0xFDFE, + 29199 - 11904: 0x92DC, + 29200 - 11904: 0xC46C, + 29203 - 11904: 0xF46A, + 29204 - 11904: 0xF46B, + 29205 - 11904: 0xFE41, + 29206 - 11904: 0x91CC, + 29207 - 11904: 0x91E2, + 29209 - 11904: 0xF5DC, + 29210 - 11904: 0xF5DB, + 29211 - 11904: 0xC4EA, + 29213 - 11904: 0xF5DA, + 29214 - 11904: 0xF6EC, + 29215 - 11904: 0xF6ED, + 29218 - 11904: 0xF7E6, + 29219 - 11904: 0xF8B1, + 29220 - 11904: 0xFE44, + 29221 - 11904: 0x875F, + 29222 - 11904: 0xF8F6, + 29223 - 11904: 0xF9BC, + 29224 - 11904: 0xC679, + 29225 - 11904: 0xF9C6, + 29226 - 11904: 0xA4F6, + 29227 - 11904: 0x8BD3, + 29228 - 11904: 0xAAA6, + 29229 - 11904: 0xAAA7, + 29230 - 11904: 0xFE47, + 29232 - 11904: 0xACB8, + 29237 - 11904: 0xC0EF, + 29238 - 11904: 0xA4F7, + 29240 - 11904: 0xAAA8, + 29241 - 11904: 0xAF52, + 29242 - 11904: 0xB7DD, + 29243 - 11904: 0xA4F8, + 29245 - 11904: 0xB26E, + 29246 - 11904: 0xBAB8, + 29247 - 11904: 0xC962, + 29248 - 11904: 0xFE48, + 29249 - 11904: 0xCFB7, + 29250 - 11904: 0xD27D, + 29252 - 11904: 0xE2C5, + 29254 - 11904: 0xC0F0, + 29255 - 11904: 0xA4F9, + 29256 - 11904: 0xAAA9, + 29257 - 11904: 0xCFB8, + 29258 - 11904: 0xCFB9, + 29259 - 11904: 0xDA66, + 29260 - 11904: 0xB550, + 29263 - 11904: 0xDEA4, + 29264 - 11904: 0xA0E4, + 29266 - 11904: 0xB7DE, + 29267 - 11904: 0xE2C6, + 29269 - 11904: 0xFE4B, + 29270 - 11904: 0xBCF8, + 29271 - 11904: 0xFE4C, + 29272 - 11904: 0xC37C, + 29273 - 11904: 0xA4FA, + 29274 - 11904: 0xDA67, + 29275 - 11904: 0xA4FB, + 29276 - 11904: 0x8DBF, + 29277 - 11904: 0xA6C9, + 29278 - 11904: 0xCA42, + 29279 - 11904: 0xA6C8, + 29280 - 11904: 0xA865, + 29281 - 11904: 0xA864, + 29282 - 11904: 0xA863, + 29283 - 11904: 0xCB60, + 29286 - 11904: 0x9E78, + 29287 - 11904: 0xAAAA, + 29289 - 11904: 0xAAAB, + 29290 - 11904: 0xCD5B, + 29292 - 11904: 0xCFBA, + 29294 - 11904: 0xCFBD, + 29295 - 11904: 0xACBA, + 29296 - 11904: 0xCFBB, + 29298 - 11904: 0xACB9, + 29299 - 11904: 0xCFBC, + 29300 - 11904: 0xACBB, + 29302 - 11904: 0xD2A2, + 29303 - 11904: 0xD2A1, + 29304 - 11904: 0xD27E, + 29305 - 11904: 0xAF53, + 29307 - 11904: 0xD65D, + 29308 - 11904: 0xD65E, + 29309 - 11904: 0xB26F, + 29310 - 11904: 0xD65C, + 29311 - 11904: 0xD65F, + 29312 - 11904: 0xB552, + 29313 - 11904: 0xB270, + 29314 - 11904: 0xFE51, + 29316 - 11904: 0xB551, + 29317 - 11904: 0xDA6B, + 29318 - 11904: 0xDA6A, + 29319 - 11904: 0x9456, + 29320 - 11904: 0xDA68, + 29321 - 11904: 0xDA69, + 29323 - 11904: 0xDA6C, + 29324 - 11904: 0xDEA6, + 29325 - 11904: 0xDEA5, + 29326 - 11904: 0xDEA9, + 29327 - 11904: 0x9D61, + 29328 - 11904: 0xDEA8, + 29329 - 11904: 0xDEA7, + 29330 - 11904: 0xBAB9, + 29331 - 11904: 0xE2C9, + 29332 - 11904: 0x9457, + 29333 - 11904: 0xE2C8, + 29334 - 11904: 0xBABA, + 29335 - 11904: 0xE2C7, + 29336 - 11904: 0xE673, + 29338 - 11904: 0xE674, + 29339 - 11904: 0xBCF9, + 29341 - 11904: 0xEA59, + 29342 - 11904: 0xEA5A, + 29343 - 11904: 0x9966, + 29345 - 11904: 0xF272, + 29346 - 11904: 0xC37D, + 29347 - 11904: 0xF271, + 29348 - 11904: 0xF270, + 29349 - 11904: 0xF26E, + 29350 - 11904: 0xF26F, + 29351 - 11904: 0xC4EB, + 29352 - 11904: 0xF46C, + 29353 - 11904: 0xF6EE, + 29354 - 11904: 0xF8F7, + 29356 - 11904: 0xA4FC, + 29357 - 11904: 0x8BD5, + 29358 - 11904: 0xC9A5, + 29359 - 11904: 0xA5C7, + 29360 - 11904: 0xC9A6, + 29362 - 11904: 0xA069, + 29364 - 11904: 0xCA43, + 29365 - 11904: 0xCA44, + 29370 - 11904: 0xCB66, + 29373 - 11904: 0xCB62, + 29375 - 11904: 0xCB61, + 29376 - 11904: 0xAAAC, + 29377 - 11904: 0xCB65, + 29378 - 11904: 0xA867, + 29379 - 11904: 0xCB63, + 29380 - 11904: 0xA866, + 29381 - 11904: 0xCB67, + 29382 - 11904: 0xCB64, + 29385 - 11904: 0xCD5F, + 29386 - 11904: 0xCFBE, + 29387 - 11904: 0xCD5D, + 29388 - 11904: 0xCD64, + 29389 - 11904: 0x98B4, + 29390 - 11904: 0xAAAD, + 29392 - 11904: 0xAAB0, + 29393 - 11904: 0xCD65, + 29394 - 11904: 0xCD61, + 29396 - 11904: 0xCD62, + 29398 - 11904: 0xCD5C, + 29399 - 11904: 0xAAAF, + 29400 - 11904: 0xCD5E, + 29401 - 11904: 0xAAAE, + 29402 - 11904: 0xCD63, + 29404 - 11904: 0xCD60, + 29407 - 11904: 0xCFC2, + 29408 - 11904: 0xACBD, + 29409 - 11904: 0xACBE, + 29410 - 11904: 0xA049, + 29411 - 11904: 0xCFC5, + 29412 - 11904: 0xCFBF, + 29414 - 11904: 0xCFC4, + 29416 - 11904: 0xCFC0, + 29417 - 11904: 0xACBC, + 29418 - 11904: 0xCFC3, + 29419 - 11904: 0xCFC1, + 29427 - 11904: 0xD2A8, + 29428 - 11904: 0xD2A5, + 29430 - 11904: 0xD2A7, + 29431 - 11904: 0xAF58, + 29432 - 11904: 0xAF57, + 29433 - 11904: 0xAF55, + 29434 - 11904: 0xD2A4, + 29435 - 11904: 0xD2A9, + 29436 - 11904: 0xAF54, + 29437 - 11904: 0xAF56, + 29438 - 11904: 0xD2A6, + 29439 - 11904: 0xD667, + 29440 - 11904: 0xD2A3, + 29441 - 11904: 0xD2AA, + 29442 - 11904: 0xA04C, + 29444 - 11904: 0x9E65, + 29447 - 11904: 0xD662, + 29448 - 11904: 0xD666, + 29450 - 11904: 0xD665, + 29451 - 11904: 0xDA6E, + 29452 - 11904: 0xDA79, + 29455 - 11904: 0xD668, + 29456 - 11904: 0x98B5, + 29457 - 11904: 0xD663, + 29458 - 11904: 0xDA6D, + 29459 - 11904: 0xB274, + 29462 - 11904: 0xB273, + 29463 - 11904: 0xD661, + 29464 - 11904: 0xD664, + 29465 - 11904: 0xB275, + 29467 - 11904: 0xB272, + 29468 - 11904: 0xB271, + 29469 - 11904: 0xD660, + 29470 - 11904: 0xD669, + 29474 - 11904: 0xDA70, + 29475 - 11904: 0xDA77, + 29477 - 11904: 0xB554, + 29478 - 11904: 0xDA76, + 29479 - 11904: 0xDA73, + 29480 - 11904: 0xFE58, + 29481 - 11904: 0xB556, + 29482 - 11904: 0xFE52, + 29483 - 11904: 0xFE53, + 29484 - 11904: 0xA065, + 29485 - 11904: 0xDA75, + 29486 - 11904: 0xFE59, + 29488 - 11904: 0xDA6F, + 29489 - 11904: 0xDA71, + 29490 - 11904: 0xDA74, + 29491 - 11904: 0xDA72, + 29492 - 11904: 0xB555, + 29493 - 11904: 0xDA78, + 29494 - 11904: 0xB553, + 29495 - 11904: 0xB7DF, + 29496 - 11904: 0x98B7, + 29497 - 11904: 0x98B8, + 29498 - 11904: 0xDEAD, + 29499 - 11904: 0xDEAC, + 29500 - 11904: 0xDEAA, + 29502 - 11904: 0xB7E2, + 29503 - 11904: 0xB7E1, + 29504 - 11904: 0xDEAE, + 29505 - 11904: 0x98BA, + 29506 - 11904: 0xDEAB, + 29507 - 11904: 0xE2CA, + 29508 - 11904: 0xBABB, + 29509 - 11904: 0xB7E0, + 29512 - 11904: 0x98BB, + 29513 - 11904: 0xDEB0, + 29514 - 11904: 0xDEAF, + 29516 - 11904: 0xE2CD, + 29517 - 11904: 0xE2CB, + 29518 - 11904: 0xBCFA, + 29519 - 11904: 0x9FBC, + 29520 - 11904: 0xBABC, + 29521 - 11904: 0xE2CC, + 29522 - 11904: 0xE676, + 29527 - 11904: 0xBCFB, + 29528 - 11904: 0xE675, + 29529 - 11904: 0xE67E, + 29530 - 11904: 0xE67D, + 29531 - 11904: 0xE67B, + 29533 - 11904: 0xE67A, + 29534 - 11904: 0xE677, + 29535 - 11904: 0xE678, + 29536 - 11904: 0xE679, + 29537 - 11904: 0xE67C, + 29538 - 11904: 0xE6A1, + 29541 - 11904: 0xEA5F, + 29542 - 11904: 0xEA5C, + 29543 - 11904: 0xEA5D, + 29544 - 11904: 0xBF57, + 29545 - 11904: 0xEA5B, + 29546 - 11904: 0xEA61, + 29547 - 11904: 0xEA60, + 29548 - 11904: 0xEA5E, + 29550 - 11904: 0xED64, + 29551 - 11904: 0xED65, + 29552 - 11904: 0xC0F1, + 29553 - 11904: 0xA04A, + 29554 - 11904: 0xC0F2, + 29555 - 11904: 0xED63, + 29556 - 11904: 0x9EC7, + 29557 - 11904: 0xC279, + 29558 - 11904: 0xEFFE, + 29559 - 11904: 0xC278, + 29560 - 11904: 0xC37E, + 29562 - 11904: 0xC3A1, + 29563 - 11904: 0xC46D, + 29564 - 11904: 0xF46E, + 29565 - 11904: 0xF46D, + 29566 - 11904: 0xF5DD, + 29567 - 11904: 0xF6EF, + 29568 - 11904: 0xC57A, + 29569 - 11904: 0xF7E8, + 29570 - 11904: 0xF7E7, + 29571 - 11904: 0xF7E9, + 29572 - 11904: 0xA5C8, + 29573 - 11904: 0xCFC6, + 29574 - 11904: 0xAF59, + 29575 - 11904: 0xB276, + 29576 - 11904: 0xD66A, + 29577 - 11904: 0xA5C9, + 29578 - 11904: 0xC9A7, + 29579 - 11904: 0xA4FD, + 29580 - 11904: 0x8CA9, + 29582 - 11904: 0xCA45, + 29583 - 11904: 0x98AE, + 29586 - 11904: 0xCB6C, + 29587 - 11904: 0xCB6A, + 29588 - 11904: 0xCB6B, + 29589 - 11904: 0xCB68, + 29590 - 11904: 0xA868, + 29591 - 11904: 0xCB69, + 29592 - 11904: 0x92D6, + 29596 - 11904: 0xFAE1, + 29597 - 11904: 0xCD6D, + 29598 - 11904: 0x91D4, + 29599 - 11904: 0xAAB3, + 29600 - 11904: 0xCD6B, + 29601 - 11904: 0xCD67, + 29602 - 11904: 0xCD6A, + 29604 - 11904: 0xCD66, + 29605 - 11904: 0xAAB5, + 29606 - 11904: 0xCD69, + 29607 - 11904: 0xFADE, + 29608 - 11904: 0xAAB2, + 29609 - 11904: 0xAAB1, + 29610 - 11904: 0xFE5B, + 29611 - 11904: 0xAAB4, + 29612 - 11904: 0xCD6C, + 29613 - 11904: 0xCD68, + 29618 - 11904: 0xACC2, + 29619 - 11904: 0xACC5, + 29620 - 11904: 0xCFCE, + 29621 - 11904: 0xCFCD, + 29622 - 11904: 0xCFCC, + 29623 - 11904: 0xACBF, + 29624 - 11904: 0xCFD5, + 29625 - 11904: 0xCFCB, + 29626 - 11904: 0x8C53, + 29627 - 11904: 0xACC1, + 29628 - 11904: 0xD2AF, + 29630 - 11904: 0xCFD2, + 29631 - 11904: 0xCFD0, + 29632 - 11904: 0xACC4, + 29634 - 11904: 0xCFC8, + 29635 - 11904: 0xCFD3, + 29636 - 11904: 0x87BF, + 29637 - 11904: 0xCFCA, + 29638 - 11904: 0xCFD4, + 29639 - 11904: 0xCFD1, + 29640 - 11904: 0xCFC9, + 29641 - 11904: 0xFE5E, + 29642 - 11904: 0xACC0, + 29643 - 11904: 0xCFD6, + 29644 - 11904: 0xCFC7, + 29645 - 11904: 0xACC3, + 29646 - 11904: 0xFBD7, + 29647 - 11904: 0xFE5A, + 29648 - 11904: 0x94C5, + 29650 - 11904: 0xD2B4, + 29651 - 11904: 0xD2AB, + 29652 - 11904: 0xD2B6, + 29653 - 11904: 0xFACA, + 29654 - 11904: 0xD2AE, + 29655 - 11904: 0xD2B9, + 29656 - 11904: 0xD2BA, + 29657 - 11904: 0xD2AC, + 29658 - 11904: 0xD2B8, + 29659 - 11904: 0xD2B5, + 29660 - 11904: 0xD2B3, + 29661 - 11904: 0xD2B7, + 29662 - 11904: 0xAF5F, + 29664 - 11904: 0xAF5D, + 29665 - 11904: 0x98C1, + 29666 - 11904: 0x975C, + 29667 - 11904: 0xD2B1, + 29668 - 11904: 0xFE74, + 29669 - 11904: 0xD2AD, + 29670 - 11904: 0x9773, + 29671 - 11904: 0xD2B0, + 29672 - 11904: 0xD2BB, + 29673 - 11904: 0xD2B2, + 29674 - 11904: 0xAF5E, + 29675 - 11904: 0xCFCF, + 29677 - 11904: 0xAF5A, + 29678 - 11904: 0xAF5C, + 29679 - 11904: 0xFA46, + 29683 - 11904: 0x9764, + 29684 - 11904: 0xD678, + 29685 - 11904: 0xD66D, + 29686 - 11904: 0xD66B, + 29687 - 11904: 0xFE68, + 29688 - 11904: 0xD66C, + 29689 - 11904: 0x964E, + 29690 - 11904: 0xD673, + 29691 - 11904: 0x9765, + 29692 - 11904: 0xD674, + 29693 - 11904: 0xD670, + 29694 - 11904: 0xB27B, + 29695 - 11904: 0xD675, + 29696 - 11904: 0xD672, + 29697 - 11904: 0xD66F, + 29698 - 11904: 0x8C5A, + 29699 - 11904: 0xB279, + 29700 - 11904: 0xD66E, + 29701 - 11904: 0xB277, + 29702 - 11904: 0xB27A, + 29703 - 11904: 0xD671, + 29704 - 11904: 0xD679, + 29705 - 11904: 0xAF5B, + 29706 - 11904: 0xB278, + 29707 - 11904: 0xD677, + 29708 - 11904: 0xD676, + 29709 - 11904: 0xB27C, + 29713 - 11904: 0x89A1, + 29714 - 11904: 0x95FA, + 29716 - 11904: 0x92D4, + 29717 - 11904: 0xFE69, + 29718 - 11904: 0xDA7E, + 29719 - 11904: 0xFB45, + 29721 - 11904: 0x98C8, + 29722 - 11904: 0xDAA1, + 29723 - 11904: 0xB560, + 29724 - 11904: 0x90EF, + 29725 - 11904: 0xDAA7, + 29726 - 11904: 0x98C9, + 29727 - 11904: 0x98CA, + 29728 - 11904: 0xDAA9, + 29729 - 11904: 0xDAA2, + 29730 - 11904: 0xB55A, + 29731 - 11904: 0xDAA6, + 29732 - 11904: 0xDAA5, + 29733 - 11904: 0xB55B, + 29734 - 11904: 0xB561, + 29736 - 11904: 0xB562, + 29737 - 11904: 0xDAA8, + 29738 - 11904: 0xB558, + 29739 - 11904: 0xDA7D, + 29740 - 11904: 0xDA7B, + 29741 - 11904: 0xDAA3, + 29742 - 11904: 0xDA7A, + 29743 - 11904: 0xB55F, + 29744 - 11904: 0xDA7C, + 29745 - 11904: 0xDAA4, + 29746 - 11904: 0xDAAA, + 29747 - 11904: 0xB559, + 29748 - 11904: 0xB55E, + 29749 - 11904: 0xB55C, + 29750 - 11904: 0xB55D, + 29751 - 11904: 0x946D, + 29752 - 11904: 0x94B7, + 29753 - 11904: 0xFE6C, + 29754 - 11904: 0xB557, + 29756 - 11904: 0x946B, + 29759 - 11904: 0xB7E9, + 29760 - 11904: 0xDEB7, + 29761 - 11904: 0xB7E8, + 29762 - 11904: 0xDEBB, + 29763 - 11904: 0x92FC, + 29764 - 11904: 0xDEB1, + 29765 - 11904: 0x95EB, + 29766 - 11904: 0xDEBC, + 29767 - 11904: 0xFE73, + 29768 - 11904: 0x976E, + 29769 - 11904: 0xFE5F, + 29770 - 11904: 0xDEB2, + 29771 - 11904: 0xDEB3, + 29772 - 11904: 0x87B8, + 29773 - 11904: 0xDEBD, + 29774 - 11904: 0xDEBA, + 29775 - 11904: 0xDEB8, + 29776 - 11904: 0xDEB9, + 29777 - 11904: 0xDEB5, + 29778 - 11904: 0xDEB4, + 29779 - 11904: 0xFDBD, + 29780 - 11904: 0xDEBE, + 29781 - 11904: 0xB7E5, + 29782 - 11904: 0x92D5, + 29783 - 11904: 0xDEB6, + 29785 - 11904: 0xB7EA, + 29786 - 11904: 0xB7E4, + 29787 - 11904: 0xB7EB, + 29788 - 11904: 0xFE6F, + 29789 - 11904: 0xFEB9, + 29790 - 11904: 0xB7E7, + 29791 - 11904: 0xB7E6, + 29792 - 11904: 0xFE71, + 29793 - 11904: 0x8778, + 29794 - 11904: 0xE2CE, + 29795 - 11904: 0xBABE, + 29796 - 11904: 0xBABD, + 29797 - 11904: 0xFBBB, + 29799 - 11904: 0xE2D3, + 29800 - 11904: 0xA0D5, + 29801 - 11904: 0xBCFC, + 29802 - 11904: 0xBABF, + 29803 - 11904: 0x95FB, + 29804 - 11904: 0xFE77, + 29805 - 11904: 0xBAC1, + 29806 - 11904: 0xE2D4, + 29807 - 11904: 0xB7E3, + 29808 - 11904: 0xBAC0, + 29809 - 11904: 0xE2D0, + 29810 - 11904: 0xE2D2, + 29811 - 11904: 0xE2CF, + 29812 - 11904: 0xFE79, + 29813 - 11904: 0xE2D1, + 29814 - 11904: 0xFE75, + 29817 - 11904: 0xE6AB, + 29818 - 11904: 0x945D, + 29820 - 11904: 0xE6AA, + 29821 - 11904: 0xE6A7, + 29822 - 11904: 0xBD40, + 29823 - 11904: 0xEA62, + 29824 - 11904: 0xBD41, + 29825 - 11904: 0xE6A6, + 29826 - 11904: 0xFE7C, + 29827 - 11904: 0xBCFE, + 29829 - 11904: 0xE6A8, + 29830 - 11904: 0xE6A5, + 29831 - 11904: 0xE6A2, + 29832 - 11904: 0xE6A9, + 29833 - 11904: 0xE6A3, + 29834 - 11904: 0xE6A4, + 29835 - 11904: 0xBCFD, + 29836 - 11904: 0x9344, + 29837 - 11904: 0x8EA6, + 29840 - 11904: 0xED69, + 29842 - 11904: 0xEA66, + 29844 - 11904: 0xEA65, + 29845 - 11904: 0xEA67, + 29847 - 11904: 0xED66, + 29848 - 11904: 0xBF5A, + 29849 - 11904: 0x92D3, + 29850 - 11904: 0xEA63, + 29851 - 11904: 0x94B8, + 29852 - 11904: 0xBF58, + 29853 - 11904: 0x8779, + 29854 - 11904: 0xBF5C, + 29855 - 11904: 0xBF5B, + 29856 - 11904: 0xEA64, + 29857 - 11904: 0xEA68, + 29859 - 11904: 0xBF59, + 29860 - 11904: 0xFC71, + 29861 - 11904: 0xED6D, + 29862 - 11904: 0xC0F5, + 29863 - 11904: 0xC27A, + 29864 - 11904: 0xC0F6, + 29865 - 11904: 0xC0F3, + 29866 - 11904: 0xED6A, + 29867 - 11904: 0xED68, + 29869 - 11904: 0xED6B, + 29871 - 11904: 0xED6E, + 29872 - 11904: 0xC0F4, + 29873 - 11904: 0xED6C, + 29874 - 11904: 0xED67, + 29876 - 11904: 0x975E, + 29877 - 11904: 0xF042, + 29878 - 11904: 0xF045, + 29879 - 11904: 0xF275, + 29880 - 11904: 0xF040, + 29881 - 11904: 0x8CAD, + 29882 - 11904: 0xF46F, + 29883 - 11904: 0xF046, + 29885 - 11904: 0xC3A2, + 29886 - 11904: 0xF044, + 29887 - 11904: 0xC27B, + 29888 - 11904: 0xF041, + 29889 - 11904: 0xF043, + 29890 - 11904: 0xF047, + 29891 - 11904: 0xF276, + 29893 - 11904: 0xF274, + 29894 - 11904: 0x87C1, + 29896 - 11904: 0xFEA7, + 29898 - 11904: 0xC3A3, + 29899 - 11904: 0xF273, + 29900 - 11904: 0x946A, + 29903 - 11904: 0xC46E, + 29904 - 11904: 0x93E3, + 29907 - 11904: 0x98CF, + 29908 - 11904: 0xC4ED, + 29909 - 11904: 0xF6F1, + 29910 - 11904: 0xC4EC, + 29911 - 11904: 0xF6F3, + 29912 - 11904: 0xF6F0, + 29913 - 11904: 0xF6F2, + 29914 - 11904: 0xC5D0, + 29915 - 11904: 0xF8B2, + 29916 - 11904: 0xA5CA, + 29917 - 11904: 0xCD6E, + 29918 - 11904: 0xD2BC, + 29919 - 11904: 0xD2BD, + 29920 - 11904: 0xB27D, + 29921 - 11904: 0xDEBF, + 29922 - 11904: 0xBF5D, + 29923 - 11904: 0xC3A4, + 29924 - 11904: 0xC57B, + 29925 - 11904: 0xF8B3, + 29926 - 11904: 0xA5CB, + 29927 - 11904: 0xA0D9, + 29928 - 11904: 0xCD6F, + 29929 - 11904: 0xFEAA, + 29932 - 11904: 0xCFD7, + 29934 - 11904: 0xCFD8, + 29936 - 11904: 0xA0BF, + 29937 - 11904: 0xA04D, + 29938 - 11904: 0xA0B8, + 29940 - 11904: 0xD2BE, + 29941 - 11904: 0xD2BF, + 29942 - 11904: 0xB27E, + 29943 - 11904: 0xB2A1, + 29944 - 11904: 0xA0CE, + 29947 - 11904: 0xDAAB, + 29949 - 11904: 0xDEC2, + 29950 - 11904: 0xDEC1, + 29951 - 11904: 0xDEC0, + 29952 - 11904: 0xE2D5, + 29954 - 11904: 0xE2D6, + 29955 - 11904: 0xE2D7, + 29956 - 11904: 0xBAC2, + 29957 - 11904: 0xA0B7, + 29959 - 11904: 0xE6AD, + 29960 - 11904: 0xE6AC, + 29963 - 11904: 0xEA69, + 29964 - 11904: 0xBF5E, + 29965 - 11904: 0xBF5F, + 29966 - 11904: 0xFEA9, + 29967 - 11904: 0xED72, + 29968 - 11904: 0xED6F, + 29969 - 11904: 0xED70, + 29970 - 11904: 0xED71, + 29971 - 11904: 0xF049, + 29972 - 11904: 0xF048, + 29973 - 11904: 0xC27C, + 29974 - 11904: 0xF277, + 29975 - 11904: 0xF5DE, + 29976 - 11904: 0xA5CC, + 29977 - 11904: 0x89C3, + 29978 - 11904: 0xACC6, + 29980 - 11904: 0xB2A2, + 29981 - 11904: 0xDEC3, + 29982 - 11904: 0xFEAB, + 29983 - 11904: 0xA5CD, + 29985 - 11904: 0xD2C0, + 29986 - 11904: 0xB2A3, + 29989 - 11904: 0xB563, + 29990 - 11904: 0xB564, + 29992 - 11904: 0xA5CE, + 29993 - 11904: 0xA5CF, + 29994 - 11904: 0xCA46, + 29995 - 11904: 0xA86A, + 29996 - 11904: 0xA869, + 29997 - 11904: 0xACC7, + 29998 - 11904: 0xCFD9, + 29999 - 11904: 0xDAAC, + 30000 - 11904: 0xA5D0, + 30001 - 11904: 0xA5D1, + 30002 - 11904: 0xA5D2, + 30003 - 11904: 0xA5D3, + 30004 - 11904: 0x9DF4, + 30005 - 11904: 0x896D, + 30007 - 11904: 0xA86B, + 30008 - 11904: 0xA86C, + 30009 - 11904: 0xCB6E, + 30010 - 11904: 0xCB6D, + 30011 - 11904: 0x9C7B, + 30013 - 11904: 0xAAB6, + 30014 - 11904: 0xCD72, + 30015 - 11904: 0xCD70, + 30016 - 11904: 0xCD71, + 30018 - 11904: 0x98D2, + 30022 - 11904: 0x9FA9, + 30023 - 11904: 0xCFDA, + 30024 - 11904: 0xCFDB, + 30026 - 11904: 0xFEB2, + 30027 - 11904: 0xACCB, + 30028 - 11904: 0xACC9, + 30029 - 11904: 0xFEB1, + 30030 - 11904: 0xACCA, + 30031 - 11904: 0xACC8, + 30033 - 11904: 0x97D9, + 30035 - 11904: 0xA0C4, + 30036 - 11904: 0xAF60, + 30037 - 11904: 0x9476, + 30041 - 11904: 0xAF64, + 30042 - 11904: 0xAF63, + 30043 - 11904: 0xD2C1, + 30044 - 11904: 0xAF62, + 30045 - 11904: 0xAF61, + 30047 - 11904: 0xD2C2, + 30048 - 11904: 0x9978, + 30050 - 11904: 0xB2A6, + 30051 - 11904: 0xD67B, + 30052 - 11904: 0xD67A, + 30053 - 11904: 0xB2A4, + 30054 - 11904: 0xB2A5, + 30055 - 11904: 0xFEB3, + 30058 - 11904: 0xB566, + 30059 - 11904: 0xB565, + 30060 - 11904: 0xDAAE, + 30061 - 11904: 0x98D3, + 30062 - 11904: 0xFEB4, + 30063 - 11904: 0xDAAD, + 30064 - 11904: 0xB2A7, + 30066 - 11904: 0x98D4, + 30070 - 11904: 0xB7ED, + 30071 - 11904: 0xDEC5, + 30072 - 11904: 0xB7EE, + 30073 - 11904: 0xDEC4, + 30074 - 11904: 0x9FB9, + 30077 - 11904: 0xE2D8, + 30078 - 11904: 0xE6AE, + 30079 - 11904: 0xBD42, + 30080 - 11904: 0xEA6A, + 30083 - 11904: 0x9471, + 30084 - 11904: 0xED73, + 30086 - 11904: 0xC3A6, + 30087 - 11904: 0xC3A5, + 30090 - 11904: 0xC57C, + 30091 - 11904: 0xA5D4, + 30092 - 11904: 0xCD73, + 30093 - 11904: 0x98D5, + 30094 - 11904: 0xFEB8, + 30095 - 11904: 0xB2A8, + 30096 - 11904: 0xE2D9, + 30097 - 11904: 0xBAC3, + 30098 - 11904: 0xC6D4, + 30100 - 11904: 0xCB6F, + 30101 - 11904: 0xCB70, + 30104 - 11904: 0xCD74, + 30105 - 11904: 0xAAB8, + 30106 - 11904: 0xAAB9, + 30109 - 11904: 0xAAB7, + 30110 - 11904: 0xFEBA, + 30114 - 11904: 0xACCF, + 30115 - 11904: 0xACD0, + 30116 - 11904: 0xACCD, + 30117 - 11904: 0xACCE, + 30119 - 11904: 0xCFDC, + 30122 - 11904: 0xCFDD, + 30123 - 11904: 0xACCC, + 30128 - 11904: 0xD2C3, + 30129 - 11904: 0x9E5C, + 30130 - 11904: 0xAF68, + 30131 - 11904: 0xAF69, + 30132 - 11904: 0xFEBB, + 30133 - 11904: 0xB2AB, + 30134 - 11904: 0xD2C9, + 30136 - 11904: 0xAF6E, + 30137 - 11904: 0xAF6C, + 30138 - 11904: 0xD2CA, + 30139 - 11904: 0xD2C5, + 30140 - 11904: 0xAF6B, + 30141 - 11904: 0xAF6A, + 30142 - 11904: 0xAF65, + 30143 - 11904: 0xD2C8, + 30144 - 11904: 0xD2C7, + 30145 - 11904: 0xD2C4, + 30146 - 11904: 0xAF6D, + 30147 - 11904: 0xA044, + 30148 - 11904: 0xD2C6, + 30149 - 11904: 0xAF66, + 30151 - 11904: 0xAF67, + 30152 - 11904: 0x98D7, + 30154 - 11904: 0xB2AC, + 30155 - 11904: 0xD6A1, + 30156 - 11904: 0xD6A2, + 30157 - 11904: 0xB2AD, + 30158 - 11904: 0xD67C, + 30159 - 11904: 0xD67E, + 30160 - 11904: 0xD6A4, + 30161 - 11904: 0xD6A3, + 30162 - 11904: 0xD67D, + 30164 - 11904: 0xB2A9, + 30165 - 11904: 0xB2AA, + 30167 - 11904: 0xDAB6, + 30168 - 11904: 0xB56B, + 30169 - 11904: 0xB56A, + 30170 - 11904: 0xDAB0, + 30171 - 11904: 0xB568, + 30172 - 11904: 0x98D8, + 30173 - 11904: 0xDAB3, + 30174 - 11904: 0xB56C, + 30175 - 11904: 0xDAB4, + 30176 - 11904: 0xB56D, + 30177 - 11904: 0xDAB1, + 30178 - 11904: 0xB567, + 30179 - 11904: 0xB569, + 30180 - 11904: 0xDAB5, + 30182 - 11904: 0xDAB2, + 30183 - 11904: 0xDAAF, + 30189 - 11904: 0xDED2, + 30191 - 11904: 0xDEC7, + 30192 - 11904: 0xB7F0, + 30193 - 11904: 0xB7F3, + 30194 - 11904: 0xB7F2, + 30195 - 11904: 0xB7F7, + 30196 - 11904: 0xB7F6, + 30197 - 11904: 0xDED3, + 30198 - 11904: 0xDED1, + 30199 - 11904: 0xDECA, + 30200 - 11904: 0xDECE, + 30201 - 11904: 0xDECD, + 30202 - 11904: 0xB7F4, + 30203 - 11904: 0xDED0, + 30204 - 11904: 0xDECC, + 30205 - 11904: 0xDED4, + 30206 - 11904: 0xDECB, + 30207 - 11904: 0xB7F5, + 30208 - 11904: 0xB7EF, + 30209 - 11904: 0xB7F1, + 30210 - 11904: 0xFEBC, + 30211 - 11904: 0xDEC9, + 30215 - 11904: 0x9FFE, + 30216 - 11904: 0xE2DB, + 30217 - 11904: 0xBAC7, + 30218 - 11904: 0xE2DF, + 30219 - 11904: 0xBAC6, + 30220 - 11904: 0xE2DC, + 30221 - 11904: 0xBAC5, + 30223 - 11904: 0xDEC8, + 30224 - 11904: 0xDECF, + 30225 - 11904: 0xE2DE, + 30227 - 11904: 0xBAC8, + 30228 - 11904: 0xE2E0, + 30229 - 11904: 0xE2DD, + 30230 - 11904: 0xE2DA, + 30233 - 11904: 0xE6B1, + 30234 - 11904: 0xE6B5, + 30235 - 11904: 0xE6B7, + 30236 - 11904: 0xE6B3, + 30237 - 11904: 0xE6B2, + 30238 - 11904: 0xE6B0, + 30239 - 11904: 0xBD45, + 30240 - 11904: 0xBD43, + 30241 - 11904: 0xBD48, + 30242 - 11904: 0xBD49, + 30243 - 11904: 0xE6B4, + 30244 - 11904: 0xBD46, + 30245 - 11904: 0xE6AF, + 30246 - 11904: 0xBD47, + 30247 - 11904: 0xBAC4, + 30248 - 11904: 0xE6B6, + 30249 - 11904: 0xBD44, + 30252 - 11904: 0xFEBD, + 30253 - 11904: 0xEA6C, + 30255 - 11904: 0xEA6B, + 30256 - 11904: 0xEA73, + 30257 - 11904: 0xEA6D, + 30258 - 11904: 0xEA72, + 30259 - 11904: 0xEA6F, + 30260 - 11904: 0xBF60, + 30261 - 11904: 0xEA71, + 30264 - 11904: 0xBF61, + 30266 - 11904: 0xBF62, + 30267 - 11904: 0x9DDD, + 30268 - 11904: 0xEA70, + 30269 - 11904: 0xEA6E, + 30272 - 11904: 0x9EE1, + 30274 - 11904: 0xC0F8, + 30275 - 11904: 0xED74, + 30278 - 11904: 0xC0F7, + 30279 - 11904: 0xED77, + 30280 - 11904: 0xED75, + 30281 - 11904: 0xED76, + 30284 - 11904: 0xC0F9, + 30285 - 11904: 0x98DA, + 30286 - 11904: 0x9DDF, + 30287 - 11904: 0xFEBF, + 30288 - 11904: 0xF04D, + 30289 - 11904: 0xFEBE, + 30290 - 11904: 0xC2A1, + 30291 - 11904: 0xF04E, + 30292 - 11904: 0x9EEB, + 30294 - 11904: 0xC27D, + 30295 - 11904: 0xF04F, + 30296 - 11904: 0xC27E, + 30297 - 11904: 0xF04C, + 30298 - 11904: 0xF050, + 30300 - 11904: 0xF04A, + 30303 - 11904: 0xC3A7, + 30304 - 11904: 0xF278, + 30305 - 11904: 0xC3A8, + 30306 - 11904: 0xC46F, + 30308 - 11904: 0xF04B, + 30309 - 11904: 0xC470, + 30310 - 11904: 0x9E59, + 30311 - 11904: 0xA05C, + 30313 - 11904: 0xC4EE, + 30314 - 11904: 0xF5DF, + 30316 - 11904: 0xC57E, + 30317 - 11904: 0xF6F4, + 30318 - 11904: 0xC57D, + 30319 - 11904: 0xFEC0, + 30320 - 11904: 0xF7EA, + 30321 - 11904: 0xC5F5, + 30322 - 11904: 0xC5F6, + 30323 - 11904: 0x9477, + 30324 - 11904: 0x98DC, + 30325 - 11904: 0xF9CC, + 30326 - 11904: 0xFEC1, + 30328 - 11904: 0xACD1, + 30329 - 11904: 0xCFDE, + 30330 - 11904: 0x98DE, + 30331 - 11904: 0xB56E, + 30332 - 11904: 0xB56F, + 30333 - 11904: 0xA5D5, + 30334 - 11904: 0xA6CA, + 30335 - 11904: 0xCA47, + 30337 - 11904: 0xCB71, + 30338 - 11904: 0xA86D, + 30340 - 11904: 0xAABA, + 30342 - 11904: 0xACD2, + 30343 - 11904: 0xACD3, + 30344 - 11904: 0xACD4, + 30345 - 11904: 0xD6A6, + 30346 - 11904: 0xD2CB, + 30347 - 11904: 0xAF6F, + 30350 - 11904: 0xB2AE, + 30351 - 11904: 0xD6A5, + 30352 - 11904: 0xFEC3, + 30354 - 11904: 0xDAB8, + 30355 - 11904: 0xB571, + 30357 - 11904: 0xDAB7, + 30358 - 11904: 0xB570, + 30361 - 11904: 0xDED5, + 30362 - 11904: 0xBD4A, + 30363 - 11904: 0xE6BB, + 30364 - 11904: 0xE6B8, + 30365 - 11904: 0xE6B9, + 30366 - 11904: 0xE6BA, + 30369 - 11904: 0xFEC8, + 30372 - 11904: 0xED78, + 30373 - 11904: 0xFEC9, + 30374 - 11904: 0xF051, + 30378 - 11904: 0xF471, + 30379 - 11904: 0xF470, + 30381 - 11904: 0xF6F5, + 30382 - 11904: 0xA5D6, + 30383 - 11904: 0xCD75, + 30384 - 11904: 0xAF70, + 30388 - 11904: 0xB572, + 30389 - 11904: 0xDED6, + 30391 - 11904: 0xFECA, + 30392 - 11904: 0xE2E1, + 30394 - 11904: 0xBD4B, + 30395 - 11904: 0xEA74, + 30397 - 11904: 0xF052, + 30398 - 11904: 0xF472, + 30399 - 11904: 0xA5D7, + 30402 - 11904: 0xAABB, + 30403 - 11904: 0xACD7, + 30404 - 11904: 0xCFDF, + 30405 - 11904: 0xACD8, + 30406 - 11904: 0xACD6, + 30408 - 11904: 0xACD5, + 30409 - 11904: 0xD2CC, + 30410 - 11904: 0xAF71, + 30412 - 11904: 0xFECB, + 30413 - 11904: 0xAF72, + 30414 - 11904: 0xAF73, + 30418 - 11904: 0xB2B0, + 30419 - 11904: 0xD6A7, + 30420 - 11904: 0xB2AF, + 30422 - 11904: 0x9FC2, + 30425 - 11904: 0x8C6B, + 30426 - 11904: 0xDAB9, + 30427 - 11904: 0xB2B1, + 30428 - 11904: 0xB573, + 30429 - 11904: 0xDED7, + 30430 - 11904: 0xB7F8, + 30431 - 11904: 0xB7F9, + 30433 - 11904: 0xBAC9, + 30435 - 11904: 0xBACA, + 30436 - 11904: 0xBD4C, + 30437 - 11904: 0xBF64, + 30438 - 11904: 0xEA75, + 30439 - 11904: 0xBF63, + 30441 - 11904: 0xED79, + 30442 - 11904: 0xC0FA, + 30444 - 11904: 0xF053, + 30445 - 11904: 0xF473, + 30446 - 11904: 0xA5D8, + 30447 - 11904: 0xA86E, + 30448 - 11904: 0xCD78, + 30449 - 11904: 0xCD77, + 30450 - 11904: 0xAABC, + 30451 - 11904: 0xCD76, + 30452 - 11904: 0xAABD, + 30453 - 11904: 0xCD79, + 30455 - 11904: 0xCFE5, + 30456 - 11904: 0xACDB, + 30457 - 11904: 0xACDA, + 30458 - 11904: 0xCFE7, + 30459 - 11904: 0xCFE6, + 30460 - 11904: 0xACDF, + 30462 - 11904: 0xACDE, + 30465 - 11904: 0xACD9, + 30467 - 11904: 0xCFE1, + 30468 - 11904: 0xCFE2, + 30469 - 11904: 0xCFE3, + 30471 - 11904: 0xACE0, + 30472 - 11904: 0xCFE0, + 30473 - 11904: 0xACDC, + 30474 - 11904: 0xCFE4, + 30475 - 11904: 0xACDD, + 30476 - 11904: 0x98C4, + 30478 - 11904: 0x94B0, + 30479 - 11904: 0x94B1, + 30480 - 11904: 0xD2CF, + 30481 - 11904: 0xD2D3, + 30482 - 11904: 0xD2D1, + 30483 - 11904: 0xD2D0, + 30485 - 11904: 0xD2D4, + 30489 - 11904: 0xD2D5, + 30490 - 11904: 0xD2D6, + 30491 - 11904: 0xD2CE, + 30493 - 11904: 0xD2CD, + 30494 - 11904: 0xFED1, + 30495 - 11904: 0xAF75, + 30496 - 11904: 0xAF76, + 30498 - 11904: 0xD2D7, + 30499 - 11904: 0xD2D2, + 30500 - 11904: 0xA0C1, + 30501 - 11904: 0xD6B0, + 30502 - 11904: 0xFED2, + 30503 - 11904: 0xD2D8, + 30504 - 11904: 0xAF77, + 30505 - 11904: 0xAF74, + 30507 - 11904: 0xA0CD, + 30509 - 11904: 0xD6AA, + 30511 - 11904: 0xD6A9, + 30513 - 11904: 0xD6AB, + 30514 - 11904: 0xD6AC, + 30515 - 11904: 0xD6AE, + 30516 - 11904: 0xD6AD, + 30517 - 11904: 0xD6B2, + 30518 - 11904: 0xB2B5, + 30519 - 11904: 0xB2B2, + 30520 - 11904: 0xB2B6, + 30521 - 11904: 0xD6A8, + 30522 - 11904: 0xB2B7, + 30523 - 11904: 0xD6B1, + 30524 - 11904: 0xB2B4, + 30525 - 11904: 0xD6AF, + 30526 - 11904: 0xB2B3, + 30528 - 11904: 0xFED3, + 30531 - 11904: 0x98E5, + 30532 - 11904: 0xDABC, + 30533 - 11904: 0xDABE, + 30534 - 11904: 0xDABA, + 30535 - 11904: 0xDABB, + 30538 - 11904: 0xDABF, + 30539 - 11904: 0xDAC1, + 30540 - 11904: 0xDAC2, + 30541 - 11904: 0xDABD, + 30542 - 11904: 0xDAC0, + 30543 - 11904: 0xB574, + 30546 - 11904: 0xDEDB, + 30548 - 11904: 0xDEE0, + 30549 - 11904: 0xDED8, + 30550 - 11904: 0xDEDC, + 30552 - 11904: 0xFED6, + 30553 - 11904: 0xDEE1, + 30554 - 11904: 0xDEDD, + 30555 - 11904: 0xB7FA, + 30556 - 11904: 0xB843, + 30558 - 11904: 0xB7FD, + 30559 - 11904: 0xDED9, + 30560 - 11904: 0xDEDA, + 30561 - 11904: 0xBACE, + 30562 - 11904: 0xB846, + 30563 - 11904: 0xB7FE, + 30565 - 11904: 0xB844, + 30566 - 11904: 0xB7FC, + 30567 - 11904: 0xDEDF, + 30568 - 11904: 0xB845, + 30569 - 11904: 0xDEDE, + 30570 - 11904: 0xB841, + 30571 - 11904: 0xB7FB, + 30572 - 11904: 0xB842, + 30573 - 11904: 0xDEE2, + 30574 - 11904: 0xE2E6, + 30575 - 11904: 0xE2E8, + 30578 - 11904: 0x91E4, + 30583 - 11904: 0x8FC7, + 30584 - 11904: 0x94AE, + 30585 - 11904: 0xB840, + 30586 - 11904: 0x8A4F, + 30587 - 11904: 0x94B2, + 30588 - 11904: 0xE2E3, + 30589 - 11904: 0xBACC, + 30590 - 11904: 0xE2E9, + 30591 - 11904: 0xBACD, + 30592 - 11904: 0xE2E7, + 30593 - 11904: 0xE2E2, + 30594 - 11904: 0xE2E5, + 30595 - 11904: 0xE2EA, + 30596 - 11904: 0xBACB, + 30597 - 11904: 0xE2E4, + 30599 - 11904: 0xBD4E, + 30600 - 11904: 0xE6BF, + 30601 - 11904: 0xE6BE, + 30603 - 11904: 0xBD51, + 30604 - 11904: 0xBD4F, + 30605 - 11904: 0xE6BC, + 30606 - 11904: 0xBD4D, + 30607 - 11904: 0xE6BD, + 30609 - 11904: 0xBD50, + 30611 - 11904: 0x8FD4, + 30613 - 11904: 0xEA7D, + 30615 - 11904: 0xEAA1, + 30616 - 11904: 0x98EA, + 30617 - 11904: 0xEA7E, + 30618 - 11904: 0xEA76, + 30619 - 11904: 0xEA7A, + 30620 - 11904: 0xEA79, + 30621 - 11904: 0xEA77, + 30622 - 11904: 0xBF66, + 30623 - 11904: 0xBF67, + 30624 - 11904: 0xBF65, + 30625 - 11904: 0xEA78, + 30626 - 11904: 0xEA7B, + 30627 - 11904: 0xEA7C, + 30629 - 11904: 0xBF68, + 30631 - 11904: 0xC140, + 30632 - 11904: 0xEDA3, + 30634 - 11904: 0xC0FC, + 30635 - 11904: 0xED7B, + 30636 - 11904: 0xC0FE, + 30637 - 11904: 0xC141, + 30639 - 11904: 0xFED8, + 30640 - 11904: 0xC0FD, + 30641 - 11904: 0xEDA2, + 30642 - 11904: 0xED7C, + 30643 - 11904: 0xC0FB, + 30644 - 11904: 0xEDA1, + 30645 - 11904: 0xED7A, + 30646 - 11904: 0xED7E, + 30647 - 11904: 0xED7D, + 30649 - 11904: 0x9DE0, + 30650 - 11904: 0xF055, + 30651 - 11904: 0xC2A4, + 30652 - 11904: 0xC2A5, + 30653 - 11904: 0xC2A2, + 30654 - 11904: 0x98EE, + 30655 - 11904: 0xC2A3, + 30658 - 11904: 0xF054, + 30659 - 11904: 0x95C4, + 30660 - 11904: 0xF27B, + 30661 - 11904: 0xFCE8, + 30663 - 11904: 0xC3A9, + 30665 - 11904: 0xF279, + 30666 - 11904: 0xF27A, + 30667 - 11904: 0x98EF, + 30668 - 11904: 0xF474, + 30669 - 11904: 0xF477, + 30670 - 11904: 0xF475, + 30671 - 11904: 0xF476, + 30672 - 11904: 0xF5E0, + 30675 - 11904: 0xC4EF, + 30676 - 11904: 0xF7EB, + 30677 - 11904: 0xF8B4, + 30679 - 11904: 0xC5F7, + 30680 - 11904: 0xF8F8, + 30681 - 11904: 0xF8F9, + 30682 - 11904: 0xC666, + 30683 - 11904: 0xA5D9, + 30684 - 11904: 0xACE1, + 30685 - 11904: 0x8C6E, + 30686 - 11904: 0xDAC3, + 30688 - 11904: 0xDEE3, + 30690 - 11904: 0xA5DA, + 30691 - 11904: 0xA86F, + 30693 - 11904: 0xAABE, + 30694 - 11904: 0xFAD8, + 30695 - 11904: 0xCFE8, + 30696 - 11904: 0xCFE9, + 30697 - 11904: 0xAF78, + 30700 - 11904: 0xDAC4, + 30701 - 11904: 0xB575, + 30702 - 11904: 0xB847, + 30703 - 11904: 0xC142, + 30704 - 11904: 0xEDA4, + 30705 - 11904: 0xF27C, + 30706 - 11904: 0xF478, + 30707 - 11904: 0xA5DB, + 30708 - 11904: 0xFEDC, + 30711 - 11904: 0xCDA1, + 30712 - 11904: 0xCD7A, + 30713 - 11904: 0xCD7C, + 30714 - 11904: 0xCD7E, + 30715 - 11904: 0xCD7D, + 30716 - 11904: 0xCD7B, + 30717 - 11904: 0xAABF, + 30718 - 11904: 0xA0AE, + 30722 - 11904: 0xACE2, + 30723 - 11904: 0xCFF2, + 30725 - 11904: 0xCFED, + 30726 - 11904: 0xCFEA, + 30728 - 11904: 0x9D4C, + 30729 - 11904: 0xFEDD, + 30732 - 11904: 0xACE4, + 30733 - 11904: 0xACE5, + 30734 - 11904: 0xCFF0, + 30735 - 11904: 0xCFEF, + 30736 - 11904: 0xCFEE, + 30737 - 11904: 0xCFEB, + 30738 - 11904: 0xCFEC, + 30739 - 11904: 0xCFF3, + 30740 - 11904: 0xACE3, + 30744 - 11904: 0x98F1, + 30748 - 11904: 0x98F3, + 30749 - 11904: 0xAF7C, + 30750 - 11904: 0x94C1, + 30751 - 11904: 0xAFA4, + 30752 - 11904: 0xAFA3, + 30753 - 11904: 0xD2E1, + 30754 - 11904: 0xD2DB, + 30755 - 11904: 0xD2D9, + 30757 - 11904: 0xAFA1, + 30758 - 11904: 0xD6B9, + 30759 - 11904: 0xAF7A, + 30760 - 11904: 0xD2DE, + 30761 - 11904: 0xD2E2, + 30762 - 11904: 0xD2E4, + 30763 - 11904: 0xD2E0, + 30764 - 11904: 0xD2DA, + 30765 - 11904: 0xAFA2, + 30766 - 11904: 0xD2DF, + 30767 - 11904: 0xD2DD, + 30768 - 11904: 0xAF79, + 30769 - 11904: 0xD2E5, + 30770 - 11904: 0xAFA5, + 30771 - 11904: 0xD2E3, + 30772 - 11904: 0xAF7D, + 30773 - 11904: 0xD2DC, + 30775 - 11904: 0xAF7E, + 30776 - 11904: 0xAF7B, + 30777 - 11904: 0x98F5, + 30780 - 11904: 0xFA4F, + 30781 - 11904: 0x96E2, + 30786 - 11904: 0x9450, + 30787 - 11904: 0xB2B9, + 30788 - 11904: 0x96A2, + 30789 - 11904: 0xD6BA, + 30791 - 11904: 0x98F6, + 30792 - 11904: 0xD6B3, + 30793 - 11904: 0xD6B5, + 30794 - 11904: 0xD6B7, + 30795 - 11904: 0x96E5, + 30796 - 11904: 0xD6B8, + 30797 - 11904: 0xD6B6, + 30798 - 11904: 0xB2BA, + 30800 - 11904: 0xD6BB, + 30801 - 11904: 0x98F7, + 30802 - 11904: 0xD6B4, + 30803 - 11904: 0xA046, + 30804 - 11904: 0x96E3, + 30812 - 11904: 0xDAC8, + 30813 - 11904: 0xB576, + 30814 - 11904: 0xDAD0, + 30816 - 11904: 0xDAC5, + 30818 - 11904: 0xDAD1, + 30820 - 11904: 0xDAC6, + 30821 - 11904: 0xDAC7, + 30822 - 11904: 0x98F8, + 30824 - 11904: 0xDACF, + 30825 - 11904: 0xDACE, + 30826 - 11904: 0xDACB, + 30827 - 11904: 0xB2B8, + 30828 - 11904: 0xB577, + 30829 - 11904: 0xDAC9, + 30830 - 11904: 0xDACC, + 30831 - 11904: 0xB578, + 30832 - 11904: 0xDACD, + 30833 - 11904: 0xDACA, + 30841 - 11904: 0xDEEE, + 30842 - 11904: 0x9EE4, + 30843 - 11904: 0xDEF2, + 30844 - 11904: 0xB84E, + 30846 - 11904: 0xE2F0, + 30847 - 11904: 0xB851, + 30848 - 11904: 0xDEF0, + 30849 - 11904: 0xF9D6, + 30851 - 11904: 0xDEED, + 30852 - 11904: 0xDEE8, + 30853 - 11904: 0xDEEA, + 30854 - 11904: 0xDEEB, + 30855 - 11904: 0xDEE4, + 30856 - 11904: 0x94C3, + 30857 - 11904: 0xB84D, + 30860 - 11904: 0xB84C, + 30861 - 11904: 0x94C2, + 30862 - 11904: 0xB848, + 30863 - 11904: 0xDEE7, + 30865 - 11904: 0xB84F, + 30867 - 11904: 0xB850, + 30868 - 11904: 0xDEE6, + 30869 - 11904: 0xDEE9, + 30870 - 11904: 0xDEF1, + 30871 - 11904: 0xB84A, + 30872 - 11904: 0xB84B, + 30873 - 11904: 0xDEEF, + 30874 - 11904: 0xDEE5, + 30878 - 11904: 0xE2F2, + 30879 - 11904: 0xBAD0, + 30880 - 11904: 0xE2F4, + 30881 - 11904: 0xDEEC, + 30882 - 11904: 0xE2F6, + 30883 - 11904: 0xBAD4, + 30884 - 11904: 0xE2F7, + 30885 - 11904: 0xE2F3, + 30887 - 11904: 0xBAD1, + 30888 - 11904: 0xE2EF, + 30889 - 11904: 0xBAD3, + 30890 - 11904: 0xE2EC, + 30891 - 11904: 0xE2F1, + 30892 - 11904: 0xE2F5, + 30893 - 11904: 0xE2EE, + 30895 - 11904: 0xFEE1, + 30896 - 11904: 0xB849, + 30897 - 11904: 0xFEE9, + 30898 - 11904: 0xE2EB, + 30899 - 11904: 0xBAD2, + 30900 - 11904: 0xE2ED, + 30902 - 11904: 0x96E4, + 30904 - 11904: 0x89AC, + 30905 - 11904: 0x96DB, + 30906 - 11904: 0xBD54, + 30907 - 11904: 0xE6C1, + 30908 - 11904: 0xBD58, + 30910 - 11904: 0xBD56, + 30913 - 11904: 0xBACF, + 30915 - 11904: 0xE6C8, + 30916 - 11904: 0xE6C9, + 30917 - 11904: 0xBD53, + 30919 - 11904: 0xFEE2, + 30920 - 11904: 0xE6C7, + 30921 - 11904: 0xE6CA, + 30922 - 11904: 0xBD55, + 30923 - 11904: 0xBD52, + 30924 - 11904: 0xE6C3, + 30925 - 11904: 0xE6C0, + 30926 - 11904: 0xE6C5, + 30927 - 11904: 0xE6C2, + 30928 - 11904: 0xBD59, + 30929 - 11904: 0xE6C4, + 30930 - 11904: 0x94C4, + 30931 - 11904: 0xFEE3, + 30932 - 11904: 0xE6C6, + 30933 - 11904: 0xBD57, + 30935 - 11904: 0xFEE7, + 30936 - 11904: 0x9FFB, + 30938 - 11904: 0xBF6A, + 30939 - 11904: 0xEAA8, + 30941 - 11904: 0xEAA2, + 30942 - 11904: 0xEAA6, + 30943 - 11904: 0xEAAC, + 30944 - 11904: 0xEAAD, + 30945 - 11904: 0xEAA9, + 30946 - 11904: 0xEAAA, + 30947 - 11904: 0xEAA7, + 30948 - 11904: 0x8C59, + 30949 - 11904: 0xEAA4, + 30951 - 11904: 0xBF6C, + 30952 - 11904: 0xBF69, + 30953 - 11904: 0xEAA3, + 30954 - 11904: 0xEAA5, + 30956 - 11904: 0xBF6B, + 30957 - 11904: 0xEAAB, + 30958 - 11904: 0x93C9, + 30959 - 11904: 0xC146, + 30960 - 11904: 0x94E8, + 30961 - 11904: 0xFB56, + 30962 - 11904: 0xEDAA, + 30963 - 11904: 0xEDA5, + 30964 - 11904: 0xC145, + 30965 - 11904: 0x90C5, + 30967 - 11904: 0xC143, + 30969 - 11904: 0xEDAC, + 30970 - 11904: 0xC144, + 30971 - 11904: 0xEDA8, + 30972 - 11904: 0xEDA9, + 30973 - 11904: 0xEDA6, + 30974 - 11904: 0xEDAD, + 30975 - 11904: 0xF056, + 30977 - 11904: 0xC147, + 30978 - 11904: 0xEDA7, + 30980 - 11904: 0xEDAE, + 30981 - 11904: 0xEDAB, + 30982 - 11904: 0xA0A8, + 30985 - 11904: 0xF05A, + 30988 - 11904: 0xF057, + 30990 - 11904: 0xC2A6, + 30992 - 11904: 0xF05B, + 30993 - 11904: 0xF05D, + 30994 - 11904: 0xF05C, + 30995 - 11904: 0xF058, + 30996 - 11904: 0xF059, + 30999 - 11904: 0xF2A3, + 31001 - 11904: 0xC3AA, + 31003 - 11904: 0xF27E, + 31004 - 11904: 0xF2A2, + 31005 - 11904: 0xF27D, + 31006 - 11904: 0xF2A4, + 31009 - 11904: 0xF2A1, + 31011 - 11904: 0xF47A, + 31012 - 11904: 0xF47D, + 31013 - 11904: 0xF479, + 31014 - 11904: 0xC471, + 31015 - 11904: 0xF47B, + 31016 - 11904: 0xF47C, + 31017 - 11904: 0xF47E, + 31018 - 11904: 0xC472, + 31019 - 11904: 0xC474, + 31020 - 11904: 0xC473, + 31021 - 11904: 0xF5E1, + 31022 - 11904: 0xFEE5, + 31023 - 11904: 0xF5E3, + 31025 - 11904: 0xF5E2, + 31026 - 11904: 0x98FD, + 31027 - 11904: 0x98FB, + 31028 - 11904: 0xFEE8, + 31029 - 11904: 0xF6F6, + 31030 - 11904: 0x8EBF, + 31032 - 11904: 0xF8B5, + 31033 - 11904: 0xF8FA, + 31034 - 11904: 0xA5DC, + 31035 - 11904: 0x8BD8, + 31036 - 11904: 0xFEF7, + 31037 - 11904: 0xCB72, + 31038 - 11904: 0xAAC0, + 31039 - 11904: 0xCDA3, + 31040 - 11904: 0xAAC1, + 31041 - 11904: 0xAAC2, + 31042 - 11904: 0xCDA2, + 31044 - 11904: 0xCFF8, + 31045 - 11904: 0xCFF7, + 31046 - 11904: 0xACE6, + 31047 - 11904: 0xACE9, + 31048 - 11904: 0xACE8, + 31049 - 11904: 0xACE7, + 31050 - 11904: 0xCFF4, + 31051 - 11904: 0xCFF6, + 31052 - 11904: 0xCFF5, + 31055 - 11904: 0xD2E8, + 31056 - 11904: 0xAFA7, + 31057 - 11904: 0xD2EC, + 31058 - 11904: 0xD2EB, + 31059 - 11904: 0xD2EA, + 31060 - 11904: 0xD2E6, + 31061 - 11904: 0xAFA6, + 31062 - 11904: 0xAFAA, + 31063 - 11904: 0xAFAD, + 31064 - 11904: 0x8F68, + 31065 - 11904: 0x94C6, + 31066 - 11904: 0xAFAE, + 31067 - 11904: 0xD2E7, + 31068 - 11904: 0xD2E9, + 31069 - 11904: 0xAFAC, + 31070 - 11904: 0xAFAB, + 31071 - 11904: 0xAFA9, + 31072 - 11904: 0xAFA8, + 31073 - 11904: 0xD6C2, + 31074 - 11904: 0x9DEA, + 31075 - 11904: 0xD6C0, + 31076 - 11904: 0xD6BC, + 31077 - 11904: 0xB2BB, + 31079 - 11904: 0xD6BD, + 31080 - 11904: 0xB2BC, + 31081 - 11904: 0xD6BE, + 31082 - 11904: 0xD6BF, + 31083 - 11904: 0xD6C1, + 31085 - 11904: 0xB2BD, + 31088 - 11904: 0xDAD5, + 31089 - 11904: 0xFC69, + 31090 - 11904: 0xDAD4, + 31091 - 11904: 0xDAD3, + 31092 - 11904: 0xDAD2, + 31097 - 11904: 0xDEF6, + 31098 - 11904: 0xB852, + 31100 - 11904: 0xDEF3, + 31101 - 11904: 0xDEF5, + 31102 - 11904: 0x9CDA, + 31103 - 11904: 0xB853, + 31104 - 11904: 0xFEF3, + 31105 - 11904: 0xB854, + 31106 - 11904: 0xDEF4, + 31107 - 11904: 0x9C72, + 31110 - 11904: 0xFEF0, + 31111 - 11904: 0x89C9, + 31112 - 11904: 0xE341, + 31114 - 11904: 0xE2F9, + 31115 - 11904: 0xE2FA, + 31117 - 11904: 0xBAD7, + 31118 - 11904: 0xBAD5, + 31119 - 11904: 0xBAD6, + 31120 - 11904: 0xE343, + 31121 - 11904: 0x9941, + 31122 - 11904: 0xE342, + 31123 - 11904: 0xE2FE, + 31124 - 11904: 0xE2FD, + 31125 - 11904: 0xE2FC, + 31126 - 11904: 0xE2FB, + 31127 - 11904: 0xE340, + 31128 - 11904: 0xE2F8, + 31129 - 11904: 0x9942, + 31130 - 11904: 0xE6CB, + 31131 - 11904: 0xE6D0, + 31132 - 11904: 0xE6CE, + 31133 - 11904: 0xFEF5, + 31135 - 11904: 0x91D7, + 31136 - 11904: 0xE6CD, + 31137 - 11904: 0xE6CC, + 31138 - 11904: 0xE6CF, + 31140 - 11904: 0xEAAE, + 31141 - 11904: 0x94CC, + 31142 - 11904: 0xBF6D, + 31143 - 11904: 0xC148, + 31144 - 11904: 0xEDB0, + 31145 - 11904: 0xFEF8, + 31146 - 11904: 0xC149, + 31147 - 11904: 0xEDAF, + 31148 - 11904: 0xF05F, + 31149 - 11904: 0xF05E, + 31150 - 11904: 0xC2A7, + 31152 - 11904: 0xF2A5, + 31153 - 11904: 0xC3AB, + 31154 - 11904: 0xF4A1, + 31155 - 11904: 0xC5A1, + 31156 - 11904: 0xF6F7, + 31158 - 11904: 0xF8B7, + 31159 - 11904: 0xF8B6, + 31160 - 11904: 0xC9A8, + 31161 - 11904: 0xACEA, + 31162 - 11904: 0xACEB, + 31163 - 11904: 0xD6C3, + 31165 - 11904: 0xB856, + 31166 - 11904: 0xA5DD, + 31167 - 11904: 0xA872, + 31168 - 11904: 0xA871, + 31169 - 11904: 0xA870, + 31172 - 11904: 0x97A8, + 31173 - 11904: 0xCDA4, + 31174 - 11904: 0xFEFC, + 31176 - 11904: 0xAAC4, + 31177 - 11904: 0xAAC3, + 31178 - 11904: 0x8CDE, + 31179 - 11904: 0xACEE, + 31180 - 11904: 0xFDBF, + 31181 - 11904: 0xCFFA, + 31182 - 11904: 0xCFFD, + 31183 - 11904: 0xCFFB, + 31184 - 11904: 0x87B3, + 31185 - 11904: 0xACEC, + 31186 - 11904: 0xACED, + 31188 - 11904: 0xFEFE, + 31189 - 11904: 0xCFF9, + 31190 - 11904: 0xCFFC, + 31192 - 11904: 0xAFB5, + 31196 - 11904: 0xD2F3, + 31197 - 11904: 0xD2F5, + 31198 - 11904: 0xD2F4, + 31199 - 11904: 0xAFB2, + 31200 - 11904: 0xD2EF, + 31202 - 11904: 0x96D1, + 31203 - 11904: 0xAFB0, + 31204 - 11904: 0xAFAF, + 31206 - 11904: 0xAFB3, + 31207 - 11904: 0xAFB1, + 31209 - 11904: 0xAFB4, + 31210 - 11904: 0xD2F2, + 31211 - 11904: 0xD2ED, + 31212 - 11904: 0xD2EE, + 31213 - 11904: 0xD2F1, + 31214 - 11904: 0xD2F0, + 31217 - 11904: 0x94D5, + 31220 - 11904: 0x94D0, + 31222 - 11904: 0xD6C6, + 31223 - 11904: 0xD6C7, + 31224 - 11904: 0xD6C5, + 31226 - 11904: 0xD6C4, + 31227 - 11904: 0xB2BE, + 31232 - 11904: 0xB57D, + 31234 - 11904: 0xDAD6, + 31235 - 11904: 0xDAD8, + 31236 - 11904: 0xDADA, + 31237 - 11904: 0xB57C, + 31238 - 11904: 0x9944, + 31240 - 11904: 0xB57A, + 31242 - 11904: 0xDAD7, + 31243 - 11904: 0xB57B, + 31244 - 11904: 0xDAD9, + 31245 - 11904: 0xB579, + 31248 - 11904: 0xDF41, + 31249 - 11904: 0xDEF7, + 31250 - 11904: 0xDEFA, + 31251 - 11904: 0xDEFE, + 31252 - 11904: 0xB85A, + 31253 - 11904: 0xDEFC, + 31255 - 11904: 0xDEFB, + 31256 - 11904: 0xDEF8, + 31257 - 11904: 0xDEF9, + 31258 - 11904: 0xB858, + 31259 - 11904: 0xDF40, + 31260 - 11904: 0xB857, + 31262 - 11904: 0xB85C, + 31263 - 11904: 0xB85B, + 31264 - 11904: 0xB859, + 31266 - 11904: 0xDEFD, + 31270 - 11904: 0xE349, + 31272 - 11904: 0xE348, + 31274 - 11904: 0x8C63, + 31275 - 11904: 0xE344, + 31276 - 11904: 0x87BB, + 31277 - 11904: 0xA0B3, + 31278 - 11904: 0xBAD8, + 31279 - 11904: 0xE347, + 31280 - 11904: 0xE346, + 31281 - 11904: 0xBAD9, + 31282 - 11904: 0x87B4, + 31287 - 11904: 0xBD5E, + 31289 - 11904: 0xE6D2, + 31290 - 11904: 0x94CF, + 31291 - 11904: 0xBD5F, + 31292 - 11904: 0xBD5B, + 31293 - 11904: 0xBD5D, + 31294 - 11904: 0x9FFA, + 31295 - 11904: 0xBD5A, + 31296 - 11904: 0xBD5C, + 31299 - 11904: 0x91E5, + 31300 - 11904: 0xEAAF, + 31301 - 11904: 0x9C6A, + 31302 - 11904: 0xBF70, + 31303 - 11904: 0xEAB1, + 31304 - 11904: 0xEAB0, + 31305 - 11904: 0x8E49, + 31306 - 11904: 0xE345, + 31307 - 11904: 0xBF72, + 31308 - 11904: 0xBF71, + 31309 - 11904: 0xBF6E, + 31310 - 11904: 0xBF6F, + 31316 - 11904: 0xEDB5, + 31318 - 11904: 0xEDB3, + 31319 - 11904: 0xC14A, + 31320 - 11904: 0xEDB4, + 31322 - 11904: 0xEDB6, + 31323 - 11904: 0xEDB2, + 31324 - 11904: 0xEDB1, + 31327 - 11904: 0xF060, + 31328 - 11904: 0xC2AA, + 31329 - 11904: 0xC2A8, + 31330 - 11904: 0xC2A9, + 31333 - 11904: 0x8E4C, + 31335 - 11904: 0xF2A6, + 31336 - 11904: 0xF2A7, + 31337 - 11904: 0xC3AD, + 31339 - 11904: 0xC3AC, + 31340 - 11904: 0xF4A3, + 31341 - 11904: 0xF4A4, + 31342 - 11904: 0xF4A2, + 31344 - 11904: 0xF6F8, + 31345 - 11904: 0xF6F9, + 31346 - 11904: 0x87C9, + 31348 - 11904: 0xA5DE, + 31349 - 11904: 0xCA48, + 31350 - 11904: 0xA873, + 31352 - 11904: 0xCDA5, + 31353 - 11904: 0xAAC6, + 31354 - 11904: 0xAAC5, + 31355 - 11904: 0xCDA6, + 31357 - 11904: 0x8E4D, + 31358 - 11904: 0xD040, + 31359 - 11904: 0xACEF, + 31360 - 11904: 0xCFFE, + 31361 - 11904: 0xACF0, + 31363 - 11904: 0x9A73, + 31364 - 11904: 0xAFB6, + 31365 - 11904: 0xD2F8, + 31366 - 11904: 0xD2F6, + 31367 - 11904: 0xD2FC, + 31368 - 11904: 0xAFB7, + 31369 - 11904: 0xD2F7, + 31370 - 11904: 0xD2FB, + 31371 - 11904: 0xD2F9, + 31372 - 11904: 0xD2FA, + 31375 - 11904: 0xD6C8, + 31376 - 11904: 0xD6CA, + 31377 - 11904: 0x9947, + 31378 - 11904: 0xB2BF, + 31379 - 11904: 0x8CB1, + 31380 - 11904: 0xD6C9, + 31381 - 11904: 0xB2C0, + 31382 - 11904: 0xB5A2, + 31383 - 11904: 0xB5A1, + 31384 - 11904: 0xB57E, + 31385 - 11904: 0xDADB, + 31390 - 11904: 0xDF44, + 31391 - 11904: 0xB85D, + 31392 - 11904: 0xB85E, + 31394 - 11904: 0xDF43, + 31395 - 11904: 0xDF42, + 31400 - 11904: 0xE34A, + 31401 - 11904: 0xBADB, + 31402 - 11904: 0xBADA, + 31403 - 11904: 0xE34B, + 31404 - 11904: 0xE34C, + 31406 - 11904: 0xBD61, + 31407 - 11904: 0xBD60, + 31408 - 11904: 0x8E50, + 31409 - 11904: 0xEAB5, + 31410 - 11904: 0xE6D3, + 31411 - 11904: 0xE6D5, + 31412 - 11904: 0xE6D4, + 31413 - 11904: 0xEAB4, + 31414 - 11904: 0xEAB2, + 31415 - 11904: 0xEAB6, + 31416 - 11904: 0xEAB3, + 31418 - 11904: 0xBF73, + 31419 - 11904: 0x8E4F, + 31420 - 11904: 0x9949, + 31422 - 11904: 0xEDB7, + 31423 - 11904: 0xC14B, + 31424 - 11904: 0xEDB8, + 31425 - 11904: 0xEDB9, + 31426 - 11904: 0x8E51, + 31427 - 11904: 0x8E52, + 31428 - 11904: 0xC2AB, + 31429 - 11904: 0xC2AC, + 31431 - 11904: 0xC475, + 31432 - 11904: 0x9AB2, + 31433 - 11904: 0x89A5, + 31434 - 11904: 0xC5D1, + 31435 - 11904: 0xA5DF, + 31439 - 11904: 0x994C, + 31441 - 11904: 0xD041, + 31443 - 11904: 0x9FF8, + 31448 - 11904: 0xD2FD, + 31449 - 11904: 0xAFB8, + 31450 - 11904: 0x8E56, + 31451 - 11904: 0x994D, + 31452 - 11904: 0x91CA, + 31453 - 11904: 0x8E57, + 31455 - 11904: 0xB3BA, + 31456 - 11904: 0xB3B9, + 31458 - 11904: 0x94E1, + 31459 - 11904: 0xB5A4, + 31460 - 11904: 0xDADD, + 31461 - 11904: 0xB5A3, + 31462 - 11904: 0xDADC, + 31463 - 11904: 0x9047, + 31465 - 11904: 0x8FD8, + 31466 - 11904: 0x8E58, + 31467 - 11904: 0xDF45, + 31469 - 11904: 0xBADC, + 31470 - 11904: 0xE34D, + 31471 - 11904: 0xBADD, + 31478 - 11904: 0xC476, + 31479 - 11904: 0xF4A5, + 31481 - 11904: 0xA6CB, + 31482 - 11904: 0xAAC7, + 31483 - 11904: 0xCDA7, + 31484 - 11904: 0x87A3, + 31485 - 11904: 0xACF2, + 31486 - 11904: 0x94EB, + 31487 - 11904: 0xACF1, + 31488 - 11904: 0xD042, + 31489 - 11904: 0xD043, + 31492 - 11904: 0xD340, + 31493 - 11904: 0xD342, + 31494 - 11904: 0xAFB9, + 31496 - 11904: 0xD344, + 31497 - 11904: 0xD347, + 31498 - 11904: 0xD345, + 31499 - 11904: 0x8E5C, + 31500 - 11904: 0x9553, + 31502 - 11904: 0xD346, + 31503 - 11904: 0xD343, + 31504 - 11904: 0xD2FE, + 31505 - 11904: 0xAFBA, + 31506 - 11904: 0xD348, + 31507 - 11904: 0xD341, + 31508 - 11904: 0x9FE5, + 31512 - 11904: 0xD6D3, + 31513 - 11904: 0xB2C6, + 31514 - 11904: 0xD6DC, + 31515 - 11904: 0xB2C3, + 31517 - 11904: 0xD6D5, + 31518 - 11904: 0xB2C7, + 31519 - 11904: 0x9F56, + 31520 - 11904: 0xB2C1, + 31522 - 11904: 0xD6D0, + 31523 - 11904: 0xD6DD, + 31524 - 11904: 0xD6D1, + 31525 - 11904: 0xD6CE, + 31526 - 11904: 0xB2C5, + 31527 - 11904: 0x954F, + 31528 - 11904: 0xB2C2, + 31529 - 11904: 0x8E5E, + 31530 - 11904: 0xD6D4, + 31531 - 11904: 0xD6D7, + 31532 - 11904: 0xB2C4, + 31533 - 11904: 0xD6D8, + 31534 - 11904: 0xB2C8, + 31535 - 11904: 0xD6D9, + 31536 - 11904: 0xD6CF, + 31537 - 11904: 0xD6D6, + 31538 - 11904: 0xD6DA, + 31539 - 11904: 0xD6D2, + 31540 - 11904: 0xD6CD, + 31541 - 11904: 0xD6CB, + 31544 - 11904: 0xD6DB, + 31545 - 11904: 0x996A, + 31547 - 11904: 0xDADF, + 31552 - 11904: 0xDAE4, + 31554 - 11904: 0x9C64, + 31555 - 11904: 0x9CD9, + 31556 - 11904: 0xDAE0, + 31557 - 11904: 0xDAE6, + 31558 - 11904: 0xB5A7, + 31559 - 11904: 0xD6CC, + 31560 - 11904: 0xDAE1, + 31561 - 11904: 0xB5A5, + 31562 - 11904: 0xDADE, + 31563 - 11904: 0xB5AC, + 31564 - 11904: 0xDAE2, + 31565 - 11904: 0xB5AB, + 31566 - 11904: 0xDAE3, + 31567 - 11904: 0xB5AD, + 31568 - 11904: 0xB5A8, + 31569 - 11904: 0xB5AE, + 31570 - 11904: 0xB5A9, + 31572 - 11904: 0xB5AA, + 31573 - 11904: 0x8E5D, + 31574 - 11904: 0xB5A6, + 31576 - 11904: 0xDAE5, + 31584 - 11904: 0xB861, + 31585 - 11904: 0xDF50, + 31586 - 11904: 0x9950, + 31587 - 11904: 0xDF53, + 31588 - 11904: 0xDF47, + 31589 - 11904: 0xDF4C, + 31590 - 11904: 0xDF46, + 31591 - 11904: 0xB863, + 31593 - 11904: 0xDF4A, + 31596 - 11904: 0x9951, + 31597 - 11904: 0xDF48, + 31598 - 11904: 0xB862, + 31599 - 11904: 0x8E62, + 31600 - 11904: 0xDF4F, + 31601 - 11904: 0xDF4E, + 31602 - 11904: 0xDF4B, + 31603 - 11904: 0xDF4D, + 31604 - 11904: 0xDF49, + 31605 - 11904: 0xBAE1, + 31606 - 11904: 0xDF52, + 31607 - 11904: 0xB85F, + 31608 - 11904: 0xDF51, + 31611 - 11904: 0x9952, + 31618 - 11904: 0xE35D, + 31620 - 11904: 0xBAE8, + 31621 - 11904: 0xE358, + 31623 - 11904: 0xBAE7, + 31624 - 11904: 0xE34E, + 31626 - 11904: 0xE350, + 31627 - 11904: 0xBAE0, + 31628 - 11904: 0xE355, + 31629 - 11904: 0xE354, + 31630 - 11904: 0xE357, + 31631 - 11904: 0xBAE5, + 31632 - 11904: 0xE352, + 31633 - 11904: 0xE351, + 31634 - 11904: 0x8E68, + 31636 - 11904: 0xBAE4, + 31637 - 11904: 0xBADF, + 31638 - 11904: 0xE353, + 31639 - 11904: 0xBAE2, + 31640 - 11904: 0xE359, + 31641 - 11904: 0xE35B, + 31643 - 11904: 0xE356, + 31644 - 11904: 0xE34F, + 31645 - 11904: 0xBAE3, + 31648 - 11904: 0xBD69, + 31649 - 11904: 0xBADE, + 31650 - 11904: 0x8E61, + 31651 - 11904: 0x9F59, + 31652 - 11904: 0xE35C, + 31660 - 11904: 0xE6D9, + 31661 - 11904: 0xBD62, + 31662 - 11904: 0x87D0, + 31663 - 11904: 0xE6DB, + 31665 - 11904: 0xBD63, + 31666 - 11904: 0x8BB3, + 31668 - 11904: 0xBD65, + 31669 - 11904: 0xE6DE, + 31671 - 11904: 0xE6D6, + 31672 - 11904: 0xBAE6, + 31673 - 11904: 0xE6DC, + 31678 - 11904: 0xE6D8, + 31680 - 11904: 0xB860, + 31681 - 11904: 0xBD68, + 31684 - 11904: 0xBD64, + 31685 - 11904: 0x87B9, + 31686 - 11904: 0xBD66, + 31687 - 11904: 0xBD67, + 31689 - 11904: 0xBF76, + 31690 - 11904: 0xE6DD, + 31691 - 11904: 0xE6D7, + 31692 - 11904: 0xBD6A, + 31694 - 11904: 0xE6DA, + 31695 - 11904: 0x9F5D, + 31696 - 11904: 0x8E66, + 31700 - 11904: 0xEAC0, + 31701 - 11904: 0xEABB, + 31704 - 11904: 0xEAC5, + 31705 - 11904: 0xBF74, + 31706 - 11904: 0xEABD, + 31707 - 11904: 0xBF78, + 31708 - 11904: 0xEAC3, + 31709 - 11904: 0xEABA, + 31710 - 11904: 0xEAB7, + 31711 - 11904: 0xEAC6, + 31712 - 11904: 0xC151, + 31713 - 11904: 0xBF79, + 31714 - 11904: 0xEAC2, + 31715 - 11904: 0xEAB8, + 31716 - 11904: 0xBF77, + 31717 - 11904: 0xEABC, + 31718 - 11904: 0xBF7B, + 31719 - 11904: 0xEAB9, + 31720 - 11904: 0xEABE, + 31721 - 11904: 0xBF7A, + 31722 - 11904: 0xEAC1, + 31723 - 11904: 0xEAC4, + 31724 - 11904: 0x8CB2, + 31728 - 11904: 0xEDCB, + 31729 - 11904: 0xEDCC, + 31730 - 11904: 0xEDBC, + 31731 - 11904: 0xEDC3, + 31732 - 11904: 0xEDC1, + 31735 - 11904: 0xC14F, + 31736 - 11904: 0xEDC8, + 31737 - 11904: 0xEABF, + 31738 - 11904: 0x8E6E, + 31739 - 11904: 0xEDBF, + 31740 - 11904: 0x9F64, + 31741 - 11904: 0xEDC9, + 31742 - 11904: 0xC14E, + 31743 - 11904: 0xEDBE, + 31744 - 11904: 0xEDBD, + 31745 - 11904: 0xEDC7, + 31746 - 11904: 0xEDC4, + 31747 - 11904: 0xEDC6, + 31749 - 11904: 0xEDBA, + 31750 - 11904: 0xEDCA, + 31751 - 11904: 0xC14C, + 31753 - 11904: 0xEDC5, + 31754 - 11904: 0xEDCE, + 31755 - 11904: 0xEDC2, + 31756 - 11904: 0xC150, + 31757 - 11904: 0xC14D, + 31758 - 11904: 0xEDC0, + 31759 - 11904: 0xEDBB, + 31760 - 11904: 0xEDCD, + 31761 - 11904: 0xBF75, + 31762 - 11904: 0x9953, + 31765 - 11904: 0xFAB8, + 31769 - 11904: 0xF063, + 31771 - 11904: 0x9954, + 31772 - 11904: 0xF061, + 31773 - 11904: 0xF067, + 31774 - 11904: 0xC2B0, + 31775 - 11904: 0xF065, + 31776 - 11904: 0xF064, + 31777 - 11904: 0xC2B2, + 31778 - 11904: 0xF06A, + 31779 - 11904: 0xC2B1, + 31781 - 11904: 0xF06B, + 31782 - 11904: 0xF068, + 31783 - 11904: 0xC2AE, + 31784 - 11904: 0xF069, + 31785 - 11904: 0xF062, + 31786 - 11904: 0xC2AF, + 31787 - 11904: 0xC2AD, + 31788 - 11904: 0xF2AB, + 31789 - 11904: 0xF066, + 31792 - 11904: 0xF06C, + 31795 - 11904: 0xF2A8, + 31797 - 11904: 0x8E70, + 31799 - 11904: 0xC3B2, + 31800 - 11904: 0xC3B0, + 31801 - 11904: 0xF2AA, + 31803 - 11904: 0xF2AC, + 31804 - 11904: 0xF2A9, + 31805 - 11904: 0xC3B1, + 31806 - 11904: 0xC3AE, + 31807 - 11904: 0xC3AF, + 31808 - 11904: 0xC3B3, + 31810 - 11904: 0x9F61, + 31811 - 11904: 0xC478, + 31812 - 11904: 0x8E72, + 31813 - 11904: 0xF4AA, + 31815 - 11904: 0xF4A9, + 31816 - 11904: 0xF4A7, + 31817 - 11904: 0xF4A6, + 31818 - 11904: 0xF4A8, + 31820 - 11904: 0xC477, + 31821 - 11904: 0xC479, + 31824 - 11904: 0xC4F0, + 31825 - 11904: 0xA06B, + 31827 - 11904: 0xF5E5, + 31828 - 11904: 0xF5E4, + 31830 - 11904: 0x9F40, + 31831 - 11904: 0xF6FA, + 31833 - 11904: 0xF6FC, + 31834 - 11904: 0xF6FE, + 31835 - 11904: 0xF6FD, + 31836 - 11904: 0xF6FB, + 31837 - 11904: 0x94ED, + 31839 - 11904: 0xC5A3, + 31840 - 11904: 0xC5A2, + 31843 - 11904: 0xC5D3, + 31844 - 11904: 0xC5D2, + 31845 - 11904: 0xC5D4, + 31846 - 11904: 0xF7ED, + 31847 - 11904: 0xF7EC, + 31849 - 11904: 0xF8FB, + 31850 - 11904: 0xF8B8, + 31851 - 11904: 0xF8FC, + 31852 - 11904: 0xC658, + 31853 - 11904: 0x94EE, + 31854 - 11904: 0xC659, + 31855 - 11904: 0xF96D, + 31856 - 11904: 0x9FBD, + 31858 - 11904: 0xC67E, + 31859 - 11904: 0xA6CC, + 31860 - 11904: 0x8E7B, + 31861 - 11904: 0xCDA8, + 31864 - 11904: 0xD045, + 31865 - 11904: 0xD046, + 31866 - 11904: 0xD044, + 31867 - 11904: 0x9957, + 31868 - 11904: 0x94F7, + 31869 - 11904: 0xACF3, + 31870 - 11904: 0x9F5F, + 31871 - 11904: 0xD047, + 31872 - 11904: 0xD048, + 31873 - 11904: 0xD049, + 31875 - 11904: 0x8E73, + 31876 - 11904: 0xD349, + 31877 - 11904: 0xD34F, + 31878 - 11904: 0x9F62, + 31880 - 11904: 0xD34D, + 31881 - 11904: 0xAFBB, + 31882 - 11904: 0xD34B, + 31884 - 11904: 0xD34C, + 31885 - 11904: 0xD34E, + 31886 - 11904: 0x94F6, + 31889 - 11904: 0xD34A, + 31890 - 11904: 0xB2C9, + 31892 - 11904: 0xD6DE, + 31893 - 11904: 0xB2CB, + 31894 - 11904: 0xD6E0, + 31895 - 11904: 0xB2CA, + 31896 - 11904: 0xD6DF, + 31900 - 11904: 0x9958, + 31902 - 11904: 0xDAE8, + 31903 - 11904: 0xB5AF, + 31905 - 11904: 0xDAEA, + 31906 - 11904: 0xDAE7, + 31907 - 11904: 0xD6E1, + 31909 - 11904: 0xB5B0, + 31910 - 11904: 0x8E75, + 31911 - 11904: 0xF9DB, + 31912 - 11904: 0xDAE9, + 31916 - 11904: 0x9072, + 31918 - 11904: 0x94F8, + 31919 - 11904: 0xDF56, + 31921 - 11904: 0xB864, + 31922 - 11904: 0xDF54, + 31923 - 11904: 0xB865, + 31924 - 11904: 0xDF55, + 31925 - 11904: 0xB866, + 31928 - 11904: 0x995A, + 31929 - 11904: 0xBAE9, + 31930 - 11904: 0xE361, + 31931 - 11904: 0xE35E, + 31932 - 11904: 0xE360, + 31933 - 11904: 0xBAEA, + 31934 - 11904: 0xBAEB, + 31935 - 11904: 0xE35F, + 31938 - 11904: 0xA0B0, + 31939 - 11904: 0x8CB3, + 31941 - 11904: 0xE6DF, + 31943 - 11904: 0x8E79, + 31944 - 11904: 0xE6E0, + 31945 - 11904: 0x8E78, + 31946 - 11904: 0xBD6B, + 31947 - 11904: 0xE6E2, + 31948 - 11904: 0xE6E1, + 31949 - 11904: 0x94F3, + 31950 - 11904: 0xA261, + 31952 - 11904: 0xEACA, + 31953 - 11904: 0xEACB, + 31954 - 11904: 0xEAC7, + 31955 - 11904: 0x98AF, + 31956 - 11904: 0xEAC8, + 31957 - 11904: 0xBF7C, + 31958 - 11904: 0xBF7D, + 31959 - 11904: 0xEAC9, + 31961 - 11904: 0xC157, + 31962 - 11904: 0xA0B2, + 31964 - 11904: 0xC153, + 31965 - 11904: 0xC158, + 31966 - 11904: 0xC154, + 31967 - 11904: 0xC156, + 31968 - 11904: 0xC152, + 31970 - 11904: 0xC155, + 31974 - 11904: 0x8E7A, + 31975 - 11904: 0xC2B3, + 31976 - 11904: 0xEDCF, + 31978 - 11904: 0xF2AE, + 31980 - 11904: 0xF2AD, + 31981 - 11904: 0x995C, + 31982 - 11904: 0xF4AB, + 31983 - 11904: 0xC47A, + 31984 - 11904: 0xC47B, + 31985 - 11904: 0xF741, + 31986 - 11904: 0xF5E6, + 31987 - 11904: 0x8E7C, + 31988 - 11904: 0xF740, + 31989 - 11904: 0x8E7D, + 31990 - 11904: 0xF8FD, + 31991 - 11904: 0xF9A4, + 31992 - 11904: 0xA6CD, + 31993 - 11904: 0x8BD9, + 31995 - 11904: 0xA874, + 31996 - 11904: 0x89A2, + 31997 - 11904: 0xCDA9, + 31998 - 11904: 0xAAC8, + 32000 - 11904: 0xACF6, + 32001 - 11904: 0xD04C, + 32002 - 11904: 0xACF4, + 32003 - 11904: 0xD04A, + 32004 - 11904: 0xACF9, + 32005 - 11904: 0xACF5, + 32006 - 11904: 0xACFA, + 32007 - 11904: 0xACF8, + 32008 - 11904: 0xD04B, + 32009 - 11904: 0xACF7, + 32010 - 11904: 0xAFBF, + 32011 - 11904: 0xAFBE, + 32012 - 11904: 0xD35A, + 32013 - 11904: 0xAFC7, + 32014 - 11904: 0xD353, + 32015 - 11904: 0xD359, + 32016 - 11904: 0xAFC3, + 32017 - 11904: 0xD352, + 32018 - 11904: 0xD358, + 32019 - 11904: 0xD356, + 32020 - 11904: 0xAFC2, + 32021 - 11904: 0xAFC4, + 32022 - 11904: 0xD355, + 32023 - 11904: 0xAFBD, + 32024 - 11904: 0xD354, + 32025 - 11904: 0xAFC8, + 32026 - 11904: 0xAFC5, + 32027 - 11904: 0xAFC9, + 32028 - 11904: 0xAFC6, + 32029 - 11904: 0xD351, + 32030 - 11904: 0xD350, + 32031 - 11904: 0xD357, + 32032 - 11904: 0xAFC0, + 32033 - 11904: 0xAFBC, + 32034 - 11904: 0xAFC1, + 32037 - 11904: 0x9ED7, + 32040 - 11904: 0xD6F0, + 32041 - 11904: 0xD6E9, + 32043 - 11904: 0xB5B5, + 32044 - 11904: 0xD6E8, + 32046 - 11904: 0xB2CF, + 32047 - 11904: 0xB2D6, + 32048 - 11904: 0xB2D3, + 32049 - 11904: 0xB2D9, + 32050 - 11904: 0xB2D8, + 32051 - 11904: 0xB2D4, + 32053 - 11904: 0xD6E2, + 32054 - 11904: 0xD6E5, + 32056 - 11904: 0xD6E4, + 32057 - 11904: 0xB2D0, + 32058 - 11904: 0xD6E6, + 32059 - 11904: 0xD6EF, + 32060 - 11904: 0xB2D1, + 32061 - 11904: 0xD6E3, + 32062 - 11904: 0xD6EC, + 32063 - 11904: 0xD6ED, + 32064 - 11904: 0xB2D2, + 32065 - 11904: 0xD6EA, + 32066 - 11904: 0xB2D7, + 32067 - 11904: 0xB2CD, + 32068 - 11904: 0xB2D5, + 32069 - 11904: 0xD6E7, + 32070 - 11904: 0xB2CC, + 32071 - 11904: 0xD6EB, + 32074 - 11904: 0xD6EE, + 32077 - 11904: 0xA0B6, + 32078 - 11904: 0xDAFB, + 32079 - 11904: 0xDAF2, + 32080 - 11904: 0xB5B2, + 32081 - 11904: 0xDAF9, + 32082 - 11904: 0xDAF6, + 32083 - 11904: 0xDAEE, + 32084 - 11904: 0xDAF7, + 32085 - 11904: 0xB5B4, + 32086 - 11904: 0xDAEF, + 32088 - 11904: 0xDAEB, + 32090 - 11904: 0x9E42, + 32091 - 11904: 0xB86C, + 32092 - 11904: 0xDAF4, + 32093 - 11904: 0x8EA4, + 32094 - 11904: 0xB5B1, + 32095 - 11904: 0xDAFA, + 32097 - 11904: 0xB5B8, + 32098 - 11904: 0xB5BA, + 32099 - 11904: 0xDAED, + 32102 - 11904: 0xB5B9, + 32103 - 11904: 0xDAF0, + 32104 - 11904: 0xB5B3, + 32105 - 11904: 0xDAF8, + 32106 - 11904: 0xDAF1, + 32107 - 11904: 0xDAF5, + 32109 - 11904: 0xDAF3, + 32110 - 11904: 0xB5B6, + 32111 - 11904: 0xDAEC, + 32112 - 11904: 0xB5BB, + 32113 - 11904: 0xB2CE, + 32114 - 11904: 0xB5B7, + 32115 - 11904: 0xB5BC, + 32121 - 11904: 0xB868, + 32122 - 11904: 0xDF5D, + 32123 - 11904: 0xDF5F, + 32124 - 11904: 0xDF61, + 32125 - 11904: 0xDF65, + 32127 - 11904: 0xDF5B, + 32128 - 11904: 0xDF59, + 32129 - 11904: 0xB86A, + 32131 - 11904: 0xDF60, + 32132 - 11904: 0xDF64, + 32133 - 11904: 0xDF5C, + 32134 - 11904: 0xDF58, + 32136 - 11904: 0xDF57, + 32137 - 11904: 0x8EA7, + 32139 - 11904: 0x8C76, + 32140 - 11904: 0xDF62, + 32141 - 11904: 0xDF5A, + 32142 - 11904: 0xDF5E, + 32143 - 11904: 0xB86B, + 32145 - 11904: 0xB869, + 32146 - 11904: 0xDF66, + 32147 - 11904: 0xB867, + 32148 - 11904: 0xDF63, + 32149 - 11904: 0x8767, + 32150 - 11904: 0xE372, + 32151 - 11904: 0x9542, + 32156 - 11904: 0xBAEE, + 32157 - 11904: 0xE36A, + 32158 - 11904: 0xBD78, + 32159 - 11904: 0xE374, + 32160 - 11904: 0xBAF1, + 32161 - 11904: 0xE378, + 32162 - 11904: 0xBAF7, + 32163 - 11904: 0xE365, + 32164 - 11904: 0x987D, + 32166 - 11904: 0xE375, + 32167 - 11904: 0xE362, + 32168 - 11904: 0x9755, + 32169 - 11904: 0xE377, + 32170 - 11904: 0xE366, + 32171 - 11904: 0x8EA8, + 32172 - 11904: 0xBAFE, + 32173 - 11904: 0xBAFB, + 32174 - 11904: 0xE376, + 32175 - 11904: 0xE370, + 32176 - 11904: 0xBAED, + 32177 - 11904: 0xBAF5, + 32178 - 11904: 0xBAF4, + 32179 - 11904: 0x8EAA, + 32180 - 11904: 0xBAF3, + 32181 - 11904: 0xBAF9, + 32183 - 11904: 0xE363, + 32184 - 11904: 0xBAFA, + 32185 - 11904: 0xE371, + 32186 - 11904: 0xBAF6, + 32187 - 11904: 0xBAEC, + 32188 - 11904: 0xE373, + 32189 - 11904: 0xBAEF, + 32190 - 11904: 0xBAF0, + 32191 - 11904: 0xBAF8, + 32192 - 11904: 0xE368, + 32193 - 11904: 0xE367, + 32194 - 11904: 0xE364, + 32196 - 11904: 0xE36C, + 32197 - 11904: 0xE369, + 32198 - 11904: 0xE36D, + 32199 - 11904: 0xBAFD, + 32201 - 11904: 0xE379, + 32202 - 11904: 0xBAF2, + 32203 - 11904: 0xE36E, + 32204 - 11904: 0xE36F, + 32205 - 11904: 0x89A3, + 32206 - 11904: 0xE36B, + 32207 - 11904: 0x9960, + 32208 - 11904: 0x9962, + 32210 - 11904: 0xBAFC, + 32211 - 11904: 0x94FC, + 32212 - 11904: 0x9961, + 32215 - 11904: 0xE6E7, + 32216 - 11904: 0xBD70, + 32217 - 11904: 0xBD79, + 32218 - 11904: 0xBD75, + 32219 - 11904: 0xE6E4, + 32220 - 11904: 0x94FA, + 32221 - 11904: 0xBD72, + 32222 - 11904: 0xBD76, + 32223 - 11904: 0xE6F0, + 32224 - 11904: 0xBD6C, + 32225 - 11904: 0xE6E8, + 32227 - 11904: 0xBD74, + 32228 - 11904: 0x8EAE, + 32229 - 11904: 0x8EB2, + 32230 - 11904: 0xE6EB, + 32231 - 11904: 0xE6E6, + 32232 - 11904: 0xBD73, + 32233 - 11904: 0xBD77, + 32234 - 11904: 0xE6E5, + 32236 - 11904: 0xBD71, + 32238 - 11904: 0xE6EF, + 32239 - 11904: 0xBD6E, + 32240 - 11904: 0xE6EE, + 32241 - 11904: 0xE6ED, + 32242 - 11904: 0xBD7A, + 32243 - 11904: 0xE572, + 32244 - 11904: 0xBD6D, + 32245 - 11904: 0x8EB0, + 32246 - 11904: 0xE6EC, + 32247 - 11904: 0xE6E3, + 32249 - 11904: 0xBD7B, + 32250 - 11904: 0xE6EA, + 32251 - 11904: 0xBD6F, + 32253 - 11904: 0x9963, + 32254 - 11904: 0x97AA, + 32259 - 11904: 0xE6E9, + 32263 - 11904: 0x94FB, + 32264 - 11904: 0xBFA2, + 32265 - 11904: 0xBFA7, + 32266 - 11904: 0xBF7E, + 32267 - 11904: 0xEAD8, + 32268 - 11904: 0xEACF, + 32269 - 11904: 0xEADB, + 32270 - 11904: 0xEAD3, + 32271 - 11904: 0xEAD9, + 32272 - 11904: 0xBFA8, + 32273 - 11904: 0xBFA1, + 32274 - 11904: 0xEACC, + 32275 - 11904: 0xEAD2, + 32276 - 11904: 0xEADC, + 32277 - 11904: 0xEAD5, + 32278 - 11904: 0xEADA, + 32279 - 11904: 0xEACE, + 32282 - 11904: 0xEAD6, + 32283 - 11904: 0xBFA3, + 32284 - 11904: 0xEAD4, + 32285 - 11904: 0xBFA6, + 32286 - 11904: 0xBFA5, + 32287 - 11904: 0xEAD0, + 32288 - 11904: 0xEAD1, + 32289 - 11904: 0xEACD, + 32290 - 11904: 0xEAD7, + 32291 - 11904: 0xBFA4, + 32292 - 11904: 0xEADE, + 32293 - 11904: 0xEADD, + 32295 - 11904: 0x8EBB, + 32297 - 11904: 0xEDDA, + 32298 - 11904: 0xEDD6, + 32299 - 11904: 0xC15F, + 32301 - 11904: 0xEDD0, + 32302 - 11904: 0xC159, + 32303 - 11904: 0xC169, + 32304 - 11904: 0xEDDC, + 32305 - 11904: 0xC161, + 32306 - 11904: 0xC15D, + 32307 - 11904: 0xEDD3, + 32308 - 11904: 0xC164, + 32309 - 11904: 0xC167, + 32310 - 11904: 0xEDDE, + 32311 - 11904: 0xC15C, + 32312 - 11904: 0xEDD5, + 32313 - 11904: 0xC165, + 32314 - 11904: 0xEDE0, + 32315 - 11904: 0xEDDD, + 32316 - 11904: 0xEDD1, + 32317 - 11904: 0xC160, + 32318 - 11904: 0xC15A, + 32319 - 11904: 0xC168, + 32320 - 11904: 0xEDD8, + 32321 - 11904: 0xC163, + 32322 - 11904: 0xEDD2, + 32323 - 11904: 0xC15E, + 32324 - 11904: 0xEDDF, + 32325 - 11904: 0xC162, + 32326 - 11904: 0xC15B, + 32327 - 11904: 0xEDD9, + 32328 - 11904: 0xC166, + 32329 - 11904: 0xEDD7, + 32332 - 11904: 0xEDDB, + 32336 - 11904: 0xF06E, + 32337 - 11904: 0xF074, + 32338 - 11904: 0xC2B9, + 32339 - 11904: 0xF077, + 32340 - 11904: 0xC2B4, + 32341 - 11904: 0xC2B5, + 32342 - 11904: 0xF06F, + 32343 - 11904: 0xF076, + 32344 - 11904: 0xF071, + 32345 - 11904: 0xC2BA, + 32346 - 11904: 0xC2B7, + 32347 - 11904: 0x8CDC, + 32348 - 11904: 0xF06D, + 32350 - 11904: 0xC2B6, + 32351 - 11904: 0xF073, + 32352 - 11904: 0xF075, + 32353 - 11904: 0xC2B8, + 32354 - 11904: 0xF072, + 32355 - 11904: 0xF070, + 32357 - 11904: 0x9876, + 32359 - 11904: 0x8EA1, + 32360 - 11904: 0xF2B8, + 32361 - 11904: 0xC3B7, + 32362 - 11904: 0xC3B8, + 32363 - 11904: 0xC3B4, + 32364 - 11904: 0x8CB4, + 32365 - 11904: 0xC3B5, + 32366 - 11904: 0x8EB7, + 32367 - 11904: 0xF2B4, + 32368 - 11904: 0xF2B2, + 32370 - 11904: 0xF2B6, + 32371 - 11904: 0xC3BA, + 32372 - 11904: 0xF2B7, + 32373 - 11904: 0xF2B0, + 32374 - 11904: 0xF2AF, + 32375 - 11904: 0xF2B3, + 32376 - 11904: 0xF2B1, + 32377 - 11904: 0xC3B6, + 32378 - 11904: 0xF2B5, + 32379 - 11904: 0xF4AC, + 32380 - 11904: 0xC47E, + 32381 - 11904: 0xC47D, + 32382 - 11904: 0xF4AD, + 32383 - 11904: 0x9DA6, + 32384 - 11904: 0xF4AF, + 32385 - 11904: 0xF4AE, + 32386 - 11904: 0xC4A1, + 32390 - 11904: 0xF5EB, + 32391 - 11904: 0xF5E8, + 32392 - 11904: 0xF5E9, + 32394 - 11904: 0xF5E7, + 32395 - 11904: 0xF5EA, + 32396 - 11904: 0xC4F2, + 32397 - 11904: 0xF5EC, + 32398 - 11904: 0x9EB0, + 32399 - 11904: 0xC4F1, + 32401 - 11904: 0xF742, + 32402 - 11904: 0x8EB8, + 32403 - 11904: 0xC5D5, + 32404 - 11904: 0xC5D7, + 32405 - 11904: 0xF7EE, + 32406 - 11904: 0xC5D6, + 32407 - 11904: 0xF8B9, + 32408 - 11904: 0xF940, + 32409 - 11904: 0xF942, + 32410 - 11904: 0xF8FE, + 32411 - 11904: 0xF941, + 32412 - 11904: 0xC66C, + 32415 - 11904: 0x9D70, + 32420 - 11904: 0x896E, + 32428 - 11904: 0x896F, + 32442 - 11904: 0x8970, + 32455 - 11904: 0x8971, + 32463 - 11904: 0x8972, + 32479 - 11904: 0x8973, + 32518 - 11904: 0x8974, + 32566 - 11904: 0xA6CE, + 32567 - 11904: 0x8975, + 32568 - 11904: 0xACFB, + 32569 - 11904: 0xD26F, + 32570 - 11904: 0xAFCA, + 32573 - 11904: 0xB2DA, + 32574 - 11904: 0xDAFC, + 32575 - 11904: 0xDAFD, + 32576 - 11904: 0x8EBC, + 32577 - 11904: 0x8EBD, + 32579 - 11904: 0xEADF, + 32580 - 11904: 0xC16A, + 32581 - 11904: 0xEDE1, + 32583 - 11904: 0x8EBE, + 32584 - 11904: 0xC2BB, + 32585 - 11904: 0x9DD1, + 32586 - 11904: 0xF2BA, + 32587 - 11904: 0xF2B9, + 32588 - 11904: 0xC4A2, + 32589 - 11904: 0xF5ED, + 32590 - 11904: 0x94FD, + 32591 - 11904: 0xF743, + 32592 - 11904: 0xC5F8, + 32593 - 11904: 0xCA49, + 32594 - 11904: 0x8BD7, + 32595 - 11904: 0x8BDA, + 32596 - 11904: 0xAAC9, + 32597 - 11904: 0xA875, + 32600 - 11904: 0xD04D, + 32603 - 11904: 0xD360, + 32604 - 11904: 0xD35B, + 32605 - 11904: 0xD35F, + 32606 - 11904: 0xD35D, + 32607 - 11904: 0xAFCB, + 32608 - 11904: 0xD35E, + 32609 - 11904: 0xD35C, + 32611 - 11904: 0xD6F1, + 32613 - 11904: 0xDAFE, + 32614 - 11904: 0xDB40, + 32615 - 11904: 0xDF69, + 32616 - 11904: 0xDF6A, + 32617 - 11904: 0xB86E, + 32618 - 11904: 0xB86F, + 32619 - 11904: 0xDF68, + 32620 - 11904: 0xDF6B, + 32621 - 11904: 0xDF67, + 32622 - 11904: 0xB86D, + 32624 - 11904: 0xBB40, + 32625 - 11904: 0xA0E2, + 32626 - 11904: 0xB870, + 32627 - 11904: 0xE37A, + 32629 - 11904: 0xBD7C, + 32630 - 11904: 0xE6F1, + 32631 - 11904: 0xBD7D, + 32632 - 11904: 0x9FE9, + 32633 - 11904: 0xBFA9, + 32634 - 11904: 0xEAE2, + 32635 - 11904: 0xEAE0, + 32636 - 11904: 0xEAE1, + 32637 - 11904: 0xEDE4, + 32638 - 11904: 0xEDE3, + 32639 - 11904: 0xEDE2, + 32643 - 11904: 0xF2BB, + 32645 - 11904: 0xC3B9, + 32646 - 11904: 0xF2BC, + 32647 - 11904: 0xF744, + 32648 - 11904: 0xC5F9, + 32649 - 11904: 0xF8BA, + 32650 - 11904: 0xA6CF, + 32651 - 11904: 0xAACB, + 32652 - 11904: 0xAACA, + 32653 - 11904: 0xD04F, + 32654 - 11904: 0xACFC, + 32655 - 11904: 0xFDA8, + 32657 - 11904: 0xD04E, + 32658 - 11904: 0xD362, + 32659 - 11904: 0x8AE7, + 32660 - 11904: 0xAFCC, + 32661 - 11904: 0xD6F2, + 32662 - 11904: 0xD361, + 32663 - 11904: 0x8EC2, + 32666 - 11904: 0xB2DC, + 32667 - 11904: 0xD6F5, + 32668 - 11904: 0xD6F3, + 32669 - 11904: 0xD6F4, + 32670 - 11904: 0xB2DB, + 32672 - 11904: 0xDB42, + 32673 - 11904: 0xDB43, + 32674 - 11904: 0xDB41, + 32675 - 11904: 0x8EC4, + 32676 - 11904: 0xB873, + 32677 - 11904: 0xDF6D, + 32678 - 11904: 0xDF6C, + 32679 - 11904: 0xDF6E, + 32680 - 11904: 0xB872, + 32681 - 11904: 0xB871, + 32684 - 11904: 0xE6F2, + 32685 - 11904: 0xE6F4, + 32686 - 11904: 0x9964, + 32687 - 11904: 0xBD7E, + 32688 - 11904: 0xE6F3, + 32689 - 11904: 0xEAE3, + 32690 - 11904: 0xBFAA, + 32691 - 11904: 0xF079, + 32692 - 11904: 0x9965, + 32693 - 11904: 0xF078, + 32694 - 11904: 0xC3BB, + 32695 - 11904: 0xF2BD, + 32696 - 11904: 0xC3BD, + 32697 - 11904: 0xC3BC, + 32698 - 11904: 0xF4B0, + 32699 - 11904: 0xF5EE, + 32700 - 11904: 0xC4F3, + 32701 - 11904: 0xA6D0, + 32702 - 11904: 0xD050, + 32703 - 11904: 0xACFD, + 32704 - 11904: 0xD365, + 32705 - 11904: 0xAFCE, + 32706 - 11904: 0xD364, + 32707 - 11904: 0xD363, + 32709 - 11904: 0xAFCD, + 32711 - 11904: 0xD6FB, + 32713 - 11904: 0xD6FD, + 32714 - 11904: 0xD6F6, + 32715 - 11904: 0xD6F7, + 32716 - 11904: 0xB2DD, + 32717 - 11904: 0xD6F8, + 32718 - 11904: 0xB2DE, + 32719 - 11904: 0xD6FC, + 32720 - 11904: 0xD6F9, + 32721 - 11904: 0xD6FA, + 32722 - 11904: 0xB2DF, + 32724 - 11904: 0xB5BE, + 32725 - 11904: 0xB5BF, + 32727 - 11904: 0xDB44, + 32731 - 11904: 0xDF6F, + 32732 - 11904: 0xDF70, + 32733 - 11904: 0x954E, + 32734 - 11904: 0xE37E, + 32735 - 11904: 0xBB43, + 32736 - 11904: 0xBB41, + 32737 - 11904: 0xBB42, + 32738 - 11904: 0xE37B, + 32739 - 11904: 0xE37C, + 32741 - 11904: 0xE37D, + 32742 - 11904: 0xE6F9, + 32743 - 11904: 0x98B3, + 32744 - 11904: 0xE6FA, + 32745 - 11904: 0xBDA1, + 32746 - 11904: 0xE6F7, + 32747 - 11904: 0xE6F6, + 32748 - 11904: 0xE6F8, + 32749 - 11904: 0xE6F5, + 32750 - 11904: 0xBFAD, + 32751 - 11904: 0xEAE4, + 32752 - 11904: 0xBFAB, + 32753 - 11904: 0xBFAC, + 32754 - 11904: 0xEDE6, + 32755 - 11904: 0xC16B, + 32756 - 11904: 0xEDE5, + 32757 - 11904: 0xEFA8, + 32759 - 11904: 0xF07A, + 32760 - 11904: 0xF07B, + 32761 - 11904: 0xC2BC, + 32762 - 11904: 0x8ECB, + 32763 - 11904: 0xC2BD, + 32764 - 11904: 0xC16C, + 32765 - 11904: 0xF2BE, + 32766 - 11904: 0xF2BF, + 32767 - 11904: 0xF4B1, + 32768 - 11904: 0xC4A3, + 32769 - 11904: 0xA6D1, + 32770 - 11904: 0x8BDF, + 32771 - 11904: 0xA6D2, + 32772 - 11904: 0xACFE, + 32773 - 11904: 0xAACC, + 32774 - 11904: 0xAFCF, + 32775 - 11904: 0xD051, + 32776 - 11904: 0x8ECE, + 32779 - 11904: 0xB5C0, + 32780 - 11904: 0xA6D3, + 32781 - 11904: 0xAD41, + 32782 - 11904: 0xD052, + 32783 - 11904: 0xD053, + 32784 - 11904: 0xAD40, + 32785 - 11904: 0xAD42, + 32786 - 11904: 0xA6D4, + 32788 - 11904: 0xD054, + 32789 - 11904: 0xAFD1, + 32790 - 11904: 0xD366, + 32791 - 11904: 0xAFD3, + 32792 - 11904: 0xAFD0, + 32793 - 11904: 0xAFD2, + 32795 - 11904: 0xD741, + 32796 - 11904: 0xB2E0, + 32797 - 11904: 0x8ECF, + 32798 - 11904: 0xD740, + 32799 - 11904: 0xD6FE, + 32800 - 11904: 0x9968, + 32801 - 11904: 0xDF71, + 32804 - 11904: 0xE3A1, + 32805 - 11904: 0x9969, + 32806 - 11904: 0xBDA2, + 32808 - 11904: 0xBFAE, + 32809 - 11904: 0xEAE6, + 32810 - 11904: 0xEAE5, + 32812 - 11904: 0xEDE7, + 32814 - 11904: 0x996B, + 32815 - 11904: 0x8ED1, + 32816 - 11904: 0xF5EF, + 32817 - 11904: 0x996C, + 32819 - 11904: 0xA6D5, + 32820 - 11904: 0xCB73, + 32821 - 11904: 0xCDAA, + 32822 - 11904: 0xAD43, + 32823 - 11904: 0xD055, + 32825 - 11904: 0xD368, + 32827 - 11904: 0x8ED4, + 32828 - 11904: 0x8ED5, + 32829 - 11904: 0xAFD4, + 32830 - 11904: 0xD367, + 32831 - 11904: 0xAFD5, + 32835 - 11904: 0xD743, + 32838 - 11904: 0xB2E2, + 32839 - 11904: 0xD742, + 32840 - 11904: 0xD744, + 32842 - 11904: 0xB2E1, + 32847 - 11904: 0xDB46, + 32848 - 11904: 0xDB47, + 32849 - 11904: 0xDB45, + 32850 - 11904: 0xB5C1, + 32852 - 11904: 0x996D, + 32854 - 11904: 0xB874, + 32856 - 11904: 0xB875, + 32858 - 11904: 0xBB45, + 32859 - 11904: 0xA0BE, + 32860 - 11904: 0xE3A3, + 32861 - 11904: 0xE3A2, + 32862 - 11904: 0xBB44, + 32865 - 11904: 0x8ED6, + 32866 - 11904: 0xA0BC, + 32867 - 11904: 0xA0B5, + 32868 - 11904: 0xE6FB, + 32870 - 11904: 0xA0B4, + 32871 - 11904: 0xE6FC, + 32876 - 11904: 0xEAE7, + 32879 - 11904: 0xC170, + 32880 - 11904: 0xC16F, + 32881 - 11904: 0xC16D, + 32882 - 11904: 0xC16E, + 32883 - 11904: 0xC171, + 32885 - 11904: 0xF07C, + 32886 - 11904: 0xC2BF, + 32887 - 11904: 0xC2BE, + 32888 - 11904: 0xF2C0, + 32889 - 11904: 0xF4B2, + 32893 - 11904: 0xC5A5, + 32894 - 11904: 0xC5A4, + 32895 - 11904: 0xA6D6, + 32896 - 11904: 0x8BE0, + 32898 - 11904: 0xD1FB, + 32900 - 11904: 0xB877, + 32901 - 11904: 0xB5C2, + 32902 - 11904: 0xB876, + 32903 - 11904: 0xBB46, + 32905 - 11904: 0xA6D7, + 32906 - 11904: 0xC9A9, + 32907 - 11904: 0xA6D8, + 32908 - 11904: 0xA6D9, + 32911 - 11904: 0xCDAB, + 32912 - 11904: 0xCB76, + 32914 - 11904: 0xCB77, + 32915 - 11904: 0xA877, + 32917 - 11904: 0xCB74, + 32918 - 11904: 0xA876, + 32920 - 11904: 0xA879, + 32921 - 11904: 0xCB75, + 32922 - 11904: 0xA87B, + 32923 - 11904: 0xA87A, + 32924 - 11904: 0xCB78, + 32925 - 11904: 0xA878, + 32927 - 11904: 0x89B5, + 32929 - 11904: 0xAAD1, + 32930 - 11904: 0xAACF, + 32931 - 11904: 0xCDAD, + 32933 - 11904: 0xAACE, + 32935 - 11904: 0x8EDD, + 32937 - 11904: 0xAAD3, + 32938 - 11904: 0xAAD5, + 32939 - 11904: 0xAAD2, + 32941 - 11904: 0xCDB0, + 32942 - 11904: 0xCDAC, + 32943 - 11904: 0xAAD6, + 32945 - 11904: 0xAAD0, + 32946 - 11904: 0xA87C, + 32948 - 11904: 0xAAD4, + 32949 - 11904: 0xCDAF, + 32950 - 11904: 0x9E5D, + 32951 - 11904: 0x9971, + 32952 - 11904: 0xCDAE, + 32954 - 11904: 0xAACD, + 32956 - 11904: 0x89AE, + 32957 - 11904: 0x9DE8, + 32962 - 11904: 0xD05B, + 32963 - 11904: 0xAD47, + 32964 - 11904: 0xAD48, + 32965 - 11904: 0xD05D, + 32966 - 11904: 0x9565, + 32967 - 11904: 0xD057, + 32968 - 11904: 0xD05A, + 32969 - 11904: 0xD063, + 32970 - 11904: 0xD061, + 32972 - 11904: 0xAD49, + 32973 - 11904: 0xD067, + 32974 - 11904: 0xAD4C, + 32975 - 11904: 0xD064, + 32976 - 11904: 0xD05C, + 32977 - 11904: 0xD059, + 32980 - 11904: 0xDB49, + 32981 - 11904: 0xD062, + 32982 - 11904: 0xAD44, + 32983 - 11904: 0xD065, + 32984 - 11904: 0xD056, + 32985 - 11904: 0xD05F, + 32986 - 11904: 0xAD46, + 32987 - 11904: 0xAD4B, + 32988 - 11904: 0xD060, + 32989 - 11904: 0xAD4F, + 32990 - 11904: 0xAD4D, + 32992 - 11904: 0xD058, + 32993 - 11904: 0xAD4A, + 32995 - 11904: 0xD05E, + 32996 - 11904: 0xAD4E, + 32997 - 11904: 0xAD45, + 32998 - 11904: 0xD066, + 33001 - 11904: 0x9972, + 33004 - 11904: 0x8B5C, + 33005 - 11904: 0xAFDA, + 33007 - 11904: 0xAFE3, + 33008 - 11904: 0xAFD8, + 33009 - 11904: 0xAFD6, + 33010 - 11904: 0xD36A, + 33011 - 11904: 0xAFDE, + 33012 - 11904: 0xAFDB, + 33013 - 11904: 0xD36C, + 33014 - 11904: 0x89B1, + 33016 - 11904: 0xAFDD, + 33017 - 11904: 0xD36B, + 33018 - 11904: 0xD369, + 33019 - 11904: 0xD36E, + 33020 - 11904: 0xAFE2, + 33021 - 11904: 0xAFE0, + 33022 - 11904: 0xDB48, + 33024 - 11904: 0xD36F, + 33025 - 11904: 0xD36D, + 33026 - 11904: 0xAFD7, + 33027 - 11904: 0xA0C0, + 33029 - 11904: 0xAFD9, + 33030 - 11904: 0xAFDC, + 33031 - 11904: 0x8EDF, + 33032 - 11904: 0xAFDF, + 33033 - 11904: 0x9566, + 33034 - 11904: 0xAFE1, + 33036 - 11904: 0x9974, + 33038 - 11904: 0x9976, + 33042 - 11904: 0x9977, + 33044 - 11904: 0x9979, + 33045 - 11904: 0xD74E, + 33046 - 11904: 0xB2E4, + 33047 - 11904: 0x9DDA, + 33048 - 11904: 0xD745, + 33049 - 11904: 0xD747, + 33050 - 11904: 0x8EE0, + 33051 - 11904: 0xD748, + 33053 - 11904: 0xD750, + 33054 - 11904: 0xD74C, + 33055 - 11904: 0xD74A, + 33057 - 11904: 0xD74D, + 33058 - 11904: 0xD751, + 33059 - 11904: 0xB2E5, + 33060 - 11904: 0xB2E9, + 33061 - 11904: 0xD746, + 33063 - 11904: 0xD74F, + 33065 - 11904: 0xB2E7, + 33066 - 11904: 0x935C, + 33067 - 11904: 0xB2E6, + 33068 - 11904: 0xD74B, + 33069 - 11904: 0xD749, + 33071 - 11904: 0xB2E3, + 33072 - 11904: 0xB2E8, + 33074 - 11904: 0x9DE6, + 33076 - 11904: 0x8B5F, + 33079 - 11904: 0x9563, + 33081 - 11904: 0xB5C8, + 33082 - 11904: 0xDB51, + 33085 - 11904: 0xDB4F, + 33086 - 11904: 0xB5CA, + 33090 - 11904: 0x9567, + 33091 - 11904: 0xDB4A, + 33092 - 11904: 0xDFA1, + 33094 - 11904: 0xB5C9, + 33095 - 11904: 0xDB4E, + 33096 - 11904: 0x9DE3, + 33098 - 11904: 0xDB4B, + 33099 - 11904: 0xB5C5, + 33100 - 11904: 0xB5CB, + 33101 - 11904: 0xDB50, + 33102 - 11904: 0xB5C7, + 33103 - 11904: 0xDB4D, + 33104 - 11904: 0xBB47, + 33105 - 11904: 0xB5C6, + 33106 - 11904: 0xDB4C, + 33107 - 11904: 0xB5CC, + 33108 - 11904: 0xB5C4, + 33109 - 11904: 0xB5C3, + 33110 - 11904: 0x997C, + 33113 - 11904: 0x997D, + 33114 - 11904: 0x997E, + 33115 - 11904: 0xDF77, + 33116 - 11904: 0xDF75, + 33118 - 11904: 0xDF7B, + 33120 - 11904: 0xDF73, + 33121 - 11904: 0xDFA2, + 33122 - 11904: 0xDF78, + 33124 - 11904: 0xDF72, + 33125 - 11904: 0xB87B, + 33126 - 11904: 0xB8A3, + 33127 - 11904: 0xDF7D, + 33129 - 11904: 0xDF76, + 33131 - 11904: 0xB87E, + 33132 - 11904: 0x8CFB, + 33133 - 11904: 0x8B5B, + 33134 - 11904: 0xB87C, + 33135 - 11904: 0xDF7E, + 33136 - 11904: 0xB879, + 33137 - 11904: 0xB878, + 33138 - 11904: 0xDF79, + 33139 - 11904: 0xB87D, + 33140 - 11904: 0xB5CD, + 33142 - 11904: 0xDF7C, + 33143 - 11904: 0xDF74, + 33144 - 11904: 0xB87A, + 33145 - 11904: 0xB8A1, + 33146 - 11904: 0xB8A2, + 33148 - 11904: 0x99A3, + 33151 - 11904: 0xBB4C, + 33152 - 11904: 0xBB48, + 33154 - 11904: 0xBB4D, + 33155 - 11904: 0xE3A6, + 33156 - 11904: 0x99A4, + 33158 - 11904: 0xE3A5, + 33159 - 11904: 0xE3A7, + 33160 - 11904: 0xBB4A, + 33161 - 11904: 0xE3A4, + 33162 - 11904: 0xBB4B, + 33163 - 11904: 0xE3AA, + 33164 - 11904: 0xE3A9, + 33165 - 11904: 0xE3A8, + 33167 - 11904: 0xBB49, + 33171 - 11904: 0x99A6, + 33173 - 11904: 0xE741, + 33175 - 11904: 0xE744, + 33176 - 11904: 0xBDA8, + 33177 - 11904: 0xE743, + 33178 - 11904: 0xBDA7, + 33179 - 11904: 0xBDA3, + 33180 - 11904: 0xBDA4, + 33181 - 11904: 0xBDA5, + 33182 - 11904: 0xE740, + 33183 - 11904: 0xE6FE, + 33184 - 11904: 0xBDA6, + 33186 - 11904: 0xE742, + 33187 - 11904: 0xE6FD, + 33189 - 11904: 0x99A8, + 33190 - 11904: 0xEAE9, + 33191 - 11904: 0xEAF3, + 33192 - 11904: 0xBFB1, + 33193 - 11904: 0xBFB0, + 33194 - 11904: 0x8ABE, + 33195 - 11904: 0xEAED, + 33196 - 11904: 0xEAEF, + 33198 - 11904: 0xEAEA, + 33200 - 11904: 0xEAEE, + 33201 - 11904: 0xEAE8, + 33202 - 11904: 0xEAF1, + 33203 - 11904: 0xBFAF, + 33204 - 11904: 0xEAF0, + 33205 - 11904: 0xEAEC, + 33206 - 11904: 0x9E61, + 33207 - 11904: 0xEAF2, + 33209 - 11904: 0xEAEB, + 33210 - 11904: 0xC174, + 33211 - 11904: 0xEDE8, + 33212 - 11904: 0xEDEE, + 33213 - 11904: 0xC178, + 33214 - 11904: 0xC17A, + 33215 - 11904: 0xC177, + 33216 - 11904: 0xC176, + 33217 - 11904: 0x99AA, + 33218 - 11904: 0xC175, + 33219 - 11904: 0xC173, + 33220 - 11904: 0xEDE9, + 33221 - 11904: 0xEDEC, + 33222 - 11904: 0xC172, + 33223 - 11904: 0xEDED, + 33224 - 11904: 0xA0C8, + 33225 - 11904: 0xC179, + 33226 - 11904: 0xEDEB, + 33228 - 11904: 0xEDEA, + 33229 - 11904: 0xC2C0, + 33231 - 11904: 0xC2C1, + 33232 - 11904: 0xF0A1, + 33233 - 11904: 0xF07D, + 33234 - 11904: 0xF07E, + 33237 - 11904: 0xF2C2, + 33239 - 11904: 0xF2C1, + 33240 - 11904: 0xC3BE, + 33241 - 11904: 0xF4B4, + 33242 - 11904: 0xC4A4, + 33243 - 11904: 0xF4B3, + 33245 - 11904: 0xF5F0, + 33246 - 11904: 0xF745, + 33247 - 11904: 0xC5A6, + 33248 - 11904: 0xF943, + 33249 - 11904: 0xF944, + 33250 - 11904: 0xC5D8, + 33251 - 11904: 0xA6DA, + 33252 - 11904: 0x99AB, + 33253 - 11904: 0xAAD7, + 33254 - 11904: 0xDB52, + 33255 - 11904: 0xBB4E, + 33256 - 11904: 0xC17B, + 33257 - 11904: 0xEDEF, + 33258 - 11904: 0xA6DB, + 33260 - 11904: 0xAFE5, + 33261 - 11904: 0xAFE4, + 33262 - 11904: 0xDB53, + 33263 - 11904: 0xFEC4, + 33266 - 11904: 0xEAF4, + 33267 - 11904: 0xA6DC, + 33268 - 11904: 0xAD50, + 33270 - 11904: 0x98C2, + 33271 - 11904: 0xDB54, + 33272 - 11904: 0xDB55, + 33273 - 11904: 0xDB56, + 33274 - 11904: 0xBB4F, + 33275 - 11904: 0xBFB2, + 33276 - 11904: 0xA6DD, + 33278 - 11904: 0xAAD8, + 33279 - 11904: 0xD068, + 33280 - 11904: 0xAFE6, + 33281 - 11904: 0xD370, + 33282 - 11904: 0xB2EA, + 33284 - 11904: 0xDB57, + 33285 - 11904: 0xB8A4, + 33287 - 11904: 0xBB50, + 33288 - 11904: 0xBFB3, + 33289 - 11904: 0xC17C, + 33290 - 11904: 0xC2C2, + 33291 - 11904: 0xF4B5, + 33292 - 11904: 0xA6DE, + 33293 - 11904: 0xAAD9, + 33296 - 11904: 0xAFE7, + 33297 - 11904: 0xD752, + 33298 - 11904: 0xB5CE, + 33300 - 11904: 0xBB51, + 33301 - 11904: 0xE3AB, + 33302 - 11904: 0xE745, + 33304 - 11904: 0x8EE8, + 33306 - 11904: 0xA0BA, + 33307 - 11904: 0xA6DF, + 33308 - 11904: 0xB5CF, + 33309 - 11904: 0xDFA3, + 33310 - 11904: 0xBB52, + 33311 - 11904: 0xA6E0, + 33312 - 11904: 0xCDB1, + 33313 - 11904: 0xD069, + 33314 - 11904: 0xAD51, + 33317 - 11904: 0xD372, + 33318 - 11904: 0xFD77, + 33320 - 11904: 0xAFEA, + 33321 - 11904: 0x8EEE, + 33322 - 11904: 0xAFE8, + 33323 - 11904: 0xAFE9, + 33324 - 11904: 0xAFEB, + 33325 - 11904: 0x9EBF, + 33327 - 11904: 0xD371, + 33330 - 11904: 0xD757, + 33331 - 11904: 0xD754, + 33332 - 11904: 0xD756, + 33333 - 11904: 0xB2EB, + 33334 - 11904: 0xB2ED, + 33335 - 11904: 0xB2EC, + 33336 - 11904: 0xD753, + 33337 - 11904: 0xB2EE, + 33338 - 11904: 0xD755, + 33340 - 11904: 0xDB58, + 33341 - 11904: 0xDB59, + 33342 - 11904: 0x89C2, + 33343 - 11904: 0xDB5A, + 33344 - 11904: 0xDFA6, + 33346 - 11904: 0xDFA7, + 33348 - 11904: 0xDFA5, + 33349 - 11904: 0xDFA8, + 33351 - 11904: 0xB8A5, + 33353 - 11904: 0xDFA4, + 33355 - 11904: 0xBB53, + 33358 - 11904: 0xE74A, + 33359 - 11904: 0xE746, + 33360 - 11904: 0xE749, + 33361 - 11904: 0xE74B, + 33362 - 11904: 0xE748, + 33363 - 11904: 0xE747, + 33364 - 11904: 0x99AC, + 33365 - 11904: 0xEAF5, + 33366 - 11904: 0xEAF6, + 33367 - 11904: 0xEAF7, + 33368 - 11904: 0xBFB4, + 33369 - 11904: 0xBFB5, + 33370 - 11904: 0xEDF1, + 33371 - 11904: 0xEDF0, + 33372 - 11904: 0xEDF2, + 33374 - 11904: 0xF0A3, + 33375 - 11904: 0xF0A2, + 33377 - 11904: 0xF2C4, + 33378 - 11904: 0x956B, + 33379 - 11904: 0xF2C5, + 33380 - 11904: 0xF2C3, + 33381 - 11904: 0x956C, + 33382 - 11904: 0xC4A5, + 33384 - 11904: 0xF4B6, + 33385 - 11904: 0xF4B7, + 33387 - 11904: 0xF746, + 33388 - 11904: 0xF7EF, + 33389 - 11904: 0xF8BB, + 33390 - 11904: 0xA6E1, + 33391 - 11904: 0xA87D, + 33393 - 11904: 0xC17D, + 33394 - 11904: 0xA6E2, + 33396 - 11904: 0xD758, + 33397 - 11904: 0xDB5B, + 33398 - 11904: 0x99AF, + 33399 - 11904: 0xC641, + 33400 - 11904: 0xCA4A, + 33401 - 11904: 0x994A, + 33402 - 11904: 0x8976, + 33403 - 11904: 0x8F48, + 33404 - 11904: 0xCA4B, + 33405 - 11904: 0xCA4D, + 33406 - 11904: 0xA6E3, + 33407 - 11904: 0xCA4E, + 33408 - 11904: 0xCA4C, + 33411 - 11904: 0xCBA2, + 33412 - 11904: 0xCBA3, + 33413 - 11904: 0xCB7B, + 33415 - 11904: 0xFBEE, + 33418 - 11904: 0xCBA1, + 33419 - 11904: 0xA8A1, + 33421 - 11904: 0xA8A2, + 33422 - 11904: 0xCB7C, + 33423 - 11904: 0xCB7A, + 33424 - 11904: 0xCB79, + 33425 - 11904: 0xCB7D, + 33426 - 11904: 0xA87E, + 33427 - 11904: 0xCB7E, + 33428 - 11904: 0xD06A, + 33432 - 11904: 0xCDB6, + 33433 - 11904: 0xAADC, + 33434 - 11904: 0xCDB5, + 33435 - 11904: 0xCDB7, + 33437 - 11904: 0xAADB, + 33438 - 11904: 0xCDBC, + 33439 - 11904: 0xAADF, + 33440 - 11904: 0xCDB2, + 33441 - 11904: 0xCDC0, + 33442 - 11904: 0xCDC6, + 33443 - 11904: 0xAAE6, + 33444 - 11904: 0xCDC3, + 33445 - 11904: 0xAAE3, + 33446 - 11904: 0x99AE, + 33447 - 11904: 0xCDB9, + 33448 - 11904: 0xCDBF, + 33449 - 11904: 0xCDC1, + 33450 - 11904: 0x8EFB, + 33451 - 11904: 0xCDB4, + 33452 - 11904: 0xAAE2, + 33453 - 11904: 0xAADD, + 33454 - 11904: 0xCDBA, + 33455 - 11904: 0xAAE4, + 33456 - 11904: 0xAAE7, + 33457 - 11904: 0xAAE1, + 33459 - 11904: 0xAADA, + 33460 - 11904: 0xCDBE, + 33461 - 11904: 0xCDB8, + 33462 - 11904: 0xCDC5, + 33463 - 11904: 0xAAE9, + 33464 - 11904: 0xAAE5, + 33465 - 11904: 0xAAE0, + 33466 - 11904: 0xCDBD, + 33467 - 11904: 0xAFEC, + 33468 - 11904: 0xCDBB, + 33469 - 11904: 0xAADE, + 33470 - 11904: 0xAAE8, + 33471 - 11904: 0x8CD0, + 33472 - 11904: 0xCDB3, + 33474 - 11904: 0xCDC2, + 33475 - 11904: 0xCDC4, + 33476 - 11904: 0x8B52, + 33482 - 11904: 0x99B0, + 33487 - 11904: 0x8977, + 33488 - 11904: 0x8F41, + 33489 - 11904: 0xAD62, + 33490 - 11904: 0xAD5C, + 33491 - 11904: 0xAD64, + 33492 - 11904: 0xAD61, + 33493 - 11904: 0xD071, + 33494 - 11904: 0xD074, + 33495 - 11904: 0xAD5D, + 33496 - 11904: 0x99B1, + 33497 - 11904: 0xD06B, + 33499 - 11904: 0xAD56, + 33500 - 11904: 0xAD60, + 33502 - 11904: 0xAD63, + 33503 - 11904: 0xAD65, + 33504 - 11904: 0xD0A2, + 33505 - 11904: 0xD077, + 33506 - 11904: 0x8F49, + 33507 - 11904: 0xAD55, + 33508 - 11904: 0xD0A1, + 33509 - 11904: 0xAD59, + 33510 - 11904: 0xAD57, + 33511 - 11904: 0xAD52, + 33512 - 11904: 0xD06F, + 33514 - 11904: 0xD07E, + 33515 - 11904: 0xD073, + 33516 - 11904: 0xD076, + 33517 - 11904: 0xD0A5, + 33518 - 11904: 0xFA4D, + 33519 - 11904: 0xAD66, + 33520 - 11904: 0xD07D, + 33521 - 11904: 0xAD5E, + 33522 - 11904: 0xD078, + 33523 - 11904: 0xD0A4, + 33524 - 11904: 0xD075, + 33525 - 11904: 0xD079, + 33526 - 11904: 0xD07C, + 33527 - 11904: 0x9DE4, + 33528 - 11904: 0x8CB5, + 33529 - 11904: 0xD06D, + 33530 - 11904: 0xD0A3, + 33531 - 11904: 0xD07B, + 33532 - 11904: 0xFBE9, + 33533 - 11904: 0x9B54, + 33534 - 11904: 0xD06C, + 33535 - 11904: 0x99B2, + 33536 - 11904: 0xD070, + 33537 - 11904: 0xAD5F, + 33538 - 11904: 0xAD5A, + 33539 - 11904: 0xAD53, + 33540 - 11904: 0xAD58, + 33541 - 11904: 0xAD54, + 33542 - 11904: 0xAD67, + 33543 - 11904: 0xD06E, + 33544 - 11904: 0xD3A5, + 33545 - 11904: 0xAD5B, + 33547 - 11904: 0x9E68, + 33548 - 11904: 0xD07A, + 33549 - 11904: 0xCE41, + 33558 - 11904: 0xD3A8, + 33559 - 11904: 0xAFFA, + 33560 - 11904: 0x8F4A, + 33561 - 11904: 0xD376, + 33562 - 11904: 0x8F42, + 33563 - 11904: 0xD3A3, + 33564 - 11904: 0xD37D, + 33565 - 11904: 0x8F51, + 33566 - 11904: 0xD3B2, + 33568 - 11904: 0xD3AA, + 33570 - 11904: 0xD37E, + 33572 - 11904: 0xD3A9, + 33573 - 11904: 0xD378, + 33574 - 11904: 0xD37C, + 33575 - 11904: 0xD3B5, + 33576 - 11904: 0xAFFD, + 33577 - 11904: 0xD3AD, + 33578 - 11904: 0xD3A4, + 33579 - 11904: 0xAFED, + 33580 - 11904: 0xD3B3, + 33581 - 11904: 0xD374, + 33583 - 11904: 0xD3AC, + 33585 - 11904: 0xAFFC, + 33586 - 11904: 0xAFF7, + 33587 - 11904: 0xD373, + 33588 - 11904: 0xAFF5, + 33589 - 11904: 0xAFF4, + 33590 - 11904: 0xAFF9, + 33591 - 11904: 0xD3AB, + 33592 - 11904: 0xAFF1, + 33593 - 11904: 0xAFF8, + 33594 - 11904: 0xD072, + 33595 - 11904: 0xDB5C, + 33596 - 11904: 0xD3A6, + 33597 - 11904: 0x9846, + 33599 - 11904: 0xD37A, + 33600 - 11904: 0xAFFB, + 33601 - 11904: 0xD37B, + 33602 - 11904: 0xD3A1, + 33603 - 11904: 0xAFFE, + 33604 - 11904: 0xD375, + 33605 - 11904: 0xD3AF, + 33607 - 11904: 0xD3AE, + 33608 - 11904: 0xD3B6, + 33609 - 11904: 0xAFF3, + 33610 - 11904: 0xAFF0, + 33611 - 11904: 0xD3B4, + 33612 - 11904: 0xD3B0, + 33613 - 11904: 0xD3A7, + 33614 - 11904: 0xD3A2, + 33615 - 11904: 0xAFF6, + 33616 - 11904: 0xAFF2, + 33617 - 11904: 0xD377, + 33618 - 11904: 0xAFEE, + 33619 - 11904: 0xD3B1, + 33620 - 11904: 0xAFEF, + 33622 - 11904: 0xD379, + 33623 - 11904: 0x99B4, + 33634 - 11904: 0x8EF5, + 33635 - 11904: 0xFD55, + 33638 - 11904: 0x9CCD, + 33647 - 11904: 0x8978, + 33651 - 11904: 0xD75E, + 33652 - 11904: 0xD760, + 33653 - 11904: 0xD765, + 33654 - 11904: 0xD779, + 33655 - 11904: 0xB2FC, + 33656 - 11904: 0xB2F2, + 33658 - 11904: 0xD75D, + 33659 - 11904: 0xB2FD, + 33660 - 11904: 0xB2FE, + 33661 - 11904: 0xD768, + 33662 - 11904: 0xD76F, + 33663 - 11904: 0xD775, + 33665 - 11904: 0xD762, + 33667 - 11904: 0xD769, + 33669 - 11904: 0x8F53, + 33670 - 11904: 0xB340, + 33671 - 11904: 0xD777, + 33672 - 11904: 0xD772, + 33673 - 11904: 0xB2FA, + 33674 - 11904: 0xB2F8, + 33675 - 11904: 0xD76E, + 33676 - 11904: 0xD76A, + 33677 - 11904: 0xD75C, + 33678 - 11904: 0xB2EF, + 33679 - 11904: 0xD761, + 33680 - 11904: 0xD759, + 33681 - 11904: 0x8F6F, + 33682 - 11904: 0xB2F7, + 33683 - 11904: 0xB2F9, + 33684 - 11904: 0xD766, + 33685 - 11904: 0xD763, + 33686 - 11904: 0xB2F4, + 33687 - 11904: 0xD773, + 33688 - 11904: 0xB2F1, + 33689 - 11904: 0xD764, + 33690 - 11904: 0xD77A, + 33691 - 11904: 0xD76C, + 33692 - 11904: 0x8E63, + 33693 - 11904: 0xD76B, + 33694 - 11904: 0xB2F0, + 33696 - 11904: 0xB2FB, + 33698 - 11904: 0xB2F3, + 33699 - 11904: 0xD75A, + 33700 - 11904: 0xD75F, + 33701 - 11904: 0xD770, + 33702 - 11904: 0xD776, + 33703 - 11904: 0xB341, + 33704 - 11904: 0xD75B, + 33705 - 11904: 0xD767, + 33706 - 11904: 0xD76D, + 33707 - 11904: 0xB2F6, + 33708 - 11904: 0x8F56, + 33710 - 11904: 0xD778, + 33711 - 11904: 0xD771, + 33712 - 11904: 0xD774, + 33721 - 11904: 0xFE76, + 33725 - 11904: 0xB2F5, + 33726 - 11904: 0x9FC6, + 33727 - 11904: 0xDB6C, + 33728 - 11904: 0xDB60, + 33729 - 11904: 0xB5D7, + 33730 - 11904: 0xDB7D, + 33731 - 11904: 0xDBA7, + 33732 - 11904: 0xDBAA, + 33733 - 11904: 0xB5D5, + 33734 - 11904: 0xDB68, + 33735 - 11904: 0xDBA3, + 33736 - 11904: 0xDB69, + 33737 - 11904: 0xDB77, + 33738 - 11904: 0xB5E2, + 33739 - 11904: 0xDB73, + 33740 - 11904: 0xB5DF, + 33741 - 11904: 0xFAAC, + 33742 - 11904: 0xDB74, + 33743 - 11904: 0xDB5D, + 33745 - 11904: 0xDBA4, + 33747 - 11904: 0x8F58, + 33748 - 11904: 0xB5E8, + 33749 - 11904: 0xDBA1, + 33750 - 11904: 0xDB75, + 33751 - 11904: 0xDBAC, + 33752 - 11904: 0xDB70, + 33753 - 11904: 0xDFC8, + 33755 - 11904: 0xDBAF, + 33756 - 11904: 0xB5E6, + 33757 - 11904: 0xDB6E, + 33758 - 11904: 0xDB7A, + 33759 - 11904: 0xB5E9, + 33760 - 11904: 0xB5D4, + 33761 - 11904: 0xDB72, + 33762 - 11904: 0xDBAD, + 33763 - 11904: 0xDB6B, + 33764 - 11904: 0xDB64, + 33765 - 11904: 0xDB6F, + 33767 - 11904: 0xDB63, + 33768 - 11904: 0xDB61, + 33769 - 11904: 0xB5D0, + 33770 - 11904: 0xDBA5, + 33771 - 11904: 0xDB6A, + 33772 - 11904: 0xDBA8, + 33773 - 11904: 0x9848, + 33774 - 11904: 0xDBA9, + 33775 - 11904: 0xB5D8, + 33776 - 11904: 0xB5DD, + 33777 - 11904: 0xB5D9, + 33778 - 11904: 0xB5E1, + 33779 - 11904: 0xDB7E, + 33780 - 11904: 0xB5DA, + 33781 - 11904: 0xDB76, + 33782 - 11904: 0xDB66, + 33784 - 11904: 0xB5D2, + 33785 - 11904: 0xDB5E, + 33786 - 11904: 0xDBA2, + 33787 - 11904: 0xDBAB, + 33788 - 11904: 0xDB65, + 33789 - 11904: 0xB5E0, + 33790 - 11904: 0xDBB0, + 33791 - 11904: 0xDB71, + 33793 - 11904: 0xDB6D, + 33795 - 11904: 0xB5D1, + 33796 - 11904: 0xB5E5, + 33797 - 11904: 0x99B7, + 33798 - 11904: 0xDB7C, + 33799 - 11904: 0xB5E7, + 33801 - 11904: 0xDB78, + 33802 - 11904: 0xB5DC, + 33803 - 11904: 0xB5D6, + 33804 - 11904: 0xB5DE, + 33805 - 11904: 0xB5D3, + 33806 - 11904: 0xB5E4, + 33807 - 11904: 0xDB79, + 33808 - 11904: 0xDB67, + 33809 - 11904: 0xDB7B, + 33810 - 11904: 0xDB62, + 33811 - 11904: 0xDBA6, + 33812 - 11904: 0x9665, + 33814 - 11904: 0xFA6C, + 33816 - 11904: 0x9DE7, + 33819 - 11904: 0xDBAE, + 33820 - 11904: 0x9E62, + 33824 - 11904: 0x96CC, + 33825 - 11904: 0x8E67, + 33827 - 11904: 0xDB5F, + 33828 - 11904: 0xFC75, + 33830 - 11904: 0x987E, + 33833 - 11904: 0xDFC7, + 33835 - 11904: 0xDFDD, + 33836 - 11904: 0xB855, + 33837 - 11904: 0xDFCC, + 33838 - 11904: 0xFDB9, + 33839 - 11904: 0xDFCA, + 33840 - 11904: 0xDFB5, + 33841 - 11904: 0xB8A9, + 33842 - 11904: 0xDFC5, + 33843 - 11904: 0xDFD9, + 33844 - 11904: 0xDFC1, + 33845 - 11904: 0xB8B1, + 33846 - 11904: 0xDFD8, + 33847 - 11904: 0xDFBF, + 33848 - 11904: 0xB5E3, + 33849 - 11904: 0xDFCF, + 33850 - 11904: 0xDFC0, + 33851 - 11904: 0xDFD6, + 33852 - 11904: 0xB8B0, + 33853 - 11904: 0xB8A8, + 33854 - 11904: 0x97FC, + 33855 - 11904: 0xDFAA, + 33856 - 11904: 0xDFB2, + 33858 - 11904: 0xDFCB, + 33859 - 11904: 0xDFC3, + 33860 - 11904: 0xDFDC, + 33861 - 11904: 0xDFC6, + 33862 - 11904: 0xB8B6, + 33863 - 11904: 0xDFD7, + 33864 - 11904: 0x98F9, + 33865 - 11904: 0xB8AD, + 33866 - 11904: 0x8F66, + 33867 - 11904: 0xDFC9, + 33868 - 11904: 0xDFD1, + 33869 - 11904: 0xDFB6, + 33870 - 11904: 0xDFD0, + 33872 - 11904: 0xDFE1, + 33873 - 11904: 0xDFB1, + 33874 - 11904: 0xDFD2, + 33875 - 11904: 0x956E, + 33876 - 11904: 0xDFDF, + 33877 - 11904: 0x9245, + 33878 - 11904: 0xDFAB, + 33879 - 11904: 0xB5DB, + 33880 - 11904: 0x8F60, + 33881 - 11904: 0xDFB9, + 33882 - 11904: 0xDFB8, + 33883 - 11904: 0xB8AF, + 33884 - 11904: 0x9ED1, + 33885 - 11904: 0xDFBC, + 33886 - 11904: 0xDFBE, + 33887 - 11904: 0xDFCD, + 33888 - 11904: 0xDFDE, + 33889 - 11904: 0xB8B2, + 33890 - 11904: 0xFECD, + 33891 - 11904: 0xB8B3, + 33892 - 11904: 0x99B9, + 33893 - 11904: 0xDFB0, + 33894 - 11904: 0xB8AB, + 33895 - 11904: 0xDFB4, + 33896 - 11904: 0xDFDA, + 33897 - 11904: 0xB8B4, + 33899 - 11904: 0xB8AC, + 33900 - 11904: 0xB8AE, + 33901 - 11904: 0xB8B5, + 33902 - 11904: 0xDFE0, + 33903 - 11904: 0xDFD3, + 33904 - 11904: 0xDFCE, + 33905 - 11904: 0x8F62, + 33906 - 11904: 0x974C, + 33907 - 11904: 0xDFBB, + 33908 - 11904: 0xDFBA, + 33909 - 11904: 0xB8AA, + 33910 - 11904: 0xDFAC, + 33911 - 11904: 0xB8A7, + 33912 - 11904: 0xDFC4, + 33913 - 11904: 0xDFAD, + 33914 - 11904: 0xDFC2, + 33917 - 11904: 0xDFB7, + 33918 - 11904: 0xDFDB, + 33919 - 11904: 0x91C7, + 33920 - 11904: 0x955F, + 33922 - 11904: 0xB8A6, + 33924 - 11904: 0x87AB, + 33926 - 11904: 0xDFB3, + 33928 - 11904: 0x99BB, + 33933 - 11904: 0xDFAF, + 33934 - 11904: 0xDFD5, + 33935 - 11904: 0xDFAE, + 33936 - 11904: 0xBB60, + 33937 - 11904: 0xE3D3, + 33938 - 11904: 0x8E6D, + 33939 - 11904: 0x8F71, + 33940 - 11904: 0xE3C2, + 33942 - 11904: 0x94CB, + 33943 - 11904: 0xE3AC, + 33944 - 11904: 0xE3CA, + 33945 - 11904: 0xBB58, + 33946 - 11904: 0xE3BB, + 33947 - 11904: 0xE3C5, + 33948 - 11904: 0xBB5B, + 33949 - 11904: 0xE3BE, + 33950 - 11904: 0xBB59, + 33951 - 11904: 0xE3AF, + 33952 - 11904: 0xE3CD, + 33953 - 11904: 0xE3AE, + 33954 - 11904: 0xE3C1, + 33955 - 11904: 0x95B1, + 33956 - 11904: 0xE3AD, + 33959 - 11904: 0xE3BF, + 33960 - 11904: 0xE3C8, + 33961 - 11904: 0xE3C6, + 33962 - 11904: 0xE3BA, + 33963 - 11904: 0xE3B5, + 33964 - 11904: 0xE3B3, + 33965 - 11904: 0x9AF2, + 33966 - 11904: 0xE3B4, + 33967 - 11904: 0xE3C7, + 33968 - 11904: 0xE3D2, + 33969 - 11904: 0xE3BC, + 33970 - 11904: 0xBB5A, + 33972 - 11904: 0xE3B7, + 33974 - 11904: 0xE3CB, + 33976 - 11904: 0xBB5D, + 33977 - 11904: 0xE3B6, + 33978 - 11904: 0xE3B0, + 33979 - 11904: 0xE3C0, + 33980 - 11904: 0xBB61, + 33981 - 11904: 0x96C3, + 33982 - 11904: 0x99BD, + 33983 - 11904: 0xBB55, + 33984 - 11904: 0xBB5E, + 33985 - 11904: 0xE3B8, + 33986 - 11904: 0xE3B2, + 33988 - 11904: 0xBB57, + 33989 - 11904: 0xDFD4, + 33990 - 11904: 0xBB56, + 33991 - 11904: 0xE3C3, + 33993 - 11904: 0xBB54, + 33994 - 11904: 0xBB63, + 33995 - 11904: 0xBB5C, + 33996 - 11904: 0xE3C4, + 33997 - 11904: 0xE3B9, + 33998 - 11904: 0xE3B1, + 33999 - 11904: 0xE3CC, + 34000 - 11904: 0xE3BD, + 34001 - 11904: 0xBB62, + 34002 - 11904: 0xE3D0, + 34003 - 11904: 0xBB5F, + 34004 - 11904: 0xE3CF, + 34006 - 11904: 0xE3C9, + 34007 - 11904: 0xE3CE, + 34010 - 11904: 0xA0CF, + 34011 - 11904: 0xE3D1, + 34014 - 11904: 0x8F6D, + 34017 - 11904: 0x99BE, + 34018 - 11904: 0x8EF4, + 34020 - 11904: 0x8F72, + 34021 - 11904: 0x95E4, + 34023 - 11904: 0xE773, + 34024 - 11904: 0xE774, + 34025 - 11904: 0xE767, + 34026 - 11904: 0xE766, + 34027 - 11904: 0xE762, + 34028 - 11904: 0xBDB4, + 34030 - 11904: 0xBDAC, + 34031 - 11904: 0xE776, + 34032 - 11904: 0xE775, + 34033 - 11904: 0xDFA9, + 34034 - 11904: 0xE75F, + 34035 - 11904: 0xE763, + 34036 - 11904: 0xE75D, + 34038 - 11904: 0xE770, + 34039 - 11904: 0xE761, + 34040 - 11904: 0x99BF, + 34041 - 11904: 0xE777, + 34042 - 11904: 0xE75A, + 34043 - 11904: 0xE758, + 34044 - 11904: 0xE764, + 34045 - 11904: 0xE76E, + 34046 - 11904: 0xE769, + 34047 - 11904: 0xBDB6, + 34048 - 11904: 0xE74F, + 34050 - 11904: 0xE76D, + 34051 - 11904: 0x9244, + 34052 - 11904: 0x87D7, + 34053 - 11904: 0xFBA5, + 34054 - 11904: 0xBDB7, + 34055 - 11904: 0xDFBD, + 34056 - 11904: 0xE75B, + 34057 - 11904: 0xE752, + 34058 - 11904: 0xE755, + 34059 - 11904: 0xE77B, + 34060 - 11904: 0xE75C, + 34061 - 11904: 0xE753, + 34062 - 11904: 0xE751, + 34063 - 11904: 0xE74E, + 34064 - 11904: 0x99C0, + 34065 - 11904: 0xBDB0, + 34066 - 11904: 0xE765, + 34067 - 11904: 0xBDAF, + 34068 - 11904: 0xBDB3, + 34069 - 11904: 0xE760, + 34070 - 11904: 0xE768, + 34071 - 11904: 0xBDA9, + 34072 - 11904: 0xE778, + 34073 - 11904: 0xE77C, + 34074 - 11904: 0xBDAB, + 34076 - 11904: 0xE757, + 34077 - 11904: 0xE76B, + 34078 - 11904: 0xE76F, + 34079 - 11904: 0xE754, + 34080 - 11904: 0xE779, + 34081 - 11904: 0xBDB2, + 34083 - 11904: 0xBDB1, + 34084 - 11904: 0xE74C, + 34085 - 11904: 0xBDB5, + 34086 - 11904: 0xE772, + 34087 - 11904: 0xE756, + 34088 - 11904: 0xE76A, + 34089 - 11904: 0xE750, + 34090 - 11904: 0xE75E, + 34091 - 11904: 0xE759, + 34092 - 11904: 0xBDAD, + 34093 - 11904: 0xBDAE, + 34094 - 11904: 0xE76C, + 34095 - 11904: 0xE77D, + 34096 - 11904: 0xE77A, + 34097 - 11904: 0xE771, + 34099 - 11904: 0xFDB4, + 34100 - 11904: 0x8F77, + 34104 - 11904: 0x99C1, + 34107 - 11904: 0xE74D, + 34109 - 11904: 0xBDAA, + 34110 - 11904: 0xEB49, + 34112 - 11904: 0xEB40, + 34113 - 11904: 0xEB43, + 34114 - 11904: 0xFAB9, + 34115 - 11904: 0xBFBB, + 34116 - 11904: 0xEB45, + 34117 - 11904: 0xEAF9, + 34118 - 11904: 0xEB41, + 34119 - 11904: 0xEB47, + 34120 - 11904: 0xBFB8, + 34121 - 11904: 0xBFBC, + 34122 - 11904: 0xBFB6, + 34123 - 11904: 0x8F40, + 34124 - 11904: 0xFA44, + 34125 - 11904: 0xEAFB, + 34126 - 11904: 0xEB4C, + 34129 - 11904: 0xEB46, + 34130 - 11904: 0x99C2, + 34131 - 11904: 0xEAFC, + 34132 - 11904: 0xEB55, + 34133 - 11904: 0xEB4F, + 34134 - 11904: 0xEAF8, + 34135 - 11904: 0xEE46, + 34136 - 11904: 0xEAFE, + 34137 - 11904: 0xBFB7, + 34138 - 11904: 0x8F5C, + 34139 - 11904: 0xEB4A, + 34141 - 11904: 0xEB54, + 34142 - 11904: 0xBFBF, + 34143 - 11904: 0x8CBD, + 34144 - 11904: 0xEB51, + 34145 - 11904: 0xEAFD, + 34146 - 11904: 0xEB44, + 34147 - 11904: 0xEB48, + 34148 - 11904: 0xEB42, + 34149 - 11904: 0xEB56, + 34150 - 11904: 0xEB53, + 34151 - 11904: 0xEB50, + 34152 - 11904: 0xBFB9, + 34153 - 11904: 0xBFBA, + 34154 - 11904: 0xBFBE, + 34155 - 11904: 0xEAFA, + 34156 - 11904: 0xEB57, + 34157 - 11904: 0xBFBD, + 34158 - 11904: 0xEB4D, + 34159 - 11904: 0x99C4, + 34160 - 11904: 0x99C5, + 34161 - 11904: 0xEB4B, + 34163 - 11904: 0x8F7B, + 34165 - 11904: 0xEB4E, + 34166 - 11904: 0xEE53, + 34167 - 11904: 0xEE40, + 34168 - 11904: 0xEE45, + 34169 - 11904: 0xEE52, + 34170 - 11904: 0xEE44, + 34171 - 11904: 0xEDFB, + 34172 - 11904: 0xEE41, + 34174 - 11904: 0xC1A2, + 34176 - 11904: 0xEDF4, + 34177 - 11904: 0xEE4D, + 34178 - 11904: 0xEE4F, + 34179 - 11904: 0xEDF3, + 34180 - 11904: 0xC1A1, + 34181 - 11904: 0xEE51, + 34182 - 11904: 0xEE49, + 34183 - 11904: 0xC1A8, + 34184 - 11904: 0xEE50, + 34185 - 11904: 0xEE42, + 34186 - 11904: 0xC1AA, + 34187 - 11904: 0xEDF9, + 34188 - 11904: 0xEB52, + 34189 - 11904: 0xEE4A, + 34190 - 11904: 0xEE47, + 34191 - 11904: 0xEDF5, + 34192 - 11904: 0xEE55, + 34193 - 11904: 0xC1A4, + 34195 - 11904: 0x8776, + 34196 - 11904: 0xC1A5, + 34197 - 11904: 0xEDF7, + 34198 - 11904: 0xEE48, + 34199 - 11904: 0x8CB6, + 34200 - 11904: 0xEE54, + 34201 - 11904: 0xEE4B, + 34202 - 11904: 0xEDFD, + 34203 - 11904: 0xC1A7, + 34204 - 11904: 0xC1A3, + 34205 - 11904: 0xEE4C, + 34206 - 11904: 0xEDFE, + 34207 - 11904: 0xEE56, + 34208 - 11904: 0xEDF8, + 34209 - 11904: 0xEE43, + 34210 - 11904: 0xEE4E, + 34211 - 11904: 0xEDFA, + 34212 - 11904: 0xEDFC, + 34214 - 11904: 0xC2CB, + 34215 - 11904: 0xEDF6, + 34216 - 11904: 0xC1A9, + 34217 - 11904: 0xC2C4, + 34218 - 11904: 0xC17E, + 34223 - 11904: 0xC1A6, + 34224 - 11904: 0xC2C8, + 34225 - 11904: 0xF0B3, + 34227 - 11904: 0xF0A9, + 34228 - 11904: 0xF0A4, + 34229 - 11904: 0xF0AA, + 34230 - 11904: 0xF0B4, + 34231 - 11904: 0xF0B8, + 34232 - 11904: 0xF0B7, + 34233 - 11904: 0xC2CA, + 34234 - 11904: 0xC2C9, + 34237 - 11904: 0xF0AB, + 34238 - 11904: 0xF0B9, + 34239 - 11904: 0xF0AE, + 34240 - 11904: 0xF0A6, + 34241 - 11904: 0x8FA3, + 34242 - 11904: 0xF0A8, + 34243 - 11904: 0xF0A7, + 34244 - 11904: 0xF0AD, + 34245 - 11904: 0xF0B2, + 34246 - 11904: 0xF0A5, + 34247 - 11904: 0xF0AC, + 34248 - 11904: 0xF0B1, + 34249 - 11904: 0xC2C7, + 34251 - 11904: 0xF0AF, + 34253 - 11904: 0xC2C5, + 34254 - 11904: 0xF0B0, + 34255 - 11904: 0xC2C3, + 34256 - 11904: 0xC2C6, + 34257 - 11904: 0xF2D5, + 34258 - 11904: 0xF0B5, + 34261 - 11904: 0xC3C2, + 34262 - 11904: 0x8CCE, + 34263 - 11904: 0xF2CD, + 34264 - 11904: 0xF2D1, + 34265 - 11904: 0xF2C9, + 34266 - 11904: 0xF2CC, + 34268 - 11904: 0xF2D4, + 34269 - 11904: 0xC3C0, + 34270 - 11904: 0xF2D9, + 34271 - 11904: 0xF2D2, + 34272 - 11904: 0x99C6, + 34273 - 11904: 0xF2CA, + 34274 - 11904: 0xF2DA, + 34275 - 11904: 0xF2D3, + 34276 - 11904: 0xC3C3, + 34277 - 11904: 0xC3C4, + 34278 - 11904: 0xF2D7, + 34280 - 11904: 0xF2CB, + 34281 - 11904: 0xC3BF, + 34282 - 11904: 0xC3C1, + 34283 - 11904: 0xF2C6, + 34284 - 11904: 0xF2CE, + 34285 - 11904: 0xF2C8, + 34286 - 11904: 0x96CD, + 34287 - 11904: 0xF2D8, + 34288 - 11904: 0xF2D6, + 34289 - 11904: 0xF2C7, + 34290 - 11904: 0xF2CF, + 34294 - 11904: 0xF4BE, + 34295 - 11904: 0xC3C5, + 34296 - 11904: 0xF2D0, + 34297 - 11904: 0xC4A7, + 34298 - 11904: 0xC4A9, + 34299 - 11904: 0xC4A6, + 34300 - 11904: 0x96C7, + 34301 - 11904: 0xF4C3, + 34302 - 11904: 0xF4BB, + 34303 - 11904: 0xF4B9, + 34304 - 11904: 0xF4BD, + 34305 - 11904: 0xF4BA, + 34306 - 11904: 0x8FA5, + 34308 - 11904: 0xF4BF, + 34309 - 11904: 0xF4C1, + 34310 - 11904: 0xC4AA, + 34311 - 11904: 0xC4AC, + 34313 - 11904: 0xF4C0, + 34314 - 11904: 0xC4AD, + 34315 - 11904: 0xC4AB, + 34316 - 11904: 0xF4C2, + 34317 - 11904: 0xFABB, + 34319 - 11904: 0x8C61, + 34320 - 11904: 0x9570, + 34321 - 11904: 0xC4A8, + 34323 - 11904: 0x87AF, + 34324 - 11904: 0x9368, + 34326 - 11904: 0x8F7E, + 34327 - 11904: 0xC4F4, + 34328 - 11904: 0xF5F1, + 34329 - 11904: 0xF5F7, + 34330 - 11904: 0xC4F6, + 34331 - 11904: 0xF4BC, + 34332 - 11904: 0xF5F6, + 34334 - 11904: 0xF5FD, + 34335 - 11904: 0xF5F4, + 34336 - 11904: 0xF5FB, + 34337 - 11904: 0xF5FA, + 34338 - 11904: 0xF4B8, + 34339 - 11904: 0xF5F5, + 34340 - 11904: 0xF0B6, + 34341 - 11904: 0xF5FE, + 34342 - 11904: 0xF5F3, + 34343 - 11904: 0xF5F8, + 34344 - 11904: 0x8FAA, + 34345 - 11904: 0xF5FC, + 34346 - 11904: 0xF5F2, + 34348 - 11904: 0xF74A, + 34349 - 11904: 0xC4F5, + 34350 - 11904: 0xF5F9, + 34351 - 11904: 0xA050, + 34353 - 11904: 0xF7F4, + 34354 - 11904: 0xF74B, + 34355 - 11904: 0xF749, + 34356 - 11904: 0xF747, + 34357 - 11904: 0xF748, + 34358 - 11904: 0xF74C, + 34360 - 11904: 0xC5D9, + 34361 - 11904: 0xF7F2, + 34362 - 11904: 0xF7F0, + 34363 - 11904: 0xF7F5, + 34364 - 11904: 0xF7F3, + 34366 - 11904: 0xF7F6, + 34367 - 11904: 0xC5DA, + 34368 - 11904: 0xF7F1, + 34370 - 11904: 0x90D3, + 34371 - 11904: 0xF8BC, + 34373 - 11904: 0x9556, + 34374 - 11904: 0xF945, + 34375 - 11904: 0xF946, + 34376 - 11904: 0xF947, + 34379 - 11904: 0xF9C7, + 34380 - 11904: 0xF9BD, + 34381 - 11904: 0xCA4F, + 34382 - 11904: 0xAAEA, + 34384 - 11904: 0xAD68, + 34386 - 11904: 0xD3B8, + 34387 - 11904: 0xD3B7, + 34388 - 11904: 0xB040, + 34389 - 11904: 0xB342, + 34390 - 11904: 0xD77C, + 34393 - 11904: 0xD77B, + 34395 - 11904: 0xB5EA, + 34396 - 11904: 0xB8B8, + 34398 - 11904: 0xB8B7, + 34399 - 11904: 0xB8B9, + 34401 - 11904: 0xE3D4, + 34402 - 11904: 0xE77E, + 34403 - 11904: 0xEB58, + 34404 - 11904: 0xEB5A, + 34405 - 11904: 0xEB59, + 34407 - 11904: 0xC1AB, + 34408 - 11904: 0xEE57, + 34409 - 11904: 0xF0BA, + 34410 - 11904: 0xF9A5, + 34411 - 11904: 0xA6E4, + 34412 - 11904: 0x8FB8, + 34413 - 11904: 0xCDC9, + 34414 - 11904: 0xCDCA, + 34415 - 11904: 0xCDC8, + 34416 - 11904: 0xCDC7, + 34417 - 11904: 0xAAEB, + 34418 - 11904: 0x99C8, + 34419 - 11904: 0xD0A9, + 34420 - 11904: 0xD0A7, + 34423 - 11904: 0xD0A6, + 34425 - 11904: 0xAD69, + 34426 - 11904: 0xAD6B, + 34427 - 11904: 0xAD6A, + 34428 - 11904: 0xD0A8, + 34430 - 11904: 0x8FAF, + 34437 - 11904: 0xD3C4, + 34438 - 11904: 0xD3C1, + 34439 - 11904: 0xD3BF, + 34442 - 11904: 0xB041, + 34443 - 11904: 0xD3C2, + 34444 - 11904: 0xB046, + 34445 - 11904: 0xD3BC, + 34446 - 11904: 0xD3CB, + 34448 - 11904: 0xD3CD, + 34449 - 11904: 0xD3BD, + 34450 - 11904: 0x99C9, + 34451 - 11904: 0xB043, + 34452 - 11904: 0xD3CE, + 34453 - 11904: 0xD3C9, + 34454 - 11904: 0xD3BB, + 34455 - 11904: 0xD3C0, + 34456 - 11904: 0xD3CA, + 34457 - 11904: 0xD3C6, + 34458 - 11904: 0xD3C3, + 34460 - 11904: 0xB048, + 34461 - 11904: 0xD3CC, + 34462 - 11904: 0xD3BE, + 34464 - 11904: 0x9579, + 34465 - 11904: 0xD3C7, + 34466 - 11904: 0xD3B9, + 34467 - 11904: 0xB047, + 34468 - 11904: 0xB044, + 34469 - 11904: 0xD3C5, + 34471 - 11904: 0xD3C8, + 34472 - 11904: 0xD3BA, + 34473 - 11904: 0xB045, + 34474 - 11904: 0xB042, + 34477 - 11904: 0x9F49, + 34479 - 11904: 0xB34C, + 34480 - 11904: 0xD7A5, + 34481 - 11904: 0xB34B, + 34482 - 11904: 0x99CA, + 34483 - 11904: 0xD7A8, + 34484 - 11904: 0xD7AB, + 34485 - 11904: 0xB348, + 34486 - 11904: 0xB346, + 34487 - 11904: 0xD77E, + 34488 - 11904: 0xD7A9, + 34489 - 11904: 0xD7A7, + 34490 - 11904: 0xD7A4, + 34491 - 11904: 0xD7AC, + 34492 - 11904: 0xD7AD, + 34493 - 11904: 0xD7AF, + 34494 - 11904: 0xD7B0, + 34495 - 11904: 0xD77D, + 34496 - 11904: 0xB345, + 34497 - 11904: 0xD7A2, + 34498 - 11904: 0xD7A1, + 34499 - 11904: 0xD7AE, + 34500 - 11904: 0xB347, + 34501 - 11904: 0xD7A3, + 34502 - 11904: 0xB349, + 34503 - 11904: 0xB344, + 34504 - 11904: 0xD7A6, + 34505 - 11904: 0xB34D, + 34507 - 11904: 0xB34A, + 34508 - 11904: 0xD7AA, + 34512 - 11904: 0xB5F1, + 34513 - 11904: 0xDBBF, + 34515 - 11904: 0xDBB4, + 34516 - 11904: 0xB5EE, + 34518 - 11904: 0xDFE7, + 34519 - 11904: 0xDBBD, + 34520 - 11904: 0xDBB1, + 34521 - 11904: 0xB5EC, + 34522 - 11904: 0xDBB6, + 34523 - 11904: 0xB5EF, + 34524 - 11904: 0xDBBA, + 34525 - 11904: 0xDBB8, + 34526 - 11904: 0xB5F2, + 34527 - 11904: 0xB5EB, + 34530 - 11904: 0xDBB2, + 34531 - 11904: 0xDBB5, + 34532 - 11904: 0xB5F0, + 34534 - 11904: 0xDBB3, + 34536 - 11904: 0xDBBE, + 34537 - 11904: 0xDBBC, + 34538 - 11904: 0xDBB7, + 34539 - 11904: 0xDBB9, + 34540 - 11904: 0xDBBB, + 34541 - 11904: 0xB5ED, + 34543 - 11904: 0x99CB, + 34549 - 11904: 0xDFE8, + 34550 - 11904: 0xDFEE, + 34551 - 11904: 0xDFE4, + 34552 - 11904: 0xDFEA, + 34553 - 11904: 0xB8BA, + 34554 - 11904: 0xDFE6, + 34555 - 11904: 0xB8C0, + 34558 - 11904: 0xB8BF, + 34560 - 11904: 0xB8BE, + 34561 - 11904: 0xDFED, + 34562 - 11904: 0xB8C1, + 34563 - 11904: 0xB8C2, + 34564 - 11904: 0xDFE3, + 34565 - 11904: 0xDFF0, + 34566 - 11904: 0xB8C3, + 34567 - 11904: 0xB8BD, + 34568 - 11904: 0xB8BC, + 34569 - 11904: 0xDFEC, + 34570 - 11904: 0xB8C4, + 34571 - 11904: 0xDFE2, + 34572 - 11904: 0xDFE5, + 34573 - 11904: 0xDFEF, + 34574 - 11904: 0xDFEB, + 34577 - 11904: 0xE3F4, + 34578 - 11904: 0xE3E9, + 34579 - 11904: 0xB8BB, + 34584 - 11904: 0xBB6A, + 34585 - 11904: 0xE3DD, + 34586 - 11904: 0xE3F2, + 34587 - 11904: 0xE3DE, + 34588 - 11904: 0xBB65, + 34590 - 11904: 0xE3DB, + 34592 - 11904: 0xE3E4, + 34593 - 11904: 0xE3DC, + 34594 - 11904: 0xBB67, + 34595 - 11904: 0xE3D6, + 34596 - 11904: 0xE3F1, + 34597 - 11904: 0xBB68, + 34598 - 11904: 0xE3EE, + 34599 - 11904: 0xE3EF, + 34600 - 11904: 0xE3D7, + 34601 - 11904: 0xBB6D, + 34602 - 11904: 0xE3E6, + 34604 - 11904: 0xE3E0, + 34605 - 11904: 0xE3E7, + 34606 - 11904: 0xE3DA, + 34608 - 11904: 0xE3F3, + 34609 - 11904: 0xE3EB, + 34610 - 11904: 0xE3E5, + 34611 - 11904: 0xE3D5, + 34612 - 11904: 0xBB69, + 34613 - 11904: 0xE3EC, + 34615 - 11904: 0xBB6C, + 34616 - 11904: 0xE3F0, + 34618 - 11904: 0xE3EA, + 34619 - 11904: 0xBB66, + 34620 - 11904: 0xE3E8, + 34622 - 11904: 0xE3E2, + 34623 - 11904: 0xBB64, + 34624 - 11904: 0xE3D9, + 34625 - 11904: 0xE3E1, + 34626 - 11904: 0xE3ED, + 34627 - 11904: 0xE3DF, + 34630 - 11904: 0xE3E3, + 34636 - 11904: 0xBDC1, + 34637 - 11904: 0xDFE9, + 34638 - 11904: 0xE7B2, + 34639 - 11904: 0xE7BB, + 34640 - 11904: 0xE7B1, + 34641 - 11904: 0xE7AD, + 34642 - 11904: 0xE7AA, + 34643 - 11904: 0xBDC2, + 34644 - 11904: 0xE7A8, + 34645 - 11904: 0xBB6B, + 34646 - 11904: 0xE7A1, + 34647 - 11904: 0xBDC0, + 34648 - 11904: 0xE7A7, + 34649 - 11904: 0xBDBF, + 34650 - 11904: 0xE7AC, + 34651 - 11904: 0xE7A9, + 34652 - 11904: 0xE7B9, + 34653 - 11904: 0xE7B4, + 34654 - 11904: 0xE7AE, + 34655 - 11904: 0xE7B3, + 34656 - 11904: 0xBDBB, + 34657 - 11904: 0xE7AB, + 34658 - 11904: 0xE7BE, + 34659 - 11904: 0xE7A2, + 34660 - 11904: 0xE7A3, + 34661 - 11904: 0xE7BA, + 34662 - 11904: 0xBDBC, + 34663 - 11904: 0xE7BF, + 34664 - 11904: 0xBDBE, + 34665 - 11904: 0xE7C0, + 34666 - 11904: 0xE7B0, + 34667 - 11904: 0xE3D8, + 34668 - 11904: 0xE7B6, + 34669 - 11904: 0xE7AF, + 34670 - 11904: 0xE7B8, + 34671 - 11904: 0xE7B5, + 34672 - 11904: 0x9DD5, + 34673 - 11904: 0x8FB0, + 34675 - 11904: 0xE7A6, + 34676 - 11904: 0xBDB9, + 34677 - 11904: 0xE7BD, + 34678 - 11904: 0xBDBA, + 34679 - 11904: 0xE7A4, + 34680 - 11904: 0xBDBD, + 34681 - 11904: 0xEB64, + 34682 - 11904: 0xE7B7, + 34683 - 11904: 0xE7BC, + 34685 - 11904: 0xFA7A, + 34689 - 11904: 0xEB61, + 34690 - 11904: 0xBDB8, + 34691 - 11904: 0xBFC0, + 34692 - 11904: 0xEB6B, + 34693 - 11904: 0xEB67, + 34694 - 11904: 0x9E5F, + 34695 - 11904: 0xEB65, + 34696 - 11904: 0xEB60, + 34697 - 11904: 0xEB6F, + 34699 - 11904: 0x99CD, + 34700 - 11904: 0xA0C9, + 34701 - 11904: 0xBFC4, + 34703 - 11904: 0xEB5C, + 34704 - 11904: 0xEB68, + 34705 - 11904: 0xEB69, + 34706 - 11904: 0xEB5F, + 34707 - 11904: 0xEB5E, + 34708 - 11904: 0xEB6C, + 34710 - 11904: 0xEB62, + 34711 - 11904: 0xEB5D, + 34712 - 11904: 0xEB63, + 34714 - 11904: 0xEB6E, + 34715 - 11904: 0xEB5B, + 34716 - 11904: 0xEB6D, + 34717 - 11904: 0xEB6A, + 34718 - 11904: 0xBFC2, + 34719 - 11904: 0xBFC1, + 34722 - 11904: 0xBFC3, + 34723 - 11904: 0xEB66, + 34724 - 11904: 0xF0CB, + 34725 - 11904: 0x9ADB, + 34729 - 11904: 0xA0C6, + 34730 - 11904: 0xEE59, + 34731 - 11904: 0xC1B1, + 34732 - 11904: 0xEE5D, + 34733 - 11904: 0xEE5A, + 34734 - 11904: 0xEE61, + 34735 - 11904: 0xEE67, + 34736 - 11904: 0xEE5C, + 34737 - 11904: 0x8FB4, + 34738 - 11904: 0xEE70, + 34739 - 11904: 0xC1AE, + 34740 - 11904: 0xEE6A, + 34741 - 11904: 0xEE5F, + 34742 - 11904: 0xEE6B, + 34743 - 11904: 0xEE66, + 34744 - 11904: 0xEE6D, + 34745 - 11904: 0xEE5E, + 34746 - 11904: 0xC1B3, + 34747 - 11904: 0xC1B2, + 34748 - 11904: 0xEE60, + 34749 - 11904: 0xEE6E, + 34750 - 11904: 0xEE58, + 34751 - 11904: 0xEE6C, + 34752 - 11904: 0xC1AC, + 34753 - 11904: 0xA0D7, + 34754 - 11904: 0xEE64, + 34755 - 11904: 0xEE63, + 34756 - 11904: 0xEE68, + 34757 - 11904: 0xEE5B, + 34758 - 11904: 0xC1B0, + 34760 - 11904: 0xC1B4, + 34761 - 11904: 0xEE62, + 34762 - 11904: 0xEE69, + 34763 - 11904: 0xC1B5, + 34764 - 11904: 0xEE65, + 34766 - 11904: 0xA0C7, + 34769 - 11904: 0xC1AD, + 34770 - 11904: 0xC1AF, + 34771 - 11904: 0xF0C7, + 34772 - 11904: 0xF0C5, + 34774 - 11904: 0xA043, + 34775 - 11904: 0xF0CC, + 34776 - 11904: 0xF0C9, + 34777 - 11904: 0xF0CD, + 34778 - 11904: 0x8FB5, + 34779 - 11904: 0xF0BE, + 34780 - 11904: 0xF0C6, + 34781 - 11904: 0xF0D1, + 34782 - 11904: 0xEE6F, + 34783 - 11904: 0xF0C2, + 34784 - 11904: 0xC2CF, + 34785 - 11904: 0xE7A5, + 34786 - 11904: 0xF0BD, + 34787 - 11904: 0xF0CA, + 34788 - 11904: 0xF0C4, + 34789 - 11904: 0xF0C1, + 34790 - 11904: 0xF0BC, + 34791 - 11904: 0xF0BB, + 34792 - 11904: 0xF0D0, + 34794 - 11904: 0xF0C0, + 34795 - 11904: 0xF0BF, + 34796 - 11904: 0xC2CD, + 34797 - 11904: 0xF0C8, + 34798 - 11904: 0x8FB2, + 34799 - 11904: 0xC2CC, + 34802 - 11904: 0xC2CE, + 34803 - 11904: 0xF0C3, + 34804 - 11904: 0xF0CF, + 34805 - 11904: 0xA061, + 34806 - 11904: 0xF2DE, + 34807 - 11904: 0xF2DF, + 34809 - 11904: 0xC3C9, + 34810 - 11904: 0xF2DC, + 34811 - 11904: 0xC3C6, + 34812 - 11904: 0xF2E4, + 34814 - 11904: 0xC3CA, + 34815 - 11904: 0xF2E6, + 34816 - 11904: 0xF2DB, + 34817 - 11904: 0xF0CE, + 34818 - 11904: 0xF2E8, + 34819 - 11904: 0xF2DD, + 34820 - 11904: 0x9E5E, + 34821 - 11904: 0xC3C7, + 34822 - 11904: 0xF2E3, + 34824 - 11904: 0xF2E5, + 34825 - 11904: 0xF2E0, + 34826 - 11904: 0xF2E7, + 34827 - 11904: 0xF2E2, + 34828 - 11904: 0xF2E1, + 34829 - 11904: 0xC3C8, + 34831 - 11904: 0xA063, + 34832 - 11904: 0xF4C5, + 34833 - 11904: 0xF4C6, + 34835 - 11904: 0xF4C8, + 34836 - 11904: 0xC4AE, + 34837 - 11904: 0xC4AF, + 34838 - 11904: 0xF4C9, + 34839 - 11904: 0xF4C7, + 34840 - 11904: 0x9FE8, + 34841 - 11904: 0xF4C4, + 34843 - 11904: 0xF642, + 34844 - 11904: 0xF645, + 34845 - 11904: 0xF641, + 34847 - 11904: 0xC4FA, + 34848 - 11904: 0xF643, + 34849 - 11904: 0xC4F9, + 34850 - 11904: 0xC4F8, + 34851 - 11904: 0xC4F7, + 34852 - 11904: 0xF644, + 34853 - 11904: 0xF751, + 34854 - 11904: 0xF74F, + 34855 - 11904: 0x9CB2, + 34856 - 11904: 0xF74E, + 34857 - 11904: 0xF640, + 34858 - 11904: 0xF750, + 34859 - 11904: 0xF646, + 34860 - 11904: 0xF74D, + 34861 - 11904: 0x957C, + 34862 - 11904: 0xF7F9, + 34863 - 11904: 0xF7D7, + 34864 - 11904: 0xF7F7, + 34865 - 11904: 0xC5DB, + 34866 - 11904: 0xF7F8, + 34867 - 11904: 0xF7FA, + 34869 - 11904: 0xF8BF, + 34870 - 11904: 0xC5FA, + 34871 - 11904: 0xF8BE, + 34872 - 11904: 0xF8BD, + 34873 - 11904: 0xC5FB, + 34875 - 11904: 0xC65A, + 34876 - 11904: 0xF96E, + 34877 - 11904: 0xF9A7, + 34878 - 11904: 0xF9A6, + 34879 - 11904: 0xF9A8, + 34880 - 11904: 0xA6E5, + 34881 - 11904: 0xD0AA, + 34882 - 11904: 0x9FC7, + 34883 - 11904: 0xD3CF, + 34884 - 11904: 0xD3D0, + 34885 - 11904: 0x8FBB, + 34886 - 11904: 0x8FBC, + 34888 - 11904: 0xDBC0, + 34890 - 11904: 0xF647, + 34891 - 11904: 0xF8C0, + 34892 - 11904: 0xA6E6, + 34893 - 11904: 0xAD6C, + 34894 - 11904: 0xD0AB, + 34895 - 11904: 0x8FEC, + 34898 - 11904: 0xD7B1, + 34899 - 11904: 0xB34E, + 34901 - 11904: 0xDBC2, + 34902 - 11904: 0xDBC1, + 34903 - 11904: 0xB5F3, + 34905 - 11904: 0xB8C5, + 34906 - 11904: 0xE7C1, + 34907 - 11904: 0xBDC3, + 34909 - 11904: 0xBDC4, + 34910 - 11904: 0x8FC0, + 34912 - 11904: 0x936A, + 34913 - 11904: 0xBFC5, + 34914 - 11904: 0xC5FC, + 34915 - 11904: 0xA6E7, + 34916 - 11904: 0x8BE4, + 34917 - 11904: 0x9C7C, + 34919 - 11904: 0xD0AC, + 34920 - 11904: 0xAAED, + 34921 - 11904: 0xD0AE, + 34922 - 11904: 0xD0AD, + 34923 - 11904: 0xAD6D, + 34925 - 11904: 0xD3D1, + 34926 - 11904: 0x95A1, + 34927 - 11904: 0xD3D8, + 34928 - 11904: 0xB049, + 34929 - 11904: 0xD3D6, + 34930 - 11904: 0xD3D4, + 34932 - 11904: 0xD3DB, + 34933 - 11904: 0xD3D2, + 34934 - 11904: 0xD3D3, + 34935 - 11904: 0xB04A, + 34937 - 11904: 0xB04E, + 34940 - 11904: 0xD3DC, + 34941 - 11904: 0xB04D, + 34942 - 11904: 0xD3DA, + 34943 - 11904: 0xD3D7, + 34944 - 11904: 0xD3D5, + 34945 - 11904: 0xB04B, + 34946 - 11904: 0xB04C, + 34947 - 11904: 0xD3D9, + 34948 - 11904: 0xFEEC, + 34951 - 11904: 0x95A3, + 34952 - 11904: 0xB350, + 34953 - 11904: 0xD7B2, + 34955 - 11904: 0xB355, + 34956 - 11904: 0xD7C2, + 34957 - 11904: 0xB354, + 34958 - 11904: 0xD7C4, + 34959 - 11904: 0x8C45, + 34960 - 11904: 0x8CB8, + 34961 - 11904: 0xD7B8, + 34962 - 11904: 0xB352, + 34963 - 11904: 0xD7C3, + 34965 - 11904: 0xD7B3, + 34966 - 11904: 0xB353, + 34967 - 11904: 0xD7BF, + 34968 - 11904: 0xD7BB, + 34969 - 11904: 0xD7BD, + 34970 - 11904: 0xD7B7, + 34971 - 11904: 0xD7BE, + 34972 - 11904: 0x8FC1, + 34973 - 11904: 0x87B7, + 34974 - 11904: 0xB34F, + 34975 - 11904: 0xD7BA, + 34976 - 11904: 0xA052, + 34977 - 11904: 0xD7B9, + 34978 - 11904: 0xD7B5, + 34980 - 11904: 0xD7C0, + 34983 - 11904: 0xD7BC, + 34984 - 11904: 0xD7B4, + 34986 - 11904: 0xD7B6, + 34987 - 11904: 0xB351, + 34988 - 11904: 0xD7C1, + 34990 - 11904: 0x99D0, + 34993 - 11904: 0xB5F6, + 34994 - 11904: 0xDBCD, + 34996 - 11904: 0x8FC3, + 34997 - 11904: 0x8FC4, + 34998 - 11904: 0xDBC9, + 34999 - 11904: 0xDBCB, + 35000 - 11904: 0xDBC6, + 35001 - 11904: 0xDBC5, + 35002 - 11904: 0xDBC3, + 35004 - 11904: 0xDBCA, + 35005 - 11904: 0xDBCC, + 35006 - 11904: 0xDBC8, + 35007 - 11904: 0x95A4, + 35008 - 11904: 0xDBC7, + 35009 - 11904: 0xB5F4, + 35010 - 11904: 0xB5F5, + 35013 - 11904: 0x8FC6, + 35015 - 11904: 0x9E60, + 35017 - 11904: 0xDBCF, + 35018 - 11904: 0xB8CD, + 35019 - 11904: 0xDFF2, + 35020 - 11904: 0xDFF8, + 35021 - 11904: 0xDFF3, + 35022 - 11904: 0xDFF4, + 35023 - 11904: 0xF9D8, + 35024 - 11904: 0xDFF9, + 35026 - 11904: 0xB8CF, + 35028 - 11904: 0xB8C7, + 35029 - 11904: 0xB8CE, + 35030 - 11904: 0xDFF1, + 35031 - 11904: 0xDBC4, + 35032 - 11904: 0xB8CA, + 35033 - 11904: 0xB8C8, + 35034 - 11904: 0xDFF7, + 35035 - 11904: 0xDFF6, + 35036 - 11904: 0xB8C9, + 35037 - 11904: 0xB8CB, + 35038 - 11904: 0xDFF5, + 35039 - 11904: 0xB8C6, + 35041 - 11904: 0xB8CC, + 35046 - 11904: 0x95A5, + 35047 - 11904: 0xE3F6, + 35048 - 11904: 0xBB74, + 35051 - 11904: 0xE442, + 35052 - 11904: 0xE441, + 35054 - 11904: 0xE3FB, + 35055 - 11904: 0xBB76, + 35056 - 11904: 0xE440, + 35057 - 11904: 0xE3F7, + 35058 - 11904: 0xE3F8, + 35059 - 11904: 0xBB6E, + 35060 - 11904: 0xBB70, + 35061 - 11904: 0x9CB3, + 35062 - 11904: 0xE3FD, + 35063 - 11904: 0xE3F5, + 35064 - 11904: 0xBB72, + 35065 - 11904: 0xBB71, + 35066 - 11904: 0xE3F9, + 35067 - 11904: 0xE3FE, + 35068 - 11904: 0xE3FC, + 35069 - 11904: 0xBB73, + 35070 - 11904: 0xE3FA, + 35071 - 11904: 0x99D1, + 35072 - 11904: 0xFEF1, + 35073 - 11904: 0xDBCE, + 35074 - 11904: 0xBB6F, + 35077 - 11904: 0xE7C2, + 35078 - 11904: 0xE7C9, + 35079 - 11904: 0xBDC6, + 35081 - 11904: 0xE7CD, + 35082 - 11904: 0xBDCA, + 35083 - 11904: 0xE7C5, + 35084 - 11904: 0xE7C3, + 35086 - 11904: 0xE7CC, + 35088 - 11904: 0xBDC5, + 35089 - 11904: 0xE7CB, + 35090 - 11904: 0xBDC7, + 35091 - 11904: 0xBDC8, + 35092 - 11904: 0xE7C4, + 35093 - 11904: 0xBDC9, + 35094 - 11904: 0xE7CA, + 35095 - 11904: 0xE7C6, + 35096 - 11904: 0xE7C7, + 35097 - 11904: 0xE7C8, + 35098 - 11904: 0xBB75, + 35102 - 11904: 0xEB70, + 35103 - 11904: 0xEB7C, + 35105 - 11904: 0xBFCA, + 35106 - 11904: 0xEB77, + 35107 - 11904: 0xEB79, + 35108 - 11904: 0x99D2, + 35109 - 11904: 0xBFC8, + 35110 - 11904: 0xEB71, + 35111 - 11904: 0xEB75, + 35113 - 11904: 0xEB78, + 35114 - 11904: 0xBFC6, + 35115 - 11904: 0xBFC9, + 35116 - 11904: 0xEB7B, + 35117 - 11904: 0xEB73, + 35118 - 11904: 0xEB74, + 35119 - 11904: 0xEB7A, + 35120 - 11904: 0xEB72, + 35121 - 11904: 0xEB76, + 35122 - 11904: 0xBFC7, + 35123 - 11904: 0xEE72, + 35125 - 11904: 0xEE71, + 35126 - 11904: 0xC1B7, + 35127 - 11904: 0xEE77, + 35128 - 11904: 0xC1B9, + 35131 - 11904: 0xC1B6, + 35132 - 11904: 0xEE73, + 35133 - 11904: 0xC1BA, + 35134 - 11904: 0xEE74, + 35137 - 11904: 0xEE75, + 35138 - 11904: 0xEE78, + 35139 - 11904: 0x9CC2, + 35140 - 11904: 0xC1B8, + 35142 - 11904: 0xF0D6, + 35143 - 11904: 0x99D3, + 35145 - 11904: 0xF0D9, + 35147 - 11904: 0xF0D3, + 35148 - 11904: 0xF0D5, + 35149 - 11904: 0x95A7, + 35151 - 11904: 0xF0D4, + 35152 - 11904: 0xF0D7, + 35153 - 11904: 0xF0D8, + 35154 - 11904: 0xEE76, + 35155 - 11904: 0xF0D2, + 35156 - 11904: 0x95A9, + 35158 - 11904: 0xC3CD, + 35159 - 11904: 0xF2EC, + 35160 - 11904: 0xF2EF, + 35161 - 11904: 0xF2F1, + 35162 - 11904: 0xF2EA, + 35163 - 11904: 0xF2EB, + 35164 - 11904: 0xF2EE, + 35165 - 11904: 0xF2F0, + 35166 - 11904: 0xC3CE, + 35167 - 11904: 0xC3CC, + 35168 - 11904: 0xC3CB, + 35169 - 11904: 0xF2ED, + 35170 - 11904: 0xF2E9, + 35171 - 11904: 0xF4CA, + 35172 - 11904: 0xC4B0, + 35173 - 11904: 0x95A6, + 35174 - 11904: 0xF4CB, + 35177 - 11904: 0xF649, + 35178 - 11904: 0xC4FB, + 35179 - 11904: 0xF64B, + 35180 - 11904: 0xC4FC, + 35181 - 11904: 0xF648, + 35182 - 11904: 0xF64A, + 35183 - 11904: 0xC5A8, + 35185 - 11904: 0xF752, + 35186 - 11904: 0xC5A7, + 35187 - 11904: 0xF7FD, + 35188 - 11904: 0xF7FC, + 35190 - 11904: 0xF7FB, + 35191 - 11904: 0x9C5D, + 35193 - 11904: 0xF948, + 35194 - 11904: 0xF949, + 35195 - 11904: 0xF94B, + 35196 - 11904: 0xF94A, + 35198 - 11904: 0xCA50, + 35199 - 11904: 0xA6E8, + 35200 - 11904: 0x98E2, + 35201 - 11904: 0xAD6E, + 35202 - 11904: 0xD7C5, + 35203 - 11904: 0xB5F7, + 35205 - 11904: 0xDFFA, + 35206 - 11904: 0xC2D0, + 35207 - 11904: 0x8FC9, + 35208 - 11904: 0xF2F2, + 35209 - 11904: 0xA0C2, + 35210 - 11904: 0x8FCA, + 35211 - 11904: 0xA8A3, + 35215 - 11904: 0xB357, + 35217 - 11904: 0x99D4, + 35219 - 11904: 0xB356, + 35220 - 11904: 0xA0B9, + 35221 - 11904: 0xDBD0, + 35222 - 11904: 0xB5F8, + 35223 - 11904: 0xDBD2, + 35224 - 11904: 0xDBD1, + 35227 - 11904: 0xDFFB, + 35228 - 11904: 0xB8D0, + 35229 - 11904: 0xE443, + 35230 - 11904: 0xE446, + 35231 - 11904: 0xE445, + 35233 - 11904: 0xE444, + 35234 - 11904: 0xE7CE, + 35235 - 11904: 0xE7D0, + 35236 - 11904: 0xE7CF, + 35237 - 11904: 0x9B58, + 35238 - 11904: 0xBFCC, + 35239 - 11904: 0x8FCD, + 35241 - 11904: 0xA0D4, + 35242 - 11904: 0xBFCB, + 35244 - 11904: 0xC1BB, + 35245 - 11904: 0xEE79, + 35246 - 11904: 0xEE7B, + 35247 - 11904: 0xEE7A, + 35250 - 11904: 0xC2D1, + 35254 - 11904: 0xF2F4, + 35255 - 11904: 0xF2F3, + 35257 - 11904: 0xF4CC, + 35258 - 11904: 0xC4B1, + 35260 - 11904: 0x8FCE, + 35261 - 11904: 0xC4FD, + 35262 - 11904: 0xF754, + 35263 - 11904: 0xF753, + 35264 - 11904: 0xC65B, + 35265 - 11904: 0x8BE5, + 35270 - 11904: 0x8979, + 35282 - 11904: 0xA8A4, + 35283 - 11904: 0xD0AF, + 35284 - 11904: 0xAD6F, + 35285 - 11904: 0xD7C8, + 35286 - 11904: 0xD7C6, + 35289 - 11904: 0xD7C7, + 35290 - 11904: 0xDBD4, + 35291 - 11904: 0xDBD5, + 35292 - 11904: 0xE043, + 35293 - 11904: 0xDBD3, + 35295 - 11904: 0xDFFC, + 35296 - 11904: 0xE041, + 35297 - 11904: 0xE040, + 35298 - 11904: 0xE042, + 35299 - 11904: 0xB8D1, + 35300 - 11904: 0xDFFE, + 35301 - 11904: 0xDFFD, + 35302 - 11904: 0xE044, + 35303 - 11904: 0x8FD0, + 35304 - 11904: 0xE449, + 35305 - 11904: 0xE447, + 35307 - 11904: 0xE448, + 35308 - 11904: 0xE7D3, + 35309 - 11904: 0xE7D1, + 35312 - 11904: 0xE7D2, + 35313 - 11904: 0xEB7D, + 35314 - 11904: 0xEE7C, + 35315 - 11904: 0xEE7D, + 35316 - 11904: 0xC2D2, + 35318 - 11904: 0xF2F5, + 35319 - 11904: 0xF4CD, + 35320 - 11904: 0xC4B2, + 35322 - 11904: 0xF64C, + 35323 - 11904: 0xF755, + 35324 - 11904: 0xC5A9, + 35326 - 11904: 0xF7FE, + 35327 - 11904: 0xF94C, + 35328 - 11904: 0xA8A5, + 35330 - 11904: 0xAD71, + 35331 - 11904: 0xAD72, + 35332 - 11904: 0xD0B0, + 35335 - 11904: 0xD0B1, + 35336 - 11904: 0xAD70, + 35338 - 11904: 0xB054, + 35340 - 11904: 0xB052, + 35342 - 11904: 0xB051, + 35343 - 11904: 0xB058, + 35344 - 11904: 0xB050, + 35345 - 11904: 0xB059, + 35346 - 11904: 0xD3DD, + 35347 - 11904: 0xB056, + 35349 - 11904: 0xB053, + 35350 - 11904: 0xB057, + 35351 - 11904: 0xB055, + 35352 - 11904: 0xB04F, + 35355 - 11904: 0xB35F, + 35356 - 11904: 0x95B6, + 35357 - 11904: 0xB359, + 35358 - 11904: 0xD7CC, + 35359 - 11904: 0xB35E, + 35362 - 11904: 0xB360, + 35363 - 11904: 0xB35A, + 35365 - 11904: 0xB35B, + 35367 - 11904: 0xD7CA, + 35369 - 11904: 0x99D6, + 35370 - 11904: 0xB358, + 35371 - 11904: 0x95E5, + 35372 - 11904: 0xD7CB, + 35373 - 11904: 0xB35D, + 35376 - 11904: 0xD7C9, + 35377 - 11904: 0xB35C, + 35380 - 11904: 0xB644, + 35382 - 11904: 0xB646, + 35384 - 11904: 0x99D7, + 35385 - 11904: 0xDBD8, + 35386 - 11904: 0xB645, + 35387 - 11904: 0xB5F9, + 35388 - 11904: 0xB5FD, + 35389 - 11904: 0x95B5, + 35390 - 11904: 0xB8E4, + 35391 - 11904: 0xE049, + 35392 - 11904: 0xDBDA, + 35393 - 11904: 0xB5FE, + 35396 - 11904: 0xDBDD, + 35397 - 11904: 0xDBDE, + 35398 - 11904: 0xB643, + 35400 - 11904: 0xDBE0, + 35401 - 11904: 0xA0CA, + 35402 - 11904: 0xDBE2, + 35404 - 11904: 0xDBE3, + 35405 - 11904: 0xDBD7, + 35406 - 11904: 0xDBD6, + 35407 - 11904: 0xDBE4, + 35408 - 11904: 0xB642, + 35409 - 11904: 0xDBE1, + 35410 - 11904: 0xDBDF, + 35412 - 11904: 0xB640, + 35413 - 11904: 0xB5FB, + 35414 - 11904: 0xB647, + 35415 - 11904: 0xDBDB, + 35416 - 11904: 0xDBDC, + 35417 - 11904: 0xDBD9, + 35419 - 11904: 0xB641, + 35422 - 11904: 0xB5FC, + 35424 - 11904: 0xB5FA, + 35425 - 11904: 0xE048, + 35426 - 11904: 0xB8DF, + 35427 - 11904: 0xB8DA, + 35430 - 11904: 0xB8D5, + 35431 - 11904: 0x9FFD, + 35432 - 11904: 0xB8E5, + 35433 - 11904: 0xB8D6, + 35435 - 11904: 0xB8D2, + 35436 - 11904: 0xB8E1, + 35437 - 11904: 0xB8DE, + 35438 - 11904: 0xB8E0, + 35440 - 11904: 0xB8D7, + 35441 - 11904: 0xB8DC, + 35442 - 11904: 0xB8D3, + 35443 - 11904: 0xB8D4, + 35444 - 11904: 0xE050, + 35445 - 11904: 0xE04D, + 35446 - 11904: 0xE045, + 35447 - 11904: 0xE04A, + 35449 - 11904: 0xB8E2, + 35450 - 11904: 0xE051, + 35451 - 11904: 0xB8E3, + 35452 - 11904: 0xB8D9, + 35454 - 11904: 0xA058, + 35455 - 11904: 0xE047, + 35457 - 11904: 0xE04F, + 35458 - 11904: 0xE04B, + 35459 - 11904: 0xE04E, + 35460 - 11904: 0xE04C, + 35461 - 11904: 0xB8DD, + 35462 - 11904: 0xE046, + 35463 - 11904: 0xB8D8, + 35467 - 11904: 0xE44C, + 35468 - 11904: 0xBB78, + 35469 - 11904: 0xBB7B, + 35471 - 11904: 0xE44E, + 35472 - 11904: 0x8FD6, + 35473 - 11904: 0xBBA5, + 35474 - 11904: 0xE44D, + 35475 - 11904: 0xBB7D, + 35476 - 11904: 0x99D8, + 35477 - 11904: 0xBDCF, + 35478 - 11904: 0xE44F, + 35480 - 11904: 0xBBA4, + 35481 - 11904: 0xE44B, + 35482 - 11904: 0xBBA6, + 35484 - 11904: 0x8FD3, + 35486 - 11904: 0xBB79, + 35488 - 11904: 0xB8DB, + 35489 - 11904: 0xBB7C, + 35491 - 11904: 0xBB7A, + 35492 - 11904: 0xBB7E, + 35493 - 11904: 0xBBA2, + 35494 - 11904: 0xBB77, + 35495 - 11904: 0xBBA7, + 35496 - 11904: 0xBBA3, + 35497 - 11904: 0x8FE5, + 35498 - 11904: 0xBBA1, + 35499 - 11904: 0xE44A, + 35503 - 11904: 0x8FE9, + 35504 - 11904: 0xBDD6, + 35506 - 11904: 0xBDD2, + 35508 - 11904: 0x99D9, + 35510 - 11904: 0xBDD9, + 35512 - 11904: 0xE7D6, + 35513 - 11904: 0xBDDA, + 35514 - 11904: 0xE7E2, + 35515 - 11904: 0xE7DB, + 35516 - 11904: 0xBDCB, + 35517 - 11904: 0xE7E3, + 35518 - 11904: 0xE7DD, + 35519 - 11904: 0xBDD5, + 35520 - 11904: 0xE7DE, + 35522 - 11904: 0xBDD4, + 35523 - 11904: 0xE7E1, + 35524 - 11904: 0xBDCE, + 35525 - 11904: 0xE7DF, + 35526 - 11904: 0xE7D5, + 35527 - 11904: 0xBDCD, + 35528 - 11904: 0xEBAA, + 35529 - 11904: 0xBDD3, + 35531 - 11904: 0xBDD0, + 35532 - 11904: 0x8CF7, + 35533 - 11904: 0xBDD8, + 35535 - 11904: 0xE7D4, + 35537 - 11904: 0xE7D8, + 35538 - 11904: 0xBDCC, + 35539 - 11904: 0xE7D7, + 35540 - 11904: 0xE7D9, + 35541 - 11904: 0xE7DA, + 35542 - 11904: 0xBDD7, + 35543 - 11904: 0xE7DC, + 35544 - 11904: 0xE7E0, + 35545 - 11904: 0xE7E4, + 35546 - 11904: 0x927C, + 35547 - 11904: 0xBDDB, + 35548 - 11904: 0xBFD2, + 35549 - 11904: 0xEBA5, + 35550 - 11904: 0xEBAB, + 35551 - 11904: 0xEBA8, + 35552 - 11904: 0xEB7E, + 35553 - 11904: 0xEBAC, + 35554 - 11904: 0xEBA1, + 35556 - 11904: 0xEBA7, + 35558 - 11904: 0xBFCD, + 35559 - 11904: 0xBFD3, + 35560 - 11904: 0xEBAD, + 35562 - 11904: 0x9C45, + 35563 - 11904: 0xBFCF, + 35565 - 11904: 0xBFD9, + 35566 - 11904: 0xBFD4, + 35567 - 11904: 0xEBAF, + 35568 - 11904: 0xEBA9, + 35569 - 11904: 0xBFD0, + 35570 - 11904: 0xEBA2, + 35571 - 11904: 0xBFDA, + 35572 - 11904: 0xEBA3, + 35573 - 11904: 0xEBA4, + 35574 - 11904: 0xBFDB, + 35575 - 11904: 0xBFD8, + 35576 - 11904: 0xBDD1, + 35577 - 11904: 0x8CE8, + 35578 - 11904: 0xBFCE, + 35579 - 11904: 0xEBB0, + 35580 - 11904: 0xBFDC, + 35582 - 11904: 0xBFD5, + 35583 - 11904: 0xEBAE, + 35584 - 11904: 0xBFD1, + 35585 - 11904: 0xBFD6, + 35586 - 11904: 0xBFD7, + 35588 - 11904: 0xC1C3, + 35589 - 11904: 0xEEA4, + 35590 - 11904: 0xEEAD, + 35591 - 11904: 0xEEAA, + 35592 - 11904: 0xEEAC, + 35594 - 11904: 0xC1C0, + 35595 - 11904: 0xEEA5, + 35596 - 11904: 0x8FDE, + 35597 - 11904: 0xEEAB, + 35598 - 11904: 0xC1BC, + 35599 - 11904: 0xEEA7, + 35600 - 11904: 0xC1C4, + 35601 - 11904: 0xEEA3, + 35602 - 11904: 0xEEA8, + 35603 - 11904: 0xEEAF, + 35604 - 11904: 0xEBA6, + 35605 - 11904: 0xEEA9, + 35606 - 11904: 0xEEA2, + 35607 - 11904: 0xC1BD, + 35608 - 11904: 0xEEA1, + 35609 - 11904: 0xC1BE, + 35610 - 11904: 0xEEB0, + 35611 - 11904: 0xC1BF, + 35612 - 11904: 0xEEAE, + 35613 - 11904: 0xC1C2, + 35614 - 11904: 0xEE7E, + 35615 - 11904: 0x8FDF, + 35616 - 11904: 0xC1C1, + 35618 - 11904: 0xEEA6, + 35619 - 11904: 0xF0DC, + 35620 - 11904: 0xF0EA, + 35621 - 11904: 0xF0E5, + 35622 - 11904: 0xF0E7, + 35623 - 11904: 0xF0DB, + 35624 - 11904: 0xC2D3, + 35626 - 11904: 0xF0DA, + 35627 - 11904: 0xC2D6, + 35628 - 11904: 0xC2D5, + 35629 - 11904: 0xA04B, + 35630 - 11904: 0xF0E9, + 35631 - 11904: 0xF0E1, + 35632 - 11904: 0xF0DE, + 35633 - 11904: 0xF0E4, + 35635 - 11904: 0xF0DD, + 35637 - 11904: 0xF0DF, + 35638 - 11904: 0xF0E8, + 35639 - 11904: 0xF0E6, + 35641 - 11904: 0xC2D4, + 35642 - 11904: 0xF0ED, + 35643 - 11904: 0xF0EB, + 35644 - 11904: 0xF0E2, + 35645 - 11904: 0xF0EC, + 35646 - 11904: 0xF0E3, + 35647 - 11904: 0x8FE2, + 35648 - 11904: 0xF2F9, + 35649 - 11904: 0xC3CF, + 35650 - 11904: 0xF341, + 35651 - 11904: 0xA0CC, + 35653 - 11904: 0xF64F, + 35654 - 11904: 0xC3D6, + 35655 - 11904: 0xF0E0, + 35656 - 11904: 0xF2F7, + 35657 - 11904: 0xC3D2, + 35658 - 11904: 0xF2F8, + 35659 - 11904: 0xF2FD, + 35660 - 11904: 0x8FE3, + 35661 - 11904: 0x8FE4, + 35662 - 11904: 0xC3D4, + 35663 - 11904: 0xC3D5, + 35664 - 11904: 0xF2F6, + 35665 - 11904: 0xF340, + 35666 - 11904: 0xF342, + 35667 - 11904: 0xF2FA, + 35668 - 11904: 0xF2FC, + 35669 - 11904: 0xF2FE, + 35670 - 11904: 0xF2FB, + 35671 - 11904: 0xF343, + 35672 - 11904: 0xC3D1, + 35673 - 11904: 0xC3D7, + 35674 - 11904: 0xC3D3, + 35676 - 11904: 0xC3D0, + 35677 - 11904: 0xF4D0, + 35678 - 11904: 0x9BC4, + 35679 - 11904: 0xC4B7, + 35680 - 11904: 0xF4CE, + 35682 - 11904: 0x9BFC, + 35683 - 11904: 0xF4D2, + 35685 - 11904: 0xF4D3, + 35686 - 11904: 0xC4B5, + 35687 - 11904: 0xF4D4, + 35688 - 11904: 0xF4D1, + 35689 - 11904: 0x964C, + 35690 - 11904: 0xF4CF, + 35691 - 11904: 0xC4B8, + 35692 - 11904: 0xC4B4, + 35693 - 11904: 0xF4D5, + 35695 - 11904: 0xC4B6, + 35696 - 11904: 0xC4B3, + 35700 - 11904: 0xC4FE, + 35703 - 11904: 0xC540, + 35704 - 11904: 0xF64E, + 35705 - 11904: 0xF64D, + 35706 - 11904: 0xF650, + 35707 - 11904: 0xF651, + 35709 - 11904: 0xC541, + 35710 - 11904: 0xF756, + 35711 - 11904: 0xF75B, + 35712 - 11904: 0xC5AA, + 35713 - 11904: 0x9AF6, + 35714 - 11904: 0xF758, + 35715 - 11904: 0x8CAE, + 35716 - 11904: 0xF757, + 35717 - 11904: 0xF75A, + 35718 - 11904: 0xF759, + 35720 - 11904: 0xF843, + 35722 - 11904: 0xC5DC, + 35723 - 11904: 0xF842, + 35724 - 11904: 0xF840, + 35726 - 11904: 0xF841, + 35727 - 11904: 0x87CB, + 35728 - 11904: 0x8FE7, + 35730 - 11904: 0xC5FE, + 35731 - 11904: 0xC5FD, + 35732 - 11904: 0xF8C1, + 35733 - 11904: 0xF8C2, + 35734 - 11904: 0xC640, + 35736 - 11904: 0xF94D, + 35737 - 11904: 0xF94E, + 35738 - 11904: 0xC667, + 35739 - 11904: 0x8FE8, + 35740 - 11904: 0xC66D, + 35742 - 11904: 0xF9A9, + 35743 - 11904: 0xF9C8, + 35744 - 11904: 0x8BE7, + 35774 - 11904: 0x897A, + 35810 - 11904: 0x897B, + 35895 - 11904: 0xA8A6, + 35897 - 11904: 0xD7CD, + 35899 - 11904: 0xD7CE, + 35900 - 11904: 0xE052, + 35901 - 11904: 0xE450, + 35902 - 11904: 0xE7E5, + 35903 - 11904: 0xC1C6, + 35905 - 11904: 0xC1C5, + 35906 - 11904: 0xF0EE, + 35907 - 11904: 0xF344, + 35909 - 11904: 0xF844, + 35910 - 11904: 0xA8A7, + 35911 - 11904: 0xD3DE, + 35912 - 11904: 0xB05A, + 35913 - 11904: 0xB361, + 35914 - 11904: 0xE054, + 35915 - 11904: 0xE053, + 35916 - 11904: 0xBDDC, + 35917 - 11904: 0xE7E6, + 35918 - 11904: 0xBDDD, + 35919 - 11904: 0xEEB1, + 35920 - 11904: 0xC2D7, + 35921 - 11904: 0x99DA, + 35924 - 11904: 0xC676, + 35925 - 11904: 0xA8A8, + 35926 - 11904: 0xCDCB, + 35927 - 11904: 0xD3DF, + 35930 - 11904: 0xB362, + 35932 - 11904: 0xD7CF, + 35933 - 11904: 0xD7D0, + 35935 - 11904: 0xDBE5, + 35937 - 11904: 0xB648, + 35938 - 11904: 0xB8E6, + 35940 - 11904: 0xE056, + 35941 - 11904: 0xE055, + 35942 - 11904: 0xE057, + 35944 - 11904: 0xE451, + 35945 - 11904: 0xE452, + 35946 - 11904: 0xBBA8, + 35947 - 11904: 0xBFDD, + 35948 - 11904: 0xBDDE, + 35949 - 11904: 0xBFDE, + 35951 - 11904: 0xEEB5, + 35952 - 11904: 0xEEB2, + 35953 - 11904: 0xEEB4, + 35954 - 11904: 0xEEB3, + 35955 - 11904: 0xC1C7, + 35957 - 11904: 0xF0EF, + 35958 - 11904: 0xF346, + 35959 - 11904: 0xF345, + 35960 - 11904: 0xCBA4, + 35961 - 11904: 0xB05C, + 35962 - 11904: 0xB05B, + 35963 - 11904: 0xD3E0, + 35965 - 11904: 0xD7D1, + 35968 - 11904: 0xDBE7, + 35969 - 11904: 0xDBE6, + 35970 - 11904: 0xB649, + 35972 - 11904: 0xE059, + 35973 - 11904: 0xE05A, + 35974 - 11904: 0xE058, + 35977 - 11904: 0xB8E8, + 35978 - 11904: 0xB8E7, + 35980 - 11904: 0xBBAA, + 35981 - 11904: 0xBBA9, + 35983 - 11904: 0xE7E7, + 35984 - 11904: 0xEBB3, + 35985 - 11904: 0xEBB1, + 35986 - 11904: 0xEBB2, + 35987 - 11904: 0xBFDF, + 35988 - 11904: 0xEEB7, + 35989 - 11904: 0xEEB6, + 35991 - 11904: 0xF0F2, + 35992 - 11904: 0xF0F1, + 35993 - 11904: 0xF0F0, + 35994 - 11904: 0xF347, + 35995 - 11904: 0x8FED, + 35996 - 11904: 0xF9AA, + 35997 - 11904: 0xA8A9, + 35998 - 11904: 0xAD73, + 35999 - 11904: 0x95C0, + 36000 - 11904: 0xAD74, + 36001 - 11904: 0xB05D, + 36002 - 11904: 0xB05E, + 36003 - 11904: 0xD3E2, + 36004 - 11904: 0xD3E1, + 36005 - 11904: 0xD7D2, + 36007 - 11904: 0xB368, + 36008 - 11904: 0xB366, + 36009 - 11904: 0xB363, + 36010 - 11904: 0xB367, + 36011 - 11904: 0xB365, + 36012 - 11904: 0xB364, + 36013 - 11904: 0xA0CB, + 36015 - 11904: 0xB64A, + 36016 - 11904: 0xDBEA, + 36018 - 11904: 0xB8ED, + 36019 - 11904: 0xB64C, + 36020 - 11904: 0xB651, + 36021 - 11904: 0xDBEC, + 36022 - 11904: 0xB653, + 36023 - 11904: 0xB652, + 36024 - 11904: 0xB655, + 36025 - 11904: 0xDBEB, + 36026 - 11904: 0xDBE8, + 36027 - 11904: 0xB64F, + 36028 - 11904: 0xB64B, + 36029 - 11904: 0xB64D, + 36030 - 11904: 0xDBE9, + 36031 - 11904: 0xB654, + 36032 - 11904: 0xB650, + 36033 - 11904: 0xB64E, + 36034 - 11904: 0xB8EF, + 36035 - 11904: 0xB8EE, + 36036 - 11904: 0xB8EC, + 36037 - 11904: 0xB8F0, + 36039 - 11904: 0xB8EA, + 36040 - 11904: 0xB8EB, + 36042 - 11904: 0xB8E9, + 36044 - 11904: 0xE05B, + 36045 - 11904: 0x9E48, + 36047 - 11904: 0xE454, + 36049 - 11904: 0xBBAC, + 36050 - 11904: 0xBBAD, + 36051 - 11904: 0xBBAB, + 36052 - 11904: 0x99DB, + 36053 - 11904: 0xE453, + 36054 - 11904: 0x8FF3, + 36055 - 11904: 0xE455, + 36057 - 11904: 0xE7EA, + 36058 - 11904: 0xE7EC, + 36059 - 11904: 0x8FF9, + 36060 - 11904: 0xBDE7, + 36061 - 11904: 0xE7ED, + 36062 - 11904: 0xBDE0, + 36063 - 11904: 0xE7E9, + 36064 - 11904: 0xBDDF, + 36065 - 11904: 0xBDE9, + 36066 - 11904: 0xBDE5, + 36067 - 11904: 0xBDE6, + 36068 - 11904: 0xBDE2, + 36069 - 11904: 0xE7E8, + 36070 - 11904: 0xBDE1, + 36071 - 11904: 0xE7EE, + 36072 - 11904: 0xE7EB, + 36073 - 11904: 0x95C1, + 36074 - 11904: 0xBDE8, + 36075 - 11904: 0xA04E, + 36076 - 11904: 0xBDE3, + 36077 - 11904: 0xBDE4, + 36078 - 11904: 0xEBB5, + 36080 - 11904: 0xEBB7, + 36081 - 11904: 0xEBB6, + 36082 - 11904: 0x99DC, + 36083 - 11904: 0xEBB8, + 36084 - 11904: 0xBFE0, + 36085 - 11904: 0xEBB4, + 36087 - 11904: 0xA064, + 36088 - 11904: 0xC1CB, + 36089 - 11904: 0xEEB8, + 36090 - 11904: 0xC1C8, + 36091 - 11904: 0xC1CC, + 36092 - 11904: 0xC1CA, + 36093 - 11904: 0xC1C9, + 36094 - 11904: 0xF0F3, + 36096 - 11904: 0xF0F6, + 36098 - 11904: 0xF0F5, + 36099 - 11904: 0x8FF7, + 36100 - 11904: 0xF0F4, + 36101 - 11904: 0xC2D8, + 36102 - 11904: 0xF348, + 36103 - 11904: 0xF349, + 36104 - 11904: 0xC3D8, + 36105 - 11904: 0xF34A, + 36106 - 11904: 0xC3D9, + 36107 - 11904: 0x89B0, + 36108 - 11904: 0xA048, + 36109 - 11904: 0xC4BA, + 36111 - 11904: 0xC4B9, + 36112 - 11904: 0xF652, + 36113 - 11904: 0x8FFB, + 36114 - 11904: 0x8FF6, + 36115 - 11904: 0xC542, + 36116 - 11904: 0xF653, + 36117 - 11904: 0xF75C, + 36118 - 11904: 0xC5AB, + 36119 - 11904: 0xC5AC, + 36120 - 11904: 0x9DDC, + 36121 - 11904: 0xF845, + 36123 - 11904: 0xC642, + 36124 - 11904: 0x99DD, + 36125 - 11904: 0x8BE8, + 36196 - 11904: 0xA8AA, + 36198 - 11904: 0xB36A, + 36199 - 11904: 0xB369, + 36200 - 11904: 0xE05C, + 36201 - 11904: 0xE05D, + 36203 - 11904: 0xBBAE, + 36204 - 11904: 0xEBB9, + 36205 - 11904: 0xBDEA, + 36206 - 11904: 0xEBBA, + 36207 - 11904: 0xEEB9, + 36208 - 11904: 0xA8AB, + 36210 - 11904: 0xD0B2, + 36211 - 11904: 0xAD76, + 36212 - 11904: 0xAD75, + 36214 - 11904: 0xD3E3, + 36215 - 11904: 0xB05F, + 36216 - 11904: 0xD3E4, + 36217 - 11904: 0xD7D5, + 36218 - 11904: 0x92C1, + 36219 - 11904: 0xD7D4, + 36221 - 11904: 0xD7D3, + 36224 - 11904: 0xDBEE, + 36225 - 11904: 0xB658, + 36226 - 11904: 0x9FD6, + 36228 - 11904: 0xDBED, + 36229 - 11904: 0xB657, + 36233 - 11904: 0xDBEF, + 36234 - 11904: 0xB656, + 36236 - 11904: 0xE05F, + 36237 - 11904: 0xE062, + 36238 - 11904: 0xE060, + 36239 - 11904: 0xE061, + 36240 - 11904: 0xE065, + 36241 - 11904: 0xE05E, + 36242 - 11904: 0xE066, + 36243 - 11904: 0xE063, + 36244 - 11904: 0xE064, + 36245 - 11904: 0xBBB0, + 36246 - 11904: 0xE456, + 36249 - 11904: 0xBBAF, + 36251 - 11904: 0xE7F2, + 36252 - 11904: 0xE7F0, + 36255 - 11904: 0xBDEB, + 36256 - 11904: 0xE7EF, + 36257 - 11904: 0xE7F1, + 36259 - 11904: 0xBDEC, + 36261 - 11904: 0xEBBB, + 36262 - 11904: 0xA0D2, + 36263 - 11904: 0xEBBC, + 36264 - 11904: 0xC1CD, + 36265 - 11904: 0x9040, + 36266 - 11904: 0xF34C, + 36267 - 11904: 0xF34E, + 36268 - 11904: 0xF34B, + 36269 - 11904: 0xF34D, + 36270 - 11904: 0xF4D6, + 36271 - 11904: 0xF654, + 36274 - 11904: 0xF96F, + 36275 - 11904: 0xA8AC, + 36276 - 11904: 0xAD77, + 36277 - 11904: 0xD3E5, + 36278 - 11904: 0xD3E7, + 36279 - 11904: 0xD3E6, + 36281 - 11904: 0xD7D8, + 36282 - 11904: 0xB36C, + 36284 - 11904: 0xD7D6, + 36286 - 11904: 0xB36B, + 36287 - 11904: 0xD7D9, + 36288 - 11904: 0x8AC4, + 36289 - 11904: 0xD7DA, + 36290 - 11904: 0xD7D7, + 36291 - 11904: 0x99E0, + 36293 - 11904: 0xDBFB, + 36294 - 11904: 0xB660, + 36295 - 11904: 0xDBF3, + 36296 - 11904: 0xDBF9, + 36299 - 11904: 0xB65B, + 36300 - 11904: 0xB65E, + 36301 - 11904: 0xDBF2, + 36302 - 11904: 0xB659, + 36303 - 11904: 0xDBF6, + 36304 - 11904: 0xE06C, + 36305 - 11904: 0xB65D, + 36307 - 11904: 0xDBF1, + 36308 - 11904: 0x9FF0, + 36309 - 11904: 0xDBF7, + 36310 - 11904: 0xDBF4, + 36311 - 11904: 0xDBFA, + 36312 - 11904: 0xDBF0, + 36313 - 11904: 0xDBF8, + 36314 - 11904: 0xB65C, + 36315 - 11904: 0xB65F, + 36316 - 11904: 0xDBF5, + 36317 - 11904: 0xB65A, + 36319 - 11904: 0xB8F2, + 36320 - 11904: 0xE068, + 36321 - 11904: 0xB8F1, + 36322 - 11904: 0xE06F, + 36323 - 11904: 0xE06E, + 36324 - 11904: 0xB8F8, + 36326 - 11904: 0xB8F9, + 36327 - 11904: 0xE070, + 36328 - 11904: 0xB8F3, + 36329 - 11904: 0xE06D, + 36330 - 11904: 0xB8F7, + 36331 - 11904: 0xE072, + 36332 - 11904: 0xE069, + 36334 - 11904: 0xE06B, + 36335 - 11904: 0xB8F4, + 36336 - 11904: 0xE067, + 36337 - 11904: 0xE06A, + 36338 - 11904: 0xE071, + 36339 - 11904: 0xB8F5, + 36340 - 11904: 0xE073, + 36346 - 11904: 0xB8F6, + 36348 - 11904: 0xBBB1, + 36349 - 11904: 0xE45B, + 36350 - 11904: 0xE461, + 36351 - 11904: 0xE459, + 36352 - 11904: 0xE462, + 36353 - 11904: 0x9FF3, + 36354 - 11904: 0xE458, + 36355 - 11904: 0xE45D, + 36356 - 11904: 0xE463, + 36357 - 11904: 0xE460, + 36358 - 11904: 0xE45F, + 36359 - 11904: 0xE45E, + 36361 - 11904: 0xE457, + 36362 - 11904: 0xE45C, + 36365 - 11904: 0xE45A, + 36366 - 11904: 0x9DBF, + 36367 - 11904: 0xBDF1, + 36368 - 11904: 0xBDEE, + 36369 - 11904: 0xE7FB, + 36370 - 11904: 0xE841, + 36371 - 11904: 0xE843, + 36372 - 11904: 0xE840, + 36373 - 11904: 0xE7F8, + 36374 - 11904: 0xE7FA, + 36375 - 11904: 0xE845, + 36376 - 11904: 0xE842, + 36377 - 11904: 0xE7FC, + 36378 - 11904: 0xE846, + 36379 - 11904: 0xE7F9, + 36380 - 11904: 0xE844, + 36381 - 11904: 0xBDEF, + 36382 - 11904: 0xBDF5, + 36383 - 11904: 0xBDF3, + 36384 - 11904: 0xE7F3, + 36385 - 11904: 0xBDF4, + 36386 - 11904: 0xBDF0, + 36387 - 11904: 0xE7F4, + 36388 - 11904: 0xE7F6, + 36389 - 11904: 0xE7F5, + 36390 - 11904: 0xE7FD, + 36391 - 11904: 0xE7FE, + 36392 - 11904: 0x9FF6, + 36393 - 11904: 0xBDF2, + 36394 - 11904: 0x95C8, + 36395 - 11904: 0xBDED, + 36397 - 11904: 0x9E5A, + 36398 - 11904: 0xE7F7, + 36400 - 11904: 0xEBC6, + 36401 - 11904: 0xBFE2, + 36403 - 11904: 0xEBBD, + 36404 - 11904: 0xBFE3, + 36405 - 11904: 0xBFE6, + 36406 - 11904: 0xEBC2, + 36408 - 11904: 0xEBBF, + 36409 - 11904: 0xBFE5, + 36410 - 11904: 0x99E3, + 36412 - 11904: 0xEBC3, + 36413 - 11904: 0xEBC4, + 36414 - 11904: 0xEBBE, + 36415 - 11904: 0xEBC7, + 36416 - 11904: 0xEBC0, + 36417 - 11904: 0xEBC5, + 36418 - 11904: 0xBFE4, + 36420 - 11904: 0xBFE1, + 36421 - 11904: 0xEBC1, + 36422 - 11904: 0x8A4A, + 36423 - 11904: 0xEEBF, + 36424 - 11904: 0xC1D0, + 36425 - 11904: 0xC1CE, + 36426 - 11904: 0xC1D1, + 36427 - 11904: 0xC1CF, + 36428 - 11904: 0xEEBE, + 36429 - 11904: 0xEEBB, + 36430 - 11904: 0xEEBA, + 36431 - 11904: 0x9FF1, + 36432 - 11904: 0xEEBD, + 36435 - 11904: 0xEEBC, + 36436 - 11904: 0xF145, + 36437 - 11904: 0xC2DE, + 36438 - 11904: 0xF0FB, + 36439 - 11904: 0xF0FA, + 36441 - 11904: 0xC2D9, + 36442 - 11904: 0xF141, + 36443 - 11904: 0xF140, + 36444 - 11904: 0xF0F7, + 36445 - 11904: 0xF143, + 36446 - 11904: 0xF0FC, + 36447 - 11904: 0xC2DD, + 36448 - 11904: 0xF0F9, + 36449 - 11904: 0xF142, + 36450 - 11904: 0xF0F8, + 36451 - 11904: 0xC2DA, + 36452 - 11904: 0xC2DC, + 36453 - 11904: 0xF0FD, + 36454 - 11904: 0xC2DB, + 36455 - 11904: 0xF0FE, + 36456 - 11904: 0x8AA7, + 36457 - 11904: 0xF144, + 36458 - 11904: 0xF352, + 36460 - 11904: 0xC3DE, + 36461 - 11904: 0xF34F, + 36463 - 11904: 0xF353, + 36465 - 11904: 0x99E6, + 36466 - 11904: 0xC3DB, + 36467 - 11904: 0xF351, + 36468 - 11904: 0xC3E0, + 36469 - 11904: 0x9FF7, + 36470 - 11904: 0xC3DD, + 36471 - 11904: 0x9FED, + 36472 - 11904: 0xF350, + 36474 - 11904: 0xC3DF, + 36475 - 11904: 0xF354, + 36476 - 11904: 0xC3DA, + 36478 - 11904: 0x8A5C, + 36480 - 11904: 0x9DAE, + 36481 - 11904: 0xC4BC, + 36482 - 11904: 0xC4BE, + 36484 - 11904: 0xF4D9, + 36485 - 11904: 0xC4BD, + 36486 - 11904: 0xF4D7, + 36487 - 11904: 0xC3DC, + 36488 - 11904: 0xF4D8, + 36489 - 11904: 0xC4BB, + 36490 - 11904: 0xC543, + 36491 - 11904: 0xC545, + 36492 - 11904: 0xF656, + 36493 - 11904: 0xC544, + 36494 - 11904: 0xF655, + 36496 - 11904: 0xF761, + 36497 - 11904: 0xC5AD, + 36498 - 11904: 0xF760, + 36499 - 11904: 0xC5AE, + 36500 - 11904: 0xF75E, + 36501 - 11904: 0xF75D, + 36502 - 11904: 0xF762, + 36503 - 11904: 0xF763, + 36504 - 11904: 0xF846, + 36506 - 11904: 0xF75F, + 36509 - 11904: 0xF8C6, + 36510 - 11904: 0xF8C3, + 36511 - 11904: 0xF8C4, + 36512 - 11904: 0xF8C5, + 36513 - 11904: 0xC65C, + 36515 - 11904: 0xF951, + 36516 - 11904: 0xF950, + 36517 - 11904: 0xF94F, + 36518 - 11904: 0xF970, + 36519 - 11904: 0x95C9, + 36520 - 11904: 0xF9BE, + 36521 - 11904: 0xF9AB, + 36522 - 11904: 0xC66E, + 36523 - 11904: 0xA8AD, + 36524 - 11904: 0xB060, + 36525 - 11904: 0x9048, + 36528 - 11904: 0x99E8, + 36530 - 11904: 0xB8FA, + 36534 - 11904: 0x9049, + 36537 - 11904: 0x8CBA, + 36538 - 11904: 0xBDF6, + 36540 - 11904: 0x90B1, + 36541 - 11904: 0xEBC8, + 36544 - 11904: 0xC2DF, + 36546 - 11904: 0xF355, + 36547 - 11904: 0x904A, + 36553 - 11904: 0xF9AC, + 36554 - 11904: 0xA8AE, + 36555 - 11904: 0xAAEE, + 36556 - 11904: 0xAD79, + 36557 - 11904: 0xAD78, + 36558 - 11904: 0x99EA, + 36559 - 11904: 0xB063, + 36561 - 11904: 0xD3E8, + 36562 - 11904: 0xB061, + 36563 - 11904: 0xD3E9, + 36564 - 11904: 0xB062, + 36567 - 11904: 0xD7DF, + 36568 - 11904: 0xD7DB, + 36570 - 11904: 0x9BD1, + 36571 - 11904: 0xB36D, + 36572 - 11904: 0xD7DE, + 36573 - 11904: 0xD7DD, + 36574 - 11904: 0xD7DC, + 36575 - 11904: 0xB36E, + 36576 - 11904: 0xD7E0, + 36577 - 11904: 0xD7E1, + 36578 - 11904: 0x99EB, + 36580 - 11904: 0x99EC, + 36581 - 11904: 0xDC43, + 36582 - 11904: 0xDC41, + 36583 - 11904: 0xDC45, + 36584 - 11904: 0xDC46, + 36585 - 11904: 0xDC4C, + 36587 - 11904: 0xDC48, + 36588 - 11904: 0xDC4A, + 36589 - 11904: 0x99ED, + 36590 - 11904: 0xDC42, + 36591 - 11904: 0xDBFC, + 36593 - 11904: 0xDC49, + 36594 - 11904: 0x99EE, + 36596 - 11904: 0xDC4B, + 36597 - 11904: 0xDC44, + 36598 - 11904: 0xDC47, + 36599 - 11904: 0xDBFD, + 36600 - 11904: 0xB662, + 36601 - 11904: 0xDC40, + 36602 - 11904: 0xDBFE, + 36603 - 11904: 0xB661, + 36604 - 11904: 0xB663, + 36606 - 11904: 0xB8FD, + 36607 - 11904: 0xE075, + 36608 - 11904: 0xE077, + 36609 - 11904: 0xE076, + 36610 - 11904: 0xE07B, + 36611 - 11904: 0xB8FB, + 36613 - 11904: 0xE078, + 36614 - 11904: 0xE074, + 36615 - 11904: 0xE079, + 36616 - 11904: 0xE07A, + 36617 - 11904: 0xB8FC, + 36618 - 11904: 0xB8FE, + 36619 - 11904: 0xE07C, + 36621 - 11904: 0xE467, + 36622 - 11904: 0xE466, + 36624 - 11904: 0xE464, + 36625 - 11904: 0xE465, + 36626 - 11904: 0xBBB3, + 36627 - 11904: 0xBBB5, + 36628 - 11904: 0xBBB2, + 36629 - 11904: 0xBBB4, + 36630 - 11904: 0xE84D, + 36631 - 11904: 0xE84E, + 36632 - 11904: 0xE849, + 36633 - 11904: 0x904C, + 36634 - 11904: 0xE84A, + 36635 - 11904: 0xBDF8, + 36636 - 11904: 0xBDFD, + 36637 - 11904: 0xBDF7, + 36638 - 11904: 0xBDFE, + 36639 - 11904: 0xBDF9, + 36640 - 11904: 0xE84B, + 36643 - 11904: 0xE84C, + 36644 - 11904: 0xE848, + 36645 - 11904: 0xBE40, + 36646 - 11904: 0xBDFB, + 36649 - 11904: 0xBDFA, + 36650 - 11904: 0xBDFC, + 36652 - 11904: 0xE847, + 36653 - 11904: 0x904D, + 36654 - 11904: 0xEBCA, + 36655 - 11904: 0xBFE8, + 36656 - 11904: 0x95CB, + 36658 - 11904: 0xEBCC, + 36659 - 11904: 0xBFEA, + 36660 - 11904: 0xEBCF, + 36661 - 11904: 0xEBCB, + 36662 - 11904: 0xEBC9, + 36663 - 11904: 0xEBCE, + 36664 - 11904: 0xBFE9, + 36665 - 11904: 0xEBCD, + 36667 - 11904: 0xBFE7, + 36670 - 11904: 0xC1D3, + 36671 - 11904: 0xC1D6, + 36672 - 11904: 0xEEC1, + 36673 - 11904: 0x97E2, + 36674 - 11904: 0xC1D4, + 36675 - 11904: 0xEEC0, + 36676 - 11904: 0xC1D2, + 36677 - 11904: 0xC1D5, + 36678 - 11904: 0xF146, + 36679 - 11904: 0xF147, + 36680 - 11904: 0xF148, + 36681 - 11904: 0xC2E0, + 36682 - 11904: 0x95CC, + 36683 - 11904: 0xF149, + 36685 - 11904: 0xC2E1, + 36686 - 11904: 0xC3E2, + 36687 - 11904: 0xF358, + 36688 - 11904: 0xF359, + 36689 - 11904: 0xF357, + 36690 - 11904: 0xF356, + 36691 - 11904: 0xF35A, + 36692 - 11904: 0xC3E1, + 36693 - 11904: 0xF4DD, + 36694 - 11904: 0xF4DB, + 36695 - 11904: 0xF4DC, + 36696 - 11904: 0xF4DE, + 36697 - 11904: 0xF4DA, + 36698 - 11904: 0xF4DF, + 36699 - 11904: 0xF658, + 36700 - 11904: 0x9F78, + 36701 - 11904: 0xF659, + 36702 - 11904: 0xF657, + 36703 - 11904: 0xC546, + 36704 - 11904: 0xF764, + 36705 - 11904: 0xC5AF, + 36706 - 11904: 0xF765, + 36707 - 11904: 0xF848, + 36708 - 11904: 0xF847, + 36710 - 11904: 0x897C, + 36711 - 11904: 0x897D, + 36718 - 11904: 0x897E, + 36755 - 11904: 0x995D, + 36763 - 11904: 0xA8AF, + 36764 - 11904: 0xB664, + 36767 - 11904: 0xB940, + 36768 - 11904: 0x9B5A, + 36771 - 11904: 0xBBB6, + 36773 - 11904: 0x9050, + 36774 - 11904: 0xBFEC, + 36775 - 11904: 0x8C4F, + 36776 - 11904: 0xBFEB, + 36781 - 11904: 0xC3E3, + 36782 - 11904: 0xC47C, + 36783 - 11904: 0xC547, + 36784 - 11904: 0xA8B0, + 36785 - 11904: 0xB064, + 36786 - 11904: 0xB941, + 36787 - 11904: 0x9054, + 36788 - 11904: 0xF35B, + 36789 - 11904: 0xC6D6, + 36790 - 11904: 0x9AA8, + 36791 - 11904: 0x99EF, + 36792 - 11904: 0xFEEB, + 36793 - 11904: 0x9DA3, + 36794 - 11904: 0x9DA1, + 36795 - 11904: 0x9943, + 36796 - 11904: 0x9945, + 36798 - 11904: 0x9D7D, + 36799 - 11904: 0xCBA6, + 36801 - 11904: 0x99F0, + 36802 - 11904: 0xA8B1, + 36804 - 11904: 0xA8B4, + 36805 - 11904: 0xA8B3, + 36806 - 11904: 0xA8B2, + 36809 - 11904: 0xCBA5, + 36810 - 11904: 0x99F1, + 36811 - 11904: 0xCDCD, + 36812 - 11904: 0x99F2, + 36813 - 11904: 0xCDCF, + 36814 - 11904: 0xAAEF, + 36815 - 11904: 0x8CBC, + 36816 - 11904: 0x9D60, + 36817 - 11904: 0xAAF1, + 36818 - 11904: 0xCDCC, + 36819 - 11904: 0xCDCE, + 36820 - 11904: 0xAAF0, + 36821 - 11904: 0xCDD1, + 36822 - 11904: 0xCDD0, + 36823 - 11904: 0xCDD2, + 36826 - 11904: 0xA0A3, + 36832 - 11904: 0xD0B6, + 36833 - 11904: 0xD0B4, + 36834 - 11904: 0xAD7C, + 36835 - 11904: 0xD0B3, + 36836 - 11904: 0xADA3, + 36837 - 11904: 0xAD7E, + 36838 - 11904: 0xAD7B, + 36840 - 11904: 0xADA4, + 36842 - 11904: 0xAD7D, + 36843 - 11904: 0xADA2, + 36845 - 11904: 0xADA1, + 36846 - 11904: 0xD0B5, + 36848 - 11904: 0xAD7A, + 36852 - 11904: 0xB06A, + 36853 - 11904: 0xD3EB, + 36854 - 11904: 0xD3F1, + 36855 - 11904: 0xB067, + 36856 - 11904: 0xB06E, + 36857 - 11904: 0x905B, + 36858 - 11904: 0xB069, + 36859 - 11904: 0xD3EE, + 36860 - 11904: 0xD3F0, + 36861 - 11904: 0xB06C, + 36862 - 11904: 0xD3EA, + 36863 - 11904: 0xD3ED, + 36864 - 11904: 0xB068, + 36865 - 11904: 0xB065, + 36866 - 11904: 0xD3EC, + 36867 - 11904: 0xB06B, + 36868 - 11904: 0xD3EF, + 36869 - 11904: 0xB06D, + 36870 - 11904: 0xB066, + 36872 - 11904: 0x9EDB, + 36875 - 11904: 0xD7E3, + 36876 - 11904: 0xD7E6, + 36877 - 11904: 0xB370, + 36879 - 11904: 0xB37A, + 36880 - 11904: 0xB376, + 36881 - 11904: 0xD7E4, + 36882 - 11904: 0x9D79, + 36884 - 11904: 0xB37E, + 36885 - 11904: 0xB377, + 36886 - 11904: 0xB37C, + 36887 - 11904: 0xB372, + 36889 - 11904: 0xB36F, + 36890 - 11904: 0xB371, + 36891 - 11904: 0xB37D, + 36892 - 11904: 0xD7E5, + 36893 - 11904: 0xB375, + 36894 - 11904: 0xB378, + 36895 - 11904: 0xB374, + 36896 - 11904: 0xB379, + 36897 - 11904: 0xD7E7, + 36898 - 11904: 0xB37B, + 36899 - 11904: 0xB373, + 36900 - 11904: 0xD7E2, + 36909 - 11904: 0xDC4D, + 36910 - 11904: 0xB665, + 36911 - 11904: 0xDC4F, + 36913 - 11904: 0xB667, + 36914 - 11904: 0xB669, + 36915 - 11904: 0x99F3, + 36916 - 11904: 0xDC4E, + 36917 - 11904: 0xB666, + 36918 - 11904: 0xB66A, + 36919 - 11904: 0x9062, + 36920 - 11904: 0xB668, + 36924 - 11904: 0xB947, + 36925 - 11904: 0xE0A3, + 36926 - 11904: 0xB94F, + 36927 - 11904: 0xE07E, + 36929 - 11904: 0xB950, + 36930 - 11904: 0xB945, + 36932 - 11904: 0xE0A1, + 36934 - 11904: 0x87BD, + 36935 - 11904: 0xB94A, + 36937 - 11904: 0xE0A2, + 36938 - 11904: 0xB943, + 36939 - 11904: 0xB942, + 36940 - 11904: 0x9F55, + 36941 - 11904: 0xB94D, + 36942 - 11904: 0xB94C, + 36943 - 11904: 0xB94B, + 36944 - 11904: 0xB949, + 36945 - 11904: 0xB94E, + 36946 - 11904: 0xE07D, + 36947 - 11904: 0xB944, + 36948 - 11904: 0xB946, + 36949 - 11904: 0xB948, + 36950 - 11904: 0x9BF9, + 36952 - 11904: 0xBBB8, + 36953 - 11904: 0xBBBB, + 36955 - 11904: 0xBBBF, + 36956 - 11904: 0xBBB9, + 36957 - 11904: 0xBBBE, + 36958 - 11904: 0xBBBC, + 36960 - 11904: 0xBBB7, + 36961 - 11904: 0x9065, + 36962 - 11904: 0xBBBD, + 36963 - 11904: 0xBBBA, + 36964 - 11904: 0x96E0, + 36967 - 11904: 0xE852, + 36968 - 11904: 0xBE43, + 36969 - 11904: 0xBE41, + 36971 - 11904: 0xE853, + 36972 - 11904: 0x98BE, + 36973 - 11904: 0xBE44, + 36974 - 11904: 0xBE42, + 36975 - 11904: 0xE851, + 36976 - 11904: 0xE850, + 36978 - 11904: 0xBFF0, + 36979 - 11904: 0xE84F, + 36980 - 11904: 0xBFEE, + 36981 - 11904: 0xBFED, + 36982 - 11904: 0xEBD0, + 36983 - 11904: 0xBE45, + 36984 - 11904: 0xBFEF, + 36985 - 11904: 0xEBD1, + 36986 - 11904: 0xBFF2, + 36987 - 11904: 0xEBD2, + 36988 - 11904: 0xBFF1, + 36989 - 11904: 0xC1D8, + 36990 - 11904: 0xEEC3, + 36991 - 11904: 0xC1D7, + 36992 - 11904: 0xC1DC, + 36993 - 11904: 0xC1DA, + 36994 - 11904: 0xC1DB, + 36995 - 11904: 0xC2E3, + 36996 - 11904: 0xC1D9, + 36997 - 11904: 0xEEC2, + 36998 - 11904: 0xEBD3, + 36999 - 11904: 0xC2E2, + 37000 - 11904: 0xC2E4, + 37002 - 11904: 0xC3E4, + 37003 - 11904: 0xC3E5, + 37005 - 11904: 0xF4E0, + 37007 - 11904: 0xC5DE, + 37008 - 11904: 0xC5DD, + 37009 - 11904: 0xA8B6, + 37012 - 11904: 0xCA55, + 37013 - 11904: 0xB06F, + 37015 - 11904: 0xCA52, + 37016 - 11904: 0xCA53, + 37017 - 11904: 0xCA51, + 37019 - 11904: 0xCA54, + 37022 - 11904: 0xCBAA, + 37023 - 11904: 0xCBA7, + 37024 - 11904: 0xCBAC, + 37025 - 11904: 0xCBA8, + 37026 - 11904: 0xA8B7, + 37027 - 11904: 0xA8BA, + 37029 - 11904: 0xCBA9, + 37030 - 11904: 0xA8B9, + 37031 - 11904: 0xCBAB, + 37032 - 11904: 0x9068, + 37034 - 11904: 0xA8B8, + 37038 - 11904: 0x906C, + 37039 - 11904: 0xCDD5, + 37040 - 11904: 0xCDD7, + 37041 - 11904: 0xAAF4, + 37042 - 11904: 0xCDD3, + 37043 - 11904: 0xCDD6, + 37044 - 11904: 0xCDD4, + 37045 - 11904: 0xAAF2, + 37046 - 11904: 0xAAF5, + 37048 - 11904: 0xAAF3, + 37051 - 11904: 0x95D8, + 37053 - 11904: 0xD0B8, + 37054 - 11904: 0xD0BC, + 37055 - 11904: 0xD0B9, + 37057 - 11904: 0xADA7, + 37059 - 11904: 0xADA8, + 37060 - 11904: 0x906A, + 37061 - 11904: 0xD0BB, + 37063 - 11904: 0xD0BD, + 37064 - 11904: 0xD0BF, + 37066 - 11904: 0xADA5, + 37067 - 11904: 0xD0BE, + 37070 - 11904: 0xADA6, + 37076 - 11904: 0xD7EE, + 37077 - 11904: 0xD0BA, + 37078 - 11904: 0xD3F2, + 37079 - 11904: 0xD3FB, + 37080 - 11904: 0xD3F9, + 37081 - 11904: 0xD3F4, + 37082 - 11904: 0xD3F5, + 37083 - 11904: 0xD3FA, + 37084 - 11904: 0xD3FC, + 37085 - 11904: 0xB071, + 37087 - 11904: 0xD3F7, + 37088 - 11904: 0xD3F3, + 37089 - 11904: 0xB070, + 37090 - 11904: 0xB072, + 37091 - 11904: 0xD3F6, + 37092 - 11904: 0xD3FD, + 37093 - 11904: 0xD3F8, + 37096 - 11904: 0xB3A1, + 37097 - 11904: 0xD7F1, + 37098 - 11904: 0xD7E9, + 37099 - 11904: 0xD7EF, + 37100 - 11904: 0xD7F0, + 37101 - 11904: 0xB3A2, + 37103 - 11904: 0xD7E8, + 37104 - 11904: 0xD7EA, + 37105 - 11904: 0xD0B7, + 37106 - 11904: 0xD7EC, + 37107 - 11904: 0xD7ED, + 37108 - 11904: 0xD7EB, + 37109 - 11904: 0xB66C, + 37113 - 11904: 0xDC56, + 37114 - 11904: 0xEBD4, + 37115 - 11904: 0xDC57, + 37116 - 11904: 0xDC54, + 37117 - 11904: 0xB3A3, + 37118 - 11904: 0xB66E, + 37119 - 11904: 0xDC53, + 37120 - 11904: 0xDC59, + 37121 - 11904: 0xDC58, + 37122 - 11904: 0xB66B, + 37123 - 11904: 0xDC5C, + 37124 - 11904: 0xDC52, + 37125 - 11904: 0xDC5B, + 37126 - 11904: 0xDC50, + 37127 - 11904: 0xDC5A, + 37128 - 11904: 0xDC55, + 37129 - 11904: 0xB66D, + 37131 - 11904: 0xE0AA, + 37133 - 11904: 0xE0A5, + 37134 - 11904: 0xE0AB, + 37135 - 11904: 0xE0A6, + 37136 - 11904: 0xE0A4, + 37137 - 11904: 0xE0A7, + 37138 - 11904: 0xB951, + 37140 - 11904: 0xE0A9, + 37142 - 11904: 0xE0A8, + 37143 - 11904: 0xB952, + 37144 - 11904: 0xBBC1, + 37145 - 11904: 0xBBC0, + 37146 - 11904: 0xE46E, + 37147 - 11904: 0xE471, + 37148 - 11904: 0xE469, + 37149 - 11904: 0xE46D, + 37150 - 11904: 0xBBC2, + 37151 - 11904: 0xE46C, + 37152 - 11904: 0xE46A, + 37153 - 11904: 0xE470, + 37154 - 11904: 0xE46B, + 37155 - 11904: 0xE468, + 37156 - 11904: 0xE46F, + 37158 - 11904: 0xE859, + 37159 - 11904: 0xBE48, + 37160 - 11904: 0xF14A, + 37161 - 11904: 0xE856, + 37162 - 11904: 0xE857, + 37163 - 11904: 0xE855, + 37164 - 11904: 0xDC51, + 37165 - 11904: 0xBE47, + 37166 - 11904: 0xE85A, + 37167 - 11904: 0xE854, + 37168 - 11904: 0xBE46, + 37169 - 11904: 0xBE49, + 37170 - 11904: 0xE858, + 37171 - 11904: 0xEBD5, + 37172 - 11904: 0xBFF3, + 37173 - 11904: 0xEBD6, + 37174 - 11904: 0xEBD7, + 37176 - 11904: 0xEEC4, + 37177 - 11904: 0xC1DD, + 37178 - 11904: 0xF14B, + 37179 - 11904: 0xF14C, + 37182 - 11904: 0xF14D, + 37183 - 11904: 0xF35D, + 37184 - 11904: 0xF35C, + 37185 - 11904: 0xF4E2, + 37187 - 11904: 0xF4E1, + 37188 - 11904: 0xF65B, + 37189 - 11904: 0xF65C, + 37190 - 11904: 0xF65A, + 37191 - 11904: 0xF766, + 37192 - 11904: 0xC5B0, + 37193 - 11904: 0xA8BB, + 37194 - 11904: 0xADAA, + 37195 - 11904: 0xADA9, + 37196 - 11904: 0xB075, + 37197 - 11904: 0xB074, + 37198 - 11904: 0xD440, + 37199 - 11904: 0xD441, + 37200 - 11904: 0xD3FE, + 37201 - 11904: 0x9FB2, + 37202 - 11904: 0xB073, + 37203 - 11904: 0xD7F5, + 37205 - 11904: 0xD7F6, + 37206 - 11904: 0xD7F2, + 37207 - 11904: 0xB3A4, + 37208 - 11904: 0xD7F3, + 37209 - 11904: 0x9FAE, + 37210 - 11904: 0xD7F4, + 37212 - 11904: 0x9FB0, + 37214 - 11904: 0x89AD, + 37215 - 11904: 0xDC5F, + 37216 - 11904: 0xDC61, + 37217 - 11904: 0xDC5D, + 37218 - 11904: 0xDC60, + 37219 - 11904: 0xB66F, + 37220 - 11904: 0xDC5E, + 37221 - 11904: 0xB670, + 37223 - 11904: 0x906E, + 37224 - 11904: 0xDD73, + 37225 - 11904: 0xB955, + 37226 - 11904: 0xB954, + 37228 - 11904: 0xB953, + 37230 - 11904: 0xE0AC, + 37231 - 11904: 0xE0AD, + 37232 - 11904: 0x9E71, + 37234 - 11904: 0xE473, + 37235 - 11904: 0xE475, + 37236 - 11904: 0xBBC6, + 37237 - 11904: 0xBBC3, + 37238 - 11904: 0x9E4A, + 37239 - 11904: 0xBBC5, + 37240 - 11904: 0xBBC4, + 37241 - 11904: 0xE474, + 37242 - 11904: 0xE472, + 37244 - 11904: 0x9FDC, + 37248 - 11904: 0xE861, + 37249 - 11904: 0xE85E, + 37250 - 11904: 0xE85F, + 37251 - 11904: 0xBE4D, + 37252 - 11904: 0xE860, + 37253 - 11904: 0xE85B, + 37254 - 11904: 0xE85C, + 37255 - 11904: 0xBE4A, + 37257 - 11904: 0xBE4B, + 37258 - 11904: 0xE85D, + 37259 - 11904: 0xBE4C, + 37260 - 11904: 0x89AB, + 37261 - 11904: 0xEBDB, + 37262 - 11904: 0x9FB8, + 37263 - 11904: 0xEBDC, + 37264 - 11904: 0xEBD9, + 37265 - 11904: 0xEBDA, + 37266 - 11904: 0xBFF4, + 37267 - 11904: 0xEBD8, + 37273 - 11904: 0xEEC8, + 37274 - 11904: 0xEEC5, + 37275 - 11904: 0xEEC7, + 37276 - 11904: 0xC1E0, + 37277 - 11904: 0xEECB, + 37278 - 11904: 0xC1DF, + 37279 - 11904: 0xEEC9, + 37280 - 11904: 0xEECC, + 37281 - 11904: 0xEECA, + 37282 - 11904: 0xEEC6, + 37283 - 11904: 0xC1DE, + 37285 - 11904: 0xF14F, + 37287 - 11904: 0xF150, + 37288 - 11904: 0xF14E, + 37289 - 11904: 0x9070, + 37290 - 11904: 0xF152, + 37291 - 11904: 0xC2E5, + 37292 - 11904: 0xC2E6, + 37293 - 11904: 0xF35F, + 37294 - 11904: 0xC3E7, + 37295 - 11904: 0xF151, + 37296 - 11904: 0xF35E, + 37297 - 11904: 0xC3E6, + 37298 - 11904: 0xF4E5, + 37299 - 11904: 0xF4E6, + 37300 - 11904: 0xC4BF, + 37301 - 11904: 0xF4E4, + 37302 - 11904: 0x8B63, + 37303 - 11904: 0xF4E3, + 37305 - 11904: 0xF65D, + 37306 - 11904: 0xC548, + 37307 - 11904: 0x95DC, + 37308 - 11904: 0xF849, + 37309 - 11904: 0xF8C8, + 37310 - 11904: 0xF8C7, + 37312 - 11904: 0xC643, + 37313 - 11904: 0xC65D, + 37314 - 11904: 0xF8C9, + 37315 - 11904: 0xF971, + 37316 - 11904: 0x9071, + 37317 - 11904: 0xC66F, + 37318 - 11904: 0xA8BC, + 37319 - 11904: 0xAAF6, + 37321 - 11904: 0xB956, + 37323 - 11904: 0xC4C0, + 37324 - 11904: 0xA8BD, + 37325 - 11904: 0xADAB, + 37326 - 11904: 0xB3A5, + 37327 - 11904: 0xB671, + 37328 - 11904: 0xC2E7, + 37329 - 11904: 0xAAF7, + 37331 - 11904: 0xD0C1, + 37332 - 11904: 0xD0C0, + 37333 - 11904: 0xD442, + 37334 - 11904: 0xFC5E, + 37335 - 11904: 0xB078, + 37336 - 11904: 0xB076, + 37337 - 11904: 0xB07A, + 37338 - 11904: 0xD444, + 37340 - 11904: 0xB079, + 37341 - 11904: 0xB077, + 37343 - 11904: 0x8949, + 37346 - 11904: 0xD443, + 37347 - 11904: 0xB3A8, + 37348 - 11904: 0xD7FC, + 37349 - 11904: 0x965B, + 37350 - 11904: 0xB3A7, + 37351 - 11904: 0xB3A9, + 37352 - 11904: 0xD842, + 37353 - 11904: 0xB3AB, + 37354 - 11904: 0xD7FE, + 37355 - 11904: 0xD840, + 37356 - 11904: 0xD7F7, + 37357 - 11904: 0xB3AA, + 37358 - 11904: 0xD843, + 37361 - 11904: 0xD7F9, + 37363 - 11904: 0xD7FA, + 37364 - 11904: 0xD7F8, + 37365 - 11904: 0xB3A6, + 37366 - 11904: 0x8C50, + 37367 - 11904: 0xD841, + 37368 - 11904: 0xD7FB, + 37369 - 11904: 0xD7FD, + 37370 - 11904: 0x94A6, + 37373 - 11904: 0xDC6D, + 37374 - 11904: 0x8FD5, + 37375 - 11904: 0xDC6C, + 37376 - 11904: 0xDC6A, + 37377 - 11904: 0xDC62, + 37378 - 11904: 0xDC71, + 37379 - 11904: 0xDC65, + 37380 - 11904: 0xDC6F, + 37381 - 11904: 0xDC76, + 37382 - 11904: 0xDC6E, + 37383 - 11904: 0xB679, + 37384 - 11904: 0x9E73, + 37385 - 11904: 0xB675, + 37386 - 11904: 0xDC63, + 37388 - 11904: 0xDC69, + 37389 - 11904: 0xB677, + 37390 - 11904: 0x9075, + 37391 - 11904: 0xDC68, + 37392 - 11904: 0xB678, + 37393 - 11904: 0xB67A, + 37394 - 11904: 0xDC6B, + 37395 - 11904: 0x99F7, + 37396 - 11904: 0xB672, + 37397 - 11904: 0xB673, + 37398 - 11904: 0xDC77, + 37399 - 11904: 0xDC75, + 37400 - 11904: 0x87B2, + 37401 - 11904: 0xDC74, + 37402 - 11904: 0xDC66, + 37404 - 11904: 0xDC72, + 37406 - 11904: 0xB676, + 37409 - 11904: 0x8CBF, + 37411 - 11904: 0xB674, + 37412 - 11904: 0xDC73, + 37413 - 11904: 0xDC64, + 37414 - 11904: 0xDC67, + 37415 - 11904: 0xDC70, + 37416 - 11904: 0x99F9, + 37418 - 11904: 0x9663, + 37419 - 11904: 0x95B9, + 37421 - 11904: 0xE4BA, + 37422 - 11904: 0xE0B7, + 37424 - 11904: 0xE0B0, + 37425 - 11904: 0xE0C3, + 37426 - 11904: 0xE0CC, + 37427 - 11904: 0xE0B3, + 37428 - 11904: 0xB961, + 37429 - 11904: 0x94D4, + 37430 - 11904: 0xE0C0, + 37431 - 11904: 0xB957, + 37432 - 11904: 0xB959, + 37433 - 11904: 0xB965, + 37434 - 11904: 0xE0B1, + 37436 - 11904: 0xFCFA, + 37437 - 11904: 0xB95A, + 37438 - 11904: 0xB95C, + 37439 - 11904: 0xB966, + 37440 - 11904: 0xB95B, + 37441 - 11904: 0x9077, + 37444 - 11904: 0x90AB, + 37445 - 11904: 0xB964, + 37446 - 11904: 0xE0B9, + 37448 - 11904: 0xE0AE, + 37449 - 11904: 0xB962, + 37450 - 11904: 0xE0B8, + 37451 - 11904: 0xB95E, + 37452 - 11904: 0xE0CA, + 37453 - 11904: 0xB963, + 37454 - 11904: 0xE0C8, + 37455 - 11904: 0xE0BC, + 37456 - 11904: 0xE0C6, + 37457 - 11904: 0xB960, + 37458 - 11904: 0xE0AF, + 37459 - 11904: 0xE0C9, + 37460 - 11904: 0xE0C4, + 37461 - 11904: 0x9D4D, + 37462 - 11904: 0xE0CB, + 37463 - 11904: 0xB958, + 37464 - 11904: 0x99FA, + 37466 - 11904: 0xB967, + 37467 - 11904: 0xB95D, + 37469 - 11904: 0x92E3, + 37470 - 11904: 0xE0B5, + 37471 - 11904: 0x97BB, + 37472 - 11904: 0xE0BD, + 37473 - 11904: 0xE0C1, + 37474 - 11904: 0x9078, + 37475 - 11904: 0xE0C5, + 37476 - 11904: 0xB95F, + 37477 - 11904: 0xE0B4, + 37478 - 11904: 0xE0B2, + 37479 - 11904: 0xE0BE, + 37483 - 11904: 0x99FB, + 37484 - 11904: 0xE0BB, + 37485 - 11904: 0xE0BA, + 37486 - 11904: 0x97E0, + 37487 - 11904: 0xE0BF, + 37488 - 11904: 0xE0C2, + 37490 - 11904: 0xE0C7, + 37494 - 11904: 0xE478, + 37495 - 11904: 0x96DC, + 37496 - 11904: 0xBBC7, + 37497 - 11904: 0xE4A4, + 37498 - 11904: 0xE47A, + 37499 - 11904: 0xBBCC, + 37500 - 11904: 0xBBD0, + 37501 - 11904: 0xE4AD, + 37502 - 11904: 0xE4B5, + 37503 - 11904: 0xE4A6, + 37504 - 11904: 0xBBC8, + 37505 - 11904: 0x9CA8, + 37506 - 11904: 0xE4AA, + 37507 - 11904: 0xE0B6, + 37508 - 11904: 0x9772, + 37509 - 11904: 0xBBC9, + 37510 - 11904: 0xE4B1, + 37511 - 11904: 0xE4B6, + 37512 - 11904: 0xE4AE, + 37513 - 11904: 0x9440, + 37514 - 11904: 0xE4B0, + 37515 - 11904: 0xE4B9, + 37516 - 11904: 0xE4B2, + 37517 - 11904: 0xE47E, + 37518 - 11904: 0xE4A9, + 37519 - 11904: 0x92F2, + 37521 - 11904: 0xBBD1, + 37523 - 11904: 0xBBCD, + 37524 - 11904: 0xE47C, + 37525 - 11904: 0xE4AB, + 37526 - 11904: 0xBBCB, + 37527 - 11904: 0xE4A5, + 37528 - 11904: 0xBBCA, + 37529 - 11904: 0xE4B3, + 37530 - 11904: 0xE4A2, + 37531 - 11904: 0xE479, + 37532 - 11904: 0xBBCE, + 37533 - 11904: 0xE4B8, + 37536 - 11904: 0xE47B, + 37537 - 11904: 0xE4AF, + 37538 - 11904: 0xE4AC, + 37539 - 11904: 0xE4A7, + 37540 - 11904: 0xE477, + 37541 - 11904: 0xE476, + 37542 - 11904: 0xE4A1, + 37543 - 11904: 0xE4B4, + 37544 - 11904: 0xBBCF, + 37545 - 11904: 0xE4B7, + 37546 - 11904: 0xE47D, + 37547 - 11904: 0xE4A3, + 37548 - 11904: 0xBE52, + 37550 - 11904: 0x99FD, + 37553 - 11904: 0x99FC, + 37554 - 11904: 0xBE5A, + 37555 - 11904: 0xBE55, + 37556 - 11904: 0xE8A4, + 37557 - 11904: 0xE8A1, + 37558 - 11904: 0xE867, + 37559 - 11904: 0xBE50, + 37561 - 11904: 0xF9D7, + 37562 - 11904: 0x964A, + 37563 - 11904: 0xBE4F, + 37564 - 11904: 0xBE56, + 37566 - 11904: 0x96D8, + 37567 - 11904: 0x99FE, + 37568 - 11904: 0xE865, + 37569 - 11904: 0xBE54, + 37570 - 11904: 0xE871, + 37571 - 11904: 0xE863, + 37572 - 11904: 0xE864, + 37573 - 11904: 0xBE4E, + 37574 - 11904: 0xE8A3, + 37575 - 11904: 0xBE58, + 37576 - 11904: 0xE874, + 37577 - 11904: 0xE879, + 37578 - 11904: 0xE873, + 37579 - 11904: 0xEBEE, + 37580 - 11904: 0xE86F, + 37581 - 11904: 0xE877, + 37582 - 11904: 0xE875, + 37583 - 11904: 0xE868, + 37584 - 11904: 0xE862, + 37585 - 11904: 0xE87D, + 37586 - 11904: 0xBE57, + 37587 - 11904: 0xE87E, + 37588 - 11904: 0x904B, + 37589 - 11904: 0xE878, + 37591 - 11904: 0xE86D, + 37592 - 11904: 0xE86B, + 37593 - 11904: 0xE866, + 37595 - 11904: 0xFA41, + 37597 - 11904: 0xE86E, + 37598 - 11904: 0xE87B, + 37599 - 11904: 0xE86A, + 37600 - 11904: 0xE87A, + 37601 - 11904: 0xE8A2, + 37603 - 11904: 0x9A40, + 37604 - 11904: 0xBE53, + 37605 - 11904: 0x975B, + 37606 - 11904: 0xE876, + 37607 - 11904: 0xE87C, + 37608 - 11904: 0xE872, + 37609 - 11904: 0xE86C, + 37610 - 11904: 0xBE51, + 37611 - 11904: 0x9A41, + 37612 - 11904: 0x91DD, + 37614 - 11904: 0xE4A8, + 37615 - 11904: 0xE870, + 37616 - 11904: 0xBE59, + 37617 - 11904: 0xE869, + 37618 - 11904: 0x93FC, + 37619 - 11904: 0x9A42, + 37620 - 11904: 0x9A43, + 37622 - 11904: 0x9659, + 37623 - 11904: 0xEBF4, + 37624 - 11904: 0xBFF7, + 37625 - 11904: 0xEBF3, + 37626 - 11904: 0xEBF0, + 37627 - 11904: 0xEC44, + 37628 - 11904: 0xBFFB, + 37629 - 11904: 0x9A44, + 37630 - 11904: 0xEC41, + 37631 - 11904: 0xEBF8, + 37632 - 11904: 0xEC43, + 37633 - 11904: 0xEBE9, + 37634 - 11904: 0xEBF6, + 37635 - 11904: 0x9051, + 37636 - 11904: 0xBFFD, + 37638 - 11904: 0xEBE1, + 37639 - 11904: 0x94BF, + 37640 - 11904: 0xEBDF, + 37641 - 11904: 0xEC42, + 37643 - 11904: 0xEC40, + 37644 - 11904: 0xEBFE, + 37645 - 11904: 0xEBED, + 37646 - 11904: 0xEBEC, + 37647 - 11904: 0xEBE2, + 37648 - 11904: 0xC040, + 37650 - 11904: 0xEBE8, + 37651 - 11904: 0xEBF2, + 37652 - 11904: 0xEBFD, + 37653 - 11904: 0xC043, + 37654 - 11904: 0xEC45, + 37656 - 11904: 0xC1E8, + 37657 - 11904: 0xC045, + 37658 - 11904: 0xBFFE, + 37659 - 11904: 0xEBE6, + 37661 - 11904: 0xEBEF, + 37662 - 11904: 0xEBDE, + 37663 - 11904: 0xEBE0, + 37664 - 11904: 0xBFF5, + 37665 - 11904: 0xC042, + 37666 - 11904: 0xBFFA, + 37667 - 11904: 0xEBE7, + 37668 - 11904: 0xEBF7, + 37669 - 11904: 0xEBF1, + 37670 - 11904: 0xC041, + 37671 - 11904: 0xEBDD, + 37672 - 11904: 0xC1E3, + 37673 - 11904: 0xEBF9, + 37674 - 11904: 0xEBFC, + 37675 - 11904: 0xBFFC, + 37676 - 11904: 0x90A2, + 37677 - 11904: 0xEBEB, + 37678 - 11904: 0xC044, + 37679 - 11904: 0xBFF9, + 37680 - 11904: 0x9CAB, + 37681 - 11904: 0x9776, + 37683 - 11904: 0xBFF8, + 37684 - 11904: 0xEBF5, + 37685 - 11904: 0xEBFB, + 37686 - 11904: 0xBFF6, + 37688 - 11904: 0xEBE4, + 37689 - 11904: 0xEBFA, + 37692 - 11904: 0xEBE5, + 37696 - 11904: 0xFC55, + 37697 - 11904: 0xFE45, + 37698 - 11904: 0x94A8, + 37699 - 11904: 0x9A45, + 37700 - 11904: 0xFA4B, + 37701 - 11904: 0x9DE1, + 37702 - 11904: 0xEBEA, + 37703 - 11904: 0xEED2, + 37704 - 11904: 0x96D9, + 37705 - 11904: 0xEED7, + 37706 - 11904: 0xC1E5, + 37707 - 11904: 0xC1E7, + 37708 - 11904: 0xEEDD, + 37709 - 11904: 0xC1E1, + 37710 - 11904: 0xEEEC, + 37711 - 11904: 0xEEE3, + 37712 - 11904: 0xEED8, + 37713 - 11904: 0xEED9, + 37714 - 11904: 0xEEE2, + 37716 - 11904: 0xC1EE, + 37717 - 11904: 0xEEE1, + 37718 - 11904: 0xEED1, + 37719 - 11904: 0xEEE0, + 37720 - 11904: 0xEED4, + 37721 - 11904: 0xEEED, + 37722 - 11904: 0xC1ED, + 37723 - 11904: 0xC1EB, + 37724 - 11904: 0xEED5, + 37726 - 11904: 0xEEE8, + 37727 - 11904: 0x9774, + 37728 - 11904: 0xEEDA, + 37729 - 11904: 0xEEE7, + 37730 - 11904: 0xFDF5, + 37731 - 11904: 0xEEE9, + 37732 - 11904: 0xEED0, + 37733 - 11904: 0xC1E6, + 37734 - 11904: 0x92E5, + 37735 - 11904: 0xEEEA, + 37736 - 11904: 0x9645, + 37737 - 11904: 0x91DA, + 37738 - 11904: 0xEEDE, + 37739 - 11904: 0x90A3, + 37740 - 11904: 0xC1EA, + 37741 - 11904: 0xEEDB, + 37742 - 11904: 0xA05F, + 37744 - 11904: 0xC1EC, + 37745 - 11904: 0xEEE4, + 37747 - 11904: 0x90AF, + 37748 - 11904: 0x97BF, + 37749 - 11904: 0xC1E4, + 37750 - 11904: 0xEED6, + 37751 - 11904: 0xEEE5, + 37752 - 11904: 0x914C, + 37753 - 11904: 0xEEDF, + 37754 - 11904: 0xEBE3, + 37755 - 11904: 0xEEE6, + 37756 - 11904: 0xEED3, + 37757 - 11904: 0x967A, + 37758 - 11904: 0xC1E9, + 37760 - 11904: 0xEEEB, + 37761 - 11904: 0x91DE, + 37762 - 11904: 0xC1E2, + 37763 - 11904: 0xEECE, + 37764 - 11904: 0x9A46, + 37765 - 11904: 0xFEB0, + 37766 - 11904: 0x9779, + 37767 - 11904: 0x946C, + 37768 - 11904: 0xF160, + 37769 - 11904: 0xF159, + 37770 - 11904: 0xC2E9, + 37772 - 11904: 0xF154, + 37773 - 11904: 0xF163, + 37774 - 11904: 0xF15B, + 37775 - 11904: 0xEEDC, + 37776 - 11904: 0x9858, + 37777 - 11904: 0xF165, + 37778 - 11904: 0xF155, + 37780 - 11904: 0xC2E8, + 37781 - 11904: 0xF15F, + 37782 - 11904: 0xC2EA, + 37783 - 11904: 0xC2F2, + 37784 - 11904: 0xC2F0, + 37785 - 11904: 0xF161, + 37786 - 11904: 0xC2F1, + 37787 - 11904: 0xF157, + 37788 - 11904: 0x9266, + 37789 - 11904: 0xF158, + 37790 - 11904: 0xF15D, + 37791 - 11904: 0xF162, + 37792 - 11904: 0x93FB, + 37793 - 11904: 0xEECD, + 37794 - 11904: 0xC2EB, + 37795 - 11904: 0xF16A, + 37796 - 11904: 0xF167, + 37797 - 11904: 0xF16B, + 37798 - 11904: 0xF15E, + 37799 - 11904: 0xF15A, + 37800 - 11904: 0xF168, + 37801 - 11904: 0xF36A, + 37802 - 11904: 0xF15C, + 37804 - 11904: 0xC2EE, + 37805 - 11904: 0x9A47, + 37806 - 11904: 0xC2ED, + 37807 - 11904: 0xEECF, + 37808 - 11904: 0xC2EF, + 37809 - 11904: 0xF164, + 37810 - 11904: 0xF166, + 37811 - 11904: 0xC2EC, + 37812 - 11904: 0xF169, + 37813 - 11904: 0xF153, + 37815 - 11904: 0xF156, + 37816 - 11904: 0x9749, + 37819 - 11904: 0x9748, + 37821 - 11904: 0x934A, + 37823 - 11904: 0x9CE2, + 37824 - 11904: 0xF373, + 37826 - 11904: 0xF363, + 37827 - 11904: 0xC3EB, + 37828 - 11904: 0xF371, + 37830 - 11904: 0x9264, + 37831 - 11904: 0xF361, + 37832 - 11904: 0xC3EC, + 37834 - 11904: 0xF36C, + 37835 - 11904: 0x91DF, + 37836 - 11904: 0xF368, + 37837 - 11904: 0xC3F1, + 37838 - 11904: 0xF372, + 37839 - 11904: 0xF362, + 37840 - 11904: 0xF365, + 37841 - 11904: 0xC3E9, + 37842 - 11904: 0xF374, + 37843 - 11904: 0xFB79, + 37844 - 11904: 0xF36D, + 37845 - 11904: 0xF370, + 37846 - 11904: 0xC3EF, + 37847 - 11904: 0xC3F4, + 37848 - 11904: 0xC3F2, + 37849 - 11904: 0xF369, + 37850 - 11904: 0xF364, + 37851 - 11904: 0x96D7, + 37852 - 11904: 0xC3ED, + 37853 - 11904: 0xC3EE, + 37854 - 11904: 0xF360, + 37855 - 11904: 0xC3EA, + 37856 - 11904: 0x9343, + 37857 - 11904: 0xC3E8, + 37858 - 11904: 0xC3F0, + 37859 - 11904: 0xF36F, + 37860 - 11904: 0xC3F3, + 37862 - 11904: 0xF36B, + 37863 - 11904: 0xF375, + 37864 - 11904: 0xC3F5, + 37868 - 11904: 0xF367, + 37870 - 11904: 0xF36E, + 37872 - 11904: 0xFDCB, + 37873 - 11904: 0xFE7A, + 37875 - 11904: 0x91DB, + 37876 - 11904: 0x8C6A, + 37877 - 11904: 0xF4F3, + 37878 - 11904: 0xF542, + 37879 - 11904: 0xF4F5, + 37880 - 11904: 0xF4FC, + 37881 - 11904: 0xF366, + 37882 - 11904: 0xF4FA, + 37883 - 11904: 0xF4E9, + 37884 - 11904: 0xF540, + 37885 - 11904: 0xC4C3, + 37886 - 11904: 0xF4ED, + 37887 - 11904: 0xF4FE, + 37888 - 11904: 0xF4F4, + 37889 - 11904: 0x97AF, + 37891 - 11904: 0xC4C2, + 37892 - 11904: 0x95DD, + 37894 - 11904: 0xF544, + 37895 - 11904: 0xF4F6, + 37896 - 11904: 0x9348, + 37897 - 11904: 0xF4FB, + 37898 - 11904: 0xF4FD, + 37899 - 11904: 0xF4E7, + 37900 - 11904: 0xF541, + 37901 - 11904: 0xF4F2, + 37902 - 11904: 0xF4F7, + 37903 - 11904: 0xF4EB, + 37904 - 11904: 0xF4EF, + 37905 - 11904: 0xF543, + 37906 - 11904: 0xF4F9, + 37907 - 11904: 0xF4E8, + 37908 - 11904: 0xF4EC, + 37909 - 11904: 0xF4EE, + 37910 - 11904: 0xF4F8, + 37911 - 11904: 0x9A4B, + 37912 - 11904: 0xC4C1, + 37913 - 11904: 0xF4F1, + 37915 - 11904: 0xFC45, + 37917 - 11904: 0x9A4D, + 37920 - 11904: 0xF4EA, + 37924 - 11904: 0x91BC, + 37925 - 11904: 0x90E2, + 37926 - 11904: 0x90B4, + 37927 - 11904: 0x95E1, + 37928 - 11904: 0xF4F0, + 37929 - 11904: 0xF661, + 37930 - 11904: 0xF666, + 37931 - 11904: 0xC54F, + 37932 - 11904: 0xF668, + 37933 - 11904: 0x9A4E, + 37934 - 11904: 0xC549, + 37935 - 11904: 0x87AD, + 37936 - 11904: 0xF664, + 37937 - 11904: 0xF66A, + 37938 - 11904: 0xC54E, + 37939 - 11904: 0xC54A, + 37941 - 11904: 0xC54B, + 37942 - 11904: 0xF660, + 37943 - 11904: 0xF667, + 37944 - 11904: 0xC54D, + 37945 - 11904: 0xF665, + 37946 - 11904: 0xC54C, + 37947 - 11904: 0xF65F, + 37948 - 11904: 0xF663, + 37949 - 11904: 0xF662, + 37950 - 11904: 0x9A4F, + 37951 - 11904: 0xF65E, + 37952 - 11904: 0xF669, + 37954 - 11904: 0xFE40, + 37955 - 11904: 0xFE43, + 37956 - 11904: 0xC5B1, + 37957 - 11904: 0xF76D, + 37958 - 11904: 0xF770, + 37959 - 11904: 0xF76C, + 37960 - 11904: 0xF76E, + 37961 - 11904: 0xF76F, + 37962 - 11904: 0xF769, + 37963 - 11904: 0xF76A, + 37964 - 11904: 0xF767, + 37965 - 11904: 0x96DD, + 37967 - 11904: 0xF76B, + 37968 - 11904: 0xF768, + 37969 - 11904: 0xC5B2, + 37970 - 11904: 0xC5B3, + 37972 - 11904: 0x9A51, + 37973 - 11904: 0xF84B, + 37975 - 11904: 0xF84D, + 37976 - 11904: 0x96A7, + 37979 - 11904: 0x90B0, + 37981 - 11904: 0xF84C, + 37982 - 11904: 0xF84E, + 37984 - 11904: 0xC5E0, + 37986 - 11904: 0xF84A, + 37987 - 11904: 0xC5DF, + 37988 - 11904: 0xC5E1, + 37989 - 11904: 0x9C4E, + 37991 - 11904: 0x9443, + 37992 - 11904: 0xF8CB, + 37993 - 11904: 0xF8CC, + 37994 - 11904: 0xC644, + 37995 - 11904: 0xF8CA, + 37996 - 11904: 0x8EBA, + 37997 - 11904: 0xF953, + 37998 - 11904: 0xF952, + 37999 - 11904: 0xF954, + 38000 - 11904: 0xC65F, + 38001 - 11904: 0xF955, + 38002 - 11904: 0xC65E, + 38003 - 11904: 0xF956, + 38004 - 11904: 0xF972, + 38005 - 11904: 0xF975, + 38006 - 11904: 0xF974, + 38007 - 11904: 0xC668, + 38008 - 11904: 0xF973, + 38009 - 11904: 0x9A52, + 38011 - 11904: 0xFCC1, + 38012 - 11904: 0xC672, + 38013 - 11904: 0xC670, + 38014 - 11904: 0xC671, + 38015 - 11904: 0xC677, + 38016 - 11904: 0xF9C0, + 38017 - 11904: 0xF9C1, + 38018 - 11904: 0xF9BF, + 38019 - 11904: 0xF9C9, + 38021 - 11904: 0x8BE9, + 38047 - 11904: 0x9CAF, + 38050 - 11904: 0x8BFD, + 38081 - 11904: 0x9ABC, + 38083 - 11904: 0x9AB8, + 38108 - 11904: 0x9AAE, + 38134 - 11904: 0x9AA7, + 38189 - 11904: 0x9A53, + 38215 - 11904: 0x9D74, + 38263 - 11904: 0xAAF8, + 38264 - 11904: 0x8BEA, + 38266 - 11904: 0xD844, + 38267 - 11904: 0xDC78, + 38268 - 11904: 0xE8A5, + 38269 - 11904: 0xF376, + 38271 - 11904: 0x8BEB, + 38272 - 11904: 0xAAF9, + 38274 - 11904: 0xADAC, + 38275 - 11904: 0xB07B, + 38277 - 11904: 0x90B2, + 38278 - 11904: 0xD845, + 38280 - 11904: 0xD846, + 38281 - 11904: 0xB3AC, + 38283 - 11904: 0xB67D, + 38284 - 11904: 0xDC7A, + 38285 - 11904: 0xDC79, + 38286 - 11904: 0xB6A3, + 38287 - 11904: 0xB67C, + 38288 - 11904: 0xDC7B, + 38289 - 11904: 0xB67E, + 38290 - 11904: 0xB6A2, + 38291 - 11904: 0xB6A1, + 38292 - 11904: 0xB67B, + 38294 - 11904: 0x95E9, + 38295 - 11904: 0x95E8, + 38296 - 11904: 0xB968, + 38297 - 11904: 0x95E6, + 38299 - 11904: 0xE0D0, + 38300 - 11904: 0xE0CE, + 38302 - 11904: 0xE0CF, + 38303 - 11904: 0xE0CD, + 38304 - 11904: 0x90B5, + 38305 - 11904: 0xBBD2, + 38306 - 11904: 0x9A54, + 38307 - 11904: 0xBBD5, + 38308 - 11904: 0xBBD7, + 38309 - 11904: 0xBBD6, + 38310 - 11904: 0x90B3, + 38311 - 11904: 0x95E7, + 38312 - 11904: 0xBBD3, + 38313 - 11904: 0xBBD4, + 38314 - 11904: 0x8B50, + 38315 - 11904: 0xE8A7, + 38316 - 11904: 0xE8A6, + 38317 - 11904: 0xBE5B, + 38318 - 11904: 0xE8A8, + 38320 - 11904: 0xE8A9, + 38321 - 11904: 0xBE5C, + 38325 - 11904: 0xEC4D, + 38326 - 11904: 0xEC4B, + 38327 - 11904: 0xEEF3, + 38329 - 11904: 0xEC49, + 38330 - 11904: 0xEC4A, + 38331 - 11904: 0xC046, + 38332 - 11904: 0xEC46, + 38333 - 11904: 0xEC4E, + 38334 - 11904: 0xEC48, + 38335 - 11904: 0xEC4C, + 38336 - 11904: 0xEEEF, + 38339 - 11904: 0xEEF1, + 38341 - 11904: 0xEEF2, + 38342 - 11904: 0xC1F3, + 38343 - 11904: 0xEEEE, + 38344 - 11904: 0xC1F2, + 38345 - 11904: 0xEEF0, + 38346 - 11904: 0xC1EF, + 38347 - 11904: 0xC1F0, + 38348 - 11904: 0xC1F1, + 38349 - 11904: 0xEC47, + 38352 - 11904: 0xC2F5, + 38353 - 11904: 0xF16E, + 38354 - 11904: 0xF16C, + 38355 - 11904: 0xF16D, + 38356 - 11904: 0xC2F3, + 38357 - 11904: 0xC2F6, + 38358 - 11904: 0xC2F4, + 38362 - 11904: 0xF377, + 38363 - 11904: 0xF378, + 38364 - 11904: 0xC3F6, + 38366 - 11904: 0xF545, + 38367 - 11904: 0xF547, + 38368 - 11904: 0xF546, + 38369 - 11904: 0xC4C4, + 38370 - 11904: 0xC550, + 38371 - 11904: 0xF66D, + 38372 - 11904: 0xF66C, + 38373 - 11904: 0xF66B, + 38376 - 11904: 0x8BEC, + 38388 - 11904: 0x9A56, + 38428 - 11904: 0xAAFA, + 38429 - 11904: 0x8BFB, + 38430 - 11904: 0xC9AA, + 38432 - 11904: 0xCA58, + 38433 - 11904: 0xA6E9, + 38434 - 11904: 0xCA56, + 38435 - 11904: 0xCA59, + 38436 - 11904: 0xCA57, + 38440 - 11904: 0xCBAE, + 38442 - 11904: 0xA8C1, + 38444 - 11904: 0xA8C2, + 38445 - 11904: 0xCBB0, + 38446 - 11904: 0xA8BF, + 38447 - 11904: 0xCBAF, + 38448 - 11904: 0xCBAD, + 38449 - 11904: 0xA8C0, + 38450 - 11904: 0xA8BE, + 38451 - 11904: 0x9A57, + 38456 - 11904: 0xA0AA, + 38457 - 11904: 0xCDD8, + 38458 - 11904: 0xCDDB, + 38459 - 11904: 0xAAFD, + 38460 - 11904: 0xCDDA, + 38461 - 11904: 0xCDD9, + 38463 - 11904: 0xAAFC, + 38464 - 11904: 0xAAFB, + 38465 - 11904: 0x9FA6, + 38466 - 11904: 0xAB40, + 38467 - 11904: 0xCDDC, + 38468 - 11904: 0xAAFE, + 38469 - 11904: 0x99CC, + 38474 - 11904: 0xD0C6, + 38475 - 11904: 0xADAE, + 38476 - 11904: 0xADAF, + 38477 - 11904: 0xADB0, + 38478 - 11904: 0xD0C7, + 38479 - 11904: 0xD0C3, + 38480 - 11904: 0xADAD, + 38481 - 11904: 0xD0C4, + 38483 - 11904: 0xD0C5, + 38484 - 11904: 0xD0C2, + 38486 - 11904: 0x9C59, + 38488 - 11904: 0xB0A4, + 38491 - 11904: 0xB0A1, + 38492 - 11904: 0xD445, + 38493 - 11904: 0xB0A2, + 38494 - 11904: 0xB0A5, + 38495 - 11904: 0xD446, + 38497 - 11904: 0xB07E, + 38498 - 11904: 0xB07C, + 38499 - 11904: 0xB07D, + 38500 - 11904: 0xB0A3, + 38505 - 11904: 0x99B5, + 38506 - 11904: 0xB3AD, + 38507 - 11904: 0xD849, + 38508 - 11904: 0xB3B5, + 38509 - 11904: 0xD848, + 38511 - 11904: 0xD84B, + 38512 - 11904: 0xB3B1, + 38513 - 11904: 0xD84A, + 38514 - 11904: 0xB6AB, + 38515 - 11904: 0xB3AF, + 38516 - 11904: 0xB3B2, + 38517 - 11904: 0xB3AE, + 38518 - 11904: 0xB3B3, + 38519 - 11904: 0xB3B4, + 38520 - 11904: 0xB3B0, + 38523 - 11904: 0x90BE, + 38524 - 11904: 0xD847, + 38525 - 11904: 0xB6A7, + 38526 - 11904: 0xDC7D, + 38528 - 11904: 0xDCA3, + 38529 - 11904: 0x9FAF, + 38531 - 11904: 0xDCA2, + 38532 - 11904: 0xB6AC, + 38533 - 11904: 0xB6A8, + 38534 - 11904: 0xB6A9, + 38535 - 11904: 0xDC7C, + 38536 - 11904: 0xDC7E, + 38537 - 11904: 0xDCA1, + 38538 - 11904: 0xB6A4, + 38539 - 11904: 0xB6A6, + 38541 - 11904: 0xB6AA, + 38542 - 11904: 0xB6A5, + 38543 - 11904: 0x95F2, + 38545 - 11904: 0xE0D3, + 38546 - 11904: 0xE0D1, + 38547 - 11904: 0xE0D2, + 38548 - 11904: 0xB96A, + 38549 - 11904: 0xB96B, + 38550 - 11904: 0x90BF, + 38551 - 11904: 0xE0D4, + 38552 - 11904: 0xB969, + 38553 - 11904: 0xBBD8, + 38555 - 11904: 0xBBDA, + 38556 - 11904: 0xBBD9, + 38558 - 11904: 0xE4BB, + 38561 - 11904: 0xE4BC, + 38562 - 11904: 0xE8AB, + 38563 - 11904: 0x90C1, + 38564 - 11904: 0xE8AA, + 38565 - 11904: 0xFEE4, + 38567 - 11904: 0xC047, + 38568 - 11904: 0xC048, + 38569 - 11904: 0xEC4F, + 38570 - 11904: 0xC049, + 38572 - 11904: 0xEEF6, + 38574 - 11904: 0xEEF4, + 38576 - 11904: 0xEEF5, + 38577 - 11904: 0xC1F4, + 38579 - 11904: 0xF16F, + 38580 - 11904: 0xC3F7, + 38582 - 11904: 0xC6D7, + 38584 - 11904: 0xC1F5, + 38585 - 11904: 0xAB41, + 38587 - 11904: 0xB0A6, + 38588 - 11904: 0xD447, + 38589 - 11904: 0x90C7, + 38591 - 11904: 0xD84C, + 38592 - 11904: 0xB3B6, + 38593 - 11904: 0xB6AD, + 38594 - 11904: 0xDCA4, + 38595 - 11904: 0xDCA6, + 38596 - 11904: 0xB6AF, + 38597 - 11904: 0xB6AE, + 38598 - 11904: 0xB6B0, + 38599 - 11904: 0xB6B1, + 38600 - 11904: 0xDCA5, + 38601 - 11904: 0xB96E, + 38602 - 11904: 0xB96F, + 38603 - 11904: 0xB96D, + 38604 - 11904: 0xBBDB, + 38605 - 11904: 0xB96C, + 38606 - 11904: 0xE0D5, + 38610 - 11904: 0xBBDC, + 38611 - 11904: 0xE8AC, + 38612 - 11904: 0xEC50, + 38613 - 11904: 0xC04A, + 38614 - 11904: 0xC1F6, + 38615 - 11904: 0xF170, + 38616 - 11904: 0xF174, + 38617 - 11904: 0xC2F9, + 38618 - 11904: 0xF171, + 38619 - 11904: 0xC2FA, + 38620 - 11904: 0xC2F8, + 38621 - 11904: 0xF175, + 38622 - 11904: 0xC2FB, + 38623 - 11904: 0xF173, + 38625 - 11904: 0xF379, + 38626 - 11904: 0xC2F7, + 38627 - 11904: 0xC3F8, + 38629 - 11904: 0xF8CD, + 38632 - 11904: 0xAB42, + 38633 - 11904: 0xB3B8, + 38634 - 11904: 0xB3B7, + 38639 - 11904: 0xB6B2, + 38640 - 11904: 0xDCA8, + 38641 - 11904: 0xDCA7, + 38642 - 11904: 0xB6B3, + 38644 - 11904: 0x92E4, + 38645 - 11904: 0xE0D9, + 38646 - 11904: 0xB973, + 38647 - 11904: 0xB970, + 38648 - 11904: 0xE0D8, + 38649 - 11904: 0xB972, + 38650 - 11904: 0xE0D6, + 38651 - 11904: 0xB971, + 38653 - 11904: 0xE0D7, + 38655 - 11904: 0xE4BD, + 38656 - 11904: 0xBBDD, + 38658 - 11904: 0xE8AF, + 38659 - 11904: 0x9F52, + 38660 - 11904: 0xBE5D, + 38661 - 11904: 0xE8AD, + 38662 - 11904: 0xBE5E, + 38663 - 11904: 0xBE5F, + 38664 - 11904: 0xE8AE, + 38665 - 11904: 0xBE60, + 38667 - 11904: 0xEC51, + 38669 - 11904: 0xC04E, + 38670 - 11904: 0xC04B, + 38671 - 11904: 0xC050, + 38672 - 11904: 0xEC53, + 38673 - 11904: 0xC04C, + 38674 - 11904: 0xEC52, + 38675 - 11904: 0xC04F, + 38678 - 11904: 0xC04D, + 38680 - 11904: 0xEEF9, + 38681 - 11904: 0xEEFB, + 38683 - 11904: 0x90DB, + 38684 - 11904: 0xC1F7, + 38685 - 11904: 0xEEFA, + 38686 - 11904: 0xC1F8, + 38687 - 11904: 0xEEF8, + 38688 - 11904: 0xEEF7, + 38689 - 11904: 0xA066, + 38690 - 11904: 0xF177, + 38691 - 11904: 0xF176, + 38692 - 11904: 0xC2FC, + 38693 - 11904: 0xF178, + 38694 - 11904: 0xF37E, + 38695 - 11904: 0xC3FA, + 38696 - 11904: 0xF37D, + 38697 - 11904: 0xF37A, + 38698 - 11904: 0xC3F9, + 38699 - 11904: 0xF37B, + 38700 - 11904: 0xF37C, + 38702 - 11904: 0xF548, + 38703 - 11904: 0xF549, + 38704 - 11904: 0xC4C5, + 38705 - 11904: 0x90D2, + 38706 - 11904: 0xC553, + 38708 - 11904: 0x876B, + 38709 - 11904: 0xF66E, + 38710 - 11904: 0x90D4, + 38712 - 11904: 0xC551, + 38713 - 11904: 0xC552, + 38714 - 11904: 0xF66F, + 38717 - 11904: 0xC5B4, + 38718 - 11904: 0xC5B5, + 38719 - 11904: 0xF771, + 38720 - 11904: 0x9A5B, + 38721 - 11904: 0x95FD, + 38722 - 11904: 0xC645, + 38723 - 11904: 0xF8CF, + 38724 - 11904: 0xC647, + 38726 - 11904: 0xF8CE, + 38727 - 11904: 0xF8D0, + 38728 - 11904: 0xC646, + 38729 - 11904: 0xF957, + 38730 - 11904: 0x87B1, + 38731 - 11904: 0xF9AD, + 38737 - 11904: 0x8BC4, + 38738 - 11904: 0xAB43, + 38741 - 11904: 0x8C66, + 38742 - 11904: 0xB974, + 38743 - 11904: 0x90DE, + 38744 - 11904: 0xE4BE, + 38746 - 11904: 0xE8B0, + 38747 - 11904: 0xC051, + 38748 - 11904: 0xC052, + 38749 - 11904: 0x9CE4, + 38750 - 11904: 0xAB44, + 38751 - 11904: 0x90E1, + 38752 - 11904: 0xBE61, + 38753 - 11904: 0xC3FB, + 38754 - 11904: 0xADB1, + 38758 - 11904: 0xC053, + 38760 - 11904: 0xC5E2, + 38761 - 11904: 0xADB2, + 38762 - 11904: 0xD84D, + 38764 - 11904: 0xDCA9, + 38765 - 11904: 0x9E46, + 38766 - 11904: 0xDCAB, + 38768 - 11904: 0xDCAA, + 38769 - 11904: 0x9651, + 38770 - 11904: 0xE0DD, + 38771 - 11904: 0xE0DA, + 38772 - 11904: 0xB975, + 38774 - 11904: 0xB976, + 38775 - 11904: 0xE0DB, + 38776 - 11904: 0xE0DC, + 38778 - 11904: 0xE4C0, + 38779 - 11904: 0xE4C5, + 38780 - 11904: 0xBBDE, + 38781 - 11904: 0xE4BF, + 38782 - 11904: 0xE4C1, + 38783 - 11904: 0xE4C8, + 38784 - 11904: 0xE4C3, + 38785 - 11904: 0xE4C7, + 38786 - 11904: 0xE4C4, + 38787 - 11904: 0xE4C2, + 38788 - 11904: 0xE4C6, + 38789 - 11904: 0xBBDF, + 38791 - 11904: 0xFB58, + 38792 - 11904: 0xE8B3, + 38793 - 11904: 0x90E6, + 38794 - 11904: 0xE8B1, + 38795 - 11904: 0xBE63, + 38797 - 11904: 0xBE62, + 38798 - 11904: 0xE8B2, + 38799 - 11904: 0xBE64, + 38804 - 11904: 0xEC56, + 38807 - 11904: 0xEC55, + 38808 - 11904: 0xC054, + 38809 - 11904: 0xEC54, + 38810 - 11904: 0xEEFC, + 38811 - 11904: 0x9650, + 38812 - 11904: 0xEEFE, + 38813 - 11904: 0xEF41, + 38814 - 11904: 0xEF40, + 38815 - 11904: 0x90E7, + 38816 - 11904: 0xC1F9, + 38817 - 11904: 0xEEFD, + 38818 - 11904: 0xF1A1, + 38819 - 11904: 0xC2FD, + 38820 - 11904: 0xF17D, + 38821 - 11904: 0xF1A2, + 38822 - 11904: 0xC2FE, + 38824 - 11904: 0xF17B, + 38826 - 11904: 0xF17E, + 38827 - 11904: 0xF17C, + 38828 - 11904: 0xF179, + 38829 - 11904: 0xC340, + 38830 - 11904: 0xF17A, + 38833 - 11904: 0x90E8, + 38834 - 11904: 0x9A5D, + 38835 - 11904: 0xF3A1, + 38836 - 11904: 0x9F7A, + 38838 - 11904: 0xF3A3, + 38839 - 11904: 0xF3A2, + 38840 - 11904: 0x9B5C, + 38841 - 11904: 0xF54A, + 38842 - 11904: 0x9F7C, + 38843 - 11904: 0xF54B, + 38845 - 11904: 0xFC52, + 38846 - 11904: 0x90E9, + 38847 - 11904: 0xF670, + 38848 - 11904: 0x90EA, + 38849 - 11904: 0xC5B7, + 38850 - 11904: 0x9A5E, + 38851 - 11904: 0xC5B6, + 38852 - 11904: 0xF84F, + 38853 - 11904: 0xF850, + 38854 - 11904: 0xC648, + 38855 - 11904: 0xF8D1, + 38856 - 11904: 0x9F76, + 38857 - 11904: 0xC669, + 38859 - 11904: 0xADB3, + 38860 - 11904: 0xB6B4, + 38861 - 11904: 0xE4CA, + 38862 - 11904: 0xE4C9, + 38863 - 11904: 0xE8B5, + 38864 - 11904: 0xE8B4, + 38866 - 11904: 0x90EB, + 38867 - 11904: 0xC1FA, + 38868 - 11904: 0xEF43, + 38869 - 11904: 0xEF42, + 38870 - 11904: 0xF1A5, + 38871 - 11904: 0xF1A3, + 38872 - 11904: 0xF1A6, + 38873 - 11904: 0xF1A4, + 38876 - 11904: 0xC3FC, + 38877 - 11904: 0xF3A4, + 38878 - 11904: 0xF3A5, + 38879 - 11904: 0xF3A6, + 38880 - 11904: 0x90EC, + 38881 - 11904: 0xF671, + 38883 - 11904: 0xF772, + 38885 - 11904: 0xF8D2, + 38886 - 11904: 0x8BEE, + 38893 - 11904: 0xADB4, + 38894 - 11904: 0x90EE, + 38896 - 11904: 0xEC57, + 38897 - 11904: 0xEF44, + 38898 - 11904: 0x91C6, + 38899 - 11904: 0xADB5, + 38901 - 11904: 0x90F2, + 38902 - 11904: 0xBBE0, + 38904 - 11904: 0xEC58, + 38905 - 11904: 0xC341, + 38906 - 11904: 0xF1A7, + 38907 - 11904: 0xC3FD, + 38909 - 11904: 0xF54C, + 38910 - 11904: 0xF54D, + 38911 - 11904: 0xC554, + 38912 - 11904: 0xF851, + 38913 - 11904: 0xADB6, + 38914 - 11904: 0xB3BB, + 38915 - 11904: 0xB3BC, + 38916 - 11904: 0xD84E, + 38917 - 11904: 0xB6B5, + 38918 - 11904: 0xB6B6, + 38919 - 11904: 0xDCAC, + 38920 - 11904: 0xB6B7, + 38922 - 11904: 0xB97A, + 38924 - 11904: 0xB97C, + 38925 - 11904: 0xE0DF, + 38926 - 11904: 0xE0E0, + 38927 - 11904: 0xE0DE, + 38928 - 11904: 0xB977, + 38929 - 11904: 0xB978, + 38930 - 11904: 0xB97B, + 38931 - 11904: 0xB979, + 38932 - 11904: 0xFCBC, + 38933 - 11904: 0x8A74, + 38934 - 11904: 0xE4CB, + 38935 - 11904: 0xBBE1, + 38936 - 11904: 0xBBE2, + 38939 - 11904: 0xE8BC, + 38940 - 11904: 0xBE67, + 38941 - 11904: 0xE8B7, + 38942 - 11904: 0xE8B6, + 38943 - 11904: 0x9657, + 38944 - 11904: 0xE8BB, + 38945 - 11904: 0xBE65, + 38947 - 11904: 0x9CEF, + 38948 - 11904: 0xC05B, + 38950 - 11904: 0xE8B8, + 38951 - 11904: 0xE8BD, + 38952 - 11904: 0xE8BA, + 38953 - 11904: 0xE8B9, + 38955 - 11904: 0xBE66, + 38957 - 11904: 0xC059, + 38958 - 11904: 0x9FDF, + 38959 - 11904: 0xEC5A, + 38960 - 11904: 0xC055, + 38962 - 11904: 0xEC5B, + 38963 - 11904: 0x90F7, + 38964 - 11904: 0x90F6, + 38965 - 11904: 0xEC59, + 38967 - 11904: 0xC058, + 38968 - 11904: 0xC056, + 38969 - 11904: 0xC05A, + 38971 - 11904: 0xC057, + 38977 - 11904: 0xEF45, + 38979 - 11904: 0xEF4A, + 38980 - 11904: 0xEF46, + 38981 - 11904: 0xEF49, + 38982 - 11904: 0xC1FB, + 38983 - 11904: 0x9B5E, + 38984 - 11904: 0xEDD4, + 38985 - 11904: 0xEF48, + 38986 - 11904: 0xEF47, + 38987 - 11904: 0x90F8, + 38988 - 11904: 0xC344, + 38989 - 11904: 0xC342, + 38990 - 11904: 0xC345, + 38991 - 11904: 0xC343, + 38992 - 11904: 0xF1A8, + 38993 - 11904: 0xF1A9, + 38994 - 11904: 0xF1AA, + 38995 - 11904: 0xC346, + 38998 - 11904: 0x8CFC, + 38999 - 11904: 0xF3AA, + 39000 - 11904: 0xC440, + 39001 - 11904: 0xF3A8, + 39003 - 11904: 0xC441, + 39004 - 11904: 0xF3A7, + 39005 - 11904: 0xF3A9, + 39006 - 11904: 0xC3FE, + 39007 - 11904: 0xF551, + 39008 - 11904: 0xF54E, + 39010 - 11904: 0xF54F, + 39011 - 11904: 0xF550, + 39012 - 11904: 0xF672, + 39013 - 11904: 0xC556, + 39014 - 11904: 0x90F9, + 39015 - 11904: 0xC555, + 39016 - 11904: 0x8CC9, + 39017 - 11904: 0xF774, + 39018 - 11904: 0xF773, + 39019 - 11904: 0xC5B8, + 39020 - 11904: 0xFA6A, + 39023 - 11904: 0xC5E3, + 39024 - 11904: 0xC649, + 39025 - 11904: 0xC660, + 39026 - 11904: 0xF958, + 39027 - 11904: 0xF9AE, + 39028 - 11904: 0xF9AF, + 39029 - 11904: 0x8BEF, + 39080 - 11904: 0xADB7, + 39081 - 11904: 0xDCAD, + 39084 - 11904: 0xE0E1, + 39085 - 11904: 0xE4CC, + 39086 - 11904: 0xE4CD, + 39087 - 11904: 0xBBE3, + 39089 - 11904: 0xBBE4, + 39090 - 11904: 0xE8BE, + 39091 - 11904: 0xBE68, + 39092 - 11904: 0x9FE0, + 39094 - 11904: 0xC1FC, + 39095 - 11904: 0x9142, + 39096 - 11904: 0xF1AB, + 39097 - 11904: 0x9A62, + 39098 - 11904: 0xC347, + 39099 - 11904: 0xF3AD, + 39100 - 11904: 0xC442, + 39101 - 11904: 0xF3AC, + 39102 - 11904: 0xF3AE, + 39103 - 11904: 0xF3AB, + 39104 - 11904: 0xF675, + 39105 - 11904: 0xF552, + 39106 - 11904: 0xF553, + 39107 - 11904: 0x9569, + 39108 - 11904: 0xC4C6, + 39110 - 11904: 0xF674, + 39111 - 11904: 0x9144, + 39112 - 11904: 0x9143, + 39113 - 11904: 0xF673, + 39114 - 11904: 0x9141, + 39115 - 11904: 0xF775, + 39116 - 11904: 0xF9B0, + 39118 - 11904: 0x8BF0, + 39131 - 11904: 0xADB8, + 39132 - 11904: 0x9660, + 39134 - 11904: 0x8BF1, + 39135 - 11904: 0xADB9, + 39136 - 11904: 0x99F6, + 39137 - 11904: 0x9149, + 39138 - 11904: 0xB0A7, + 39139 - 11904: 0xD448, + 39141 - 11904: 0xD84F, + 39142 - 11904: 0x914A, + 39143 - 11904: 0xB6B8, + 39145 - 11904: 0xB6BB, + 39146 - 11904: 0xB6B9, + 39147 - 11904: 0xDCAE, + 39148 - 11904: 0x914B, + 39149 - 11904: 0xB6BD, + 39151 - 11904: 0xB6BA, + 39153 - 11904: 0x9A64, + 39154 - 11904: 0xB6BC, + 39156 - 11904: 0xB97E, + 39157 - 11904: 0x8ABF, + 39158 - 11904: 0xE0E2, + 39161 - 11904: 0xE0E3, + 39162 - 11904: 0xE8C0, + 39164 - 11904: 0xB97D, + 39165 - 11904: 0xB9A1, + 39166 - 11904: 0xB9A2, + 39168 - 11904: 0xE4CF, + 39170 - 11904: 0xE4CE, + 39171 - 11904: 0xBBE5, + 39173 - 11904: 0xBBE6, + 39175 - 11904: 0xE4D0, + 39176 - 11904: 0xE8BF, + 39177 - 11904: 0xBBE8, + 39178 - 11904: 0xBE69, + 39180 - 11904: 0xBBE7, + 39182 - 11904: 0x9A66, + 39184 - 11904: 0xC05C, + 39185 - 11904: 0xE8C1, + 39186 - 11904: 0xBE6B, + 39187 - 11904: 0xBE6A, + 39188 - 11904: 0xE8C2, + 39189 - 11904: 0xE8C5, + 39190 - 11904: 0xE8C3, + 39191 - 11904: 0xE8C4, + 39192 - 11904: 0xBE6C, + 39193 - 11904: 0x9A67, + 39194 - 11904: 0xC061, + 39195 - 11904: 0xC05F, + 39196 - 11904: 0x9A69, + 39198 - 11904: 0xC05E, + 39199 - 11904: 0xEC5D, + 39201 - 11904: 0xC060, + 39204 - 11904: 0xEC5C, + 39205 - 11904: 0xEF4B, + 39207 - 11904: 0xEC5E, + 39208 - 11904: 0xC05D, + 39209 - 11904: 0xEC5F, + 39210 - 11904: 0xEF4E, + 39211 - 11904: 0xEF4C, + 39212 - 11904: 0xEF4D, + 39213 - 11904: 0xEF52, + 39214 - 11904: 0xC34B, + 39215 - 11904: 0xEF51, + 39216 - 11904: 0xEF54, + 39217 - 11904: 0xEF53, + 39218 - 11904: 0xEF50, + 39219 - 11904: 0xEF4F, + 39221 - 11904: 0xC1FD, + 39223 - 11904: 0x9A6A, + 39224 - 11904: 0x9652, + 39225 - 11904: 0x914D, + 39226 - 11904: 0xF1AE, + 39227 - 11904: 0x9666, + 39228 - 11904: 0xF1AD, + 39229 - 11904: 0xC34A, + 39230 - 11904: 0xC348, + 39231 - 11904: 0xC349, + 39232 - 11904: 0x9F7B, + 39233 - 11904: 0xF1AC, + 39234 - 11904: 0x9A6B, + 39235 - 11904: 0xF3B1, + 39237 - 11904: 0xC443, + 39239 - 11904: 0xF3B0, + 39240 - 11904: 0xF3AF, + 39241 - 11904: 0xC444, + 39242 - 11904: 0xA06C, + 39243 - 11904: 0xF558, + 39244 - 11904: 0xF557, + 39245 - 11904: 0x9667, + 39246 - 11904: 0xF555, + 39248 - 11904: 0xF554, + 39249 - 11904: 0xC4C8, + 39250 - 11904: 0xC4C7, + 39251 - 11904: 0xF559, + 39252 - 11904: 0xF776, + 39253 - 11904: 0xC5B9, + 39254 - 11904: 0xF677, + 39255 - 11904: 0xC557, + 39256 - 11904: 0xF676, + 39257 - 11904: 0xF556, + 39259 - 11904: 0xF777, + 39260 - 11904: 0xC5E4, + 39261 - 11904: 0x9A6C, + 39262 - 11904: 0xC661, + 39263 - 11904: 0xF959, + 39265 - 11904: 0xF9B1, + 39266 - 11904: 0x9A6D, + 39267 - 11904: 0x8BF2, + 39318 - 11904: 0xADBA, + 39319 - 11904: 0xD850, + 39320 - 11904: 0xEF55, + 39321 - 11904: 0xADBB, + 39323 - 11904: 0x966A, + 39324 - 11904: 0xE4D2, + 39325 - 11904: 0xE4D1, + 39326 - 11904: 0xEC60, + 39329 - 11904: 0xEF57, + 39331 - 11904: 0xEF56, + 39332 - 11904: 0xFCEA, + 39333 - 11904: 0xC34C, + 39334 - 11904: 0xF3B2, + 39335 - 11904: 0xF3B3, + 39336 - 11904: 0xC4C9, + 39338 - 11904: 0x966C, + 39339 - 11904: 0xF9B2, + 39340 - 11904: 0xB0A8, + 39341 - 11904: 0xB6BF, + 39342 - 11904: 0xB6BE, + 39343 - 11904: 0xE0E4, + 39344 - 11904: 0xE0E6, + 39345 - 11904: 0xB9A4, + 39346 - 11904: 0xE0E5, + 39347 - 11904: 0xB9A3, + 39348 - 11904: 0xB9A5, + 39349 - 11904: 0xE0E7, + 39352 - 11904: 0x91C4, + 39353 - 11904: 0xE4D4, + 39354 - 11904: 0xE4D6, + 39355 - 11904: 0xE4D5, + 39356 - 11904: 0x9677, + 39357 - 11904: 0xE4D8, + 39361 - 11904: 0xBBE9, + 39362 - 11904: 0xE4D7, + 39363 - 11904: 0xE4D3, + 39364 - 11904: 0x99F4, + 39365 - 11904: 0x9A6F, + 39367 - 11904: 0xE4D9, + 39369 - 11904: 0xE8CC, + 39371 - 11904: 0xE8CF, + 39372 - 11904: 0xE8D1, + 39373 - 11904: 0xE8C7, + 39374 - 11904: 0xE8CB, + 39375 - 11904: 0xE8C8, + 39376 - 11904: 0xBE6E, + 39377 - 11904: 0xBE71, + 39378 - 11904: 0xBE73, + 39379 - 11904: 0xE8C9, + 39380 - 11904: 0xE8CA, + 39381 - 11904: 0xBE72, + 39382 - 11904: 0xE8CD, + 39383 - 11904: 0xE8D0, + 39384 - 11904: 0xE8CE, + 39385 - 11904: 0xBE74, + 39386 - 11904: 0x9FAB, + 39387 - 11904: 0xBE70, + 39388 - 11904: 0xE8C6, + 39389 - 11904: 0xBE6D, + 39391 - 11904: 0xBE6F, + 39392 - 11904: 0x8CBE, + 39393 - 11904: 0x8EC1, + 39394 - 11904: 0xC063, + 39395 - 11904: 0xEC66, + 39396 - 11904: 0xEC64, + 39397 - 11904: 0xEC63, + 39398 - 11904: 0x9555, + 39399 - 11904: 0xEC69, + 39401 - 11904: 0xEC68, + 39402 - 11904: 0xEC67, + 39404 - 11904: 0xEC62, + 39405 - 11904: 0xC062, + 39406 - 11904: 0xEC61, + 39408 - 11904: 0xEC65, + 39409 - 11904: 0xC064, + 39412 - 11904: 0xEF5A, + 39413 - 11904: 0x9152, + 39414 - 11904: 0xEF5E, + 39415 - 11904: 0xEF5B, + 39416 - 11904: 0xEF5D, + 39417 - 11904: 0xEF5C, + 39418 - 11904: 0xEF59, + 39419 - 11904: 0xEF5F, + 39420 - 11904: 0xEF62, + 39421 - 11904: 0xEF60, + 39422 - 11904: 0xEF61, + 39423 - 11904: 0xC240, + 39425 - 11904: 0xC1FE, + 39426 - 11904: 0xEF58, + 39427 - 11904: 0xEF63, + 39428 - 11904: 0xF1B3, + 39429 - 11904: 0xF1B6, + 39430 - 11904: 0xF1B8, + 39431 - 11904: 0xF1B7, + 39433 - 11904: 0xF1B1, + 39434 - 11904: 0xF1B5, + 39435 - 11904: 0xF1B0, + 39436 - 11904: 0x9153, + 39437 - 11904: 0xF1B2, + 39438 - 11904: 0xC34D, + 39439 - 11904: 0xF1AF, + 39440 - 11904: 0x9155, + 39441 - 11904: 0xF1B4, + 39444 - 11904: 0xF3C0, + 39445 - 11904: 0xF3B5, + 39446 - 11904: 0xC445, + 39449 - 11904: 0xC446, + 39450 - 11904: 0xF3B4, + 39451 - 11904: 0xF3B9, + 39452 - 11904: 0xF3BF, + 39453 - 11904: 0xF3B7, + 39454 - 11904: 0xF3BE, + 39455 - 11904: 0x955D, + 39456 - 11904: 0xF3BB, + 39457 - 11904: 0x9671, + 39458 - 11904: 0xF3BA, + 39459 - 11904: 0xF3BD, + 39460 - 11904: 0xF3B8, + 39461 - 11904: 0xF3B6, + 39462 - 11904: 0x9C6D, + 39463 - 11904: 0xF3BC, + 39465 - 11904: 0xF560, + 39466 - 11904: 0xF55E, + 39467 - 11904: 0xC4CA, + 39468 - 11904: 0xF55D, + 39469 - 11904: 0xF563, + 39470 - 11904: 0xF561, + 39471 - 11904: 0x9673, + 39472 - 11904: 0xC4CB, + 39473 - 11904: 0xF55C, + 39474 - 11904: 0xF55A, + 39476 - 11904: 0xF55B, + 39477 - 11904: 0xC4CD, + 39478 - 11904: 0xF55F, + 39479 - 11904: 0xC4CC, + 39480 - 11904: 0xF562, + 39481 - 11904: 0xF678, + 39482 - 11904: 0xF67E, + 39483 - 11904: 0x9154, + 39484 - 11904: 0x9A71, + 39485 - 11904: 0xF679, + 39486 - 11904: 0xC55B, + 39487 - 11904: 0xF6A1, + 39488 - 11904: 0xC55A, + 39489 - 11904: 0xF67D, + 39490 - 11904: 0xF67C, + 39491 - 11904: 0xC559, + 39492 - 11904: 0xF67B, + 39493 - 11904: 0xC558, + 39494 - 11904: 0xF67A, + 39496 - 11904: 0xF77D, + 39497 - 11904: 0xF7A1, + 39498 - 11904: 0xF77E, + 39500 - 11904: 0xF77B, + 39501 - 11904: 0xC5BB, + 39502 - 11904: 0xF778, + 39503 - 11904: 0xF77C, + 39504 - 11904: 0xF7A3, + 39506 - 11904: 0xF7A2, + 39507 - 11904: 0xF779, + 39508 - 11904: 0xF77A, + 39509 - 11904: 0xC5BA, + 39510 - 11904: 0xF852, + 39511 - 11904: 0xC5E7, + 39512 - 11904: 0x9156, + 39513 - 11904: 0xF853, + 39514 - 11904: 0xC5E5, + 39515 - 11904: 0xC5E6, + 39516 - 11904: 0x966D, + 39518 - 11904: 0xF8D3, + 39519 - 11904: 0xC64A, + 39520 - 11904: 0xF976, + 39522 - 11904: 0xC66A, + 39523 - 11904: 0x9557, + 39524 - 11904: 0xF9B3, + 39525 - 11904: 0xC66B, + 39526 - 11904: 0xF9B4, + 39527 - 11904: 0xF9B5, + 39528 - 11904: 0xF9C3, + 39529 - 11904: 0xF9C2, + 39530 - 11904: 0xC67A, + 39531 - 11904: 0xF9CD, + 39532 - 11904: 0x89C6, + 39567 - 11904: 0x89C7, + 39592 - 11904: 0xB0A9, + 39595 - 11904: 0xE0E9, + 39597 - 11904: 0xE0E8, + 39599 - 11904: 0xBBEA, + 39600 - 11904: 0xBBEB, + 39601 - 11904: 0xE4DA, + 39602 - 11904: 0x8A6A, + 39603 - 11904: 0xE8D2, + 39604 - 11904: 0xEC6C, + 39606 - 11904: 0x8B57, + 39607 - 11904: 0xBE75, + 39608 - 11904: 0xC065, + 39609 - 11904: 0xEC6A, + 39610 - 11904: 0x9FE1, + 39611 - 11904: 0xEC6D, + 39612 - 11904: 0xC066, + 39613 - 11904: 0x9B5F, + 39614 - 11904: 0xEF64, + 39615 - 11904: 0xEC6B, + 39616 - 11904: 0xF1B9, + 39617 - 11904: 0xC34E, + 39618 - 11904: 0xF3C1, + 39622 - 11904: 0xF566, + 39623 - 11904: 0xF564, + 39626 - 11904: 0xF565, + 39629 - 11904: 0xF6A2, + 39631 - 11904: 0xC55C, + 39632 - 11904: 0xF7A4, + 39633 - 11904: 0xC5EA, + 39634 - 11904: 0xC5BC, + 39635 - 11904: 0xC5E8, + 39636 - 11904: 0xC5E9, + 39637 - 11904: 0xF8D4, + 39638 - 11904: 0xC662, + 39639 - 11904: 0xA05D, + 39640 - 11904: 0xB0AA, + 39644 - 11904: 0xF1BA, + 39647 - 11904: 0xD449, + 39648 - 11904: 0x915B, + 39649 - 11904: 0xB9A6, + 39650 - 11904: 0x915C, + 39651 - 11904: 0xE4DB, + 39654 - 11904: 0xBBEC, + 39655 - 11904: 0xE4DC, + 39659 - 11904: 0xE8D4, + 39660 - 11904: 0xE8D3, + 39661 - 11904: 0xC068, + 39662 - 11904: 0xBE76, + 39663 - 11904: 0xBE77, + 39665 - 11904: 0xE8D7, + 39666 - 11904: 0xE8D6, + 39667 - 11904: 0xE8D5, + 39668 - 11904: 0x915E, + 39670 - 11904: 0xEC6E, + 39671 - 11904: 0xEC71, + 39673 - 11904: 0xEC70, + 39674 - 11904: 0xEC6F, + 39675 - 11904: 0xC067, + 39676 - 11904: 0xEF68, + 39677 - 11904: 0xEF66, + 39678 - 11904: 0xEF65, + 39679 - 11904: 0x9F5C, + 39681 - 11904: 0xEF67, + 39682 - 11904: 0x9F57, + 39683 - 11904: 0xC34F, + 39684 - 11904: 0xF1BC, + 39685 - 11904: 0xF1BD, + 39686 - 11904: 0xC350, + 39688 - 11904: 0xF1BB, + 39689 - 11904: 0x9F65, + 39690 - 11904: 0xF3C3, + 39691 - 11904: 0xF3C2, + 39692 - 11904: 0xF3C5, + 39693 - 11904: 0xC447, + 39694 - 11904: 0xF3C4, + 39695 - 11904: 0x9A72, + 39696 - 11904: 0xF567, + 39697 - 11904: 0xF569, + 39698 - 11904: 0xF568, + 39700 - 11904: 0x9160, + 39701 - 11904: 0xF6A3, + 39702 - 11904: 0xF6A6, + 39703 - 11904: 0xF6A4, + 39704 - 11904: 0xF6A5, + 39705 - 11904: 0xF7A5, + 39706 - 11904: 0xC5BD, + 39710 - 11904: 0xF854, + 39711 - 11904: 0xF855, + 39712 - 11904: 0xF856, + 39714 - 11904: 0xC64B, + 39715 - 11904: 0xC663, + 39716 - 11904: 0xF9B6, + 39717 - 11904: 0xB0AB, + 39719 - 11904: 0xBE78, + 39720 - 11904: 0xC069, + 39721 - 11904: 0xF1BE, + 39722 - 11904: 0x9F5E, + 39723 - 11904: 0xF7A6, + 39725 - 11904: 0x9161, + 39726 - 11904: 0xF9C4, + 39727 - 11904: 0xD44A, + 39729 - 11904: 0xC67B, + 39730 - 11904: 0xB0AC, + 39731 - 11904: 0xEC72, + 39732 - 11904: 0x9164, + 39733 - 11904: 0xF1BF, + 39735 - 11904: 0xF3C6, + 39737 - 11904: 0x9F41, + 39738 - 11904: 0xF6A7, + 39739 - 11904: 0xF7A7, + 39740 - 11904: 0xB0AD, + 39742 - 11904: 0xE4DD, + 39743 - 11904: 0xE4DE, + 39744 - 11904: 0x9169, + 39745 - 11904: 0xBBED, + 39746 - 11904: 0xBBEE, + 39747 - 11904: 0xE8D9, + 39748 - 11904: 0xBE7A, + 39749 - 11904: 0xBE79, + 39750 - 11904: 0xE8D8, + 39752 - 11904: 0xEF69, + 39754 - 11904: 0xF1C0, + 39755 - 11904: 0xF1C2, + 39756 - 11904: 0xF1C1, + 39757 - 11904: 0xC353, + 39758 - 11904: 0xC352, + 39759 - 11904: 0xC351, + 39760 - 11904: 0x9168, + 39761 - 11904: 0xC55E, + 39762 - 11904: 0xF6A8, + 39764 - 11904: 0xC55D, + 39765 - 11904: 0xF7A9, + 39766 - 11904: 0xF7A8, + 39768 - 11904: 0xC64C, + 39769 - 11904: 0xF8D5, + 39770 - 11904: 0xB3BD, + 39771 - 11904: 0xE0EA, + 39775 - 11904: 0xE4E1, + 39776 - 11904: 0xE4DF, + 39777 - 11904: 0xE4E0, + 39780 - 11904: 0xE8E2, + 39782 - 11904: 0xE8DD, + 39783 - 11904: 0xE8DA, + 39784 - 11904: 0xE8E1, + 39785 - 11904: 0x9A74, + 39788 - 11904: 0xE8E3, + 39791 - 11904: 0xBE7C, + 39792 - 11904: 0xE8E0, + 39793 - 11904: 0xE8DC, + 39796 - 11904: 0xE8DB, + 39797 - 11904: 0xE8DF, + 39798 - 11904: 0xE8DE, + 39799 - 11904: 0xBE7B, + 39802 - 11904: 0xEC7D, + 39803 - 11904: 0xEC78, + 39804 - 11904: 0xEC76, + 39805 - 11904: 0xECA1, + 39806 - 11904: 0xEC77, + 39807 - 11904: 0x96B2, + 39808 - 11904: 0xEC73, + 39809 - 11904: 0x9A75, + 39810 - 11904: 0xEC79, + 39811 - 11904: 0xFDA5, + 39813 - 11904: 0xEC74, + 39814 - 11904: 0xEF72, + 39815 - 11904: 0xEC75, + 39816 - 11904: 0xECA2, + 39819 - 11904: 0x9EE9, + 39821 - 11904: 0x8BBA, + 39822 - 11904: 0x916D, + 39823 - 11904: 0xA060, + 39824 - 11904: 0xEC7C, + 39825 - 11904: 0xC06A, + 39826 - 11904: 0xEC7B, + 39827 - 11904: 0xEC7A, + 39829 - 11904: 0xEC7E, + 39831 - 11904: 0x9FDE, + 39834 - 11904: 0xEF6A, + 39835 - 11904: 0xEF6D, + 39837 - 11904: 0x9FC3, + 39838 - 11904: 0xEF6C, + 39839 - 11904: 0x96B5, + 39840 - 11904: 0xEF74, + 39841 - 11904: 0xEF6F, + 39842 - 11904: 0xEF73, + 39844 - 11904: 0xEF71, + 39845 - 11904: 0xEF70, + 39846 - 11904: 0xEF6E, + 39848 - 11904: 0xEF6B, + 39850 - 11904: 0xC243, + 39851 - 11904: 0xC242, + 39853 - 11904: 0xC244, + 39854 - 11904: 0xC241, + 39855 - 11904: 0xEF75, + 39856 - 11904: 0xA067, + 39861 - 11904: 0xF1C8, + 39862 - 11904: 0xF1CB, + 39864 - 11904: 0xF1C9, + 39865 - 11904: 0xF1CD, + 39869 - 11904: 0xF1CE, + 39871 - 11904: 0xF1C6, + 39872 - 11904: 0xC358, + 39873 - 11904: 0xF1C7, + 39875 - 11904: 0xF1C5, + 39876 - 11904: 0xF1CC, + 39878 - 11904: 0xF1C4, + 39879 - 11904: 0xF1C3, + 39880 - 11904: 0xC357, + 39881 - 11904: 0xC355, + 39882 - 11904: 0xC354, + 39887 - 11904: 0x96B3, + 39891 - 11904: 0xF1CA, + 39892 - 11904: 0xF3CF, + 39893 - 11904: 0xF3D5, + 39894 - 11904: 0xC44A, + 39895 - 11904: 0xF3D0, + 39897 - 11904: 0xF3D3, + 39898 - 11904: 0xF3D7, + 39899 - 11904: 0xC44B, + 39900 - 11904: 0xF3D2, + 39901 - 11904: 0x9A76, + 39902 - 11904: 0xF3CA, + 39904 - 11904: 0xF3C9, + 39905 - 11904: 0xF3D6, + 39906 - 11904: 0xF3CD, + 39908 - 11904: 0xF3CB, + 39909 - 11904: 0xF3D4, + 39910 - 11904: 0xF3CC, + 39911 - 11904: 0xC449, + 39912 - 11904: 0xC448, + 39913 - 11904: 0x95D5, + 39914 - 11904: 0xF3C7, + 39915 - 11904: 0xF3C8, + 39916 - 11904: 0xF3D1, + 39917 - 11904: 0x9ECA, + 39920 - 11904: 0xF3CE, + 39921 - 11904: 0x9A77, + 39924 - 11904: 0x9A78, + 39927 - 11904: 0xF56C, + 39928 - 11904: 0xF56F, + 39933 - 11904: 0xC356, + 39935 - 11904: 0x9170, + 39938 - 11904: 0x916F, + 39941 - 11904: 0xF56D, + 39942 - 11904: 0xF573, + 39943 - 11904: 0xF571, + 39944 - 11904: 0xF56B, + 39945 - 11904: 0xF576, + 39946 - 11904: 0x9FA3, + 39947 - 11904: 0xF56A, + 39948 - 11904: 0x9171, + 39949 - 11904: 0xC4CF, + 39950 - 11904: 0xF572, + 39952 - 11904: 0x96B1, + 39954 - 11904: 0xF56E, + 39955 - 11904: 0xC4CE, + 39956 - 11904: 0xF575, + 39957 - 11904: 0x9F63, + 39959 - 11904: 0xF574, + 39963 - 11904: 0x9F67, + 39964 - 11904: 0xF6AB, + 39965 - 11904: 0xF6AA, + 39967 - 11904: 0x8BB9, + 39968 - 11904: 0x9A7A, + 39969 - 11904: 0xF6B1, + 39971 - 11904: 0xF6AD, + 39972 - 11904: 0xF6B0, + 39973 - 11904: 0xC560, + 39974 - 11904: 0x8B56, + 39976 - 11904: 0xF6AE, + 39977 - 11904: 0xF6AF, + 39979 - 11904: 0xF6A9, + 39980 - 11904: 0xF6AC, + 39981 - 11904: 0xC55F, + 39983 - 11904: 0x9ADA, + 39985 - 11904: 0xC5BF, + 39986 - 11904: 0xF7B4, + 39987 - 11904: 0xF7AF, + 39988 - 11904: 0xF7B3, + 39989 - 11904: 0x96B0, + 39990 - 11904: 0xF7B6, + 39991 - 11904: 0xF7B2, + 39993 - 11904: 0xF7AE, + 39994 - 11904: 0x9A7E, + 39995 - 11904: 0xC5C1, + 39996 - 11904: 0xF7B1, + 39997 - 11904: 0xF7B5, + 39998 - 11904: 0xC5C0, + 39999 - 11904: 0xF7AC, + 40000 - 11904: 0xF570, + 40001 - 11904: 0xF7B0, + 40004 - 11904: 0xF7AD, + 40005 - 11904: 0x9DDE, + 40006 - 11904: 0xF7AA, + 40008 - 11904: 0xF7AB, + 40009 - 11904: 0xC5BE, + 40010 - 11904: 0xF85A, + 40011 - 11904: 0xF85C, + 40012 - 11904: 0xF85F, + 40013 - 11904: 0xF85B, + 40014 - 11904: 0xF860, + 40015 - 11904: 0x96AD, + 40016 - 11904: 0xF859, + 40018 - 11904: 0xF857, + 40019 - 11904: 0x96AE, + 40020 - 11904: 0xC5EB, + 40021 - 11904: 0xF85D, + 40022 - 11904: 0xC5ED, + 40023 - 11904: 0xC5EC, + 40024 - 11904: 0xF858, + 40025 - 11904: 0xF85E, + 40029 - 11904: 0x9EA1, + 40030 - 11904: 0xF8DA, + 40031 - 11904: 0xC64D, + 40032 - 11904: 0xF8DB, + 40034 - 11904: 0xF8D9, + 40035 - 11904: 0xF8D6, + 40038 - 11904: 0xF8D8, + 40039 - 11904: 0xF8D7, + 40040 - 11904: 0xF95A, + 40045 - 11904: 0xF95C, + 40046 - 11904: 0xF95B, + 40049 - 11904: 0xF979, + 40050 - 11904: 0x9E50, + 40051 - 11904: 0xF978, + 40052 - 11904: 0xF977, + 40053 - 11904: 0xF97A, + 40055 - 11904: 0xC673, + 40056 - 11904: 0xC674, + 40057 - 11904: 0xF9CA, + 40058 - 11904: 0xF9CE, + 40059 - 11904: 0x96AF, + 40060 - 11904: 0x8BF4, + 40165 - 11904: 0xB3BE, + 40166 - 11904: 0xDCAF, + 40167 - 11904: 0xE0ED, + 40169 - 11904: 0xB9A7, + 40170 - 11904: 0xE0EB, + 40173 - 11904: 0xE0EC, + 40177 - 11904: 0xE4E2, + 40178 - 11904: 0xE4E3, + 40179 - 11904: 0xBBF1, + 40180 - 11904: 0xBBEF, + 40181 - 11904: 0xE4E4, + 40182 - 11904: 0xBBF0, + 40183 - 11904: 0xE8E8, + 40185 - 11904: 0xE8EB, + 40186 - 11904: 0xE8E5, + 40187 - 11904: 0xE8EC, + 40188 - 11904: 0xE8E4, + 40189 - 11904: 0xE8E6, + 40191 - 11904: 0xE8E7, + 40192 - 11904: 0xE8EA, + 40194 - 11904: 0x9FA4, + 40195 - 11904: 0xBEA1, + 40196 - 11904: 0xE8EF, + 40197 - 11904: 0xE8EE, + 40198 - 11904: 0xBE7D, + 40199 - 11904: 0xE8E9, + 40200 - 11904: 0xE8ED, + 40201 - 11904: 0xBE7E, + 40204 - 11904: 0x96BD, + 40208 - 11904: 0xECAC, + 40210 - 11904: 0xC06F, + 40212 - 11904: 0xECA7, + 40213 - 11904: 0xC06B, + 40214 - 11904: 0x96F4, + 40215 - 11904: 0xECA4, + 40216 - 11904: 0xECAA, + 40217 - 11904: 0xECAD, + 40219 - 11904: 0xC070, + 40221 - 11904: 0xECA9, + 40222 - 11904: 0xECA6, + 40223 - 11904: 0xECAE, + 40224 - 11904: 0xECA5, + 40225 - 11904: 0x96B8, + 40226 - 11904: 0xECAB, + 40227 - 11904: 0xC06C, + 40229 - 11904: 0xECA3, + 40230 - 11904: 0xC06D, + 40232 - 11904: 0xC06E, + 40233 - 11904: 0xECA8, + 40237 - 11904: 0xEFA9, + 40238 - 11904: 0xEF7A, + 40239 - 11904: 0xEF7B, + 40240 - 11904: 0xEF7E, + 40241 - 11904: 0xEF7C, + 40243 - 11904: 0xEF76, + 40244 - 11904: 0xFAA1, + 40246 - 11904: 0xEF79, + 40247 - 11904: 0xEFA5, + 40248 - 11904: 0xEF7D, + 40249 - 11904: 0x91A7, + 40251 - 11904: 0xC245, + 40253 - 11904: 0xEFA7, + 40254 - 11904: 0xEFA4, + 40255 - 11904: 0xC246, + 40256 - 11904: 0xEFA6, + 40257 - 11904: 0xEF77, + 40258 - 11904: 0xEFA2, + 40259 - 11904: 0xEFA3, + 40260 - 11904: 0xA05E, + 40261 - 11904: 0xEFA1, + 40265 - 11904: 0x9A7D, + 40266 - 11904: 0xF1D2, + 40267 - 11904: 0xF1D4, + 40268 - 11904: 0xF1D7, + 40270 - 11904: 0x8948, + 40271 - 11904: 0xF1D1, + 40272 - 11904: 0x9EB1, + 40273 - 11904: 0xC359, + 40274 - 11904: 0xF1D9, + 40275 - 11904: 0xF1D0, + 40276 - 11904: 0xF1DA, + 40278 - 11904: 0xF1D6, + 40279 - 11904: 0xF1D8, + 40280 - 11904: 0xF1DC, + 40281 - 11904: 0xF1D5, + 40282 - 11904: 0xF1DD, + 40283 - 11904: 0xF1D3, + 40284 - 11904: 0xF1CF, + 40285 - 11904: 0xC35A, + 40286 - 11904: 0x9DDB, + 40287 - 11904: 0xF1DB, + 40288 - 11904: 0xC35B, + 40289 - 11904: 0xC44D, + 40295 - 11904: 0xEF78, + 40296 - 11904: 0xF3F1, + 40297 - 11904: 0xF3E8, + 40298 - 11904: 0xC44F, + 40299 - 11904: 0xF3E4, + 40300 - 11904: 0xC450, + 40301 - 11904: 0x95BF, + 40302 - 11904: 0x8A73, + 40303 - 11904: 0xF3ED, + 40304 - 11904: 0xF3E7, + 40305 - 11904: 0xF3DD, + 40306 - 11904: 0xC44E, + 40307 - 11904: 0xF3EA, + 40308 - 11904: 0xF3E5, + 40309 - 11904: 0xF3E6, + 40311 - 11904: 0xF3D8, + 40312 - 11904: 0xF3DF, + 40313 - 11904: 0xF3EE, + 40315 - 11904: 0xF3EB, + 40316 - 11904: 0x9EFE, + 40317 - 11904: 0xF3E3, + 40318 - 11904: 0x917A, + 40319 - 11904: 0xF3EF, + 40320 - 11904: 0xF3DE, + 40321 - 11904: 0xF3D9, + 40322 - 11904: 0xF3EC, + 40323 - 11904: 0x917B, + 40324 - 11904: 0xF3DB, + 40325 - 11904: 0xF3E9, + 40326 - 11904: 0xF3E0, + 40327 - 11904: 0xF3F0, + 40328 - 11904: 0xF3DC, + 40329 - 11904: 0xC44C, + 40330 - 11904: 0xF3DA, + 40331 - 11904: 0xF3E1, + 40332 - 11904: 0xF3E2, + 40336 - 11904: 0xF57D, + 40338 - 11904: 0xF57B, + 40339 - 11904: 0x9AA3, + 40340 - 11904: 0xF5A2, + 40342 - 11904: 0xF5AE, + 40343 - 11904: 0xF5A5, + 40344 - 11904: 0xF57C, + 40345 - 11904: 0xF578, + 40346 - 11904: 0xF5A7, + 40347 - 11904: 0xF57E, + 40348 - 11904: 0xF5A3, + 40349 - 11904: 0xF57A, + 40350 - 11904: 0xF5AA, + 40351 - 11904: 0xF577, + 40352 - 11904: 0xF5A1, + 40353 - 11904: 0xF5A6, + 40354 - 11904: 0xF5A8, + 40355 - 11904: 0xF5AB, + 40356 - 11904: 0xF579, + 40357 - 11904: 0x96C2, + 40358 - 11904: 0xF5AF, + 40359 - 11904: 0xF5B0, + 40360 - 11904: 0xF5A9, + 40361 - 11904: 0xF5AD, + 40362 - 11904: 0xF5A4, + 40363 - 11904: 0x9F77, + 40364 - 11904: 0xF6C1, + 40365 - 11904: 0xF6C4, + 40367 - 11904: 0xC561, + 40369 - 11904: 0xF6C3, + 40370 - 11904: 0xF6C8, + 40371 - 11904: 0xF6C6, + 40372 - 11904: 0xC562, + 40373 - 11904: 0xF6BD, + 40374 - 11904: 0xF6B3, + 40375 - 11904: 0xF6B2, + 40376 - 11904: 0xC564, + 40377 - 11904: 0xF6BF, + 40378 - 11904: 0xF6C0, + 40379 - 11904: 0xF6BC, + 40380 - 11904: 0xF6B4, + 40381 - 11904: 0x9AA4, + 40382 - 11904: 0xF6B9, + 40383 - 11904: 0xF5AC, + 40384 - 11904: 0x9AA5, + 40385 - 11904: 0xF6B5, + 40386 - 11904: 0xC563, + 40387 - 11904: 0xF6BB, + 40388 - 11904: 0x91A1, + 40389 - 11904: 0xF6BA, + 40391 - 11904: 0xF6B6, + 40392 - 11904: 0xF6C2, + 40393 - 11904: 0x89B8, + 40394 - 11904: 0xF6B7, + 40395 - 11904: 0xF7BB, + 40396 - 11904: 0xF6C5, + 40397 - 11904: 0xF6C7, + 40398 - 11904: 0xF6BE, + 40399 - 11904: 0xF6B8, + 40400 - 11904: 0xF7BC, + 40401 - 11904: 0xF7BE, + 40402 - 11904: 0xF7B8, + 40403 - 11904: 0xC5C2, + 40404 - 11904: 0x9173, + 40405 - 11904: 0xF7C5, + 40406 - 11904: 0xF7C3, + 40407 - 11904: 0xC5C3, + 40408 - 11904: 0xF7C2, + 40409 - 11904: 0xF7C1, + 40410 - 11904: 0xF7BA, + 40411 - 11904: 0xF7B7, + 40412 - 11904: 0xF7BD, + 40413 - 11904: 0xF7C6, + 40414 - 11904: 0xF7B9, + 40415 - 11904: 0xF7BF, + 40417 - 11904: 0xF869, + 40418 - 11904: 0xF86E, + 40419 - 11904: 0xF864, + 40420 - 11904: 0xF867, + 40421 - 11904: 0xC5EE, + 40422 - 11904: 0xF86B, + 40424 - 11904: 0xF872, + 40425 - 11904: 0xF7C0, + 40427 - 11904: 0xF865, + 40428 - 11904: 0xF86F, + 40429 - 11904: 0xF873, + 40430 - 11904: 0xF86A, + 40431 - 11904: 0xF863, + 40432 - 11904: 0xF86D, + 40434 - 11904: 0xF86C, + 40435 - 11904: 0xF871, + 40436 - 11904: 0xF870, + 40437 - 11904: 0xF7C4, + 40438 - 11904: 0xF868, + 40439 - 11904: 0xF862, + 40440 - 11904: 0xF866, + 40441 - 11904: 0xC64E, + 40442 - 11904: 0xC64F, + 40443 - 11904: 0xF861, + 40444 - 11904: 0x9AA6, + 40445 - 11904: 0xF8E6, + 40446 - 11904: 0xF8DD, + 40447 - 11904: 0xF8E5, + 40448 - 11904: 0xF8E2, + 40449 - 11904: 0xF8E3, + 40450 - 11904: 0xF8DC, + 40451 - 11904: 0xF8DF, + 40452 - 11904: 0xF8E7, + 40453 - 11904: 0xF8E1, + 40454 - 11904: 0xF8E0, + 40455 - 11904: 0xF8DE, + 40457 - 11904: 0xF8E4, + 40458 - 11904: 0x89BD, + 40459 - 11904: 0xF95D, + 40460 - 11904: 0x89B9, + 40461 - 11904: 0xF95E, + 40462 - 11904: 0x917D, + 40463 - 11904: 0xF960, + 40464 - 11904: 0xF95F, + 40465 - 11904: 0xF962, + 40466 - 11904: 0xF961, + 40467 - 11904: 0xF97C, + 40468 - 11904: 0xF97B, + 40469 - 11904: 0xF9B7, + 40471 - 11904: 0xF9B8, + 40472 - 11904: 0x96BB, + 40473 - 11904: 0xF9C5, + 40474 - 11904: 0xC678, + 40475 - 11904: 0xC67C, + 40476 - 11904: 0x9FF2, + 40477 - 11904: 0xF9CF, + 40478 - 11904: 0xC67D, + 40479 - 11904: 0x8BF5, + 40565 - 11904: 0xB3BF, + 40569 - 11904: 0xC4D0, + 40570 - 11904: 0xF6C9, + 40571 - 11904: 0x9AA9, + 40572 - 11904: 0xC650, + 40573 - 11904: 0xC651, + 40575 - 11904: 0xB3C0, + 40576 - 11904: 0xE0EE, + 40577 - 11904: 0x9F54, + 40578 - 11904: 0xB9A8, + 40579 - 11904: 0xE8F0, + 40580 - 11904: 0x9FE3, + 40581 - 11904: 0x9EED, + 40582 - 11904: 0xECB0, + 40583 - 11904: 0xECB1, + 40584 - 11904: 0xECAF, + 40585 - 11904: 0xEFAB, + 40586 - 11904: 0xEFAA, + 40587 - 11904: 0xC247, + 40588 - 11904: 0xF1DF, + 40589 - 11904: 0xEFAC, + 40590 - 11904: 0xF1DE, + 40592 - 11904: 0x91AA, + 40593 - 11904: 0xF3F3, + 40594 - 11904: 0xC451, + 40595 - 11904: 0xC453, + 40596 - 11904: 0xF3F2, + 40597 - 11904: 0x91AB, + 40598 - 11904: 0xA070, + 40599 - 11904: 0xC452, + 40600 - 11904: 0x9F6D, + 40601 - 11904: 0xF5B1, + 40602 - 11904: 0xF5B3, + 40603 - 11904: 0xF5B2, + 40604 - 11904: 0xF6CA, + 40605 - 11904: 0xC565, + 40606 - 11904: 0x91AC, + 40607 - 11904: 0xC5EF, + 40608 - 11904: 0xF8E8, + 40609 - 11904: 0xF963, + 40610 - 11904: 0x91AD, + 40612 - 11904: 0xF9D2, + 40613 - 11904: 0xB3C1, + 40614 - 11904: 0xA0FD, + 40615 - 11904: 0xE4E5, + 40616 - 11904: 0x9FE2, + 40617 - 11904: 0xBEA2, + 40618 - 11904: 0x91AF, + 40619 - 11904: 0x9E41, + 40620 - 11904: 0x9AAA, + 40621 - 11904: 0xECB3, + 40622 - 11904: 0xECB2, + 40623 - 11904: 0x91B0, + 40624 - 11904: 0xEFAD, + 40625 - 11904: 0x9AAB, + 40628 - 11904: 0xC454, + 40629 - 11904: 0xC4D1, + 40630 - 11904: 0xF7C7, + 40631 - 11904: 0xF9CB, + 40635 - 11904: 0xB3C2, + 40636 - 11904: 0xBBF2, + 40637 - 11904: 0x9AAC, + 40638 - 11904: 0xBEA3, + 40639 - 11904: 0x9A4A, + 40640 - 11904: 0xF3F4, + 40641 - 11904: 0x91B2, + 40642 - 11904: 0xF874, + 40643 - 11904: 0xB6C0, + 40644 - 11904: 0x8BF6, + 40646 - 11904: 0x9AAD, + 40647 - 11904: 0x89B6, + 40648 - 11904: 0xEFAE, + 40652 - 11904: 0xC664, + 40653 - 11904: 0xB6C1, + 40654 - 11904: 0xBEA4, + 40655 - 11904: 0xC248, + 40656 - 11904: 0xF875, + 40657 - 11904: 0xB6C2, + 40659 - 11904: 0xE8F1, + 40660 - 11904: 0xC072, + 40661 - 11904: 0xECB4, + 40662 - 11904: 0xECB5, + 40664 - 11904: 0xC071, + 40666 - 11904: 0xEFAF, + 40667 - 11904: 0xC24C, + 40668 - 11904: 0xC24A, + 40669 - 11904: 0xC24B, + 40670 - 11904: 0xC249, + 40671 - 11904: 0xF1E0, + 40672 - 11904: 0xC35C, + 40674 - 11904: 0x9AAF, + 40676 - 11904: 0xF5B5, + 40677 - 11904: 0xF5B4, + 40678 - 11904: 0xF5B7, + 40679 - 11904: 0xF5B6, + 40680 - 11904: 0xC4D2, + 40683 - 11904: 0xF6CB, + 40685 - 11904: 0xF6CD, + 40686 - 11904: 0xF6CC, + 40687 - 11904: 0xC566, + 40688 - 11904: 0xF7C8, + 40689 - 11904: 0x9AB0, + 40690 - 11904: 0xF876, + 40691 - 11904: 0xF877, + 40692 - 11904: 0xC5F0, + 40693 - 11904: 0xF964, + 40694 - 11904: 0xF97D, + 40695 - 11904: 0xC675, + 40696 - 11904: 0x9AB1, + 40697 - 11904: 0xDCB0, + 40698 - 11904: 0xECB6, + 40699 - 11904: 0xEFB0, + 40700 - 11904: 0xF3F5, + 40701 - 11904: 0xE0EF, + 40702 - 11904: 0x9AA1, + 40703 - 11904: 0xEFB1, + 40704 - 11904: 0xF1E2, + 40705 - 11904: 0xF1E1, + 40706 - 11904: 0x91B9, + 40710 - 11904: 0xF878, + 40711 - 11904: 0xC652, + 40712 - 11904: 0x91BA, + 40713 - 11904: 0xF965, + 40714 - 11904: 0xF97E, + 40718 - 11904: 0xB9A9, + 40719 - 11904: 0xE8F2, + 40720 - 11904: 0xE8F3, + 40722 - 11904: 0xECB7, + 40723 - 11904: 0xB9AA, + 40725 - 11904: 0xC35D, + 40726 - 11904: 0xF1E3, + 40727 - 11904: 0x9F66, + 40728 - 11904: 0xF6CF, + 40729 - 11904: 0xC567, + 40730 - 11904: 0xF6D0, + 40731 - 11904: 0xF6CE, + 40732 - 11904: 0xF879, + 40734 - 11904: 0xF8E9, + 40736 - 11904: 0xB9AB, + 40738 - 11904: 0xEFB4, + 40739 - 11904: 0xEFB3, + 40740 - 11904: 0xEFB2, + 40741 - 11904: 0xF1E4, + 40742 - 11904: 0xA041, + 40743 - 11904: 0x8BB7, + 40744 - 11904: 0xF1E8, + 40745 - 11904: 0xF1E7, + 40746 - 11904: 0xF1E6, + 40747 - 11904: 0xF1E5, + 40748 - 11904: 0xC35E, + 40749 - 11904: 0xF3F6, + 40750 - 11904: 0xF5B9, + 40751 - 11904: 0xC4D3, + 40752 - 11904: 0xF5B8, + 40753 - 11904: 0xF6D1, + 40754 - 11904: 0xF7CB, + 40755 - 11904: 0xF7CA, + 40756 - 11904: 0xC5C4, + 40757 - 11904: 0xF7C9, + 40758 - 11904: 0xF87C, + 40759 - 11904: 0xF87B, + 40760 - 11904: 0xF87A, + 40761 - 11904: 0x91C0, + 40763 - 11904: 0xBBF3, + 40765 - 11904: 0xECB8, + 40766 - 11904: 0xC24D, + 40768 - 11904: 0xF3F7, + 40769 - 11904: 0xF3F8, + 40770 - 11904: 0xF7CC, + 40771 - 11904: 0xF87D, + 40772 - 11904: 0x9AB3, + 40773 - 11904: 0x91C3, + 40774 - 11904: 0xF8EA, + 40775 - 11904: 0xF966, + 40776 - 11904: 0xF9B9, + 40777 - 11904: 0xF9D4, + 40778 - 11904: 0xBBF4, + 40779 - 11904: 0xC24E, + 40780 - 11904: 0xF1E9, + 40781 - 11904: 0xF3F9, + 40782 - 11904: 0xF6D2, + 40783 - 11904: 0xF87E, + 40784 - 11904: 0xA0FC, + 40786 - 11904: 0xBEA6, + 40787 - 11904: 0x9FEE, + 40788 - 11904: 0xEFB5, + 40789 - 11904: 0xF1EA, + 40790 - 11904: 0xF3FA, + 40791 - 11904: 0xF3FB, + 40792 - 11904: 0xF3FC, + 40793 - 11904: 0xF5BE, + 40794 - 11904: 0x9F69, + 40795 - 11904: 0xF5BA, + 40796 - 11904: 0xC568, + 40797 - 11904: 0xF5BD, + 40798 - 11904: 0xF5BC, + 40799 - 11904: 0xC4D4, + 40800 - 11904: 0xF5BB, + 40801 - 11904: 0xC4D6, + 40802 - 11904: 0x91C8, + 40803 - 11904: 0xC4D5, + 40804 - 11904: 0xF6D4, + 40805 - 11904: 0xF6D3, + 40806 - 11904: 0xC569, + 40807 - 11904: 0xC56A, + 40809 - 11904: 0x91C9, + 40810 - 11904: 0xC5C6, + 40811 - 11904: 0xF7CD, + 40812 - 11904: 0xC5C5, + 40814 - 11904: 0xF8A3, + 40815 - 11904: 0xF8A4, + 40816 - 11904: 0xF8A2, + 40817 - 11904: 0xF8A1, + 40818 - 11904: 0xC654, + 40820 - 11904: 0xF8EB, + 40821 - 11904: 0xF8EC, + 40822 - 11904: 0xF8ED, + 40823 - 11904: 0xC653, + 40824 - 11904: 0xF967, + 40825 - 11904: 0xF96A, + 40826 - 11904: 0xF969, + 40827 - 11904: 0xF968, + 40830 - 11904: 0xF9D3, + 40831 - 11904: 0x8DE6, + 40845 - 11904: 0xC073, + 40846 - 11904: 0x91CB, + 40848 - 11904: 0xC365, + 40849 - 11904: 0xF5BF, + 40850 - 11904: 0xF6D5, + 40852 - 11904: 0xC5C7, + 40853 - 11904: 0xF7CE, + 40854 - 11904: 0x87AC, + 40855 - 11904: 0x87A4, + 40856 - 11904: 0xF9D5, + 40857 - 11904: 0x89C8, + 40860 - 11904: 0xC074, + 40863 - 11904: 0x8DAA, + 40864 - 11904: 0xEFB6, + 40866 - 11904: 0xF7CF, + 40868 - 11904: 0xF9A1, + 40869 - 11904: 0x9FDD, + 40870 - 11904: 0x8C43, + 40871 - 11904: 0x8C6D, + 40872 - 11904: 0x8C74, + 40873 - 11904: 0x8CB7, + 40874 - 11904: 0x8CB9, + 40875 - 11904: 0x8CBB, + 40876 - 11904: 0x8CC0, + 40877 - 11904: 0x8CD7, + 40878 - 11904: 0x8CD8, + 40879 - 11904: 0x8CDA, + 40880 - 11904: 0xC8A1, + 40881 - 11904: 0xC8A3, + 40882 - 11904: 0x8CED, + 40883 - 11904: 0x8D48, + 40903 - 11904: 0x87C2, + 40904 - 11904: 0x87D2, + 40905 - 11904: 0x87D6, + 40906 - 11904: 0x87DA, + 40907 - 11904: 0x87DF, +} + +const encode2Low, encode2High = 7870, 10046 + +var encode2 = [...]uint16{ + 7870 - 7870: 0x8863, + 7871 - 7870: 0x88A4, + 7872 - 7870: 0x8865, + 7873 - 7870: 0x88A6, + 8211 - 7870: 0xA156, + 8212 - 7870: 0xA158, + 8216 - 7870: 0xA1A5, + 8217 - 7870: 0xA1A6, + 8220 - 7870: 0xA1A7, + 8221 - 7870: 0xA1A8, + 8229 - 7870: 0xA14C, + 8230 - 7870: 0xA14B, + 8231 - 7870: 0xA145, + 8242 - 7870: 0xA1AC, + 8245 - 7870: 0xA1AB, + 8251 - 7870: 0xA1B0, + 8364 - 7870: 0xA3E1, + 8451 - 7870: 0xA24A, + 8453 - 7870: 0xA1C1, + 8457 - 7870: 0xA24B, + 8470 - 7870: 0xC8D2, + 8481 - 7870: 0xC8D3, + 8544 - 7870: 0xA2B9, + 8545 - 7870: 0xA2BA, + 8546 - 7870: 0xA2BB, + 8547 - 7870: 0xA2BC, + 8548 - 7870: 0xA2BD, + 8549 - 7870: 0xA2BE, + 8550 - 7870: 0xA2BF, + 8551 - 7870: 0xA2C0, + 8552 - 7870: 0xA2C1, + 8553 - 7870: 0xA2C2, + 8560 - 7870: 0xC6B5, + 8561 - 7870: 0xC6B6, + 8562 - 7870: 0xC6B7, + 8563 - 7870: 0xC6B8, + 8564 - 7870: 0xC6B9, + 8565 - 7870: 0xC6BA, + 8566 - 7870: 0xC6BB, + 8567 - 7870: 0xC6BC, + 8568 - 7870: 0xC6BD, + 8569 - 7870: 0xC6BE, + 8592 - 7870: 0xA1F6, + 8593 - 7870: 0xA1F4, + 8594 - 7870: 0xA1F7, + 8595 - 7870: 0xA1F5, + 8598 - 7870: 0xA1F8, + 8599 - 7870: 0xA1F9, + 8600 - 7870: 0xA1FB, + 8601 - 7870: 0xA1FA, + 8632 - 7870: 0xC877, + 8633 - 7870: 0xC878, + 8679 - 7870: 0xC876, + 8725 - 7870: 0xA241, + 8730 - 7870: 0xA1D4, + 8734 - 7870: 0xA1DB, + 8735 - 7870: 0xA1E8, + 8736 - 7870: 0xA1E7, + 8739 - 7870: 0xA1FD, + 8741 - 7870: 0xA1FC, + 8745 - 7870: 0xA1E4, + 8746 - 7870: 0xA1E5, + 8747 - 7870: 0xA1EC, + 8750 - 7870: 0xA1ED, + 8756 - 7870: 0xA1EF, + 8757 - 7870: 0xA1EE, + 8786 - 7870: 0xA1DC, + 8800 - 7870: 0xA1DA, + 8801 - 7870: 0xA1DD, + 8806 - 7870: 0xA1D8, + 8807 - 7870: 0xA1D9, + 8853 - 7870: 0xA1F2, + 8857 - 7870: 0xA1F3, + 8869 - 7870: 0xA1E6, + 8895 - 7870: 0xA1E9, + 9178 - 7870: 0x88A9, + 9179 - 7870: 0x88AA, + 9216 - 7870: 0xA3C0, + 9217 - 7870: 0xA3C1, + 9218 - 7870: 0xA3C2, + 9219 - 7870: 0xA3C3, + 9220 - 7870: 0xA3C4, + 9221 - 7870: 0xA3C5, + 9222 - 7870: 0xA3C6, + 9223 - 7870: 0xA3C7, + 9224 - 7870: 0xA3C8, + 9225 - 7870: 0xA3C9, + 9226 - 7870: 0xA3CA, + 9227 - 7870: 0xA3CB, + 9228 - 7870: 0xA3CC, + 9229 - 7870: 0xA3CD, + 9230 - 7870: 0xA3CE, + 9231 - 7870: 0xA3CF, + 9232 - 7870: 0xA3D0, + 9233 - 7870: 0xA3D1, + 9234 - 7870: 0xA3D2, + 9235 - 7870: 0xA3D3, + 9236 - 7870: 0xA3D4, + 9237 - 7870: 0xA3D5, + 9238 - 7870: 0xA3D6, + 9239 - 7870: 0xA3D7, + 9240 - 7870: 0xA3D8, + 9241 - 7870: 0xA3D9, + 9242 - 7870: 0xA3DA, + 9243 - 7870: 0xA3DB, + 9244 - 7870: 0xA3DC, + 9245 - 7870: 0xA3DD, + 9246 - 7870: 0xA3DE, + 9247 - 7870: 0xA3DF, + 9249 - 7870: 0xA3E0, + 9312 - 7870: 0xC6A1, + 9313 - 7870: 0xC6A2, + 9314 - 7870: 0xC6A3, + 9315 - 7870: 0xC6A4, + 9316 - 7870: 0xC6A5, + 9317 - 7870: 0xC6A6, + 9318 - 7870: 0xC6A7, + 9319 - 7870: 0xC6A8, + 9320 - 7870: 0xC6A9, + 9321 - 7870: 0xC6AA, + 9332 - 7870: 0xC6AB, + 9333 - 7870: 0xC6AC, + 9334 - 7870: 0xC6AD, + 9335 - 7870: 0xC6AE, + 9336 - 7870: 0xC6AF, + 9337 - 7870: 0xC6B0, + 9338 - 7870: 0xC6B1, + 9339 - 7870: 0xC6B2, + 9340 - 7870: 0xC6B3, + 9341 - 7870: 0xC6B4, + 9472 - 7870: 0xA277, + 9474 - 7870: 0xA278, + 9484 - 7870: 0xA27A, + 9488 - 7870: 0xA27B, + 9492 - 7870: 0xA27C, + 9496 - 7870: 0xA27D, + 9500 - 7870: 0xA275, + 9508 - 7870: 0xA274, + 9516 - 7870: 0xA273, + 9524 - 7870: 0xA272, + 9532 - 7870: 0xA271, + 9552 - 7870: 0xF9F9, + 9553 - 7870: 0xF9F8, + 9554 - 7870: 0xF9E6, + 9555 - 7870: 0xF9EF, + 9556 - 7870: 0xF9DD, + 9557 - 7870: 0xF9E8, + 9558 - 7870: 0xF9F1, + 9559 - 7870: 0xF9DF, + 9560 - 7870: 0xF9EC, + 9561 - 7870: 0xF9F5, + 9562 - 7870: 0xF9E3, + 9563 - 7870: 0xF9EE, + 9564 - 7870: 0xF9F7, + 9565 - 7870: 0xF9E5, + 9566 - 7870: 0xF9E9, + 9567 - 7870: 0xF9F2, + 9568 - 7870: 0xF9E0, + 9569 - 7870: 0xF9EB, + 9570 - 7870: 0xF9F4, + 9571 - 7870: 0xF9E2, + 9572 - 7870: 0xF9E7, + 9573 - 7870: 0xF9F0, + 9574 - 7870: 0xF9DE, + 9575 - 7870: 0xF9ED, + 9576 - 7870: 0xF9F6, + 9577 - 7870: 0xF9E4, + 9578 - 7870: 0xF9EA, + 9579 - 7870: 0xF9F3, + 9580 - 7870: 0xF9E1, + 9581 - 7870: 0xF9FA, + 9582 - 7870: 0xF9FB, + 9583 - 7870: 0xF9FD, + 9584 - 7870: 0xF9FC, + 9585 - 7870: 0xA2AC, + 9586 - 7870: 0xA2AD, + 9587 - 7870: 0xA2AE, + 9588 - 7870: 0xA15A, + 9601 - 7870: 0xA262, + 9602 - 7870: 0xA263, + 9603 - 7870: 0xA264, + 9604 - 7870: 0xA265, + 9605 - 7870: 0xA266, + 9606 - 7870: 0xA267, + 9607 - 7870: 0xA268, + 9608 - 7870: 0xA269, + 9609 - 7870: 0xA270, + 9610 - 7870: 0xA26F, + 9611 - 7870: 0xA26E, + 9612 - 7870: 0xA26D, + 9613 - 7870: 0xA26C, + 9614 - 7870: 0xA26B, + 9615 - 7870: 0xA26A, + 9620 - 7870: 0xA276, + 9621 - 7870: 0xA279, + 9632 - 7870: 0xA1BD, + 9633 - 7870: 0xA1BC, + 9650 - 7870: 0xA1B6, + 9651 - 7870: 0xA1B5, + 9660 - 7870: 0xA1BF, + 9661 - 7870: 0xA1BE, + 9670 - 7870: 0xA1BB, + 9671 - 7870: 0xA1BA, + 9675 - 7870: 0xA1B3, + 9678 - 7870: 0xA1B7, + 9679 - 7870: 0xA1B4, + 9698 - 7870: 0xA2A8, + 9699 - 7870: 0xA2A9, + 9700 - 7870: 0xA2AB, + 9701 - 7870: 0xA2AA, + 9733 - 7870: 0xA1B9, + 9734 - 7870: 0xA1B8, + 9792 - 7870: 0xA1F0, + 9794 - 7870: 0xA1F1, + 10045 - 7870: 0xC6E6, +} + +const encode3Low, encode3High = 167, 1106 + +var encode3 = [...]uint16{ + 167 - 167: 0xA1B1, + 168 - 167: 0xC6D8, + 175 - 167: 0xA1C2, + 176 - 167: 0xA258, + 177 - 167: 0xA1D3, + 183 - 167: 0xA150, + 192 - 167: 0x8859, + 193 - 167: 0x8857, + 200 - 167: 0x885D, + 201 - 167: 0x885B, + 202 - 167: 0x8866, + 210 - 167: 0x8861, + 211 - 167: 0x885F, + 215 - 167: 0xA1D1, + 224 - 167: 0x886A, + 225 - 167: 0x8868, + 232 - 167: 0x886F, + 233 - 167: 0x886D, + 234 - 167: 0x88A7, + 236 - 167: 0x8873, + 237 - 167: 0x8871, + 242 - 167: 0x8877, + 243 - 167: 0x8875, + 247 - 167: 0xA1D2, + 248 - 167: 0xC8FB, + 249 - 167: 0x887B, + 250 - 167: 0x8879, + 252 - 167: 0x88A2, + 256 - 167: 0x8856, + 257 - 167: 0x8867, + 274 - 167: 0x885A, + 275 - 167: 0x886C, + 282 - 167: 0x885C, + 283 - 167: 0x886E, + 299 - 167: 0x8870, + 331 - 167: 0xC8FC, + 332 - 167: 0x885E, + 333 - 167: 0x8874, + 339 - 167: 0xC8FA, + 363 - 167: 0x8878, + 461 - 167: 0x8858, + 462 - 167: 0x8869, + 464 - 167: 0x8872, + 465 - 167: 0x8860, + 466 - 167: 0x8876, + 468 - 167: 0x887A, + 470 - 167: 0x887C, + 472 - 167: 0x887D, + 474 - 167: 0x887E, + 476 - 167: 0x88A1, + 592 - 167: 0xC8F6, + 593 - 167: 0x886B, + 596 - 167: 0xC8F8, + 603 - 167: 0xC8F7, + 609 - 167: 0x88A8, + 618 - 167: 0xC8FE, + 629 - 167: 0xC8F9, + 643 - 167: 0xC8F5, + 650 - 167: 0xC8FD, + 710 - 167: 0xC6D9, + 711 - 167: 0xA3BE, + 713 - 167: 0xA3BC, + 714 - 167: 0xA3BD, + 715 - 167: 0xA3BF, + 717 - 167: 0xA1C5, + 729 - 167: 0xA3BB, + 913 - 167: 0xA344, + 914 - 167: 0xA345, + 915 - 167: 0xA346, + 916 - 167: 0xA347, + 917 - 167: 0xA348, + 918 - 167: 0xA349, + 919 - 167: 0xA34A, + 920 - 167: 0xA34B, + 921 - 167: 0xA34C, + 922 - 167: 0xA34D, + 923 - 167: 0xA34E, + 924 - 167: 0xA34F, + 925 - 167: 0xA350, + 926 - 167: 0xA351, + 927 - 167: 0xA352, + 928 - 167: 0xA353, + 929 - 167: 0xA354, + 931 - 167: 0xA355, + 932 - 167: 0xA356, + 933 - 167: 0xA357, + 934 - 167: 0xA358, + 935 - 167: 0xA359, + 936 - 167: 0xA35A, + 937 - 167: 0xA35B, + 945 - 167: 0xA35C, + 946 - 167: 0xA35D, + 947 - 167: 0xA35E, + 948 - 167: 0xA35F, + 949 - 167: 0xA360, + 950 - 167: 0xA361, + 951 - 167: 0xA362, + 952 - 167: 0xA363, + 953 - 167: 0xA364, + 954 - 167: 0xA365, + 955 - 167: 0xA366, + 956 - 167: 0xA367, + 957 - 167: 0xA368, + 958 - 167: 0xA369, + 959 - 167: 0xA36A, + 960 - 167: 0xA36B, + 961 - 167: 0xA36C, + 963 - 167: 0xA36D, + 964 - 167: 0xA36E, + 965 - 167: 0xA36F, + 966 - 167: 0xA370, + 967 - 167: 0xA371, + 968 - 167: 0xA372, + 969 - 167: 0xA373, + 1025 - 167: 0xC7F9, + 1040 - 167: 0xC7F3, + 1041 - 167: 0xC7F4, + 1042 - 167: 0xC7F5, + 1043 - 167: 0xC7F6, + 1044 - 167: 0xC7F7, + 1045 - 167: 0xC7F8, + 1046 - 167: 0xC7FA, + 1047 - 167: 0xC7FB, + 1048 - 167: 0xC7FC, + 1049 - 167: 0xC7FD, + 1050 - 167: 0xC7FE, + 1051 - 167: 0xC840, + 1052 - 167: 0xC841, + 1053 - 167: 0xC842, + 1054 - 167: 0xC843, + 1055 - 167: 0xC844, + 1056 - 167: 0xC845, + 1057 - 167: 0xC846, + 1058 - 167: 0xC847, + 1059 - 167: 0xC848, + 1060 - 167: 0xC849, + 1061 - 167: 0xC84A, + 1062 - 167: 0xC84B, + 1063 - 167: 0xC84C, + 1064 - 167: 0xC84D, + 1065 - 167: 0xC84E, + 1066 - 167: 0xC84F, + 1067 - 167: 0xC850, + 1068 - 167: 0xC851, + 1069 - 167: 0xC852, + 1070 - 167: 0xC853, + 1071 - 167: 0xC854, + 1072 - 167: 0xC855, + 1073 - 167: 0xC856, + 1074 - 167: 0xC857, + 1075 - 167: 0xC858, + 1076 - 167: 0xC859, + 1077 - 167: 0xC85A, + 1078 - 167: 0xC85C, + 1079 - 167: 0xC85D, + 1080 - 167: 0xC85E, + 1081 - 167: 0xC85F, + 1082 - 167: 0xC860, + 1083 - 167: 0xC861, + 1084 - 167: 0xC862, + 1085 - 167: 0xC863, + 1086 - 167: 0xC864, + 1087 - 167: 0xC865, + 1088 - 167: 0xC866, + 1089 - 167: 0xC867, + 1090 - 167: 0xC868, + 1091 - 167: 0xC869, + 1092 - 167: 0xC86A, + 1093 - 167: 0xC86B, + 1094 - 167: 0xC86C, + 1095 - 167: 0xC86D, + 1096 - 167: 0xC86E, + 1097 - 167: 0xC86F, + 1098 - 167: 0xC870, + 1099 - 167: 0xC871, + 1100 - 167: 0xC872, + 1101 - 167: 0xC873, + 1102 - 167: 0xC874, + 1103 - 167: 0xC875, + 1105 - 167: 0xC85B, +} + +const encode4Low, encode4High = 65072, 65518 + +var encode4 = [...]uint16{ + 65072 - 65072: 0xA14A, + 65073 - 65072: 0xA157, + 65075 - 65072: 0xA159, + 65076 - 65072: 0xA15B, + 65077 - 65072: 0xA15F, + 65078 - 65072: 0xA160, + 65079 - 65072: 0xA163, + 65080 - 65072: 0xA164, + 65081 - 65072: 0xA167, + 65082 - 65072: 0xA168, + 65083 - 65072: 0xA16B, + 65084 - 65072: 0xA16C, + 65085 - 65072: 0xA16F, + 65086 - 65072: 0xA170, + 65087 - 65072: 0xA173, + 65088 - 65072: 0xA174, + 65089 - 65072: 0xA177, + 65090 - 65072: 0xA178, + 65091 - 65072: 0xA17B, + 65092 - 65072: 0xA17C, + 65097 - 65072: 0xA1C6, + 65098 - 65072: 0xA1C7, + 65099 - 65072: 0xA1CA, + 65100 - 65072: 0xA1CB, + 65101 - 65072: 0xA1C8, + 65102 - 65072: 0xA1C9, + 65103 - 65072: 0xA15C, + 65104 - 65072: 0xA14D, + 65105 - 65072: 0xA14E, + 65106 - 65072: 0xA14F, + 65108 - 65072: 0xA151, + 65109 - 65072: 0xA152, + 65110 - 65072: 0xA153, + 65111 - 65072: 0xA154, + 65113 - 65072: 0xA17D, + 65114 - 65072: 0xA17E, + 65115 - 65072: 0xA1A1, + 65116 - 65072: 0xA1A2, + 65117 - 65072: 0xA1A3, + 65118 - 65072: 0xA1A4, + 65119 - 65072: 0xA1CC, + 65120 - 65072: 0xA1CD, + 65121 - 65072: 0xA1CE, + 65122 - 65072: 0xA1DE, + 65123 - 65072: 0xA1DF, + 65124 - 65072: 0xA1E0, + 65125 - 65072: 0xA1E1, + 65126 - 65072: 0xA1E2, + 65128 - 65072: 0xA242, + 65129 - 65072: 0xA24C, + 65130 - 65072: 0xA24D, + 65131 - 65072: 0xA24E, + 65281 - 65072: 0xA149, + 65282 - 65072: 0xC8D0, + 65283 - 65072: 0xA1AD, + 65284 - 65072: 0xA243, + 65285 - 65072: 0xA248, + 65286 - 65072: 0xA1AE, + 65287 - 65072: 0xC8CF, + 65288 - 65072: 0xA15D, + 65289 - 65072: 0xA15E, + 65290 - 65072: 0xA1AF, + 65291 - 65072: 0xA1CF, + 65292 - 65072: 0xA141, + 65293 - 65072: 0xA1D0, + 65294 - 65072: 0xA144, + 65295 - 65072: 0xA1FE, + 65296 - 65072: 0xA2AF, + 65297 - 65072: 0xA2B0, + 65298 - 65072: 0xA2B1, + 65299 - 65072: 0xA2B2, + 65300 - 65072: 0xA2B3, + 65301 - 65072: 0xA2B4, + 65302 - 65072: 0xA2B5, + 65303 - 65072: 0xA2B6, + 65304 - 65072: 0xA2B7, + 65305 - 65072: 0xA2B8, + 65306 - 65072: 0xA147, + 65307 - 65072: 0xA146, + 65308 - 65072: 0xA1D5, + 65309 - 65072: 0xA1D7, + 65310 - 65072: 0xA1D6, + 65311 - 65072: 0xA148, + 65312 - 65072: 0xA249, + 65313 - 65072: 0xA2CF, + 65314 - 65072: 0xA2D0, + 65315 - 65072: 0xA2D1, + 65316 - 65072: 0xA2D2, + 65317 - 65072: 0xA2D3, + 65318 - 65072: 0xA2D4, + 65319 - 65072: 0xA2D5, + 65320 - 65072: 0xA2D6, + 65321 - 65072: 0xA2D7, + 65322 - 65072: 0xA2D8, + 65323 - 65072: 0xA2D9, + 65324 - 65072: 0xA2DA, + 65325 - 65072: 0xA2DB, + 65326 - 65072: 0xA2DC, + 65327 - 65072: 0xA2DD, + 65328 - 65072: 0xA2DE, + 65329 - 65072: 0xA2DF, + 65330 - 65072: 0xA2E0, + 65331 - 65072: 0xA2E1, + 65332 - 65072: 0xA2E2, + 65333 - 65072: 0xA2E3, + 65334 - 65072: 0xA2E4, + 65335 - 65072: 0xA2E5, + 65336 - 65072: 0xA2E6, + 65337 - 65072: 0xA2E7, + 65338 - 65072: 0xA2E8, + 65339 - 65072: 0xC6E4, + 65340 - 65072: 0xA240, + 65341 - 65072: 0xC6E5, + 65343 - 65072: 0xA1C4, + 65345 - 65072: 0xA2E9, + 65346 - 65072: 0xA2EA, + 65347 - 65072: 0xA2EB, + 65348 - 65072: 0xA2EC, + 65349 - 65072: 0xA2ED, + 65350 - 65072: 0xA2EE, + 65351 - 65072: 0xA2EF, + 65352 - 65072: 0xA2F0, + 65353 - 65072: 0xA2F1, + 65354 - 65072: 0xA2F2, + 65355 - 65072: 0xA2F3, + 65356 - 65072: 0xA2F4, + 65357 - 65072: 0xA2F5, + 65358 - 65072: 0xA2F6, + 65359 - 65072: 0xA2F7, + 65360 - 65072: 0xA2F8, + 65361 - 65072: 0xA2F9, + 65362 - 65072: 0xA2FA, + 65363 - 65072: 0xA2FB, + 65364 - 65072: 0xA2FC, + 65365 - 65072: 0xA2FD, + 65366 - 65072: 0xA2FE, + 65367 - 65072: 0xA340, + 65368 - 65072: 0xA341, + 65369 - 65072: 0xA342, + 65370 - 65072: 0xA343, + 65371 - 65072: 0xA161, + 65372 - 65072: 0xA155, + 65373 - 65072: 0xA162, + 65374 - 65072: 0xA1E3, + 65504 - 65072: 0xA246, + 65505 - 65072: 0xA247, + 65506 - 65072: 0xC8CD, + 65507 - 65072: 0xA1C3, + 65508 - 65072: 0xC8CE, + 65509 - 65072: 0xA244, + 65517 - 65072: 0xF9FE, +} + +const encode5Low, encode5High = 194597, 195029 + +var encode5 = [...]uint16{ + 194597 - 194597: 0x9874, + 194619 - 194597: 0x9AC8, + 194624 - 194597: 0xA047, + 194680 - 194597: 0x8BC3, + 194708 - 194597: 0xFC48, + 194726 - 194597: 0xFC77, + 194765 - 194597: 0x9C52, + 194964 - 194597: 0x8EFD, + 194994 - 194597: 0x8FA8, + 195004 - 194597: 0x957A, + 195028 - 194597: 0x8FF0, +} + +const encode6Low, encode6High = 63751, 64014 + +var encode6 = [...]uint16{ + 63751 - 63751: 0x8BF8, + 64012 - 63751: 0xC94A, + 64013 - 63751: 0xDDFC, +} + +const encode7Low, encode7High = 175615, 175616 + +var encode7 = [...]uint16{ + 175615 - 175615: 0x87DC, +} diff --git a/vendor/modules.txt b/vendor/modules.txt index fd8578f58..6de5b30bf 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,6 +1,13 @@ # cloud.google.com/go v0.99.0 ## explicit; go 1.11 cloud.google.com/go/compute/metadata +# gitee.com/chunanyong/dm v1.8.14 +## explicit; go 1.13 +gitee.com/chunanyong/dm +gitee.com/chunanyong/dm/i18n +gitee.com/chunanyong/dm/parser +gitee.com/chunanyong/dm/security +gitee.com/chunanyong/dm/util # github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 ## explicit github.com/Azure/go-ansiterm @@ -410,6 +417,9 @@ github.com/golang/protobuf/ptypes github.com/golang/protobuf/ptypes/any github.com/golang/protobuf/ptypes/duration github.com/golang/protobuf/ptypes/timestamp +# github.com/golang/snappy v0.0.3 +## explicit +github.com/golang/snappy # github.com/google/btree v1.0.1 ## explicit; go 1.12 github.com/google/btree @@ -941,9 +951,14 @@ golang.org/x/term # golang.org/x/text v0.9.0 ## explicit; go 1.17 golang.org/x/text/encoding +golang.org/x/text/encoding/charmap +golang.org/x/text/encoding/ianaindex golang.org/x/text/encoding/internal golang.org/x/text/encoding/internal/identifier +golang.org/x/text/encoding/japanese +golang.org/x/text/encoding/korean golang.org/x/text/encoding/simplifiedchinese +golang.org/x/text/encoding/traditionalchinese golang.org/x/text/encoding/unicode golang.org/x/text/feature/plural golang.org/x/text/internal @@ -1643,7 +1658,7 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.2.0 ## explicit; go 1.12 sigs.k8s.io/yaml -# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20230714020436-02f1bfcc8e8e +# yunion.io/x/cloudmux v0.3.10-0-alpha.1.0.20240304114831-feebc346e513 ## explicit; go 1.18 yunion.io/x/cloudmux/pkg/apis yunion.io/x/cloudmux/pkg/apis/billing @@ -1659,14 +1674,14 @@ yunion.io/x/code-generator/pkg/swagger-gen/generators ## explicit; go 1.12 yunion.io/x/executor/apis yunion.io/x/executor/client -# yunion.io/x/jsonutils v1.0.1-0.20230613121553-0f3b41e2ef19 +# yunion.io/x/jsonutils v1.0.1-0.20240203102553-4096f103b401 ## explicit; go 1.18 yunion.io/x/jsonutils # yunion.io/x/log v1.0.1-0.20230411060016-feb3f46ab361 ## explicit; go 1.12 yunion.io/x/log yunion.io/x/log/hooks -# yunion.io/x/onecloud v0.0.0-20230718094204-288bb6d900db +# yunion.io/x/onecloud v0.0.0-20240305022950-ed2dd1f548c2 ## explicit; go 1.18 yunion.io/x/onecloud/locales yunion.io/x/onecloud/pkg/apis @@ -1711,15 +1726,17 @@ yunion.io/x/onecloud/pkg/mcclient/modules/identity yunion.io/x/onecloud/pkg/mcclient/modules/image yunion.io/x/onecloud/pkg/mcclient/modules/logger yunion.io/x/onecloud/pkg/mcclient/modules/notify +yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf yunion.io/x/onecloud/pkg/mcclient/options yunion.io/x/onecloud/pkg/mcclient/options/identity yunion.io/x/onecloud/pkg/monitor/notifydrivers/feishu yunion.io/x/onecloud/pkg/proxy yunion.io/x/onecloud/pkg/util/ansible yunion.io/x/onecloud/pkg/util/atexit -yunion.io/x/onecloud/pkg/util/bitmap yunion.io/x/onecloud/pkg/util/choices yunion.io/x/onecloud/pkg/util/ctx +yunion.io/x/onecloud/pkg/util/dbutils +yunion.io/x/onecloud/pkg/util/fileutils2 yunion.io/x/onecloud/pkg/util/hashcache yunion.io/x/onecloud/pkg/util/iproute2 yunion.io/x/onecloud/pkg/util/logclient @@ -1727,12 +1744,13 @@ yunion.io/x/onecloud/pkg/util/netutils2 yunion.io/x/onecloud/pkg/util/nopanic yunion.io/x/onecloud/pkg/util/procutils yunion.io/x/onecloud/pkg/util/rbacutils +yunion.io/x/onecloud/pkg/util/regutils2 yunion.io/x/onecloud/pkg/util/seclib2 yunion.io/x/onecloud/pkg/util/splitable yunion.io/x/onecloud/pkg/util/ssh yunion.io/x/onecloud/pkg/util/stringutils2 yunion.io/x/onecloud/pkg/util/tagutils -# yunion.io/x/pkg v1.0.1-0.20230711090507-0aafe0f0c9db +# yunion.io/x/pkg v1.10.1-0.20240303050651-73685b15a96e ## explicit; go 1.18 yunion.io/x/pkg/appctx yunion.io/x/pkg/errors @@ -1765,6 +1783,7 @@ yunion.io/x/pkg/util/seclib yunion.io/x/pkg/util/secrules yunion.io/x/pkg/util/sets yunion.io/x/pkg/util/signalutils +yunion.io/x/pkg/util/sortutils yunion.io/x/pkg/util/streamutils yunion.io/x/pkg/util/stringutils yunion.io/x/pkg/util/timeutils @@ -1775,14 +1794,15 @@ yunion.io/x/pkg/utils # yunion.io/x/s3cli v0.0.0-20190917004522-13ac36d8687e ## explicit; go 1.12 yunion.io/x/s3cli -# yunion.io/x/sqlchemy v1.1.2-0.20230712025503-b1892bc5944c +# yunion.io/x/sqlchemy v1.1.3-0.20240304110946-16faa82225e6 ## explicit; go 1.17 yunion.io/x/sqlchemy yunion.io/x/sqlchemy/backends yunion.io/x/sqlchemy/backends/clickhouse +yunion.io/x/sqlchemy/backends/dameng yunion.io/x/sqlchemy/backends/mysql yunion.io/x/sqlchemy/backends/sqlite -# yunion.io/x/structarg v0.0.0-20220312084958-9c6c79c7d1c6 +# yunion.io/x/structarg v0.0.0-20231017124457-df4d5009457c ## explicit; go 1.12 yunion.io/x/structarg # github.com/go-logr/logr => github.com/go-logr/logr v0.4.0 diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudaccount_const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudaccount_const.go index bf368c4df..7b8e35a8a 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudaccount_const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudaccount_const.go @@ -40,6 +40,12 @@ const ( CLOUD_PROVIDER_PROXMOX = "Proxmox" CLOUD_PROVIDER_REMOTEFILE = "RemoteFile" CLOUD_PROVIDER_H3C = "H3C" + CLOUD_PROVIDER_KSYUN = "Ksyun" + CLOUD_PROVIDER_BAIDU = "Baidu" + CLOUD_PROVIDER_CUCLOUD = "ChinaUnion" + CLOUD_PROVIDER_QINGCLOUD = "QingCloud" + CLOUD_PROVIDER_VOLCENGINE = "VolcEngine" + CLOUD_PROVIDER_ORACLE = "OracleCloud" CLOUD_PROVIDER_GENERICS3 = "S3" CLOUD_PROVIDER_CEPH = "Ceph" @@ -62,11 +68,10 @@ const ( CLOUD_ACCESS_ENV_AZURE_GERMAN = CLOUD_PROVIDER_AZURE + "-de" CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT = CLOUD_PROVIDER_AZURE + "-us-gov" CLOUD_ACCESS_ENV_AZURE_CHINA = CLOUD_PROVIDER_AZURE - CLOUD_ACCESS_ENV_HUAWEI_GLOBAL = CLOUD_PROVIDER_HUAWEI + "-int" - CLOUD_ACCESS_ENV_HUAWEI_CHINA = CLOUD_PROVIDER_HUAWEI CLOUD_ACCESS_ENV_ALIYUN_GLOBAL = CLOUD_PROVIDER_ALIYUN CLOUD_ACCESS_ENV_ALIYUN_FINANCE = CLOUD_PROVIDER_ALIYUN + "-fin" CLOUD_ACCESS_ENV_CTYUN_CHINA = CLOUD_PROVIDER_CTYUN CLOUD_ACCESS_ENV_ECLOUD_CHINA = CLOUD_PROVIDER_ECLOUD CLOUD_ACCESS_ENV_JDCLOUD_CHINA = CLOUD_PROVIDER_JDCLOUD + CLOUD_ACCESS_ENV_VOLCENGINE_CHINA = CLOUD_PROVIDER_VOLCENGINE ) diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudregions_const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudregions_const.go index e1a00e0c2..72a7a98e8 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudregions_const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/cloudregions_const.go @@ -25,27 +25,34 @@ const ( CITY_HU_HE_HAO_TE = "Huhehaote" //呼和浩特 CITY_HANG_ZHOU = "Hangzhou" //杭州 CITY_SHANG_HAI = "Shanghai" //上海 + CITY_QING_YANG = "Qingyang" //庆阳 CITY_SHEN_ZHEN = "Shenzhen" //深圳 CITY_HONG_KONG = "Hongkong" //香港 CITY_NING_XIA = "Ningxia" //宁夏 CITY_GUANG_ZHOU = "Guangzhou" //广州 CITY_TAI_WAN = "Taiwan" //台湾 CITY_GUI_YANG = "Guiyang" //贵阳 + CITY_HAE_BIN = "HaerBin" //哈尔滨 CITY_TAIPEI = "Taipei" //台北市 CITY_KAOHSIUNG = "Kaohsiung" //高雄市 CITY_CHENG_DU = "Chengdu" //成都 + CITY_CHENG_ZHOU = "ChengZhou" //郴州 + CITY_JIANG_XI = "JiangXi" //江西 CITY_HE_YUAN = "HeYuan" //河源 CITY_CHONG_QING = "Chongqing" //重庆 CITY_LAN_ZHOU = "Lanzhou" //兰州 CITY_TAI_YUAN = "Taiyuan" //太原 CITY_TIAN_JIN = "Tianjin" //天津 CITY_WU_LU_MU_QI = "Wulumuqi" //乌鲁木齐 - CITY_NAN_NING = "Nanning" //南宁 - CITY_ZHENG_ZHOU = "Zhengzhou" //郑州 - CITY_KUN_MING = "Kunming" //昆明 + CITY_NAN_NING = "NanNing" //南宁 + CITY_ZHENG_ZHOU = "ZhengZhou" //郑州 + CITY_KUN_MING = "KunMing" //昆明 + CITY_HE_FEI = "HeFei" //合肥 + CITY_FU_JIAN = "FuJian" //福建 + CITY_JIN_ZHONG = "JingZhong" //晋中 CITY_XI_AN = "Xian" //西安 CITY_HAI_KOU = "Haikou" //海口 - CITY_WU_HU = "Wuhu" //芜湖 + CITY_WU_HU = "WuHu" //芜湖 CITY_FU_ZHOU = "Fuzhou" //福州 CITY_WU_HAN = "Wuhan" //武汉 CITY_CHANG_SHA = "Changsha" //长沙 @@ -129,6 +136,7 @@ const ( CITY_PHOENIX = "Phoenix" //菲尼克斯 CITY_DALLAS = "Dallas" //达拉斯 CITY_COLUMBUS = "Columbus" //哥伦布 + CITY_INDIANAPOLIS = "Indianapolis" //印第安纳波利斯 // 英国 CITY_LONDON = "London" //伦敦 @@ -137,6 +145,7 @@ const ( // 阿拉伯联合酋长国 CITY_DUBAI = "Dubai" //迪拜 + CITY_DAMMAN = "Damman" //达曼 CITY_ABU_DHABI = "Abu Dhabi" // 阿布扎比 // 德国 @@ -163,7 +172,8 @@ const ( CITY_TARN = "Tarn" //塔恩 // 瑞典 - CITY_STOCKHOLM = "Stockholm" //斯德哥尔摩 + CITY_STOCKHOLM = "Stockholm" // 斯德哥尔摩 + CITY_SANDVIKEN = "Sandviken" // 桑德维肯 // 波兰 CITY_WARSAW = "Warsaw" // 华沙 @@ -206,10 +216,14 @@ const ( // 意大利 CITY_MILAN = "Milan" // 米兰 + CITY_TURIN = "Turin" // 都灵 // 西班牙 CITY_MADRID = "Madrid" // 马德里 + // 卡塔尔 + CITY_DOHA = "Doha" // 多哈 + COUNTRY_CODE_CN = "CN" //中国 COUNTRY_CODE_JP = "JP" //日本 COUNTRY_CODE_SG = "SG" //新加坡 @@ -244,4 +258,5 @@ const ( COUNTRY_CODE_IL = "IL" //以色列 COUNTRY_CODE_IT = "IT" //意大利 COUNTRY_CODE_ES = "ES" //西班牙 + COUNTRY_CODE_QA = "QA" //卡塔尔 ) diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/disk_const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/disk_const.go index 4ab6e6738..14e5b1197 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/disk_const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/disk_const.go @@ -39,4 +39,12 @@ const ( DISK_TYPE_SYS = "sys" DISK_TYPE_SWAP = "swap" DISK_TYPE_DATA = "data" + + DISK_PREALLOCATION_OFF = "off" + // 精简置备 + DISK_PREALLOCATION_METADATA = "metadata" + // 厚置备延迟归零 + DISK_PREALLOCATION_FALLOC = "falloc" + // 厚置备快速归零 + DISK_PREALLOCATION_FULL = "full" ) diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/guest_const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/guest_const.go index c33c5948c..124e93ee9 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/guest_const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/guest_const.go @@ -73,6 +73,12 @@ const ( HYPERVISOR_PROXMOX = "proxmox" HYPERVISOR_REMOTEFILE = "remotefile" HYPERVISOR_H3C = "h3c" + HYPERVISOR_KSYUN = "ksyun" + HYPERVISOR_BAIDU = "baidu" + HYPERVISOR_CUCLOUD = "cucloud" + HYPERVISOR_QINGCLOUD = "qingcloud" + HYPERVISOR_VOLCENGINE = "volcengine" + HYPERVISOR_ORACLE = "oracle" ) const ( diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/host_const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/host_const.go index a0dc3cd3b..2662b4e2b 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/host_const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/host_const.go @@ -14,6 +14,8 @@ package compute +type TNicType string + const ( HOST_TYPE_ESXI = "esxi" // # VMWare vSphere ESXi @@ -40,14 +42,20 @@ const ( HOST_TYPE_PROXMOX = "proxmox" HOST_TYPE_REMOTEFILE = "remotefile" HOST_TYPE_H3C = "h3c" + HOST_TYPE_KSYUN = "ksyun" + HOST_TYPE_BAIDU = "baidu" + HOST_TYPE_CUCLOUD = "cucloud" + HOST_TYPE_QINGCLOUD = "qingcloud" + HOST_TYPE_VOLCENGINE = "volcengine" + HOST_TYPE_ORACLE = "oracle" // # possible status HOST_ONLINE = "online" HOST_OFFLINE = "offline" - NIC_TYPE_IPMI = "ipmi" - NIC_TYPE_ADMIN = "admin" - // #NIC_TYPE_NORMAL = 'normal' + NIC_TYPE_IPMI = TNicType("ipmi") + NIC_TYPE_ADMIN = TNicType("admin") + NIC_TYPE_NORMAL = TNicType("") BAREMETAL_READY = "ready" BAREMETAL_RUNNING = "running" diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/natgateway.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/natgateway.go index 4a49b8d7a..dee361da6 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/natgateway.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/natgateway.go @@ -30,4 +30,9 @@ const ( QCLOUD_NAT_SPEC_SMALL = "small" QCLOUD_NAT_SPEC_MIDDLE = "middle" QCLOUD_NAT_SPEC_LARGE = "large" + + // 公网 + NAT_NETWORK_TYPE_INTERNET = "internet" + // VPC + NAT_NETWORK_TYPE_INTRANET = "intranet" ) diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/regiondata.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/regiondata.go index 88c49bd48..7b5e8f1a0 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/regiondata.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/regiondata.go @@ -21,14 +21,14 @@ import ( var ( // China RegionBeijing = cloudprovider.SGeographicInfo{ - Latitude: 39.90419989999999, - Longitude: 116.4073963, + Latitude: 39.904, + Longitude: 116.407, City: CITY_BEI_JING, CountryCode: COUNTRY_CODE_CN, } RegionNingxia = cloudprovider.SGeographicInfo{ - Latitude: 37.198731, - Longitude: 106.1580937, + Latitude: 37.199, + Longitude: 106.158, City: CITY_NING_XIA, CountryCode: COUNTRY_CODE_CN, } @@ -38,119 +38,245 @@ var ( City: CITY_SHANG_HAI, CountryCode: COUNTRY_CODE_CN, } + RegionQingYang = cloudprovider.SGeographicInfo{ + Latitude: 35.73, + Longitude: 107.61, + City: CITY_QING_YANG, + CountryCode: COUNTRY_CODE_CN, + } RegionGuangzhou = cloudprovider.SGeographicInfo{ - Latitude: 23.12911, - Longitude: 113.264385, + Latitude: 23.129, + Longitude: 113.264, City: CITY_GUANG_ZHOU, CountryCode: COUNTRY_CODE_CN, } + RegionSuzhou = cloudprovider.SGeographicInfo{ + Latitude: 31.328, + Longitude: 120.479, + City: CITY_SU_ZHOU, + CountryCode: COUNTRY_CODE_CN, + } RegionDalian = cloudprovider.SGeographicInfo{ - Latitude: 38.91400300000001, - Longitude: 121.614682, + Latitude: 38.914, + Longitude: 121.615, City: CITY_DA_LIAN, CountryCode: COUNTRY_CODE_CN, } RegionGuiyang = cloudprovider.SGeographicInfo{ - Latitude: 26.6470035286, - Longitude: 106.6302113880, + Latitude: 26.647, + Longitude: 106.63, City: CITY_GUI_YANG, CountryCode: COUNTRY_CODE_CN, } + RegionHaerbin = cloudprovider.SGeographicInfo{ + Latitude: 45.757, + Longitude: 126.57, + City: CITY_HAE_BIN, + CountryCode: COUNTRY_CODE_CN, + } + RegionZhengzhou = cloudprovider.SGeographicInfo{ + Latitude: 34.743, + Longitude: 113.498, + City: CITY_ZHENG_ZHOU, + CountryCode: COUNTRY_CODE_CN, + } RegionNeimenggu = cloudprovider.SGeographicInfo{ - Latitude: 41.0178713, - Longitude: 113.094978, + Latitude: 41.018, + Longitude: 113.095, City: CITY_NEI_MENG_GU, CountryCode: COUNTRY_CODE_CN, } RegionQingdao = cloudprovider.SGeographicInfo{ - Latitude: 36.067108, - Longitude: 120.382607, + Latitude: 36.067, + Longitude: 120.383, City: CITY_QING_DAO, CountryCode: COUNTRY_CODE_CN, } + RegionBaoDing = cloudprovider.SGeographicInfo{ + Latitude: 38.871, + Longitude: 115.393, + City: CITY_BAO_DING, + CountryCode: COUNTRY_CODE_CN, + } RegionZhangjiakou = cloudprovider.SGeographicInfo{ - Latitude: 40.767544, - Longitude: 114.886337, + Latitude: 40.768, + Longitude: 114.886, City: CITY_ZHANG_JIA_KOU, CountryCode: COUNTRY_CODE_CN, } RegionHuhehaote = cloudprovider.SGeographicInfo{ - Latitude: 40.842358, - Longitude: 111.749992, + Latitude: 40.842, + Longitude: 111.75, City: CITY_HU_HE_HAO_TE, CountryCode: COUNTRY_CODE_CN, } RegionHangzhou = cloudprovider.SGeographicInfo{ - Latitude: 30.274084, - Longitude: 120.155067, + Latitude: 30.274, + Longitude: 120.155, City: CITY_HANG_ZHOU, CountryCode: COUNTRY_CODE_CN, } + RegionWuhan = cloudprovider.SGeographicInfo{ + Latitude: 30.568, + Longitude: 114.136, + City: CITY_WU_HAN, + CountryCode: COUNTRY_CODE_CN, + } + RegionFoshan = cloudprovider.SGeographicInfo{ + Latitude: 23.009, + Longitude: 113.024, + City: CITY_FO_SHAN, + CountryCode: COUNTRY_CODE_CN, + } + RegionXian = cloudprovider.SGeographicInfo{ + Latitude: 34.26, + Longitude: 108.802, + City: CITY_XI_AN, + CountryCode: COUNTRY_CODE_CN, + } + RegionLanzhou = cloudprovider.SGeographicInfo{ + Latitude: 36.078, + Longitude: 103.596, + City: CITY_LAN_ZHOU, + CountryCode: COUNTRY_CODE_CN, + } + RegionWuhu = cloudprovider.SGeographicInfo{ + Latitude: 31.3285, + Longitude: 118.312, + City: CITY_WU_HU, + CountryCode: COUNTRY_CODE_CN, + } RegionShenzhen = cloudprovider.SGeographicInfo{ - Latitude: 22.543097, - Longitude: 114.057861, + Latitude: 22.543, + Longitude: 114.058, City: CITY_SHEN_ZHEN, CountryCode: COUNTRY_CODE_CN, } + RegionKunming = cloudprovider.SGeographicInfo{ + Latitude: 25.021, + Longitude: 102.659, + City: CITY_KUN_MING, + CountryCode: COUNTRY_CODE_CN, + } + RegionHefei = cloudprovider.SGeographicInfo{ + Latitude: 31.855, + Longitude: 117.204, + City: CITY_HE_FEI, + CountryCode: COUNTRY_CODE_CN, + } + RegionFujian = cloudprovider.SGeographicInfo{ + Latitude: 25.925, + Longitude: 116.98, + City: CITY_FU_JIAN, + CountryCode: COUNTRY_CODE_CN, + } + RegionJinzhong = cloudprovider.SGeographicInfo{ + Latitude: 37.699, + Longitude: 112.662, + City: CITY_JIN_ZHONG, + CountryCode: COUNTRY_CODE_CN, + } + RegionNanning = cloudprovider.SGeographicInfo{ + Latitude: 22.822, + Longitude: 108.204, + City: CITY_NAN_NING, + CountryCode: COUNTRY_CODE_CN, + } + RegionChengzhou = cloudprovider.SGeographicInfo{ + Latitude: 25.777, + Longitude: 112.975, + City: CITY_CHENG_ZHOU, + CountryCode: COUNTRY_CODE_CN, + } + RegionChangsha = cloudprovider.SGeographicInfo{ + Latitude: 28.176, + Longitude: 112.86, + City: CITY_CHANG_SHA, + CountryCode: COUNTRY_CODE_CN, + } + RegionJiangxi = cloudprovider.SGeographicInfo{ + Latitude: 27.274, + Longitude: 114.713, + City: CITY_JIANG_XI, + CountryCode: COUNTRY_CODE_CN, + } + RegionHunan = cloudprovider.SGeographicInfo{ + Latitude: 27.274, + Longitude: 114.713, + City: CITY_JIANG_XI, + CountryCode: COUNTRY_CODE_CN, + } + RegionHaikou = cloudprovider.SGeographicInfo{ + Latitude: 20.012, + Longitude: 110.236, + City: CITY_HAI_KOU, + CountryCode: COUNTRY_CODE_CN, + } + RegionTianjin = cloudprovider.SGeographicInfo{ + Latitude: 39.125, + Longitude: 117.131, + City: CITY_TIAN_JIN, + CountryCode: COUNTRY_CODE_CN, + } RegionChengdu = cloudprovider.SGeographicInfo{ - Latitude: 30.572815, - Longitude: 104.066803, + Latitude: 30.573, + Longitude: 104.067, City: CITY_CHENG_DU, CountryCode: COUNTRY_CODE_CN, } RegionHeyuan = cloudprovider.SGeographicInfo{ - Latitude: 23.7292717, - Longitude: 114.6965786, + Latitude: 23.729, + Longitude: 114.697, City: CITY_HE_YUAN, CountryCode: COUNTRY_CODE_CN, } RegionWulanchabu = cloudprovider.SGeographicInfo{ - Latitude: 41.0178065, - Longitude: 113.094978, + Latitude: 41.018, + Longitude: 113.095, City: CITY_WU_LAN_CHA_BU, CountryCode: COUNTRY_CODE_CN, } RegionChongqing = cloudprovider.SGeographicInfo{ - Latitude: 29.431585, - Longitude: 106.912254, + Latitude: 29.432, + Longitude: 106.912, City: CITY_CHONG_QING, CountryCode: COUNTRY_CODE_CN, } RegionNanjing = cloudprovider.SGeographicInfo{ - Latitude: 32.0584065670, - Longitude: 118.7964897811, + Latitude: 32.058, + Longitude: 118.796, City: CITY_NAN_JING, CountryCode: COUNTRY_CODE_CN, } // Asia RegionTaiwan = cloudprovider.SGeographicInfo{ - Latitude: 25.0443, + Latitude: 25.044, Longitude: 121.509, City: CITY_TAI_WAN, CountryCode: COUNTRY_CODE_CN, } RegionHongkong = cloudprovider.SGeographicInfo{ - Latitude: 22.396427, - Longitude: 114.109497, + Latitude: 22.396, + Longitude: 114.109, City: CITY_HONG_KONG, CountryCode: COUNTRY_CODE_CN, } RegionTokyo = cloudprovider.SGeographicInfo{ - Latitude: 35.709026, - Longitude: 139.731995, + Latitude: 35.709, + Longitude: 139.732, City: CITY_TOKYO, CountryCode: COUNTRY_CODE_JP, } RegionOsaka = cloudprovider.SGeographicInfo{ - Latitude: 34.6937378, - Longitude: 135.5021651, + Latitude: 34.694, + Longitude: 135.502, City: CITY_OSAKA, CountryCode: COUNTRY_CODE_JP, } RegionSeoul = cloudprovider.SGeographicInfo{ - Latitude: 34.6937378, - Longitude: 135.5021651, + Latitude: 34.694, + Longitude: 135.502, City: CITY_SEOUL, CountryCode: COUNTRY_CODE_KR, } @@ -162,8 +288,8 @@ var ( } RegionMumbai = cloudprovider.SGeographicInfo{ - Latitude: 19.07599, - Longitude: 72.877393, + Latitude: 19.076, + Longitude: 72.877, City: CITY_MUMBAI, CountryCode: COUNTRY_CODE_IN, } @@ -187,54 +313,54 @@ var ( CountryCode: COUNTRY_CODE_IN, } RegionHyderabad = cloudprovider.SGeographicInfo{ - Latitude: 17.4123318, - Longitude: 78.3256457, + Latitude: 17.412, + Longitude: 78.326, City: CITY_HYDERABAD, CountryCode: COUNTRY_CODE_IN, } RegionSingapore = cloudprovider.SGeographicInfo{ - Latitude: 1.352083, - Longitude: 103.819839, + Latitude: 1.352, + Longitude: 103.82, City: CITY_SINGAPORE, CountryCode: COUNTRY_CODE_SG, } // 雅加达 RegionJakarta = cloudprovider.SGeographicInfo{ - Latitude: -6.175110, - Longitude: 106.865036, + Latitude: -6.175, + Longitude: 106.865, City: CITY_JAKARTA, CountryCode: COUNTRY_CODE_ID, } RegionKualaLumpur = cloudprovider.SGeographicInfo{ - Latitude: 3.139003, - Longitude: 101.686852, + Latitude: 3.139, + Longitude: 101.687, City: CITY_KUALA_LUMPUR, CountryCode: COUNTRY_CODE_MY, } RegionBangkok = cloudprovider.SGeographicInfo{ - Latitude: 13.7563309, - Longitude: 100.5017651, + Latitude: 13.756, + Longitude: 100.502, City: CITY_BANGKOK, CountryCode: COUNTRY_CODE_TH, } RegionSydney = cloudprovider.SGeographicInfo{ - Latitude: -33.8688197, - Longitude: 151.2092955, + Latitude: -33.869, + Longitude: 151.209, City: CITY_SYDNEY, CountryCode: COUNTRY_CODE_AU, } // 墨尔本 RegionMelbourne = cloudprovider.SGeographicInfo{ - Latitude: -37.813611, - Longitude: 144.963056, + Latitude: -37.814, + Longitude: 144.963, City: CITY_MELBOURNE, CountryCode: COUNTRY_CODE_AU, } //亚拉伦拉 澳大利亚 RegionYarralumla = cloudprovider.SGeographicInfo{ - Latitude: -35.3016, + Latitude: -35.302, Longitude: 149.078, City: CITY_YARRALUMLA, CountryCode: COUNTRY_CODE_AU, @@ -242,69 +368,69 @@ var ( // Africa RegionCapeTown = cloudprovider.SGeographicInfo{ - Latitude: -33.9152209, - Longitude: 18.3758904, + Latitude: -33.915, + Longitude: 18.376, City: CITY_CAPE_TOWN, CountryCode: COUNTRY_CODE_ZA, } // 比勒陀利亚 RegionPretoria = cloudprovider.SGeographicInfo{ - Latitude: -25.716667, - Longitude: 28.283333, + Latitude: -25.717, + Longitude: 28.283, City: CITY_PRETORIA, CountryCode: COUNTRY_CODE_ZA, } RegionJohannesburg = cloudprovider.SGeographicInfo{ - Latitude: -26.1714537, - Longitude: 27.8999389, + Latitude: -26.171, + Longitude: 27.9, City: CITY_JOHANNESBURG, CountryCode: COUNTRY_CODE_ZA, } // Middleeast RegionBahrain = cloudprovider.SGeographicInfo{ - Latitude: 25.9408826, - Longitude: 50.4474957, + Latitude: 25.941, + Longitude: 50.447, City: CITY_BAHRAIN, CountryCode: COUNTRY_CODE_BH, } // 迪拜 RegionDubai = cloudprovider.SGeographicInfo{ - Latitude: 25.263056, - Longitude: 55.297222, + Latitude: 25.263, + Longitude: 55.297, City: CITY_DUBAI, CountryCode: COUNTRY_CODE_AE, } // 阿布扎比 RegionAbuDhabi = cloudprovider.SGeographicInfo{ - Latitude: 24.3867414, - Longitude: 54.3938162, + Latitude: 24.387, + Longitude: 54.394, City: CITY_ABU_DHABI, CountryCode: COUNTRY_CODE_AE, } // Europe RegionFinland = cloudprovider.SGeographicInfo{ - Latitude: 64.8255731, - Longitude: 21.5432837, + Latitude: 64.826, + Longitude: 21.543, City: CITY_FINLAND, CountryCode: COUNTRY_CODE_FI, } RegionBelgium = cloudprovider.SGeographicInfo{ - Latitude: 50.499734, - Longitude: 3.9057517, + Latitude: 50.5, + Longitude: 3.906, City: CITY_BELGIUM, CountryCode: COUNTRY_CODE_BE, } RegionLondon = cloudprovider.SGeographicInfo{ - Latitude: 51.507351, - Longitude: -0.127758, + Latitude: 51.507, + Longitude: -0.128, City: CITY_LONDON, CountryCode: COUNTRY_CODE_GB, } RegionHalton = cloudprovider.SGeographicInfo{ - Latitude: 53.3331, - Longitude: -2.6957, + Latitude: 53.333, + Longitude: -2.696, City: CITY_HALTON, CountryCode: COUNTRY_CODE_GB, } @@ -315,125 +441,137 @@ var ( CountryCode: COUNTRY_CODE_GB, } RegionFrankfurt = cloudprovider.SGeographicInfo{ - Latitude: 51.165691, - Longitude: 10.451526, + Latitude: 51.166, + Longitude: 10.452, City: CITY_FRANKFURT, CountryCode: COUNTRY_CODE_DE, } RegionHolland = cloudprovider.SGeographicInfo{ - Latitude: 52.2076831, - Longitude: 4.1585786, + Latitude: 52.208, + Longitude: 4.159, City: CITY_HOLLAND, CountryCode: COUNTRY_CODE_NL, } RegionZurich = cloudprovider.SGeographicInfo{ - Latitude: 47.3774497, - Longitude: 8.5016958, + Latitude: 47.377, + Longitude: 8.502, City: CITY_ZURICH, CountryCode: COUNTRY_CODE_CH, } RegionMilan = cloudprovider.SGeographicInfo{ - Latitude: 45.4627124, - Longitude: 9.1076929, + Latitude: 45.463, + Longitude: 9.108, City: CITY_MILAN, CountryCode: COUNTRY_CODE_IT, } RegionWarsaw = cloudprovider.SGeographicInfo{ - Latitude: 52.233333, - Longitude: 21.016667, + Latitude: 52.233, + Longitude: 21.017, City: CITY_WARSAW, CountryCode: COUNTRY_CODE_PL, } RegionMadrid = cloudprovider.SGeographicInfo{ - Latitude: 40.4378698, - Longitude: -3.8196188, + Latitude: 40.438, + Longitude: -3.82, City: CITY_MADRID, CountryCode: COUNTRY_CODE_ES, } RegionIreland = cloudprovider.SGeographicInfo{ - Latitude: 53.41291, - Longitude: -8.24389, + Latitude: 53.413, + Longitude: -8.244, City: CITY_IRELAND, CountryCode: COUNTRY_CODE_IE, } RegionDublin = cloudprovider.SGeographicInfo{ - Latitude: 53.349722, - Longitude: -6.260278, + Latitude: 53.35, + Longitude: -6.26, City: CITY_DUBLIN, CountryCode: COUNTRY_CODE_IE, } RegionParis = cloudprovider.SGeographicInfo{ - Latitude: 48.856614, - Longitude: 2.3522219, + Latitude: 48.857, + Longitude: 2.352, City: CITY_PARIS, CountryCode: COUNTRY_CODE_FR, } + RegionTurin = cloudprovider.SGeographicInfo{ + Latitude: 45.07, + Longitude: 7.63, + City: CITY_TURIN, + CountryCode: COUNTRY_CODE_IT, + } RegionAllier = cloudprovider.SGeographicInfo{ - Latitude: 46.5178, - Longitude: 3.3592, + Latitude: 46.518, + Longitude: 3.359, City: CITY_ALLIER, CountryCode: COUNTRY_CODE_FR, } RegionTarn = cloudprovider.SGeographicInfo{ - Latitude: 43.8656, + Latitude: 43.866, Longitude: 1.505, City: CITY_TARN, CountryCode: COUNTRY_CODE_FR, } RegionStockholm = cloudprovider.SGeographicInfo{ - Latitude: 59.1946, + Latitude: 59.195, Longitude: 18.47, City: CITY_STOCKHOLM, CountryCode: COUNTRY_CODE_SE, } + RegionSandviken = cloudprovider.SGeographicInfo{ + Latitude: 59, + Longitude: 27.66, + City: CITY_SANDVIKEN, + CountryCode: COUNTRY_CODE_SE, + } RegionDelmenhorst = cloudprovider.SGeographicInfo{ - Latitude: 53.050556, - Longitude: 8.631667, + Latitude: 53.051, + Longitude: 8.632, City: CITY_DELMENHORST, CountryCode: COUNTRY_CODE_DE, } RegionGeneva = cloudprovider.SGeographicInfo{ - Latitude: 46.201667, - Longitude: 6.146944, + Latitude: 46.202, + Longitude: 6.147, City: CITY_GENEVA, CountryCode: COUNTRY_CODE_CH, } RegionStavanger = cloudprovider.SGeographicInfo{ - Latitude: 58.963333, - Longitude: 5.718889, + Latitude: 58.963, + Longitude: 5.719, City: CITY_STAVANGER, CountryCode: COUNTRY_CODE_NO, } RegionOslo = cloudprovider.SGeographicInfo{ - Latitude: 59.905556, - Longitude: 10.768333, + Latitude: 59.906, + Longitude: 10.768, City: CITY_OSLO, CountryCode: COUNTRY_CODE_NO, } RegionMoscow = cloudprovider.SGeographicInfo{ - Latitude: 55.755825, - Longitude: 37.617298, + Latitude: 55.756, + Longitude: 37.617, City: CITY_MOSCOW, CountryCode: COUNTRY_CODE_RU, } // America RegionMontreal = cloudprovider.SGeographicInfo{ - Latitude: 45.5580206, - Longitude: -73.8003414, + Latitude: 45.558, + Longitude: -73.8, City: CITY_MONTREAL, CountryCode: COUNTRY_CODE_CA, } RegionToronto = cloudprovider.SGeographicInfo{ - Latitude: 43.653225, - Longitude: -79.383186, + Latitude: 43.653, + Longitude: -79.383, City: CITY_TORONTO, CountryCode: COUNTRY_CODE_CA, } RegionCanadaCentral = cloudprovider.SGeographicInfo{ - Latitude: 56.130366, - Longitude: -106.346771, + Latitude: 56.13, + Longitude: -106.347, City: CITY_CANADA_CENTRAL, CountryCode: COUNTRY_CODE_CA, } @@ -445,42 +583,42 @@ var ( } RegionSaoPaulo = cloudprovider.SGeographicInfo{ - Latitude: -23.5505199, - Longitude: -46.6333094, + Latitude: -23.551, + Longitude: -46.633, City: CITY_SAO_PAULO, CountryCode: COUNTRY_CODE_BR, } // 里约热内卢 RegionRioDeJaneiro = cloudprovider.SGeographicInfo{ - Latitude: -22.9083, - Longitude: -43.1964, + Latitude: -22.908, + Longitude: -43.196, City: CITY_RIO_DE_JANEIRO, CountryCode: COUNTRY_CODE_BR, } RegionMexico = cloudprovider.SGeographicInfo{ - Latitude: 55.1182908, - Longitude: 141.0377645, + Latitude: 55.118, + Longitude: 141.038, City: CITY_MEXICO, CountryCode: COUNTRY_CODE_MX, } RegionSantiago = cloudprovider.SGeographicInfo{ - Latitude: -33.45206, - Longitude: -70.676031, + Latitude: -33.452, + Longitude: -70.676, City: CITY_SANTIAGO, CountryCode: COUNTRY_CODE_CL, } RegionIowa = cloudprovider.SGeographicInfo{ - Latitude: 41.9328655, - Longitude: -94.5106809, + Latitude: 41.933, + Longitude: -94.511, City: CITY_IOWA, CountryCode: COUNTRY_CODE_US, } RegionCarolina = cloudprovider.SGeographicInfo{ - Latitude: 33.6194409, - Longitude: -82.0475635, + Latitude: 33.619, + Longitude: -82.047, City: CITY_SOUTH_CAROLINA, CountryCode: COUNTRY_CODE_US, } @@ -492,8 +630,8 @@ var ( CountryCode: COUNTRY_CODE_US, } RegionVirginia = cloudprovider.SGeographicInfo{ - Latitude: 37.4315734, - Longitude: -78.6568942, + Latitude: 37.432, + Longitude: -78.657, City: CITY_VIRGINIA, CountryCode: COUNTRY_CODE_US, } @@ -504,14 +642,14 @@ var ( CountryCode: COUNTRY_CODE_US, } RegionChicago = cloudprovider.SGeographicInfo{ - Latitude: 41.8819, - Longitude: -87.6278, + Latitude: 41.882, + Longitude: -87.628, City: CITY_CHICAGO, CountryCode: COUNTRY_CODE_US, } RegionPhoenix = cloudprovider.SGeographicInfo{ - Latitude: 33.4483, - Longitude: -112.0739, + Latitude: 33.448, + Longitude: -112.074, City: CITY_PHOENIX, CountryCode: COUNTRY_CODE_US, } @@ -522,87 +660,111 @@ var ( CountryCode: COUNTRY_CODE_US, } RegionSanFrancisco = cloudprovider.SGeographicInfo{ - Latitude: 37.7775, - Longitude: -122.4164, + Latitude: 37.778, + Longitude: -122.416, City: CITY_SAN_FRANCISCO, CountryCode: COUNTRY_CODE_US, } RegionSiliconValley = cloudprovider.SGeographicInfo{ - Latitude: 37.387474, - Longitude: -122.057541, + Latitude: 37.387, + Longitude: -122.058, City: CITY_SILICONVALLEY, CountryCode: COUNTRY_CODE_US, } RegionNothVirginia = cloudprovider.SGeographicInfo{ - Latitude: 37.4315734, - Longitude: -78.6568942, + Latitude: 37.432, + Longitude: -78.657, City: CITY_N_VIRGINIA, CountryCode: COUNTRY_CODE_US, } RegionOregon = cloudprovider.SGeographicInfo{ - Latitude: 43.8041334, - Longitude: -120.5542012, + Latitude: 43.804, + Longitude: -120.554, City: CITY_OREGON, CountryCode: COUNTRY_CODE_US, } RegionLosAngeles = cloudprovider.SGeographicInfo{ - Latitude: 34.0522342, - Longitude: -118.2436849, + Latitude: 34.052, + Longitude: -118.244, City: CITY_LOS_ANGELES, CountryCode: COUNTRY_CODE_US, } RegionSaltLakeCity = cloudprovider.SGeographicInfo{ - Latitude: 40.7767168, - Longitude: -111.9905243, + Latitude: 40.777, + Longitude: -111.991, City: CITY_SALT_LAKE_CITY, CountryCode: COUNTRY_CODE_US, } RegionLasVegas = cloudprovider.SGeographicInfo{ - Latitude: 36.1249185, - Longitude: -115.3150811, + Latitude: 36.125, + Longitude: -115.315, City: CITY_LAS_VEGAS, CountryCode: COUNTRY_CODE_US, } RegionDallas = cloudprovider.SGeographicInfo{ - Latitude: 32.7844251, - Longitude: -96.8913045, + Latitude: 32.784, + Longitude: -96.891, City: CITY_DALLAS, CountryCode: COUNTRY_CODE_US, } RegionColumbus = cloudprovider.SGeographicInfo{ - Latitude: 32.0879267, - Longitude: 34.7622266, + Latitude: 39.983, + Longitude: -83.156, + City: CITY_COLUMBUS, + CountryCode: COUNTRY_CODE_US, + } + RegionIndianapolis = cloudprovider.SGeographicInfo{ + Latitude: 39.78, + Longitude: -82.62, + City: CITY_INDIANAPOLIS, + CountryCode: COUNTRY_CODE_US, + } + RegionTelAviv = cloudprovider.SGeographicInfo{ + Latitude: 32.088, + Longitude: 34.762, City: CITY_TEL_AVIV, CountryCode: COUNTRY_CODE_IL, } + RegionDamman = cloudprovider.SGeographicInfo{ + Latitude: 26.36, + Longitude: 49.91, + City: CITY_DAMMAN, + CountryCode: COUNTRY_CODE_AE, + } + RegionDoha = cloudprovider.SGeographicInfo{ + Latitude: 25.28, + Longitude: 51.43, + City: CITY_DOHA, + CountryCode: COUNTRY_CODE_QA, + } RegionNorthCalifornia = cloudprovider.SGeographicInfo{ - Latitude: 38.8375215, - Longitude: -120.8958242, + Latitude: 38.838, + Longitude: -120.896, City: CITY_N_CALIFORNIA, CountryCode: COUNTRY_CODE_US, } RegionOhio = cloudprovider.SGeographicInfo{ - Latitude: 40.4172871, - Longitude: -82.90712300000001, + Latitude: 40.417, + Longitude: -82.907, City: CITY_OHIO, CountryCode: COUNTRY_CODE_US, } RegionUSGOVWest = cloudprovider.SGeographicInfo{ - Latitude: 37.09024, - Longitude: -95.712891, + Latitude: 37.09, + Longitude: -95.713, City: CITY_US_GOV_WEST, CountryCode: COUNTRY_CODE_US, } RegionJioIndiaWest = cloudprovider.SGeographicInfo{ - Latitude: 22.4707, - Longitude: 70.0577, + Latitude: 22.471, + Longitude: 70.058, City: CITY_JAMNAGAR, CountryCode: COUNTRY_CODE_IN, } RegionJioIndiaCentral = cloudprovider.SGeographicInfo{ - Latitude: 21.1466, - Longitude: 79.0889, + Latitude: 21.147, + Longitude: 79.09, City: CITY_NAGPUR, CountryCode: COUNTRY_CODE_IN, } diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/snapshot_const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/snapshot_const.go index 6b5a09175..2399c9701 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/snapshot_const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/snapshot_const.go @@ -23,10 +23,5 @@ const ( SNAPSHOT_DELETING = "deleting" SNAPSHOT_UNKNOWN = "unknown" - SNAPSHOT_POLICY_CREATING = "creating" - - SNAPSHOT_POLICY_READY = "ready" - SNAPSHOT_POLICY_UNKNOWN = "unknown" - INSTANCE_SNAPSHOT_READY = "ready" ) diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/storage_const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/storage_const.go index 8fad498f9..9687ec2e5 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/compute/storage_const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/compute/storage_const.go @@ -60,11 +60,12 @@ const ( STORAGE_CLOUD_HSSD = "cloud_hssd" //增强型SSD云硬盘 // huawei storage type - STORAGE_HUAWEI_SSD = "SSD" // 超高IO云硬盘 - STORAGE_HUAWEI_SAS = "SAS" // 高IO云硬盘 - STORAGE_HUAWEI_SATA = "SATA" // 普通IO云硬盘 - STORAGE_HUAWEI_GPSSD = "GPSSD" // 通用型SSD - STORAGE_HUAWEI_ESSD = "ESSD" // 急速型SSD + STORAGE_HUAWEI_SSD = "SSD" // 超高IO云硬盘 + STORAGE_HUAWEI_SAS = "SAS" // 高IO云硬盘 + STORAGE_HUAWEI_SATA = "SATA" // 普通IO云硬盘 + STORAGE_HUAWEI_GPSSD = "GPSSD" // 通用型SSD + STORAGE_HUAWEI_GPSSD2 = "GPSSD2" // 通用型SSD V2 + STORAGE_HUAWEI_ESSD = "ESSD" // 急速型SSD // openstack STORAGE_OPENSTACK_ISCSI = "iscsi" @@ -88,9 +89,10 @@ const ( STORAGE_GOOGLE_PD_BALANCED = "pd-balanced" //平衡永久性磁盘 // ctyun storage type - STORAGE_CTYUN_SSD = "SSD" // 超高IO云硬盘 - STORAGE_CTYUN_SAS = "SAS" // 高IO云硬盘 - STORAGE_CTYUN_SATA = "SATA" // 普通IO云硬盘 + STORAGE_CTYUN_SSD = "SSD" // 超高IO云硬盘 + STORAGE_CTYUN_SAS = "SAS" // 高IO云硬盘 + STORAGE_CTYUN_SATA = "SATA" // 普通IO云硬盘 + STORAGE_CTYUN_SSD_GENRIC = "SSD-genric" // 超高IO // jd cloud storage type STORAGE_JDCLOUD_GP1 = "ssd.gp1" // 通用型SSD云硬盘 @@ -104,6 +106,14 @@ const ( STORAGE_ECLOUD_SSD = "ssd" // 高性能盘 STORAGE_ECLOUD_SSDEBS = "ssdebs" // 性能优化盘 STORAGE_ECLOUD_SYSTEM = "system" // 系统盘 + + // volcengine storage type + STORAGE_VOLCENGINE_FlexPL = "ESSD_FlexPL" // 极速型SSD(单盘最大IOPS 5万) + STORAGE_VOLCENGINE_PL0 = "ESSD_PL0" // 极速型SSD(单盘最大IOPS 1万) + STORAGE_VOLCENGINE_PTSSD = "PTSSD" // 性能型SSD(上一代产品) + + STORAGE_FULL = "full" + STORAGE_SYSTEM_FULL = "system_full" ) const ( diff --git a/vendor/yunion.io/x/cloudmux/pkg/apis/const.go b/vendor/yunion.io/x/cloudmux/pkg/apis/const.go index da02f1632..206242cb3 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/apis/const.go +++ b/vendor/yunion.io/x/cloudmux/pkg/apis/const.go @@ -19,6 +19,8 @@ const ( STATUS_DELETE_FAILED = "delete_failed" STATUS_CREATING = "creating" STATUS_CREATE_FAILED = "create_failed" + STATUS_AVAILABLE = "available" + STATUS_UNKNOWN = "unknown" USER_TAG_PREFIX = "user:" diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/access_group.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/access_group.go index faba20bcd..246e56cf9 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/access_group.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/access_group.go @@ -14,16 +14,6 @@ package cloudprovider -import ( - "fmt" - "sort" - "strings" - - "yunion.io/x/log" - "yunion.io/x/pkg/errors" - "yunion.io/x/pkg/utils" -) - type SAccessGroup struct { Name string NetworkType string @@ -43,114 +33,9 @@ const ( UserAccessTypeAllSquash = TUserAccessType("all_squash") ) -func GetAccessGroupRuleInfo(group ICloudAccessGroup) (AccessGroupRuleInfo, error) { - ret := AccessGroupRuleInfo{ - MinPriority: group.GetMinPriority(), - MaxPriority: group.GetMaxPriority(), - SupportedUserAccessType: group.GetSupporedUserAccessTypes(), - } - var err error - ret.Rules, err = group.GetRules() - if err != nil { - return ret, errors.Wrapf(err, "GetRules") - } - return ret, nil -} - type AccessGroupRule struct { - Id string - ExternalId string Priority int RWAccessType TRWAccessType UserAccessType TUserAccessType Source string } - -func (self AccessGroupRule) String() string { - return fmt.Sprintf("%s-%s-%s", self.RWAccessType, self.UserAccessType, self.Source) -} - -type AccessGroupRuleSet []AccessGroupRule - -func (srs AccessGroupRuleSet) Len() int { - return len(srs) -} - -func (srs AccessGroupRuleSet) Swap(i, j int) { - srs[i], srs[j] = srs[j], srs[i] -} - -func (srs AccessGroupRuleSet) Less(i, j int) bool { - return srs[i].Priority < srs[j].Priority || (srs[i].Priority == srs[j].Priority && srs[i].String() < srs[j].String()) -} - -type AccessGroupRuleInfo struct { - MaxPriority int - MinPriority int - SupportedUserAccessType []TUserAccessType - Rules AccessGroupRuleSet -} - -func (self *AccessGroupRuleInfo) Sort() { - if self.MinPriority < self.MaxPriority { - sort.Sort(self.Rules) - return - } - sort.Sort(sort.Reverse(self.Rules)) -} - -func CompareAccessGroupRules(src, dest AccessGroupRuleInfo, debug bool) (common, added, removed AccessGroupRuleSet) { - src.Sort() - dest.Sort() - var addPriority = func(init int, min, max int) int { - inc := 1 - if max < min { - max, min, inc = min, max, -1 - } - if init >= max || init <= min { - return init - } - return init + inc - } - i, j, priority := 0, 0, (dest.MinPriority-1+dest.MaxPriority)/2 - for i < len(src.Rules) || j < len(dest.Rules) { - if i < len(src.Rules) && j < len(dest.Rules) { - destRuleStr := dest.Rules[j].String() - srcRuleStr := src.Rules[i].String() - if debug { - log.Debugf("compare src %s priority(%d) %s -> dest %s priority(%d) %s\n", - src.Rules[i].ExternalId, src.Rules[i].Priority, src.Rules[i].String(), - dest.Rules[j].ExternalId, dest.Rules[j].Priority, dest.Rules[j].String()) - } - cmp := strings.Compare(destRuleStr, srcRuleStr) - if cmp == 0 { - dest.Rules[j].Id = src.Rules[i].Id - common = append(common, dest.Rules[j]) - priority = dest.Rules[j].Priority - i++ - j++ - } else if cmp < 0 { - removed = append(removed, dest.Rules[j]) - j++ - } else { - if isIn, _ := utils.InArray(src.Rules[i].UserAccessType, dest.SupportedUserAccessType); isIn { - priority = addPriority(priority, dest.MinPriority, dest.MaxPriority) - src.Rules[i].Priority = priority - added = append(added, src.Rules[i]) - } - i++ - } - } else if i >= len(src.Rules) { - removed = append(removed, dest.Rules[j]) - j++ - } else if j >= len(dest.Rules) { - if isIn, _ := utils.InArray(src.Rules[i].UserAccessType, dest.SupportedUserAccessType); isIn { - priority = addPriority(priority, dest.MinPriority, dest.MaxPriority) - src.Rules[i].Priority = priority - added = append(added, src.Rules[i]) - } - i++ - } - } - return common, added, removed -} diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cloudprovider.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cloudprovider.go index 3b2737d5a..4fd9cec5b 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cloudprovider.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/cloudprovider.go @@ -90,6 +90,10 @@ type SCloudaccountCredential struct { // Google服务账号秘钥 (gcp) GCPPrivateKey string `json:"gcp_private_key"` + OracleTenancyOCID string `json:"oracle_tenancy_ocid"` + OracleUserOCID string `json:"oracle_user_ocid"` + OraclePrivateKey string `json:"oracle_private_key"` + // 默认区域Id, Apara及HCSO需要此参数 // example: cn-north-2 // required: true @@ -97,9 +101,6 @@ type SCloudaccountCredential struct { // Huawei Cloud Stack Online *SHCSOEndpoints - - // ctyun crm account extra info - *SCtyunExtraOptions } type SCloudaccount struct { @@ -247,6 +248,12 @@ type ICloudProviderFactory interface { GetAccountIdEqualizer() func(origin, now string) bool } +type SBalanceInfo struct { + Currency string + Amount float64 + Status string +} + type ICloudProvider interface { GetFactory() ICloudProviderFactory @@ -261,7 +268,7 @@ type ICloudProvider interface { GetOnPremiseIRegion() (ICloudRegion, error) - GetBalance() (float64, string, error) + GetBalance() (*SBalanceInfo, error) GetSubAccounts() ([]SSubAccount, error) GetAccountId() string @@ -382,6 +389,10 @@ func IsSupportElasticSearch(prod ICloudProvider) bool { return IsSupportCapability(prod, CLOUD_CAPABILITY_ES) } +func IsSupportSSLCertificate(prod ICloudProvider) bool { + return IsSupportCapability(prod, CLOUD_CAPABILITY_CERT) +} + func IsSupportKafka(prod ICloudProvider) bool { return IsSupportCapability(prod, CLOUD_CAPABILITY_KAFKA) } diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/consts.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/consts.go index 27861d44f..30a5f513d 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/consts.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/consts.go @@ -30,7 +30,9 @@ const ( CLOUD_CAPABILITY_PROJECT = "project" CLOUD_CAPABILITY_COMPUTE = "compute" CLOUD_CAPABILITY_NETWORK = "network" + CLOUD_CAPABILITY_SECURITY_GROUP = "security_group" CLOUD_CAPABILITY_EIP = "eip" + CLOUD_CAPABILITY_SNAPSHOT_POLICY = "snapshot_policy" CLOUD_CAPABILITY_LOADBALANCER = "loadbalancer" CLOUD_CAPABILITY_OBJECTSTORE = "objectstore" CLOUD_CAPABILITY_RDS = "rds" @@ -56,6 +58,7 @@ const ( CLOUD_CAPABILITY_MODELARTES = "modelarts" CLOUD_CAPABILITY_VPC_PEER = "vpcpeer" // 对等连接 CLOUD_CAPABILITY_MISC = "misc" + CLOUD_CAPABILITY_CERT = "sslcertificates" // 证书 ) const ( diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dbinstance.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dbinstance.go index 2eb09c767..d401a9004 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dbinstance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dbinstance.go @@ -112,3 +112,8 @@ type SDBInstanceRecoveryConfig struct { Databases map[string]string OriginDBInstanceExternalId string } + +type SDBInstanceUpdateOptions struct { + NAME string + Description string +} diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/disk.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/disk.go index 13f904ca7..2ca1c5dd7 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/disk.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/disk.go @@ -15,8 +15,10 @@ package cloudprovider type DiskCreateConfig struct { - Name string - SizeGb int - Desc string - ProjectId string + Name string + SizeGb int + Desc string + Iops int + Throughput int + ProjectId string } diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dnszone.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dnszone.go index 3013bdd41..fb9b10109 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dnszone.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/dnszone.go @@ -15,10 +15,6 @@ package cloudprovider import ( - "fmt" - "strings" - - "yunion.io/x/jsonutils" "yunion.io/x/pkg/utils" ) @@ -529,7 +525,6 @@ type SDnsZoneCreateOptions struct { Desc string ZoneType TDnsZoneType Vpcs []SPrivateZoneVpc - Options *jsonutils.JSONDict } func IsSupportPolicyValue(v1 TDnsPolicyValue, arr []TDnsPolicyValue) bool { @@ -537,161 +532,15 @@ func IsSupportPolicyValue(v1 TDnsPolicyValue, arr []TDnsPolicyValue) bool { return isIn } -type DnsRecordSet struct { - Id string - ExternalId string - - Desc string - - Enabled bool - DnsName string - DnsType TDnsType - DnsValue string - Status string - Ttl int64 - MxPriority int64 - PolicyType TDnsPolicyType - PolicyValue TDnsPolicyValue - PolicyOptions *jsonutils.JSONDict -} - -func (r DnsRecordSet) GetGlobalId() string { - return r.ExternalId -} - -func (r DnsRecordSet) GetName() string { - return r.DnsName -} - -func (r DnsRecordSet) GetDnsName() string { - return r.DnsName -} - -func (r DnsRecordSet) GetDnsValue() string { - return r.DnsValue -} - -func (r DnsRecordSet) GetPolicyType() TDnsPolicyType { - return r.PolicyType -} - -func (r DnsRecordSet) GetPolicyOptions() *jsonutils.JSONDict { - return r.PolicyOptions -} - -func (r DnsRecordSet) GetPolicyValue() TDnsPolicyValue { - return r.PolicyValue -} - -func (r DnsRecordSet) GetStatus() string { - return r.Status -} - -func (r DnsRecordSet) GetTTL() int64 { - return r.Ttl -} - -func (r DnsRecordSet) GetDnsType() TDnsType { - return r.DnsType -} - -func (r DnsRecordSet) GetEnabled() bool { - return r.Enabled -} - -func (r DnsRecordSet) GetMxPriority() int64 { - return r.MxPriority -} - -func (record DnsRecordSet) Equals(r DnsRecordSet) bool { - if strings.ToLower(record.DnsName) != strings.ToLower(r.DnsName) { - return false - } - if record.DnsType != r.DnsType { - return false - } - if record.DnsValue != r.DnsValue { - return false - } - if record.PolicyType != r.PolicyType { - return false - } - if record.PolicyValue != r.PolicyValue { - return false - } - if record.Ttl != r.Ttl { - return false - } - if record.Enabled != r.Enabled { - return false - } - if record.DnsType == DnsTypeMX && record.MxPriority != r.MxPriority { - return false - } - return IsPolicyOptionEquals(record.PolicyOptions, r.PolicyOptions) -} - -func (record DnsRecordSet) String() string { - return fmt.Sprintf("%s-%s-%s-%s-%s", record.DnsType, record.DnsName, record.DnsValue, record.PolicyType, record.PolicyValue) -} - -func IsPolicyOptionEquals(o1, o2 *jsonutils.JSONDict) bool { - if o1 == nil { - o1 = jsonutils.NewDict() - } - if o2 == nil { - o2 = jsonutils.NewDict() - } - return o1.Equals(o2) -} - -func CompareDnsRecordSet(iRecords []ICloudDnsRecordSet, local []DnsRecordSet, debug bool) ([]DnsRecordSet, []DnsRecordSet, []DnsRecordSet, []DnsRecordSet) { - common, added, removed, updated := []DnsRecordSet{}, []DnsRecordSet{}, []DnsRecordSet{}, []DnsRecordSet{} - - localMaps := map[string]DnsRecordSet{} - remoteMaps := map[string]DnsRecordSet{} - for i := range iRecords { - record := DnsRecordSet{ - ExternalId: iRecords[i].GetGlobalId(), - - DnsName: iRecords[i].GetDnsName(), - DnsType: iRecords[i].GetDnsType(), - DnsValue: iRecords[i].GetDnsValue(), - Status: iRecords[i].GetStatus(), - Enabled: iRecords[i].GetEnabled(), - Ttl: iRecords[i].GetTTL(), - MxPriority: iRecords[i].GetMxPriority(), - PolicyType: iRecords[i].GetPolicyType(), - PolicyValue: iRecords[i].GetPolicyValue(), - PolicyOptions: iRecords[i].GetPolicyOptions(), - } - remoteMaps[record.String()] = record - } - for i := range local { - localMaps[local[i].String()] = local[i] - } - - for key, record := range localMaps { - remoteRecord, ok := remoteMaps[key] - if ok { - record.ExternalId = remoteRecord.ExternalId - remoteRecord.Id = record.Id - if !record.Equals(remoteRecord) { - updated = append(updated, remoteRecord) - } else { - common = append(common, record) - } - } else { - added = append(added, record) - } - } - - for key, record := range remoteMaps { - _, ok := localMaps[key] - if !ok { - removed = append(removed, record) - } - } - - return common, added, removed, updated +type DnsRecord struct { + Desc string + DnsName string + DnsType TDnsType + DnsValue string + + Enabled bool + Ttl int64 + MxPriority int64 + PolicyType TDnsPolicyType + PolicyValue TDnsPolicyValue } diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/eip.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/eip.go index 4e19e52f0..d0876cc46 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/eip.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/eip.go @@ -27,8 +27,9 @@ type SEip struct { ChargeType string BGPType string NetworkExternalId string - IP string + Ip string ProjectId string + Tags map[string]string } type AssociateConfig struct { diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/errors.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/errors.go index 71bd95395..40f7618f3 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/errors.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/errors.go @@ -28,6 +28,8 @@ const ( ErrUnauthorized = errors.Error("UnauthorizedError") ErrNoPermission = errors.Error("NoPermission") ErrNoSuchProvder = errors.Error("no such provider") + ErrTooManyRequests = errors.Error("TooManyRequests") + ErrInvalidSku = errors.Error("InvalidSku") ErrNotFound = errors.ErrNotFound ErrDuplicateId = errors.ErrDuplicateId diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/extra.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/extra.go index c57db8ad2..8c3142584 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/extra.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/extra.go @@ -17,10 +17,3 @@ package cloudprovider type SAWSExtraOptions struct { AWSAssumeRoleName string `json:"aws_assume_role_name"` } - -type SCtyunExtraOptions struct { - // customInfo type=1 - CrmBizId string `help:"ctyun crm user biz id. eg. ACMB1000000000123456 " json:"crm_biz_id" default:"$CTYUN_CRM_BIZ_ID"` - // customInfo type=2 - // OptionsAccountId string `help:"ctyun account id." json:"options_account_id"` -} diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/fakeregion.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/fakeregion.go index b9fcb6c1d..7fce305fb 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/fakeregion.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/fakeregion.go @@ -99,10 +99,6 @@ func (region *SFakeOnPremiseRegion) GetISecurityGroupById(id string) (ICloudSecu return nil, ErrNotSupported } -func (region *SFakeOnPremiseRegion) GetISecurityGroupByName(opts *SecurityGroupFilterOptions) (ICloudSecurityGroup, error) { - return nil, ErrNotSupported -} - func (region *SFakeOnPremiseRegion) CreateISecurityGroup(conf *SecurityGroupCreateInput) (ICloudSecurityGroup, error) { return nil, ErrNotSupported } diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/hostnetifs.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/hostnetifs.go new file mode 100644 index 000000000..ce1ca1c42 --- /dev/null +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/hostnetifs.go @@ -0,0 +1,115 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cloudprovider + +import ( + "crypto/sha256" + "fmt" + "sort" + "strings" + + "yunion.io/x/pkg/tristate" +) + +type TGlobalIdResource interface { + GetGlobalId() string +} + +type TCloudResources[T TGlobalIdResource] []T + +func (a TCloudResources[T]) Len() int { return len(a) } +func (a TCloudResources[T]) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a TCloudResources[T]) Less(i, j int) bool { return a[i].GetGlobalId() < a[j].GetGlobalId() } + +func GetHostNetifs(host ICloudHost, wires []ICloudWire) []ICloudHostNetInterface { + localWires := make(TCloudResources[ICloudWire], len(wires)) + copy(localWires, wires) + sort.Sort(localWires) + + ret := make([]ICloudHostNetInterface, 0, len(localWires)) + for i := range localWires { + hw := sFakeHostNics{ + host: host, + wire: localWires[i], + index: i, + } + ret = append(ret, &hw) + } + return ret +} + +type sFakeHostNics struct { + host ICloudHost + wire ICloudWire + index int +} + +func (hn *sFakeHostNics) GetDevice() string { + return fmt.Sprintf("eth%d", hn.index) +} + +func (hn *sFakeHostNics) GetDriver() string { + return "e1000" +} + +func (hn *sFakeHostNics) GetMac() string { + return HashIdsMac(hn.host.GetGlobalId(), hn.wire.GetGlobalId()) +} + +func (hn *sFakeHostNics) GetVlanId() int { + return 1 +} + +func (hn *sFakeHostNics) GetIndex() int8 { + return int8(hn.index) +} + +func (hn *sFakeHostNics) IsLinkUp() tristate.TriState { + return tristate.True +} + +func (hn *sFakeHostNics) GetIpAddr() string { + return "" +} + +func (hn *sFakeHostNics) GetMtu() int32 { + return 1500 +} + +func (hn *sFakeHostNics) GetNicType() string { + return "" +} + +func (hn *sFakeHostNics) GetBridge() string { + return fmt.Sprintf("br%d", hn.index) +} + +func (hn *sFakeHostNics) GetIWire() ICloudWire { + return hn.wire +} + +func HashIdsMac(ids ...string) string { + h := sha256.New() + for _, id := range ids { + h.Write([]byte(id)) + } + sum := h.Sum(nil) + hexStr := make([]string, 6) + hexStr[0] = "ff" + for i := 1; i < 6; i++ { + hexStr[i] = fmt.Sprintf("%02x", sum[i]) + } + return strings.Join(hexStr, ":") +} diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/images.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/images.go index cebd2cc84..bfe63fb3a 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/images.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/images.go @@ -77,7 +77,7 @@ type SaveImageOptions struct { func CloudImage2Image(image ICloudImage) SImage { uefiSupport := false - if image.GetBios() == BIOS { + if image.GetBios() == UEFI { uefiSupport = true } return SImage{ diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go index 9ca7a028f..526acfa7c 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/instance.go @@ -101,15 +101,19 @@ type SDiskInfo struct { StorageExternalId string StorageType string SizeGB int + Iops int Name string + // aws gp3 only + Throughput int } type GuestDiskCreateOptions struct { - SizeMb int - UUID string - Driver string - Idx int - StorageId string + SizeMb int + UUID string + Driver string + Idx int + StorageId string + Preallocation string `choices:"off|metadata|full|falloc"` } const ( @@ -148,8 +152,8 @@ type SManagedVMCreateConfig struct { Description string SysDisk SDiskInfo DataDisks []SDiskInfo + KeypairName string PublicKey string - ExternalSecgroupId string ExternalSecgroupIds []string Account string Password string @@ -171,6 +175,7 @@ type SManagedVMCreateConfig struct { type SManagedVMChangeConfig struct { Cpu int + CpuSocket int MemoryMB int InstanceType string } @@ -182,6 +187,7 @@ type SManagedVMRebuildRootConfig struct { PublicKey string SysSizeGB int OsType string + UserData string } func (vmConfig *SManagedVMCreateConfig) GetConfig(config *jsonutils.JSONDict) error { @@ -332,6 +338,9 @@ type ServerVncOutput struct { Protocol string `json:"protocol"` Port int64 `json:"port"` + // volcengine + Region string `json:"region"` + Url string `json:"url"` InstanceId string `json:"instance_id"` InstanceName string `json:"instance_name"` @@ -347,3 +356,17 @@ type ServerVncOutput struct { Hypervisor string `json:"hypervisor"` } + +type SInstanceUpdateOptions struct { + NAME string + Description string +} + +type SInstanceDeployOptions struct { + Username string + Password string + PublicKey string + KeypairName string + DeleteKeypair bool + UserData string +} diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/loadbalanceracl.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/loadbalanceracl.go index 11ff059c9..8c7b550bb 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/loadbalanceracl.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/loadbalanceracl.go @@ -22,8 +22,4 @@ type SLoadbalancerAccessControlListEntry struct { type SLoadbalancerAccessControlList struct { Name string Entrys []SLoadbalancerAccessControlListEntry - - // used by huawei - ListenerId string - AccessControlEnable bool } diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/metrics.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/metrics.go index fb02cd7ec..49395dd89 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/metrics.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/metrics.go @@ -121,10 +121,10 @@ const ( RDS_METRIC_TYPE_INNODB_WRITE_BPS TMetricType = "rds_innodb.write_bps" // 虚拟机CPU使用率 - // 支持平台: kvm, huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, qcloud + // 支持平台: kvm, huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, qcloud, volcengine VM_METRIC_TYPE_CPU_USAGE TMetricType = "vm_cpu.usage_active" // 虚拟机内存使用率 - // 支持平台: kvm, aliyun, apsara, azure, esxi, bingocloud, jdcloud, ecloud, qcloud + // 支持平台: kvm, aliyun, apsara, azure, esxi, bingocloud, jdcloud, ecloud, qcloud, volcengine VM_METRIC_TYPE_MEM_USAGE TMetricType = "vm_mem.used_percent" // 虚拟机磁盘使用率 // 支持平台: aliyun, apsara, jdcloud, azure @@ -132,27 +132,27 @@ const ( VM_METRIC_TYPE_DISK_USAGE TMetricType = "vm_disk.used_percent" // 虚拟机磁盘读速率 - // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack + // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, volcengine VM_METRIC_TYPE_DISK_IO_READ_BPS TMetricType = "vm_diskio.read_bps" // 虚拟机磁盘写速率 - // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack + // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, volcengine VM_METRIC_TYPE_DISK_IO_WRITE_BPS TMetricType = "vm_diskio.write_bps" // 虚拟机磁盘读IOPS - // 支持平台: huawei, aliyun, apsara, azure, google, bingocloud, aws, jdcloud, ecloud, zstack + // 支持平台: huawei, aliyun, apsara, azure, google, bingocloud, aws, jdcloud, ecloud, zstack, volcengine VM_METRIC_TYPE_DISK_IO_READ_IOPS TMetricType = "vm_diskio.read_iops" // 虚拟机磁盘写IOPS - // 支持平台: huawei, aliyun, apsara, azure, google, bingocloud, aws, jdcloud, ecloud, zstack + // 支持平台: huawei, aliyun, apsara, azure, google, bingocloud, aws, jdcloud, ecloud, zstack, volcengine VM_METRIC_TYPE_DISK_IO_WRITE_IOPS TMetricType = "vm_diskio.write_iops" // 虚拟机网络入速率 - // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, qcloud + // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, qcloud, volcengine VM_METRIC_TYPE_NET_BPS_RX TMetricType = "vm_netio.bps_recv" // 虚拟机网络出速率 - // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, qcloud + // 支持平台: huawei, aliyun, apsara, azure, esxi, google, bingocloud, aws, jdcloud, ecloud, zstack, qcloud, volcengine VM_METRIC_TYPE_NET_BPS_TX TMetricType = "vm_netio.bps_sent" // 虚拟机TCP连接数 - // 支持平台: aliyun, apsara + // 支持平台: aliyun, apsara, volcengine VM_METRIC_TYPE_NET_TCP_CONNECTION TMetricType = "vm_netio.tcp_connections" // 虚拟机进程监控 // 支持平台: aliyun, apsara @@ -268,16 +268,16 @@ const ( // 支持平台: huawei, aliyun, apsara BUCKET_METRYC_TYPE_REQ_COUNT TMetricType = "oss_req.req_count" // 服务端请求错误数量 - // 支持平台: aliyun, apsara + // 支持平台: aliyun, apsara, volcengine BUCKET_METRIC_TYPE_REQ_5XX_COUNT TMetricType = "oss_req.5xx_count" // 服务端请求错误数量 - // 支持平台: aliyun, apsara + // 支持平台: aliyun, apsara, volcengine BUCKET_METRIC_TYPE_REQ_4XX_COUNT TMetricType = "oss_req.4xx_count" // 重定向数量 - // 支持平台: aliyun, apsara + // 支持平台: aliyun, apsara, volcengine BUCKET_METRIC_TYPE_REQ_3XX_COUNT TMetricType = "oss_req.3xx_count" // 正常请求数量 - // 支持平台: aliyun, apsara + // 支持平台: aliyun, apsara, volcengine BUCKET_METRIC_TYPE_REQ_2XX_COUNT TMetricType = "oss_req.2xx_count" // 存储总容量(bit) // 支持平台: aliyun, apsara diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/objectstore.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/objectstore.go index 3de99a1ce..58e514234 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/objectstore.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/objectstore.go @@ -155,6 +155,8 @@ type SBucketPolicyStatementInput struct { // ip 条件 IpEquals []string IpNotEquals []string + // 触发授权的条件 + Condition map[string]map[string]interface{} } type SBucketMultipartUploads struct { diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go index bedc8b9ab..63ce47791 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/resources.go @@ -24,6 +24,7 @@ import ( "yunion.io/x/pkg/util/billing" "yunion.io/x/pkg/util/rbacscope" "yunion.io/x/pkg/util/samlutils" + "yunion.io/x/pkg/util/secrules" ) type ICloudResource interface { @@ -79,13 +80,16 @@ type ICloudRegion interface { GetIVpcById(id string) (ICloudVpc, error) GetIZoneById(id string) (ICloudZone, error) GetIEipById(id string) (ICloudEIP, error) + // ICoudVM 的 GetGlobalId 接口不能panic + GetIVMs() ([]ICloudVM, error) // Esxi没有zone,需要通过region确认vm是否被删除 GetIVMById(id string) (ICloudVM, error) GetIDiskById(id string) (ICloudDisk, error) + // 仅返回region级别的安全组, vpc下面的安全组需要在ICloudVpc底下返回 + GetISecurityGroups() ([]ICloudSecurityGroup, error) GetISecurityGroupById(secgroupId string) (ICloudSecurityGroup, error) - GetISecurityGroupByName(opts *SecurityGroupFilterOptions) (ICloudSecurityGroup, error) - CreateISecurityGroup(conf *SecurityGroupCreateInput) (ICloudSecurityGroup, error) + CreateISecurityGroup(opts *SecurityGroupCreateInput) (ICloudSecurityGroup, error) CreateIVpc(opts *VpcCreateOptions) (ICloudVpc, error) CreateInternetGateway() (ICloudInternetGateway, error) @@ -95,12 +99,8 @@ type ICloudRegion interface { GetISnapshotById(snapshotId string) (ICloudSnapshot, error) CreateSnapshotPolicy(*SnapshotPolicyInput) (string, error) - UpdateSnapshotPolicy(*SnapshotPolicyInput, string) error - DeleteSnapshotPolicy(string) error - ApplySnapshotPolicyToDisks(snapshotPolicyId string, diskId string) error - CancelSnapshotPolicyToDisks(snapshotPolicyId string, diskId string) error GetISnapshotPolicies() ([]ICloudSnapshotPolicy, error) - GetISnapshotPolicyById(snapshotPolicyId string) (ICloudSnapshotPolicy, error) + GetISnapshotPolicyById(id string) (ICloudSnapshotPolicy, error) GetIHosts() ([]ICloudHost, error) GetIHostById(id string) (ICloudHost, error) @@ -199,6 +199,8 @@ type ICloudRegion interface { GetIModelartsPoolSku() ([]ICloudModelartsPoolSku, error) GetIMiscResources() ([]ICloudMiscResource, error) + + GetISSLCertificates() ([]ICloudSSLCertificate, error) } type ICloudZone interface { @@ -282,7 +284,7 @@ type ICloudHost interface { GetIVMs() ([]ICloudVM, error) GetIVMById(id string) (ICloudVM, error) - GetIWires() ([]ICloudWire, error) + // GetIWires() ([]ICloudWire, error) GetIStorages() ([]ICloudStorage, error) GetIStorageById(id string) (ICloudStorage, error) @@ -303,7 +305,7 @@ type ICloudHost interface { GetMemSizeMB() int GetMemCmtbound() float32 GetReservedMemoryMb() int - GetStorageSizeMB() int + GetStorageSizeMB() int64 GetStorageType() string GetHostType() string @@ -342,6 +344,7 @@ type ICloudVM interface { GetSerialOutput(port int) (string, error) // 目前仅谷歌云windows机器会使用到此接口 + GetCpuSockets() int GetVcpuCount() int GetVmemSizeMB() int //MB GetBootOrder() string @@ -357,28 +360,27 @@ type ICloudVM interface { GetInstanceType() string GetSecurityGroupIds() ([]string, error) - AssignSecurityGroup(secgroupId string) error SetSecurityGroups(secgroupIds []string) error GetHypervisor() string - // GetSecurityGroup() ICloudSecurityGroup - StartVM(ctx context.Context) error StopVM(ctx context.Context, opts *ServerStopOptions) error + // 需要删除挂载的磁盘 DeleteVM(ctx context.Context) error - UpdateVM(ctx context.Context, name string) error + UpdateVM(ctx context.Context, input SInstanceUpdateOptions) error UpdateUserData(userData string) error RebuildRoot(ctx context.Context, config *SManagedVMRebuildRootConfig) (string, error) - DeployVM(ctx context.Context, name string, username string, password string, publicKey string, deleteKeypair bool, description string) error + DeployVM(ctx context.Context, opts *SInstanceDeployOptions) error ChangeConfig(ctx context.Context, config *SManagedVMChangeConfig) error GetVNCInfo(input *ServerVncInput) (*ServerVncOutput, error) + // 若有跟随主机删除的选项,需要设置为True AttachDisk(ctx context.Context, diskId string) error DetachDisk(ctx context.Context, diskId string) error @@ -403,6 +405,7 @@ type ICloudVM interface { type ICloudNic interface { GetId() string GetIP() string + GetIP6() string GetMAC() string InClassicNetwork() bool GetDriver() string @@ -429,6 +432,7 @@ var _ ICloudNic = DummyICloudNic{} func (d DummyICloudNic) GetId() string { panic(errors.ErrNotImplemented) } func (d DummyICloudNic) GetIP() string { panic(errors.ErrNotImplemented) } +func (d DummyICloudNic) GetIP6() string { return "" } func (d DummyICloudNic) GetMAC() string { panic(errors.ErrNotImplemented) } func (d DummyICloudNic) InClassicNetwork() bool { panic(errors.ErrNotImplemented) } func (d DummyICloudNic) GetDriver() string { panic(errors.ErrNotImplemented) } @@ -469,13 +473,29 @@ type ICloudSecurityGroup interface { GetDescription() string // 返回的优先级字段(priority)要求数字越大优先级越高, 若有默认不可修改的allow规则依然需要返回 - GetRules() ([]SecurityRule, error) + GetRules() ([]ISecurityGroupRule, error) GetVpcId() string + CreateRule(opts *SecurityGroupRuleCreateOptions) (ISecurityGroupRule, error) + GetReferences() ([]SecurityGroupReference, error) Delete() error } +type ISecurityGroupRule interface { + GetGlobalId() string + GetDirection() secrules.TSecurityRuleDirection + GetPriority() int + GetAction() secrules.TSecurityRuleAction + GetProtocol() string + GetPorts() string + GetDescription() string + GetCIDRs() []string + + Update(opts *SecurityGroupRuleUpdateOptions) error + Delete() error +} + type ICloudRouteTable interface { ICloudResource @@ -527,12 +547,12 @@ type ICloudDisk interface { CreateISnapshot(ctx context.Context, name string, desc string) (ICloudSnapshot, error) GetISnapshots() ([]ICloudSnapshot, error) - GetExtSnapshotPolicyIds() ([]string, error) - Resize(ctx context.Context, newSizeMB int64) error Reset(ctx context.Context, snapshotId string) (string, error) Rebuild(ctx context.Context) error + + GetPreallocation() string } type ICloudSnapshot interface { @@ -554,15 +574,21 @@ type ICloudInstanceSnapshot interface { type ICloudSnapshotPolicy interface { IVirtualResource - IsActivated() bool GetRetentionDays() int GetRepeatWeekdays() ([]int, error) GetTimePoints() ([]int, error) + Delete() error + ApplyDisks(ids []string) error + CancelDisks(ids []string) error + GetApplyDiskIds() ([]string, error) } type ICloudGlobalVpc interface { ICloudResource + GetISecurityGroups() ([]ICloudSecurityGroup, error) + CreateISecurityGroup(opts *SecurityGroupCreateInput) (ICloudSecurityGroup, error) + Delete() error } @@ -583,6 +609,7 @@ type ICloudVpc interface { GetRegion() ICloudRegion GetIsDefault() bool GetCidrBlock() string + GetCidrBlock6() string GetIWires() ([]ICloudWire, error) CreateIWire(opts *SWireCreateOptions) (ICloudWire, error) GetISecurityGroups() ([]ICloudSecurityGroup, error) @@ -628,11 +655,18 @@ type ICloudNetwork interface { IVirtualResource GetIWire() ICloudWire - // GetStatus() string + GetIpStart() string GetIpEnd() string GetIpMask() int8 GetGateway() string + + // IPv6 + GetIp6Start() string + GetIp6End() string + GetIp6Mask() uint8 + GetGateway6() string + GetServerType() string //GetIsPublic() bool // 仅私有云有用,公有云无效 @@ -649,12 +683,14 @@ type ICloudHostNetInterface interface { GetDevice() string GetDriver() string GetMac() string + GetVlanId() int GetIndex() int8 IsLinkUp() tristate.TriState GetIpAddr() string GetMtu() int32 GetNicType() string GetBridge() string + GetIWire() ICloudWire } type ICloudLoadbalancer interface { @@ -686,6 +722,8 @@ type ICloudLoadbalancer interface { CreateILoadBalancerListener(ctx context.Context, listener *SLoadbalancerListenerCreateOptions) (ICloudLoadbalancerListener, error) GetILoadBalancerListenerById(listenerId string) (ICloudLoadbalancerListener, error) + + GetSecurityGroupIds() ([]string, error) } type ICloudLoadbalancerRedirect interface { @@ -803,7 +841,6 @@ type ICloudLoadbalancerBackend interface { type ICloudLoadbalancerCertificate interface { IVirtualResource - Sync(name, privateKey, publickKey string) error Delete() error GetCommonName() string @@ -817,7 +854,6 @@ type ICloudLoadbalancerCertificate interface { type ICloudLoadbalancerAcl interface { IVirtualResource - GetAclListenerID() string // huawei only GetAclEntries() []SLoadbalancerAccessControlListEntry Sync(acl *SLoadbalancerAccessControlList) error Delete() error @@ -881,14 +917,16 @@ type ICloudNatGateway interface { GetINatSTable() ([]ICloudNatSEntry, error) // ID is the ID of snat entry/rule or dnat entry/rule. - GetINatDEntryByID(id string) (ICloudNatDEntry, error) - GetINatSEntryByID(id string) (ICloudNatSEntry, error) + GetINatDEntryById(id string) (ICloudNatDEntry, error) + GetINatSEntryById(id string) (ICloudNatSEntry, error) // Read the description of these two structures before using. CreateINatDEntry(rule SNatDRule) (ICloudNatDEntry, error) CreateINatSEntry(rule SNatSRule) (ICloudNatSEntry, error) GetINetworkId() string + // internet(公网) or intranet(VPC) + GetNetworkType() string GetBandwidthMb() int GetIpAddr() string @@ -990,6 +1028,8 @@ type ICloudDBInstance interface { RecoveryFromBackup(conf *SDBInstanceRecoveryConfig) error + Update(ctx context.Context, input SDBInstanceUpdateOptions) error + Delete() error } @@ -1263,24 +1303,25 @@ type ICloudgroup interface { } type ICloudDnsZone interface { - ICloudResource + IVirtualResource GetZoneType() TDnsZoneType - GetOptions() *jsonutils.JSONDict GetICloudVpcIds() ([]string, error) AddVpc(*SPrivateZoneVpc) error RemoveVpc(*SPrivateZoneVpc) error - GetIDnsRecordSets() ([]ICloudDnsRecordSet, error) - SyncDnsRecordSets(common, add, del, update []DnsRecordSet) error + GetIDnsRecords() ([]ICloudDnsRecord, error) + GetIDnsRecordById(id string) (ICloudDnsRecord, error) + + AddDnsRecord(*DnsRecord) (string, error) Delete() error GetDnsProductType() TDnsProductType } -type ICloudDnsRecordSet interface { +type ICloudDnsRecord interface { GetGlobalId() string GetDnsName() string @@ -1291,9 +1332,14 @@ type ICloudDnsRecordSet interface { GetTTL() int64 GetMxPriority() int64 + Update(*DnsRecord) error + + Enable() error + Disable() error + GetPolicyType() TDnsPolicyType GetPolicyValue() TDnsPolicyValue - GetPolicyOptions() *jsonutils.JSONDict + Delete() error } type ICloudVpcPeeringConnection interface { @@ -1387,16 +1433,23 @@ type ICloudAccessGroup interface { GetGlobalId() string GetName() string GetDesc() string - IsDefault() bool - GetMaxPriority() int - GetMinPriority() int GetSupporedUserAccessTypes() []TUserAccessType GetNetworkType() string GetFileSystemType() string GetMountTargetCount() int - GetRules() ([]AccessGroupRule, error) - SyncRules(common, added, removed AccessGroupRuleSet) error + GetRules() ([]IAccessGroupRule, error) + CreateRule(opts *AccessGroupRule) (IAccessGroupRule, error) + + Delete() error +} + +type IAccessGroupRule interface { + GetGlobalId() string + GetPriority() int + GetRWAccessType() TRWAccessType + GetUserAccessType() TUserAccessType + GetSource() string Delete() error } @@ -1651,3 +1704,22 @@ type ICloudMiscResource interface { GetConfig() jsonutils.JSONObject } + +type ICloudSSLCertificate interface { + IVirtualResource + + GetSans() string + GetStartDate() time.Time + GetProvince() string + GetCommon() string + GetCountry() string + GetIssuer() string + GetExpired() bool + GetEndDate() time.Time + GetFingerprint() string + GetCity() string + GetOrgName() string + GetIsUpload() bool + GetCert() string + GetKey() string +} diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/securitygroup.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/securitygroup.go index 8d8e9bf93..df1717ead 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/securitygroup.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/securitygroup.go @@ -15,9 +15,9 @@ package cloudprovider import ( - "sort" + "fmt" + "strings" - "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/secrules" ) @@ -26,97 +26,43 @@ type SecurityGroupReference struct { Name string } -type SecurityGroupFilterOptions struct { - VpcId string - Name string - ProjectId string -} - type SecurityGroupCreateInput struct { Name string Desc string VpcId string ProjectId string - // 安全组刚创建, 但是未设置安全组规则时 - OnCreated func(id string) - - // 默认优先级从低到高排序, 端口会被分离, 不会出现[10,20]这种规则 - InRules SecurityRuleSet - // 同上 - OutRules SecurityRuleSet -} - -type SecurityRule struct { - secrules.SecurityRule - Name string - Id string -} - -type SecurityRuleSet []SecurityRule -func (srs SecurityRuleSet) Len() int { - return len(srs) + Tags map[string]string } -func (srs SecurityRuleSet) Swap(i, j int) { - srs[i], srs[j] = srs[j], srs[i] -} - -func (srs SecurityRuleSet) Less(i, j int) bool { - if srs[i].Priority > srs[j].Priority { - return true - } else if srs[i].Priority == srs[j].Priority { - return srs[i].String() < srs[j].String() - } - return false -} - -func (srs SecurityRuleSet) String() string { - sort.Sort(srs) - rules := secrules.SecurityRuleSet{} - for i := range srs { - rules = append(rules, srs[i].SecurityRule) - } - return rules.String() +type SecurityGroupRuleCreateOptions struct { + Desc string + Priority int + Protocol string + Ports string + Direction secrules.TSecurityRuleDirection + CIDR string + Action secrules.TSecurityRuleAction } -func (srs SecurityRuleSet) AllowList() secrules.SecurityRuleSet { - sort.Sort(srs) - rules := secrules.SecurityRuleSet{} - for i := range srs { - rules = append(rules, srs[i].SecurityRule) - } - return rules.AllowList() +type SecurityGroupRuleUpdateOptions struct { + CIDR string + Action secrules.TSecurityRuleAction + Desc string + Ports string + Protocol string + Priority int } -func GetSecurityGroupRules(sec ICloudSecurityGroup) (SecurityRuleSet, secrules.SecurityRuleSet, secrules.SecurityRuleSet, error) { - rules, err := sec.GetRules() - if err != nil { - return nil, nil, nil, errors.Wrapf(err, "GetRules") - } - for i := range rules { - if err := rules[i].ValidateRule(); err != nil && errors.Cause(err) != secrules.ErrInvalidPriority { - return nil, nil, nil, errors.Wrapf(err, "ValidateRule") - } +func (self *SecurityGroupRuleCreateOptions) String() string { + ret := fmt.Sprintf("%s_%s_%s", self.Direction, self.Action, self.Protocol) + if len(self.CIDR) > 0 { + ret += "_" + self.CIDR } - in, out := SplitRulesByDirection(rules) - sort.Sort(SecurityRuleSet(rules)) - return rules, in, out, nil -} - -func SplitRulesByDirection(rules []SecurityRule) (secrules.SecurityRuleSet, secrules.SecurityRuleSet) { - in, out := secrules.SecurityRuleSet{}, secrules.SecurityRuleSet{} - for i := range rules { - switch rules[i].Direction { - case secrules.DIR_IN: - in = append(in, rules[i].SecurityRule) - case secrules.DIR_OUT: - out = append(out, rules[i].SecurityRule) - } + if len(self.Ports) > 0 { + ret += "_" + self.Ports } - - // 优先级高到低 - sort.Sort(in) - sort.Sort(out) - return in, out + ret = strings.ReplaceAll(ret, ".", "_") + ret = strings.ReplaceAll(ret, ",", "_") + return ret } diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/snapshot_policy.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/snapshot_policy.go index 434c5f6d8..528d5fed7 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/snapshot_policy.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/snapshot_policy.go @@ -17,9 +17,12 @@ package cloudprovider import "strconv" type SnapshotPolicyInput struct { - RetentionDays int - RepeatWeekdays, TimePoints []int - PolicyName string + RetentionDays int + RepeatWeekdays []int + TimePoints []int + Name string + Desc string + Tags map[string]string } func (spi *SnapshotPolicyInput) GetStringArrayRepeatWeekdays() []string { diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/subaccount.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/subaccount.go index c2939f744..34aa0d932 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/subaccount.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/subaccount.go @@ -22,6 +22,7 @@ import ( ) type SSubAccount struct { + Id string // 账号ID // 若Account不为空,可不传 Name string // 描述信息 diff --git a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/transport.go b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/transport.go index 3e8cb6982..41654c855 100644 --- a/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/transport.go +++ b/vendor/yunion.io/x/cloudmux/pkg/cloudprovider/transport.go @@ -17,12 +17,12 @@ package cloudprovider import "net/http" type transport struct { - check func(*http.Request) (func(resp *http.Response), error) + check func(*http.Request) (func(resp *http.Response) error, error) ts *http.Transport } func (self *transport) RoundTrip(req *http.Request) (*http.Response, error) { - var respCheck func(resp *http.Response) = nil + var respCheck func(resp *http.Response) error = nil var err error if self.check != nil { respCheck, err = self.check(req) @@ -35,12 +35,15 @@ func (self *transport) RoundTrip(req *http.Request) (*http.Response, error) { return nil, err } if respCheck != nil { - respCheck(resp) + err = respCheck(resp) + if err != nil { + return nil, err + } } return resp, nil } -func GetCheckTransport(ts *http.Transport, check func(*http.Request) (func(resp *http.Response), error)) http.RoundTripper { +func GetCheckTransport(ts *http.Transport, check func(*http.Request) (func(resp *http.Response) error, error)) http.RoundTripper { ret := &transport{ts: ts, check: check} return ret } diff --git a/vendor/yunion.io/x/jsonutils/unmarshal.go b/vendor/yunion.io/x/jsonutils/unmarshal.go index 3893cf8c0..4209253e7 100644 --- a/vendor/yunion.io/x/jsonutils/unmarshal.go +++ b/vendor/yunion.io/x/jsonutils/unmarshal.go @@ -455,7 +455,7 @@ func (this *JSONArray) _unmarshalValue(s *sJsonUnmarshalSession, val reflect.Val } } else if val.Kind() == reflect.Slice { dataLen := len(this.data) - if val.Cap() < dataLen { + if val.IsNil() || val.Cap() < dataLen { newVal := reflect.MakeSlice(val.Type(), dataLen, dataLen) val.Set(newVal) } else if val.Len() != dataLen { diff --git a/vendor/yunion.io/x/onecloud/locales/locales.go b/vendor/yunion.io/x/onecloud/locales/locales.go index 1e8c653cd..8ef5315c5 100644 --- a/vendor/yunion.io/x/onecloud/locales/locales.go +++ b/vendor/yunion.io/x/onecloud/locales/locales.go @@ -4,7 +4,7 @@ package locales import ( "golang.org/x/text/language" - + "golang.org/x/text/message" "golang.org/x/text/message/catalog" ) @@ -25,8 +25,6 @@ func (d *dictionary) Lookup(key string) (data string, ok bool) { return d.data[start:end], true } -var Catalog catalog.Catalog - func init() { dict := map[string]catalog.Dictionary{ "en_US": &dictionary{index: en_USIndex, data: en_USData}, @@ -37,2375 +35,2403 @@ func init() { if err != nil { panic(err) } - - Catalog = cat - + message.DefaultCatalog = cat } var messageKeyToIndex = map[string]int{ - "%s %s %s not found": 114, - "%s %s %s not support %s": 522, - "%s %s not found": 568, - "%s %s not support policy value %s": 528, - "%s %s not supported dns type %s": 520, - "%s %s not supported policy type %s": 521, - "%s answer is incorrect": 23, - "%s backend group not support change port": 1417, - "%s backend group not support change port or weight": 1418, - "%s cannot be set to 0": 1434, - "%s disk cannot exceed 8": 225, - "%s does not currently support creating loadbalancer": 1480, - "%s does not currently support creating loadbalancer acl": 1474, - "%s does not currently support creating loadbalancer certificate": 1475, - "%s does not support creating loadbalancer": 1488, - "%s does not support creating loadbalancer acl": 1489, - "%s does not support creating loadbalancer certificate": 1490, - "%s for %s features are not compatible for creating instance": 226, - "%s is not modifiable": 602, - "%s is not mount point %s": 278, - "%s is out of network IP ranges": 955, - "%s is reserved for aliyun %s, please use another": 1453, - "%s length must less 500 letters": 1426, - "%s listener port %d is already taken by listener %s(%s)": 1123, - "%s method not found": 94, - "%s method params length not match, expected %d, input %d": 95, - "%s not allow to auth": 1713, - "%s not support": 400, - "%s not support cdn": 370, - "%s not support cdrom params": 241, - "%s not support close tcp or udp loadbalancer listener health check": 1435, - "%s not support create account": 1516, - "%s not support create eip": 219, - "%s not support create eip, it only support bind eip": 242, - "%s not support create subscription": 401, - "%s not support create virtual machine with eip": 243, - "%s not support policy type %s": 527, - "%s not support rebuild root with a different image": 695, - "%s not support recovery": 1509, - "%s not support saml auth": 377, - "%s not support this operation": 464, - "%s only support aliyun %s": 1457, - "%s only support aliyun %s or %s": 1456, - "%s only supports eip charge type %q": 1532, - "%s rds Support up to %d security groups": 449, - "%s rds not support secgroup": 448, - "%s request the mask range should be between 16 and 28": 1477, - "%s request the mask range should be between 8 and 29": 1481, - "%s request the mask range should be less than or equal to 29": 1556, - "%s require disk size must in 40 ~ 4000 GB": 1499, - "%s requires that the eip bandwidth must be less than 100Mbps": 201, - "%s requires the virtual machine state to be %s before it can be added backendgroup, but current state of the virtual machine is %s": 1101, - "%s reset disk required guest status is running or ready": 269, - "%s service dns resolve error, please check dns setting": 1720, - "%s service is abnormal or network error, please try again": 1719, - "%s service is abnormal, please check service status": 1718, - "%s service request timeout, please try again later": 1721, - "%s shall bind up to %d security groups": 901, - "%s supported secgroup count is %d": 471, - "%s: %s cannot be ip address: %s": 558, - "%s: %s must be domain name: %s": 557, - "%s: Invalid IP address %s": 1197, - "%s: Invalid domain name or IP address %s": 1213, - "%s: Invalid domain name or IP address %s": 1198, - "%s: bad base64 encoded string: %s": 1066, - "%s: bad template: %s": 1067, - "%s: invalid domain name: %s": 551, - "%s: name cannot be ip address: %s": 554, - "%s: new time is in the future: %s > %s": 1072, - "%s: time error: %s": 1071, - "%s: unknown record type": 559, - "A: record value must be ipv4 address: %s": 555, - "AAAA: record value must be ipv6 address: %s": 556, - "Access address located in different zone than specified": 960, - "Access ip %s has been used": 958, - "Access network has no zone???": 959, - "Account %s(%s) does not have database %s(%s) permissions": 434, - "Account disabled": 387, - "Account is not idle": 388, - "Account status is not %s current status is %s": 431, - "Action %s not found": 124, - "ActionNotFoundError": 1577, - "Active download session not expired": 1350, - "Address %s has been used": 1180, - "Address %s not in network": 1184, - "Address %s not in range": 1177, - "Address %s not reserved": 1179, - "Address been assigned out of new range": 1211, - "Alert is already paused": 1759, - "Alert is already un-paused": 1758, - "Alert is missing conditions": 1804, - "Alert notification used by %d alert": 1784, - "Alert resource driver duplicate match": 1769, - "Alert resource driver not found": 1768, - "Aliyun %s not support recovery": 1437, - "Aliyun %s only 8.0 and 5.7 high_availability local_ssd or 5.6 high_availability support recovery from it self backups": 1439, - "Aliyun %s only support recover from it self backups": 1438, - "Aliyun DBInstance account name length shoud be 2~16 characters": 1452, - "Aliyun instance weight must be in the range of 0 ~ 100": 1413, - "Aliyun not allow to change certificate": 1409, - "Aliyun reset disk required guest status is running or ready": 259, - "Already have backup server": 751, - "At least two networks are required under vpc %s(%s) with aliyun %s(%s)": 1450, - "Attach nfs storage require host status is online": 277, - "Attach rbd storage require host status is online": 274, - "Aws not support reset disk, you can create new disk with snapshot": 260, - "Azure Mv2-series instance sku only support UEFI image": 204, - "Azure UEFI image %s not support this instance sku": 205, - "Azure not support reset disk, you can create new disk with snapshot": 262, - "Backup %s not found": 512, - "Backup has %d task active, can't sync status": 306, - "Backup host is offline": 759, - "Backup only support hypervisor kvm": 753, - "BackupCount fail %s": 310, - "BadGateway": 1570, - "BadRequestError": 1592, - "Bandwidth limit cannot exceed %dMbps": 1181, - "Bandwidth must be non-negative": 725, - "Baremetal %s is not ready": 210, - "Baremetal %s is occupied": 211, - "Baremetal %s not enabled": 921, - "Baremetal agent not found": 289, - "Baremetal host is aleady occupied": 1007, - "Baremetal package not prepared": 290, - "BgpType attribute is only useful for eip network": 1234, - "Bucket has %d task active, can't sync status": 343, - "Buckets that are not empty do not support this operation": 344, - "CD-ROM not empty, please eject first": 673, - "CDN domain has %d task active, can't sync status": 371, - "CDN is locked, cannot delete": 369, - "CNAME cannot mix with other types": 549, - "CPU core count must be 1 ~ %d": 873, - "Can not delete disk snapshots, have manual snapshot": 1346, - "Can not get disk snapshot": 486, - "Can not rebuild root with with diff uefi image": 693, - "Can't attach GPU when status is %q": 711, - "Can't clone guest with backup guest": 654, - "Can't detach GPU when status is %q": 706, - "Can't do instance snapshot with backup guest": 807, - "Can't save memory state when guest status is %q": 810, - "Can't set isolated device when guest is %s": 712, - "Can't trigger scaling policy without status 'ready'": 1268, - "Cann't online resize root disk": 215, - "Cannot Delete disk %s snapshots, disk exist": 1344, - "Cannot add security groups for hypervisor %s": 677, - "Cannot add security groups in status %s": 591, - "Cannot assign security rules in status %s": 683, - "Cannot attach network in status %s": 723, - "Cannot cache image with no checksum": 1004, - "Cannot change bandwidth in status %s": 724, - "Cannot change config for baremtal": 206, - "Cannot change config in %s": 729, - "Cannot change config in status %s": 465, - "Cannot change config with different instance family": 730, - "Cannot change disk storage in backup guest %s": 237, - "Cannot change disk storage in status %s": 236, - "Cannot change network ip_addr in status %s": 718, - "Cannot change server sku name": 1319, - "Cannot change setting in status %s": 726, - "Cannot change state on pause alert": 1756, - "Cannot clone VM in status %s": 656, - "Cannot create backup with isolated device": 897, - "Cannot create backup with isolated devices": 754, - "Cannot create backup with shared storage": 752, - "Cannot create backup with snapshot": 756, - "Cannot create disk with disabled storage[%s]": 479, - "Cannot create disk with offline storage[%s]": 480, - "Cannot delete disk backup in status %s": 302, - "Cannot delete keypair used by servers": 1052, - "Cannot delete server on disabled host": 870, - "Cannot delete server on offline host": 871, - "Cannot delete snapshot in status %s": 1339, - "Cannot delete snapshot on disk reset": 1342, - "Cannot delete system alert": 1774, - "Cannot delete the last cache": 1351, - "Cannot deploy in status %s": 659, - "Cannot detach network in status %s": 722, - "Cannot do Ipmi-probe in status %s": 977, - "Cannot do eject-iso in status %s": 1021, - "Cannot do initialization in status %s": 978, - "Cannot do insert-iso in status %s": 1020, - "Cannot do io throttle in status %s": 794, - "Cannot do live migrate, too low qemu version": 234, - "Cannot do maintenance in status %s": 969, - "Cannot do maintenance while guest status %s": 970, - "Cannot do reboot dbinstance in status %s": 456, - "Cannot do recovery dbinstance in status %s required status %s": 450, - "Cannot do renew dbinstance in status %s required status %s": 458, - "Cannot do renew nat gateway in status %s required status %s": 1151, - "Cannot do restart elasticcache instance in status %s": 574, - "Cannot do restart server in status %s": 739, - "Cannot do snapshot when VM in status %s": 1566, - "Cannot do start server in status %s": 672, - "Cannot do unmaintenance in status %s": 971, - "Cannot enable deleting account": 376, - "Cannot keep detached disk": 702, - "Cannot live migrate in status %s": 652, - "Cannot live migrate with cdrom": 232, - "Cannot live migrate with isolated devices": 233, - "Cannot migrate with isolated devices": 231, - "Cannot mix different types of records, %s != %s": 563, - "Cannot normal migrate guest in status %s, try rescue mode or server-live-migrate?": 229, - "Cannot perform cache image in status %s": 1002, - "Cannot prepare baremetal in server status %s": 976, - "Cannot prepare baremetal in status %s": 975, - "Cannot purge elastic_ip on enabled cloud provider": 629, - "Cannot purge network on enabled cloud provider": 1216, - "Cannot purge route_table on enabled cloud provider": 1242, - "Cannot purge server on enabled host": 687, - "Cannot purge snapshot on enabled cloud provider": 1347, - "Cannot purge vpc on enabled cloud provider": 1383, - "Cannot reduce disk size": 735, - "Cannot reset VM in status %s": 736, - "Cannot reset baremetal in status %s": 1000, - "Cannot reset baremetal with active guest": 1001, - "Cannot reset disk %s(%s),Snapshot is belong to disk %s": 491, - "Cannot reset disk in status %s": 489, - "Cannot reset disk with snapshot in status %s": 490, - "Cannot reset root in status %s": 696, - "Cannot resize disk for baremtal": 207, - "Cannot resize disk when guest in status %s": 216, - "Cannot resume VM in status %s": 669, - "Cannot revoke security groups in status %s": 680, - "Cannot save image for baremtal": 212, - "Cannot save image in status %s": 648, - "Cannot send command in status %s": 646, - "Cannot send keys in status %s": 740, - "Cannot set default strategy of %s": 1283, - "Cannot set security group for this guest %s": 686, - "Cannot set security rules in status %s": 685, - "Cannot start a non-baremetal host": 964, - "Cannot start baremetal with active guest": 965, - "Cannot stop a non-baremetal host": 966, - "Cannot stop baremetal with active guest": 968, - "Cannot stop baremetal with non-active guest": 967, - "Cannot stop server in status %s": 738, - "Cannot suspend VM in status %s": 668, - "Cannot switch OS between %s-%s": 692, - "Cannot swith to backup when guest in status %s": 744, - "Cannot sync config a non-baremetal host": 1022, - "Cannot sync in status %s": 651, - "Cannot sync status a non-baremetal host": 999, - "Cannot uncache in status %s": 1352, - "Cannot unconvert in status %s": 1014, - "Cannot update external resource": 424, - "Check input guests is exist": 805, - "Check set pending quota error %s": 786, - "Cloudaccount disabled": 412, - "Cloudprovider disabled": 411, - "Cloudprovider is not idle": 413, - "Condition is missing the threshold parameter": 1800, - "Condition is missing the type parameter": 1801, - "Conflict address space with existing networks": 1210, - "Conflict address space with existing networks in vpc %q": 1208, - "Conflict manager_uri %s": 313, - "ConflictError": 1600, - "Connot convert hypervisor in status %s": 1008, - "Container not support %s": 218, - "Content-Length negative %d": 336, - "Convert error: %s": 1012, - "Couldn't delete snapshot policy binding to disks": 1334, - "Currently only kvm platform supports creating wire": 1396, - "DBInstance %s(%s) status is %s require status is %s": 427, - "DBInstance Disk cannot be thrink": 466, - "DBInstance backup has %d task active, can't sync status": 436, - "DBInstance has %d task active, can't sync status": 457, - "DBInstance has opened the outer network connection": 462, - "DBInstance is locked, cannot delete": 467, - "DBinstance has not valid cloudprovider": 435, - "DIRECT setting cannot be changed": 136, - "DIRECT setting cannot be deleted": 137, - "DISK Index %d has been occupied": 858, - "Data disk size must be an integer multiple of 10G": 249, - "Database status is not %s current is %s": 433, - "Default data source not found": 1776, - "Default quota %s not allow to delete": 142, - "Description can not start with http:// or https://": 1451, - "Directly creating cloudprovider is not supported, create cloudaccount instead": 408, - "Disk %s and guest not belong to the same account": 660, - "Disk %s and guest not belong to the same zone": 661, - "Disk %s don't need convert snapshots": 485, - "Disk %s dose not have snapshot": 1345, - "Disk %s dosen't attach guest ?": 1564, - "Disk %s has been attached": 663, - "Disk %s not belong the guest's host": 664, - "Disk %s not found on server %s": 835, - "Disk %s snapshot full, cannot take any more": 1568, - "Disk attach muti guests": 279, - "Disk attached Guest has backup, Can't create snapshot": 1565, - "Disk attached guest status must be ready": 280, - "Disk cannot be thrink": 493, - "Disk dosen't attach guest": 281, - "Disk has %d task active, can't sync status": 514, - "Disk id is empty": 833, - "Disk in %s not able to attach": 665, - "Disk must be detached": 271, - "Disk must be dettached": 268, - "Diskinfo index %d: both imageID and size are absent": 509, - "Do not need to update": 1333, - "Duplicate ID %s %s": 1620, - "Duplicate image name %s": 498, - "Duplicate manager_uri %s": 314, - "Duplicate name %s": 1224, - "Duplicate name %s %s": 1619, - "Duplicate sku %s": 1317, - "DuplicateIdError": 191, - "DuplicateNameError": 1598, - "DuplicateResourceError": 1599, - "Duration %s invalid": 1182, - "Eject ISO not allowed in status %s": 676, - "Elastic cache is locked, cannot delete": 575, - "Elastic cache is not expired, cannot delete": 576, - "ElasticSearch has %d task active, can't sync status": 570, - "ElasticSearch is locked, cannot delete": 569, - "Elasticcache has %d task active, can't sync status": 588, - "Empty import disks": 771, - "Empty import nics": 768, - "Empty record": 560, - "Empty spec query key": 1557, - "EmptyRequestError": 1593, - "ErrAddressCountExceed": 198, - "Fail to mark cache status: %s": 1357, - "Failed fetching secgroup %s": 1294, - "Failed to found database %s for dbinstance %s(%s): %v": 429, - "Fetch guest error %s": 750, - "Fetch instance snapshot error %s": 1340, - "Fetch netif error %s": 998, - "Fetch snapshot count failed %s": 484, - "FetchCustomizeColumns return incorrect number of results": 107, - "FetchCustomizeColumns returns incorrect results(expect 1 actual %d)": 111, - "FileSystem is locked, cannot delete": 631, - "For default vpc, only system level sharing can be set": 1386, - "ForbiddenError": 1596, - "General error: general error for %q: %s": 175, - "Generate ifname hint failed %s": 1226, - "Generate snapshot name failed %s": 821, - "Generate xml failed: %s": 780, - "GenerateName fail %s": 1225, - "Get convert snapshot failed: %s": 487, - "Get object error: %v": 1559, - "GetDiskCount fail %s": 945, - "GetGuestCount fail %s": 257, - "GetGuestDiskCount fail %s": 1031, - "GetGuestDiskCount for disk %s fail %s": 506, - "GetGuestnicsCount fail %s": 1032, - "GetHostCount fail %s": 1360, - "GetIObject error %s": 337, - "GetIObject fail %s": 327, - "GetLinkedGuestsCount failed %s": 1051, - "GetNatgatewayCount fail %v": 1378, - "GetNetworkCount fail %s": 1376, - "GetObjectCount fail %s": 1284, - "GetRequesterVpcPeeringConnections fail %v": 1380, - "GetRuningGuestCount fail %s": 500, - "GetSnapshotCount fail %s": 515, - "GetVpcCount fail %s": 420, - "GetVpcs fail %s": 633, - "GetZoneCount fail %s": 419, - "Globalvpc has %d task active, can't sync status": 635, - "Google dbinstance not support prepaid billing type": 1492, - "Guest %s can't hot remove nic": 235, - "Guest %s not found": 749, - "Guest %s not support attach disk in status %s": 666, - "Guest '%s' don't belong to ScalingGroup '%s'": 1262, - "Guest Insert error: %s": 980, - "Guest backup host not found": 758, - "Guest can't switch to backup, mirror job not ready": 746, - "Guest has %d task active, can't sync status": 737, - "Guest have backup not allow to change config": 728, - "Guest have backup, can't migrate": 228, - "Guest hypervisor %s does not support clone": 655, - "Guest nic ip addr %s not equal %s": 996, - "Guest no backup host": 745, - "Guest without backup": 757, - "GuestDisksHasSnapshot fail %s": 755, - "Handler not found": 88, - "Host %s already have mount point %s with other storage": 276, - "Host %s can't migrate guests %s in status %s": 1019, - "Host %s is not a baremetal": 209, - "Host %s is not online": 256, - "Host %s not found": 227, - "Host cores %v not contains input %v": 836, - "Host is a converted baremetal, should be unconverted before delete": 941, - "Host is not disabled": 942, - "Host should be disabled": 1013, - "HostCount fail %s": 1397, - "Huawei %s rds not support recovery from it self rds backup": 1510, - "Huawei DBInstance Disk cannot be thrink": 1506, - "Huawei DBInstance backup name length shoud be 4~64 characters": 1504, - "Huawei current not support reset dbinstance account password": 1507, - "Huawei dbinstance name length shoud be 4~64 characters": 1498, - "Huawei nat not support associate eip": 1518, - "Huawei only %s engine support databases recovery": 1511, - "Huawei only supports specified databases with %s": 1505, - "Huawei rds password cannot be in the same reverse order as the account": 1502, - "Hypervisor %s can't do io throttle": 793, - "Hypervisor %s can't generate libvirt xml": 779, - "Hypervisor %s not supported": 926, - "IP %s not attach to any wire": 986, - "IP %s not attach to wire %s": 985, - "IPMI address located in different zone than specified": 957, - "IPMI has no password information": 949, - "IPMI infomation not configured": 979, - "IPMI network has no zone???": 956, - "IPMI network has not zone???": 962, - "IPMI tool is null": 173, - "Illegal Content-Length %s": 335, - "Image %s not found": 1617, - "Image is in use": 1349, - "Image name is required": 502, - "Image status is not active": 513, - "ImageNotFoundError": 1574, - "Inconsistent: local storage is not empty???": 947, - "Incontinuity Network for %s and %s": 1219, - "IncorrectUsernameOrPassword": 1614, - "Influxdb invalid status": 1798, - "InformerBackend not init": 170, - "InputParameterError": 1581, - "Insert ISO not allowed in status %s": 674, - "Insert shared resource failed %s": 155, - "Instance backup not ready": 880, - "Instance snapshot not ready": 816, - "Instance snapshot not with memory statefile": 817, - "Instance status is not %s current status is %s": 432, - "InstanceBackup has %d task active, can't sync status": 1036, - "InsufficientResourceError": 1584, - "Interface %s not exist": 989, - "Interface %s not exists": 991, - "Internal server error": 86, - "Internal server error: %s": 85, - "InternalServerError": 1571, - "Invaild mac address": 981, - "Invald %s return value": 96, - "Invald CustomizeDelete return value": 103, - "Invald ListItemFilter return value count %d": 97, - "Invald OrderByExtraFields return value count %d": 98, - "Invald ValidateDeleteCondition return value": 104, - "Invald ValidateUpdateCondition return value": 105, - "Invald ValidateUpdateData return value": 102, - "Invalid FetchCustomizeColumns return value count %d": 99, - "Invalid FetchCustomizeColumns return value type, not a slice!": 100, - "Invalid FetchCustomizeColumns return value, inconsistent obj count: input %d != output %d": 101, - "Invalid IP %s": 1221, - "Invalid Target Network %s: inconsist %s": 1218, - "Invalid aws waf type %s": 1479, - "Invalid azure waf type %s": 1482, - "Invalid bandwidth": 628, - "Invalid choice error: invalid %q, want %s, got %s": 177, - "Invalid cidr_block, want 192.168.0.0/16|10.0.0.0/8|172.16.0.0/12, got %s": 1491, - "Invalid condition evaluator type": 1802, - "Invalid data JSONObject": 117, - "Invalid default stragegy %s": 1282, - "Invalid desc: %s": 764, - "Invalid handler %s": 87, - "Invalid host ip %s": 775, - "Invalid interval format: %s": 1796, - "Invalid length error: %q too long, got %d, max %d": 179, - "Invalid length error: %q too short, got %d, min %d": 178, - "Invalid level format: %s": 1770, - "Invalid mac address": 997, - "Invalid machine type %q for arch %q": 240, - "Invalid masklen %d": 1193, - "Invalid medium type %s": 1358, - "Invalid period format: %s": 1771, - "Invalid priority %d, must be in range or 1 ~ 100": 297, - "Invalid raid config: %v": 208, - "Invalid refresh format: %s": 1760, - "Invalid request header: %v": 90, - "Invalid root image: %s": 885, - "Invalid schedtag %s": 1281, - "Invalid server ip address %s": 777, - "Invalid server mac address %s": 776, - "Invalid server_type: %s": 1188, - "Invalid silent_period format: %s": 1772, - "Invalid start ip: %s %s": 1194, - "Invalid storage type %s": 307, - "Invalid type error: expecting %s type for %q: %s": 176, - "Invalid userdata: %v": 902, - "Invalid value error: invalid %q: ": 183, - "Invalid value error: invalid %q: %s": 181, - "Invalid value error: invalid %q: %v": 182, - "InvalidAccessKey": 1616, - "InvalidCredentialError": 1595, - "InvalidFormatError": 1580, - "InvalidProvider": 196, - "InvalidStatusError": 192, - "InvalidToken": 1717, - "Ip %s not in network %s(%s) range": 441, - "Isolated device %s not found": 705, - "Isolated device already attached to another guest: %s": 1045, - "Isolated device is not attached to this guest": 707, - "Isolated device used by server": 1043, - "Isolated device used by server: %s": 1046, - "IsolatedDevice %s not found": 1044, - "Kafka has %d task active, can't sync status": 1048, - "Kafka is locked, cannot delete": 1047, - "Keypair %s not found": 899, - "Kvm snapshot missing storage ??": 1537, - "Loadbalancer's manager %s does not match vpc's(%s(%s)) (%s)": 1468, - "Loadbalancer's manager (%s(%s)) does not match vpc's(%s(%s)) (%s)": 1408, - "Local host storage is not empty???": 946, - "Master dbinstance memory <64GB, up to 5 read-only instances are allowed to be created": 1449, - "Master dbinstance memory ≥64GB, up to 10 read-only instances are allowed to be created": 1448, - "Memory size must be 8MB ~ %d GB": 872, - "Memory size must be number[+unit], like 256M, 1G or 256": 731, - "Miss operating system???": 890, - "Missing isolated device": 704, - "Missing key error: missing %q": 174, - "Missing name or generate_name": 116, - "Missing parameter %s": 48, - "MissingParameterError": 1583, - "Model manager error: failed getting model manager for %q": 184, - "Model not found error: cannot find %q with id/name %q": 185, - "Model not found error: cannot find %q with id/name %q: %s": 186, - "MongoDB has %d task active, can't sync status": 1129, - "MongoDB is locked, cannot delete": 1130, - "More than one of input cores %v already set in host %v": 837, - "Mount target reached the upper limit": 1134, - "Must be a baremetal host": 1006, - "NIC Index %d has been occupied": 861, - "Name %s not found": 1722, - "Nas has %d task active, can't sync status": 632, - "Nat gateway has %d task active, can't sync status": 1148, - "Nat is locked, cannot delete": 1144, - "Network %s not found": 1217, - "Network %s not found: %v": 1176, - "Network not found": 288, - "Network not in range of VPC cidrblock %s": 1206, - "NetworkCount fail %s": 1399, - "New IPMI address located in another zone!": 963, - "New databases name can not be one of %s": 1512, - "NewTask error: %s": 778, - "No Disk Info Provided": 697, - "No ISO to eject": 675, - "No bootable disk information provided": 884, - "No context manager": 108, - "No eip to dissociate": 644, - "No host for server": 647, - "No id list found": 67, - "No ipmi information was found for host %s": 948, - "No login key: %s": 1728, - "No login secret found": 1723, - "No need to grant or revoke privilege for admin account": 1508, - "No password found": 1724, - "No previous deployment info available": 1087, - "No request key: %s": 89, - "No return value, so why query?": 113, - "No root image": 649, - "No ssh password: %s": 1725, - "No such context %s(%s)": 109, - "No template for root disk, cannot rebuild root": 694, - "No token in header": 63, - "No token in header: %v": 47, - "No valid host": 698, - "No valid storage on current host": 699, - "No zone for this disk": 497, - "NoBalancePermission": 197, - "NoProjectError": 1604, - "Not Implement RequestAttachStorage": 266, - "Not Implement RequestDetachStorage": 267, - "Not Implement ValidateAttachStorage": 265, - "Not Implement ValidateCreateEip": 213, - "Not Implement ValidateResetDisk": 264, - "Not Implemented": 439, - "Not Implemented GetProvider": 189, - "Not a baremetal": 992, - "Not a prepaid recycle host": 934, - "Not allow empty records": 92, - "Not allow for hypervisor %s": 214, - "Not allow set scope to domain %s": 152, - "Not allow set scope to project %s": 153, - "Not allow set scope to system": 151, - "Not allow to change config": 727, - "Not allow update rule name": 1393, - "Not an converted hypervisor": 1015, - "Not an empty host": 944, - "Not being convert to hypervisor": 993, - "Not enough free space": 483, - "Not eough storage space on current host": 700, - "Not find executor for data source": 1799, - "Not found baremetal server record": 994, - "Not found guest nic by mac %s": 995, - "Not found key in query: %v": 1730, - "Not found kind in query: %v": 1729, - "Not found network by ip %s": 770, - "Not in range error: invalid %q: %d, want [%d,%d]": 180, - "Not support": 529, - "Not support %s for account %s, supported %s": 532, - "Not support %s for vpc %s, supported %s": 531, - "Not support associate type %s, only support %s": 605, - "Not support brand %s, only support %s": 381, - "Not support cache classic security group": 1297, - "Not support create %s storage": 1359, - "Not support create Qcloud databases": 1551, - "Not support create account for huawei cloud %s instance": 1501, - "Not support create database for huawei cloud %s instance": 1503, - "Not support create local storage disks": 253, - "Not support create public cloud sku": 1315, - "Not support create read-only dbinstance for %s": 1497, - "Not support create readonly dbinstance for MySQL %s": 1444, - "Not support create readonly dbinstance for MySQL %s %s": 1442, - "Not support create readonly dbinstance for MySQL %s %s with storage type %s, only support %s": 1443, - "Not support create readonly dbinstance with master dbinstance engine %s": 1447, - "Not support modify routetable for provider %s": 1241, - "Not support resource %s tag filter": 123, - "Not support resource_type %s": 1277, - "Not supported, please use kubectl": 217, - "NotAcceptableError": 1597, - "NotEmptyError": 1591, - "NotFoundError": 190, - "NotImplementedError": 194, - "NotSufficientPrivilegeError": 1589, - "NotSupportedError": 195, - "Object %s %s has attached %s %s": 118, - "Only %s dbinstance support this operation": 461, - "Only %s elastic cache support renew operation": 601, - "Only %s elastic cache support set auto renew operation": 599, - "Only %s guest support this operation": 831, - "Only %s nat gateway support this operation": 1153, - "Only %s support cache for account": 537, - "Only ADMIN and IPMI nic can be enable": 990, - "Only public cloud support vpcpeering": 1368, - "Only support on premise network": 1229, - "Only support server type %s": 1228, - "Only system admin allowed to use reserved ip": 1178, - "Only system admin can assign host": 1029, - "OpenStack not support reset disk, you can create new disk with snapshot": 282, - "Out of IP address": 1174, - "Out of eip quota: %s": 643, - "OutOfLimit": 1588, - "OutOfQuotaError": 1586, - "OutOfRange": 1587, - "OutOfResource": 1585, - "PTR cannot mix with other types": 550, - "PTR: invalid ptr record name: %s": 553, - "Params vmem_size parse error": 732, - "Parse Ip Failed": 1215, - "Parse query: %v": 46, - "Parse remote ip error %s": 287, - "Parse spec key %s error: %v": 1558, - "PaymentError": 1573, - "Please disable this ScalingGroup firstly": 1259, - "Please input new disk backend type": 254, - "PolicyDefinitionError": 1609, - "Port value error": 1139, - "Prohibit making default vpc private": 1387, - "Project %s(%s) not belong to domain %s(%s)": 380, - "ProtectedResourceError": 1603, - "Qcloud Basic MySQL instance not support create backup": 1550, - "Qcloud reset disk required guest status is running or read": 283, - "Query database error %s": 127, - "Query host storage error %s": 275, - "Quota %s not found": 141, - "Records limit exceeded.": 93, - "Region %s not found": 409, - "RequestAssociatEip": 1487, - "RequireLicenseError": 1602, - "Rescue mode requires all disk store in shared storages": 230, - "Resize disk when disk is READY": 492, - "Resource %s %s not found": 1291, - "Resource type %s not support": 566, - "ResourceBusyError": 1601, - "ResourceNotFoundError": 1575, - "ResourceNotReadyError": 1572, - "ResourceType %q not support": 1275, - "Retention days must in 1~%d or -1": 1328, - "Retention days must in 1~65535 or -1": 1332, - "SQL Server cannot have more than seven read-only dbinstances": 1446, - "SQL Server only support create readonly dbinstance for 2017_ent": 1445, - "SRV cannot mix with other types": 548, - "SRV: insufficient param: %s": 542, - "SRV: invalid port number: %s": 543, - "SRV: invalid priority number: %s": 546, - "SRV: invalid srv record name: %s": 552, - "SRV: invalid weight number: %s": 544, - "SRV: priority number %d not in range [0,65535]": 547, - "SRV: weight number %d not in range [0,65535]": 545, - "Save disk when disk is READY": 499, - "Save disk when not being USED": 501, - "ScalingGroup should have some networks": 1248, - "Schedtag %s": 1278, - "Schedtag %s ResourceType is %s, not match %s": 1290, - "Schedtag %s not found": 939, - "Schedtag %s resource_type mismatch: %s != %s": 1279, - "Secgroup %s not found": 900, - "Server %s already exists": 767, - "Server %s must in status ready": 270, - "Server Id is empty": 765, - "Server Name is empty": 766, - "Server in %s not able to detach disk": 703, - "ServerStatusError": 1579, - "ServiceAbnormal": 1615, - "SetLimit error %s": 360, - "Snapshot %s dose not have convert snapshot": 488, - "Snapshot %s not found": 510, - "Snapshot %s storage %s not found, is public cloud?": 511, - "Snapshot error: disk index %d > 0 but disk type is %s": 894, - "Snapshot for %s name can't start with auto, http:// or https://": 1436, - "Snapshot has %d task active, can't sync status": 1343, - "Snapshot reference(by disk) count > 0, can not delete": 1562, - "Some disk not ready": 671, - "Some host config missing host ip": 774, - "Some host config missing xml_file_path": 773, - "SpecNotFoundError": 1576, - "Split IP %s is the start ip": 1222, - "Split IP %s out of range": 1223, - "Storage %s not attached or enabled on host %s": 238, - "Storage %s not found": 476, - "Storage id is empty": 834, - "Storage type[%s] not match backend %s": 481, - "StorageInUse": 1030, - "Storage[%s] must attach to a host": 482, - "Support only by KVM Hypervisor": 650, - "System disk does not support %s disk": 224, - "System disk does not support iso image, please consider using cdrom parameter": 886, - "TOTP recovery questions do not exist": 21, - "Tag is associated with %s": 1285, - "TenantNotFoundError": 1578, - "The %s disk size must be in the range of %dGB ~ %dGB": 200, - "The %s disk size must be in the range of 10GB ~ 16000GB": 245, - "The %s disk size must be in the range of 10GB ~ 32000GB": 246, - "The %s disk size must be in the range of 20GB ~ 32000GB": 247, - "The %s guest not support public ip to eip operation": 830, - "The account %s(%s) has permission %s to the database %s(%s)": 430, - "The account has been registered": 383, - "The backend %s is already registered on port %d": 1476, - "The dbinstance status need be %s, current is %s": 460, - "The disk is locally stored and does not support detach": 255, - "The disk_size_gb must be an integer multiple of 10": 1500, - "The elastic cache status need be %s, current is %s": 598, - "The extranet connection is not open": 463, - "The guest %s does not have any public IP": 828, - "The guest status need be %s or %s, current is %s": 829, - "The image has been cached on storages": 365, - "The nat gateway status need be %s, current is %s": 1152, - "The secgroup name %s does not meet the requirements, please change the name": 596, - "The specified Scheduler %s is invalid for performance sharing loadbalancer": 1431, - "The system disk is locally stored and does not support changing configuration": 252, + "%s %s %s not found": 163, + "%s %s %s not found, please check service version, current version: %s": 166, + "%s %s not found": 583, + "%s answer is incorrect": 24, + "%s backend group not support change port": 1451, + "%s backend group not support change port or weight": 1452, + "%s disk cannot exceed 8": 264, + "%s for %s features are not compatible for creating instance": 265, + "%s is local storage mount point": 320, + "%s is not modifiable": 616, + "%s is not mount point %s": 319, + "%s is out of network IP ranges": 1005, + "%s is reserved for aliyun %s, please use another": 1474, + "%s method params length not match, expected %d, input %d": 143, + "%s not allow to auth": 1733, + "%s not allow to check policies": 1737, + "%s not allow to delete token": 1734, + "%s not allow to list invalid tokens": 1735, + "%s not support": 446, + "%s not support cdn": 417, + "%s not support cdrom params": 287, + "%s not support create account": 1522, + "%s not support create eip": 259, + "%s not support create eip, it only support bind eip": 289, + "%s not support create subscription": 447, + "%s not support create virtual machine with eip": 266, + "%s not support rebuild root with a different image": 711, + "%s not support recovery": 1517, + "%s not support saml auth": 424, + "%s not support this operation": 506, + "%s only support aliyun %s": 1478, + "%s only support aliyun %s or %s": 1477, + "%s only supports eip charge type %q": 1530, + "%s rds Support up to %d security groups": 491, + "%s rds not support secgroup": 490, + "%s request the mask range should be between 16 and 28": 1489, + "%s request the mask range should be between 8 and 29": 1494, + "%s request the mask range should be less than or equal to 29": 1555, + "%s require disk size must in 40 ~ 4000 GB": 1507, + "%s requires that the eip bandwidth must be less than 100Mbps": 240, + "%s requires the virtual machine state to be %s before it can be added backendgroup, but current state of the virtual machine is %s": 1144, + "%s reset disk required guest status is running or ready": 315, + "%s server doesn't allow to set OS info": 288, + "%s service dns resolve error, please check dns setting": 1744, + "%s service is abnormal or network error, please try again": 1743, + "%s service is abnormal, please check service status": 1742, + "%s service request timeout, please try again later": 1745, + "%s shall bind up to %d security groups": 954, + "%s supported secgroup count is %d": 513, + "%s: Invalid IP address %s": 1257, + "%s: Invalid domain name or IP address %s": 1273, + "%s: Invalid domain name or IP address %s": 1258, + "%s: bad base64 encoded string: %s": 1123, + "%s: bad template: %s": 1124, + "%s: new time is in the future: %s > %s": 1126, + "%s: time error: %s": 1125, + "Access address located in different zone than specified": 1010, + "Access ip %s has been used": 1008, + "Access network has no zone???": 1009, + "Account %s(%s) does not have database %s(%s) permissions": 476, + "Account disabled": 434, + "Account is not idle": 435, + "Account status is not %s current status is %s": 473, + "Action %s not found, please check service version, current version: %s": 174, + "ActionNotFoundError": 1588, + "Active download session not expired": 1390, + "Address %s been assigned out of new range": 1271, + "Address %s has been used": 1238, + "Address %s not in network": 1244, + "Address %s not in range": 1234, + "Address %s not reserved": 1236, + "Alert is already paused": 1782, + "Alert is already un-paused": 1781, + "Alert is missing conditions": 1832, + "Alert notification used by %d alert": 1808, + "Alert resource driver duplicate match": 1792, + "Alert resource driver not found": 1791, + "Aliyun %s not support recovery": 1458, + "Aliyun %s only 8.0 and 5.7 high_availability local_ssd or 5.6 high_availability support recovery from it self backups": 1460, + "Aliyun %s only support recover from it self backups": 1459, + "Aliyun DBInstance account name length shoud be 2~16 characters": 1473, + "Aliyun instance weight must be in the range of 0 ~ 100": 1450, + "Aliyun reset disk required guest status is running or ready": 305, + "Already have backup server": 775, + "At least two networks are required under vpc %s(%s) with aliyun %s(%s)": 1471, + "Attach nfs storage require host status is online": 326, + "Attach rbd storage require host status is online": 323, + "Aws not support reset disk, you can create new disk with snapshot": 306, + "Azure Mv2-series instance sku only support UEFI image": 243, + "Azure UEFI image %s not support this instance sku": 244, + "Azure not support reset disk, you can create new disk with snapshot": 308, + "Backup %s not found": 556, + "Backup has %d task active, can't sync status": 360, + "Backup host is offline": 784, + "Backup only support hypervisor kvm": 778, + "BackupCount fail %s": 358, + "BadGateway": 1580, + "BadRequestError": 1606, + "Bandwidth limit cannot exceed %dMbps": 1239, + "Bandwidth must be non-negative": 747, + "Baremetal %s is not ready": 249, + "Baremetal %s is occupied": 250, + "Baremetal %s not enabled": 972, + "Baremetal agent not found": 338, + "Baremetal host is aleady occupied": 1062, + "Baremetal package not prepared": 339, + "BaremetalagentManager.GetAgent: %s": 878, + "BgpType attribute is only useful for eip network": 1294, + "Bucket has %d task active, can't sync status": 391, + "Buckets that are not empty do not support this operation": 392, + "CD-ROM not empty, please eject first": 696, + "CDN domain has %d task active, can't sync status": 418, + "CDN is locked, cannot delete": 416, + "CPU core count must be 1 ~ %d": 925, + "Can not delete disk snapshots, have manual snapshot": 1386, + "Can not get disk snapshot": 533, + "Can not rebuild root with with diff uefi image": 709, + "Can't attach GPU when status is %q": 731, + "Can't clone guest with backup guest": 674, + "Can't create backup in guest status %s": 776, + "Can't do instance snapshot with backup guest": 829, + "Can't reserve host all cpus": 1030, + "Can't save memory state when guest status is %q": 833, + "Can't separately attach dev type %s": 727, + "Can't set isolated device when guest is %s": 732, + "Can't switch to backup host on host status %s": 767, + "Can't trigger scaling policy without status 'ready'": 1329, + "Can't update for device %q": 1105, + "Cann't online resize root disk": 254, + "Cannot Delete disk %s snapshots, disk exist": 1384, + "Cannot add security groups for hypervisor %s": 882, + "Cannot add security groups in status %s": 606, + "Cannot assign security rules in status %s": 888, + "Cannot attach network in status %s": 743, + "Cannot cache image with no checksum": 1059, + "Cannot change bandwidth in status %s": 746, + "Cannot change config for baremtal": 245, + "Cannot change config in %s for %s, requires %s": 751, + "Cannot change config in status %s": 507, + "Cannot change config with different instance family": 752, + "Cannot change disk storage in backup guest %s": 281, + "Cannot change disk storage in status %s": 280, + "Cannot change network ip_addr in status %s": 738, + "Cannot change server sku name": 1366, + "Cannot change setting in status %s": 748, + "Cannot change state on pause alert": 1779, + "Cannot clone VM in status %s": 676, + "Cannot create backup with isolated device": 744, + "Cannot create backup with isolated devices": 779, + "Cannot create backup with shared storage": 777, + "Cannot create backup with snapshot": 781, + "Cannot create disk with disabled storage[%s]": 525, + "Cannot create disk with offline storage[%s]": 526, + "Cannot delete disk backup in status %s": 514, + "Cannot delete keypair used by servers": 1117, + "Cannot delete server on disabled host": 922, + "Cannot delete server on offline host": 923, + "Cannot delete snapshot in status %s": 1379, + "Cannot delete snapshot on disk reset": 1382, + "Cannot delete system alert": 1798, + "Cannot delete the last cache": 1391, + "Cannot deploy in status %s": 679, + "Cannot detach network in status %s": 742, + "Cannot do Ipmi-probe in status %s": 1037, + "Cannot do eject-iso in status %s": 1076, + "Cannot do initialization in status %s": 1038, + "Cannot do insert-iso in status %s": 1075, + "Cannot do io throttle in status %s": 815, + "Cannot do live migrate, too low qemu version": 278, + "Cannot do maintenance in status %s": 1019, + "Cannot do maintenance while guest status %s": 1020, + "Cannot do reboot dbinstance in status %s": 498, + "Cannot do recovery dbinstance in status %s required status %s": 492, + "Cannot do renew dbinstance in status %s required status %s": 500, + "Cannot do renew nat gateway in status %s required status %s": 1210, + "Cannot do restart elasticcache instance in status %s": 590, + "Cannot do restart server in status %s": 761, + "Cannot do snapshot when VM in status %s": 1568, + "Cannot do start server in status %s": 694, + "Cannot do unmaintenance in status %s": 1021, + "Cannot enable deleting account": 423, + "Cannot keep detached disk": 719, + "Cannot live migrate in status %s": 669, + "Cannot live migrate with cdrom": 276, + "Cannot live migrate with isolated devices": 277, + "Cannot migrate with isolated devices": 274, + "Cannot normal migrate guest in status %s, try rescue mode or server-live-migrate?": 271, + "Cannot perform cache image in status %s": 1057, + "Cannot prepare baremetal in server status %s": 1036, + "Cannot prepare baremetal in status %s": 1035, + "Cannot purge elastic_ip on enabled cloud provider": 646, + "Cannot purge network on enabled cloud provider": 1276, + "Cannot purge route_table on enabled cloud provider": 1303, + "Cannot purge server on enabled host": 703, + "Cannot purge snapshot on enabled cloud provider": 1387, + "Cannot purge vpc on enabled cloud provider": 1417, + "Cannot reduce disk size": 757, + "Cannot reset VM in status %s": 758, + "Cannot reset baremetal in status %s": 1055, + "Cannot reset baremetal with active guest": 1056, + "Cannot reset disk %s(%s),Snapshot is belong to disk %s": 538, + "Cannot reset disk in status %s": 536, + "Cannot reset disk with snapshot in status %s": 537, + "Cannot reset root in status %s": 712, + "Cannot reset root with %s": 713, + "Cannot resize disk for baremtal": 246, + "Cannot resize disk when guest in status %s": 255, + "Cannot resume VM in status %s": 690, + "Cannot revoke security groups in status %s": 885, + "Cannot save image for baremtal": 251, + "Cannot save image in status %s": 665, + "Cannot send command in status %s": 663, + "Cannot send keys in status %s": 762, + "Cannot set default strategy of %s": 1344, + "Cannot set security group for this guest %s": 891, + "Cannot set security rules in status %s": 890, + "Cannot start a non-baremetal host": 1014, + "Cannot start baremetal with active guest": 1015, + "Cannot stop a non-baremetal host": 1016, + "Cannot stop baremetal with active guest": 1018, + "Cannot stop baremetal with non-active guest": 1017, + "Cannot stop server in status %s": 760, + "Cannot suspend VM in status %s": 689, + "Cannot switch OS between %s-%s": 708, + "Cannot swith to backup when guest in status %s": 765, + "Cannot sync config a non-baremetal host": 1077, + "Cannot sync in status %s": 668, + "Cannot sync status a non-baremetal host": 1054, + "Cannot uncache in status %s": 1392, + "Cannot unconvert in status %s": 1069, + "Cannot update external resource": 466, + "Check input guests is exist": 827, + "Check set pending quota error %s": 832, + "Cloudaccount disabled": 457, + "Cloudprovider disabled": 456, + "Condition is missing the threshold parameter": 1828, + "Condition is missing the type parameter": 1829, + "Conflict address space with existing networks": 1270, + "Conflict address space with existing networks in vpc %q": 1268, + "Conflict manager_uri %s": 363, + "ConflictError": 1615, + "Connot convert hypervisor in status %s": 1063, + "Container not support %s": 257, + "Content-Length negative %d": 384, + "Convert error: %s": 1067, + "Currently only onpremise classic VPC supports creating wire": 1435, + "DBInstance %s(%s) status is %s require status is %s": 469, + "DBInstance Disk cannot be thrink": 508, + "DBInstance backup has %d task active, can't sync status": 478, + "DBInstance has %d task active, can't sync status": 499, + "DBInstance has opened the outer network connection": 504, + "DBInstance is locked, cannot delete": 509, + "DBinstance has not valid cloudprovider": 477, + "DIRECT setting cannot be changed": 185, + "DIRECT setting cannot be deleted": 186, + "DISK Index %d has been occupied": 912, + "Data disk size must be an integer multiple of 10G": 295, + "Database status is not %s current is %s": 475, + "Default quota %s not allow to delete": 191, + "Description can not start with http:// or https://": 1472, + "Directly creating cloudprovider is not supported, create cloudaccount instead": 453, + "Disk %s and guest not belong to the same account": 680, + "Disk %s and guest not belong to the same zone": 681, + "Disk %s don't need convert snapshots": 532, + "Disk %s dose not have snapshot": 1385, + "Disk %s dosen't attach guest ?": 1566, + "Disk %s has been attached": 683, + "Disk %s not belong the guest's host": 684, + "Disk %s not found on server %s": 858, + "Disk %s snapshot full, cannot take any more": 1570, + "Disk attach muti guests": 327, + "Disk attached Guest has backup, Can't create snapshot": 1567, + "Disk attached guest status must be ready": 328, + "Disk cannot be thrink": 540, + "Disk create from existing path, unsupport storage type %s": 528, + "Disk dosen't attach guest": 329, + "Disk has %d task active, can't sync status": 559, + "Disk id is empty": 857, + "Disk in %s not able to attach": 685, + "Disk must be detached": 317, + "Disk must be dettached": 314, + "Diskinfo index %d: both imageID and size are absent": 553, + "Duplicate ID %s %s": 1640, + "Duplicate image name %s": 544, + "Duplicate manager_uri %s": 364, + "Duplicate name %s": 1284, + "Duplicate name %s %s": 1639, + "Duplicate sku %s": 1364, + "DuplicateIdError": 1616, + "DuplicateNameError": 1613, + "DuplicateResourceError": 1614, + "Duration %s invalid": 1242, + "Eject ISO not allowed in status %s": 699, + "Elastic cache is locked, cannot delete": 591, + "Elastic cache is not expired, cannot delete": 592, + "ElasticSearch has %d task active, can't sync status": 585, + "ElasticSearch is locked, cannot delete": 584, + "Elasticcache has %d task active, can't sync status": 603, + "Empty import disks": 798, + "Empty import nics": 795, + "Empty spec query key": 1558, + "EmptyRequestError": 1607, + "Fail to mark cache status: %s": 1397, + "Failed to found database %s for dbinstance %s(%s): %v": 471, + "Fetch guest error %s": 774, + "Fetch instance snapshot error %s": 1380, + "Fetch snapshot count failed %s": 531, + "FetchCustomizeColumns return incorrect number of results": 156, + "FetchCustomizeColumns returns incorrect results(expect 1 actual %d)": 160, + "FileSystem is locked, cannot delete": 648, + "Floppy not empty, please eject first": 701, + "For default vpc, only system level sharing can be set": 1420, + "ForbiddenError": 1610, + "General error: general error for %q: %s": 224, + "Generate ifname hint failed %s": 1286, + "Generate snapshot name failed %s": 843, + "Generate xml failed: %s": 807, + "GenerateName fail %s": 1285, + "Get convert snapshot failed: %s": 534, + "Get object error: %v": 1560, + "GetBackupGuestCount fail %s": 995, + "GetDiskCount fail %s": 996, + "GetGuestCount fail %s": 303, + "GetGuestDiskCount fail %s": 1086, + "GetGuestDiskCount for disk %s fail %s": 552, + "GetGuestnicsCount fail %s": 1087, + "GetIObject error %s": 385, + "GetIObject fail %s": 375, + "GetLinkedGuestsCount failed %s": 1116, + "GetObjectCount fail %s": 1345, + "GetRuningGuestCount fail %s": 546, + "GetSnapshotCount fail %s": 560, + "GetVpcs fail %s": 650, + "Globalvpc has %d task active, can't sync status": 652, + "Google dbinstance not support prepaid billing type": 1501, + "Guest %s can't hot remove nic": 279, + "Guest %s not found": 773, + "Guest %s not support attach disk in status %s": 686, + "Guest '%s' don't belong to ScalingGroup '%s'": 1323, + "Guest Insert error: %s": 1040, + "Guest backup host not found": 783, + "Guest can't switch to backup with backup status %s": 769, + "Guest can't switch to backup, mirror job not ready": 768, + "Guest has %d task active, can't sync status": 759, + "Guest have backup not allow to change config": 750, + "Guest have backup, can't migrate": 270, + "Guest hypervisor %s does not support clone": 675, + "Guest nic ip addr %s not equal %s": 1053, + "Guest no backup host": 766, + "Guest without backup": 782, + "GuestDisksHasSnapshot fail %s": 780, + "Handler not found": 134, + "Host %s already have mount point %s with other storage": 325, + "Host %s can't migrate guests %s in status %s": 1074, + "Host %s is not a baremetal": 248, + "Host %s is not online": 302, + "Host %s not found": 269, + "Host cores %v not contains input %v": 866, + "Host cores not contains input %v": 1029, + "Host is a converted baremetal, should be unconverted before delete": 991, + "Host is not disabled": 992, + "Host should be disabled": 1068, + "Host status %s, can't do rescue mode migration": 272, + "Huawei %s rds not support recovery from it self rds backup": 1518, + "Huawei DBInstance Disk cannot be thrink": 1514, + "Huawei DBInstance backup name length shoud be 4~64 characters": 1512, + "Huawei current not support reset dbinstance account password": 1515, + "Huawei dbinstance name length shoud be 4~64 characters": 1506, + "Huawei nat not support associate eip": 1524, + "Huawei only %s engine support databases recovery": 1519, + "Huawei only supports specified databases with %s": 1513, + "Huawei rds password cannot be in the same reverse order as the account": 1510, + "Hypervisor %s can't do io throttle": 814, + "Hypervisor %s can't generate libvirt xml": 806, + "Hypervisor %s not supported": 977, + "IP %s not attach to any wire": 1045, + "IP %s not attach to wire %s": 1044, + "IPMI address located in different zone than specified": 1007, + "IPMI has no password information": 999, + "IPMI infomation not configured": 1039, + "IPMI network has no zone???": 1006, + "IPMI network has not zone???": 1012, + "IPMI tool is null": 222, + "Illegal Content-Length %s": 383, + "Image %s not found": 1637, + "Image is in use": 1389, + "Image name is required": 548, + "Image status is not active": 557, + "ImageNotFoundError": 1585, + "Incontinuity Network for %s and %s": 1279, + "IncorrectUsernameOrPassword": 1633, + "Influxdb invalid status": 1826, + "InformerBackend not init": 219, + "InputParameterError": 1594, + "Insert ISO not allowed in status %s": 697, + "Insert shared resource failed %s": 204, + "Instance backup not ready": 933, + "Instance snapshot not ready": 839, + "Instance snapshot not with memory statefile": 840, + "Instance status is not %s current status is %s": 474, + "InstanceBackup has %d task active, can't sync status": 1090, + "InsufficientResourceError": 1597, + "Interface %s(vlan:%d) not exist": 1047, + "Interface %s(vlan:%d) not exists": 1048, + "Internal server error": 132, + "Internal server error: %s": 131, + "InternalServerError": 1582, + "Invald %s return value": 144, + "Invald %s return value count %d": 145, + "Invald CustomizeDelete return value": 151, + "Invald OrderByExtraFields return value count %d": 146, + "Invald ValidateDeleteCondition return value": 152, + "Invald ValidateUpdateCondition return value": 153, + "Invald ValidateUpdateData return value": 150, + "Invalid AlertType: %s": 1796, + "Invalid FetchCustomizeColumns return value count %d": 147, + "Invalid FetchCustomizeColumns return value type, not a slice!": 148, + "Invalid FetchCustomizeColumns return value, inconsistent obj count: input %d != output %d": 149, + "Invalid IP %s": 1281, + "Invalid Target Network %s: inconsist %s": 1278, + "Invalid aws waf type %s": 1491, + "Invalid azure waf type %s": 1495, + "Invalid bandwidth": 645, + "Invalid choice error: invalid %q, want %s, got %s": 226, + "Invalid cidr_block, want 192.168.0.0/16|10.0.0.0/8|172.16.0.0/12, got %s": 1500, + "Invalid condition evaluator type": 1830, + "Invalid data JSONObject": 167, + "Invalid default stragegy %s": 1343, + "Invalid desc: %s": 791, + "Invalid handler %s": 133, + "Invalid host ip %s": 802, + "Invalid interval format: %s": 1822, + "Invalid length error: %q too long, got %d, max %d": 228, + "Invalid length error: %q too short, got %d, min %d": 227, + "Invalid level format: %s": 1793, + "Invalid machine type %q for arch %q": 284, + "Invalid masklen %d": 1253, + "Invalid medium type %s": 1398, + "Invalid metric_type %v": 1802, + "Invalid period format: %s": 1794, + "Invalid priority %d, must be in range or 1 ~ 100": 346, + "Invalid raid config: %v": 247, + "Invalid refresh format: %s": 1783, + "Invalid request header: %v": 136, + "Invalid root image: %s": 938, + "Invalid schedtag %s": 1342, + "Invalid server ip address %s": 804, + "Invalid server mac address %s": 803, + "Invalid server_type: %s": 1248, + "Invalid silent_period format: %s": 1795, + "Invalid start ip: %s %s": 1254, + "Invalid storage type %s": 351, + "Invalid type error: expecting %s type for %q: %s": 225, + "Invalid userdata: %v": 955, + "Invalid value error: invalid %q: ": 232, + "Invalid value error: invalid %q: %s": 230, + "Invalid value error: invalid %q: %v": 231, + "InvalidAccessKey": 1635, + "InvalidCredentialError": 1609, + "InvalidFormatError": 1593, + "InvalidIdpStatus": 1592, + "InvalidProvider": 1622, + "InvalidStatusError": 1591, + "InvalidToken": 1741, + "Ip %s not in network %s(%s) range": 483, + "Isolated device %s not found": 722, + "Isolated device already attached to another guest: %s": 1108, + "Isolated device is not attached to this guest": 723, + "Isolated device used by server": 1106, + "Isolated device used by server: %s": 1111, + "IsolatedDevice %s not found": 1107, + "IsolatedDevice is not device type %s": 1109, + "Kafka has %d task active, can't sync status": 1113, + "Kafka is locked, cannot delete": 1112, + "Keypair %s not found": 952, + "Kvm snapshot missing storage ??": 1536, + "Local host storage is not empty???": 997, + "Master dbinstance memory <64GB, up to 5 read-only instances are allowed to be created": 1470, + "Master dbinstance memory ≥64GB, up to 10 read-only instances are allowed to be created": 1469, + "Memory size %q must be number[+unit], like 256M, 1G or 256": 753, + "Memory size must be 8MB ~ %d GB": 924, + "MethodNotFoundError": 142, + "Miss operating system???": 945, + "Missing isolated device": 721, + "Missing key error: missing %q": 223, + "Missing name or generate_name": 165, + "Missing parameter %s": 55, + "MissingParameterError": 1596, + "Model manager error: failed getting model manager for %q": 233, + "Model not found error: cannot find %q with id/name %q": 234, + "Model not found error: cannot find %q with id/name %q: %s": 235, + "ModelartsPool has %d task active, can't sync status": 1187, + "ModelartsPool is locked, cannot delete": 1185, + "ModelartsPool status cannot support delete": 1186, + "MongoDB has %d task active, can't sync status": 1188, + "MongoDB is locked, cannot delete": 1189, + "More than one of input cores %v already set in host %v": 867, + "Mount target reached the upper limit": 1193, + "Must be a baremetal host": 1061, + "NIC Index %d has been occupied": 915, + "NVMe device can't assign as root disk": 948, + "Name %s not found": 1746, + "Nas has %d task active, can't sync status": 649, + "Nat gateway has %d task active, can't sync status": 1207, + "Nat is locked, cannot delete": 1203, + "Network %s not found": 1277, + "Network %s not found: %v": 1233, + "Network not found": 337, + "Network not in range of VPC cidrblock %s": 1266, + "New IPMI address located in another zone!": 1013, + "New databases name can not be one of %s": 1520, + "NewTask error: %s": 805, + "No Disk Info Provided": 714, + "No ISO to eject": 698, + "No VFD to eject": 702, + "No bootable disk information provided": 937, + "No context manager": 157, + "No eip to dissociate": 661, + "No host for server": 664, + "No id list found": 74, + "No ipmi information was found for host %s": 998, + "No login key: %s": 1752, + "No login secret found": 1747, + "No need to grant or revoke privilege for admin account": 1516, + "No password found": 1748, + "No request key: %s": 135, + "No return value, so why query?": 162, + "No root image": 666, + "No ssh password: %s": 1749, + "No such context %s(%s)": 158, + "No template for root disk, cannot rebuild root": 710, + "No token in header": 70, + "No token in header: %v": 54, + "No valid host": 715, + "No valid storage on current host": 716, + "No zone for this disk": 543, + "NoBalancePermission": 1623, + "NoPermission": 1636, + "NoProjectError": 1621, + "Not Implement RequestAttachStorage": 312, + "Not Implement RequestDetachStorage": 313, + "Not Implement ValidateAttachStorage": 311, + "Not Implement ValidateCreateEip": 252, + "Not Implement ValidateResetDisk": 310, + "Not Implemented": 481, + "Not a baremetal": 1049, + "Not a prepaid recycle host": 985, + "Not allow empty records": 139, + "Not allow for hypervisor %s": 253, + "Not allow set scope to domain %s": 201, + "Not allow set scope to project %s": 202, + "Not allow set scope to system": 200, + "Not allow to access": 138, + "Not allow to change config": 749, + "Not allow update rule name": 1432, + "Not an converted hypervisor": 1070, + "Not an empty host": 993, + "Not being convert to hypervisor": 1050, + "Not enough free space": 530, + "Not eough storage space on current host": 717, + "Not found baremetal server record": 1051, + "Not found guest nic by mac %s": 1052, + "Not found key in query: %v": 1754, + "Not found kind in query: %v": 1753, + "Not found network by ip %s": 797, + "Not in range error: invalid %q: %d, want [%d,%d]": 229, + "Not support %s for account %s, supported %s": 571, + "Not support %s for vpc %s, supported %s": 570, + "Not support associate type %s, only support %s": 619, + "Not support brand %s, only support %s": 428, + "Not support create %s storage": 1399, + "Not support create Qcloud databases": 1549, + "Not support create account for huawei cloud %s instance": 1509, + "Not support create database for huawei cloud %s instance": 1511, + "Not support create elasticcache": 1537, + "Not support create local storage disks": 299, + "Not support create public cloud sku": 1362, + "Not support create read-only dbinstance for %s": 1505, + "Not support create readonly dbinstance for MySQL %s": 1465, + "Not support create readonly dbinstance for MySQL %s %s": 1463, + "Not support create readonly dbinstance for MySQL %s %s with storage type %s, only support %s": 1464, + "Not support create readonly dbinstance with master dbinstance engine %s": 1468, + "Not support modify routetable for provider %s": 1302, + "Not support resource %s tag filter": 173, + "Not support resource_type %s": 1338, + "Not supported, please use kubectl": 256, + "NotAcceptableError": 1612, + "NotEmptyError": 1605, + "NotFoundError": 1611, + "NotImplementedError": 1581, + "NotSufficientPrivilegeError": 1602, + "NotSupportedError": 1604, + "Nvidia vgpu can't passthrough with other gpus": 730, + "Nvidia vgpu count exceed > 1": 729, + "Object %s %s has attached %s %s": 168, + "Only %s dbinstance support this operation": 503, + "Only %s elastic cache support renew operation": 615, + "Only %s elastic cache support set auto renew operation": 613, + "Only %s guest support this operation": 854, + "Only %s nat gateway support this operation": 1212, + "Only %s support cache for account": 575, + "Only public cloud support vpcpeering": 1405, + "Only support on premise network": 1289, + "Only support server type %s": 1288, + "Only system admin allowed to use reserved ip": 1235, + "Only system admin can assign host": 1084, + "Out of IP address": 1231, + "Out of eip quota: %s": 660, + "OutOfLimit": 1601, + "OutOfQuotaError": 1599, + "OutOfRange": 1600, + "OutOfResource": 1598, + "Params vmem_size parse error": 754, + "Parse Ip Failed": 1275, + "Parse query: %v": 53, + "Parse remote ip error %s": 336, + "Parse spec key %s error: %v": 1559, + "PaymentError": 1584, + "Please disable this ScalingGroup firstly": 1320, + "Please input new disk backend type": 300, + "PolicyDefinitionError": 1628, + "Port value error": 1198, + "Prohibit making default vpc private": 1421, + "Project %s(%s) not belong to domain %s(%s)": 427, + "ProtectedResourceError": 1620, + "Qcloud Basic MySQL instance not support create backup": 1548, + "Qcloud reset disk required guest status is running or read": 331, + "Query database error %s": 177, + "Query host storage error %s": 324, + "Quota %s not found": 190, + "Records limit exceeded.": 140, + "Region %s not found": 454, + "RequestAssociateEip": 1499, + "RequireLicenseError": 1618, + "Rescue mode requires all disk store in shared storages": 273, + "Resize disk when disk is READY": 539, + "Resource %s %s not found": 1352, + "Resource type %s not support": 581, + "ResourceBusyError": 1617, + "ResourceNotFoundError": 1586, + "ResourceNotReadyError": 1583, + "ResourceType %q not support": 1336, + "Retention days must in 1~%d or -1": 1377, + "SQL Server cannot have more than seven read-only dbinstances": 1467, + "SQL Server only support create readonly dbinstance for 2017_ent": 1466, + "Save disk when disk is READY": 545, + "Save disk when not being USED": 547, + "ScalingGroup should have some networks": 1309, + "Schedtag %s": 1339, + "Schedtag %s ResourceType is %s, not match %s": 1351, + "Schedtag %s not found": 989, + "Schedtag %s resource_type mismatch: %s != %s": 1340, + "Secgroup %s not found": 953, + "Server %s already exists": 794, + "Server %s must in status ready": 316, + "Server Id is empty": 792, + "Server Name is empty": 793, + "Server in %s not able to detach disk": 720, + "ServerStatusError": 1590, + "ServiceAbnormal": 1634, + "SetLimit error %s": 408, + "Snapshot %s dose not have convert snapshot": 535, + "Snapshot %s not found": 554, + "Snapshot %s storage %s not found, is public cloud?": 555, + "Snapshot for %s name can't start with auto, http:// or https://": 1457, + "Snapshot has %d task active, can't sync status": 1383, + "Snapshot reference(by disk) count > 0, can not delete": 1564, + "Some disk not ready": 693, + "Some host config missing host ip": 801, + "Some host config missing xml_file_path": 800, + "SpecNotFoundError": 1587, + "Split IP %s is the start ip": 1282, + "Split IP %s out of range": 1283, + "Storage %s not attached or enabled on host %s": 282, + "Storage %s not found": 522, + "Storage id is empty": 856, + "Storage type[%s] not match backend %s": 527, + "StorageInUse": 1085, + "Storage[%s] must attach to a host": 529, + "Support only by KVM Hypervisor": 667, + "System disk does not support %s disk": 263, + "System disk does not support iso image, please consider using cdrom parameter": 939, + "TOTP recovery questions do not exist": 22, + "Tag is associated with %s": 1346, + "Tap service has associated flows": 1217, + "TenantNotFoundError": 1589, + "The %s disk size must be in the range of %dGB ~ %dGB": 239, + "The %s disk size must be in the range of 10GB ~ 16000GB": 291, + "The %s disk size must be in the range of 10GB ~ 32000GB": 292, + "The %s disk size must be in the range of 20GB ~ 32000GB": 293, + "The %s guest not support public ip to eip operation": 853, + "The IDP of user has been disabled or in invalid status": 8, + "The account %s(%s) has permission %s to the database %s(%s)": 472, + "The account has been registered": 430, + "The dbinstance status need be %s, current is %s": 502, + "The disk is locally stored and does not support detach": 301, + "The disk_size_gb must be an integer multiple of 10": 1508, + "The elastic cache status need be %s, current is %s": 612, + "The extranet connection is not open": 505, + "The guest %s does not have any public IP": 852, + "The guest status need be %s or %s, current is %s": 847, + "The image has been cached on storages": 412, + "The nat gateway status need be %s, current is %s": 1211, + "The number of cpu sockets cannot be greater than the number of cpus": 258, + "The query interval is greater than one hour": 1824, + "The security group %s does not have an external id": 1423, + "The security group and vpc are in different areas": 1425, + "The security group and vpc are in different global vpc": 1426, + "The security group does not belong to the vpc": 1424, + "The snapshot policy %s and disk account are different": 564, + "The snapshot policy %s and the disk are in different region": 565, + "The specified Scheduler %v is invalid for performance sharing loadbalancer": 1455, + "The system disk is locally stored and does not support changing configuration": 298, + "The system disk size must be in the range of 20GB ~ 500Gb": 238, + "The time interval exceeds 1 year": 1575, + "The time interval exceeds 20 year": 1576, + "The time interval exceeds 31 days": 1574, + "The time interval exceeds 72 hours": 1573, "The user has been disabled, please contact the administrator": 7, "The user has been locked, please contact the administrator": 6, - "There are some guests in this ScalingGroup, please delete them firstly": 1260, - "This RBD Storage[%s/%s] has already exist": 1569, - "TimeoutError": 193, - "Token expired": 65, - "Token in header invalid": 64, - "TooLargeEntity": 1605, - "TooManyFailedAttempts": 1606, - "TooManyRequests": 1607, - "UEFI boot mode requires UEFI image": 889, - "UEFI image requires UEFI boot mode": 888, - "Ucloud only support data disk reset operation": 285, - "Ucloud reset disk operation required disk not be attached": 284, - "Unauthorized": 1716, - "UnauthorizedError": 1594, - "Unavailable IP %s: occupied": 790, - "Unknown alert condition": 1803, - "Unknown backend group type %s": 1419, - "Unknown google storage type %s": 223, - "Unknown privilege %s": 1458, - "Unknown sticky_session_type, only support %s or %s": 1429, - "Unkown alert condition type: %s": 1811, - "Unkown operator %s": 1806, - "Unmarshal data error %s": 772, - "Unmarshal input error %s": 657, - "Unmarshal input failed %s": 1327, - "Unmarshel input failed %s": 1331, - "Unreachable IP %s: %s": 789, - "Unsupport attach %s storage for %s host": 273, - "Unsupport backendgorup type %s": 1411, - "Unsupport driver type %s": 1010, - "UnsupportOperationError": 1590, - "Unsupported action %s": 49, - "Unsupported instance type %s": 610, - "Unsupported notification type": 1797, - "Unsupported provider %s": 379, - "Unsupported scheme %s": 1049, - "UnsupportedProtocol": 1608, - "Update error %s": 361, - "UserDisabled": 1612, - "UserLocked": 1611, - "UserNotFound": 1610, - "VPC %s not found": 423, - "VPC not empty, please delete nat gateway first": 1379, - "VPC not empty, please delete network first": 1377, - "VPC not ready": 1202, - "VPC peering not empty, please delete vpc peering first": 1381, - "ValidateCreateNatGateway": 1486, - "ValidateDeleteCondition error %s": 364, - "Virtual disk %s(%s) used by virtual servers": 507, - "Virtual resource freezed, can't do %s": 164, - "Virtual resource type %s not support": 567, - "Virtual server is locked, cannot delete": 868, - "WeakPasswordError": 1582, - "WebApp has %d task active, can't sync status": 301, - "Windows hostname cannot be longer than %d characters": 936, - "Wire %q": 1402, - "Wire %s not found": 925, - "Wrong content type %s, want %s": 50, - "Wrong guest status %s": 972, - "WrongPassword": 1613, - "ZStack reset disk operation requried guest status is ready": 286, - "Zone %s not found": 410, - "a recycle host shoud not allocate more than 1 guest": 932, - "access group %s status is not available": 295, - "access group not empty, please delete mount target first": 292, - "account %s conflict": 393, - "account %s has aleady bind project mapping %s": 402, - "account %s has been cached": 538, - "account %s not enable saml auth": 372, - "account %s not share for domain %s": 630, - "account is enabled": 373, - "account is not idle": 374, - "account name '%s' is not allowed": 1541, - "account name can not start or end with _": 1455, - "account_privilege %s only support redis version 4.0": 1460, - "acl %s is still referred to by %d %s": 1059, - "acl cidr duplicate %s": 1056, - "address %s is already occupied": 1170, - "address %s is not in the range of network %s(%s)": 1168, - "alert already attached to notification": 1757, - "alert condition type is empty": 1810, - "alert_id is empty": 1788, - "all networks should in the same vpc. (%s).": 1469, - "allocate ip addr: %v": 1165, - "allow only internal zone, got %s(%s)": 1113, - "already associate with eip": 917, - "already has one network in the zone %s. (%s).": 1470, - "app_id is empty": 1749, - "app_secret is empty": 1750, - "area %s": 1554, - "attach devices is not string array": 713, - "auth mode aready in status %s": 582, - "authenticate error: %v": 1084, - "aws not support create rds account": 1465, - "aws not support create rds database": 1464, - "aws rds not support password character %s": 1463, - "back and instance not in same cloudaccount": 453, - "backend group %s is default backend group": 1098, - "backend group %s is still referred by %d %s": 1100, - "backend group %s(%s) belongs to loadbalancer %s instead of %s": 1421, - "backend group %s(%s) belongs to loadbalancer %s, not %s": 1125, - "backend group type must be normal": 1422, - "backend_group argument is missing": 1528, - "backendgroup %s not support this operation": 1415, - "backup %s(%s) not contain database %s": 451, - "backup and instance not in same cloudregion": 454, - "bad config": 1822, - "bad gateway ip: %v": 1199, - "bad network type %q, want %q": 1534, - "bandwidth must be greater than 0": 1394, - "batch create is not supported for external resources": 1161, - "beyond security group quantity limit, max items %d.": 595, - "body is not a json?": 115, - "bps must > 0": 795, - "bucket.GetQuotaKeys %s": 329, - "bucket.GetQuotaKeys fail %s": 339, - "can not add rule for default access group": 293, - "can not bind guest from disabled guest": 637, - "can not bind or unbind disabled instance group": 827, - "can not change specification in status %s": 581, - "can not find dashboard:%s": 1764, - "can not get resource by res_id:%s": 1792, - "can not make backup in status %s": 1542, - "can not recover data from diff rds engine": 455, - "can not sync record sets in %s": 535, - "can not unbind guest from disabled guest": 638, - "can't backup guest to backup storage with status %s": 305, - "can't change owner for resource in project with class metadata": 168, - "can't change resource's owner as that in project with class metadata": 169, - "can't delete instance snapshot with wrong status": 1034, - "can't detach host in status online": 1366, - "can't find instance backup %s": 878, - "can't find instance snapshot %s": 875, - "can't get string field": 125, - "can't open file": 51, - "can't parse file": 52, - "can't rebuild root for a guest with instance snapshots": 222, - "can't rescue geust %s with local storage": 800, - "can't resize disk for guest with instance snapshots": 220, - "can't restore elastic cache in status %s": 571, - "candidate %s out of range": 1173, - "cannot allocate ifname": 859, - "cannot alter name of role": 1672, - "cannot alter sysadmin user name": 1683, - "cannot alter system project name": 1669, - "cannot associate eip and instance in different provider": 743, - "cannot associate eip and instance in different region": 742, - "cannot associate eip and instance in different zone": 621, - "cannot associate eip in status %s": 741, - "cannot associate eip with same network": 614, - "cannot associate pending delete server": 611, - "cannot associate server in status %s": 613, - "cannot assoicate with eip %s: different cloudprovider": 915, - "cannot assoicate with eip %s: different region": 916, - "cannot change CPU/Memory spec in status %s": 733, - "cannot change bandwidth in status %s": 627, - "cannot change loadbalancer listener listener_port": 1540, - "cannot change loadbalancer listener listener_type": 1539, - "cannot change mac when guest is running": 719, - "cannot change to a different domain from a private cloud account": 415, - "cannot clone encrypted server": 653, - "cannot create prepaid server on prepaid resource type": 895, - "cannot delete a recycle host without active instance": 931, - "cannot delete default SQL identity provider": 1655, - "cannot delete default domain": 1632, - "cannot delete enabled idp": 1656, - "cannot delete enabled policy": 1664, - "cannot delete non-local non-sso user": 1685, - "cannot delete system policy": 1663, - "cannot delete system project": 1665, - "cannot delete system role": 1673, - "cannot delete system user": 1687, - "cannot derive valid ifname hint: %v": 1190, - "cannot enable auto sync in status %s": 396, - "cannot fetch network of guestnetwork %d": 1160, - "cannot find region info": 1124, - "cannot join read-only group": 1689, - "cannot join user and group in differnt domain": 1688, - "cannot leave read-only group": 1690, - "cannot migrate with cdrom": 802, - "cannot recycle in status %s": 927, - "cannot remove current user from current project": 1627, - "cannot run hypervisor %s on specified host with type %s": 922, - "cannot snapshot and clone encrypted server": 819, - "cannot support change azure disk name": 261, - "cannot support more than 1 nic": 199, - "cannot uncache non-customized images": 1355, - "cannot undo a recycle host with pending_deleted guest": 933, - "cannot undo recycle in status %s": 928, - "cannot update config when enabled and connected": 1648, - "cannot update config when not idle": 1649, - "cannot update in sync status": 1659, - "certificate %s is still referred to by %d %s": 1108, - "channel is empty": 1751, - "charge type %s not supported": 606, - "check %s duplication fail %s": 950, - "check access_mac duplication fail %s": 953, - "check account_id duplication error %s": 385, - "check agent uniqness fail %s": 312, - "check disk index uniqueness fail %s": 857, - "check disk snapshot count fail %s": 1567, - "check instance": 1320, - "check isAttach2Disk fail %s": 701, - "check mac uniqueness fail %s": 720, - "check name duplication error: %s": 121, - "check name duplication fail %s": 1827, - "check uniqness fail %s": 382, - "check uniqueness fail %s": 392, - "checkout guestdisk count fail %s": 865, - "checkout nic index uniqueness fail %s": 860, - "checkout server sku name duplicate error: %v": 1316, - "cidr %s is not in range vpc %s": 1156, - "cloud account %s is not available": 504, - "cloud provider %s is not available": 503, - "cloudprovider %s has aleady bind project mapping %s": 418, - "cloudprovider %s not available": 477, - "cloudprovider %s not supported CrossCloud vpcpeering": 1371, - "cloudprovider %s not supported CrossRegion vpcpeering": 1372, - "cloudprovider %s(%s) is not available": 442, - "cloudprovider.SetBucketCORS error %s": 350, - "cloudregion %s not support create %s rds": 446, - "cloudregion %s not support create rds": 445, - "cloudregion %s(%s) not support %s scheduler": 1432, - "cluster system-default no id": 1742, - "cluster system-default not found": 1741, - "cluster wire affiliation does not match network's: %s != %s": 1127, - "cluster zone %s does not match network zone %s ": 1126, - "comment contains non-printable char: %v": 1055, - "comment too long (%d>=%d)": 1054, - "condition values limit (5 per rule). %d given.": 1121, - "conflict database %s for instance %s(%s)": 452, - "conflict with lbagent %s(%s): %v": 1069, - "count must > 0": 820, - "cpu_core_count should be range of 1~256": 1312, - "create instance backup failed: %s": 813, - "create instance snapshot failed: %s": 811, - "dashboard_id is empty": 1763, - "data disk not support storage type %s": 244, - "dbinstance billing type %s not support cancel expire": 469, - "dbinstance billing type is %s": 468, - "default domain is protected": 1641, - "delete sku %s failed.": 1326, - "desire_instance_number should between min_instance_number and max_instance_number": 1246, - "detach devices is not string array": 714, - "dev_type is empty": 1041, - "device type %q not supported": 1042, - "disabled user": 1625, - "disk %s has too many snapshot policy attached": 1337, - "disk %s not attached to server": 792, - "disk %s not found": 864, - "disk %s status is not %s": 304, - "disk and snapshotpolicy should have same domain": 1484, - "disk and snapshotpolicy should have same project": 1485, - "disk backup referenced by instance backup": 303, - "disk has no valid storage": 494, - "disk need at least one of snapshot as backing file": 1563, - "disk size gb must in range 10 ~ 30720 Gb": 1493, - "disk.GetQuotaKeys fail %s": 495, - "dns zone can not cache in status %s": 536, - "dns zone can not uncache in status %s": 539, - "domain contains external resources": 1639, - "domain is disabled": 1660, - "domain is enabled": 1633, - "domain is in use by group": 1635, - "domain is in use by policy": 1638, - "domain is in use by project": 1636, - "domain is in use by role": 1637, - "domain is in use by user": 1634, - "domain tags not match (%s,require:%s)": 134, - "driver %s already exists": 1654, - "driver %s not supported": 1653, - "duplicate %s %s": 951, - "duplicate access_mac %s": 954, - "duplicate instanceType %s": 1324, - "duplicate route cidr %s": 84, - "duplicate username": 1706, - "duplicated dnsrecord with existed dnsrecord can not distinguish by %s policy": 525, - "duplicated dnsrecord with existed dnsrecord not support": 526, - "duplicated with CNAME dnsrecord name not support": 524, - "eip %s has been associated": 914, - "eip %s not found": 641, - "eip %s status invalid %s": 913, - "eip and server are not in the same region": 616, - "eip and server are not in the same zone": 617, - "eip cannot associate in status %s": 608, - "eip cannot dissociate in status %s": 623, - "eip has been associated": 642, - "eip has been associated with instance": 607, - "eip has been binding to another instance": 1142, - "eip network can only exist in default vpc, got %s(%s)": 1203, - "eip not supported for %s": 912, - "eip's manager (%s(%s)) does not match vpc's(%s(%s)) (%s)": 1494, - "elastic cache no related region found": 600, - "elastic cache sku zone (%s) and subnet zone (%s) mismatch": 1514, - "elastic ip %s and vpc %s not in same region": 1143, - "elasticcache billing type %s not support cancel expire": 590, - "elasticcache billing type is %s": 589, - "empty DN": 1622, - "empty auth request": 1699, - "empty directory name": 325, - "empty external user id": 36, - "empty file content": 54, - "empty host %s field": 1083, - "empty host name": 1075, - "empty id": 1623, - "empty idp_id or idp_entity_id": 38, - "empty ip list": 788, - "empty keys": 331, - "empty name": 1624, - "empty project_id/tenant_id": 1560, - "empty referer link": 37, - "enabled domain %s cannot be deleted": 1658, - "encrypt error %s": 1631, - "end_time is before start_time": 1795, - "endpoint is enabled": 1643, - "engine version mismatch: instance version %s, sku version %s": 580, - "error getting host of guest %s": 1524, - "error loadbalancer of backend group %s": 1525, - "esxi guest migrate require prefer_host": 221, - "every scaling policy belong to a scaling group": 1263, - "exceed address count limit: %v": 1166, - "expire time is before current expire at": 316, - "expired access key": 1702, - "expired token": 1695, - "fail to GetNetworks of vpc: %v": 1207, - "fail to decode body": 140, - "fail to decode policy data": 1662, - "fail to decode request body": 1705, - "fail to fetch hostwire by mac %s: %s": 988, - "fail to fetch netif by mac %s: %s": 987, - "fail to find storage for disk %s": 496, - "fail to generate temp url: %s": 324, - "fail to get http response writer from context": 110, - "fail to get objects: %s": 322, - "fail to get provider driver %s": 416, - "fail to mkdir: %s": 330, - "fail to parse icon url '%s'": 1306, - "failed getting guest %s": 1103, - "failed parsing url %q: %v": 1819, + "There are some guests in this ScalingGroup, please delete them firstly": 1321, + "This RBD Storage[%s/%s] has already exist": 1571, + "TimeoutError": 1619, + "Token expired": 72, + "Token in header invalid": 71, + "TooLargeEntity": 1624, + "TooManyFailedAttempts": 1625, + "TooManyRequests": 1626, + "UEFI boot mode requires UEFI image": 943, + "UEFI image requires UEFI boot mode": 942, + "Ucloud only support data disk reset operation": 333, + "Ucloud reset disk operation required disk not be attached": 332, + "Unable to synchronize frequently": 436, + "Unauthorized": 1740, + "UnauthorizedError": 1608, + "Unavailable IP %s: occupied": 811, + "Unknown alert condition": 1831, + "Unknown backend group type %s": 1453, + "Unknown google storage type %s": 262, + "Unknown privilege %s": 1479, + "Unkown alert condition type: %s": 1837, + "Unkown operator %s": 1834, + "Unmarshal data error %s": 799, + "Unmarshal input error %s": 677, + "Unreachable IP %s: %s": 810, + "Unsupport attach %s storage for %s host": 322, + "Unsupport backendgorup type %s": 1448, + "Unsupport driver type %s": 1065, + "UnsupportOperationError": 1603, + "Unsupported action %s": 56, + "Unsupported instance type %s": 624, + "Unsupported notification type": 1825, + "Unsupported provider %s": 426, + "Unsupported scheme %s": 1114, + "UnsupportedProtocol": 1627, + "Update error %s": 409, + "UserDisabled": 1631, + "UserLocked": 1630, + "UserNotFound": 1629, + "VPC %s not found": 465, + "VPC not empty, please delete nat gateway first": 1414, + "VPC not empty, please delete network first": 1413, + "VPC not empty, please delete vpc peering first": 1415, + "VPC not ready": 1262, + "ValidateCreateData": 1095, + "ValidateCreateLoadbalancerListenerData": 1546, + "ValidateCreateNatGateway": 1498, + "VictoriaMetrics invalid response": 1827, + "Virtual disk %s(%s) used by virtual servers": 549, + "Virtual resource freezed, can't do %s": 213, + "Virtual resource type %s not support": 582, + "Virtual server is locked, cannot delete": 920, + "Volcengine reset disk required guest status is running or read": 334, + "WeakPasswordError": 1595, + "WebApp has %d task active, can't sync status": 350, + "Windows hostname cannot be longer than %d characters": 987, + "Windows use gpu vga requires UEFI image": 944, + "Wire %q": 1439, + "Wire %s not found": 976, + "Wrong content type %s, want %s": 57, + "Wrong guest status %s": 1022, + "WrongPassword": 1632, + "ZStack reset disk operation requried guest status is ready": 335, + "Zone %s not found": 455, + "[auth] domain is disabled": 1717, + "[auth] empty auth request": 1718, + "[auth] expired access key": 1721, + "[auth] expired token": 1713, + "[auth] invalid access key id": 1720, + "[auth] invalid auth methods": 1715, + "[auth] invalid fernet token": 1714, + "[auth] invalid token": 1712, + "[auth] project disabled": 1710, + "[auth] token not found": 1722, + "[auth] user disabled": 1711, + "[auth] user not found": 1716, + "[auth] user not in project": 1719, + "[auth] version mismatch": 1709, + "a recycle host shoud not allocate more than 1 guest": 983, + "access group %s status is not available": 344, + "access group not empty, please delete mount target first": 341, + "account %s conflict": 441, + "account %s not enable saml auth": 419, + "account %s not share for domain %s": 647, + "account has enabled provider": 422, + "account is enabled": 420, + "account is not idle": 421, + "account name '%s' is not allowed": 1542, + "account name can not start or end with _": 1476, + "account_privilege %s only support redis version 4.0": 1481, + "acl %s is still referred to by %d listener": 1121, + "acl cidr duplicate %s": 90, + "address %s not in network %s": 1170, + "alert already attached to notification": 1780, + "alert condition type is empty": 1836, + "alert_id is empty": 1812, + "all networks should in the same vpc.": 1168, + "allocate ip addr: %v": 1227, + "allow only internal zone, got %s(%s)": 1157, + "already associate with eip": 970, + "app_id is empty": 1772, + "app_secret is empty": 1773, + "area %s": 1552, + "attach devices is not string array": 733, + "auth mode aready in status %s": 597, + "auth_url not found": 1768, + "aws not support create rds account": 1488, + "aws not support create rds database": 1487, + "aws rds not support password character %s": 1486, + "back and instance not in same cloudaccount": 495, + "backend group %s is default backend group": 1141, + "backend group %s is still referred by %d %s": 1143, + "backend group %s(%s) belongs to loadbalancer %s, not %s": 1179, + "backendgroup_id not same with listener's loadbalancer": 1167, + "backup %s(%s) not contain database %s": 493, + "backup and instance not in same cloudregion": 496, + "bad config": 1843, + "bad gateway ip: %v": 1259, + "bad ip": 1839, + "bad network type %q, want %q": 1532, + "bad vendor id %s": 1097, + "bandwidth must be greater than 0": 1433, + "beyond security group quantity limit, max items %d.": 610, + "body is not a json?": 164, + "boot index %d is duplicated": 688, + "bucket.GetQuotaKeys %s": 377, + "bucket.GetQuotaKeys fail %s": 387, + "can not add rule for default access group": 342, + "can not bind guest from disabled guest": 654, + "can not bind or unbind disabled instance group": 851, + "can not change specification in status %s": 596, + "can not find dashboard:%s": 1787, + "can not get resource by res_id:%s": 1816, + "can not make backup in status %s": 1543, + "can not recover data from diff rds engine": 497, + "can not reset with disk associate with guests": 330, + "can not unbind guest from disabled guest": 655, + "can only apply scripts to %s server": 1579, + "can't backup guest to backup storage with status %s": 517, + "can't change owner for resource in project with class metadata": 217, + "can't change resource's owner as that in project with class metadata": 218, + "can't convert guest in status %s": 670, + "can't delete instance snapshot with wrong status": 1088, + "can't detach host in status online": 1403, + "can't find instance backup %s": 931, + "can't find instance snapshot %s": 928, + "can't get string field": 175, + "can't open file": 58, + "can't parse file": 59, + "can't rebuild root for a guest with instance snapshots": 261, + "can't rescue geust %s with local storage": 821, + "can't resize disk for guest with instance snapshots": 260, + "can't restore elastic cache in status %s": 586, + "can't start backup guest on backup guest status %s": 787, + "can't start backup guest on host status %s": 786, + "can't sync guest os info in status %s": 286, + "can't use qga in vm status: %s": 1299, + "candidate %s out of range": 1230, + "cannot allocate ifname": 913, + "cannot alter name of role": 1691, + "cannot alter sysadmin user name": 1702, + "cannot alter system project name": 1687, + "cannot associate eip and instance in different provider": 764, + "cannot associate eip and instance in different region": 763, + "cannot associate eip and instance in different zone": 635, + "cannot associate eip with same network": 628, + "cannot associate pending delete server": 625, + "cannot associate server in status %s": 627, + "cannot associate with pending deleted loadbalancer": 638, + "cannot assoicate with eip %s: different cloudprovider": 968, + "cannot assoicate with eip %s: different region": 969, + "cannot change CPU/Memory spec in power status %s": 755, + "cannot change bandwidth in status %s": 644, + "cannot change mac when guest is running": 739, + "cannot change to a different domain from a private cloud account": 459, + "cannot clone encrypted server": 673, + "cannot create prepaid server on prepaid resource type": 950, + "cannot delete a recycle host without active instance": 982, + "cannot delete default SQL identity provider": 1674, + "cannot delete default domain": 1652, + "cannot delete enabled idp": 1675, + "cannot delete enabled policy": 1683, + "cannot delete non-local non-sso user": 1704, + "cannot delete system policy": 1682, + "cannot delete system project": 1684, + "cannot delete system role": 1692, + "cannot delete system user": 1705, + "cannot derive valid ifname hint: %v": 1250, + "cannot fetch network of guestnetwork %d": 1226, + "cannot join read-only group": 1707, + "cannot join user and group in differnt domain": 1706, + "cannot leave read-only group": 1708, + "cannot migrate with cdrom": 823, + "cannot migrate with floppy": 824, + "cannot recycle in status %s": 978, + "cannot run hypervisor %s on specified host with type %s": 973, + "cannot set migrate params in status %s": 671, + "cannot support change azure disk name": 307, + "cannot support more than 1 nic": 237, + "cannot uncache non-customized images": 1395, + "cannot undo a recycle host with pending_deleted guest": 984, + "cannot undo recycle in status %s": 979, + "cannot update config when enabled and connected": 1667, + "cannot update config when not idle": 1668, + "cannot update in sync status": 1678, + "cdrom has no ordinal %d": 863, + "cdrom ordianl %d boot index %d is duplicated": 865, + "cert %s with %d listeners": 1156, + "channel, robot_ids or role_ids is empty": 1774, + "charge type %s not supported": 620, + "check %s duplication fail %s": 1000, + "check access_mac duplication fail %s": 1003, + "check account_id duplication error %s": 432, + "check agent uniqness fail %s": 362, + "check disk index uniqueness fail %s": 911, + "check disk snapshot count fail %s": 1569, + "check isAttach2Disk fail %s": 718, + "check mac uniqueness fail %s": 740, + "check name duplication error: %s": 171, + "check name duplication fail %s": 1849, + "check uniqness fail %s": 429, + "check uniqueness fail %s": 440, + "checkout guestdisk count fail %s": 918, + "checkout nic index uniqueness fail %s": 914, + "checkout server sku name duplicate error: %v": 1363, + "cidr %s is not in range vpc %s": 1215, + "cloudprovider %s has aleady bind project mapping %s": 462, + "cloudprovider %s not available": 523, + "cloudprovider %s not supported CrossCloud vpcpeering": 1408, + "cloudprovider %s not supported CrossRegion vpcpeering": 1409, + "cloudprovider %s(%s) is not available": 484, + "cloudprovider.SetBucketCORS error %s": 398, + "cloudregion %s not support create %s rds": 488, + "cloudregion %s not support create rds": 487, + "cloudregion %s(%s) not support %v scheduler": 1456, + "cluster system-default no id": 1765, + "cluster wire affiliation does not match network's: %s != %s": 1181, + "cluster zone %s does not match network zone %s ": 1180, + "comment contains non-printable char: %v": 89, + "comment too long (%d>=%d)": 88, + "condition values limit (5 per rule). %d given.": 1165, + "conflict cloudprovider %s with vpc %s": 569, + "conflict database %s for instance %s(%s)": 494, + "count must > 0": 842, + "cpu_core_count should be range of 1~%d": 1359, + "cpus %s not valid": 1028, + "create instance backup failed: %s": 836, + "create instance snapshot failed: %s": 834, + "dashboard_id is empty": 1786, + "data disk not support storage type %s": 290, + "dbinstance billing type %s not support cancel expire": 511, + "dbinstance billing type is %s": 510, + "default domain is protected": 1660, + "desire_instance_number should between min_instance_number and max_instance_number": 1307, + "detach devices is not string array": 734, + "dev addr %s registed": 1103, + "dev type %s model %s unhotpluggable": 728, + "dev_type is empty": 1101, + "device model has guests": 1100, + "device type %q not support update": 1104, + "device type %q not supported": 1102, + "device type %q unsupported": 1096, + "disabled user": 1645, + "disk %s bps must > 0": 816, + "disk %s iops must > 0": 817, + "disk %s not attached to server": 813, + "disk %s not found": 772, + "disk %s status is not %s": 516, + "disk backup referenced by instance backup": 515, + "disk create from existing disk must give storage": 521, + "disk has no index %d": 861, + "disk has no valid storage": 541, + "disk index %d boot index %d is duplicated": 864, + "disk inex %s is exceed 127": 860, + "disk need at least one of snapshot as backing file": 1565, + "disk size gb must in range 10 ~ 30720 Gb": 1502, + "disk.GetQuotaKeys fail %s": 542, + "dns zone can not uncache in status %s": 574, + "domain is disabled": 1679, + "domain is enabled": 1653, + "domain is in use by group": 1655, + "domain is in use by policy": 1658, + "domain is in use by project": 1656, + "domain is in use by role": 1657, + "domain is in use by user": 1654, + "domain tags not match (%s,require:%s)": 183, + "driver %s already exists": 1673, + "driver %s not supported": 1672, + "duplicate %s %s": 1001, + "duplicate access_mac %s": 1004, + "duplicate boot index %d": 941, + "duplicate instanceType %s": 1370, + "duplicate route cidr %s": 128, + "duplicate username": 1726, + "duplicated with CNAME dnsrecord name not support": 567, + "egress_mbps shoud be 1-5000 mbps": 1445, + "eip %s alread associate %s": 1175, + "eip %s has been associated": 967, + "eip %s not found": 658, + "eip %s status invalid %s": 966, + "eip %s status not ready": 1174, + "eip and server are not in the same region": 630, + "eip and server are not in the same zone": 631, + "eip cannot associate in status %s": 622, + "eip cannot dissociate in status %s": 640, + "eip has been associated": 659, + "eip has been associated with instance": 621, + "eip has been binding to another instance": 1201, + "eip network can only exist in default vpc, got %s(%s)": 1263, + "eip not supported for %s": 965, + "elastic cache no related region found": 614, + "elastic ip %s and vpc %s not in same region": 1202, + "elasticcache billing type %s not support cancel expire": 605, + "elasticcache billing type is %s": 604, + "empty DN": 1642, + "empty directory name": 373, + "empty external user id": 43, + "empty file content": 61, + "empty host name": 1128, + "empty id": 1643, + "empty idp_id or idp_entity_id": 45, + "empty input": 672, + "empty ip list": 809, + "empty keys": 379, + "empty name": 1644, + "empty project_id/tenant_id": 1561, + "empty referer link": 44, + "empty request body": 1736, + "enabled domain %s cannot be deleted": 1677, + "encrypt error %s": 1651, + "end_time is before start_time": 1819, + "endpoint is enabled": 1662, + "engine version mismatch: instance version %s, sku version %s": 595, + "every scaling policy belong to a scaling group": 1324, + "exceed address count limit: %v": 1228, + "expire time is before current expire at": 366, + "fail to GetNetworks of vpc: %v": 1267, + "fail to decode body": 189, + "fail to decode policy data": 1681, + "fail to decode request body": 1725, + "fail to fetch netif by mac %s: %s": 1046, + "fail to generate temp url: %s": 372, + "fail to get http response writer from context": 159, + "fail to get provider driver %s": 460, + "fail to mkdir: %s": 378, + "fail to parse icon url '%s'": 1372, + "failed getting guest %s": 1146, + "failed parse cdrom ordinal %s": 862, + "failed parse disk index %s": 859, + "failed parsing url %q: %v": 1838, "failed to change project": 1, - "failed to find %s": 688, - "failed to find %s %s": 1538, - "failed to find SecurityGroup %s": 1813, - "failed to find cloudregion for zone %s(%s)": 1323, - "failed to find guest %s": 1092, - "failed to find host %s": 1094, - "failed to find host for storage %s with disk %s": 475, - "failed to find loadbalancer's %s(%s) region": 1430, - "failed to find storage for disk %s": 474, - "failed to find subformat vhd for image %s, please append 'vhd' for glance options(target_image_formats)": 203, - "failed to found cloudregion %s": 1405, - "failed to found dbinstance %s": 426, - "failed to found dbinstance %s(%s) account %s: %v": 438, - "failed to found dbinstance %s(%s) database %s: %v": 428, - "failed to found guest %s": 747, - "failed to found provider factory error: %v": 389, - "failed to found storage for disk %s(%s)": 251, - "failed to found storagecache %s": 367, - "failed to found system disk error: %v": 250, - "failed to found vpc for network %s(%s)": 1535, - "failed to match any skus in the network %s(%s) zone %s(%s)": 1441, - "failed to unmarshal input params: %v": 391, - "fetch admin public key: %v": 845, - "fetch disk size failed": 918, - "fetch form data error: %s": 33, - "fetch gpu failed %s": 709, - "fetch guest %s: %v": 1158, - "fetch guest nic: %v": 1159, - "fetch instance backup error %s": 879, - "fetch instance snapshot error %s": 876, - "fetch json for request: %v": 9, - "fetch lbagents of other clusters: %v": 1068, - "fetch network interface information: %v": 840, - "fetch project public key: %v": 844, - "fetch ssh private key: %v": 839, - "fetchAuthInfo fail: %s": 13, - "field %s is readonly": 1642, - "find Wire %s error: %s": 982, - "find guest %s: %v": 1078, - "find host %s: %v": 1076, - "fixed eip cannot be associated": 609, - "fixed eip cannot sync status": 625, - "fixed public eip cannot be dissociated": 624, - "forbidden": 162, - "found %d wires for zone %s and vpc %s": 1186, - "gateway ip must be in the same subnet as start, end ip": 1200, - "generate totp qrcode failed": 18, - "get %s service %s url: %v": 1086, - "get acl count fail %s": 1058, - "get admin credential is nil": 28, - "get certificate refcount fail %s": 1107, - "get isDefault fail %s": 1097, - "get lbcluster refcount fail %v": 1116, - "get password in body": 2, - "get proxysetting refcount fail %s": 138, - "get refCount fail %s": 1099, - "get reserved ip error": 1185, - "get resourceRecord err by:%s,err:%v": 1789, - "get sensitive config requires admin priviliges": 1647, - "getDynamicSchedtagCount fail %s": 1286, - "getFreeAddressCount fail %s": 1171, - "getGuestCount fail %s": 943, - "getReferenceCount fail %s": 1348, - "getSchedPoliciesCount fail %s": 1288, - "global vpc has associate %d vpcs": 634, - "global-settings not found": 1745, - "got unknown parent type %q, expect %s": 1164, - "got unknown type %q, expect %s": 1163, - "group %s not found": 867, - "group and guest should belong to same project": 826, - "guest %s band to up to %d security groups": 678, - "guest %s has backup, can't migrate": 798, - "guest %s has isolated device, can't migrate": 799, - "guest %s host %s isolated device not enough": 710, - "guest %s hypervisor %s can't migrate": 797, - "guest %s not found": 1338, - "guest %s status %s can't migrate": 801, - "guest %s status %s can't migrate with local storage": 803, - "guest %s unsupport postpaid expire": 763, - "guest %s(%s) is already in the backendgroup %s(%s)": 1105, - "guest %s(%s) vpc %s(%s) not same as loadbalancer vpc %s": 1102, - "guest %s(%s) vpc %s(%s) not same as vpc %s(%s)": 1104, - "guest and instance group should belong to same project": 640, - "guest attach gpu count must > 0": 708, - "guest billing type %s not support cancel expire": 761, - "guest billing type is %s": 762, - "guest can't do snapshot in status %s": 808, - "guest doesn't need reconcile backup": 760, - "guest has been converted": 783, - "guest has no vpc ip": 832, - "guest hypervisor %s can't create instance snapshot": 806, - "guest on the host are using networks on this wire": 1033, - "guest status must be ready": 785, - "guest template %s used by scalig group %s": 856, - "guest template %s used by service catalog %s": 855, - "guests disk %d snapshot full, can't take anymore": 809, - "health_check_domain must be in the range of 1 ~ 80": 1425, - "host %s can't reserve %d cpu for each isolated device, not enough": 1026, - "host %s can't reserve %dM memory for each isolated device, not enough": 1027, - "host %s can't reserve %dM storage for each isolated device, not enough": 1028, - "host %s has no access ip": 1523, - "host %s is not kvm host": 784, - "host %s not found": 862, - "host %s storage %s not found": 1367, - "host has been occupied": 258, - "host is not a baremetal": 824, - "host is not a prepaid recycle host": 930, - "host missing %s field": 1082, - "host not found???": 787, - "host should be disabled": 929, - "host status %s and enabled %v, can't do server %s": 645, - "host status %s can't exit maintenance": 1016, - "host type %s can't do host maintenance": 1017, - "host virtual memory not enough": 670, - "host_type must be specified": 1005, - "hostname cannot be number %d": 935, - "http or https listener only supportd default or normal backendgroup": 1424, - "huawei %s mode elastic not support create backup": 1517, - "iBucket.DeleteCORS error %s": 351, - "iBucket.DeletePolicy error %s": 358, - "iBucket.DeleteWebSiteConf error %s": 348, - "iBucket.GetCORSRules error %s": 352, - "iBucket.GetCdnDomains error %s": 353, - "iBucket.GetIObject error %s": 363, - "iBucket.GetIObjects error %s": 346, - "iBucket.GetPolicy error %s": 356, - "iBucket.GetRefer error %s": 355, - "iBucket.GetWebsiteConf error %s": 349, - "iBucket.SetPolicy error %s": 357, - "iBucket.SetRefer error %s": 354, - "iBucket.SetWebsite error %s": 347, - "identity provider with projects": 1657, - "illegal region %s, please contact admin": 30, - "image %s do not belong to guest image %s": 919, - "image %s not found": 1003, - "image download url is expired": 45, - "image is not in status 'active'": 43, - "image size exceeds root disk size": 691, - "inconsistent account_id, previous '%s' and now '%s'": 394, - "inconsistent domain for project and roles": 1678, - "incorrect username or password": 5, - "input condition is empty": 1805, - "input data contains invalid cloudregion id": 1309, - "input data not key value dict": 748, - "input key too long > %d": 159, - "input not json dict": 1785, - "input parameter error": 20, - "input value too long > %d": 160, - "input.SourceCidr": 1155, - "instance group %s not found": 620, - "instance is already associated with eip": 612, - "instance snapshot %q not belong server %q": 815, - "instance specs list query error": 1318, - "instance_type_category shoud be one of %s": 1314, - "internal error: unexpected backend type %s": 1414, - "internal server error": 61, - "internal server error %s": 1710, - "intranet loadbalancer not support bandwidth charge type": 1407, - "invalid %d resource type %s": 1391, - "invalid %s,required int": 1433, - "invalid CannedAction %s ": 70, - "invalid Effect %s ": 71, - "invalid access key id": 1701, - "invalid addr %s": 1053, - "invalid address: %s": 440, - "invalid aggregate_strategy: %s": 924, - "invalid any_mac address": 938, - "invalid auth methods": 1697, - "invalid billing_cycle %s": 573, - "invalid bucket name %s: %s": 319, - "invalid bucket name(%s): %s": 320, - "invalid category %s for policy definition %s(%s)": 909, - "invalid cert pubkey algorithm: %s, want %s": 187, - "invalid character %s for account name": 1454, - "invalid characters %s": 1821, - "invalid cidr %s": 1239, - "invalid cidr range %s": 1543, - "invalid cidr range %s, mask length should less than or equal to 24": 1461, - "invalid cidr_block %s": 1382, - "invalid cloud account info error: %s": 390, - "invalid condition": 80, - "invalid conditions format,required json": 1119, - "invalid conditions fromat,required json array": 1120, - "invalid content_length %s": 62, - "invalid credential": 8, - "invalid default action %s": 1483, - "invalid domain": 1711, - "invalid domain %s for CNAME record": 78, - "invalid domain %s for MX record": 75, - "invalid domain name %s": 530, - "invalid download token": 44, - "invalid duration %s": 443, - "invalid duration %s: %s": 317, - "invalid end ip: %s %s": 1195, - "invalid external_access_mode %q, want %s": 1374, - "invalid fernet token": 1696, - "invalid form": 39, - "invalid format": 171, - "invalid guest %s": 1412, - "invalid image size": 42, - "invalid input format": 172, - "invalid internal ip address: %s": 1140, - "invalid ip address: %s": 1298, - "invalid ipaddr %s": 983, - "invalid ipv4 %s ": 72, - "invalid ipv4 %s for A record": 76, - "invalid ipv6 %s for AAAA record": 77, - "invalid joint resources %s": 106, - "invalid key %s: %s": 326, - "invalid loadbalancer backend port '%d'": 1257, - "invalid loadbalancer backend weight '%d'": 1258, - "invalid loadbalancer_spec %s": 1473, - "invalid local certificate, certificate is empty.": 1110, - "invalid local certificate, private key is empty.": 1109, - "invalid macAddr %s": 952, - "invalid mongodb status %s for query backups": 1133, - "invalid network type %s": 1135, - "invalid object key: %s": 333, - "invalid origin type %s": 1555, - "invalid ovn database": 1826, - "invalid parameter backendgroup %s": 1472, - "invalid parameter format. json dict required": 587, - "invalid parameter loadbalancer_spec %s": 1471, - "invalid parameters for policy definition %s": 903, - "invalid passcode": 17, - "invalid passcode: %v": 25, - "invalid password: %s": 1684, - "invalid policy definition %s(%s) condition %s": 906, - "invalid port": 848, - "invalid project": 1709, - "invalid proxy setting %s": 378, - "invalid public error: %v": 1050, - "invalid public_ip_charge_type %s": 911, - "invalid record name %s": 523, - "invalid request": 35, - "invalid resource %s": 399, - "invalid resources format": 1726, - "invalid rw_access_type %s": 298, - "invalid scope %s": 149, - "invalid share_mode %s": 73, - "invalid source %s": 296, - "invalid status %s": 1233, - "invalid strategy %s": 1274, - "invalid template": 1651, - "invalid token": 1694, - "invalid token %s": 1714, - "invalid ttl: %d": 562, - "invalid ttl: %s": 561, - "invalid url: %v": 1747, - "invalid user": 1708, - "invalid user_access_type %s": 299, - "invalid vpc provider": 1825, - "invalid vrrp advert_int %d: want [1,255]": 1064, - "invalid vrrp authentication pass size: %d, want [1,8]": 1061, - "invalid vrrp interface %q": 1060, - "invalid vrrp priority %d: want [1,255]": 1062, - "invalid vrrp virtual_router_id %d: want [1,255]": 1063, - "invalid wire id or name %v": 1401, - "invlid image": 690, - "iops must > 0": 796, - "ip": 1227, - "ip %s not found": 715, - "ip %s or mac %s has been registered": 769, - "ip_prefix error: %s": 1191, - "ipv4 range overlap": 1370, - "isAddressUsed fail %s": 1169, - "isAlterNameUnique fail %s": 1011, - "isAttached check failed %s": 662, - "lb %s does not belong to account %s": 1389, - "lbagent cannot be deployed on managed host": 1077, - "lbagent cannot be deployed on public guests": 1079, - "lbcluster %s(%s) already has virtual_router_id %d": 1070, - "lbcluster %s(%s) is still referred to by %d %s": 1117, - "lbclusters %s(%s) and %s(%s) has conflict virtual_router_id: %d ": 1118, - "listener type must be http/https, got %s": 1420, - "loadbalancer aready associated with fourth layer listener %s": 1546, - "loadbalancer backendgroup aready associate with other %s listener": 1545, - "loadbalancer is locked, cannot delete": 1128, - "loadbalancer is using by %d backendgroup.": 1496, - "loadbalancer is using by %d listener.": 1495, - "loadbalancer listener %s is already updating": 1544, - "loadbalancerlistenerrule %s(%s): fetching listener %s failed": 1423, - "login_account is longer than 32 chars": 883, - "mac %s not found": 716, - "mac addr %s has been occupied": 721, - "maintain time has no change": 584, - "make-sshable can only be performed when in running state": 841, - "managed network cannot change status": 1232, - "mapped ip exhausted": 1388, - "master slave backendgorup must contain two backend": 1410, - "memory_size_mb, shoud be range of 512~%d": 1313, - "metdata must less then 20": 882, - "metric %s is invalid format, usage .": 1755, - "metrics is empty": 1816, - "min_instance_number should not be bigger than max_instance_number": 1245, - "min_instance_number should not be smaller than 0": 1244, - "mismatched alarm id": 1269, - "miss some subimage of guest image": 920, - "missing Content-Length": 334, - "missing access_mac and uuid in no_probe mode": 961, - "missing auth token": 1712, - "missing credential": 4, - "missing driver": 1652, - "missing duration/expire_time": 315, - "missing guest id": 804, - "missing id": 12, - "missing image name": 40, - "missing image size": 41, - "missing input field blob": 1630, - "missing input field id": 1671, - "missing input field interface": 1644, - "missing input field service/service_id": 1645, - "missing input field type": 1629, - "missing key": 323, - "missing manager?": 362, - "missing name": 318, - "missing new domain": 120, - "missing new project/tenant": 167, - "missing pid in pids": 1736, - "missing pids": 1735, - "missing project_id": 83, - "missing rid": 1738, - "missing rid in pids": 1737, - "missing tag key for": 81, - "missing tags": 79, - "missing uid": 1734, - "missing username": 842, - "missong duration": 459, - "model has no field %s": 126, - "mtu must be range of 0~1000000": 1395, - "mx_priority range limited to [1,50]": 74, - "name is too short": 874, - "name longer than %d": 157, - "name starts with letter, and contains letter, number and - only": 129, - "name starts with letter, and contains letter, number and ._@- only": 156, - "nat billing type %s not support cancel expire": 1149, - "nat gateway %s not found": 622, - "nat gateway billing type is %s": 1150, - "natgateway has %d dtable": 1147, - "natgateway has %d stable": 1146, - "natgateway has bind %d eips": 1145, - "need valid access_mac and uuid to do prepare": 974, - "network %s associated route table has no internet gateway attached.": 202, - "network %s not in vpc %s": 1157, - "network %s related vpc not found": 1459, - "network %s(%s) does not belong to %s": 1536, - "network %s(%s) has no free addresses": 1172, - "network '%s' not in vpc '%s'": 1250, - "network and filesystem are not in the same region": 1137, - "network and filesystem do not belong to the same account": 1136, - "network error": 1823, - "network server_type %s not support auto alloc": 1214, - "new password mismatch": 14, - "nfs_host is required when storage type is nfs": 308, - "nfs_shared_dir is required when storage type is nfs": 309, - "no admin account found for elastic cache %s": 583, - "no allow to access network %s": 1175, - "no available eip network": 1533, - "no cloudregion found to sync skus": 1310, - "no either ip_addr or mac specified": 717, - "no external bucket": 321, - "no networks on wire %s": 984, - "no recovery secrets for %s": 1732, - "no revocery questions.": 26, - "no such ScalingGroup '%s'": 1261, - "no such cloud region %s": 1247, - "no such disk %s": 1335, - "no such driver": 1621, - "no such group %s": 825, - "no such guest template": 1305, - "no such guest template %s": 1251, - "no such guest_template %s": 1307, - "no such loadbalancer backend group '%s'": 1256, - "no such model %s": 639, - "no such provider": 188, - "no such provider %s": 384, - "no such scaling group %s": 1264, - "no such snapshotpolicy %s": 519, - "no support for instance snapshot in guest template for now": 849, - "no totp for %s": 1731, - "no usable eip network": 626, - "no usable regions, please contact admin": 29, - "no usable ssh address": 847, - "no valid endpoint": 1817, - "no valid host": 823, - "no valid storage on host": 923, - "no viable lbcluster": 1522, - "non http listener must have backend group set": 1531, - "non redirect lblistener rule must have backend_group set": 1529, - "non-admin user not allowed to create system object": 163, - "not a baremetal": 973, - "not a baremetal server": 822, - "not a valid ip address %s: %s": 1183, - "not allow create %s in scope %s": 150, - "not allow merge default security group": 1299, - "not allow to assign admin secgroup": 684, - "not allow to change project across domain": 414, - "not allow to create": 405, - "not allow to delete": 1138, - "not allow to delete %s disk with snapshots": 518, - "not allow to delete default access group": 291, - "not allow to delete default access group rule": 300, - "not allow to delete default admin security group": 1302, - "not allow to delete default cloud region": 422, - "not allow to delete default security group": 1301, - "not allow to delete default vpc": 1375, - "not allow to delete log": 130, - "not allow to delete prepaid disk in valid status": 508, - "not allow to delete prepaid server in valid status": 869, - "not allow to delete public cloud instance_type: %s": 1322, - "not allow to delete. Virtual disk must not have snapshots": 517, - "not allow to get usage": 1715, - "not allow to list domain quotas": 144, - "not allow to list project quotas": 145, - "not allow to purge. Virtual disk must not have snapshots": 516, - "not allow to query system capability": 368, - "not allow to revoke admin secgroup": 682, - "not allow to set system key, please remove the underscore at the beginning": 158, - "not allow update rds account name": 425, - "not allow update rds database name": 437, - "not allowed update content of certificate": 1112, - "not an empty network %s": 1167, - "not empty cloud region": 421, - "not empty zone: %s": 1404, - "not enough privilege": 294, - "not enough privilege (require:%s,allow:%s)": 148, - "not enough privilege (require:%s,allow:%s:resource:%s) [tags:%s]": 147, - "not enough privilege to dp %s (require:%s,allow:%s,query:%s)": 122, - "not enough privilleges": 143, - "not find alert %s": 1761, - "not find notification %s": 1762, - "not found alert notification used by %s": 1782, - "not found cert %s": 1646, - "not found res_id %q": 1779, - "not found res_type %q": 1780, - "not found signature": 1786, + "failed to find %s": 704, + "failed to find %s %s": 1541, + "failed to find cloudregion for zone %s(%s)": 1369, + "failed to find host for storage %s with disk %s": 520, + "failed to find storage for disk %s": 519, + "failed to find subformat vhd for image %s, please append 'vhd' for glance options(target_image_formats)": 242, + "failed to found cloudregion %s": 1442, + "failed to found dbinstance %s": 468, + "failed to found dbinstance %s(%s) account %s: %v": 480, + "failed to found dbinstance %s(%s) database %s: %v": 470, + "failed to found guest %s": 770, + "failed to found provider factory error: %v": 437, + "failed to found storage for disk %s(%s)": 297, + "failed to found storagecache %s": 414, + "failed to found system disk error: %v": 296, + "failed to found vpc for network %s(%s)": 1534, + "failed to match any skus in the network %s(%s) zone %s(%s)": 1462, + "failed to unmarshal input params: %v": 439, + "fetch admin public key: %v": 899, + "fetch disk size failed": 971, + "fetch form data error: %s": 40, + "fetch gpu failed %s": 725, + "fetch instance backup error %s": 932, + "fetch instance snapshot error %s": 929, + "fetch json for request: %v": 10, + "fetch network interface information: %v": 894, + "fetch project public key: %v": 898, + "fetch ssh private key: %v": 893, + "fetchAuthInfo fail: %s": 14, + "field %s is readonly": 1661, + "find Wire %s error: %s": 1041, + "find guest %s: %v": 1131, + "find host %s: %v": 1129, + "fixed eip cannot be associated": 623, + "fixed eip cannot sync status": 642, + "fixed public eip cannot be dissociated": 641, + "forbidden": 211, + "found %d wires for zone %s and vpc %s": 1246, + "gateway ip must be in the same subnet as start, end ip": 1260, + "generate totp qrcode failed": 19, + "get admin credential is nil": 35, + "get isDefault fail %s": 1140, + "get lbcluster refcount fail %v": 1161, + "get password in body": 2, + "get proxysetting refcount fail %s": 187, + "get refCount fail %s": 1142, + "get reserved ip error": 1245, + "get resourceRecord err by:%s,err:%v": 1813, + "get sensitive config requires admin priviliges": 1666, + "getDynamicSchedtagCount fail %s": 1347, + "getFreeAddressCount fail %s": 1240, + "getGuestCount fail %s": 994, + "getReferenceCount fail %s": 1388, + "getSchedPoliciesCount fail %s": 1349, + "global vpc has associate %d vpcs": 651, + "group %s not found": 919, + "group and guest should belong to same project": 850, + "guest %s band to up to %d security groups": 883, + "guest %s has backup, can't migrate": 819, + "guest %s has isolated device, can't migrate": 820, + "guest %s host %s isolated device not enough": 726, + "guest %s hypervisor %s can't migrate": 818, + "guest %s not found": 1378, + "guest %s status %s can't migrate": 822, + "guest %s status %s can't migrate with local storage": 825, + "guest %s unsupport postpaid expire": 790, + "guest %s(%s) is already in the backendgroup %s(%s)": 1148, + "guest %s(%s) vpc %s(%s) not same as loadbalancer vpc %s": 1145, + "guest %s(%s) vpc %s(%s) not same as vpc %s(%s)": 1147, + "guest and instance group should belong to same project": 657, + "guest attach gpu count must > 0": 724, + "guest billing type %s not support cancel expire": 788, + "guest billing type is %s": 789, + "guest can't do snapshot in status %s": 830, + "guest has been converted": 870, + "guest has no backup guest": 785, + "guest has no vpc ip": 855, + "guest hypervisor %s can't create instance snapshot": 828, + "guest is not in rescue mode": 880, + "guest status must be ready": 873, + "guest status must be ready or running": 875, + "guest template %s used by scalig group %s": 910, + "guest template %s used by service catalog %s": 909, + "guest.GetHost: %s": 877, + "guest.StartGuestRescueTask: %s": 879, + "guest.StopGuestRescueTask: %s": 881, + "guests disk %d snapshot full, can't take anymore": 831, + "health_check_domain must be in the range of 1 ~ 80": 1454, + "host %s can't reserve %d cpu for each isolated device, not enough": 1081, + "host %s can't reserve %dM memory for each isolated device, not enough": 1082, + "host %s can't reserve %dM storage for each isolated device, not enough": 1083, + "host %s has %d guests, can't update reserve cpus": 1026, + "host %s is not kvm host": 872, + "host %s not found": 916, + "host %s storage %s not found": 1404, + "host has been occupied": 304, + "host is not a baremetal": 846, + "host is not a prepaid recycle host": 981, + "host not found???": 808, + "host should be disabled": 980, + "host status %s and enabled %v, can't do server %s": 662, + "host status %s can't exit maintenance": 1071, + "host type %s can't do host maintenance": 1072, + "host type %s not support reserve cpus": 1025, + "host type of host %q (%s) should be either hypervisor or esxi": 1153, + "host virtual cpu not enough": 691, + "host virtual memory not enough": 692, + "host_type must be specified": 1060, + "hostname cannot be number %d": 986, + "hostname should be a legal domain name": 927, + "huawei %s mode elastic not support create backup": 1523, + "iBucket.DeleteCORS error %s": 399, + "iBucket.DeletePolicy error %s": 406, + "iBucket.DeleteWebSiteConf error %s": 396, + "iBucket.GetCORSRules error %s": 400, + "iBucket.GetCdnDomains error %s": 401, + "iBucket.GetIObject error %s": 411, + "iBucket.GetIObjects error %s": 394, + "iBucket.GetPolicy error %s": 404, + "iBucket.GetRefer error %s": 403, + "iBucket.GetWebsiteConf error %s": 397, + "iBucket.SetPolicy error %s": 405, + "iBucket.SetRefer error %s": 402, + "iBucket.SetWebsite error %s": 395, + "identity provider with projects": 1676, + "illegal region %s, please contact admin": 37, + "image %s not found": 1058, + "image download url is expired": 52, + "image is not in status 'active'": 50, + "image size exceeds root disk size": 707, + "inconsistent account_id, previous '%s' and now '%s'": 442, + "inconsistent domain for project and roles": 1697, + "incorrect username or password": 5, + "input condition is empty": 1833, + "input data contains invalid cloudregion id": 1375, + "input data not key value dict": 771, + "input ip mac conflict with guest %s nic %d": 1225, + "input key too long > %d": 207, + "input network configs length must equal guestnetworks length": 874, + "input not json dict": 1809, + "input parameter error": 21, + "input value too long > %d": 208, + "input.SourceCidr": 1214, + "instance group %s not found": 634, + "instance is already associated with eip": 626, + "instance snapshot %q not belong server %q": 838, + "instance specs list query error": 1365, + "instance_type_category shoud be one of %s": 1361, + "internal error: unexpected backend type %s": 1540, + "internal server error": 68, + "internal server error %s": 1730, + "intranet loadbalancer not support bandwidth charge type": 1446, + "invalid %d resource type %s": 1430, + "invalid CannedAction %s ": 78, + "invalid Effect %s ": 79, + "invalid acl_status %v": 107, + "invalid acl_type %v": 108, + "invalid action %s": 1493, + "invalid action %s, only support allow": 1492, + "invalid addr %s": 87, + "invalid address: %s": 482, + "invalid address_type %s": 1177, + "invalid aggregate_strategy: %s": 975, + "invalid backend_type %s": 1155, + "invalid billing_cycle %s": 589, + "invalid bucket name %s: %s": 369, + "invalid bucket name(%s): %s": 361, + "invalid category %s for policy definition %s(%s)": 962, + "invalid cdrom_ordinal: %d": 695, + "invalid cert pubkey algorithm: %s, want %s": 236, + "invalid character %s for account name": 1475, + "invalid characters %s": 1842, + "invalid charge_type %s": 1178, + "invalid cidr %s": 1300, + "invalid cidr range %s": 1544, + "invalid cidr range %s, mask length should less than or equal to 24": 1482, + "invalid cidr: %s": 1184, + "invalid cidr_block %s": 1416, + "invalid cloud account info error: %s": 438, + "invalid condition": 124, + "invalid conditions format,required json": 1163, + "invalid conditions fromat,required json array": 1164, + "invalid content_length %s": 69, + "invalid credential": 9, + "invalid default action %s": 1496, + "invalid domain": 1731, + "invalid domain %s": 115, + "invalid domain %s for CNAME record": 86, + "invalid domain %s for MX record": 83, + "invalid domain name %s": 568, + "invalid download token": 51, + "invalid duration %s": 485, + "invalid duration %s: %s": 367, + "invalid end ip: %s %s": 1255, + "invalid engine %s": 1480, + "invalid external_access_mode %q, want %s": 1411, + "invalid floppy_ordinal: %d": 700, + "invalid form": 46, + "invalid format": 220, + "invalid guest %s": 1449, + "invalid health_cheack_type %v": 114, + "invalid health_check %s": 103, + "invalid health_check %v": 113, + "invalid health_check_http_code: %s": 105, + "invalid health_check_type %s": 104, + "invalid http_request_rate %d": 117, + "invalid http_request_rate_per_sec %d": 118, + "invalid image size": 49, + "invalid input format": 221, + "invalid internal ip address: %s": 1199, + "invalid interval %s": 1577, + "invalid ip address: %s": 1353, + "invalid ipaddr %s": 1042, + "invalid ipv4 %s ": 80, + "invalid ipv4 %s for A record": 84, + "invalid ipv6 %s for AAAA record": 85, + "invalid joint filter %s, because %s doesn't have %s field": 155, + "invalid joint resources %s": 154, + "invalid key %s: %s": 374, + "invalid listener_type %s": 100, + "invalid loadbalancer backend port '%d'": 1318, + "invalid loadbalancer backend weight '%d'": 1319, + "invalid loadbalancer_spec %s": 1444, + "invalid macAddr %s": 1002, + "invalid maintain_start_time %s": 1521, + "invalid metric_name %s": 1823, + "invalid mongodb status %s for query backups": 1192, + "invalid network type %s": 1194, + "invalid object key: %s": 381, + "invalid object_bucket_url %s: %s": 355, + "invalid origin type %s": 1553, + "invalid ovn database": 1847, + "invalid parameter format. json dict required": 602, + "invalid parameters for policy definition %s": 956, + "invalid passcode": 18, + "invalid passcode: %v": 26, + "invalid password: %s": 1703, + "invalid path %s": 116, + "invalid policy definition %s(%s) condition %s": 959, + "invalid port": 902, + "invalid port %d": 1149, + "invalid ports %s": 1485, + "invalid priority %d": 1538, + "invalid priority %d, range 0-65535": 1503, + "invalid priority %d, range 0-99": 1554, + "invalid priority %d, range 1-100": 1484, + "invalid priority %d, range 1-3": 1557, + "invalid priority %d, range 100-4096": 1497, + "invalid private ip %s": 588, + "invalid project": 1729, + "invalid protocol %s": 1539, + "invalid proxy setting %s": 425, + "invalid public error: %v": 1115, + "invalid public_ip_charge_type %s": 964, + "invalid record name %s": 566, + "invalid redirect %s": 106, + "invalid redirect_code %d": 119, + "invalid redirect_host %s": 122, + "invalid redirect_path %s": 120, + "invalid redirect_scheme %s": 121, + "invalid request": 42, + "invalid request URL %s": 29, + "invalid resource %s": 445, + "invalid resources format": 1750, + "invalid rw_access_type %s": 347, + "invalid scheduler %s": 96, + "invalid scheduler %v": 109, + "invalid scope %s": 198, + "invalid secgroup %s": 285, + "invalid send_proxy %s": 95, + "invalid send_proxy %v": 93, + "invalid service %s: %s": 34, + "invalid share_mode %s": 81, + "invalid source %s": 345, + "invalid ssl %s": 1151, + "invalid ssl %v": 94, + "invalid status %s": 1293, + "invalid sticky_session %s": 99, + "invalid sticky_session %v": 111, + "invalid sticky_session_cookie %s": 98, + "invalid sticky_session_type %s": 97, + "invalid sticky_session_type %v": 112, + "invalid strategy %s": 1335, + "invalid template": 1670, + "invalid time_zone %s": 1648, + "invalid tls_cipher_policy %s": 102, + "invalid tls_cipher_policy %v": 110, + "invalid token %s": 1738, + "invalid url: %v": 1770, + "invalid user": 1728, + "invalid user_access_type %s": 348, + "invalid vnc port %d": 267, + "invalid vpc provider": 1846, + "invalid weight %d": 1150, + "invalid wire id or name %v": 1438, + "invalidate address %s": 1169, + "invlid image": 706, + "ip": 1287, + "ip %s not found": 735, + "ip %s or mac %s has been registered": 796, + "ip addr %s is in use": 1221, + "ip_prefix error: %s": 1251, + "ipv4 range overlap": 1407, + "isAddressUsed fail %s": 1237, + "isAlterNameUnique fail %s": 1066, + "isAttached check failed %s": 682, + "lb %s does not belong to account %s": 1428, + "lb manager %s does not match eip manager %s": 1176, + "lb manager %s does not match vpc manager %s": 1171, + "lb region %s does not match eip region %s": 1173, + "lb region %s does not match vpc region %s": 1172, + "lbagent cannot be deployed on managed host": 1130, + "lbagent cannot be deployed on public guests": 1132, + "lbcluster %s(%s) already has virtual_router_id %d": 1162, + "lbcluster %s(%s) is still referred to by %d %s": 1160, + "listener type must be http/https, got %s": 1166, + "listener_port out of range 1-65535": 101, + "loadbalancer %s not found": 637, + "loadbalancer backend group %s has aleady used by other listener": 1504, + "loadbalancer is already associated with eip": 639, + "loadbalancer is locked, cannot delete": 1182, + "login_account is longer than 32 chars": 936, + "mac %s not found": 736, + "mac addr %s has been occupied": 741, + "mac addr %s is in use": 1222, + "mac address %s is not valid": 1224, + "maintain time has no change": 599, + "make-sshable can only be performed when in running state": 895, + "malformed URL, expect region": 32, + "malformed URL, expect service": 31, + "malformed URL, expect zone": 33, + "managed network cannot change status": 1292, + "manager %s is not %s cloud": 1545, + "manager of host %q (%s) != manager of loadbalancer %q (%s))": 1154, + "mapped ip exhausted": 1427, + "master slave backendgorup must contain two backend": 1447, + "max bandwidth must gratethan 100M": 275, + "max_instance_count must greater than or equal to desired_instance_count": 1120, + "memory_size_mb, shoud be range of 512~%d": 1360, + "mems %s not valid": 1031, + "mems %s out of range": 1032, + "metdata must less then 20": 935, + "metric %s is invalid format, usage .": 1778, + "min_instance_count must less or equal to desired_instance_count": 1119, + "min_instance_number should not be bigger than max_instance_number": 1306, + "min_instance_number should not be smaller than 0": 1305, + "mismatched alarm id": 1330, + "missing Content-Length": 382, + "missing access_mac and uuid in no_probe mode": 1011, + "missing auth token": 1732, + "missing cpus": 1027, + "missing credential": 4, + "missing driver": 1671, + "missing duration/expire_time": 365, + "missing guest id": 826, + "missing id": 13, + "missing image name": 47, + "missing image size": 48, + "missing input field blob": 1650, + "missing input field id": 1690, + "missing input field interface": 1663, + "missing input field service/service_id": 1664, + "missing input field type": 1649, + "missing key": 371, + "missing manager?": 410, + "missing name": 368, + "missing new domain": 170, + "missing new project/tenant": 216, + "missing pid in pids": 1760, + "missing pids": 1759, + "missing project_id": 127, + "missing rid": 1762, + "missing rid in pids": 1761, + "missing tag key for": 125, + "missing tags": 123, + "missing uid": 1758, + "missing update field": 1220, + "missing username": 896, + "missong duration": 501, + "model %s has been registered": 1099, + "model has no field %s": 176, + "mtu must be range of 0~1000000": 1434, + "must enable auto_migrate_on_host_down at same time": 1023, + "mx_priority range limited to [1,50]": 82, + "name is too short": 926, + "name longer than %d": 206, + "name starts with letter, and contains letter, number and - only": 179, + "name starts with letter, and contains letter, number and ._@- only": 205, + "nat billing type %s not support cancel expire": 1208, + "nat gateway %s not found": 636, + "nat gateway billing type is %s": 1209, + "natgateway has %d dtable": 1206, + "natgateway has %d stable": 1205, + "natgateway has bind %d eips": 1204, + "need valid access_mac and uuid to do prepare": 1034, + "network %s associated route table has no internet gateway attached.": 241, + "network %s not belong to vpc %s": 1118, + "network %s not contains ip addr %s": 1223, + "network %s not found": 1218, + "network %s not in vpc %s": 1216, + "network %s(%s) does not belong to %s": 1535, + "network %s(%s) has no free addresses": 1241, + "network '%s' not in vpc '%s'": 1311, + "network and filesystem are not in the same region": 1196, + "network and filesystem do not belong to the same account": 1195, + "network error": 1844, + "network server_type %s not support auto alloc": 1274, + "network type %s can't set ip mac": 1219, + "new password mismatch": 15, + "nfs_host is required when storage type is nfs": 352, + "nfs_shared_dir is required when storage type is nfs": 353, + "no admin account found for elastic cache %s": 598, + "no allow to access network %s": 1232, + "no available eip network": 1531, + "no cloudregion found to sync skus": 1376, + "no either ip_addr or mac specified": 737, + "no external bucket": 370, + "no networks on wire %s": 1043, + "no recovery secrets for %s": 1756, + "no revocery questions.": 27, + "no service": 30, + "no such ScalingGroup '%s'": 1322, + "no such cloud region %s": 1308, + "no such driver": 1641, + "no such group %s": 849, + "no such guest template": 1371, + "no such guest template %s": 1312, + "no such guest_template %s": 1373, + "no such loadbalancer backend group '%s'": 1317, + "no such model %s": 656, + "no such provider %s": 431, + "no such scaling group %s": 1325, + "no such server %s": 1578, + "no support for instance snapshot in guest template for now": 903, + "no totp for %s": 1755, + "no usable eip network": 643, + "no usable network in vpc %s(%s)": 1526, + "no usable regions, please contact admin": 36, + "no usable ssh address": 901, + "no valid host": 845, + "no valid storage on host": 974, + "no viable lbcluster": 1529, + "non-admin user not allowed to create system object": 212, + "not a baremetal": 1033, + "not a baremetal server": 844, + "not a valid ip address %s: %s": 1243, + "not allow clean projects": 1688, + "not allow create %s in scope %s": 199, + "not allow to access admin key": 1563, + "not allow to assign admin secgroup": 889, + "not allow to change project across domain": 458, + "not allow to create": 450, + "not allow to delete": 1197, + "not allow to delete %s disk with snapshots": 563, + "not allow to delete default access group": 340, + "not allow to delete default access group rule": 349, + "not allow to delete default admin security group": 1355, + "not allow to delete default cloud region": 463, + "not allow to delete default security group": 1354, + "not allow to delete default vpc": 1412, + "not allow to delete log": 141, + "not allow to delete prepaid disk in valid status": 550, + "not allow to delete prepaid server in valid status": 921, + "not allow to delete public cloud instance_type: %s": 1368, + "not allow to delete. Virtual disk must not have snapshots": 562, + "not allow to get usage": 1739, + "not allow to list domain quotas": 193, + "not allow to list project quotas": 194, + "not allow to purge. Virtual disk must not have snapshots": 561, + "not allow to query system capability": 415, + "not allow to revoke admin secgroup": 887, + "not allow to set system key, please remove the underscore at the beginning": 209, + "not allow update rds account name": 467, + "not allow update rds database name": 479, + "not an empty network %s": 1229, + "not empty cloud region": 464, + "not empty zone: %s": 1441, + "not enough privilege": 343, + "not enough privilege (require:%s,allow:%s)": 197, + "not enough privilege (require:%s,allow:%s:resource:%s) [tags:%s]": 196, + "not enough privilege to do %s:%s:%s (require:%s,allow:%s,query:%s)": 172, + "not enough privilleges": 192, + "not find alert %s": 1784, + "not find notification %s": 1785, + "not found alert notification used by %s": 1806, + "not found cert %s": 1665, + "not found res_id %q": 1803, + "not found res_type %q": 1804, + "not found signature": 1810, "not found tenantId in body": 0, - "not implement": 263, - "not match any dbinstance sku": 447, - "not support %s": 782, - "not support auto_create_project": 82, - "not support create": 1235, - "not support create %s zone": 1406, - "not support create definition": 1236, - "not support database": 1777, - "not support for cloudaccount with provider '%s'": 404, - "not support hypervisor %s": 781, - "not support reset user password": 15, - "not support type %q": 1778, - "not support update disk_type %s": 473, - "not supported": 272, - "not supported bind security group": 594, - "not supported create rule": 1462, - "not supported for inter vpc network %s": 1384, - "not supported hypervisor %s": 940, - "not supported next hop type %s": 1240, - "not supported secondary update context %s": 1679, - "not supported update context": 1676, - "not supported update context %s": 1677, - "now allow to delete inuse instance_type.please remove related servers first: %s": 1321, - "object %s not found": 345, - "object count limit exceeds": 328, - "object key should not ends with /": 332, - "object size limit exceeds": 338, - "on-premise network cannot sync status": 1231, - "on-premise vpc cannot sync status": 1385, - "only on premise support this operation": 1220, - "only sysadmin can specify host as backend": 1093, - "only us-east-1 support %s": 1478, - "parameter %s is empty": 1752, - "parse cdrom device info error %s": 887, - "parse disk description error %s": 893, - "parse end_time: %s err": 1794, - "parse form data error: %s": 34, - "parse isolated device description error %s": 898, - "parse network description error %s": 896, - "parse query string error: %s": 32, - "parse start_time: %s err": 1793, - "passcode is a 6-digits string": 24, - "password must be 12 chars of at least one digit, letter, uppercase letter and punctuate": 1618, - "path can not be emtpy": 1547, - "peer lbagent %s(%s) already has vrrp priority %d": 1073, - "peer_secgroup_id can not point to secgroup self": 1293, - "please retry after unbind all guests in group": 636, - "pod climc no name": 1744, - "pod climc not found": 1743, - "policy definition %s require cloudregion in %s": 904, - "policy definition %s require cloudregion not in %s": 905, - "policy definition %s require except tag %s": 908, - "policy definition %s require must contains tag %s": 907, - "policy is referenced": 1828, - "port %d not support, only support range 1 ~ 65535": 1091, - "private_key and password cannot both be empty": 843, - "project %s not found": 395, - "project contains external resources": 1666, - "project contains group": 1668, - "project contains user": 1667, - "project disabled": 1692, - "project in non-default domain is prohibited": 119, - "project is not found": 1739, - "project mapping has associate %d accounts": 1237, - "project mapping has associate %d cloudproviders": 1238, - "project tags not match (%s,require:%s)": 135, - "provider %s: %v": 375, - "provider is enabled": 406, - "provider is not idle": 407, - "provider is shared outside of domain": 398, - "provider mismatch: %s instance can't use %s sku": 577, - "proxysetting %s is still referred to by %d %s": 139, - "public connection aready allocated": 585, - "public ip not supported for %s": 910, - "put object error %s": 340, - "query all networks fail": 1209, - "query backend group releated resource failed.": 1088, - "query duration `to` err: %s": 1809, - "query duration err: from: %s, to:%s": 1808, - "query error %s": 1628, - "query quotas %s": 146, - "query sku list failed.": 1325, - "questions not found": 22, - "readonly": 1640, - "recv invalid data": 68, - "redirect can only be enabled for http/https listener": 1530, - "redirect must have at least one of scheme, host, path changed": 1527, - "redis version 2.8 not support create account": 1552, - "referered by storages": 1354, - "reflect call %s fail %s": 112, - "region": 592, - "region contains endpoints": 1670, - "region mismatch: instance region %s, sku region %s": 578, - "region of backend %d does not match that of lb's": 1096, - "region of host %q (%s) != region of loadbalancer %q (%s)": 1526, - "region of host %q (%s) != region of loadbalancer %q (%s))": 1416, - "region:%s no support pull metric at the moment": 1815, - "regiondriver": 593, - "release public connection aready released": 586, - "rep body code is :%s, message:%s,body:%v": 1814, - "repeat_weekdays only contains %d days at most": 1329, - "request body is empty": 11, - "request process timeout": 91, - "require system previleges to convert host in other domain": 1009, - "require validated qcloud cross region vpcPeering bandwidth values:[10, 20, 50, 100, 200, 500, 1000],unit Mbps": 1818, - "required at least %d subnet with at least 8 free ip.": 1467, - "required at least %d subnet.": 1466, - "reserved cpu must >= 0": 1023, - "reserved memory must >= 0": 1024, - "reserved storage must >= 0": 1025, - "resource %s in vpc %s external access mode %s is not support accociate eip": 603, - "resource %s is not support sync skus": 1308, - "resource %s module not exists": 66, - "resource (domain) tags not match (tags:%s,require:%s)": 131, - "resource (project) tags not match (tags:%s,require:%s)": 132, - "resource is enabled": 1661, - "resource tags not match (tags:%s,require:%s)": 133, - "role is being assigned to group": 1675, - "role is being assigned to user": 1674, - "root disk image(%s) and sku(%s) architecture mismatch": 689, - "row %d domain is empty": 57, - "row %d duplicate name %s": 58, - "row %d name is empty": 55, - "row %d password is empty": 56, - "rule %d is invalid: %s": 1295, - "rule %s/%s already occupied by rule %s(%s)": 1122, - "saveConfigs fail %s": 1650, - "schedtag %s not found": 564, - "schedtag_id not provide": 1276, - "searching for usable ssh address: %v": 846, - "secgroup %s not found": 863, - "secgroup %s rules not equals %s rules": 1300, - "secgroups will be empty after update.": 597, - "security group %s has already been assigned to guest %s": 679, - "security group %s not assigned to guest %s": 681, - "security group has been reference in %d security group": 1292, - "security group id should not be empty": 1812, - "select for nothing in query": 1807, - "self billing type %s not support cancel expire": 1132, - "self billing type is %s": 1131, - "server %s does not belong to account %s": 1390, - "server %s not found": 604, - "server %s with port %d already in used": 1548, - "server %s with port %d aready used by other %s listener": 1549, - "server and eip are not managed by the same provider": 619, - "server host is not found???": 618, - "server is in %q state, want %q": 1080, - "server region is not found???": 615, - "server sshable state can only be checked when in running state": 838, - "service %s not found error: %v": 1727, - "service contains endpoints": 1680, - "service is enabled": 1681, - "service_type %s": 1553, - "session expires, missing %s": 31, - "setAcl error %s": 341, - "sharing is limited to domains %s": 154, - "shield res_id is empty": 1791, - "shield res_name is empty": 1790, - "signature error": 1787, - "sku %s is soldout": 1515, - "sku %s not indicate attached disk backend": 892, - "sku %s not indicate attached disk size": 891, - "slave dbinstance not support prepaid billing type": 1440, - "snapshot %s not found": 734, - "snapshot referenced by instance snapshot": 1341, - "snapshotpolicy %s not found: %s": 472, - "snapshotpolicy disk has been exist": 1336, - "some networks not exist": 1249, - "source_cidr and network_id conflict": 1154, - "ssh protocol error": 1824, - "start and end ip not in the same subnet": 1196, - "start and end ip when masked are not in the same cidr subnet": 1205, - "start create backup task failed: %s": 814, - "start create snapshot task failed: %s": 812, - "start snapshot reset failed %s": 818, - "start, end ip must be in the same subnet": 1212, - "sticky_session_cookie can only contain letters, Numbers, '_' and '-'": 1428, - "sticky_session_cookie length must within 1~200": 1427, - "storage %s can not be data disk": 248, - "storage %s(%s) need online and attach host for create disk": 478, - "storage cache is missing": 1364, - "storage cache not empty": 1353, - "storage classes not supported": 417, - "storage has associate hosts": 1361, - "storage has backup": 311, - "storage has disks": 1362, - "storage has snapshots": 1363, - "storage is enabled": 1365, - "storage not cache image": 1356, - "storage of disk %s no valid host": 505, - "subnet masklen should be smaller than 30": 1192, - "sync error": 69, - "syncWithCloudBucket error %s": 342, - "sync_interval_seconds should be greater than %d": 397, - "sysadmin is protected": 1626, - "table %s not found": 128, - "tag has dynamic rules": 1287, - "tag is associate with sched policies": 1289, - "telegraf params: invalid influxdb url: %s": 1065, - "template file is invalid. please check.": 53, - "template not found %s": 60, - "template_id": 59, - "tenant/project %s not found": 1561, - "the %s %q in guest template is not a public resource": 852, - "the %s %q in guest template is not a public resource in %s scope": 854, - "the %s in guest template is not a public resource": 851, - "the %s in guest template is not a public resource in %s scope": 853, - "the AlertType is illegal:%s": 1773, - "the Comparator is illegal: %s": 1765, - "the account has been registerd %s": 386, - "the acl cache in region %s aready exists.": 1106, - "the certificate cache in region %s aready exists.": 1111, - "the class metadata of guest and disk is different": 667, - "the disk of a esxi virtual machine with instance snapshots does not support resizing": 791, - "the guest template %s is not valid in cloudregion %s, reason: %s": 1252, - "the hostname length must be greater than or equal to 2": 937, - "the image reference session has not been expired!": 366, - "the min value of cycle in alarm is 300": 1273, - "the other security group is in use": 1304, - "the reduce is illegal %s": 1766, - "the reduce is illegal: %s": 1767, - "the security group %s is in use cnt: %s": 1303, - "the vpc %s and this wire have different class metadata": 1403, - "the wire %s and project %s has different class metadata": 1204, - "the wire %s and the project %s has different class metadata": 1230, - "there are dnat rules with same external ip and external port": 1141, - "there are no disks in this instance backup, try another one": 881, - "there are no disks in this instance snapshot, try another one": 877, - "there is no such secgroup %s descripted by guest template": 850, - "this operation requires rds state to be %s": 470, - "threshold:%s should be number type": 1775, - "time_points only contains %d points at most": 1330, - "top level public domain name %s not support": 533, - "totp secret exists": 1733, - "uid is empty": 19, - "unable to fetch backupStorage %s": 1035, - "unauthorized %s": 1704, - "unexpected backend type %s": 1095, - "unknown parent object id spec": 1162, - "unknown server type %s": 866, - "unknown zone type %s": 534, - "unkown expansion principle %s": 1253, - "unkown health check mode %s": 1255, - "unkown indicator in alarm %s": 1271, - "unkown operator in alarm %s": 1270, - "unkown scaling policy action %s": 1266, - "unkown scaling policy unit %s": 1267, - "unkown shrink principle %s": 1254, - "unkown trigger type %s": 1265, - "unkown wrapper in alarm %s": 1272, - "unmarshal JointResourceCreateInput fail %s": 1280, - "unmarshal SharableVirtualResourceCreateInput fail %s": 1057, - "unmarshal StandaloneResourceCreateInput fail %s": 565, - "unmarshal VirtualResourceCreateInput fail %s": 1089, - "unmarshal input fail %s": 1820, - "unmarshal input: %v": 1081, - "unmarshal limit error %s": 359, - "unmarshal questions: %v": 27, - "unmarshaling cidrs failed: %s": 1243, - "unrecognized input %s": 1703, - "unsupport delete %s backups": 572, - "unsupport on host status %s": 1018, - "unsupport type: %s": 1748, - "unsupported action %s": 1740, - "unsupported duration %s": 444, - "unsupported execution_error_state %s": 1754, - "unsupported no_data_state %s": 1753, - "unsupported notification type %s": 1783, - "unsupported resource type %s": 1781, - "unsupported vdi protocol": 239, - "update config version fail %s": 1682, - "update keypairId %v": 658, - "url is empty": 1746, - "use yum requires valid repo_base_url": 1074, - "user %s not found": 161, - "user contains external resources": 1686, - "user disabled": 1693, - "user forbidden login from web": 10, - "user must have system admin privileges": 1085, - "user not found": 1698, - "user not found or not enabled": 1707, - "user not in project": 1700, + "not implement": 309, + "not match any dbinstance sku": 489, + "not support %s": 871, + "not support auto_create_project": 126, + "not support create": 1295, + "not support create %s zone": 1443, + "not support create definition": 1296, + "not support database": 1800, + "not support for cloudaccount with provider '%s'": 449, + "not support managed lb": 1183, + "not support reset user password": 16, + "not support target hypervisor %s": 869, + "not support type %q": 1801, + "not support update disk_type %s": 518, + "not support update security group rule": 1525, + "not supported": 318, + "not supported bind security group": 609, + "not supported create rule": 1483, + "not supported for inter vpc network %s": 1418, + "not supported hypervisor %s": 990, + "not supported next hop type %s": 1301, + "not supported secondary update context %s": 1698, + "not supported update context": 1695, + "not supported update context %s": 1696, + "now allow to delete inuse instance_type.please remove related servers first: %s": 1367, + "object %s not found": 393, + "object count limit exceeds": 376, + "object key should not ends with /": 380, + "object size limit exceeds": 386, + "object_access_key is required when storage type is object": 356, + "object_bucket_url is required when storage type is object": 354, + "object_secret is required when storage type is object": 357, + "on-premise network cannot sync status": 1291, + "on-premise vpc cannot sync status": 1419, + "only network type %q is allowed": 1527, + "only on premise support this operation": 1280, + "only sysadmin can specify host as backend": 1137, + "only us-east-1 support %s": 1490, + "parameter %s is empty": 1775, + "parse cdrom device info error %s": 940, + "parse disk description error %s": 949, + "parse end_time: %s err": 1818, + "parse form data error: %s": 41, + "parse isolated device description error %s": 745, + "parse network description error %s": 951, + "parse query string error: %s": 39, + "parse start_time: %s err": 1817, + "passcode is a 6-digits string": 25, + "password must be 12 chars of at least one digit, letter, uppercase letter and punctuate": 1638, + "path can not be emtpy": 1547, + "ping host type %s not support": 1024, + "please retry after unbind all guests in group": 653, + "pod climc no name": 1767, + "pod climc not found": 1766, + "policy definition %s require cloudregion in %s": 957, + "policy definition %s require cloudregion not in %s": 958, + "policy definition %s require except tag %s": 961, + "policy definition %s require must contains tag %s": 960, + "policy is referenced": 1850, + "port %d not support, only support range 1 ~ 65535": 1136, + "port out of range 1-65535": 92, + "private_key and password cannot both be empty": 897, + "project %s not found": 443, + "project contains group": 1686, + "project contains user": 1685, + "project in non-default domain is prohibited": 169, + "project is not found": 1763, + "project mapping has associate %d accounts": 1297, + "project mapping has associate %d cloudproviders": 1298, + "project tags not match (%s,require:%s)": 184, + "protocol %s": 1556, + "provider is enabled": 451, + "provider is not idle": 452, + "provider is shared outside of domain": 444, + "proxysetting %s is still referred to by %d %s": 188, + "public connection aready allocated": 600, + "public ip not supported for %s": 963, + "put object error %s": 388, + "qga ping failed is qga running?": 868, + "query all networks fail": 1269, + "query backend group releated resource failed.": 1134, + "query error %s": 1647, + "query quotas %s": 195, + "questions not found": 23, + "readonly": 1659, + "recv invalid data": 75, + "redis version 2.8 not support create account": 1550, + "referered by storages": 1394, + "reflect call %s fail %s": 161, + "region": 607, + "region contains endpoints": 1689, + "region mismatch: instance region %s, sku region %s": 593, + "region of backend %d does not match that of lb's": 1139, + "region of host %q (%s) != region of loadbalancer %q (%s))": 1152, + "regiondriver": 608, + "release public connection aready released": 601, + "repeat_weekdays out of range 1-7": 129, + "request body is empty": 12, + "request dev type %s not match %s": 1110, + "request process timeout": 137, + "requested ip %s is occupied!": 1533, + "require system previleges to convert host in other domain": 1064, + "reserved cpu must >= 0": 1078, + "reserved memory must >= 0": 1079, + "reserved storage must >= 0": 1080, + "resource %s in vpc %s external access mode %s is not support accociate eip": 617, + "resource %s is not support sync skus": 1374, + "resource %s module not exists": 73, + "resource (domain) tags not match (tags:%s,require:%s)": 180, + "resource (project) tags not match (tags:%s,require:%s)": 181, + "resource is enabled": 1680, + "resource tags not match (tags:%s,require:%s)": 182, + "role is being assigned to group": 1694, + "role is being assigned to user": 1693, + "root disk image(%s) and sku(%s) architecture mismatch": 705, + "row %d domain is empty": 64, + "row %d duplicate name %s": 65, + "row %d name is empty": 62, + "row %d password is empty": 63, + "rule %d is invalid: %s": 1357, + "rx/tx traffic not provider": 848, + "saveConfigs fail %s": 1669, + "schedtag %s not found": 579, + "schedtag_id not provide": 1337, + "searching for usable ssh address: %v": 900, + "secgroup %s not found": 917, + "secgroups will be empty after update.": 611, + "security group %s has already been assigned to guest %s": 884, + "security group %s not assigned to guest %s": 886, + "security group %s status is not ready": 1422, + "select for nothing in query": 1835, + "self billing type %s not support cancel expire": 1191, + "self billing type is %s": 1190, + "server %s does not belong to account %s": 1429, + "server %s not found": 618, + "server and eip are not managed by the same provider": 633, + "server host is not found???": 632, + "server is in %q state, want %q": 1133, + "server region is not found???": 629, + "server sshable state can only be checked when in running state": 892, + "service %s not found error: %v": 1751, + "service contains endpoints": 1699, + "service is enabled": 1700, + "service_type %s": 1551, + "session expires, missing %s": 38, + "setAcl error %s": 389, + "sharing is limited to domains %s": 203, + "shield res_id is empty": 1815, + "shield res_name is empty": 1814, + "signature error": 1811, + "sku %s not indicate attached disk backend": 947, + "sku %s not indicate attached disk size": 946, + "slave dbinstance not support prepaid billing type": 1461, + "slimit %q is not integer": 1821, + "snapshot %s not found": 756, + "snapshot referenced by instance snapshot": 1381, + "soffset %q is not integer": 1820, + "some networks not exist": 1310, + "source_cidr and network_id conflict": 1213, + "ssh protocol error": 1845, + "start and end ip not in the same subnet": 1256, + "start and end ip when masked are not in the same cidr subnet": 1265, + "start create backup task failed: %s": 837, + "start create snapshot task failed: %s": 835, + "start snapshot reset failed %s": 841, + "start, end ip must be in the same subnet": 1272, + "start_date should befor end_date": 1572, + "stop dap search": 1840, + "storage %s can not be data disk": 294, + "storage %s(%s) need online and attach host for create disk": 524, + "storage cache is missing": 1401, + "storage cache not empty": 1393, + "storage classes not supported": 461, + "storage has been used": 359, + "storage has no clvm_vg_name": 321, + "storage has resources with %s": 1400, + "storage is enabled": 1402, + "storage not cache image": 1396, + "storage of disk %s no valid host": 551, + "storage type %s require assign isolated device": 558, + "subnet masklen should be smaller than 30": 1252, + "sync error": 77, + "syncWithCloudBucket error %s": 390, + "sysadmin is protected": 1646, + "syslog webservice not enabled": 76, + "table %s not found": 178, + "tag has dynamic rules": 1348, + "tag is associate with sched policies": 1350, + "telegraf params: invalid influxdb url: %s": 1122, + "template file is invalid. please check.": 60, + "template not found %s": 67, + "template_id": 66, + "tenant/project %s not found": 1562, + "the %s %q in guest template is not a public resource": 906, + "the %s %q in guest template is not a public resource in %s scope": 908, + "the %s in guest template is not a public resource": 905, + "the %s in guest template is not a public resource in %s scope": 907, + "the Comparator is illegal: %s": 1788, + "the account has been registerd %s": 433, + "the class metadata of guest and disk is different": 687, + "the disk of a esxi virtual machine with instance snapshots does not support resizing": 812, + "the guest template %s is not valid in cloudregion %s, reason: %s": 1313, + "the host %s loses its ip address": 268, + "the hostname length must be greater than or equal to 2": 988, + "the image reference session has not been expired!": 413, + "the min value of cycle in alarm is 300": 1334, + "the reduce is illegal %s": 1789, + "the reduce is illegal: %s": 1790, + "the security group %s is in use cnt: %d": 1356, + "the vpc %s and this wire have different class metadata": 1440, + "the wire %s and project %s has different class metadata": 1264, + "the wire %s and the project %s has different class metadata": 1290, + "there are dnat rules with same external ip and external port": 1200, + "there are no disks in this instance backup, try another one": 934, + "there are no disks in this instance snapshot, try another one": 930, + "there is no such secgroup %s descripted by guest template": 904, + "this operation requires rds state to be %s": 512, + "threshold:%s should be number type": 1799, + "time_points out of range 0-23": 130, + "top level public domain name %s not support": 572, + "totp secret exists": 1757, + "uid is empty": 20, + "unable to fetch backupStorage %s": 1089, + "unauthorized %s": 1724, + "unexpected backend type %s": 1138, + "unknown zone type %s": 573, + "unkown expansion principle %s": 1314, + "unkown health check mode %s": 1316, + "unkown indicator in alarm %s": 1332, + "unkown operator in alarm %s": 1331, + "unkown scaling policy action %s": 1327, + "unkown scaling policy unit %s": 1328, + "unkown shrink principle %s": 1315, + "unkown trigger type %s": 1326, + "unkown wrapper in alarm %s": 1333, + "unmarshal JointResourceCreateInput fail %s": 1341, + "unmarshal StandaloneResourceCreateInput fail %s": 580, + "unmarshal input fail %s": 1841, + "unmarshal limit error %s": 407, + "unmarshal questions: %v": 28, + "unmarshaling cidrs failed: %s": 1304, + "unrecognized input %s": 1723, + "unsupport delete %s backups": 587, + "unsupport on host status %s": 1073, + "unsupport scope %s": 1797, + "unsupport type: %s": 1771, + "unsupported action %s": 1764, + "unsupported duration %s": 486, + "unsupported execution_error_state %s": 1777, + "unsupported no_data_state %s": 1776, + "unsupported notification type %s": 1807, + "unsupported resource type %s": 1805, + "unsupported vdi protocol %s": 283, + "update config version fail %s": 1701, + "update keypairId %v": 678, + "url is empty": 1769, + "use yum requires valid repo_base_url": 1127, + "user %s not found": 210, + "user forbidden login from web": 11, + "user not found": 1848, + "user not found or not enabled": 1727, "username or password is empty": 3, - "valid vlan id": 1189, - "valid wire_level_for_vmware, accept vcenter, datacenter, cluster": 403, - "version mismatch": 1691, - "virtual resource already freezed": 165, - "virtual resource not freezed": 166, - "vpc %s already connected to a interVpcNetwork": 1039, - "vpc %s and vpc %s have already connected": 1373, - "vpc %s has already in this dns zone": 540, - "vpc %s is not connected to this interVpcNetwork": 1040, - "vpc %s not in dns zone": 541, - "vpc %s(%s) is not a managed resouce": 1296, - "vpc joint interVpcNetwork on different cloudEnv is not supported": 1038, - "vpc joint interVpcNetwork on different cloudprovider is not supported": 1037, - "vpc lb is not allowed for now": 1520, - "vpc on different cloudprovider peering is not supported": 1369, - "waf %s status is not available": 1392, - "weight %d not support, only support range 0 ~ 256": 1090, - "wire contains hosts": 1398, - "wire contains networks": 1400, - "wire not found for zone %s and vpc %s": 1187, - "wire zone must match zone parameter, got %s, want %s(%s)": 1114, - "wrong password": 16, - "zone %s not in cloudregion %s": 1311, - "zone %s(%s) has no lbcluster": 1521, - "zone and vpc info required when wire is absent": 1201, - "zone info missing": 1519, - "zone mismatch, elastic cache sku zone %s != %s": 1513, - "zone mismatch: instance zone %s, sku zone %s": 579, - "zone of wire must be %s, got %s": 1115, + "valid vlan id": 1249, + "valid wire_level_for_vmware, accept vcenter, datacenter, cluster": 448, + "vendor %s device %s has been registered": 1098, + "virtual resource already freezed": 214, + "virtual resource not freezed": 215, + "vmem size must be greater than 2G": 876, + "vpc %s already connected to a interVpcNetwork": 1093, + "vpc %s and vpc %s have already connected": 1410, + "vpc %s has already in this dns zone": 576, + "vpc %s is not connected to this interVpcNetwork": 1094, + "vpc %s not in dns zone": 578, + "vpc %s not same with dns zone account": 577, + "vpc joint interVpcNetwork on different cloudEnv is not supported": 1092, + "vpc joint interVpcNetwork on different cloudprovider is not supported": 1091, + "vpc on different cloudprovider peering is not supported": 1406, + "waf %s status is not available": 1431, + "weight %d not support, only support range 0 ~ 256": 1135, + "weight out of range 1-100": 91, + "wire contains hosts": 1436, + "wire contains networks": 1437, + "wire not found for zone %s and vpc %s": 1247, + "wire zone must match zone parameter, got %s, want %s(%s)": 1158, + "wrong password": 17, + "zone %s has no lbcluster": 1528, + "zone %s not in cloudregion %s": 1358, + "zone and vpc info required when wire is absent": 1261, + "zone mismatch: instance zone %s, sku zone %s": 594, + "zone of wire must be %s, got %s": 1159, } -var en_USIndex = []uint32{ // 1830 elements +var en_USIndex = []uint32{ // 1852 elements // Entry 0 - 1F 0x00000000, 0x0000001b, 0x00000034, 0x00000049, 0x00000067, 0x0000007a, 0x00000099, 0x000000d4, - 0x00000111, 0x00000124, 0x0000013f, 0x0000015d, - 0x00000173, 0x0000017e, 0x00000195, 0x000001ab, - 0x000001cb, 0x000001da, 0x000001eb, 0x00000207, - 0x00000214, 0x0000022a, 0x0000024f, 0x00000263, - 0x0000027a, 0x00000298, 0x000002ad, 0x000002c4, - 0x000002dc, 0x000002f8, 0x00000320, 0x00000348, + 0x00000111, 0x00000148, 0x0000015b, 0x00000176, + 0x00000194, 0x000001aa, 0x000001b5, 0x000001cc, + 0x000001e2, 0x00000202, 0x00000211, 0x00000222, + 0x0000023e, 0x0000024b, 0x00000261, 0x00000286, + 0x0000029a, 0x000002b1, 0x000002cf, 0x000002e4, + 0x000002fb, 0x00000313, 0x0000032a, 0x00000335, // Entry 20 - 3F - 0x00000364, 0x00000381, 0x0000039b, 0x000003b5, - 0x000003c5, 0x000003dc, 0x000003ef, 0x0000040d, - 0x0000041a, 0x0000042d, 0x00000440, 0x00000453, - 0x00000473, 0x0000048a, 0x000004a8, 0x000004b8, - 0x000004cf, 0x000004e4, 0x000004fa, 0x00000519, - 0x00000529, 0x0000053a, 0x00000562, 0x00000575, - 0x0000058a, 0x000005a3, 0x000005ba, 0x000005d3, - 0x000005df, 0x000005f5, 0x0000060b, 0x00000625, + 0x00000353, 0x00000370, 0x0000038b, 0x000003a2, + 0x000003be, 0x000003e6, 0x0000040e, 0x0000042a, + 0x00000447, 0x00000461, 0x0000047b, 0x0000048b, + 0x000004a2, 0x000004b5, 0x000004d3, 0x000004e0, + 0x000004f3, 0x00000506, 0x00000519, 0x00000539, + 0x00000550, 0x0000056e, 0x0000057e, 0x00000595, + 0x000005aa, 0x000005c0, 0x000005df, 0x000005ef, + 0x00000600, 0x00000628, 0x0000063b, 0x00000650, // Entry 40 - 5F - 0x00000638, 0x00000650, 0x0000065e, 0x0000067c, - 0x0000068d, 0x0000069f, 0x000006aa, 0x000006c8, - 0x000006e0, 0x000006f6, 0x0000070c, 0x00000730, - 0x00000750, 0x0000076d, 0x0000078d, 0x000007b0, - 0x000007bd, 0x000007cf, 0x000007e3, 0x00000803, - 0x00000816, 0x0000082e, 0x00000848, 0x0000085e, - 0x00000871, 0x00000883, 0x00000896, 0x000008b1, - 0x000008c9, 0x000008e1, 0x000008f9, 0x0000090d, + 0x00000669, 0x00000680, 0x00000699, 0x000006a5, + 0x000006bb, 0x000006d1, 0x000006eb, 0x000006fe, + 0x00000716, 0x00000724, 0x00000742, 0x00000753, + 0x00000765, 0x00000783, 0x0000078e, 0x000007ac, + 0x000007c4, 0x000007da, 0x000007f0, 0x00000814, + 0x00000834, 0x00000851, 0x00000871, 0x00000894, + 0x000008a4, 0x000008be, 0x000008e6, 0x000008fc, + 0x00000916, 0x00000930, 0x00000946, 0x00000955, // Entry 60 - 7F - 0x00000946, 0x0000095d, 0x00000989, 0x000009b9, - 0x000009ed, 0x00000a2b, 0x00000a85, 0x00000aac, - 0x00000ad0, 0x00000afc, 0x00000b28, 0x00000b43, - 0x00000b7c, 0x00000b8f, 0x00000ba6, 0x00000bd4, - 0x00000c18, 0x00000c30, 0x00000c4f, 0x00000c62, - 0x00000c76, 0x00000c94, 0x00000cac, 0x00000ccc, - 0x00000cf8, 0x00000d0b, 0x00000d2c, 0x00000d69, - 0x00000d8c, 0x00000da0, 0x00000db7, 0x00000dcd, + 0x0000096b, 0x00000980, 0x0000099f, 0x000009c0, + 0x000009da, 0x000009f3, 0x00000a16, 0x00000a33, + 0x00000a4b, 0x00000a68, 0x00000a8b, 0x00000a9f, + 0x00000ab5, 0x00000ac9, 0x00000ade, 0x00000afb, + 0x00000b15, 0x00000b34, 0x00000b4c, 0x00000b6a, + 0x00000b7c, 0x00000b8c, 0x00000ba9, 0x00000bce, + 0x00000be7, 0x00000c00, 0x00000c1b, 0x00000c34, + 0x00000c41, 0x00000c53, 0x00000c67, 0x00000c87, // Entry 80 - 9F - 0x00000de5, 0x00000df8, 0x00000e38, 0x00000e50, - 0x00000e86, 0x00000ebd, 0x00000eea, 0x00000f10, - 0x00000f37, 0x00000f58, 0x00000f79, 0x00000f9b, - 0x00000fc9, 0x00000fdd, 0x00000ff0, 0x00001015, - 0x0000102c, 0x0000104c, 0x0000106d, 0x0000107d, - 0x000010be, 0x000010e9, 0x000010fa, 0x0000111a, - 0x00001138, 0x00001159, 0x0000117b, 0x0000119c, - 0x000011bd, 0x00001200, 0x00001214, 0x0000125f, + 0x00000c9a, 0x00000cb2, 0x00000cd3, 0x00000cf1, + 0x00000d0b, 0x00000d21, 0x00000d34, 0x00000d46, + 0x00000d59, 0x00000d74, 0x00000d8c, 0x00000da0, + 0x00000db8, 0x00000dd0, 0x00000de8, 0x00000dfc, + 0x00000e35, 0x00000e4c, 0x00000e6c, 0x00000e9c, + 0x00000ed0, 0x00000f0e, 0x00000f68, 0x00000f8f, + 0x00000fb3, 0x00000fdf, 0x0000100b, 0x00001026, + 0x00001060, 0x00001099, 0x000010ac, 0x000010c3, // Entry A0 - BF - 0x00001277, 0x00001291, 0x000012a3, 0x000012ad, - 0x000012e0, 0x00001306, 0x00001327, 0x00001344, - 0x0000135f, 0x0000139e, 0x000013e3, 0x000013fc, - 0x0000140b, 0x00001420, 0x00001432, 0x00001450, - 0x00001478, 0x000014a9, 0x000014db, 0x0000150e, - 0x00001540, 0x00001571, 0x00001595, 0x000015b9, - 0x000015e0, 0x00001619, 0x0000164f, 0x00001689, - 0x000016b4, 0x000016c5, 0x000016e1, 0x000016ef, + 0x000010f1, 0x00001135, 0x0000114d, 0x0000116c, + 0x0000117f, 0x00001193, 0x000011b1, 0x000011f7, + 0x0000120f, 0x0000122f, 0x0000125b, 0x0000126e, + 0x0000128f, 0x000012d2, 0x000012f5, 0x0000133c, + 0x00001353, 0x00001369, 0x00001381, 0x00001394, + 0x000013d4, 0x0000140a, 0x00001441, 0x0000146e, + 0x00001494, 0x000014bb, 0x000014dc, 0x000014fd, + 0x0000151f, 0x0000154d, 0x00001561, 0x00001574, // Entry C0 - DF - 0x00001700, 0x00001713, 0x00001720, 0x00001734, - 0x00001746, 0x00001756, 0x0000176a, 0x00001780, - 0x0000179f, 0x000017d4, 0x00001811, 0x00001855, - 0x000018bd, 0x000018f3, 0x00001925, 0x00001947, - 0x00001967, 0x0000197f, 0x0000199a, 0x000019b4, - 0x000019cd, 0x000019ec, 0x00001a0c, 0x00001a28, - 0x00001a47, 0x00001a72, 0x00001a94, 0x00001aad, - 0x00001ac7, 0x00001afb, 0x00001b22, 0x00001b59, + 0x00001599, 0x000015b0, 0x000015d0, 0x000015f1, + 0x00001601, 0x00001642, 0x0000166d, 0x0000167e, + 0x0000169e, 0x000016bc, 0x000016dd, 0x000016ff, + 0x00001720, 0x00001741, 0x00001784, 0x00001798, + 0x000017b0, 0x000017ca, 0x00001815, 0x00001827, + 0x00001831, 0x00001864, 0x0000188a, 0x000018ab, + 0x000018c8, 0x000018e3, 0x00001922, 0x00001967, + 0x00001980, 0x0000198f, 0x000019a4, 0x000019b6, // Entry E0 - FF - 0x00001b78, 0x00001b9d, 0x00001bb5, 0x00001bf1, - 0x00001c03, 0x00001c24, 0x00001c76, 0x00001cad, - 0x00001cd2, 0x00001cf1, 0x00001d1b, 0x00001d48, - 0x00001d66, 0x00001d8e, 0x00001dbc, 0x00001dea, - 0x00001e03, 0x00001e27, 0x00001e43, 0x00001e77, - 0x00001ea6, 0x00001ecc, 0x00001f04, 0x00001f3c, - 0x00001f74, 0x00001f94, 0x00001fc6, 0x00001fec, - 0x00002014, 0x00002062, 0x00002089, 0x000020ac, + 0x000019d4, 0x000019fc, 0x00001a2d, 0x00001a5f, + 0x00001a92, 0x00001ac4, 0x00001af5, 0x00001b19, + 0x00001b3d, 0x00001b64, 0x00001b9d, 0x00001bd3, + 0x00001c0d, 0x00001c38, 0x00001c57, 0x00001c91, + 0x00001cc6, 0x00001d03, 0x00001d47, 0x00001daf, + 0x00001de5, 0x00001e17, 0x00001e39, 0x00001e59, + 0x00001e71, 0x00001e8c, 0x00001ea6, 0x00001ebf, + 0x00001ede, 0x00001efe, 0x00001f1a, 0x00001f39, // Entry 100 - 11F - 0x000020e3, 0x000020f9, 0x0000210f, 0x00002126, - 0x00002162, 0x000021a4, 0x000021ca, 0x0000220e, - 0x0000221c, 0x0000223c, 0x00002260, 0x00002283, - 0x000022a6, 0x000022bd, 0x000022f5, 0x00002314, - 0x0000232a, 0x00002338, 0x00002360, 0x00002391, - 0x000023ad, 0x000023e4, 0x00002415, 0x0000242e, - 0x00002446, 0x0000246f, 0x00002489, 0x000024d1, - 0x0000250c, 0x00002546, 0x00002574, 0x000025af, + 0x00001f64, 0x00001f86, 0x00001f9f, 0x00001fe3, + 0x00001ffd, 0x00002031, 0x00002068, 0x00002087, + 0x000020ac, 0x000020c4, 0x00002100, 0x0000212f, + 0x00002143, 0x00002164, 0x00002176, 0x00002197, + 0x000021e9, 0x00002218, 0x0000224f, 0x00002274, + 0x00002296, 0x000022b5, 0x000022df, 0x0000230c, + 0x0000232a, 0x00002352, 0x00002380, 0x000023ae, + 0x000023ca, 0x000023ee, 0x00002402, 0x00002428, // Entry 120 - 13F - 0x000025c8, 0x000025da, 0x000025f4, 0x00002613, - 0x0000263c, 0x00002675, 0x0000269f, 0x000026b4, - 0x000026dc, 0x000026ee, 0x0000271f, 0x00002739, - 0x00002755, 0x00002783, 0x000027b0, 0x000027d7, - 0x00002801, 0x0000281a, 0x0000284e, 0x0000287b, - 0x00002893, 0x000028c1, 0x000028f5, 0x00002909, - 0x0000291c, 0x00002939, 0x00002951, 0x0000296a, - 0x00002987, 0x000029af, 0x000029c7, 0x000029d4, + 0x00002444, 0x0000246b, 0x0000249f, 0x000024c5, + 0x000024fd, 0x00002535, 0x0000256d, 0x0000258d, + 0x000025bf, 0x000025e5, 0x0000260d, 0x0000265b, + 0x00002682, 0x000026a5, 0x000026dc, 0x000026f2, + 0x00002708, 0x0000271f, 0x0000275b, 0x0000279d, + 0x000027c3, 0x00002807, 0x00002815, 0x00002835, + 0x00002859, 0x0000287c, 0x0000289f, 0x000028b6, + 0x000028ee, 0x0000290d, 0x00002923, 0x00002931, // Entry 140 - 15F - 0x000029ef, 0x00002a0b, 0x00002a1e, 0x00002a36, - 0x00002a42, 0x00002a60, 0x00002a75, 0x00002a88, - 0x00002a9b, 0x00002ab6, 0x00002acd, 0x00002adf, - 0x00002aea, 0x00002b0c, 0x00002b23, 0x00002b3a, - 0x00002b54, 0x00002b6f, 0x00002b83, 0x00002b9d, - 0x00002bb9, 0x00002bcd, 0x00002bdd, 0x00002bfa, - 0x00002c27, 0x00002c60, 0x00002c74, 0x00002c91, - 0x00002cad, 0x00002cd0, 0x00002cf0, 0x00002d15, + 0x0000294a, 0x0000296a, 0x00002986, 0x000029ae, + 0x000029df, 0x000029fb, 0x00002a32, 0x00002a63, + 0x00002a7b, 0x00002aa4, 0x00002abe, 0x00002aec, + 0x00002b27, 0x00002b61, 0x00002b8f, 0x00002bce, + 0x00002c09, 0x00002c22, 0x00002c34, 0x00002c4e, + 0x00002c6d, 0x00002c96, 0x00002ccf, 0x00002cf9, + 0x00002d0e, 0x00002d36, 0x00002d48, 0x00002d79, + 0x00002d93, 0x00002daf, 0x00002ddd, 0x00002e0a, // Entry 160 - 17F - 0x00002d31, 0x00002d4f, 0x00002d6e, 0x00002d88, - 0x00002da2, 0x00002dbd, 0x00002dd8, 0x00002df6, - 0x00002e0f, 0x00002e21, 0x00002e31, 0x00002e42, - 0x00002e5e, 0x00002e7f, 0x00002ea5, 0x00002ed7, - 0x00002ef7, 0x00002f1c, 0x00002f39, 0x00002f4c, - 0x00002f7d, 0x00002f9d, 0x00002fb0, 0x00002fc4, - 0x00002fd4, 0x00002ff3, 0x0000300c, 0x00003025, - 0x0000303d, 0x00003068, 0x0000308e, 0x000030a5, + 0x00002e22, 0x00002e50, 0x00002e84, 0x00002ebe, + 0x00002edf, 0x00002f19, 0x00002f4f, 0x00002f63, + 0x00002f79, 0x00002fa6, 0x00002fc2, 0x00002fdf, + 0x00002ff7, 0x00003010, 0x0000302d, 0x00003055, + 0x0000306d, 0x0000307a, 0x00003095, 0x000030a8, + 0x000030b4, 0x000030d2, 0x000030e7, 0x000030fa, + 0x0000310d, 0x00003128, 0x0000313f, 0x00003151, + 0x0000315c, 0x0000317e, 0x00003195, 0x000031ac, // Entry 180 - 19F - 0x000030c5, 0x000030d9, 0x000030ff, 0x00003121, - 0x00003132, 0x00003146, 0x00003171, 0x00003196, - 0x000031bb, 0x000031d4, 0x000031e8, 0x0000321c, - 0x00003231, 0x00003256, 0x00003286, 0x000032ab, - 0x000032bf, 0x000032ce, 0x000032f1, 0x0000331f, - 0x00003360, 0x00003390, 0x000033a4, 0x000033b8, - 0x000033cd, 0x0000341b, 0x0000342f, 0x00003441, - 0x00003458, 0x0000346e, 0x00003488, 0x000034b2, + 0x000031c6, 0x000031e1, 0x000031f5, 0x0000320f, + 0x0000322b, 0x0000323f, 0x0000324f, 0x0000326c, + 0x00003299, 0x000032d2, 0x000032e6, 0x00003303, + 0x0000331f, 0x00003342, 0x00003362, 0x00003387, + 0x000033a3, 0x000033c1, 0x000033e0, 0x000033fa, + 0x00003414, 0x0000342f, 0x0000344a, 0x00003468, + 0x00003481, 0x00003493, 0x000034a3, 0x000034b4, + 0x000034d0, 0x000034f6, 0x00003528, 0x00003548, // Entry 1A0 - 1BF - 0x000034f3, 0x00003512, 0x00003530, 0x00003564, - 0x00003579, 0x0000358d, 0x000035a4, 0x000035cd, - 0x000035de, 0x000035fe, 0x00003620, 0x0000363e, - 0x00003672, 0x000036a4, 0x000036da, 0x00003716, - 0x00003744, 0x00003773, 0x0000379b, 0x000037d4, - 0x000037fb, 0x00003833, 0x00003856, 0x00003887, - 0x00003897, 0x000038ab, 0x000038cd, 0x000038f3, - 0x00003907, 0x0000391f, 0x00003945, 0x0000396e, + 0x0000356d, 0x0000358a, 0x0000359d, 0x000035ce, + 0x000035ee, 0x00003601, 0x00003615, 0x00003632, + 0x00003651, 0x0000366a, 0x00003683, 0x0000369b, + 0x000036c6, 0x000036ec, 0x00003703, 0x00003723, + 0x00003737, 0x0000375d, 0x0000377f, 0x00003790, + 0x000037a4, 0x000037c5, 0x000037f0, 0x00003815, + 0x0000383a, 0x00003853, 0x00003867, 0x0000389b, + 0x000038b0, 0x000038d5, 0x000038e9, 0x000038f8, // Entry 1C0 - 1DF - 0x0000398b, 0x000039a7, 0x000039cf, 0x00003a0d, - 0x00003a33, 0x00003a5c, 0x00003a87, 0x00003ab3, - 0x00003add, 0x00003b06, 0x00003b37, 0x00003b72, - 0x00003b83, 0x00003bb3, 0x00003bdd, 0x00003c10, - 0x00003c34, 0x00003c52, 0x00003c74, 0x00003c95, - 0x00003cb9, 0x00003cd7, 0x00003d0c, 0x00003d37, - 0x00003d59, 0x00003d79, 0x00003d99, 0x00003dbc, - 0x00003dec, 0x00003e01, 0x00003e20, 0x00003e5b, + 0x0000391b, 0x0000395c, 0x0000398c, 0x000039a0, + 0x000039b4, 0x000039c9, 0x00003a17, 0x00003a2b, + 0x00003a3d, 0x00003a54, 0x00003a6a, 0x00003a94, + 0x00003ad5, 0x00003af4, 0x00003b12, 0x00003b46, + 0x00003b6f, 0x00003b86, 0x00003b97, 0x00003bb7, + 0x00003bd9, 0x00003bf7, 0x00003c2b, 0x00003c5d, + 0x00003c93, 0x00003ccf, 0x00003cfd, 0x00003d2c, + 0x00003d54, 0x00003d8d, 0x00003db4, 0x00003dec, // Entry 1E0 - 1FF - 0x00003e88, 0x00003eb4, 0x00003eda, 0x00003efc, - 0x00003f12, 0x00003f31, 0x00003f56, 0x00003f70, - 0x00003f90, 0x00003fbb, 0x00003fda, 0x00004007, - 0x0000403e, 0x0000405d, 0x00004073, 0x0000408d, - 0x000040a7, 0x000040c8, 0x000040de, 0x000040f6, - 0x00004113, 0x0000412f, 0x0000414d, 0x00004164, - 0x00004187, 0x000041a9, 0x000041ca, 0x000041f0, - 0x0000421c, 0x0000424d, 0x00004281, 0x00004297, + 0x00003e0f, 0x00003e40, 0x00003e50, 0x00003e64, + 0x00003e86, 0x00003eac, 0x00003ec0, 0x00003ed8, + 0x00003efe, 0x00003f27, 0x00003f44, 0x00003f60, + 0x00003f88, 0x00003fc6, 0x00003fec, 0x00004015, + 0x00004040, 0x0000406c, 0x00004096, 0x000040bf, + 0x000040f0, 0x0000412b, 0x0000413c, 0x0000416c, + 0x00004196, 0x000041c9, 0x000041ed, 0x0000420b, + 0x0000422d, 0x0000424e, 0x00004272, 0x00004290, // Entry 200 - 21F - 0x000042ca, 0x000042de, 0x000042f9, 0x00004324, - 0x0000433d, 0x00004376, 0x000043b0, 0x000043db, - 0x000043f5, 0x00004415, 0x00004438, 0x00004450, - 0x00004467, 0x00004498, 0x000044e5, 0x0000451d, - 0x0000453b, 0x0000455d, 0x00004569, 0x00004580, - 0x000045a8, 0x000045d4, 0x00004600, 0x00004615, - 0x00004634, 0x00004658, 0x0000467a, 0x00004695, - 0x000046bb, 0x000046df, 0x000046f6, 0x00004712, + 0x000042c5, 0x000042f0, 0x00004312, 0x00004339, + 0x00004363, 0x0000437c, 0x000043b0, 0x000043d0, + 0x000043f3, 0x00004423, 0x00004454, 0x00004469, + 0x00004488, 0x000044c3, 0x000044f0, 0x0000451c, + 0x00004542, 0x0000457c, 0x0000459e, 0x000045b4, + 0x000045d3, 0x000045f8, 0x00004612, 0x00004632, + 0x0000465d, 0x0000467c, 0x000046a9, 0x000046e0, + 0x000046ff, 0x00004715, 0x0000472f, 0x00004749, // Entry 220 - 23F - 0x0000472f, 0x0000474e, 0x0000477b, 0x0000479c, - 0x000047cb, 0x000047eb, 0x0000480d, 0x0000482d, - 0x00004849, 0x0000486a, 0x0000488b, 0x000048ad, - 0x000048d6, 0x00004902, 0x00004921, 0x00004941, - 0x00004959, 0x00004966, 0x00004976, 0x00004986, - 0x000049b6, 0x000049cc, 0x000049fc, 0x00004a19, - 0x00004a3e, 0x00004a4e, 0x00004a75, 0x00004aa9, - 0x00004ad2, 0x00004aee, 0x00004b07, 0x00004b3c, + 0x0000475f, 0x00004777, 0x00004794, 0x000047b0, + 0x000047ce, 0x000047e5, 0x00004811, 0x00004842, + 0x00004863, 0x00004889, 0x000048bd, 0x000048d3, + 0x00004906, 0x0000491a, 0x00004935, 0x00004964, + 0x0000498f, 0x000049a8, 0x000049e1, 0x00004a1b, + 0x00004a46, 0x00004a7c, 0x00004ab8, 0x00004acf, + 0x00004b00, 0x00004b17, 0x00004b3d, 0x00004b65, + 0x00004b91, 0x00004bbd, 0x00004bd2, 0x00004bf8, // Entry 240 - 25F - 0x00004b63, 0x00004b8f, 0x00004bbf, 0x00004bf2, - 0x00004c1f, 0x00004c5c, 0x00004c86, 0x00004ca4, - 0x00004cd0, 0x00004cec, 0x00004d0f, 0x00004d39, - 0x00004d66, 0x00004d99, 0x00004db9, 0x00004df0, - 0x00004e18, 0x00004e1f, 0x00004e2c, 0x00004e4e, - 0x00004e82, 0x00004ece, 0x00004ef4, 0x00004f27, - 0x00004f5e, 0x00004f84, 0x00004fb2, 0x00004fc7, - 0x00005012, 0x00005026, 0x00005055, 0x00005072, + 0x00004c1a, 0x00004c3e, 0x00004c64, 0x00004c7b, + 0x00004c91, 0x00004cc1, 0x00004cde, 0x00004d03, + 0x00004d13, 0x00004d3a, 0x00004d6e, 0x00004d97, + 0x00004db3, 0x00004dc9, 0x00004de2, 0x00004e17, + 0x00004e3e, 0x00004e6a, 0x00004e9d, 0x00004eca, + 0x00004f07, 0x00004f31, 0x00004f4f, 0x00004f7b, + 0x00004f97, 0x00004fba, 0x00004fe4, 0x00005011, + 0x00005044, 0x00005064, 0x0000509b, 0x000050c3, // Entry 260 - 27F - 0x00005098, 0x000050ba, 0x000050d9, 0x000050f6, - 0x0000511d, 0x00005145, 0x0000516a, 0x00005191, - 0x000051af, 0x000051d9, 0x00005201, 0x0000521d, - 0x00005251, 0x0000526d, 0x000052a1, 0x000052ba, - 0x000052dd, 0x00005304, 0x00005321, 0x00005337, - 0x0000535c, 0x0000536e, 0x000053a0, 0x000053c3, - 0x000053e7, 0x00005411, 0x00005421, 0x00005442, - 0x00005472, 0x000054a0, 0x000054c7, 0x000054f0, + 0x000050ca, 0x000050d7, 0x000050f9, 0x0000512d, + 0x00005153, 0x00005186, 0x000051bd, 0x000051e3, + 0x00005211, 0x00005226, 0x00005271, 0x00005285, + 0x000052b4, 0x000052d1, 0x000052f7, 0x00005319, + 0x00005338, 0x00005355, 0x0000537c, 0x000053a4, + 0x000053c9, 0x000053f0, 0x0000540e, 0x00005438, + 0x00005460, 0x0000547c, 0x000054b0, 0x000054cc, + 0x00005500, 0x00005519, 0x00005533, 0x00005566, // Entry 280 - 29F - 0x00005501, 0x00005538, 0x00005549, 0x00005561, - 0x00005576, 0x0000558b, 0x000055bd, 0x000055de, - 0x000055f1, 0x00005610, 0x0000561e, 0x0000563d, - 0x00005656, 0x00005677, 0x00005695, 0x000056b9, - 0x000056e4, 0x00005701, 0x0000571a, 0x0000572e, - 0x00005749, 0x0000577a, 0x000057a8, 0x000057c3, - 0x000057dd, 0x00005801, 0x0000581f, 0x0000584d, - 0x0000587f, 0x0000589e, 0x000058bc, 0x000058db, + 0x00005592, 0x000055b5, 0x000055dc, 0x000055f9, + 0x0000560f, 0x00005634, 0x00005646, 0x00005678, + 0x0000569b, 0x000056bf, 0x000056e9, 0x000056f9, + 0x0000571a, 0x0000574a, 0x00005778, 0x0000579f, + 0x000057c8, 0x000057d9, 0x00005810, 0x00005821, + 0x00005839, 0x0000584e, 0x00005863, 0x00005895, + 0x000058b6, 0x000058c9, 0x000058e8, 0x000058f6, + 0x00005915, 0x0000592e, 0x0000594f, 0x00005970, // Entry 2A0 - 2BF - 0x000058ef, 0x00005913, 0x00005938, 0x0000595c, - 0x0000596c, 0x0000598f, 0x000059bc, 0x000059e6, - 0x00005a1e, 0x00005a49, 0x00005a74, 0x00005a97, - 0x00005ac1, 0x00005ae4, 0x00005b0b, 0x00005b37, - 0x00005b5b, 0x00005b6d, 0x00005ba3, 0x00005bb0, - 0x00005bd2, 0x00005bf1, 0x00005c20, 0x00005c4f, - 0x00005c82, 0x00005ca1, 0x00005cb7, 0x00005cc5, - 0x00005ce6, 0x00005d0e, 0x00005d2a, 0x00005d44, + 0x00005997, 0x000059a3, 0x000059c1, 0x000059e5, + 0x00005a10, 0x00005a2d, 0x00005a46, 0x00005a5a, + 0x00005a75, 0x00005aa6, 0x00005ad4, 0x00005aef, + 0x00005b09, 0x00005b2d, 0x00005b4b, 0x00005b79, + 0x00005bab, 0x00005bc7, 0x00005be6, 0x00005c04, + 0x00005c20, 0x00005c3f, 0x00005c53, 0x00005c77, + 0x00005c91, 0x00005cb6, 0x00005cda, 0x00005cea, + 0x00005d0d, 0x00005d28, 0x00005d4d, 0x00005d5d, // Entry 2C0 - 2DF - 0x00005d69, 0x00005d81, 0x00005d9e, 0x00005dc1, - 0x00005def, 0x00005e0f, 0x00005e23, 0x00005e4f, - 0x00005e72, 0x00005e9d, 0x00005ec0, 0x00005ee3, - 0x00005ef3, 0x00005f04, 0x00005f27, 0x00005f52, - 0x00005f7a, 0x00005f97, 0x00005fb5, 0x00005fd8, - 0x00005ffb, 0x00006020, 0x0000603f, 0x00006062, - 0x0000607d, 0x000060aa, 0x000060c5, 0x000060f9, - 0x00006131, 0x0000614e, 0x00006179, 0x0000618f, + 0x00005d81, 0x00005d93, 0x00005dc9, 0x00005dd6, + 0x00005df8, 0x00005e17, 0x00005e46, 0x00005e75, + 0x00005ea8, 0x00005ec7, 0x00005ee1, 0x00005ef7, + 0x00005f05, 0x00005f26, 0x00005f4e, 0x00005f6a, + 0x00005f84, 0x00005fa9, 0x00005fc1, 0x00005fde, + 0x0000600c, 0x0000602c, 0x00006040, 0x0000606c, + 0x00006090, 0x000060b4, 0x000060d1, 0x000060ff, + 0x00006122, 0x0000614d, 0x00006170, 0x00006193, // Entry 2E0 - 2FF - 0x000061a7, 0x000061c4, 0x000061f0, 0x00006210, - 0x00006236, 0x00006254, 0x00006276, 0x000062ac, - 0x000062e4, 0x00006313, 0x00006328, 0x0000635b, - 0x00006374, 0x00006392, 0x000063a5, 0x000063ba, - 0x000063d5, 0x000063fe, 0x00006421, 0x0000644c, - 0x0000646a, 0x0000648d, 0x000064a2, 0x000064be, - 0x000064d5, 0x000064f9, 0x00006529, 0x00006542, - 0x00006565, 0x00006576, 0x00006589, 0x0000659e, + 0x000061a3, 0x000061b4, 0x000061d7, 0x00006202, + 0x0000622a, 0x00006247, 0x00006265, 0x00006288, + 0x000062ab, 0x000062d5, 0x00006300, 0x00006325, + 0x00006344, 0x00006367, 0x00006382, 0x000063af, + 0x000063de, 0x00006412, 0x0000644d, 0x0000646a, + 0x0000649b, 0x000064b1, 0x000064c9, 0x000064e6, + 0x00006512, 0x00006532, 0x00006558, 0x00006576, + 0x000065ac, 0x000065e4, 0x00006613, 0x00006628, // Entry 300 - 31F - 0x000065b7, 0x000065c9, 0x000065ed, 0x00006608, - 0x0000661b, 0x00006633, 0x0000665a, 0x0000667b, - 0x0000668e, 0x000066ac, 0x000066c9, 0x000066db, - 0x00006704, 0x0000671c, 0x00006736, 0x00006745, - 0x0000675e, 0x00006776, 0x00006791, 0x000067b2, - 0x000067c4, 0x000067d2, 0x000067e8, 0x00006804, - 0x00006859, 0x00006878, 0x0000689b, 0x000068be, - 0x000068cb, 0x000068d9, 0x000068fe, 0x00006921, + 0x00006656, 0x00006689, 0x000066bc, 0x000066d5, + 0x000066f3, 0x00006705, 0x00006718, 0x0000672d, + 0x00006748, 0x0000676f, 0x00006798, 0x000067bb, + 0x000067e6, 0x00006804, 0x00006827, 0x0000683c, + 0x00006858, 0x0000686f, 0x00006889, 0x000068b4, + 0x000068e7, 0x00006917, 0x00006930, 0x00006953, + 0x00006964, 0x00006977, 0x0000698c, 0x000069a5, + 0x000069b7, 0x000069db, 0x000069f6, 0x00006a09, // Entry 320 - 33F - 0x0000694d, 0x00006976, 0x00006997, 0x000069b1, - 0x000069e5, 0x000069f6, 0x00006a12, 0x00006a45, - 0x00006a72, 0x00006a97, 0x00006ac8, 0x00006af8, - 0x00006b1c, 0x00006b42, 0x00006b64, 0x00006b88, - 0x00006bb2, 0x00006bce, 0x00006bfa, 0x00006c19, - 0x00006c44, 0x00006c53, 0x00006c74, 0x00006c8b, - 0x00006c99, 0x00006cb1, 0x00006cc2, 0x00006cf0, - 0x00006d1f, 0x00006d48, 0x00006d79, 0x00006dad, + 0x00006a21, 0x00006a48, 0x00006a69, 0x00006a7c, + 0x00006a9a, 0x00006ab7, 0x00006ac9, 0x00006af2, + 0x00006b0a, 0x00006b1c, 0x00006b2a, 0x00006b40, + 0x00006b5c, 0x00006bb1, 0x00006bd0, 0x00006bf3, + 0x00006c16, 0x00006c2b, 0x00006c41, 0x00006c66, + 0x00006c89, 0x00006cb5, 0x00006cde, 0x00006cff, + 0x00006d19, 0x00006d34, 0x00006d68, 0x00006d79, + 0x00006d95, 0x00006dc8, 0x00006df5, 0x00006e1a, // Entry 340 - 35F - 0x00006dd2, 0x00006de6, 0x00006df7, 0x00006e0b, - 0x00006e2a, 0x00006e4e, 0x00006e85, 0x00006ec4, - 0x00006ede, 0x00006f06, 0x00006f3f, 0x00006f50, - 0x00006f7e, 0x00006f9b, 0x00006fb6, 0x00006fdb, - 0x00006ff1, 0x00006ffe, 0x00007039, 0x00007073, - 0x000070a5, 0x000070da, 0x00007118, 0x00007159, - 0x00007186, 0x000071b0, 0x000071d4, 0x000071f4, - 0x0000720b, 0x00007231, 0x00007250, 0x00007262, + 0x00006e4b, 0x00006e6c, 0x00006e9c, 0x00006ec0, + 0x00006ee6, 0x00006f08, 0x00006f2c, 0x00006f56, + 0x00006f72, 0x00006f9e, 0x00006fbd, 0x00006fcc, + 0x00006fed, 0x00007004, 0x00007012, 0x0000702a, + 0x0000705b, 0x00007076, 0x00007087, 0x000070b5, + 0x000070e4, 0x0000710d, 0x00007141, 0x00007166, + 0x0000717a, 0x0000718e, 0x0000719f, 0x000071be, + 0x000071d9, 0x000071f4, 0x00007209, 0x00007227, // Entry 360 - 37F - 0x00007278, 0x0000728a, 0x000072ab, 0x000072c2, - 0x000072d5, 0x000072fd, 0x00007330, 0x00007356, - 0x0000737b, 0x0000739b, 0x000073b9, 0x000073cb, - 0x000073eb, 0x0000740c, 0x0000744a, 0x00007468, - 0x00007487, 0x000074a1, 0x000074dd, 0x000074f7, - 0x0000751d, 0x00007543, 0x0000755a, 0x000075a8, - 0x000075c9, 0x000075ec, 0x0000760f, 0x00007628, - 0x0000764f, 0x00007679, 0x00007699, 0x000076cf, + 0x0000723f, 0x00007269, 0x00007296, 0x000072ba, + 0x000072f1, 0x00007311, 0x00007332, 0x0000734b, + 0x0000735a, 0x00007372, 0x0000738d, 0x000073cb, + 0x000073f1, 0x00007413, 0x00007425, 0x00007448, + 0x00007467, 0x00007483, 0x000074a1, 0x000074ce, + 0x000074f8, 0x00007530, 0x0000755b, 0x00007586, + 0x000075a9, 0x000075d3, 0x000075f6, 0x0000761d, + 0x00007649, 0x00007688, 0x000076a2, 0x000076ca, // Entry 380 - 39F - 0x00007705, 0x00007728, 0x00007752, 0x0000777d, - 0x00007792, 0x000077a8, 0x000077cf, 0x000077e4, - 0x00007810, 0x0000783f, 0x00007872, 0x000078a0, - 0x000078d2, 0x000078fd, 0x0000792e, 0x0000794d, - 0x0000796e, 0x00007987, 0x000079a0, 0x000079bb, - 0x000079f1, 0x00007a20, 0x00007a3b, 0x00007a52, - 0x00007a7b, 0x00007a9d, 0x00007ab6, 0x00007aee, - 0x00007b07, 0x00007b26, 0x00007b38, 0x00007b54, + 0x00007703, 0x00007714, 0x00007742, 0x0000775f, + 0x0000777a, 0x0000779f, 0x000077b5, 0x000077c2, + 0x000077fd, 0x00007837, 0x00007869, 0x0000789e, + 0x000078dc, 0x0000791d, 0x0000794a, 0x00007974, + 0x00007998, 0x000079b8, 0x000079cf, 0x000079f5, + 0x00007a14, 0x00007a26, 0x00007a3c, 0x00007a5d, + 0x00007a70, 0x00007a98, 0x00007acb, 0x00007af1, + 0x00007b16, 0x00007b36, 0x00007b54, 0x00007b66, // Entry 3A0 - 3BF - 0x00007b70, 0x00007b91, 0x00007ba9, 0x00007bcc, - 0x00007c01, 0x00007c35, 0x00007c6b, 0x00007c86, - 0x00007ca3, 0x00007cd8, 0x00007d0f, 0x00007d27, - 0x00007d3d, 0x00007d59, 0x00007d9c, 0x00007db1, - 0x00007dc7, 0x00007dd9, 0x00007dee, 0x00007e11, - 0x00007e3d, 0x00007e67, 0x00007e88, 0x00007ea5, - 0x00007eb5, 0x00007ec8, 0x00007eed, 0x00007f05, - 0x00007f24, 0x00007f40, 0x00007f76, 0x00007f91, + 0x00007b8d, 0x00007bad, 0x00007bce, 0x00007c0c, + 0x00007c2a, 0x00007c49, 0x00007c63, 0x00007c9f, + 0x00007cb9, 0x00007cdf, 0x00007d05, 0x00007d1c, + 0x00007d6a, 0x00007d8b, 0x00007da3, 0x00007dc6, + 0x00007de9, 0x00007e11, 0x00007e2a, 0x00007e51, + 0x00007e7b, 0x00007ea1, 0x00007ec1, 0x00007ef7, + 0x00007f1a, 0x00007f2f, 0x00007f45, 0x00007f6c, + 0x00007f81, 0x00007fad, 0x00007fdc, 0x0000800f, // Entry 3C0 - 3DF - 0x00007faf, 0x00007fe7, 0x00008014, 0x00008031, - 0x0000805b, 0x0000807d, 0x000080a6, 0x000080c7, - 0x000080f3, 0x0000811b, 0x0000813e, 0x0000816a, - 0x0000818f, 0x000081a5, 0x000081b5, 0x000081e2, - 0x00008208, 0x00008235, 0x00008257, 0x0000827d, - 0x0000829c, 0x000082b3, 0x000082c7, 0x000082de, - 0x000082f0, 0x00008307, 0x00008323, 0x00008340, - 0x00008362, 0x00008387, 0x0000839e, 0x000083c4, + 0x0000803d, 0x0000806f, 0x0000809a, 0x000080cb, + 0x000080ea, 0x0000810b, 0x00008124, 0x0000813d, + 0x00008158, 0x0000818e, 0x000081bd, 0x000081d8, + 0x000081ef, 0x00008208, 0x00008240, 0x00008259, + 0x00008278, 0x0000828a, 0x000082a6, 0x000082c2, + 0x000082e3, 0x000082fb, 0x0000831e, 0x00008353, + 0x00008387, 0x000083bd, 0x000083d8, 0x000083f5, + 0x0000842a, 0x00008461, 0x00008477, 0x00008493, // Entry 3E0 - 3FF - 0x000083dc, 0x000083ec, 0x0000840c, 0x0000842e, - 0x0000844c, 0x0000846e, 0x00008482, 0x00008497, - 0x000084bf, 0x000084e3, 0x0000850c, 0x00008534, - 0x00008547, 0x0000856b, 0x00008587, 0x000085a0, - 0x000085c2, 0x000085e9, 0x00008623, 0x0000863c, - 0x00008656, 0x00008668, 0x00008680, 0x0000869e, - 0x000086ba, 0x000086e0, 0x00008707, 0x00008723, - 0x00008750, 0x00008772, 0x00008793, 0x000087bb, + 0x000084d6, 0x000084eb, 0x000084fd, 0x00008513, + 0x0000852f, 0x00008544, 0x00008567, 0x00008591, + 0x000085b2, 0x000085cf, 0x000085df, 0x000085f2, + 0x00008617, 0x0000862f, 0x0000864e, 0x0000866a, + 0x000086a0, 0x000086bb, 0x000086d9, 0x00008711, + 0x0000873e, 0x0000875b, 0x00008785, 0x000087a7, + 0x000087d0, 0x000087f1, 0x0000881d, 0x00008845, + 0x00008868, 0x00008894, 0x000088b9, 0x000088cf, // Entry 400 - 41F - 0x000087d2, 0x000087ec, 0x00008807, 0x00008849, - 0x0000888f, 0x000088d6, 0x000088f8, 0x00008905, - 0x0000891f, 0x00008939, 0x0000896b, 0x0000899c, - 0x000089bd, 0x000089f2, 0x00008a38, 0x00008a79, - 0x00008aa7, 0x00008ad7, 0x00008ae9, 0x00008b06, - 0x00008b25, 0x00008b41, 0x00008b77, 0x00008b9a, - 0x00008bb9, 0x00008be5, 0x00008bfb, 0x00008c14, - 0x00008c33, 0x00008c59, 0x00008c69, 0x00008c83, + 0x00008902, 0x00008920, 0x00008946, 0x00008977, + 0x00008984, 0x00008996, 0x000089b7, 0x000089d3, + 0x000089e5, 0x000089fa, 0x00008a0a, 0x00008a37, + 0x00008a5d, 0x00008a8a, 0x00008aac, 0x00008ad2, + 0x00008af1, 0x00008b08, 0x00008b1f, 0x00008b31, + 0x00008b48, 0x00008b64, 0x00008b81, 0x00008ba3, + 0x00008bc3, 0x00008be4, 0x00008bf4, 0x00008c14, + 0x00008c36, 0x00008c54, 0x00008c76, 0x00008c9e, // Entry 420 - 43F - 0x00008cab, 0x00008cc1, 0x00008cf6, 0x00008d0c, - 0x00008d31, 0x00008d4b, 0x00008d81, 0x00008da8, - 0x00008dd8, 0x00008e01, 0x00008e2b, 0x00008e4d, - 0x00008e62, 0x00008e87, 0x00008ea8, 0x00008eda, - 0x00008eed, 0x00008f14, 0x00008f45, 0x00008f6a, - 0x00008f7a, 0x00008f8b, 0x00008fb6, 0x00008fc8, - 0x00008ff4, 0x00009013, 0x00009027, 0x0000903d, - 0x00009051, 0x00009068, 0x0000908f, 0x000090a9, + 0x00008cc2, 0x00008ceb, 0x00008d13, 0x00008d26, + 0x00008d4a, 0x00008d66, 0x00008d7f, 0x00008da1, + 0x00008dc8, 0x00008e02, 0x00008e1b, 0x00008e35, + 0x00008e47, 0x00008e5f, 0x00008e7d, 0x00008e99, + 0x00008ebf, 0x00008ee6, 0x00008f02, 0x00008f2f, + 0x00008f51, 0x00008f72, 0x00008f9a, 0x00008fb1, + 0x00008fcb, 0x00008fe6, 0x00009028, 0x0000906e, + 0x000090b5, 0x000090d7, 0x000090e4, 0x000090fe, // Entry 440 - 45F - 0x000090cf, 0x000090fd, 0x0000912a, 0x0000915c, - 0x0000918e, 0x000091a6, 0x000091d0, 0x000091e7, - 0x00009202, 0x00009233, 0x00009249, 0x00009273, - 0x00009288, 0x000092b4, 0x00009337, 0x0000936f, - 0x00009387, 0x000093b6, 0x000093e9, 0x00009413, - 0x00009434, 0x00009461, 0x00009492, 0x000094c3, - 0x000094f5, 0x0000951f, 0x00009544, 0x0000957d, - 0x0000959d, 0x000095bc, 0x000095eb, 0x00009631, + 0x00009118, 0x00009149, 0x0000916a, 0x0000919f, + 0x000091e5, 0x00009226, 0x00009254, 0x00009284, + 0x00009297, 0x000092b2, 0x000092c3, 0x000092eb, + 0x00009308, 0x00009320, 0x00009332, 0x0000934f, + 0x00009364, 0x00009386, 0x000093a1, 0x000093c0, + 0x000093dc, 0x00009412, 0x00009437, 0x00009458, + 0x0000947b, 0x0000949a, 0x000094c6, 0x000094dc, + 0x000094f5, 0x00009514, 0x0000953a, 0x0000955a, // Entry 460 - 47F - 0x00009659, 0x00009687, 0x000096b6, 0x000096e1, - 0x00009719, 0x00009731, 0x00009769, 0x0000979e, - 0x000097da, 0x00009800, 0x0000982e, 0x0000984f, - 0x00009867, 0x00009896, 0x000098c2, 0x000098e7, - 0x000098ff, 0x00009938, 0x0000996a, 0x0000997e, - 0x0000998f, 0x000099af, 0x000099ec, 0x00009a15, - 0x00009a41, 0x00009a5e, 0x00009a7a, 0x00009a93, - 0x00009aac, 0x00009ade, 0x00009b0c, 0x00009b2b, + 0x0000959a, 0x000095e2, 0x0000960d, 0x00009637, + 0x00009659, 0x0000966e, 0x00009681, 0x000096a8, + 0x000096cd, 0x000096dd, 0x000096ee, 0x00009719, + 0x0000972b, 0x00009757, 0x00009776, 0x000097a4, + 0x000097d6, 0x00009808, 0x00009832, 0x0000984d, + 0x0000987e, 0x00009894, 0x000098be, 0x000098d3, + 0x000098ff, 0x00009982, 0x000099ba, 0x000099d2, + 0x00009a01, 0x00009a34, 0x00009a44, 0x00009a56, // Entry 480 - 49F - 0x00009b67, 0x00009b98, 0x00009bc3, 0x00009be7, - 0x00009bf8, 0x00009c17, 0x00009c30, 0x00009c43, - 0x00009c57, 0x00009c7f, 0x00009cb4, 0x00009cd2, - 0x00009cf1, 0x00009d17, 0x00009d2c, 0x00009d4b, - 0x00009d63, 0x00009d94, 0x00009daa, 0x00009dc9, - 0x00009de5, 0x00009e0a, 0x00009e24, 0x00009e36, - 0x00009e54, 0x00009e6d, 0x00009e85, 0x00009eb2, - 0x00009eca, 0x00009ee3, 0x00009f08, 0x00009f1c, + 0x00009a65, 0x00009a9f, 0x00009add, 0x00009b19, + 0x00009b31, 0x00009b4b, 0x00009b70, 0x00009ba9, + 0x00009bc9, 0x00009bf8, 0x00009c17, 0x00009c49, + 0x00009c71, 0x00009c9f, 0x00009cce, 0x00009cf7, + 0x00009d2d, 0x00009d52, 0x00009d68, 0x00009d85, + 0x00009db1, 0x00009ddb, 0x00009e05, 0x00009e1d, + 0x00009e38, 0x00009e64, 0x00009e7c, 0x00009e93, + 0x00009ecb, 0x00009f00, 0x00009f3c, 0x00009f62, // Entry 4A0 - 4BF - 0x00009f3a, 0x00009f54, 0x00009f6a, 0x00009f90, - 0x00009fb6, 0x00009fce, 0x00009fdc, 0x0000a000, - 0x0000a014, 0x0000a03d, 0x0000a050, 0x0000a068, - 0x0000a07e, 0x0000a0a6, 0x0000a0c0, 0x0000a0e9, - 0x0000a0fc, 0x0000a133, 0x0000a162, 0x0000a170, - 0x0000a1a6, 0x0000a1de, 0x0000a21b, 0x0000a244, - 0x0000a263, 0x0000a29b, 0x0000a2b3, 0x0000a2e1, - 0x0000a308, 0x0000a331, 0x0000a35b, 0x0000a389, + 0x00009f79, 0x00009f8a, 0x00009fb1, 0x00009fdc, + 0x0000a010, 0x0000a03e, 0x0000a05f, 0x0000a077, + 0x0000a0a6, 0x0000a0d2, 0x0000a0f7, 0x0000a10f, + 0x0000a148, 0x0000a17a, 0x0000a18e, 0x0000a19f, + 0x0000a1bf, 0x0000a1fc, 0x0000a225, 0x0000a251, + 0x0000a26e, 0x0000a28a, 0x0000a2a3, 0x0000a2bc, + 0x0000a2ee, 0x0000a31c, 0x0000a33b, 0x0000a377, + 0x0000a3a8, 0x0000a3d3, 0x0000a3f7, 0x0000a408, // Entry 4C0 - 4DF - 0x0000a399, 0x0000a3c8, 0x0000a3dd, 0x0000a405, - 0x0000a428, 0x0000a44f, 0x0000a45d, 0x0000a479, - 0x0000a492, 0x0000a4a4, 0x0000a4b9, 0x0000a4d8, - 0x0000a4db, 0x0000a4f7, 0x0000a517, 0x0000a553, - 0x0000a579, 0x0000a59e, 0x0000a5b0, 0x0000a5e1, - 0x0000a5f4, 0x0000a612, 0x0000a63c, 0x0000a66c, - 0x0000a67c, 0x0000a69b, 0x0000a6c9, 0x0000a6fc, - 0x0000a71a, 0x0000a74b, 0x0000a78d, 0x0000a7df, + 0x0000a427, 0x0000a440, 0x0000a461, 0x0000a476, + 0x0000a497, 0x0000a4ac, 0x0000a4c1, 0x0000a4d7, + 0x0000a4fa, 0x0000a516, 0x0000a541, 0x0000a569, + 0x0000a57e, 0x0000a59d, 0x0000a5b5, 0x0000a5cf, + 0x0000a5e1, 0x0000a5ff, 0x0000a618, 0x0000a630, + 0x0000a65d, 0x0000a675, 0x0000a68b, 0x0000a6a4, + 0x0000a6c9, 0x0000a6e5, 0x0000a70a, 0x0000a71e, + 0x0000a73c, 0x0000a756, 0x0000a76c, 0x0000a792, // Entry 4E0 - 4FF - 0x0000a7f7, 0x0000a81e, 0x0000a836, 0x0000a853, - 0x0000a86d, 0x0000a8ae, 0x0000a8cc, 0x0000a8e7, - 0x0000a903, 0x0000a92b, 0x0000a952, 0x0000a97b, - 0x0000a9a4, 0x0000a9eb, 0x0000aa05, 0x0000aa32, - 0x0000aa61, 0x0000aa7a, 0x0000aa91, 0x0000aab1, - 0x0000aacf, 0x0000ab03, 0x0000ab17, 0x0000ab33, - 0x0000ab50, 0x0000ab6b, 0x0000ab92, 0x0000aba6, - 0x0000abc2, 0x0000abda, 0x0000abf7, 0x0000ac03, + 0x0000a7b8, 0x0000a7d0, 0x0000a7de, 0x0000a802, + 0x0000a816, 0x0000a83f, 0x0000a852, 0x0000a86a, + 0x0000a880, 0x0000a8a8, 0x0000a8c2, 0x0000a8eb, + 0x0000a8fe, 0x0000a935, 0x0000a964, 0x0000a972, + 0x0000a9a8, 0x0000a9e0, 0x0000aa1d, 0x0000aa46, + 0x0000aa65, 0x0000aa9d, 0x0000aab5, 0x0000aae3, + 0x0000ab0d, 0x0000ab36, 0x0000ab60, 0x0000ab8e, + 0x0000ab9e, 0x0000abcd, 0x0000abe2, 0x0000ac0a, // Entry 500 - 51F - 0x0000ac30, 0x0000ac5b, 0x0000ac6f, 0x0000ac8b, - 0x0000acad, 0x0000acc4, 0x0000acde, 0x0000acfe, - 0x0000ad14, 0x0000ad32, 0x0000ad57, 0x0000ad84, - 0x0000ad9d, 0x0000add4, 0x0000ae04, 0x0000ae20, - 0x0000ae37, 0x0000ae5b, 0x0000ae84, 0x0000ae9b, - 0x0000aec2, 0x0000aee8, 0x0000af13, 0x0000af44, - 0x0000af6c, 0x0000af8f, 0x0000afa6, 0x0000afc2, - 0x0000afdc, 0x0000b001, 0x0000b02c, 0x0000b04e, + 0x0000ac2d, 0x0000ac54, 0x0000ac62, 0x0000ac7e, + 0x0000ac97, 0x0000aca9, 0x0000acbe, 0x0000acdd, + 0x0000ace0, 0x0000acfc, 0x0000ad1c, 0x0000ad58, + 0x0000ad7e, 0x0000ada3, 0x0000adb5, 0x0000ade6, + 0x0000adf9, 0x0000ae17, 0x0000ae41, 0x0000ae71, + 0x0000ae90, 0x0000aea0, 0x0000aebf, 0x0000aeed, + 0x0000af20, 0x0000af3e, 0x0000af6f, 0x0000afb1, + 0x0000b003, 0x0000b01b, 0x0000b042, 0x0000b05a, // Entry 520 - 53F - 0x0000b06c, 0x0000b094, 0x0000b0bd, 0x0000b0e7, - 0x0000b10b, 0x0000b138, 0x0000b149, 0x0000b169, - 0x0000b187, 0x0000b196, 0x0000b1e6, 0x0000b219, - 0x0000b244, 0x0000b25e, 0x0000b275, 0x0000b28b, - 0x0000b2a5, 0x0000b2c7, 0x0000b2f5, 0x0000b321, - 0x0000b33b, 0x0000b360, 0x0000b376, 0x0000b3a7, - 0x0000b3b7, 0x0000b3da, 0x0000b408, 0x0000b41b, - 0x0000b43f, 0x0000b460, 0x0000b489, 0x0000b4ae, + 0x0000b077, 0x0000b091, 0x0000b0d2, 0x0000b0f0, + 0x0000b10b, 0x0000b127, 0x0000b14f, 0x0000b176, + 0x0000b19f, 0x0000b1c8, 0x0000b20f, 0x0000b229, + 0x0000b256, 0x0000b285, 0x0000b29e, 0x0000b2b5, + 0x0000b2d5, 0x0000b2f3, 0x0000b327, 0x0000b33b, + 0x0000b357, 0x0000b374, 0x0000b38f, 0x0000b3b6, + 0x0000b3ca, 0x0000b3e6, 0x0000b3fe, 0x0000b41b, + 0x0000b427, 0x0000b454, 0x0000b47f, 0x0000b493, // Entry 540 - 55F - 0x0000b4dd, 0x0000b509, 0x0000b528, 0x0000b55c, - 0x0000b58c, 0x0000b5a6, 0x0000b5b6, 0x0000b5da, - 0x0000b5f7, 0x0000b613, 0x0000b62b, 0x0000b641, - 0x0000b666, 0x0000b67e, 0x0000b69c, 0x0000b6b3, - 0x0000b6d1, 0x0000b6e6, 0x0000b702, 0x0000b714, - 0x0000b72a, 0x0000b743, 0x0000b756, 0x0000b779, - 0x0000b796, 0x0000b7bb, 0x0000b7f3, 0x0000b806, - 0x0000b83b, 0x0000b871, 0x0000b89a, 0x0000b8c3, + 0x0000b4af, 0x0000b4d1, 0x0000b4e8, 0x0000b502, + 0x0000b522, 0x0000b538, 0x0000b556, 0x0000b57b, + 0x0000b5a8, 0x0000b5c1, 0x0000b5d8, 0x0000b603, + 0x0000b634, 0x0000b65c, 0x0000b673, 0x0000b691, + 0x0000b6b8, 0x0000b6e1, 0x0000b70b, 0x0000b72f, + 0x0000b75c, 0x0000b76d, 0x0000b78d, 0x0000b7ab, + 0x0000b7fb, 0x0000b82e, 0x0000b859, 0x0000b873, + 0x0000b88a, 0x0000b8a6, 0x0000b8c0, 0x0000b8e5, // Entry 560 - 57F - 0x0000b8e3, 0x0000b8fb, 0x0000b926, 0x0000b941, - 0x0000b970, 0x0000b99a, 0x0000b9d1, 0x0000b9e7, - 0x0000ba12, 0x0000ba39, 0x0000ba5b, 0x0000ba91, - 0x0000bab5, 0x0000bac9, 0x0000baed, 0x0000bb15, - 0x0000bb31, 0x0000bb50, 0x0000bb6b, 0x0000bb8c, - 0x0000bbab, 0x0000bbde, 0x0000bbf0, 0x0000bc04, - 0x0000bc19, 0x0000bc30, 0x0000bc4b, 0x0000bc53, - 0x0000bc8a, 0x0000bc9d, 0x0000bcbc, 0x0000bcd7, + 0x0000b910, 0x0000b932, 0x0000b954, 0x0000b967, + 0x0000b98b, 0x0000b9ac, 0x0000b9d5, 0x0000b9fa, + 0x0000ba29, 0x0000ba55, 0x0000ba74, 0x0000baa8, + 0x0000bad8, 0x0000baf2, 0x0000bb02, 0x0000bb26, + 0x0000bb43, 0x0000bb5f, 0x0000bb77, 0x0000bb8d, + 0x0000bbb2, 0x0000bbca, 0x0000bbe8, 0x0000bbff, + 0x0000bc1d, 0x0000bc3b, 0x0000bc54, 0x0000bc67, + 0x0000bc8a, 0x0000bca7, 0x0000bccc, 0x0000bd04, // Entry 580 - 59F - 0x0000bd0f, 0x0000bd51, 0x0000bd78, 0x0000bdab, - 0x0000bdca, 0x0000bddb, 0x0000be12, 0x0000be3d, - 0x0000be68, 0x0000bea2, 0x0000becb, 0x0000befe, - 0x0000bf1c, 0x0000bf45, 0x0000bf83, 0x0000bfa5, - 0x0000bfe2, 0x0000c026, 0x0000c059, 0x0000c079, - 0x0000c0a8, 0x0000c0ed, 0x0000c120, 0x0000c14c, - 0x0000c197, 0x0000c1c3, 0x0000c1db, 0x0000c1f1, - 0x0000c234, 0x0000c274, 0x0000c293, 0x0000c2c7, + 0x0000bd17, 0x0000bd4c, 0x0000bd82, 0x0000bdab, + 0x0000bdd4, 0x0000bdf4, 0x0000be1f, 0x0000be4e, + 0x0000be7d, 0x0000be93, 0x0000bebe, 0x0000bee5, + 0x0000bf07, 0x0000bf3d, 0x0000bf61, 0x0000bf87, + 0x0000bfba, 0x0000bfe8, 0x0000c01a, 0x0000c051, + 0x0000c065, 0x0000c089, 0x0000c0b1, 0x0000c0cd, + 0x0000c0ec, 0x0000c107, 0x0000c128, 0x0000c147, + 0x0000c183, 0x0000c197, 0x0000c1ae, 0x0000c1c9, // Entry 5A0 - 5BF - 0x0000c33d, 0x0000c36f, 0x0000c3aa, 0x0000c3e1, - 0x0000c43e, 0x0000c472, 0x0000c4b2, 0x0000c4ef, - 0x0000c537, 0x0000c590, 0x0000c5e6, 0x0000c62d, - 0x0000c660, 0x0000c69f, 0x0000c6d0, 0x0000c6f6, - 0x0000c71f, 0x0000c73f, 0x0000c759, 0x0000c76e, - 0x0000c78f, 0x0000c7c3, 0x0000c806, 0x0000c820, - 0x0000c84a, 0x0000c86e, 0x0000c891, 0x0000c8ae, - 0x0000c8e3, 0x0000c91f, 0x0000c94a, 0x0000c978, + 0x0000c1d1, 0x0000c208, 0x0000c21b, 0x0000c23a, + 0x0000c255, 0x0000c272, 0x0000c293, 0x0000c2cb, + 0x0000c2fe, 0x0000c31d, 0x0000c32e, 0x0000c365, + 0x0000c38e, 0x0000c3c1, 0x0000c3df, 0x0000c412, + 0x0000c45d, 0x0000c489, 0x0000c4c9, 0x0000c4e8, + 0x0000c51c, 0x0000c592, 0x0000c5c4, 0x0000c5ff, + 0x0000c636, 0x0000c693, 0x0000c6c7, 0x0000c707, + 0x0000c744, 0x0000c78c, 0x0000c7e5, 0x0000c83b, // Entry 5C0 - 5DF - 0x0000c99f, 0x0000c9c1, 0x0000c9de, 0x0000ca16, - 0x0000ca56, 0x0000ca86, 0x0000cabc, 0x0000cad6, - 0x0000caee, 0x0000cb22, 0x0000cb57, 0x0000cb71, - 0x0000cb8b, 0x0000cbbb, 0x0000cbec, 0x0000cc05, - 0x0000cc18, 0x0000cc42, 0x0000cc70, 0x0000cca6, - 0x0000ccef, 0x0000cd22, 0x0000cd4b, 0x0000cd84, - 0x0000cdaa, 0x0000cdd4, 0x0000ce03, 0x0000ce3a, - 0x0000ce64, 0x0000ce97, 0x0000cecf, 0x0000cf16, + 0x0000c882, 0x0000c8b5, 0x0000c8f4, 0x0000c925, + 0x0000c94b, 0x0000c974, 0x0000c994, 0x0000c9ae, + 0x0000c9c3, 0x0000c9d5, 0x0000ca09, 0x0000ca4c, + 0x0000ca66, 0x0000ca87, 0x0000ca98, 0x0000cac2, + 0x0000cae6, 0x0000cb09, 0x0000cb3f, 0x0000cb59, + 0x0000cb71, 0x0000cb97, 0x0000cba9, 0x0000cbde, + 0x0000cbf8, 0x0000cc12, 0x0000cc36, 0x0000cc4f, + 0x0000cc63, 0x0000ccac, 0x0000ccdf, 0x0000cd08, // Entry 5E0 - 5FF - 0x0000cf4f, 0x0000cf8d, 0x0000cfbe, 0x0000cfe6, - 0x0000d023, 0x0000d05a, 0x0000d072, 0x0000d0ad, - 0x0000d0de, 0x0000d106, 0x0000d135, 0x0000d16f, - 0x0000d181, 0x0000d19f, 0x0000d1d0, 0x0000d1f5, - 0x0000d207, 0x0000d225, 0x0000d242, 0x0000d256, - 0x0000d26f, 0x0000d28e, 0x0000d2b5, 0x0000d2ee, - 0x0000d32c, 0x0000d34e, 0x0000d387, 0x0000d3bc, - 0x0000d3ea, 0x0000d40e, 0x0000d427, 0x0000d444, + 0x0000cd2b, 0x0000cd6b, 0x0000cd9a, 0x0000cdd1, + 0x0000cdfb, 0x0000ce2e, 0x0000ce66, 0x0000cead, + 0x0000cee6, 0x0000cf24, 0x0000cf55, 0x0000cf7d, + 0x0000cfba, 0x0000cff1, 0x0000d009, 0x0000d044, + 0x0000d075, 0x0000d09d, 0x0000d0bc, 0x0000d0da, + 0x0000d10b, 0x0000d130, 0x0000d157, 0x0000d177, + 0x0000d197, 0x0000d1b0, 0x0000d1c4, 0x0000d1e8, + 0x0000d201, 0x0000d21e, 0x0000d23b, 0x0000d262, // Entry 600 - 61F - 0x0000d46b, 0x0000d490, 0x0000d4b0, 0x0000d4c5, - 0x0000d4f7, 0x0000d529, 0x0000d54a, 0x0000d56b, - 0x0000d581, 0x0000d5ae, 0x0000d5f0, 0x0000d62d, - 0x0000d643, 0x0000d66a, 0x0000d6a2, 0x0000d6d8, - 0x0000d6fc, 0x0000d729, 0x0000d739, 0x0000d741, - 0x0000d758, 0x0000d795, 0x0000d7aa, 0x0000d7c6, - 0x0000d7db, 0x0000d7f6, 0x0000d812, 0x0000d848, - 0x0000d87b, 0x0000d89a, 0x0000d8d0, 0x0000d8f8, + 0x0000d287, 0x0000d2a7, 0x0000d2c7, 0x0000d2db, + 0x0000d2ef, 0x0000d31a, 0x0000d32f, 0x0000d350, + 0x0000d371, 0x0000d387, 0x0000d3a2, 0x0000d3c9, + 0x0000d3df, 0x0000d415, 0x0000d439, 0x0000d466, + 0x0000d476, 0x0000d47e, 0x0000d495, 0x0000d4b5, + 0x0000d4f2, 0x0000d4fe, 0x0000d51d, 0x0000d532, + 0x0000d54e, 0x0000d563, 0x0000d57e, 0x0000d59a, + 0x0000d5b8, 0x0000d5ee, 0x0000d621, 0x0000d640, // Entry 620 - 63F - 0x0000d91a, 0x0000d946, 0x0000d970, 0x0000d97b, - 0x0000d98f, 0x0000d9a5, 0x0000d9b2, 0x0000d9c5, - 0x0000d9db, 0x0000d9ed, 0x0000da01, 0x0000da15, - 0x0000da27, 0x0000da3a, 0x0000da4e, 0x0000da60, - 0x0000da76, 0x0000da90, 0x0000da9e, 0x0000daae, - 0x0000dab9, 0x0000dac4, 0x0000dae0, 0x0000daf8, - 0x0000db06, 0x0000db16, 0x0000db28, 0x0000db3a, - 0x0000db51, 0x0000db60, 0x0000db73, 0x0000db86, + 0x0000d676, 0x0000d69e, 0x0000d6c0, 0x0000d6ec, + 0x0000d716, 0x0000d737, 0x0000d75a, 0x0000d77c, + 0x0000d79d, 0x0000d7bf, 0x0000d7d3, 0x0000d7e5, + 0x0000d809, 0x0000d814, 0x0000d828, 0x0000d83c, + 0x0000d852, 0x0000d85f, 0x0000d872, 0x0000d888, + 0x0000d89a, 0x0000d8ae, 0x0000d8c2, 0x0000d8d4, + 0x0000d8e7, 0x0000d8f8, 0x0000d90b, 0x0000d91f, + 0x0000d931, 0x0000d947, 0x0000d961, 0x0000d96f, // Entry 640 - 65F - 0x0000db9d, 0x0000dbab, 0x0000dbbd, 0x0000dbd1, - 0x0000dbe8, 0x0000dbf7, 0x0000dc06, 0x0000dc1c, - 0x0000dc2c, 0x0000dc40, 0x0000dc56, 0x0000dc63, - 0x0000dc6e, 0x0000dc7b, 0x0000dc89, 0x0000dca5, - 0x0000dcb5, 0x0000dcc6, 0x0000dcd9, 0x0000dd31, - 0x0000dd46, 0x0000dd59, 0x0000dd68, 0x0000dd71, - 0x0000dd7a, 0x0000dd85, 0x0000dd93, 0x0000dda9, - 0x0000ddd9, 0x0000dde8, 0x0000de01, 0x0000de1a, + 0x0000d97f, 0x0000d98a, 0x0000d995, 0x0000d9b1, + 0x0000d9c9, 0x0000d9db, 0x0000d9e9, 0x0000d9f9, + 0x0000da0b, 0x0000da1d, 0x0000da34, 0x0000da43, + 0x0000da51, 0x0000da64, 0x0000da77, 0x0000da8e, + 0x0000da9c, 0x0000daad, 0x0000dabf, 0x0000dad3, + 0x0000dae0, 0x0000daf7, 0x0000db06, 0x0000db16, + 0x0000db2a, 0x0000db39, 0x0000db4f, 0x0000db5f, + 0x0000db73, 0x0000db89, 0x0000db96, 0x0000dba1, // Entry 660 - 67F - 0x0000de2b, 0x0000de48, 0x0000de5a, 0x0000de73, - 0x0000de8d, 0x0000dea9, 0x0000dec2, 0x0000dedd, - 0x0000df00, 0x0000df09, 0x0000df25, 0x0000df3a, - 0x0000df4e, 0x0000df6c, 0x0000df93, 0x0000dfa5, - 0x0000dfd4, 0x0000e004, 0x0000e027, 0x0000e03b, - 0x0000e04c, 0x0000e05b, 0x0000e073, 0x0000e08c, - 0x0000e0b8, 0x0000e0d2, 0x0000e0f2, 0x0000e116, - 0x0000e133, 0x0000e146, 0x0000e15a, 0x0000e175, + 0x0000dbae, 0x0000dbbc, 0x0000dbd8, 0x0000dbe8, + 0x0000dbf9, 0x0000dc06, 0x0000dc19, 0x0000dc71, + 0x0000dc86, 0x0000dc99, 0x0000dca8, 0x0000dcb1, + 0x0000dcba, 0x0000dcc5, 0x0000dcd3, 0x0000dce9, + 0x0000dcf8, 0x0000dd0d, 0x0000dd26, 0x0000dd3f, + 0x0000dd50, 0x0000dd6d, 0x0000dd7f, 0x0000dd98, + 0x0000ddb2, 0x0000ddce, 0x0000dde7, 0x0000de02, + 0x0000de0b, 0x0000de27, 0x0000de3c, 0x0000de50, // Entry 680 - 69F - 0x0000e191, 0x0000e1ae, 0x0000e1cb, 0x0000e1ef, - 0x0000e205, 0x0000e21c, 0x0000e23d, 0x0000e257, - 0x0000e26e, 0x0000e288, 0x0000e2a2, 0x0000e2c1, - 0x0000e2e1, 0x0000e2fe, 0x0000e31e, 0x0000e348, - 0x0000e372, 0x0000e38d, 0x0000e3a0, 0x0000e3be, - 0x0000e3de, 0x0000e3f3, 0x0000e418, 0x0000e439, - 0x0000e453, 0x0000e481, 0x0000e49d, 0x0000e4ba, - 0x0000e4cb, 0x0000e4dc, 0x0000e4ea, 0x0000e4f8, + 0x0000de6e, 0x0000de95, 0x0000dea7, 0x0000ded6, + 0x0000df06, 0x0000df29, 0x0000df3d, 0x0000df4e, + 0x0000df5d, 0x0000df75, 0x0000df8e, 0x0000dfba, + 0x0000dfd4, 0x0000dff4, 0x0000e018, 0x0000e035, + 0x0000e048, 0x0000e05c, 0x0000e077, 0x0000e093, + 0x0000e0b0, 0x0000e0cd, 0x0000e0e3, 0x0000e0fa, + 0x0000e11b, 0x0000e134, 0x0000e14e, 0x0000e165, + 0x0000e17f, 0x0000e199, 0x0000e1b8, 0x0000e1d8, // Entry 6A0 - 6BF - 0x0000e506, 0x0000e51b, 0x0000e530, 0x0000e53f, - 0x0000e552, 0x0000e566, 0x0000e57c, 0x0000e58f, - 0x0000e5a5, 0x0000e5b5, 0x0000e5d1, 0x0000e5e4, - 0x0000e602, 0x0000e60f, 0x0000e61f, 0x0000e638, - 0x0000e647, 0x0000e65a, 0x0000e66f, 0x0000e680, - 0x0000e697, 0x0000e6a4, 0x0000e6b1, 0x0000e6e5, - 0x0000e71f, 0x0000e756, 0x0000e789, 0x0000e79b, - 0x0000e7b1, 0x0000e7c3, 0x0000e7d7, 0x0000e7f0, + 0x0000e1f5, 0x0000e215, 0x0000e23f, 0x0000e269, + 0x0000e284, 0x0000e297, 0x0000e2b5, 0x0000e2d5, + 0x0000e2ea, 0x0000e30f, 0x0000e329, 0x0000e357, + 0x0000e373, 0x0000e390, 0x0000e3a8, 0x0000e3c0, + 0x0000e3d5, 0x0000e3ea, 0x0000e3ff, 0x0000e41b, + 0x0000e437, 0x0000e44d, 0x0000e467, 0x0000e481, + 0x0000e49c, 0x0000e4b9, 0x0000e4d3, 0x0000e4ea, + 0x0000e500, 0x0000e510, 0x0000e52c, 0x0000e53f, // Entry 6C0 - 6DF - 0x0000e80f, 0x0000e820, 0x0000e83c, 0x0000e857, - 0x0000e866, 0x0000e881, 0x0000e894, 0x0000e8a0, - 0x0000e8ad, 0x0000e8c1, 0x0000e8d5, 0x0000e8e1, - 0x0000e8f6, 0x0000e90c, 0x0000e92d, 0x0000e94a, - 0x0000e95e, 0x0000e970, 0x0000e98a, 0x0000e997, - 0x0000e9a7, 0x0000e9ba, 0x0000e9ca, 0x0000e9de, - 0x0000e9ef, 0x0000ea05, 0x0000ea22, 0x0000ea47, - 0x0000ea80, 0x0000eaa3, 0x0000eaca, 0x0000eae5, + 0x0000e55d, 0x0000e56a, 0x0000e57a, 0x0000e593, + 0x0000e5a2, 0x0000e5b5, 0x0000e5ca, 0x0000e5e7, + 0x0000e60b, 0x0000e61e, 0x0000e63d, 0x0000e64e, + 0x0000e665, 0x0000e672, 0x0000e67f, 0x0000e6b3, + 0x0000e6ed, 0x0000e724, 0x0000e757, 0x0000e769, + 0x0000e77f, 0x0000e791, 0x0000e7a5, 0x0000e7be, + 0x0000e7dd, 0x0000e7ee, 0x0000e80a, 0x0000e825, + 0x0000e834, 0x0000e84f, 0x0000e862, 0x0000e86e, // Entry 6E0 - 6FF - 0x0000eafd, 0x0000eb18, 0x0000eb2a, 0x0000eb43, - 0x0000eb59, 0x0000eb73, 0x0000eb91, 0x0000ebaa, - 0x0000ebc4, 0x0000ebe4, 0x0000ec0a, 0x0000ec23, - 0x0000ec3d, 0x0000ec5e, 0x0000ec7a, 0x0000ec95, - 0x0000ecb8, 0x0000ecd6, 0x0000eceb, 0x0000ecff, - 0x0000ed13, 0x0000ed29, 0x0000ed46, 0x0000ed6e, - 0x0000ed8f, 0x0000edb3, 0x0000edc7, 0x0000eddb, - 0x0000edeb, 0x0000edfe, 0x0000ee22, 0x0000ee3b, + 0x0000e87b, 0x0000e88f, 0x0000e8a3, 0x0000e8af, + 0x0000e8c4, 0x0000e8da, 0x0000e8f7, 0x0000e90b, + 0x0000e91d, 0x0000e930, 0x0000e93d, 0x0000e94d, + 0x0000e960, 0x0000e970, 0x0000e984, 0x0000e9ac, + 0x0000e9c2, 0x0000e9df, 0x0000ea04, 0x0000ea3d, + 0x0000ea60, 0x0000ea87, 0x0000eaa2, 0x0000eaba, + 0x0000ead5, 0x0000eae7, 0x0000eb00, 0x0000eb16, + 0x0000eb30, 0x0000eb4e, 0x0000eb67, 0x0000eb81, // Entry 700 - 71F - 0x0000ee52, 0x0000ee74, 0x0000ee8d, 0x0000eea4, - 0x0000eec2, 0x0000eede, 0x0000eefc, 0x0000ef14, - 0x0000ef36, 0x0000ef63, 0x0000ef8b, 0x0000efac, - 0x0000efc4, 0x0000efe0, 0x0000eff9, 0x0000f00c, - 0x0000f028, 0x0000f04c, 0x0000f068, 0x0000f086, - 0x0000f0a6, 0x0000f0cc, 0x0000f0ec, 0x0000f115, - 0x0000f144, 0x0000f155, 0x0000f167, 0x0000f1d5, - 0x0000f1ef, 0x0000f207, 0x0000f21d, 0x0000f228, + 0x0000eba1, 0x0000ebc7, 0x0000ebe0, 0x0000ebfa, + 0x0000ec1b, 0x0000ec31, 0x0000ec44, 0x0000ec5f, + 0x0000ec82, 0x0000ec97, 0x0000ecab, 0x0000ecc2, + 0x0000ecd6, 0x0000ecec, 0x0000ed09, 0x0000ed31, + 0x0000ed52, 0x0000ed76, 0x0000ed8a, 0x0000ed9e, + 0x0000edae, 0x0000edc1, 0x0000ede5, 0x0000edfe, + 0x0000ee15, 0x0000ee37, 0x0000ee50, 0x0000ee67, + 0x0000ee85, 0x0000ee9f, 0x0000eeb8, 0x0000eed4, // Entry 720 - 73F - 0x0000f236, 0x0000f249, 0x0000f25e, 0x0000f273, - 0x0000f292, 0x0000f2a7, -} // Size: 7344 bytes + 0x0000eeeb, 0x0000ef17, 0x0000ef35, 0x0000ef4d, + 0x0000ef6e, 0x0000ef9b, 0x0000efc3, 0x0000efe4, + 0x0000effc, 0x0000f018, 0x0000f031, 0x0000f044, + 0x0000f060, 0x0000f07e, 0x0000f09e, 0x0000f0b8, + 0x0000f0bf, 0x0000f0cf, 0x0000f0e7, 0x0000f0fd, + 0x0000f108, 0x0000f116, 0x0000f129, 0x0000f13e, + 0x0000f153, 0x0000f162, 0x0000f181, 0x0000f196, +} // Size: 7432 bytes -const en_USData string = "" + // Size: 62119 bytes +const en_USData string = "" + // Size: 61846 bytes "\x02not found tenantId in body\x02failed to change project\x02get passwo" + "rd in body\x02username or password is empty\x02missing credential\x02inc" + "orrect username or password\x02The user has been locked, please contact " + "the administrator\x02The user has been disabled, please contact the admi" + - "nistrator\x02invalid credential\x02fetch json for request: %v\x02user fo" + - "rbidden login from web\x02request body is empty\x02missing id\x02fetchAu" + - "thInfo fail: %s\x02new password mismatch\x02not support reset user passw" + - "ord\x02wrong password\x02invalid passcode\x02generate totp qrcode failed" + - "\x02uid is empty\x02input parameter error\x02TOTP recovery questions do " + - "not exist\x02questions not found\x02%s answer is incorrect\x02passcode i" + - "s a 6-digits string\x02invalid passcode: %v\x02no revocery questions." + - "\x02unmarshal questions: %v\x02get admin credential is nil\x02no usable " + + "nistrator\x02The IDP of user has been disabled or in invalid status\x02i" + + "nvalid credential\x02fetch json for request: %v\x02user forbidden login " + + "from web\x02request body is empty\x02missing id\x02fetchAuthInfo fail: %" + + "s\x02new password mismatch\x02not support reset user password\x02wrong p" + + "assword\x02invalid passcode\x02generate totp qrcode failed\x02uid is emp" + + "ty\x02input parameter error\x02TOTP recovery questions do not exist\x02q" + + "uestions not found\x02%s answer is incorrect\x02passcode is a 6-digits s" + + "tring\x02invalid passcode: %v\x02no revocery questions.\x02unmarshal que" + + "stions: %v\x02invalid request URL %s\x02no service\x02malformed URL, exp" + + "ect service\x02malformed URL, expect region\x02malformed URL, expect zon" + + "e\x02invalid service %s: %s\x02get admin credential is nil\x02no usable " + "regions, please contact admin\x02illegal region %s, please contact admin" + "\x02session expires, missing %s\x02parse query string error: %s\x02fetch" + " form data error: %s\x02parse form data error: %s\x02invalid request\x02" + @@ -2420,275 +2446,282 @@ const en_USData string = "" + // Size: 62119 bytes "plicate name %s\x02template_id\x02template not found %s\x02internal serv" + "er error\x02invalid content_length %s\x02No token in header\x02Token in " + "header invalid\x02Token expired\x02resource %s module not exists\x02No i" + - "d list found\x02recv invalid data\x02sync error\x04\x00\x01 \x19\x02inva" + - "lid CannedAction %s \x04\x00\x01 \x13\x02invalid Effect %s \x04\x00\x01 " + - "\x11\x02invalid ipv4 %s \x02invalid share_mode %s\x02mx_priority range l" + - "imited to [1,50]\x02invalid domain %s for MX record\x02invalid ipv4 %s f" + - "or A record\x02invalid ipv6 %s for AAAA record\x02invalid domain %s for " + - "CNAME record\x02missing tags\x02invalid condition\x02missing tag key for" + - "\x02not support auto_create_project\x02missing project_id\x02duplicate r" + - "oute cidr %s\x02Internal server error: %s\x02Internal server error\x02In" + - "valid handler %s\x02Handler not found\x02No request key: %s\x02Invalid r" + - "equest header: %v\x02request process timeout\x02Not allow empty records" + - "\x02Records limit exceeded.\x02%s method not found\x02%s method params l" + - "ength not match, expected %d, input %d\x02Invald %s return value\x02Inva" + - "ld ListItemFilter return value count %d\x02Invald OrderByExtraFields ret" + - "urn value count %d\x02Invalid FetchCustomizeColumns return value count %" + - "d\x02Invalid FetchCustomizeColumns return value type, not a slice!\x02In" + - "valid FetchCustomizeColumns return value, inconsistent obj count: input " + - "%d != output %d\x02Invald ValidateUpdateData return value\x02Invald Cust" + - "omizeDelete return value\x02Invald ValidateDeleteCondition return value" + - "\x02Invald ValidateUpdateCondition return value\x02invalid joint resourc" + - "es %s\x02FetchCustomizeColumns return incorrect number of results\x02No " + - "context manager\x02No such context %s(%s)\x02fail to get http response w" + - "riter from context\x02FetchCustomizeColumns returns incorrect results(ex" + - "pect 1 actual %d)\x02reflect call %s fail %s\x02No return value, so why " + - "query?\x02%s %s %s not found\x02body is not a json?\x02Missing name or g" + - "enerate_name\x02Invalid data JSONObject\x02Object %s %s has attached %s " + - "%s\x02project in non-default domain is prohibited\x02missing new domain" + - "\x02check name duplication error: %s\x02not enough privilege to dp %s (r" + - "equire:%s,allow:%s,query:%s)\x02Not support resource %s tag filter\x02Ac" + - "tion %s not found\x02can't get string field\x02model has no field %s\x02" + - "Query database error %s\x02table %s not found\x02name starts with letter" + - ", and contains letter, number and - only\x02not allow to delete log\x02r" + - "esource (domain) tags not match (tags:%s,require:%s)\x02resource (projec" + - "t) tags not match (tags:%s,require:%s)\x02resource tags not match (tags:" + - "%s,require:%s)\x02domain tags not match (%s,require:%s)\x02project tags " + - "not match (%s,require:%s)\x02DIRECT setting cannot be changed\x02DIRECT " + - "setting cannot be deleted\x02get proxysetting refcount fail %s\x02proxys" + - "etting %s is still referred to by %d %s\x02fail to decode body\x02Quota " + - "%s not found\x02Default quota %s not allow to delete\x02not enough privi" + - "lleges\x02not allow to list domain quotas\x02not allow to list project q" + - "uotas\x02query quotas %s\x02not enough privilege (require:%s,allow:%s:re" + - "source:%s) [tags:%s]\x02not enough privilege (require:%s,allow:%s)\x02in" + - "valid scope %s\x02not allow create %s in scope %s\x02Not allow set scope" + - " to system\x02Not allow set scope to domain %s\x02Not allow set scope to" + - " project %s\x02sharing is limited to domains %s\x02Insert shared resourc" + - "e failed %s\x02name starts with letter, and contains letter, number and " + - "._@- only\x02name longer than %d\x02not allow to set system key, please " + - "remove the underscore at the beginning\x02input key too long > %d\x02inp" + - "ut value too long > %d\x02user %s not found\x02forbidden\x02non-admin us" + - "er not allowed to create system object\x02Virtual resource freezed, can'" + - "t do %s\x02virtual resource already freezed\x02virtual resource not free" + - "zed\x02missing new project/tenant\x02can't change owner for resource in " + - "project with class metadata\x02can't change resource's owner as that in " + - "project with class metadata\x02InformerBackend not init\x02invalid forma" + - "t\x02invalid input format\x02IPMI tool is null\x02Missing key error: mis" + - "sing %q\x02General error: general error for %q: %s\x02Invalid type error" + - ": expecting %s type for %q: %s\x02Invalid choice error: invalid %q, want" + - " %s, got %s\x02Invalid length error: %q too short, got %d, min %d\x02Inv" + - "alid length error: %q too long, got %d, max %d\x02Not in range error: in" + - "valid %q: %d, want [%d,%d]\x02Invalid value error: invalid %q: %s\x02Inv" + - "alid value error: invalid %q: %v\x04\x00\x01 \x22\x02Invalid value error" + - ": invalid %q: \x02Model manager error: failed getting model manager for " + - "%q\x02Model not found error: cannot find %q with id/name %q\x02Model not" + - " found error: cannot find %q with id/name %q: %s\x02invalid cert pubkey " + - "algorithm: %s, want %s\x02no such provider\x02Not Implemented GetProvide" + - "r\x02NotFoundError\x02DuplicateIdError\x02InvalidStatusError\x02TimeoutE" + - "rror\x02NotImplementedError\x02NotSupportedError\x02InvalidProvider\x02N" + - "oBalancePermission\x02ErrAddressCountExceed\x02cannot support more than " + - "1 nic\x02The %s disk size must be in the range of %dGB ~ %dGB\x02%s requ" + - "ires that the eip bandwidth must be less than 100Mbps\x02network %s asso" + - "ciated route table has no internet gateway attached.\x02failed to find s" + - "ubformat vhd for image %s, please append 'vhd' for glance options(target" + - "_image_formats)\x02Azure Mv2-series instance sku only support UEFI image" + - "\x02Azure UEFI image %s not support this instance sku\x02Cannot change c" + - "onfig for baremtal\x02Cannot resize disk for baremtal\x02Invalid raid co" + - "nfig: %v\x02Host %s is not a baremetal\x02Baremetal %s is not ready\x02B" + - "aremetal %s is occupied\x02Cannot save image for baremtal\x02Not Impleme" + - "nt ValidateCreateEip\x02Not allow for hypervisor %s\x02Cann't online res" + - "ize root disk\x02Cannot resize disk when guest in status %s\x02Not suppo" + - "rted, please use kubectl\x02Container not support %s\x02%s not support c" + - "reate eip\x02can't resize disk for guest with instance snapshots\x02esxi" + - " guest migrate require prefer_host\x02can't rebuild root for a guest wit" + - "h instance snapshots\x02Unknown google storage type %s\x02System disk do" + - "es not support %s disk\x02%s disk cannot exceed 8\x02%s for %s features " + - "are not compatible for creating instance\x02Host %s not found\x02Guest h" + - "ave backup, can't migrate\x02Cannot normal migrate guest in status %s, t" + - "ry rescue mode or server-live-migrate?\x02Rescue mode requires all disk " + - "store in shared storages\x02Cannot migrate with isolated devices\x02Cann" + - "ot live migrate with cdrom\x02Cannot live migrate with isolated devices" + - "\x02Cannot do live migrate, too low qemu version\x02Guest %s can't hot r" + - "emove nic\x02Cannot change disk storage in status %s\x02Cannot change di" + - "sk storage in backup guest %s\x02Storage %s not attached or enabled on h" + - "ost %s\x02unsupported vdi protocol\x02Invalid machine type %q for arch %" + - "q\x02%s not support cdrom params\x02%s not support create eip, it only s" + - "upport bind eip\x02%s not support create virtual machine with eip\x02dat" + - "a disk not support storage type %s\x02The %s disk size must be in the ra" + - "nge of 10GB ~ 16000GB\x02The %s disk size must be in the range of 10GB ~" + - " 32000GB\x02The %s disk size must be in the range of 20GB ~ 32000GB\x02s" + - "torage %s can not be data disk\x02Data disk size must be an integer mult" + - "iple of 10G\x02failed to found system disk error: %v\x02failed to found " + - "storage for disk %s(%s)\x02The system disk is locally stored and does no" + - "t support changing configuration\x02Not support create local storage dis" + - "ks\x02Please input new disk backend type\x02The disk is locally stored a" + - "nd does not support detach\x02Host %s is not online\x02GetGuestCount fai" + - "l %s\x02host has been occupied\x02Aliyun reset disk required guest statu" + - "s is running or ready\x02Aws not support reset disk, you can create new " + - "disk with snapshot\x02cannot support change azure disk name\x02Azure not" + - " support reset disk, you can create new disk with snapshot\x02not implem" + - "ent\x02Not Implement ValidateResetDisk\x02Not Implement ValidateAttachSt" + - "orage\x02Not Implement RequestAttachStorage\x02Not Implement RequestDeta" + - "chStorage\x02Disk must be dettached\x02%s reset disk required guest stat" + - "us is running or ready\x02Server %s must in status ready\x02Disk must be" + - " detached\x02not supported\x02Unsupport attach %s storage for %s host" + - "\x02Attach rbd storage require host status is online\x02Query host stora" + - "ge error %s\x02Host %s already have mount point %s with other storage" + - "\x02Attach nfs storage require host status is online\x02%s is not mount " + - "point %s\x02Disk attach muti guests\x02Disk attached guest status must b" + - "e ready\x02Disk dosen't attach guest\x02OpenStack not support reset disk" + - ", you can create new disk with snapshot\x02Qcloud reset disk required gu" + - "est status is running or read\x02Ucloud reset disk operation required di" + - "sk not be attached\x02Ucloud only support data disk reset operation\x02Z" + - "Stack reset disk operation requried guest status is ready\x02Parse remot" + - "e ip error %s\x02Network not found\x02Baremetal agent not found\x02Barem" + - "etal package not prepared\x02not allow to delete default access group" + - "\x02access group not empty, please delete mount target first\x02can not " + - "add rule for default access group\x02not enough privilege\x02access grou" + - "p %s status is not available\x02invalid source %s\x02Invalid priority %d" + - ", must be in range or 1 ~ 100\x02invalid rw_access_type %s\x02invalid us" + - "er_access_type %s\x02not allow to delete default access group rule\x02We" + - "bApp has %d task active, can't sync status\x02Cannot delete disk backup " + - "in status %s\x02disk backup referenced by instance backup\x02disk %s sta" + - "tus is not %s\x02can't backup guest to backup storage with status %s\x02" + - "Backup has %d task active, can't sync status\x02Invalid storage type %s" + - "\x02nfs_host is required when storage type is nfs\x02nfs_shared_dir is r" + - "equired when storage type is nfs\x02BackupCount fail %s\x02storage has b" + - "ackup\x02check agent uniqness fail %s\x02Conflict manager_uri %s\x02Dupl" + - "icate manager_uri %s\x02missing duration/expire_time\x02expire time is b" + - "efore current expire at\x02invalid duration %s: %s\x02missing name\x02in" + - "valid bucket name %s: %s\x02invalid bucket name(%s): %s\x02no external b" + - "ucket\x02fail to get objects: %s\x02missing key\x02fail to generate temp" + - " url: %s\x02empty directory name\x02invalid key %s: %s\x02GetIObject fai" + - "l %s\x02object count limit exceeds\x02bucket.GetQuotaKeys %s\x02fail to " + - "mkdir: %s\x02empty keys\x02object key should not ends with /\x02invalid " + - "object key: %s\x02missing Content-Length\x02Illegal Content-Length %s" + - "\x02Content-Length negative %d\x02GetIObject error %s\x02object size lim" + - "it exceeds\x02bucket.GetQuotaKeys fail %s\x02put object error %s\x02setA" + - "cl error %s\x02syncWithCloudBucket error %s\x02Bucket has %d task active" + - ", can't sync status\x02Buckets that are not empty do not support this op" + - "eration\x02object %s not found\x02iBucket.GetIObjects error %s\x02iBucke" + - "t.SetWebsite error %s\x02iBucket.DeleteWebSiteConf error %s\x02iBucket.G" + - "etWebsiteConf error %s\x02cloudprovider.SetBucketCORS error %s\x02iBucke" + - "t.DeleteCORS error %s\x02iBucket.GetCORSRules error %s\x02iBucket.GetCdn" + - "Domains error %s\x02iBucket.SetRefer error %s\x02iBucket.GetRefer error " + - "%s\x02iBucket.GetPolicy error %s\x02iBucket.SetPolicy error %s\x02iBucke" + - "t.DeletePolicy error %s\x02unmarshal limit error %s\x02SetLimit error %s" + - "\x02Update error %s\x02missing manager?\x02iBucket.GetIObject error %s" + - "\x02ValidateDeleteCondition error %s\x02The image has been cached on sto" + - "rages\x02the image reference session has not been expired!\x02failed to " + - "found storagecache %s\x02not allow to query system capability\x02CDN is " + - "locked, cannot delete\x02%s not support cdn\x02CDN domain has %d task ac" + - "tive, can't sync status\x02account %s not enable saml auth\x02account is" + - " enabled\x02account is not idle\x02provider %s: %v\x02Cannot enable dele" + - "ting account\x02%s not support saml auth\x02invalid proxy setting %s\x02" + - "Unsupported provider %s\x02Project %s(%s) not belong to domain %s(%s)" + - "\x02Not support brand %s, only support %s\x02check uniqness fail %s\x02T" + - "he account has been registered\x02no such provider %s\x02check account_i" + - "d duplication error %s\x02the account has been registerd %s\x02Account d" + - "isabled\x02Account is not idle\x02failed to found provider factory error" + - ": %v\x02invalid cloud account info error: %s\x02failed to unmarshal inpu" + - "t params: %v\x02check uniqueness fail %s\x02account %s conflict\x02incon" + - "sistent account_id, previous '%s' and now '%s'\x02project %s not found" + - "\x02cannot enable auto sync in status %s\x02sync_interval_seconds should" + - " be greater than %d\x02provider is shared outside of domain\x02invalid r" + - "esource %s\x02%s not support\x02%s not support create subscription\x02ac" + - "count %s has aleady bind project mapping %s\x02valid wire_level_for_vmwa" + - "re, accept vcenter, datacenter, cluster\x02not support for cloudaccount " + - "with provider '%s'\x02not allow to create\x02provider is enabled\x02prov" + - "ider is not idle\x02Directly creating cloudprovider is not supported, cr" + - "eate cloudaccount instead\x02Region %s not found\x02Zone %s not found" + - "\x02Cloudprovider disabled\x02Cloudaccount disabled\x02Cloudprovider is " + - "not idle\x02not allow to change project across domain\x02cannot change t" + - "o a different domain from a private cloud account\x02fail to get provide" + - "r driver %s\x02storage classes not supported\x02cloudprovider %s has ale" + - "ady bind project mapping %s\x02GetZoneCount fail %s\x02GetVpcCount fail " + - "%s\x02not empty cloud region\x02not allow to delete default cloud region" + - "\x02VPC %s not found\x02Cannot update external resource\x02not allow upd" + - "ate rds account name\x02failed to found dbinstance %s\x02DBInstance %s(%" + - "s) status is %s require status is %s\x02failed to found dbinstance %s(%s" + - ") database %s: %v\x02Failed to found database %s for dbinstance %s(%s): " + - "%v\x02The account %s(%s) has permission %s to the database %s(%s)\x02Acc" + - "ount status is not %s current status is %s\x02Instance status is not %s " + - "current status is %s\x02Database status is not %s current is %s\x02Accou" + - "nt %s(%s) does not have database %s(%s) permissions\x02DBinstance has no" + - "t valid cloudprovider\x02DBInstance backup has %d task active, can't syn" + - "c status\x02not allow update rds database name\x02failed to found dbinst" + - "ance %s(%s) account %s: %v\x02Not Implemented\x02invalid address: %s\x02" + - "Ip %s not in network %s(%s) range\x02cloudprovider %s(%s) is not availab" + - "le\x02invalid duration %s\x02unsupported duration %s\x02cloudregion %s n" + - "ot support create rds\x02cloudregion %s not support create %s rds\x02not" + - " match any dbinstance sku\x02%s rds not support secgroup\x02%s rds Suppo" + - "rt up to %d security groups\x02Cannot do recovery dbinstance in status %" + - "s required status %s\x02backup %s(%s) not contain database %s\x02conflic" + - "t database %s for instance %s(%s)\x02back and instance not in same cloud" + - "account\x02backup and instance not in same cloudregion\x02can not recove" + - "r data from diff rds engine\x02Cannot do reboot dbinstance in status %s" + - "\x02DBInstance has %d task active, can't sync status\x02Cannot do renew " + - "dbinstance in status %s required status %s\x02missong duration\x02The db" + - "instance status need be %s, current is %s\x02Only %s dbinstance support " + - "this operation\x02DBInstance has opened the outer network connection\x02" + - "The extranet connection is not open\x02%s not support this operation\x02" + - "Cannot change config in status %s\x02DBInstance Disk cannot be thrink" + - "\x02DBInstance is locked, cannot delete\x02dbinstance billing type is %s" + - "\x02dbinstance billing type %s not support cancel expire\x02this operati" + - "on requires rds state to be %s\x02%s supported secgroup count is %d\x02s" + - "napshotpolicy %s not found: %s\x02not support update disk_type %s\x02fai" + - "led to find storage for disk %s\x02failed to find host for storage %s wi" + - "th disk %s\x02Storage %s not found\x02cloudprovider %s not available\x02" + - "storage %s(%s) need online and attach host for create disk\x02Cannot cre" + - "ate disk with disabled storage[%s]\x02Cannot create disk with offline st" + - "orage[%s]\x02Storage type[%s] not match backend %s\x02Storage[%s] must a" + - "ttach to a host\x02Not enough free space\x02Fetch snapshot count failed " + - "%s\x02Disk %s don't need convert snapshots\x02Can not get disk snapshot" + - "\x02Get convert snapshot failed: %s\x02Snapshot %s dose not have convert" + - " snapshot\x02Cannot reset disk in status %s\x02Cannot reset disk with sn" + - "apshot in status %s\x02Cannot reset disk %s(%s),Snapshot is belong to di" + - "sk %s\x02Resize disk when disk is READY\x02Disk cannot be thrink\x02disk" + - " has no valid storage\x02disk.GetQuotaKeys fail %s\x02fail to find stora" + - "ge for disk %s\x02No zone for this disk\x02Duplicate image name %s\x02Sa" + - "ve disk when disk is READY\x02GetRuningGuestCount fail %s\x02Save disk w" + - "hen not being USED\x02Image name is required\x02cloud provider %s is not" + - " available\x02cloud account %s is not available\x02storage of disk %s no" + - " valid host\x02GetGuestDiskCount for disk %s fail %s\x02Virtual disk %s(" + - "%s) used by virtual servers\x02not allow to delete prepaid disk in valid" + - " status\x02Diskinfo index %d: both imageID and size are absent\x02Snapsh" + - "ot %s not found\x02Snapshot %s storage %s not found, is public cloud?" + - "\x02Backup %s not found\x02Image status is not active\x02Disk has %d tas" + - "k active, can't sync status\x02GetSnapshotCount fail %s\x02not allow to " + - "purge. Virtual disk must not have snapshots\x02not allow to delete. Virt" + - "ual disk must not have snapshots\x02not allow to delete %s disk with sna" + - "pshots\x02no such snapshotpolicy %s\x02%s %s not supported dns type %s" + - "\x02%s %s not supported policy type %s\x02%s %s %s not support %s\x02inv" + - "alid record name %s\x02duplicated with CNAME dnsrecord name not support" + - "\x02duplicated dnsrecord with existed dnsrecord can not distinguish by %" + - "s policy\x02duplicated dnsrecord with existed dnsrecord not support\x02%" + - "s not support policy type %s\x02%s %s not support policy value %s\x02Not" + - " support\x02invalid domain name %s\x02Not support %s for vpc %s, support" + - "ed %s\x02Not support %s for account %s, supported %s\x02top level public" + - " domain name %s not support\x02unknown zone type %s\x02can not sync reco" + - "rd sets in %s\x02dns zone can not cache in status %s\x02Only %s support " + - "cache for account\x02account %s has been cached\x02dns zone can not unca" + - "che in status %s\x02vpc %s has already in this dns zone\x02vpc %s not in" + - " dns zone\x02SRV: insufficient param: %s\x02SRV: invalid port number: %s" + - "\x02SRV: invalid weight number: %s\x02SRV: weight number %d not in range" + - " [0,65535]\x02SRV: invalid priority number: %s\x02SRV: priority number %" + - "d not in range [0,65535]\x02SRV cannot mix with other types\x02CNAME can" + - "not mix with other types\x02PTR cannot mix with other types\x02%s: inval" + - "id domain name: %s\x02SRV: invalid srv record name: %s\x02PTR: invalid p" + - "tr record name: %s\x02%s: name cannot be ip address: %s\x02A: record val" + - "ue must be ipv4 address: %s\x02AAAA: record value must be ipv6 address: " + - "%s\x02%s: %s must be domain name: %s\x02%s: %s cannot be ip address: %s" + - "\x02%s: unknown record type\x02Empty record\x02invalid ttl: %s\x02invali" + - "d ttl: %d\x02Cannot mix different types of records, %s != %s\x02schedtag" + - " %s not found\x02unmarshal StandaloneResourceCreateInput fail %s\x02Reso" + - "urce type %s not support\x02Virtual resource type %s not support\x02%s %" + - "s not found\x02ElasticSearch is locked, cannot delete\x02ElasticSearch h" + - "as %d task active, can't sync status\x02can't restore elastic cache in s" + - "tatus %s\x02unsupport delete %s backups\x02invalid billing_cycle %s\x02C" + - "annot do restart elasticcache instance in status %s\x02Elastic cache is " + - "locked, cannot delete\x02Elastic cache is not expired, cannot delete\x02" + - "provider mismatch: %s instance can't use %s sku\x02region mismatch: inst" + + "d list found\x02recv invalid data\x02syslog webservice not enabled\x02sy" + + "nc error\x04\x00\x01 \x19\x02invalid CannedAction %s \x04\x00\x01 \x13" + + "\x02invalid Effect %s \x04\x00\x01 \x11\x02invalid ipv4 %s \x02invalid s" + + "hare_mode %s\x02mx_priority range limited to [1,50]\x02invalid domain %s" + + " for MX record\x02invalid ipv4 %s for A record\x02invalid ipv6 %s for AA" + + "AA record\x02invalid domain %s for CNAME record\x02invalid addr %s\x02co" + + "mment too long (%d>=%d)\x02comment contains non-printable char: %v\x02ac" + + "l cidr duplicate %s\x02weight out of range 1-100\x02port out of range 1-" + + "65535\x02invalid send_proxy %v\x02invalid ssl %v\x02invalid send_proxy %" + + "s\x02invalid scheduler %s\x02invalid sticky_session_type %s\x02invalid s" + + "ticky_session_cookie %s\x02invalid sticky_session %s\x02invalid listener" + + "_type %s\x02listener_port out of range 1-65535\x02invalid tls_cipher_pol" + + "icy %s\x02invalid health_check %s\x02invalid health_check_type %s\x02inv" + + "alid health_check_http_code: %s\x02invalid redirect %s\x02invalid acl_st" + + "atus %v\x02invalid acl_type %v\x02invalid scheduler %v\x02invalid tls_ci" + + "pher_policy %v\x02invalid sticky_session %v\x02invalid sticky_session_ty" + + "pe %v\x02invalid health_check %v\x02invalid health_cheack_type %v\x02inv" + + "alid domain %s\x02invalid path %s\x02invalid http_request_rate %d\x02inv" + + "alid http_request_rate_per_sec %d\x02invalid redirect_code %d\x02invalid" + + " redirect_path %s\x02invalid redirect_scheme %s\x02invalid redirect_host" + + " %s\x02missing tags\x02invalid condition\x02missing tag key for\x02not s" + + "upport auto_create_project\x02missing project_id\x02duplicate route cidr" + + " %s\x02repeat_weekdays out of range 1-7\x02time_points out of range 0-23" + + "\x02Internal server error: %s\x02Internal server error\x02Invalid handle" + + "r %s\x02Handler not found\x02No request key: %s\x02Invalid request heade" + + "r: %v\x02request process timeout\x02Not allow to access\x02Not allow emp" + + "ty records\x02Records limit exceeded.\x02not allow to delete log\x02Meth" + + "odNotFoundError\x02%s method params length not match, expected %d, input" + + " %d\x02Invald %s return value\x02Invald %s return value count %d\x02Inva" + + "ld OrderByExtraFields return value count %d\x02Invalid FetchCustomizeCol" + + "umns return value count %d\x02Invalid FetchCustomizeColumns return value" + + " type, not a slice!\x02Invalid FetchCustomizeColumns return value, incon" + + "sistent obj count: input %d != output %d\x02Invald ValidateUpdateData re" + + "turn value\x02Invald CustomizeDelete return value\x02Invald ValidateDele" + + "teCondition return value\x02Invald ValidateUpdateCondition return value" + + "\x02invalid joint resources %s\x02invalid joint filter %s, because %s do" + + "esn't have %s field\x02FetchCustomizeColumns return incorrect number of " + + "results\x02No context manager\x02No such context %s(%s)\x02fail to get h" + + "ttp response writer from context\x02FetchCustomizeColumns returns incorr" + + "ect results(expect 1 actual %d)\x02reflect call %s fail %s\x02No return " + + "value, so why query?\x02%s %s %s not found\x02body is not a json?\x02Mis" + + "sing name or generate_name\x02%s %s %s not found, please check service v" + + "ersion, current version: %s\x02Invalid data JSONObject\x02Object %s %s h" + + "as attached %s %s\x02project in non-default domain is prohibited\x02miss" + + "ing new domain\x02check name duplication error: %s\x02not enough privile" + + "ge to do %s:%s:%s (require:%s,allow:%s,query:%s)\x02Not support resource" + + " %s tag filter\x02Action %s not found, please check service version, cur" + + "rent version: %s\x02can't get string field\x02model has no field %s\x02Q" + + "uery database error %s\x02table %s not found\x02name starts with letter," + + " and contains letter, number and - only\x02resource (domain) tags not ma" + + "tch (tags:%s,require:%s)\x02resource (project) tags not match (tags:%s,r" + + "equire:%s)\x02resource tags not match (tags:%s,require:%s)\x02domain tag" + + "s not match (%s,require:%s)\x02project tags not match (%s,require:%s)" + + "\x02DIRECT setting cannot be changed\x02DIRECT setting cannot be deleted" + + "\x02get proxysetting refcount fail %s\x02proxysetting %s is still referr" + + "ed to by %d %s\x02fail to decode body\x02Quota %s not found\x02Default q" + + "uota %s not allow to delete\x02not enough privilleges\x02not allow to li" + + "st domain quotas\x02not allow to list project quotas\x02query quotas %s" + + "\x02not enough privilege (require:%s,allow:%s:resource:%s) [tags:%s]\x02" + + "not enough privilege (require:%s,allow:%s)\x02invalid scope %s\x02not al" + + "low create %s in scope %s\x02Not allow set scope to system\x02Not allow " + + "set scope to domain %s\x02Not allow set scope to project %s\x02sharing i" + + "s limited to domains %s\x02Insert shared resource failed %s\x02name star" + + "ts with letter, and contains letter, number and ._@- only\x02name longer" + + " than %d\x02input key too long > %d\x02input value too long > %d\x02not " + + "allow to set system key, please remove the underscore at the beginning" + + "\x02user %s not found\x02forbidden\x02non-admin user not allowed to crea" + + "te system object\x02Virtual resource freezed, can't do %s\x02virtual res" + + "ource already freezed\x02virtual resource not freezed\x02missing new pro" + + "ject/tenant\x02can't change owner for resource in project with class met" + + "adata\x02can't change resource's owner as that in project with class met" + + "adata\x02InformerBackend not init\x02invalid format\x02invalid input for" + + "mat\x02IPMI tool is null\x02Missing key error: missing %q\x02General err" + + "or: general error for %q: %s\x02Invalid type error: expecting %s type fo" + + "r %q: %s\x02Invalid choice error: invalid %q, want %s, got %s\x02Invalid" + + " length error: %q too short, got %d, min %d\x02Invalid length error: %q " + + "too long, got %d, max %d\x02Not in range error: invalid %q: %d, want [%d" + + ",%d]\x02Invalid value error: invalid %q: %s\x02Invalid value error: inva" + + "lid %q: %v\x04\x00\x01 \x22\x02Invalid value error: invalid %q: \x02Mode" + + "l manager error: failed getting model manager for %q\x02Model not found " + + "error: cannot find %q with id/name %q\x02Model not found error: cannot f" + + "ind %q with id/name %q: %s\x02invalid cert pubkey algorithm: %s, want %s" + + "\x02cannot support more than 1 nic\x02The system disk size must be in th" + + "e range of 20GB ~ 500Gb\x02The %s disk size must be in the range of %dGB" + + " ~ %dGB\x02%s requires that the eip bandwidth must be less than 100Mbps" + + "\x02network %s associated route table has no internet gateway attached." + + "\x02failed to find subformat vhd for image %s, please append 'vhd' for g" + + "lance options(target_image_formats)\x02Azure Mv2-series instance sku onl" + + "y support UEFI image\x02Azure UEFI image %s not support this instance sk" + + "u\x02Cannot change config for baremtal\x02Cannot resize disk for baremta" + + "l\x02Invalid raid config: %v\x02Host %s is not a baremetal\x02Baremetal " + + "%s is not ready\x02Baremetal %s is occupied\x02Cannot save image for bar" + + "emtal\x02Not Implement ValidateCreateEip\x02Not allow for hypervisor %s" + + "\x02Cann't online resize root disk\x02Cannot resize disk when guest in s" + + "tatus %s\x02Not supported, please use kubectl\x02Container not support %" + + "s\x02The number of cpu sockets cannot be greater than the number of cpus" + + "\x02%s not support create eip\x02can't resize disk for guest with instan" + + "ce snapshots\x02can't rebuild root for a guest with instance snapshots" + + "\x02Unknown google storage type %s\x02System disk does not support %s di" + + "sk\x02%s disk cannot exceed 8\x02%s for %s features are not compatible f" + + "or creating instance\x02%s not support create virtual machine with eip" + + "\x02invalid vnc port %d\x02the host %s loses its ip address\x02Host %s n" + + "ot found\x02Guest have backup, can't migrate\x02Cannot normal migrate gu" + + "est in status %s, try rescue mode or server-live-migrate?\x02Host status" + + " %s, can't do rescue mode migration\x02Rescue mode requires all disk sto" + + "re in shared storages\x02Cannot migrate with isolated devices\x02max ban" + + "dwidth must gratethan 100M\x02Cannot live migrate with cdrom\x02Cannot l" + + "ive migrate with isolated devices\x02Cannot do live migrate, too low qem" + + "u version\x02Guest %s can't hot remove nic\x02Cannot change disk storage" + + " in status %s\x02Cannot change disk storage in backup guest %s\x02Storag" + + "e %s not attached or enabled on host %s\x02unsupported vdi protocol %s" + + "\x02Invalid machine type %q for arch %q\x02invalid secgroup %s\x02can't " + + "sync guest os info in status %s\x02%s not support cdrom params\x02%s ser" + + "ver doesn't allow to set OS info\x02%s not support create eip, it only s" + + "upport bind eip\x02data disk not support storage type %s\x02The %s disk " + + "size must be in the range of 10GB ~ 16000GB\x02The %s disk size must be " + + "in the range of 10GB ~ 32000GB\x02The %s disk size must be in the range " + + "of 20GB ~ 32000GB\x02storage %s can not be data disk\x02Data disk size m" + + "ust be an integer multiple of 10G\x02failed to found system disk error: " + + "%v\x02failed to found storage for disk %s(%s)\x02The system disk is loca" + + "lly stored and does not support changing configuration\x02Not support cr" + + "eate local storage disks\x02Please input new disk backend type\x02The di" + + "sk is locally stored and does not support detach\x02Host %s is not onlin" + + "e\x02GetGuestCount fail %s\x02host has been occupied\x02Aliyun reset dis" + + "k required guest status is running or ready\x02Aws not support reset dis" + + "k, you can create new disk with snapshot\x02cannot support change azure " + + "disk name\x02Azure not support reset disk, you can create new disk with " + + "snapshot\x02not implement\x02Not Implement ValidateResetDisk\x02Not Impl" + + "ement ValidateAttachStorage\x02Not Implement RequestAttachStorage\x02Not" + + " Implement RequestDetachStorage\x02Disk must be dettached\x02%s reset di" + + "sk required guest status is running or ready\x02Server %s must in status" + + " ready\x02Disk must be detached\x02not supported\x02%s is not mount poin" + + "t %s\x02%s is local storage mount point\x02storage has no clvm_vg_name" + + "\x02Unsupport attach %s storage for %s host\x02Attach rbd storage requir" + + "e host status is online\x02Query host storage error %s\x02Host %s alread" + + "y have mount point %s with other storage\x02Attach nfs storage require h" + + "ost status is online\x02Disk attach muti guests\x02Disk attached guest s" + + "tatus must be ready\x02Disk dosen't attach guest\x02can not reset with d" + + "isk associate with guests\x02Qcloud reset disk required guest status is " + + "running or read\x02Ucloud reset disk operation required disk not be atta" + + "ched\x02Ucloud only support data disk reset operation\x02Volcengine rese" + + "t disk required guest status is running or read\x02ZStack reset disk ope" + + "ration requried guest status is ready\x02Parse remote ip error %s\x02Net" + + "work not found\x02Baremetal agent not found\x02Baremetal package not pre" + + "pared\x02not allow to delete default access group\x02access group not em" + + "pty, please delete mount target first\x02can not add rule for default ac" + + "cess group\x02not enough privilege\x02access group %s status is not avai" + + "lable\x02invalid source %s\x02Invalid priority %d, must be in range or 1" + + " ~ 100\x02invalid rw_access_type %s\x02invalid user_access_type %s\x02no" + + "t allow to delete default access group rule\x02WebApp has %d task active" + + ", can't sync status\x02Invalid storage type %s\x02nfs_host is required w" + + "hen storage type is nfs\x02nfs_shared_dir is required when storage type " + + "is nfs\x02object_bucket_url is required when storage type is object\x02i" + + "nvalid object_bucket_url %s: %s\x02object_access_key is required when st" + + "orage type is object\x02object_secret is required when storage type is o" + + "bject\x02BackupCount fail %s\x02storage has been used\x02Backup has %d t" + + "ask active, can't sync status\x02invalid bucket name(%s): %s\x02check ag" + + "ent uniqness fail %s\x02Conflict manager_uri %s\x02Duplicate manager_uri" + + " %s\x02missing duration/expire_time\x02expire time is before current exp" + + "ire at\x02invalid duration %s: %s\x02missing name\x02invalid bucket name" + + " %s: %s\x02no external bucket\x02missing key\x02fail to generate temp ur" + + "l: %s\x02empty directory name\x02invalid key %s: %s\x02GetIObject fail %" + + "s\x02object count limit exceeds\x02bucket.GetQuotaKeys %s\x02fail to mkd" + + "ir: %s\x02empty keys\x02object key should not ends with /\x02invalid obj" + + "ect key: %s\x02missing Content-Length\x02Illegal Content-Length %s\x02Co" + + "ntent-Length negative %d\x02GetIObject error %s\x02object size limit exc" + + "eeds\x02bucket.GetQuotaKeys fail %s\x02put object error %s\x02setAcl err" + + "or %s\x02syncWithCloudBucket error %s\x02Bucket has %d task active, can'" + + "t sync status\x02Buckets that are not empty do not support this operatio" + + "n\x02object %s not found\x02iBucket.GetIObjects error %s\x02iBucket.SetW" + + "ebsite error %s\x02iBucket.DeleteWebSiteConf error %s\x02iBucket.GetWebs" + + "iteConf error %s\x02cloudprovider.SetBucketCORS error %s\x02iBucket.Dele" + + "teCORS error %s\x02iBucket.GetCORSRules error %s\x02iBucket.GetCdnDomain" + + "s error %s\x02iBucket.SetRefer error %s\x02iBucket.GetRefer error %s\x02" + + "iBucket.GetPolicy error %s\x02iBucket.SetPolicy error %s\x02iBucket.Dele" + + "tePolicy error %s\x02unmarshal limit error %s\x02SetLimit error %s\x02Up" + + "date error %s\x02missing manager?\x02iBucket.GetIObject error %s\x02The " + + "image has been cached on storages\x02the image reference session has not" + + " been expired!\x02failed to found storagecache %s\x02not allow to query " + + "system capability\x02CDN is locked, cannot delete\x02%s not support cdn" + + "\x02CDN domain has %d task active, can't sync status\x02account %s not e" + + "nable saml auth\x02account is enabled\x02account is not idle\x02account " + + "has enabled provider\x02Cannot enable deleting account\x02%s not support" + + " saml auth\x02invalid proxy setting %s\x02Unsupported provider %s\x02Pro" + + "ject %s(%s) not belong to domain %s(%s)\x02Not support brand %s, only su" + + "pport %s\x02check uniqness fail %s\x02The account has been registered" + + "\x02no such provider %s\x02check account_id duplication error %s\x02the " + + "account has been registerd %s\x02Account disabled\x02Account is not idle" + + "\x02Unable to synchronize frequently\x02failed to found provider factory" + + " error: %v\x02invalid cloud account info error: %s\x02failed to unmarsha" + + "l input params: %v\x02check uniqueness fail %s\x02account %s conflict" + + "\x02inconsistent account_id, previous '%s' and now '%s'\x02project %s no" + + "t found\x02provider is shared outside of domain\x02invalid resource %s" + + "\x02%s not support\x02%s not support create subscription\x02valid wire_l" + + "evel_for_vmware, accept vcenter, datacenter, cluster\x02not support for " + + "cloudaccount with provider '%s'\x02not allow to create\x02provider is en" + + "abled\x02provider is not idle\x02Directly creating cloudprovider is not " + + "supported, create cloudaccount instead\x02Region %s not found\x02Zone %s" + + " not found\x02Cloudprovider disabled\x02Cloudaccount disabled\x02not all" + + "ow to change project across domain\x02cannot change to a different domai" + + "n from a private cloud account\x02fail to get provider driver %s\x02stor" + + "age classes not supported\x02cloudprovider %s has aleady bind project ma" + + "pping %s\x02not allow to delete default cloud region\x02not empty cloud " + + "region\x02VPC %s not found\x02Cannot update external resource\x02not all" + + "ow update rds account name\x02failed to found dbinstance %s\x02DBInstanc" + + "e %s(%s) status is %s require status is %s\x02failed to found dbinstance" + + " %s(%s) database %s: %v\x02Failed to found database %s for dbinstance %s" + + "(%s): %v\x02The account %s(%s) has permission %s to the database %s(%s)" + + "\x02Account status is not %s current status is %s\x02Instance status is " + + "not %s current status is %s\x02Database status is not %s current is %s" + + "\x02Account %s(%s) does not have database %s(%s) permissions\x02DBinstan" + + "ce has not valid cloudprovider\x02DBInstance backup has %d task active, " + + "can't sync status\x02not allow update rds database name\x02failed to fou" + + "nd dbinstance %s(%s) account %s: %v\x02Not Implemented\x02invalid addres" + + "s: %s\x02Ip %s not in network %s(%s) range\x02cloudprovider %s(%s) is no" + + "t available\x02invalid duration %s\x02unsupported duration %s\x02cloudre" + + "gion %s not support create rds\x02cloudregion %s not support create %s r" + + "ds\x02not match any dbinstance sku\x02%s rds not support secgroup\x02%s " + + "rds Support up to %d security groups\x02Cannot do recovery dbinstance in" + + " status %s required status %s\x02backup %s(%s) not contain database %s" + + "\x02conflict database %s for instance %s(%s)\x02back and instance not in" + + " same cloudaccount\x02backup and instance not in same cloudregion\x02can" + + " not recover data from diff rds engine\x02Cannot do reboot dbinstance in" + + " status %s\x02DBInstance has %d task active, can't sync status\x02Cannot" + + " do renew dbinstance in status %s required status %s\x02missong duration" + + "\x02The dbinstance status need be %s, current is %s\x02Only %s dbinstanc" + + "e support this operation\x02DBInstance has opened the outer network conn" + + "ection\x02The extranet connection is not open\x02%s not support this ope" + + "ration\x02Cannot change config in status %s\x02DBInstance Disk cannot be" + + " thrink\x02DBInstance is locked, cannot delete\x02dbinstance billing typ" + + "e is %s\x02dbinstance billing type %s not support cancel expire\x02this " + + "operation requires rds state to be %s\x02%s supported secgroup count is " + + "%d\x02Cannot delete disk backup in status %s\x02disk backup referenced b" + + "y instance backup\x02disk %s status is not %s\x02can't backup guest to b" + + "ackup storage with status %s\x02not support update disk_type %s\x02faile" + + "d to find storage for disk %s\x02failed to find host for storage %s with" + + " disk %s\x02disk create from existing disk must give storage\x02Storage " + + "%s not found\x02cloudprovider %s not available\x02storage %s(%s) need on" + + "line and attach host for create disk\x02Cannot create disk with disabled" + + " storage[%s]\x02Cannot create disk with offline storage[%s]\x02Storage t" + + "ype[%s] not match backend %s\x02Disk create from existing path, unsuppor" + + "t storage type %s\x02Storage[%s] must attach to a host\x02Not enough fre" + + "e space\x02Fetch snapshot count failed %s\x02Disk %s don't need convert " + + "snapshots\x02Can not get disk snapshot\x02Get convert snapshot failed: %" + + "s\x02Snapshot %s dose not have convert snapshot\x02Cannot reset disk in " + + "status %s\x02Cannot reset disk with snapshot in status %s\x02Cannot rese" + + "t disk %s(%s),Snapshot is belong to disk %s\x02Resize disk when disk is " + + "READY\x02Disk cannot be thrink\x02disk has no valid storage\x02disk.GetQ" + + "uotaKeys fail %s\x02No zone for this disk\x02Duplicate image name %s\x02" + + "Save disk when disk is READY\x02GetRuningGuestCount fail %s\x02Save disk" + + " when not being USED\x02Image name is required\x02Virtual disk %s(%s) us" + + "ed by virtual servers\x02not allow to delete prepaid disk in valid statu" + + "s\x02storage of disk %s no valid host\x02GetGuestDiskCount for disk %s f" + + "ail %s\x02Diskinfo index %d: both imageID and size are absent\x02Snapsho" + + "t %s not found\x02Snapshot %s storage %s not found, is public cloud?\x02" + + "Backup %s not found\x02Image status is not active\x02storage type %s req" + + "uire assign isolated device\x02Disk has %d task active, can't sync statu" + + "s\x02GetSnapshotCount fail %s\x02not allow to purge. Virtual disk must n" + + "ot have snapshots\x02not allow to delete. Virtual disk must not have sna" + + "pshots\x02not allow to delete %s disk with snapshots\x02The snapshot pol" + + "icy %s and disk account are different\x02The snapshot policy %s and the " + + "disk are in different region\x02invalid record name %s\x02duplicated wit" + + "h CNAME dnsrecord name not support\x02invalid domain name %s\x02conflict" + + " cloudprovider %s with vpc %s\x02Not support %s for vpc %s, supported %s" + + "\x02Not support %s for account %s, supported %s\x02top level public doma" + + "in name %s not support\x02unknown zone type %s\x02dns zone can not uncac" + + "he in status %s\x02Only %s support cache for account\x02vpc %s has alrea" + + "dy in this dns zone\x02vpc %s not same with dns zone account\x02vpc %s n" + + "ot in dns zone\x02schedtag %s not found\x02unmarshal StandaloneResourceC" + + "reateInput fail %s\x02Resource type %s not support\x02Virtual resource t" + + "ype %s not support\x02%s %s not found\x02ElasticSearch is locked, cannot" + + " delete\x02ElasticSearch has %d task active, can't sync status\x02can't " + + "restore elastic cache in status %s\x02unsupport delete %s backups\x02inv" + + "alid private ip %s\x02invalid billing_cycle %s\x02Cannot do restart elas" + + "ticcache instance in status %s\x02Elastic cache is locked, cannot delete" + + "\x02Elastic cache is not expired, cannot delete\x02region mismatch: inst" + "ance region %s, sku region %s\x02zone mismatch: instance zone %s, sku zo" + "ne %s\x02engine version mismatch: instance version %s, sku version %s" + "\x02can not change specification in status %s\x02auth mode aready in sta" + @@ -2699,465 +2732,464 @@ const en_USData string = "" + // Size: 62119 bytes "illing type is %s\x02elasticcache billing type %s not support cancel exp" + "ire\x02Cannot add security groups in status %s\x02region\x02regiondriver" + "\x02not supported bind security group\x02beyond security group quantity " + - "limit, max items %d.\x02The secgroup name %s does not meet the requireme" + - "nts, please change the name\x02secgroups will be empty after update.\x02" + - "The elastic cache status need be %s, current is %s\x02Only %s elastic ca" + - "che support set auto renew operation\x02elastic cache no related region " + - "found\x02Only %s elastic cache support renew operation\x02%s is not modi" + - "fiable\x02resource %s in vpc %s external access mode %s is not support a" + - "ccociate eip\x02server %s not found\x02Not support associate type %s, on" + - "ly support %s\x02charge type %s not supported\x02eip has been associated" + - " with instance\x02eip cannot associate in status %s\x02fixed eip cannot " + - "be associated\x02Unsupported instance type %s\x02cannot associate pendin" + - "g delete server\x02instance is already associated with eip\x02cannot ass" + - "ociate server in status %s\x02cannot associate eip with same network\x02" + - "server region is not found???\x02eip and server are not in the same regi" + - "on\x02eip and server are not in the same zone\x02server host is not foun" + - "d???\x02server and eip are not managed by the same provider\x02instance " + - "group %s not found\x02cannot associate eip and instance in different zon" + - "e\x02nat gateway %s not found\x02eip cannot dissociate in status %s\x02f" + - "ixed public eip cannot be dissociated\x02fixed eip cannot sync status" + - "\x02no usable eip network\x02cannot change bandwidth in status %s\x02Inv" + - "alid bandwidth\x02Cannot purge elastic_ip on enabled cloud provider\x02a" + - "ccount %s not share for domain %s\x02FileSystem is locked, cannot delete" + - "\x02Nas has %d task active, can't sync status\x02GetVpcs fail %s\x02glob" + - "al vpc has associate %d vpcs\x02Globalvpc has %d task active, can't sync" + - " status\x02please retry after unbind all guests in group\x02can not bind" + - " guest from disabled guest\x02can not unbind guest from disabled guest" + - "\x02no such model %s\x02guest and instance group should belong to same p" + - "roject\x02eip %s not found\x02eip has been associated\x02Out of eip quot" + - "a: %s\x02No eip to dissociate\x02host status %s and enabled %v, can't do" + - " server %s\x02Cannot send command in status %s\x02No host for server\x02" + - "Cannot save image in status %s\x02No root image\x02Support only by KVM H" + - "ypervisor\x02Cannot sync in status %s\x02Cannot live migrate in status %" + - "s\x02cannot clone encrypted server\x02Can't clone guest with backup gues" + - "t\x02Guest hypervisor %s does not support clone\x02Cannot clone VM in st" + - "atus %s\x02Unmarshal input error %s\x02update keypairId %v\x02Cannot dep" + - "loy in status %s\x02Disk %s and guest not belong to the same account\x02" + - "Disk %s and guest not belong to the same zone\x02isAttached check failed" + - " %s\x02Disk %s has been attached\x02Disk %s not belong the guest's host" + - "\x02Disk in %s not able to attach\x02Guest %s not support attach disk in" + - " status %s\x02the class metadata of guest and disk is different\x02Canno" + - "t suspend VM in status %s\x02Cannot resume VM in status %s\x02host virtu" + - "al memory not enough\x02Some disk not ready\x02Cannot do start server in" + - " status %s\x02CD-ROM not empty, please eject first\x02Insert ISO not all" + - "owed in status %s\x02No ISO to eject\x02Eject ISO not allowed in status " + - "%s\x02Cannot add security groups for hypervisor %s\x02guest %s band to u" + - "p to %d security groups\x02security group %s has already been assigned t" + - "o guest %s\x02Cannot revoke security groups in status %s\x02security gro" + - "up %s not assigned to guest %s\x02not allow to revoke admin secgroup\x02" + - "Cannot assign security rules in status %s\x02not allow to assign admin s" + - "ecgroup\x02Cannot set security rules in status %s\x02Cannot set security" + - " group for this guest %s\x02Cannot purge server on enabled host\x02faile" + - "d to find %s\x02root disk image(%s) and sku(%s) architecture mismatch" + - "\x02invlid image\x02image size exceeds root disk size\x02Cannot switch O" + - "S between %s-%s\x02Can not rebuild root with with diff uefi image\x02No " + - "template for root disk, cannot rebuild root\x02%s not support rebuild ro" + - "ot with a different image\x02Cannot reset root in status %s\x02No Disk I" + - "nfo Provided\x02No valid host\x02No valid storage on current host\x02Not" + - " eough storage space on current host\x02check isAttach2Disk fail %s\x02C" + - "annot keep detached disk\x02Server in %s not able to detach disk\x02Miss" + - "ing isolated device\x02Isolated device %s not found\x02Can't detach GPU " + - "when status is %q\x02Isolated device is not attached to this guest\x02gu" + - "est attach gpu count must > 0\x02fetch gpu failed %s\x02guest %s host %s" + - " isolated device not enough\x02Can't attach GPU when status is %q\x02Can" + - "'t set isolated device when guest is %s\x02attach devices is not string " + - "array\x02detach devices is not string array\x02ip %s not found\x02mac %s" + - " not found\x02no either ip_addr or mac specified\x02Cannot change networ" + - "k ip_addr in status %s\x02cannot change mac when guest is running\x02che" + - "ck mac uniqueness fail %s\x02mac addr %s has been occupied\x02Cannot det" + - "ach network in status %s\x02Cannot attach network in status %s\x02Cannot" + - " change bandwidth in status %s\x02Bandwidth must be non-negative\x02Cann" + - "ot change setting in status %s\x02Not allow to change config\x02Guest ha" + - "ve backup not allow to change config\x02Cannot change config in %s\x02Ca" + - "nnot change config with different instance family\x02Memory size must be" + - " number[+unit], like 256M, 1G or 256\x02Params vmem_size parse error\x02" + - "cannot change CPU/Memory spec in status %s\x02snapshot %s not found\x02C" + + "limit, max items %d.\x02secgroups will be empty after update.\x02The ela" + + "stic cache status need be %s, current is %s\x02Only %s elastic cache sup" + + "port set auto renew operation\x02elastic cache no related region found" + + "\x02Only %s elastic cache support renew operation\x02%s is not modifiabl" + + "e\x02resource %s in vpc %s external access mode %s is not support accoci" + + "ate eip\x02server %s not found\x02Not support associate type %s, only su" + + "pport %s\x02charge type %s not supported\x02eip has been associated with" + + " instance\x02eip cannot associate in status %s\x02fixed eip cannot be as" + + "sociated\x02Unsupported instance type %s\x02cannot associate pending del" + + "ete server\x02instance is already associated with eip\x02cannot associat" + + "e server in status %s\x02cannot associate eip with same network\x02serve" + + "r region is not found???\x02eip and server are not in the same region" + + "\x02eip and server are not in the same zone\x02server host is not found?" + + "??\x02server and eip are not managed by the same provider\x02instance gr" + + "oup %s not found\x02cannot associate eip and instance in different zone" + + "\x02nat gateway %s not found\x02loadbalancer %s not found\x02cannot asso" + + "ciate with pending deleted loadbalancer\x02loadbalancer is already assoc" + + "iated with eip\x02eip cannot dissociate in status %s\x02fixed public eip" + + " cannot be dissociated\x02fixed eip cannot sync status\x02no usable eip " + + "network\x02cannot change bandwidth in status %s\x02Invalid bandwidth\x02" + + "Cannot purge elastic_ip on enabled cloud provider\x02account %s not shar" + + "e for domain %s\x02FileSystem is locked, cannot delete\x02Nas has %d tas" + + "k active, can't sync status\x02GetVpcs fail %s\x02global vpc has associa" + + "te %d vpcs\x02Globalvpc has %d task active, can't sync status\x02please " + + "retry after unbind all guests in group\x02can not bind guest from disabl" + + "ed guest\x02can not unbind guest from disabled guest\x02no such model %s" + + "\x02guest and instance group should belong to same project\x02eip %s not" + + " found\x02eip has been associated\x02Out of eip quota: %s\x02No eip to d" + + "issociate\x02host status %s and enabled %v, can't do server %s\x02Cannot" + + " send command in status %s\x02No host for server\x02Cannot save image in" + + " status %s\x02No root image\x02Support only by KVM Hypervisor\x02Cannot " + + "sync in status %s\x02Cannot live migrate in status %s\x02can't convert g" + + "uest in status %s\x02cannot set migrate params in status %s\x02empty inp" + + "ut\x02cannot clone encrypted server\x02Can't clone guest with backup gue" + + "st\x02Guest hypervisor %s does not support clone\x02Cannot clone VM in s" + + "tatus %s\x02Unmarshal input error %s\x02update keypairId %v\x02Cannot de" + + "ploy in status %s\x02Disk %s and guest not belong to the same account" + + "\x02Disk %s and guest not belong to the same zone\x02isAttached check fa" + + "iled %s\x02Disk %s has been attached\x02Disk %s not belong the guest's h" + + "ost\x02Disk in %s not able to attach\x02Guest %s not support attach disk" + + " in status %s\x02the class metadata of guest and disk is different\x02bo" + + "ot index %d is duplicated\x02Cannot suspend VM in status %s\x02Cannot re" + + "sume VM in status %s\x02host virtual cpu not enough\x02host virtual memo" + + "ry not enough\x02Some disk not ready\x02Cannot do start server in status" + + " %s\x02invalid cdrom_ordinal: %d\x02CD-ROM not empty, please eject first" + + "\x02Insert ISO not allowed in status %s\x02No ISO to eject\x02Eject ISO " + + "not allowed in status %s\x02invalid floppy_ordinal: %d\x02Floppy not emp" + + "ty, please eject first\x02No VFD to eject\x02Cannot purge server on enab" + + "led host\x02failed to find %s\x02root disk image(%s) and sku(%s) archite" + + "cture mismatch\x02invlid image\x02image size exceeds root disk size\x02C" + + "annot switch OS between %s-%s\x02Can not rebuild root with with diff uef" + + "i image\x02No template for root disk, cannot rebuild root\x02%s not supp" + + "ort rebuild root with a different image\x02Cannot reset root in status %" + + "s\x02Cannot reset root with %s\x02No Disk Info Provided\x02No valid host" + + "\x02No valid storage on current host\x02Not eough storage space on curre" + + "nt host\x02check isAttach2Disk fail %s\x02Cannot keep detached disk\x02S" + + "erver in %s not able to detach disk\x02Missing isolated device\x02Isolat" + + "ed device %s not found\x02Isolated device is not attached to this guest" + + "\x02guest attach gpu count must > 0\x02fetch gpu failed %s\x02guest %s h" + + "ost %s isolated device not enough\x02Can't separately attach dev type %s" + + "\x02dev type %s model %s unhotpluggable\x02Nvidia vgpu count exceed > 1" + + "\x02Nvidia vgpu can't passthrough with other gpus\x02Can't attach GPU wh" + + "en status is %q\x02Can't set isolated device when guest is %s\x02attach " + + "devices is not string array\x02detach devices is not string array\x02ip " + + "%s not found\x02mac %s not found\x02no either ip_addr or mac specified" + + "\x02Cannot change network ip_addr in status %s\x02cannot change mac when" + + " guest is running\x02check mac uniqueness fail %s\x02mac addr %s has bee" + + "n occupied\x02Cannot detach network in status %s\x02Cannot attach networ" + + "k in status %s\x02Cannot create backup with isolated device\x02parse iso" + + "lated device description error %s\x02Cannot change bandwidth in status %" + + "s\x02Bandwidth must be non-negative\x02Cannot change setting in status %" + + "s\x02Not allow to change config\x02Guest have backup not allow to change" + + " config\x02Cannot change config in %s for %s, requires %s\x02Cannot chan" + + "ge config with different instance family\x02Memory size %q must be numbe" + + "r[+unit], like 256M, 1G or 256\x02Params vmem_size parse error\x02cannot" + + " change CPU/Memory spec in power status %s\x02snapshot %s not found\x02C" + "annot reduce disk size\x02Cannot reset VM in status %s\x02Guest has %d t" + "ask active, can't sync status\x02Cannot stop server in status %s\x02Cann" + "ot do restart server in status %s\x02Cannot send keys in status %s\x02ca" + - "nnot associate eip in status %s\x02cannot associate eip and instance in " + - "different region\x02cannot associate eip and instance in different provi" + - "der\x02Cannot swith to backup when guest in status %s\x02Guest no backup" + - " host\x02Guest can't switch to backup, mirror job not ready\x02failed to" + - " found guest %s\x02input data not key value dict\x02Guest %s not found" + - "\x02Fetch guest error %s\x02Already have backup server\x02Cannot create " + - "backup with shared storage\x02Backup only support hypervisor kvm\x02Cann" + - "ot create backup with isolated devices\x02GuestDisksHasSnapshot fail %s" + - "\x02Cannot create backup with snapshot\x02Guest without backup\x02Guest " + - "backup host not found\x02Backup host is offline\x02guest doesn't need re" + - "concile backup\x02guest billing type %s not support cancel expire\x02gue" + - "st billing type is %s\x02guest %s unsupport postpaid expire\x02Invalid d" + - "esc: %s\x02Server Id is empty\x02Server Name is empty\x02Server %s alrea" + - "dy exists\x02Empty import nics\x02ip %s or mac %s has been registered" + + "nnot associate eip and instance in different region\x02cannot associate " + + "eip and instance in different provider\x02Cannot swith to backup when gu" + + "est in status %s\x02Guest no backup host\x02Can't switch to backup host " + + "on host status %s\x02Guest can't switch to backup, mirror job not ready" + + "\x02Guest can't switch to backup with backup status %s\x02failed to foun" + + "d guest %s\x02input data not key value dict\x02disk %s not found\x02Gues" + + "t %s not found\x02Fetch guest error %s\x02Already have backup server\x02" + + "Can't create backup in guest status %s\x02Cannot create backup with shar" + + "ed storage\x02Backup only support hypervisor kvm\x02Cannot create backup" + + " with isolated devices\x02GuestDisksHasSnapshot fail %s\x02Cannot create" + + " backup with snapshot\x02Guest without backup\x02Guest backup host not f" + + "ound\x02Backup host is offline\x02guest has no backup guest\x02can't sta" + + "rt backup guest on host status %s\x02can't start backup guest on backup " + + "guest status %s\x02guest billing type %s not support cancel expire\x02gu" + + "est billing type is %s\x02guest %s unsupport postpaid expire\x02Invalid " + + "desc: %s\x02Server Id is empty\x02Server Name is empty\x02Server %s alre" + + "ady exists\x02Empty import nics\x02ip %s or mac %s has been registered" + "\x02Not found network by ip %s\x02Empty import disks\x02Unmarshal data e" + "rror %s\x02Some host config missing xml_file_path\x02Some host config mi" + "ssing host ip\x02Invalid host ip %s\x02Invalid server mac address %s\x02" + "Invalid server ip address %s\x02NewTask error: %s\x02Hypervisor %s can't" + - " generate libvirt xml\x02Generate xml failed: %s\x02not support hypervis" + - "or %s\x02not support %s\x02guest has been converted\x02host %s is not kv" + - "m host\x02guest status must be ready\x02Check set pending quota error %s" + - "\x02host not found???\x02empty ip list\x02Unreachable IP %s: %s\x02Unava" + - "ilable IP %s: occupied\x02the disk of a esxi virtual machine with instan" + - "ce snapshots does not support resizing\x02disk %s not attached to server" + - "\x02Hypervisor %s can't do io throttle\x02Cannot do io throttle in statu" + - "s %s\x02bps must > 0\x02iops must > 0\x02guest %s hypervisor %s can't mi" + - "grate\x02guest %s has backup, can't migrate\x02guest %s has isolated dev" + - "ice, can't migrate\x02can't rescue geust %s with local storage\x02guest " + - "%s status %s can't migrate\x02cannot migrate with cdrom\x02guest %s stat" + - "us %s can't migrate with local storage\x02missing guest id\x02Check inpu" + - "t guests is exist\x02guest hypervisor %s can't create instance snapshot" + - "\x02Can't do instance snapshot with backup guest\x02guest can't do snaps" + - "hot in status %s\x02guests disk %d snapshot full, can't take anymore\x02" + - "Can't save memory state when guest status is %q\x02create instance snaps" + - "hot failed: %s\x02start create snapshot task failed: %s\x02create instan" + - "ce backup failed: %s\x02start create backup task failed: %s\x02instance " + - "snapshot %q not belong server %q\x02Instance snapshot not ready\x02Insta" + - "nce snapshot not with memory statefile\x02start snapshot reset failed %s" + - "\x02cannot snapshot and clone encrypted server\x02count must > 0\x02Gene" + - "rate snapshot name failed %s\x02not a baremetal server\x02no valid host" + - "\x02host is not a baremetal\x02no such group %s\x02group and guest shoul" + - "d belong to same project\x02can not bind or unbind disabled instance gro" + - "up\x02The guest %s does not have any public IP\x02The guest status need " + - "be %s or %s, current is %s\x02The %s guest not support public ip to eip " + - "operation\x02Only %s guest support this operation\x02guest has no vpc ip" + - "\x02Disk id is empty\x02Storage id is empty\x02Disk %s not found on serv" + - "er %s\x02Host cores %v not contains input %v\x02More than one of input c" + - "ores %v already set in host %v\x02server sshable state can only be check" + - "ed when in running state\x02fetch ssh private key: %v\x02fetch network i" + - "nterface information: %v\x02make-sshable can only be performed when in r" + - "unning state\x02missing username\x02private_key and password cannot both" + - " be empty\x02fetch project public key: %v\x02fetch admin public key: %v" + - "\x02searching for usable ssh address: %v\x02no usable ssh address\x02inv" + - "alid port\x02no support for instance snapshot in guest template for now" + - "\x02there is no such secgroup %s descripted by guest template\x02the %s " + - "in guest template is not a public resource\x02the %s %q in guest templat" + - "e is not a public resource\x02the %s in guest template is not a public r" + - "esource in %s scope\x02the %s %q in guest template is not a public resou" + - "rce in %s scope\x02guest template %s used by service catalog %s\x02guest" + - " template %s used by scalig group %s\x02check disk index uniqueness fail" + - " %s\x02DISK Index %d has been occupied\x02cannot allocate ifname\x02chec" + - "kout nic index uniqueness fail %s\x02NIC Index %d has been occupied\x02h" + - "ost %s not found\x02secgroup %s not found\x02disk %s not found\x02checko" + - "ut guestdisk count fail %s\x02unknown server type %s\x02group %s not fou" + - "nd\x02Virtual server is locked, cannot delete\x02not allow to delete pre" + - "paid server in valid status\x02Cannot delete server on disabled host\x02" + - "Cannot delete server on offline host\x02Memory size must be 8MB ~ %d GB" + - "\x02CPU core count must be 1 ~ %d\x02name is too short\x02can't find ins" + - "tance snapshot %s\x02fetch instance snapshot error %s\x02there are no di" + - "sks in this instance snapshot, try another one\x02can't find instance ba" + - "ckup %s\x02fetch instance backup error %s\x02Instance backup not ready" + - "\x02there are no disks in this instance backup, try another one\x02metda" + - "ta must less then 20\x02login_account is longer than 32 chars\x02No boot" + - "able disk information provided\x02Invalid root image: %s\x02System disk " + - "does not support iso image, please consider using cdrom parameter\x02par" + - "se cdrom device info error %s\x02UEFI image requires UEFI boot mode\x02U" + - "EFI boot mode requires UEFI image\x02Miss operating system???\x02sku %s " + - "not indicate attached disk size\x02sku %s not indicate attached disk bac" + - "kend\x02parse disk description error %s\x02Snapshot error: disk index %d" + - " > 0 but disk type is %s\x02cannot create prepaid server on prepaid reso" + - "urce type\x02parse network description error %s\x02Cannot create backup " + - "with isolated device\x02parse isolated device description error %s\x02Ke" + - "ypair %s not found\x02Secgroup %s not found\x02%s shall bind up to %d se" + - "curity groups\x02Invalid userdata: %v\x02invalid parameters for policy d" + - "efinition %s\x02policy definition %s require cloudregion in %s\x02policy" + - " definition %s require cloudregion not in %s\x02invalid policy definitio" + - "n %s(%s) condition %s\x02policy definition %s require must contains tag " + - "%s\x02policy definition %s require except tag %s\x02invalid category %s " + - "for policy definition %s(%s)\x02public ip not supported for %s\x02invali" + - "d public_ip_charge_type %s\x02eip not supported for %s\x02eip %s status " + - "invalid %s\x02eip %s has been associated\x02cannot assoicate with eip %s" + - ": different cloudprovider\x02cannot assoicate with eip %s: different reg" + - "ion\x02already associate with eip\x02fetch disk size failed\x02image %s " + - "do not belong to guest image %s\x02miss some subimage of guest image\x02" + - "Baremetal %s not enabled\x02cannot run hypervisor %s on specified host w" + - "ith type %s\x02no valid storage on host\x02invalid aggregate_strategy: %" + - "s\x02Wire %s not found\x02Hypervisor %s not supported\x02cannot recycle " + - "in status %s\x02cannot undo recycle in status %s\x02host should be disab" + - "led\x02host is not a prepaid recycle host\x02cannot delete a recycle hos" + - "t without active instance\x02a recycle host shoud not allocate more than" + - " 1 guest\x02cannot undo a recycle host with pending_deleted guest\x02Not" + - " a prepaid recycle host\x02hostname cannot be number %d\x02Windows hostn" + - "ame cannot be longer than %d characters\x02the hostname length must be g" + - "reater than or equal to 2\x02invalid any_mac address\x02Schedtag %s not " + - "found\x02not supported hypervisor %s\x02Host is a converted baremetal, s" + - "hould be unconverted before delete\x02Host is not disabled\x02getGuestCo" + - "unt fail %s\x02Not an empty host\x02GetDiskCount fail %s\x02Local host s" + - "torage is not empty???\x02Inconsistent: local storage is not empty???" + - "\x02No ipmi information was found for host %s\x02IPMI has no password in" + - "formation\x02check %s duplication fail %s\x02duplicate %s %s\x02invalid " + - "macAddr %s\x02check access_mac duplication fail %s\x02duplicate access_m" + - "ac %s\x02%s is out of network IP ranges\x02IPMI network has no zone???" + - "\x02IPMI address located in different zone than specified\x02Access ip %" + - "s has been used\x02Access network has no zone???\x02Access address locat" + - "ed in different zone than specified\x02missing access_mac and uuid in no" + - "_probe mode\x02IPMI network has not zone???\x02New IPMI address located " + - "in another zone!\x02Cannot start a non-baremetal host\x02Cannot start ba" + - "remetal with active guest\x02Cannot stop a non-baremetal host\x02Cannot " + - "stop baremetal with non-active guest\x02Cannot stop baremetal with activ" + - "e guest\x02Cannot do maintenance in status %s\x02Cannot do maintenance w" + - "hile guest status %s\x02Cannot do unmaintenance in status %s\x02Wrong gu" + - "est status %s\x02not a baremetal\x02need valid access_mac and uuid to do" + - " prepare\x02Cannot prepare baremetal in status %s\x02Cannot prepare bare" + - "metal in server status %s\x02Cannot do Ipmi-probe in status %s\x02Cannot" + - " do initialization in status %s\x02IPMI infomation not configured\x02Gue" + - "st Insert error: %s\x02Invaild mac address\x02find Wire %s error: %s\x02" + - "invalid ipaddr %s\x02no networks on wire %s\x02IP %s not attach to wire " + - "%s\x02IP %s not attach to any wire\x02fail to fetch netif by mac %s: %s" + - "\x02fail to fetch hostwire by mac %s: %s\x02Interface %s not exist\x02On" + - "ly ADMIN and IPMI nic can be enable\x02Interface %s not exists\x02Not a " + - "baremetal\x02Not being convert to hypervisor\x02Not found baremetal serv" + - "er record\x02Not found guest nic by mac %s\x02Guest nic ip addr %s not e" + - "qual %s\x02Invalid mac address\x02Fetch netif error %s\x02Cannot sync st" + - "atus a non-baremetal host\x02Cannot reset baremetal in status %s\x02Cann" + - "ot reset baremetal with active guest\x02Cannot perform cache image in st" + - "atus %s\x02image %s not found\x02Cannot cache image with no checksum\x02" + - "host_type must be specified\x02Must be a baremetal host\x02Baremetal hos" + - "t is aleady occupied\x02Connot convert hypervisor in status %s\x02requir" + - "e system previleges to convert host in other domain\x02Unsupport driver " + - "type %s\x02isAlterNameUnique fail %s\x02Convert error: %s\x02Host should" + - " be disabled\x02Cannot unconvert in status %s\x02Not an converted hyperv" + - "isor\x02host status %s can't exit maintenance\x02host type %s can't do h" + - "ost maintenance\x02unsupport on host status %s\x02Host %s can't migrate " + - "guests %s in status %s\x02Cannot do insert-iso in status %s\x02Cannot do" + - " eject-iso in status %s\x02Cannot sync config a non-baremetal host\x02re" + - "served cpu must >= 0\x02reserved memory must >= 0\x02reserved storage mu" + - "st >= 0\x02host %s can't reserve %d cpu for each isolated device, not en" + - "ough\x02host %s can't reserve %dM memory for each isolated device, not e" + - "nough\x02host %s can't reserve %dM storage for each isolated device, not" + - " enough\x02Only system admin can assign host\x02StorageInUse\x02GetGuest" + - "DiskCount fail %s\x02GetGuestnicsCount fail %s\x02guest on the host are " + - "using networks on this wire\x02can't delete instance snapshot with wrong" + - " status\x02unable to fetch backupStorage %s\x02InstanceBackup has %d tas" + - "k active, can't sync status\x02vpc joint interVpcNetwork on different cl" + - "oudprovider is not supported\x02vpc joint interVpcNetwork on different c" + - "loudEnv is not supported\x02vpc %s already connected to a interVpcNetwor" + - "k\x02vpc %s is not connected to this interVpcNetwork\x02dev_type is empt" + - "y\x02device type %q not supported\x02Isolated device used by server\x02I" + - "solatedDevice %s not found\x02Isolated device already attached to anothe" + - "r guest: %s\x02Isolated device used by server: %s\x02Kafka is locked, ca" + - "nnot delete\x02Kafka has %d task active, can't sync status\x02Unsupporte" + - "d scheme %s\x02invalid public error: %v\x02GetLinkedGuestsCount failed %" + - "s\x02Cannot delete keypair used by servers\x02invalid addr %s\x02comment" + - " too long (%d>=%d)\x02comment contains non-printable char: %v\x02acl cid" + - "r duplicate %s\x02unmarshal SharableVirtualResourceCreateInput fail %s" + - "\x02get acl count fail %s\x02acl %s is still referred to by %d %s\x02inv" + - "alid vrrp interface %q\x02invalid vrrp authentication pass size: %d, wan" + - "t [1,8]\x02invalid vrrp priority %d: want [1,255]\x02invalid vrrp virtua" + - "l_router_id %d: want [1,255]\x02invalid vrrp advert_int %d: want [1,255]" + - "\x02telegraf params: invalid influxdb url: %s\x02%s: bad base64 encoded " + - "string: %s\x02%s: bad template: %s\x02fetch lbagents of other clusters: " + - "%v\x02conflict with lbagent %s(%s): %v\x02lbcluster %s(%s) already has v" + - "irtual_router_id %d\x02%s: time error: %s\x02%s: new time is in the futu" + - "re: %s > %s\x02peer lbagent %s(%s) already has vrrp priority %d\x02use y" + - "um requires valid repo_base_url\x02empty host name\x02find host %s: %v" + - "\x02lbagent cannot be deployed on managed host\x02find guest %s: %v\x02l" + - "bagent cannot be deployed on public guests\x02server is in %q state, wan" + - "t %q\x02unmarshal input: %v\x02host missing %s field\x02empty host %s fi" + - "eld\x02authenticate error: %v\x02user must have system admin privileges" + - "\x02get %s service %s url: %v\x02No previous deployment info available" + - "\x02query backend group releated resource failed.\x02unmarshal VirtualRe" + - "sourceCreateInput fail %s\x02weight %d not support, only support range 0" + - " ~ 256\x02port %d not support, only support range 1 ~ 65535\x02failed to" + - " find guest %s\x02only sysadmin can specify host as backend\x02failed to" + - " find host %s\x02unexpected backend type %s\x02region of backend %d does" + - " not match that of lb's\x02get isDefault fail %s\x02backend group %s is " + - "default backend group\x02get refCount fail %s\x02backend group %s is sti" + - "ll referred by %d %s\x02%s requires the virtual machine state to be %s b" + - "efore it can be added backendgroup, but current state of the virtual mac" + - "hine is %s\x02guest %s(%s) vpc %s(%s) not same as loadbalancer vpc %s" + - "\x02failed getting guest %s\x02guest %s(%s) vpc %s(%s) not same as vpc %" + - "s(%s)\x02guest %s(%s) is already in the backendgroup %s(%s)\x02the acl c" + - "ache in region %s aready exists.\x02get certificate refcount fail %s\x02" + - "certificate %s is still referred to by %d %s\x02invalid local certificat" + - "e, private key is empty.\x02invalid local certificate, certificate is em" + - "pty.\x02the certificate cache in region %s aready exists.\x02not allowed" + - " update content of certificate\x02allow only internal zone, got %s(%s)" + - "\x02wire zone must match zone parameter, got %s, want %s(%s)\x02zone of " + - "wire must be %s, got %s\x02get lbcluster refcount fail %v\x02lbcluster %" + - "s(%s) is still referred to by %d %s\x04\x00\x01 A\x02lbclusters %s(%s) a" + - "nd %s(%s) has conflict virtual_router_id: %d \x02invalid conditions form" + - "at,required json\x02invalid conditions fromat,required json array\x02con" + - "dition values limit (5 per rule). %d given.\x02rule %s/%s already occupi" + - "ed by rule %s(%s)\x02%s listener port %d is already taken by listener %s" + - "(%s)\x02cannot find region info\x02backend group %s(%s) belongs to loadb" + - "alancer %s, not %s\x04\x00\x01 0\x02cluster zone %s does not match netwo" + - "rk zone %s \x02cluster wire affiliation does not match network's: %s != " + - "%s\x02loadbalancer is locked, cannot delete\x02MongoDB has %d task activ" + - "e, can't sync status\x02MongoDB is locked, cannot delete\x02self billing" + - " type is %s\x02self billing type %s not support cancel expire\x02invalid" + - " mongodb status %s for query backups\x02Mount target reached the upper l" + - "imit\x02invalid network type %s\x02network and filesystem do not belong " + - "to the same account\x02network and filesystem are not in the same region" + - "\x02not allow to delete\x02Port value error\x02invalid internal ip addre" + - "ss: %s\x02there are dnat rules with same external ip and external port" + - "\x02eip has been binding to another instance\x02elastic ip %s and vpc %s" + - " not in same region\x02Nat is locked, cannot delete\x02natgateway has bi" + - "nd %d eips\x02natgateway has %d stable\x02natgateway has %d dtable\x02Na" + - "t gateway has %d task active, can't sync status\x02nat billing type %s n" + - "ot support cancel expire\x02nat gateway billing type is %s\x02Cannot do " + - "renew nat gateway in status %s required status %s\x02The nat gateway sta" + - "tus need be %s, current is %s\x02Only %s nat gateway support this operat" + - "ion\x02source_cidr and network_id conflict\x02input.SourceCidr\x02cidr %" + - "s is not in range vpc %s\x02network %s not in vpc %s\x02fetch guest %s: " + - "%v\x02fetch guest nic: %v\x02cannot fetch network of guestnetwork %d\x02" + - "batch create is not supported for external resources\x02unknown parent o" + - "bject id spec\x02got unknown type %q, expect %s\x02got unknown parent ty" + - "pe %q, expect %s\x02allocate ip addr: %v\x02exceed address count limit: " + - "%v\x02not an empty network %s\x02address %s is not in the range of netwo" + - "rk %s(%s)\x02isAddressUsed fail %s\x02address %s is already occupied\x02" + - "getFreeAddressCount fail %s\x02network %s(%s) has no free addresses\x02c" + - "andidate %s out of range\x02Out of IP address\x02no allow to access netw" + - "ork %s\x02Network %s not found: %v\x02Address %s not in range\x02Only sy" + - "stem admin allowed to use reserved ip\x02Address %s not reserved\x02Addr" + - "ess %s has been used\x02Bandwidth limit cannot exceed %dMbps\x02Duration" + - " %s invalid\x02not a valid ip address %s: %s\x02Address %s not in networ" + - "k\x02get reserved ip error\x02found %d wires for zone %s and vpc %s\x02w" + - "ire not found for zone %s and vpc %s\x02Invalid server_type: %s\x02valid" + - " vlan id\x02cannot derive valid ifname hint: %v\x02ip_prefix error: %s" + - "\x02subnet masklen should be smaller than 30\x02Invalid masklen %d\x02In" + - "valid start ip: %s %s\x02invalid end ip: %s %s\x02start and end ip not i" + - "n the same subnet\x02%s: Invalid IP address %s\x02%s: Invalid domain nam" + - "e or IP address %s\x02bad gateway ip: %v\x02gateway ip must be in the sa" + - "me subnet as start, end ip\x02zone and vpc info required when wire is ab" + - "sent\x02VPC not ready\x02eip network can only exist in default vpc, got " + - "%s(%s)\x02the wire %s and project %s has different class metadata\x02sta" + - "rt and end ip when masked are not in the same cidr subnet\x02Network not" + - " in range of VPC cidrblock %s\x02fail to GetNetworks of vpc: %v\x02Confl" + - "ict address space with existing networks in vpc %q\x02query all networks" + - " fail\x02Conflict address space with existing networks\x02Address been a" + - "ssigned out of new range\x02start, end ip must be in the same subnet\x02" + - "%s: Invalid domain name or IP address %s\x02network server_type %s not " + - "support auto alloc\x02Parse Ip Failed\x02Cannot purge network on enabled" + - " cloud provider\x02Network %s not found\x02Invalid Target Network %s: in" + - "consist %s\x02Incontinuity Network for %s and %s\x02only on premise supp" + - "ort this operation\x02Invalid IP %s\x02Split IP %s is the start ip\x02Sp" + - "lit IP %s out of range\x02Duplicate name %s\x02GenerateName fail %s\x02G" + - "enerate ifname hint failed %s\x02ip\x02Only support server type %s\x02On" + - "ly support on premise network\x02the wire %s and the project %s has diff" + - "erent class metadata\x02on-premise network cannot sync status\x02managed" + - " network cannot change status\x02invalid status %s\x02BgpType attribute " + - "is only useful for eip network\x02not support create\x02not support crea" + - "te definition\x02project mapping has associate %d accounts\x02project ma" + - "pping has associate %d cloudproviders\x02invalid cidr %s\x02not supporte" + - "d next hop type %s\x02Not support modify routetable for provider %s\x02C" + - "annot purge route_table on enabled cloud provider\x02unmarshaling cidrs " + - "failed: %s\x02min_instance_number should not be smaller than 0\x02min_in" + - "stance_number should not be bigger than max_instance_number\x02desire_in" + - "stance_number should between min_instance_number and max_instance_number" + - "\x02no such cloud region %s\x02ScalingGroup should have some networks" + - "\x02some networks not exist\x02network '%s' not in vpc '%s'\x02no such g" + - "uest template %s\x02the guest template %s is not valid in cloudregion %s" + - ", reason: %s\x02unkown expansion principle %s\x02unkown shrink principle" + - " %s\x02unkown health check mode %s\x02no such loadbalancer backend group" + - " '%s'\x02invalid loadbalancer backend port '%d'\x02invalid loadbalancer " + - "backend weight '%d'\x02Please disable this ScalingGroup firstly\x02There" + - " are some guests in this ScalingGroup, please delete them firstly\x02no " + - "such ScalingGroup '%s'\x02Guest '%s' don't belong to ScalingGroup '%s'" + - "\x02every scaling policy belong to a scaling group\x02no such scaling gr" + - "oup %s\x02unkown trigger type %s\x02unkown scaling policy action %s\x02u" + - "nkown scaling policy unit %s\x02Can't trigger scaling policy without sta" + - "tus 'ready'\x02mismatched alarm id\x02unkown operator in alarm %s\x02unk" + - "own indicator in alarm %s\x02unkown wrapper in alarm %s\x02the min value" + - " of cycle in alarm is 300\x02invalid strategy %s\x02ResourceType %q not " + - "support\x02schedtag_id not provide\x02Not support resource_type %s\x02Sc" + - "hedtag %s\x02Schedtag %s resource_type mismatch: %s != %s\x02unmarshal J" + - "ointResourceCreateInput fail %s\x02Invalid schedtag %s\x02Invalid defaul" + - "t stragegy %s\x02Cannot set default strategy of %s\x02GetObjectCount fai" + - "l %s\x02Tag is associated with %s\x02getDynamicSchedtagCount fail %s\x02" + - "tag has dynamic rules\x02getSchedPoliciesCount fail %s\x02tag is associa" + - "te with sched policies\x02Schedtag %s ResourceType is %s, not match %s" + - "\x02Resource %s %s not found\x02security group has been reference in %d " + - "security group\x02peer_secgroup_id can not point to secgroup self\x02Fai" + - "led fetching secgroup %s\x02rule %d is invalid: %s\x02vpc %s(%s) is not " + - "a managed resouce\x02Not support cache classic security group\x02invalid" + - " ip address: %s\x02not allow merge default security group\x02secgroup %s" + - " rules not equals %s rules\x02not allow to delete default security group" + - "\x02not allow to delete default admin security group\x02the security gro" + - "up %s is in use cnt: %s\x02the other security group is in use\x02no such" + - " guest template\x02fail to parse icon url '%s'\x02no such guest_template" + - " %s\x02resource %s is not support sync skus\x02input data contains inval" + - "id cloudregion id\x02no cloudregion found to sync skus\x02zone %s not in" + - " cloudregion %s\x02cpu_core_count should be range of 1~256\x02memory_siz" + - "e_mb, shoud be range of 512~%d\x02instance_type_category shoud be one of" + - " %s\x02Not support create public cloud sku\x02checkout server sku name d" + - "uplicate error: %v\x02Duplicate sku %s\x02instance specs list query erro" + - "r\x02Cannot change server sku name\x02check instance\x02now allow to del" + - "ete inuse instance_type.please remove related servers first: %s\x02not a" + - "llow to delete public cloud instance_type: %s\x02failed to find cloudreg" + - "ion for zone %s(%s)\x02duplicate instanceType %s\x02query sku list faile" + - "d.\x02delete sku %s failed.\x02Unmarshal input failed %s\x02Retention da" + - "ys must in 1~%d or -1\x02repeat_weekdays only contains %d days at most" + - "\x02time_points only contains %d points at most\x02Unmarshel input faile" + - "d %s\x02Retention days must in 1~65535 or -1\x02Do not need to update" + - "\x02Couldn't delete snapshot policy binding to disks\x02no such disk %s" + - "\x02snapshotpolicy disk has been exist\x02disk %s has too many snapshot " + - "policy attached\x02guest %s not found\x02Cannot delete snapshot in statu" + - "s %s\x02Fetch instance snapshot error %s\x02snapshot referenced by insta" + - "nce snapshot\x02Cannot delete snapshot on disk reset\x02Snapshot has %d " + - "task active, can't sync status\x02Cannot Delete disk %s snapshots, disk " + - "exist\x02Disk %s dose not have snapshot\x02Can not delete disk snapshots" + - ", have manual snapshot\x02Cannot purge snapshot on enabled cloud provide" + - "r\x02getReferenceCount fail %s\x02Image is in use\x02Active download ses" + - "sion not expired\x02Cannot delete the last cache\x02Cannot uncache in st" + - "atus %s\x02storage cache not empty\x02referered by storages\x02cannot un" + - "cache non-customized images\x02storage not cache image\x02Fail to mark c" + - "ache status: %s\x02Invalid medium type %s\x02Not support create %s stora" + - "ge\x02GetHostCount fail %s\x02storage has associate hosts\x02storage has" + - " disks\x02storage has snapshots\x02storage cache is missing\x02storage i" + - "s enabled\x02can't detach host in status online\x02host %s storage %s no" + - "t found\x02Only public cloud support vpcpeering\x02vpc on different clou" + - "dprovider peering is not supported\x02ipv4 range overlap\x02cloudprovide" + - "r %s not supported CrossCloud vpcpeering\x02cloudprovider %s not support" + - "ed CrossRegion vpcpeering\x02vpc %s and vpc %s have already connected" + - "\x02invalid external_access_mode %q, want %s\x02not allow to delete defa" + - "ult vpc\x02GetNetworkCount fail %s\x02VPC not empty, please delete netwo" + - "rk first\x02GetNatgatewayCount fail %v\x02VPC not empty, please delete n" + - "at gateway first\x02GetRequesterVpcPeeringConnections fail %v\x02VPC pee" + - "ring not empty, please delete vpc peering first\x02invalid cidr_block %s" + - "\x02Cannot purge vpc on enabled cloud provider\x02not supported for inte" + - "r vpc network %s\x02on-premise vpc cannot sync status\x02For default vpc" + - ", only system level sharing can be set\x02Prohibit making default vpc pr" + - "ivate\x02mapped ip exhausted\x02lb %s does not belong to account %s\x02s" + - "erver %s does not belong to account %s\x02invalid %d resource type %s" + - "\x02waf %s status is not available\x02Not allow update rule name\x02band" + - "width must be greater than 0\x02mtu must be range of 0~1000000\x02Curren" + - "tly only kvm platform supports creating wire\x02HostCount fail %s\x02wir" + - "e contains hosts\x02NetworkCount fail %s\x02wire contains networks\x02in" + - "valid wire id or name %v\x02Wire %q\x02the vpc %s and this wire have dif" + - "ferent class metadata\x02not empty zone: %s\x02failed to found cloudregi" + - "on %s\x02not support create %s zone\x02intranet loadbalancer not support" + - " bandwidth charge type\x02Loadbalancer's manager (%s(%s)) does not match" + - " vpc's(%s(%s)) (%s)\x02Aliyun not allow to change certificate\x02master " + - "slave backendgorup must contain two backend\x02Unsupport backendgorup ty" + - "pe %s\x02invalid guest %s\x02Aliyun instance weight must be in the range" + - " of 0 ~ 100\x02internal error: unexpected backend type %s\x02backendgrou" + - "p %s not support this operation\x02region of host %q (%s) != region of l" + - "oadbalancer %q (%s))\x02%s backend group not support change port\x02%s b" + - "ackend group not support change port or weight\x02Unknown backend group " + - "type %s\x02listener type must be http/https, got %s\x02backend group %s(" + - "%s) belongs to loadbalancer %s instead of %s\x02backend group type must " + - "be normal\x02loadbalancerlistenerrule %s(%s): fetching listener %s faile" + - "d\x02http or https listener only supportd default or normal backendgroup" + - "\x02health_check_domain must be in the range of 1 ~ 80\x02%s length must" + - " less 500 letters\x02sticky_session_cookie length must within 1~200\x02s" + - "ticky_session_cookie can only contain letters, Numbers, '_' and '-'\x02U" + - "nknown sticky_session_type, only support %s or %s\x02failed to find load" + - "balancer's %s(%s) region\x02The specified Scheduler %s is invalid for pe" + - "rformance sharing loadbalancer\x02cloudregion %s(%s) not support %s sche" + - "duler\x02invalid %s,required int\x02%s cannot be set to 0\x02%s not supp" + - "ort close tcp or udp loadbalancer listener health check\x02Snapshot for " + - "%s name can't start with auto, http:// or https://\x02Aliyun %s not supp" + - "ort recovery\x02Aliyun %s only support recover from it self backups\x02A" + - "liyun %s only 8.0 and 5.7 high_availability local_ssd or 5.6 high_availa" + - "bility support recovery from it self backups\x02slave dbinstance not sup" + - "port prepaid billing type\x02failed to match any skus in the network %s(" + - "%s) zone %s(%s)\x02Not support create readonly dbinstance for MySQL %s %" + - "s\x02Not support create readonly dbinstance for MySQL %s %s with storage" + - " type %s, only support %s\x02Not support create readonly dbinstance for " + - "MySQL %s\x02SQL Server only support create readonly dbinstance for 2017_" + - "ent\x02SQL Server cannot have more than seven read-only dbinstances\x02N" + - "ot support create readonly dbinstance with master dbinstance engine %s" + + " generate libvirt xml\x02Generate xml failed: %s\x02host not found???" + + "\x02empty ip list\x02Unreachable IP %s: %s\x02Unavailable IP %s: occupie" + + "d\x02the disk of a esxi virtual machine with instance snapshots does not" + + " support resizing\x02disk %s not attached to server\x02Hypervisor %s can" + + "'t do io throttle\x02Cannot do io throttle in status %s\x02disk %s bps m" + + "ust > 0\x02disk %s iops must > 0\x02guest %s hypervisor %s can't migrate" + + "\x02guest %s has backup, can't migrate\x02guest %s has isolated device, " + + "can't migrate\x02can't rescue geust %s with local storage\x02guest %s st" + + "atus %s can't migrate\x02cannot migrate with cdrom\x02cannot migrate wit" + + "h floppy\x02guest %s status %s can't migrate with local storage\x02missi" + + "ng guest id\x02Check input guests is exist\x02guest hypervisor %s can't " + + "create instance snapshot\x02Can't do instance snapshot with backup guest" + + "\x02guest can't do snapshot in status %s\x02guests disk %d snapshot full" + + ", can't take anymore\x02Check set pending quota error %s\x02Can't save m" + + "emory state when guest status is %q\x02create instance snapshot failed: " + + "%s\x02start create snapshot task failed: %s\x02create instance backup fa" + + "iled: %s\x02start create backup task failed: %s\x02instance snapshot %q " + + "not belong server %q\x02Instance snapshot not ready\x02Instance snapshot" + + " not with memory statefile\x02start snapshot reset failed %s\x02count mu" + + "st > 0\x02Generate snapshot name failed %s\x02not a baremetal server\x02" + + "no valid host\x02host is not a baremetal\x02The guest status need be %s " + + "or %s, current is %s\x02rx/tx traffic not provider\x02no such group %s" + + "\x02group and guest should belong to same project\x02can not bind or unb" + + "ind disabled instance group\x02The guest %s does not have any public IP" + + "\x02The %s guest not support public ip to eip operation\x02Only %s guest" + + " support this operation\x02guest has no vpc ip\x02Storage id is empty" + + "\x02Disk id is empty\x02Disk %s not found on server %s\x02failed parse d" + + "isk index %s\x02disk inex %s is exceed 127\x02disk has no index %d\x02fa" + + "iled parse cdrom ordinal %s\x02cdrom has no ordinal %d\x02disk index %d " + + "boot index %d is duplicated\x02cdrom ordianl %d boot index %d is duplica" + + "ted\x02Host cores %v not contains input %v\x02More than one of input cor" + + "es %v already set in host %v\x02qga ping failed is qga running?\x02not s" + + "upport target hypervisor %s\x02guest has been converted\x02not support %" + + "s\x02host %s is not kvm host\x02guest status must be ready\x02input netw" + + "ork configs length must equal guestnetworks length\x02guest status must" + + " be ready or running\x02vmem size must be greater than 2G\x02guest.GetHo" + + "st: %s\x02BaremetalagentManager.GetAgent: %s\x02guest.StartGuestRescueTa" + + "sk: %s\x02guest is not in rescue mode\x02guest.StopGuestRescueTask: %s" + + "\x02Cannot add security groups for hypervisor %s\x02guest %s band to up " + + "to %d security groups\x02security group %s has already been assigned to " + + "guest %s\x02Cannot revoke security groups in status %s\x02security group" + + " %s not assigned to guest %s\x02not allow to revoke admin secgroup\x02Ca" + + "nnot assign security rules in status %s\x02not allow to assign admin sec" + + "group\x02Cannot set security rules in status %s\x02Cannot set security g" + + "roup for this guest %s\x02server sshable state can only be checked when " + + "in running state\x02fetch ssh private key: %v\x02fetch network interface" + + " information: %v\x02make-sshable can only be performed when in running s" + + "tate\x02missing username\x02private_key and password cannot both be empt" + + "y\x02fetch project public key: %v\x02fetch admin public key: %v\x02searc" + + "hing for usable ssh address: %v\x02no usable ssh address\x02invalid port" + + "\x02no support for instance snapshot in guest template for now\x02there " + + "is no such secgroup %s descripted by guest template\x02the %s in guest t" + + "emplate is not a public resource\x02the %s %q in guest template is not a" + + " public resource\x02the %s in guest template is not a public resource in" + + " %s scope\x02the %s %q in guest template is not a public resource in %s " + + "scope\x02guest template %s used by service catalog %s\x02guest template " + + "%s used by scalig group %s\x02check disk index uniqueness fail %s\x02DIS" + + "K Index %d has been occupied\x02cannot allocate ifname\x02checkout nic i" + + "ndex uniqueness fail %s\x02NIC Index %d has been occupied\x02host %s not" + + " found\x02secgroup %s not found\x02checkout guestdisk count fail %s\x02g" + + "roup %s not found\x02Virtual server is locked, cannot delete\x02not allo" + + "w to delete prepaid server in valid status\x02Cannot delete server on di" + + "sabled host\x02Cannot delete server on offline host\x02Memory size must " + + "be 8MB ~ %d GB\x02CPU core count must be 1 ~ %d\x02name is too short\x02" + + "hostname should be a legal domain name\x02can't find instance snapshot %" + + "s\x02fetch instance snapshot error %s\x02there are no disks in this inst" + + "ance snapshot, try another one\x02can't find instance backup %s\x02fetch" + + " instance backup error %s\x02Instance backup not ready\x02there are no d" + + "isks in this instance backup, try another one\x02metdata must less then " + + "20\x02login_account is longer than 32 chars\x02No bootable disk informat" + + "ion provided\x02Invalid root image: %s\x02System disk does not support i" + + "so image, please consider using cdrom parameter\x02parse cdrom device in" + + "fo error %s\x02duplicate boot index %d\x02UEFI image requires UEFI boot " + + "mode\x02UEFI boot mode requires UEFI image\x02Windows use gpu vga requir" + + "es UEFI image\x02Miss operating system???\x02sku %s not indicate attache" + + "d disk size\x02sku %s not indicate attached disk backend\x02NVMe device " + + "can't assign as root disk\x02parse disk description error %s\x02cannot c" + + "reate prepaid server on prepaid resource type\x02parse network descripti" + + "on error %s\x02Keypair %s not found\x02Secgroup %s not found\x02%s shall" + + " bind up to %d security groups\x02Invalid userdata: %v\x02invalid parame" + + "ters for policy definition %s\x02policy definition %s require cloudregio" + + "n in %s\x02policy definition %s require cloudregion not in %s\x02invalid" + + " policy definition %s(%s) condition %s\x02policy definition %s require m" + + "ust contains tag %s\x02policy definition %s require except tag %s\x02inv" + + "alid category %s for policy definition %s(%s)\x02public ip not supported" + + " for %s\x02invalid public_ip_charge_type %s\x02eip not supported for %s" + + "\x02eip %s status invalid %s\x02eip %s has been associated\x02cannot ass" + + "oicate with eip %s: different cloudprovider\x02cannot assoicate with eip" + + " %s: different region\x02already associate with eip\x02fetch disk size f" + + "ailed\x02Baremetal %s not enabled\x02cannot run hypervisor %s on specifi" + + "ed host with type %s\x02no valid storage on host\x02invalid aggregate_st" + + "rategy: %s\x02Wire %s not found\x02Hypervisor %s not supported\x02cannot" + + " recycle in status %s\x02cannot undo recycle in status %s\x02host should" + + " be disabled\x02host is not a prepaid recycle host\x02cannot delete a re" + + "cycle host without active instance\x02a recycle host shoud not allocate " + + "more than 1 guest\x02cannot undo a recycle host with pending_deleted gue" + + "st\x02Not a prepaid recycle host\x02hostname cannot be number %d\x02Wind" + + "ows hostname cannot be longer than %d characters\x02the hostname length " + + "must be greater than or equal to 2\x02Schedtag %s not found\x02not suppo" + + "rted hypervisor %s\x02Host is a converted baremetal, should be unconvert" + + "ed before delete\x02Host is not disabled\x02Not an empty host\x02getGues" + + "tCount fail %s\x02GetBackupGuestCount fail %s\x02GetDiskCount fail %s" + + "\x02Local host storage is not empty???\x02No ipmi information was found " + + "for host %s\x02IPMI has no password information\x02check %s duplication " + + "fail %s\x02duplicate %s %s\x02invalid macAddr %s\x02check access_mac dup" + + "lication fail %s\x02duplicate access_mac %s\x02%s is out of network IP r" + + "anges\x02IPMI network has no zone???\x02IPMI address located in differen" + + "t zone than specified\x02Access ip %s has been used\x02Access network ha" + + "s no zone???\x02Access address located in different zone than specified" + + "\x02missing access_mac and uuid in no_probe mode\x02IPMI network has not" + + " zone???\x02New IPMI address located in another zone!\x02Cannot start a " + + "non-baremetal host\x02Cannot start baremetal with active guest\x02Cannot" + + " stop a non-baremetal host\x02Cannot stop baremetal with non-active gues" + + "t\x02Cannot stop baremetal with active guest\x02Cannot do maintenance in" + + " status %s\x02Cannot do maintenance while guest status %s\x02Cannot do u" + + "nmaintenance in status %s\x02Wrong guest status %s\x02must enable auto_m" + + "igrate_on_host_down at same time\x02ping host type %s not support\x02hos" + + "t type %s not support reserve cpus\x02host %s has %d guests, can't updat" + + "e reserve cpus\x02missing cpus\x02cpus %s not valid\x02Host cores not co" + + "ntains input %v\x02Can't reserve host all cpus\x02mems %s not valid\x02m" + + "ems %s out of range\x02not a baremetal\x02need valid access_mac and uuid" + + " to do prepare\x02Cannot prepare baremetal in status %s\x02Cannot prepar" + + "e baremetal in server status %s\x02Cannot do Ipmi-probe in status %s\x02" + + "Cannot do initialization in status %s\x02IPMI infomation not configured" + + "\x02Guest Insert error: %s\x02find Wire %s error: %s\x02invalid ipaddr %" + + "s\x02no networks on wire %s\x02IP %s not attach to wire %s\x02IP %s not " + + "attach to any wire\x02fail to fetch netif by mac %s: %s\x02Interface %s(" + + "vlan:%d) not exist\x02Interface %s(vlan:%d) not exists\x02Not a baremeta" + + "l\x02Not being convert to hypervisor\x02Not found baremetal server recor" + + "d\x02Not found guest nic by mac %s\x02Guest nic ip addr %s not equal %s" + + "\x02Cannot sync status a non-baremetal host\x02Cannot reset baremetal in" + + " status %s\x02Cannot reset baremetal with active guest\x02Cannot perform" + + " cache image in status %s\x02image %s not found\x02Cannot cache image wi" + + "th no checksum\x02host_type must be specified\x02Must be a baremetal hos" + + "t\x02Baremetal host is aleady occupied\x02Connot convert hypervisor in s" + + "tatus %s\x02require system previleges to convert host in other domain" + + "\x02Unsupport driver type %s\x02isAlterNameUnique fail %s\x02Convert err" + + "or: %s\x02Host should be disabled\x02Cannot unconvert in status %s\x02No" + + "t an converted hypervisor\x02host status %s can't exit maintenance\x02ho" + + "st type %s can't do host maintenance\x02unsupport on host status %s\x02H" + + "ost %s can't migrate guests %s in status %s\x02Cannot do insert-iso in s" + + "tatus %s\x02Cannot do eject-iso in status %s\x02Cannot sync config a non" + + "-baremetal host\x02reserved cpu must >= 0\x02reserved memory must >= 0" + + "\x02reserved storage must >= 0\x02host %s can't reserve %d cpu for each " + + "isolated device, not enough\x02host %s can't reserve %dM memory for each" + + " isolated device, not enough\x02host %s can't reserve %dM storage for ea" + + "ch isolated device, not enough\x02Only system admin can assign host\x02S" + + "torageInUse\x02GetGuestDiskCount fail %s\x02GetGuestnicsCount fail %s" + + "\x02can't delete instance snapshot with wrong status\x02unable to fetch " + + "backupStorage %s\x02InstanceBackup has %d task active, can't sync status" + + "\x02vpc joint interVpcNetwork on different cloudprovider is not supporte" + + "d\x02vpc joint interVpcNetwork on different cloudEnv is not supported" + + "\x02vpc %s already connected to a interVpcNetwork\x02vpc %s is not conne" + + "cted to this interVpcNetwork\x02ValidateCreateData\x02device type %q uns" + + "upported\x02bad vendor id %s\x02vendor %s device %s has been registered" + + "\x02model %s has been registered\x02device model has guests\x02dev_type " + + "is empty\x02device type %q not supported\x02dev addr %s registed\x02devi" + + "ce type %q not support update\x02Can't update for device %q\x02Isolated " + + "device used by server\x02IsolatedDevice %s not found\x02Isolated device " + + "already attached to another guest: %s\x02IsolatedDevice is not device ty" + + "pe %s\x02request dev type %s not match %s\x02Isolated device used by ser" + + "ver: %s\x02Kafka is locked, cannot delete\x02Kafka has %d task active, c" + + "an't sync status\x02Unsupported scheme %s\x02invalid public error: %v" + + "\x02GetLinkedGuestsCount failed %s\x02Cannot delete keypair used by serv" + + "ers\x02network %s not belong to vpc %s\x02min_instance_count must less o" + + "r equal to desired_instance_count\x02max_instance_count must greater tha" + + "n or equal to desired_instance_count\x02acl %s is still referred to by %" + + "d listener\x02telegraf params: invalid influxdb url: %s\x02%s: bad base6" + + "4 encoded string: %s\x02%s: bad template: %s\x02%s: time error: %s\x02%s" + + ": new time is in the future: %s > %s\x02use yum requires valid repo_base" + + "_url\x02empty host name\x02find host %s: %v\x02lbagent cannot be deploye" + + "d on managed host\x02find guest %s: %v\x02lbagent cannot be deployed on " + + "public guests\x02server is in %q state, want %q\x02query backend group r" + + "eleated resource failed.\x02weight %d not support, only support range 0 " + + "~ 256\x02port %d not support, only support range 1 ~ 65535\x02only sysad" + + "min can specify host as backend\x02unexpected backend type %s\x02region " + + "of backend %d does not match that of lb's\x02get isDefault fail %s\x02ba" + + "ckend group %s is default backend group\x02get refCount fail %s\x02backe" + + "nd group %s is still referred by %d %s\x02%s requires the virtual machin" + + "e state to be %s before it can be added backendgroup, but current state " + + "of the virtual machine is %s\x02guest %s(%s) vpc %s(%s) not same as load" + + "balancer vpc %s\x02failed getting guest %s\x02guest %s(%s) vpc %s(%s) no" + + "t same as vpc %s(%s)\x02guest %s(%s) is already in the backendgroup %s(%" + + "s)\x02invalid port %d\x02invalid weight %d\x02invalid ssl %s\x02region o" + + "f host %q (%s) != region of loadbalancer %q (%s))\x02host type of host %" + + "q (%s) should be either hypervisor or esxi\x02manager of host %q (%s) !=" + + " manager of loadbalancer %q (%s))\x02invalid backend_type %s\x02cert %s " + + "with %d listeners\x02allow only internal zone, got %s(%s)\x02wire zone m" + + "ust match zone parameter, got %s, want %s(%s)\x02zone of wire must be %s" + + ", got %s\x02lbcluster %s(%s) is still referred to by %d %s\x02get lbclus" + + "ter refcount fail %v\x02lbcluster %s(%s) already has virtual_router_id %" + + "d\x02invalid conditions format,required json\x02invalid conditions froma" + + "t,required json array\x02condition values limit (5 per rule). %d given." + + "\x02listener type must be http/https, got %s\x02backendgroup_id not same" + + " with listener's loadbalancer\x02all networks should in the same vpc." + + "\x02invalidate address %s\x02address %s not in network %s\x02lb manager " + + "%s does not match vpc manager %s\x02lb region %s does not match vpc regi" + + "on %s\x02lb region %s does not match eip region %s\x02eip %s status not " + + "ready\x02eip %s alread associate %s\x02lb manager %s does not match eip " + + "manager %s\x02invalid address_type %s\x02invalid charge_type %s\x02backe" + + "nd group %s(%s) belongs to loadbalancer %s, not %s\x04\x00\x01 0\x02clus" + + "ter zone %s does not match network zone %s \x02cluster wire affiliation " + + "does not match network's: %s != %s\x02loadbalancer is locked, cannot del" + + "ete\x02not support managed lb\x02invalid cidr: %s\x02ModelartsPool is lo" + + "cked, cannot delete\x02ModelartsPool status cannot support delete\x02Mod" + + "elartsPool has %d task active, can't sync status\x02MongoDB has %d task " + + "active, can't sync status\x02MongoDB is locked, cannot delete\x02self bi" + + "lling type is %s\x02self billing type %s not support cancel expire\x02in" + + "valid mongodb status %s for query backups\x02Mount target reached the up" + + "per limit\x02invalid network type %s\x02network and filesystem do not be" + + "long to the same account\x02network and filesystem are not in the same r" + + "egion\x02not allow to delete\x02Port value error\x02invalid internal ip " + + "address: %s\x02there are dnat rules with same external ip and external p" + + "ort\x02eip has been binding to another instance\x02elastic ip %s and vpc" + + " %s not in same region\x02Nat is locked, cannot delete\x02natgateway has" + + " bind %d eips\x02natgateway has %d stable\x02natgateway has %d dtable" + + "\x02Nat gateway has %d task active, can't sync status\x02nat billing typ" + + "e %s not support cancel expire\x02nat gateway billing type is %s\x02Cann" + + "ot do renew nat gateway in status %s required status %s\x02The nat gatew" + + "ay status need be %s, current is %s\x02Only %s nat gateway support this " + + "operation\x02source_cidr and network_id conflict\x02input.SourceCidr\x02" + + "cidr %s is not in range vpc %s\x02network %s not in vpc %s\x02Tap servic" + + "e has associated flows\x02network %s not found\x02network type %s can't " + + "set ip mac\x02missing update field\x02ip addr %s is in use\x02mac addr %" + + "s is in use\x02network %s not contains ip addr %s\x02mac address %s is n" + + "ot valid\x02input ip mac conflict with guest %s nic %d\x02cannot fetch n" + + "etwork of guestnetwork %d\x02allocate ip addr: %v\x02exceed address coun" + + "t limit: %v\x02not an empty network %s\x02candidate %s out of range\x02O" + + "ut of IP address\x02no allow to access network %s\x02Network %s not foun" + + "d: %v\x02Address %s not in range\x02Only system admin allowed to use res" + + "erved ip\x02Address %s not reserved\x02isAddressUsed fail %s\x02Address " + + "%s has been used\x02Bandwidth limit cannot exceed %dMbps\x02getFreeAddre" + + "ssCount fail %s\x02network %s(%s) has no free addresses\x02Duration %s i" + + "nvalid\x02not a valid ip address %s: %s\x02Address %s not in network\x02" + + "get reserved ip error\x02found %d wires for zone %s and vpc %s\x02wire n" + + "ot found for zone %s and vpc %s\x02Invalid server_type: %s\x02valid vlan" + + " id\x02cannot derive valid ifname hint: %v\x02ip_prefix error: %s\x02sub" + + "net masklen should be smaller than 30\x02Invalid masklen %d\x02Invalid s" + + "tart ip: %s %s\x02invalid end ip: %s %s\x02start and end ip not in the s" + + "ame subnet\x02%s: Invalid IP address %s\x02%s: Invalid domain name or IP" + + " address %s\x02bad gateway ip: %v\x02gateway ip must be in the same subn" + + "et as start, end ip\x02zone and vpc info required when wire is absent" + + "\x02VPC not ready\x02eip network can only exist in default vpc, got %s(%" + + "s)\x02the wire %s and project %s has different class metadata\x02start a" + + "nd end ip when masked are not in the same cidr subnet\x02Network not in " + + "range of VPC cidrblock %s\x02fail to GetNetworks of vpc: %v\x02Conflict " + + "address space with existing networks in vpc %q\x02query all networks fai" + + "l\x02Conflict address space with existing networks\x02Address %s been as" + + "signed out of new range\x02start, end ip must be in the same subnet\x02%" + + "s: Invalid domain name or IP address %s\x02network server_type %s not s" + + "upport auto alloc\x02Parse Ip Failed\x02Cannot purge network on enabled " + + "cloud provider\x02Network %s not found\x02Invalid Target Network %s: inc" + + "onsist %s\x02Incontinuity Network for %s and %s\x02only on premise suppo" + + "rt this operation\x02Invalid IP %s\x02Split IP %s is the start ip\x02Spl" + + "it IP %s out of range\x02Duplicate name %s\x02GenerateName fail %s\x02Ge" + + "nerate ifname hint failed %s\x02ip\x02Only support server type %s\x02Onl" + + "y support on premise network\x02the wire %s and the project %s has diffe" + + "rent class metadata\x02on-premise network cannot sync status\x02managed " + + "network cannot change status\x02invalid status %s\x02BgpType attribute i" + + "s only useful for eip network\x02not support create\x02not support creat" + + "e definition\x02project mapping has associate %d accounts\x02project map" + + "ping has associate %d cloudproviders\x02can't use qga in vm status: %s" + + "\x02invalid cidr %s\x02not supported next hop type %s\x02Not support mod" + + "ify routetable for provider %s\x02Cannot purge route_table on enabled cl" + + "oud provider\x02unmarshaling cidrs failed: %s\x02min_instance_number sho" + + "uld not be smaller than 0\x02min_instance_number should not be bigger th" + + "an max_instance_number\x02desire_instance_number should between min_inst" + + "ance_number and max_instance_number\x02no such cloud region %s\x02Scalin" + + "gGroup should have some networks\x02some networks not exist\x02network '" + + "%s' not in vpc '%s'\x02no such guest template %s\x02the guest template %" + + "s is not valid in cloudregion %s, reason: %s\x02unkown expansion princip" + + "le %s\x02unkown shrink principle %s\x02unkown health check mode %s\x02no" + + " such loadbalancer backend group '%s'\x02invalid loadbalancer backend po" + + "rt '%d'\x02invalid loadbalancer backend weight '%d'\x02Please disable th" + + "is ScalingGroup firstly\x02There are some guests in this ScalingGroup, p" + + "lease delete them firstly\x02no such ScalingGroup '%s'\x02Guest '%s' don" + + "'t belong to ScalingGroup '%s'\x02every scaling policy belong to a scali" + + "ng group\x02no such scaling group %s\x02unkown trigger type %s\x02unkown" + + " scaling policy action %s\x02unkown scaling policy unit %s\x02Can't trig" + + "ger scaling policy without status 'ready'\x02mismatched alarm id\x02unko" + + "wn operator in alarm %s\x02unkown indicator in alarm %s\x02unkown wrappe" + + "r in alarm %s\x02the min value of cycle in alarm is 300\x02invalid strat" + + "egy %s\x02ResourceType %q not support\x02schedtag_id not provide\x02Not " + + "support resource_type %s\x02Schedtag %s\x02Schedtag %s resource_type mis" + + "match: %s != %s\x02unmarshal JointResourceCreateInput fail %s\x02Invalid" + + " schedtag %s\x02Invalid default stragegy %s\x02Cannot set default strate" + + "gy of %s\x02GetObjectCount fail %s\x02Tag is associated with %s\x02getDy" + + "namicSchedtagCount fail %s\x02tag has dynamic rules\x02getSchedPoliciesC" + + "ount fail %s\x02tag is associate with sched policies\x02Schedtag %s Reso" + + "urceType is %s, not match %s\x02Resource %s %s not found\x02invalid ip a" + + "ddress: %s\x02not allow to delete default security group\x02not allow to" + + " delete default admin security group\x02the security group %s is in use " + + "cnt: %d\x02rule %d is invalid: %s\x02zone %s not in cloudregion %s\x02cp" + + "u_core_count should be range of 1~%d\x02memory_size_mb, shoud be range o" + + "f 512~%d\x02instance_type_category shoud be one of %s\x02Not support cre" + + "ate public cloud sku\x02checkout server sku name duplicate error: %v\x02" + + "Duplicate sku %s\x02instance specs list query error\x02Cannot change ser" + + "ver sku name\x02now allow to delete inuse instance_type.please remove re" + + "lated servers first: %s\x02not allow to delete public cloud instance_typ" + + "e: %s\x02failed to find cloudregion for zone %s(%s)\x02duplicate instanc" + + "eType %s\x02no such guest template\x02fail to parse icon url '%s'\x02no " + + "such guest_template %s\x02resource %s is not support sync skus\x02input " + + "data contains invalid cloudregion id\x02no cloudregion found to sync sku" + + "s\x02Retention days must in 1~%d or -1\x02guest %s not found\x02Cannot d" + + "elete snapshot in status %s\x02Fetch instance snapshot error %s\x02snaps" + + "hot referenced by instance snapshot\x02Cannot delete snapshot on disk re" + + "set\x02Snapshot has %d task active, can't sync status\x02Cannot Delete d" + + "isk %s snapshots, disk exist\x02Disk %s dose not have snapshot\x02Can no" + + "t delete disk snapshots, have manual snapshot\x02Cannot purge snapshot o" + + "n enabled cloud provider\x02getReferenceCount fail %s\x02Image is in use" + + "\x02Active download session not expired\x02Cannot delete the last cache" + + "\x02Cannot uncache in status %s\x02storage cache not empty\x02referered " + + "by storages\x02cannot uncache non-customized images\x02storage not cache" + + " image\x02Fail to mark cache status: %s\x02Invalid medium type %s\x02Not" + + " support create %s storage\x02storage has resources with %s\x02storage c" + + "ache is missing\x02storage is enabled\x02can't detach host in status onl" + + "ine\x02host %s storage %s not found\x02Only public cloud support vpcpeer" + + "ing\x02vpc on different cloudprovider peering is not supported\x02ipv4 r" + + "ange overlap\x02cloudprovider %s not supported CrossCloud vpcpeering\x02" + + "cloudprovider %s not supported CrossRegion vpcpeering\x02vpc %s and vpc " + + "%s have already connected\x02invalid external_access_mode %q, want %s" + + "\x02not allow to delete default vpc\x02VPC not empty, please delete netw" + + "ork first\x02VPC not empty, please delete nat gateway first\x02VPC not e" + + "mpty, please delete vpc peering first\x02invalid cidr_block %s\x02Cannot" + + " purge vpc on enabled cloud provider\x02not supported for inter vpc netw" + + "ork %s\x02on-premise vpc cannot sync status\x02For default vpc, only sys" + + "tem level sharing can be set\x02Prohibit making default vpc private\x02s" + + "ecurity group %s status is not ready\x02The security group %s does not h" + + "ave an external id\x02The security group does not belong to the vpc\x02T" + + "he security group and vpc are in different areas\x02The security group a" + + "nd vpc are in different global vpc\x02mapped ip exhausted\x02lb %s does " + + "not belong to account %s\x02server %s does not belong to account %s\x02i" + + "nvalid %d resource type %s\x02waf %s status is not available\x02Not allo" + + "w update rule name\x02bandwidth must be greater than 0\x02mtu must be ra" + + "nge of 0~1000000\x02Currently only onpremise classic VPC supports creati" + + "ng wire\x02wire contains hosts\x02wire contains networks\x02invalid wire" + + " id or name %v\x02Wire %q\x02the vpc %s and this wire have different cla" + + "ss metadata\x02not empty zone: %s\x02failed to found cloudregion %s\x02n" + + "ot support create %s zone\x02invalid loadbalancer_spec %s\x02egress_mbps" + + " shoud be 1-5000 mbps\x02intranet loadbalancer not support bandwidth cha" + + "rge type\x02master slave backendgorup must contain two backend\x02Unsupp" + + "ort backendgorup type %s\x02invalid guest %s\x02Aliyun instance weight m" + + "ust be in the range of 0 ~ 100\x02%s backend group not support change po" + + "rt\x02%s backend group not support change port or weight\x02Unknown back" + + "end group type %s\x02health_check_domain must be in the range of 1 ~ 80" + + "\x02The specified Scheduler %v is invalid for performance sharing loadba" + + "lancer\x02cloudregion %s(%s) not support %v scheduler\x02Snapshot for %s" + + " name can't start with auto, http:// or https://\x02Aliyun %s not suppor" + + "t recovery\x02Aliyun %s only support recover from it self backups\x02Ali" + + "yun %s only 8.0 and 5.7 high_availability local_ssd or 5.6 high_availabi" + + "lity support recovery from it self backups\x02slave dbinstance not suppo" + + "rt prepaid billing type\x02failed to match any skus in the network %s(%s" + + ") zone %s(%s)\x02Not support create readonly dbinstance for MySQL %s %s" + + "\x02Not support create readonly dbinstance for MySQL %s %s with storage " + + "type %s, only support %s\x02Not support create readonly dbinstance for M" + + "ySQL %s\x02SQL Server only support create readonly dbinstance for 2017_e" + + "nt\x02SQL Server cannot have more than seven read-only dbinstances\x02No" + + "t support create readonly dbinstance with master dbinstance engine %s" + "\x02Master dbinstance memory ≥64GB, up to 10 read-only instances are all" + "owed to be created\x02Master dbinstance memory <64GB, up to 5 read-only " + "instances are allowed to be created\x02At least two networks are require" + @@ -3166,961 +3198,952 @@ const en_USData string = "" + // Size: 62119 bytes "16 characters\x02%s is reserved for aliyun %s, please use another\x02inv" + "alid character %s for account name\x02account name can not start or end " + "with _\x02%s only support aliyun %s or %s\x02%s only support aliyun %s" + - "\x02Unknown privilege %s\x02network %s related vpc not found\x02account_" + - "privilege %s only support redis version 4.0\x02invalid cidr range %s, ma" + - "sk length should less than or equal to 24\x02not supported create rule" + - "\x02aws rds not support password character %s\x02aws not support create " + - "rds database\x02aws not support create rds account\x02required at least " + - "%d subnet.\x02required at least %d subnet with at least 8 free ip.\x02Lo" + - "adbalancer's manager %s does not match vpc's(%s(%s)) (%s)\x02all network" + - "s should in the same vpc. (%s).\x02already has one network in the zone %" + - "s. (%s).\x02invalid parameter loadbalancer_spec %s\x02invalid parameter " + - "backendgroup %s\x02invalid loadbalancer_spec %s\x02%s does not currently" + - " support creating loadbalancer acl\x02%s does not currently support crea" + - "ting loadbalancer certificate\x02The backend %s is already registered on" + - " port %d\x02%s request the mask range should be between 16 and 28\x02onl" + - "y us-east-1 support %s\x02Invalid aws waf type %s\x02%s does not current" + - "ly support creating loadbalancer\x02%s request the mask range should be " + - "between 8 and 29\x02Invalid azure waf type %s\x02invalid default action " + - "%s\x02disk and snapshotpolicy should have same domain\x02disk and snapsh" + - "otpolicy should have same project\x02ValidateCreateNatGateway\x02Request" + - "AssociatEip\x02%s does not support creating loadbalancer\x02%s does not " + - "support creating loadbalancer acl\x02%s does not support creating loadba" + - "lancer certificate\x02Invalid cidr_block, want 192.168.0.0/16|10.0.0.0/8" + - "|172.16.0.0/12, got %s\x02Google dbinstance not support prepaid billing " + - "type\x02disk size gb must in range 10 ~ 30720 Gb\x02eip's manager (%s(%s" + - ")) does not match vpc's(%s(%s)) (%s)\x02loadbalancer is using by %d list" + - "ener.\x02loadbalancer is using by %d backendgroup.\x02Not support create" + - " read-only dbinstance for %s\x02Huawei dbinstance name length shoud be 4" + - "~64 characters\x02%s require disk size must in 40 ~ 4000 GB\x02The disk_" + - "size_gb must be an integer multiple of 10\x02Not support create account " + - "for huawei cloud %s instance\x02Huawei rds password cannot be in the sam" + - "e reverse order as the account\x02Not support create database for huawei" + - " cloud %s instance\x02Huawei DBInstance backup name length shoud be 4~64" + - " characters\x02Huawei only supports specified databases with %s\x02Huawe" + - "i DBInstance Disk cannot be thrink\x02Huawei current not support reset d" + - "binstance account password\x02No need to grant or revoke privilege for a" + - "dmin account\x02%s not support recovery\x02Huawei %s rds not support rec" + - "overy from it self rds backup\x02Huawei only %s engine support databases" + - " recovery\x02New databases name can not be one of %s\x02zone mismatch, e" + - "lastic cache sku zone %s != %s\x02elastic cache sku zone (%s) and subnet" + - " zone (%s) mismatch\x02sku %s is soldout\x02%s not support create accoun" + - "t\x02huawei %s mode elastic not support create backup\x02Huawei nat not " + - "support associate eip\x02zone info missing\x02vpc lb is not allowed for " + - "now\x02zone %s(%s) has no lbcluster\x02no viable lbcluster\x02host %s ha" + - "s no access ip\x02error getting host of guest %s\x02error loadbalancer o" + - "f backend group %s\x02region of host %q (%s) != region of loadbalancer %" + - "q (%s)\x02redirect must have at least one of scheme, host, path changed" + - "\x02backend_group argument is missing\x02non redirect lblistener rule mu" + - "st have backend_group set\x02redirect can only be enabled for http/https" + - " listener\x02non http listener must have backend group set\x02%s only su" + - "pports eip charge type %q\x02no available eip network\x02bad network typ" + - "e %q, want %q\x02failed to found vpc for network %s(%s)\x02network %s(%s" + - ") does not belong to %s\x02Kvm snapshot missing storage ??\x02failed to " + - "find %s %s\x02cannot change loadbalancer listener listener_type\x02canno" + - "t change loadbalancer listener listener_port\x02account name '%s' is not" + - " allowed\x02can not make backup in status %s\x02invalid cidr range %s" + - "\x02loadbalancer listener %s is already updating\x02loadbalancer backend" + - "group aready associate with other %s listener\x02loadbalancer aready ass" + - "ociated with fourth layer listener %s\x02path can not be emtpy\x02server" + - " %s with port %d already in used\x02server %s with port %d aready used b" + - "y other %s listener\x02Qcloud Basic MySQL instance not support create ba" + - "ckup\x02Not support create Qcloud databases\x02redis version 2.8 not sup" + - "port create account\x02service_type %s\x02area %s\x02invalid origin type" + - " %s\x02%s request the mask range should be less than or equal to 29\x02E" + - "mpty spec query key\x02Parse spec key %s error: %v\x02Get object error: " + - "%v\x02empty project_id/tenant_id\x02tenant/project %s not found\x02Snaps" + - "hot reference(by disk) count > 0, can not delete\x02disk need at least o" + - "ne of snapshot as backing file\x02Disk %s dosen't attach guest ?\x02Disk" + - " attached Guest has backup, Can't create snapshot\x02Cannot do snapshot " + - "when VM in status %s\x02check disk snapshot count fail %s\x02Disk %s sna" + - "pshot full, cannot take any more\x02This RBD Storage[%s/%s] has already " + - "exist\x02BadGateway\x02InternalServerError\x02ResourceNotReadyError\x02P" + - "aymentError\x02ImageNotFoundError\x02ResourceNotFoundError\x02SpecNotFou" + - "ndError\x02ActionNotFoundError\x02TenantNotFoundError\x02ServerStatusErr" + - "or\x02InvalidFormatError\x02InputParameterError\x02WeakPasswordError\x02" + - "MissingParameterError\x02InsufficientResourceError\x02OutOfResource\x02O" + - "utOfQuotaError\x02OutOfRange\x02OutOfLimit\x02NotSufficientPrivilegeErro" + - "r\x02UnsupportOperationError\x02NotEmptyError\x02BadRequestError\x02Empt" + - "yRequestError\x02UnauthorizedError\x02InvalidCredentialError\x02Forbidde" + - "nError\x02NotAcceptableError\x02DuplicateNameError\x02DuplicateResourceE" + - "rror\x02ConflictError\x02ResourceBusyError\x02RequireLicenseError\x02Pro" + - "tectedResourceError\x02NoProjectError\x02TooLargeEntity\x02TooManyFailed" + - "Attempts\x02TooManyRequests\x02UnsupportedProtocol\x02PolicyDefinitionEr" + - "ror\x02UserNotFound\x02UserLocked\x02UserDisabled\x02WrongPassword\x02In" + - "correctUsernameOrPassword\x02ServiceAbnormal\x02InvalidAccessKey\x02Imag" + - "e %s not found\x02password must be 12 chars of at least one digit, lette" + - "r, uppercase letter and punctuate\x02Duplicate name %s %s\x02Duplicate I" + - "D %s %s\x02no such driver\x02empty DN\x02empty id\x02empty name\x02disab" + - "led user\x02sysadmin is protected\x02cannot remove current user from cur" + - "rent project\x02query error %s\x02missing input field type\x02missing in" + - "put field blob\x02encrypt error %s\x02cannot delete default domain\x02do" + - "main is enabled\x02domain is in use by user\x02domain is in use by group" + - "\x02domain is in use by project\x02domain is in use by role\x02domain is" + - " in use by policy\x02domain contains external resources\x02readonly\x02d" + - "efault domain is protected\x02field %s is readonly\x02endpoint is enable" + - "d\x02missing input field interface\x02missing input field service/servic" + - "e_id\x02not found cert %s\x02get sensitive config requires admin privili" + - "ges\x02cannot update config when enabled and connected\x02cannot update " + - "config when not idle\x02saveConfigs fail %s\x02invalid template\x02missi" + - "ng driver\x02driver %s not supported\x02driver %s already exists\x02cann" + - "ot delete default SQL identity provider\x02cannot delete enabled idp\x02" + - "identity provider with projects\x02enabled domain %s cannot be deleted" + - "\x02cannot update in sync status\x02domain is disabled\x02resource is en" + - "abled\x02fail to decode policy data\x02cannot delete system policy\x02ca" + - "nnot delete enabled policy\x02cannot delete system project\x02project co" + - "ntains external resources\x02project contains user\x02project contains g" + - "roup\x02cannot alter system project name\x02region contains endpoints" + - "\x02missing input field id\x02cannot alter name of role\x02cannot delete" + - " system role\x02role is being assigned to user\x02role is being assigned" + - " to group\x02not supported update context\x02not supported update contex" + - "t %s\x02inconsistent domain for project and roles\x02not supported secon" + - "dary update context %s\x02service contains endpoints\x02service is enabl" + - "ed\x02update config version fail %s\x02cannot alter sysadmin user name" + - "\x02invalid password: %s\x02cannot delete non-local non-sso user\x02user" + - " contains external resources\x02cannot delete system user\x02cannot join" + - " user and group in differnt domain\x02cannot join read-only group\x02can" + - "not leave read-only group\x02version mismatch\x02project disabled\x02use" + - "r disabled\x02invalid token\x02expired token\x02invalid fernet token\x02" + - "invalid auth methods\x02user not found\x02empty auth request\x02user not" + - " in project\x02invalid access key id\x02expired access key\x02unrecogniz" + - "ed input %s\x02unauthorized %s\x02fail to decode request body\x02duplica" + - "te username\x02user not found or not enabled\x02invalid user\x02invalid " + - "project\x02internal server error %s\x02invalid domain\x02missing auth to" + - "ken\x02%s not allow to auth\x02invalid token %s\x02not allow to get usag" + - "e\x02Unauthorized\x02InvalidToken\x02%s service is abnormal, please chec" + - "k service status\x02%s service is abnormal or network error, please try " + - "again\x02%s service dns resolve error, please check dns setting\x02%s se" + - "rvice request timeout, please try again later\x02Name %s not found\x02No" + - " login secret found\x02No password found\x02No ssh password: %s\x02inval" + - "id resources format\x02service %s not found error: %v\x02No login key: %" + - "s\x02Not found kind in query: %v\x02Not found key in query: %v\x02no tot" + - "p for %s\x02no recovery secrets for %s\x02totp secret exists\x02missing " + - "uid\x02missing pids\x02missing pid in pids\x02missing rid in pids\x02mis" + - "sing rid\x02project is not found\x02unsupported action %s\x02cluster sys" + - "tem-default not found\x02cluster system-default no id\x02pod climc not f" + - "ound\x02pod climc no name\x02global-settings not found\x02url is empty" + - "\x02invalid url: %v\x02unsupport type: %s\x02app_id is empty\x02app_secr" + - "et is empty\x02channel is empty\x02parameter %s is empty\x02unsupported " + - "no_data_state %s\x02unsupported execution_error_state %s\x02metric %s is" + - " invalid format, usage .\x02Cannot change state on p" + - "ause alert\x02alert already attached to notification\x02Alert is already" + - " un-paused\x02Alert is already paused\x02Invalid refresh format: %s\x02n" + - "ot find alert %s\x02not find notification %s\x02dashboard_id is empty" + - "\x02can not find dashboard:%s\x02the Comparator is illegal: %s\x02the re" + - "duce is illegal %s\x02the reduce is illegal: %s\x02Alert resource driver" + - " not found\x02Alert resource driver duplicate match\x02Invalid level for" + - "mat: %s\x02Invalid period format: %s\x02Invalid silent_period format: %s" + - "\x02the AlertType is illegal:%s\x02Cannot delete system alert\x02thresho" + - "ld:%s should be number type\x02Default data source not found\x02not supp" + - "ort database\x02not support type %q\x02not found res_id %q\x02not found " + - "res_type %q\x02unsupported resource type %s\x02not found alert notificat" + - "ion used by %s\x02unsupported notification type %s\x02Alert notification" + - " used by %d alert\x02input not json dict\x02not found signature\x02signa" + - "ture error\x02alert_id is empty\x02get resourceRecord err by:%s,err:%v" + - "\x02shield res_name is empty\x02shield res_id is empty\x02can not get re" + - "source by res_id:%s\x02parse start_time: %s err\x02parse end_time: %s er" + - "r\x02end_time is before start_time\x02Invalid interval format: %s\x02Uns" + - "upported notification type\x02Influxdb invalid status\x02Not find execut" + - "or for data source\x02Condition is missing the threshold parameter\x02Co" + - "ndition is missing the type parameter\x02Invalid condition evaluator typ" + - "e\x02Unknown alert condition\x02Alert is missing conditions\x02input con" + - "dition is empty\x02Unkown operator %s\x02select for nothing in query\x02" + - "query duration err: from: %s, to:%s\x02query duration `to` err: %s\x02al" + - "ert condition type is empty\x02Unkown alert condition type: %s\x02securi" + - "ty group id should not be empty\x02failed to find SecurityGroup %s\x02re" + - "p body code is :%s, message:%s,body:%v\x02region:%s no support pull metr" + - "ic at the moment\x02metrics is empty\x02no valid endpoint\x02require val" + - "idated qcloud cross region vpcPeering bandwidth values:[10, 20, 50, 100," + - " 200, 500, 1000],unit Mbps\x02failed parsing url %q: %v\x02unmarshal inp" + - "ut fail %s\x02invalid characters %s\x02bad config\x02network error\x02ss" + - "h protocol error\x02invalid vpc provider\x02invalid ovn database\x02chec" + - "k name duplication fail %s\x02policy is referenced" + "\x02Unknown privilege %s\x02invalid engine %s\x02account_privilege %s on" + + "ly support redis version 4.0\x02invalid cidr range %s, mask length shoul" + + "d less than or equal to 24\x02not supported create rule\x02invalid prior" + + "ity %d, range 1-100\x02invalid ports %s\x02aws rds not support password " + + "character %s\x02aws not support create rds database\x02aws not support c" + + "reate rds account\x02%s request the mask range should be between 16 and " + + "28\x02only us-east-1 support %s\x02Invalid aws waf type %s\x02invalid ac" + + "tion %s, only support allow\x02invalid action %s\x02%s request the mask " + + "range should be between 8 and 29\x02Invalid azure waf type %s\x02invalid" + + " default action %s\x02invalid priority %d, range 100-4096\x02ValidateCre" + + "ateNatGateway\x02RequestAssociateEip\x02Invalid cidr_block, want 192.168" + + ".0.0/16|10.0.0.0/8|172.16.0.0/12, got %s\x02Google dbinstance not suppor" + + "t prepaid billing type\x02disk size gb must in range 10 ~ 30720 Gb\x02in" + + "valid priority %d, range 0-65535\x02loadbalancer backend group %s has al" + + "eady used by other listener\x02Not support create read-only dbinstance f" + + "or %s\x02Huawei dbinstance name length shoud be 4~64 characters\x02%s re" + + "quire disk size must in 40 ~ 4000 GB\x02The disk_size_gb must be an inte" + + "ger multiple of 10\x02Not support create account for huawei cloud %s ins" + + "tance\x02Huawei rds password cannot be in the same reverse order as the " + + "account\x02Not support create database for huawei cloud %s instance\x02H" + + "uawei DBInstance backup name length shoud be 4~64 characters\x02Huawei o" + + "nly supports specified databases with %s\x02Huawei DBInstance Disk canno" + + "t be thrink\x02Huawei current not support reset dbinstance account passw" + + "ord\x02No need to grant or revoke privilege for admin account\x02%s not " + + "support recovery\x02Huawei %s rds not support recovery from it self rds " + + "backup\x02Huawei only %s engine support databases recovery\x02New databa" + + "ses name can not be one of %s\x02invalid maintain_start_time %s\x02%s no" + + "t support create account\x02huawei %s mode elastic not support create ba" + + "ckup\x02Huawei nat not support associate eip\x02not support update secur" + + "ity group rule\x02no usable network in vpc %s(%s)\x02only network type %" + + "q is allowed\x02zone %s has no lbcluster\x02no viable lbcluster\x02%s on" + + "ly supports eip charge type %q\x02no available eip network\x02bad networ" + + "k type %q, want %q\x02requested ip %s is occupied!\x02failed to found vp" + + "c for network %s(%s)\x02network %s(%s) does not belong to %s\x02Kvm snap" + + "shot missing storage ??\x02Not support create elasticcache\x02invalid pr" + + "iority %d\x02invalid protocol %s\x02internal error: unexpected backend t" + + "ype %s\x02failed to find %s %s\x02account name '%s' is not allowed\x02ca" + + "n not make backup in status %s\x02invalid cidr range %s\x02manager %s is" + + " not %s cloud\x02ValidateCreateLoadbalancerListenerData\x02path can not " + + "be emtpy\x02Qcloud Basic MySQL instance not support create backup\x02Not" + + " support create Qcloud databases\x02redis version 2.8 not support create" + + " account\x02service_type %s\x02area %s\x02invalid origin type %s\x02inva" + + "lid priority %d, range 0-99\x02%s request the mask range should be less " + + "than or equal to 29\x02protocol %s\x02invalid priority %d, range 1-3\x02" + + "Empty spec query key\x02Parse spec key %s error: %v\x02Get object error:" + + " %v\x02empty project_id/tenant_id\x02tenant/project %s not found\x02not " + + "allow to access admin key\x02Snapshot reference(by disk) count > 0, can " + + "not delete\x02disk need at least one of snapshot as backing file\x02Disk" + + " %s dosen't attach guest ?\x02Disk attached Guest has backup, Can't crea" + + "te snapshot\x02Cannot do snapshot when VM in status %s\x02check disk sna" + + "pshot count fail %s\x02Disk %s snapshot full, cannot take any more\x02Th" + + "is RBD Storage[%s/%s] has already exist\x02start_date should befor end_d" + + "ate\x02The time interval exceeds 72 hours\x02The time interval exceeds 3" + + "1 days\x02The time interval exceeds 1 year\x02The time interval exceeds " + + "20 year\x02invalid interval %s\x02no such server %s\x02can only apply sc" + + "ripts to %s server\x02BadGateway\x02NotImplementedError\x02InternalServe" + + "rError\x02ResourceNotReadyError\x02PaymentError\x02ImageNotFoundError" + + "\x02ResourceNotFoundError\x02SpecNotFoundError\x02ActionNotFoundError" + + "\x02TenantNotFoundError\x02ServerStatusError\x02InvalidStatusError\x02In" + + "validIdpStatus\x02InvalidFormatError\x02InputParameterError\x02WeakPassw" + + "ordError\x02MissingParameterError\x02InsufficientResourceError\x02OutOfR" + + "esource\x02OutOfQuotaError\x02OutOfRange\x02OutOfLimit\x02NotSufficientP" + + "rivilegeError\x02UnsupportOperationError\x02NotSupportedError\x02NotEmpt" + + "yError\x02BadRequestError\x02EmptyRequestError\x02UnauthorizedError\x02I" + + "nvalidCredentialError\x02ForbiddenError\x02NotFoundError\x02NotAcceptabl" + + "eError\x02DuplicateNameError\x02DuplicateResourceError\x02ConflictError" + + "\x02DuplicateIdError\x02ResourceBusyError\x02RequireLicenseError\x02Time" + + "outError\x02ProtectedResourceError\x02NoProjectError\x02InvalidProvider" + + "\x02NoBalancePermission\x02TooLargeEntity\x02TooManyFailedAttempts\x02To" + + "oManyRequests\x02UnsupportedProtocol\x02PolicyDefinitionError\x02UserNot" + + "Found\x02UserLocked\x02UserDisabled\x02WrongPassword\x02IncorrectUsernam" + + "eOrPassword\x02ServiceAbnormal\x02InvalidAccessKey\x02NoPermission\x02Im" + + "age %s not found\x02password must be 12 chars of at least one digit, let" + + "ter, uppercase letter and punctuate\x02Duplicate name %s %s\x02Duplicate" + + " ID %s %s\x02no such driver\x02empty DN\x02empty id\x02empty name\x02dis" + + "abled user\x02sysadmin is protected\x02query error %s\x02invalid time_zo" + + "ne %s\x02missing input field type\x02missing input field blob\x02encrypt" + + " error %s\x02cannot delete default domain\x02domain is enabled\x02domain" + + " is in use by user\x02domain is in use by group\x02domain is in use by p" + + "roject\x02domain is in use by role\x02domain is in use by policy\x02read" + + "only\x02default domain is protected\x02field %s is readonly\x02endpoint " + + "is enabled\x02missing input field interface\x02missing input field servi" + + "ce/service_id\x02not found cert %s\x02get sensitive config requires admi" + + "n priviliges\x02cannot update config when enabled and connected\x02canno" + + "t update config when not idle\x02saveConfigs fail %s\x02invalid template" + + "\x02missing driver\x02driver %s not supported\x02driver %s already exist" + + "s\x02cannot delete default SQL identity provider\x02cannot delete enable" + + "d idp\x02identity provider with projects\x02enabled domain %s cannot be " + + "deleted\x02cannot update in sync status\x02domain is disabled\x02resourc" + + "e is enabled\x02fail to decode policy data\x02cannot delete system polic" + + "y\x02cannot delete enabled policy\x02cannot delete system project\x02pro" + + "ject contains user\x02project contains group\x02cannot alter system proj" + + "ect name\x02not allow clean projects\x02region contains endpoints\x02mis" + + "sing input field id\x02cannot alter name of role\x02cannot delete system" + + " role\x02role is being assigned to user\x02role is being assigned to gro" + + "up\x02not supported update context\x02not supported update context %s" + + "\x02inconsistent domain for project and roles\x02not supported secondary" + + " update context %s\x02service contains endpoints\x02service is enabled" + + "\x02update config version fail %s\x02cannot alter sysadmin user name\x02" + + "invalid password: %s\x02cannot delete non-local non-sso user\x02cannot d" + + "elete system user\x02cannot join user and group in differnt domain\x02ca" + + "nnot join read-only group\x02cannot leave read-only group\x02[auth] vers" + + "ion mismatch\x02[auth] project disabled\x02[auth] user disabled\x02[auth" + + "] invalid token\x02[auth] expired token\x02[auth] invalid fernet token" + + "\x02[auth] invalid auth methods\x02[auth] user not found\x02[auth] domai" + + "n is disabled\x02[auth] empty auth request\x02[auth] user not in project" + + "\x02[auth] invalid access key id\x02[auth] expired access key\x02[auth] " + + "token not found\x02unrecognized input %s\x02unauthorized %s\x02fail to d" + + "ecode request body\x02duplicate username\x02user not found or not enable" + + "d\x02invalid user\x02invalid project\x02internal server error %s\x02inva" + + "lid domain\x02missing auth token\x02%s not allow to auth\x02%s not allow" + + " to delete token\x02%s not allow to list invalid tokens\x02empty request" + + " body\x02%s not allow to check policies\x02invalid token %s\x02not allow" + + " to get usage\x02Unauthorized\x02InvalidToken\x02%s service is abnormal," + + " please check service status\x02%s service is abnormal or network error," + + " please try again\x02%s service dns resolve error, please check dns sett" + + "ing\x02%s service request timeout, please try again later\x02Name %s not" + + " found\x02No login secret found\x02No password found\x02No ssh password:" + + " %s\x02invalid resources format\x02service %s not found error: %v\x02No " + + "login key: %s\x02Not found kind in query: %v\x02Not found key in query: " + + "%v\x02no totp for %s\x02no recovery secrets for %s\x02totp secret exists" + + "\x02missing uid\x02missing pids\x02missing pid in pids\x02missing rid in" + + " pids\x02missing rid\x02project is not found\x02unsupported action %s" + + "\x02cluster system-default no id\x02pod climc not found\x02pod climc no " + + "name\x02auth_url not found\x02url is empty\x02invalid url: %v\x02unsuppo" + + "rt type: %s\x02app_id is empty\x02app_secret is empty\x02channel, robot_" + + "ids or role_ids is empty\x02parameter %s is empty\x02unsupported no_data" + + "_state %s\x02unsupported execution_error_state %s\x02metric %s is invali" + + "d format, usage .\x02Cannot change state on pause al" + + "ert\x02alert already attached to notification\x02Alert is already un-pau" + + "sed\x02Alert is already paused\x02Invalid refresh format: %s\x02not find" + + " alert %s\x02not find notification %s\x02dashboard_id is empty\x02can no" + + "t find dashboard:%s\x02the Comparator is illegal: %s\x02the reduce is il" + + "legal %s\x02the reduce is illegal: %s\x02Alert resource driver not found" + + "\x02Alert resource driver duplicate match\x02Invalid level format: %s" + + "\x02Invalid period format: %s\x02Invalid silent_period format: %s\x02Inv" + + "alid AlertType: %s\x02unsupport scope %s\x02Cannot delete system alert" + + "\x02threshold:%s should be number type\x02not support database\x02not su" + + "pport type %q\x02Invalid metric_type %v\x02not found res_id %q\x02not fo" + + "und res_type %q\x02unsupported resource type %s\x02not found alert notif" + + "ication used by %s\x02unsupported notification type %s\x02Alert notifica" + + "tion used by %d alert\x02input not json dict\x02not found signature\x02s" + + "ignature error\x02alert_id is empty\x02get resourceRecord err by:%s,err" + + ":%v\x02shield res_name is empty\x02shield res_id is empty\x02can not get" + + " resource by res_id:%s\x02parse start_time: %s err\x02parse end_time: %s" + + " err\x02end_time is before start_time\x02soffset %q is not integer\x02sl" + + "imit %q is not integer\x02Invalid interval format: %s\x02invalid metric_" + + "name %s\x02The query interval is greater than one hour\x02Unsupported no" + + "tification type\x02Influxdb invalid status\x02VictoriaMetrics invalid re" + + "sponse\x02Condition is missing the threshold parameter\x02Condition is m" + + "issing the type parameter\x02Invalid condition evaluator type\x02Unknown" + + " alert condition\x02Alert is missing conditions\x02input condition is em" + + "pty\x02Unkown operator %s\x02select for nothing in query\x02alert condit" + + "ion type is empty\x02Unkown alert condition type: %s\x02failed parsing u" + + "rl %q: %v\x02bad ip\x02stop dap search\x02unmarshal input fail %s\x02inv" + + "alid characters %s\x02bad config\x02network error\x02ssh protocol error" + + "\x02invalid vpc provider\x02invalid ovn database\x02user not found\x02ch" + + "eck name duplication fail %s\x02policy is referenced" -var zh_CNIndex = []uint32{ // 1830 elements +var zh_CNIndex = []uint32{ // 1852 elements // Entry 0 - 1F 0x00000000, 0x0000001b, 0x0000002e, 0x00000049, 0x00000062, 0x00000075, 0x00000094, 0x000000bf, - 0x000000ea, 0x00000100, 0x00000125, 0x0000014a, - 0x0000015d, 0x0000016c, 0x0000018b, 0x000001a4, - 0x000001c0, 0x000001cd, 0x000001e0, 0x000001fa, - 0x00000204, 0x00000217, 0x00000240, 0x0000025c, - 0x00000271, 0x0000028b, 0x000002a0, 0x000002bf, - 0x000002dd, 0x000002ff, 0x0000032a, 0x00000354, + 0x000000ea, 0x000000ea, 0x00000100, 0x00000125, + 0x0000014a, 0x0000015d, 0x0000016c, 0x0000018b, + 0x000001a4, 0x000001c0, 0x000001cd, 0x000001e0, + 0x000001fa, 0x00000204, 0x00000217, 0x00000240, + 0x0000025c, 0x00000271, 0x0000028b, 0x000002a0, + 0x000002bf, 0x000002dd, 0x000002f6, 0x000002f6, // Entry 20 - 3F - 0x0000036c, 0x0000038a, 0x000003a8, 0x000003c6, - 0x000003d6, 0x000003eb, 0x000003eb, 0x00000408, - 0x00000418, 0x00000431, 0x0000044a, 0x00000466, - 0x00000466, 0x00000466, 0x00000466, 0x0000047e, - 0x00000498, 0x000004aa, 0x000004bc, 0x000004df, - 0x000004f2, 0x00000505, 0x00000524, 0x00000534, - 0x0000054f, 0x0000054f, 0x0000056a, 0x00000587, - 0x00000587, 0x0000059c, 0x000005af, 0x000005c7, + 0x000002f6, 0x000002f6, 0x000002f6, 0x000002f6, + 0x00000318, 0x00000343, 0x0000036d, 0x00000385, + 0x000003a3, 0x000003c1, 0x000003df, 0x000003ef, + 0x00000404, 0x00000404, 0x00000421, 0x00000431, + 0x0000044a, 0x00000463, 0x0000047f, 0x00000492, + 0x00000492, 0x000004ab, 0x000004c3, 0x000004dd, + 0x000004ef, 0x00000501, 0x00000524, 0x00000537, + 0x0000054a, 0x00000569, 0x00000579, 0x00000594, // Entry 40 - 5F - 0x000005dc, 0x000005f4, 0x00000603, 0x00000624, - 0x00000636, 0x00000649, 0x00000649, 0x00000664, - 0x00000681, 0x0000069a, 0x000006b2, 0x000006d0, - 0x000006f6, 0x0000071f, 0x0000074b, 0x00000774, - 0x00000781, 0x00000797, 0x000007a7, 0x000007c3, - 0x000007d2, 0x000007e9, 0x00000804, 0x0000081a, - 0x00000830, 0x00000841, 0x0000085c, 0x00000877, - 0x0000088a, 0x000008a6, 0x000008bc, 0x000008ce, + 0x000005ab, 0x000005c6, 0x000005e3, 0x000005e3, + 0x000005f8, 0x0000060b, 0x00000623, 0x00000638, + 0x00000650, 0x0000065f, 0x00000680, 0x00000692, + 0x000006a5, 0x000006bb, 0x000006bb, 0x000006d6, + 0x000006f3, 0x0000070c, 0x00000724, 0x00000742, + 0x00000768, 0x00000791, 0x000007bd, 0x000007e6, + 0x000007f8, 0x00000817, 0x00000841, 0x00000864, + 0x00000882, 0x0000089c, 0x000008c2, 0x000008d9, // Entry 60 - 7F - 0x00000905, 0x00000917, 0x0000093d, 0x00000967, - 0x00000994, 0x000009cd, 0x00000a20, 0x00000a42, - 0x00000a61, 0x00000a61, 0x00000a61, 0x00000a79, - 0x00000aaa, 0x00000ac6, 0x00000adf, 0x00000b0b, - 0x00000b0b, 0x00000b25, 0x00000b35, 0x00000b47, - 0x00000b64, 0x00000b85, 0x00000b99, 0x00000bb0, - 0x00000bd8, 0x00000be8, 0x00000c09, 0x00000c09, - 0x00000c2d, 0x00000c3f, 0x00000c5b, 0x00000c70, + 0x000008f7, 0x00000914, 0x0000093b, 0x00000964, + 0x00000986, 0x000009a8, 0x000009ce, 0x000009f3, + 0x00000a13, 0x00000a38, 0x00000a63, 0x00000a80, + 0x00000a9f, 0x00000abc, 0x00000ada, 0x00000b00, + 0x00000b23, 0x00000b4b, 0x00000b6c, 0x00000b93, + 0x00000bae, 0x00000bc7, 0x00000bed, 0x00000c1b, + 0x00000c3d, 0x00000c5f, 0x00000c83, 0x00000ca5, + 0x00000cb2, 0x00000cc8, 0x00000cd8, 0x00000cf4, // Entry 80 - 9F - 0x00000c8b, 0x00000c8b, 0x00000cda, 0x00000cf0, - 0x00000cf0, 0x00000cf0, 0x00000cf0, 0x00000cf0, - 0x00000cf0, 0x00000d12, 0x00000d2e, 0x00000d58, - 0x00000d7a, 0x00000d90, 0x00000da2, 0x00000dc0, - 0x00000dcd, 0x00000de6, 0x00000e02, 0x00000e14, - 0x00000e14, 0x00000e40, 0x00000e4f, 0x00000e6c, - 0x00000e91, 0x00000eb5, 0x00000edc, 0x00000ef9, - 0x00000f17, 0x00000f58, 0x00000f6d, 0x00000fb0, + 0x00000d03, 0x00000d1a, 0x00000d46, 0x00000d6f, + 0x00000d8a, 0x00000da0, 0x00000db6, 0x00000dc7, + 0x00000de2, 0x00000dfd, 0x00000e10, 0x00000e20, + 0x00000e3c, 0x00000e52, 0x00000e68, 0x00000e78, + 0x00000eaf, 0x00000ec1, 0x00000ee7, 0x00000f11, + 0x00000f3e, 0x00000f77, 0x00000fca, 0x00000fec, + 0x0000100b, 0x00001032, 0x00001059, 0x00001071, + 0x000010a1, 0x000010d2, 0x000010ee, 0x00001107, // Entry A0 - BF - 0x00000fcb, 0x00000fe6, 0x00000ff8, 0x00000fff, - 0x0000102d, 0x00001059, 0x00001072, 0x00001088, - 0x00001098, 0x00001098, 0x00001098, 0x000010b3, - 0x000010c3, 0x000010d9, 0x000010d9, 0x000010f1, - 0x00001108, 0x0000113f, 0x0000116d, 0x0000118f, - 0x000011b1, 0x000011d8, 0x000011ec, 0x00001203, - 0x0000121a, 0x00001241, 0x00001269, 0x00001296, - 0x000012bf, 0x000012d1, 0x000012e6, 0x000012f0, + 0x00001133, 0x00001188, 0x000011a2, 0x000011b2, + 0x000011c4, 0x000011e1, 0x00001202, 0x00001247, + 0x0000125b, 0x00001272, 0x0000129a, 0x000012aa, + 0x000012cb, 0x00001300, 0x00001324, 0x0000135c, + 0x00001378, 0x0000138d, 0x000013a8, 0x000013c2, + 0x00001411, 0x00001411, 0x00001411, 0x00001411, + 0x00001411, 0x00001411, 0x00001433, 0x0000144f, + 0x00001479, 0x0000149b, 0x000014b1, 0x000014c3, // Entry C0 - DF - 0x000012f9, 0x00001309, 0x00001310, 0x0000131a, - 0x00001324, 0x00001336, 0x00001352, 0x00001371, - 0x00001384, 0x000013b0, 0x000013d5, 0x00001408, - 0x00001471, 0x00001497, 0x000014b9, 0x000014d8, - 0x000014fd, 0x00001516, 0x00001540, 0x00001564, - 0x00001585, 0x000015ad, 0x000015c8, 0x000015e8, - 0x000015e8, 0x000015e8, 0x0000160e, 0x00001620, - 0x00001635, 0x0000166c, 0x00001694, 0x000016c5, + 0x000014e1, 0x000014ee, 0x00001507, 0x00001523, + 0x00001535, 0x00001535, 0x00001561, 0x00001570, + 0x0000158d, 0x000015b2, 0x000015d6, 0x000015fd, + 0x0000161a, 0x00001638, 0x00001679, 0x0000168e, + 0x000016a9, 0x000016c4, 0x00001707, 0x00001719, + 0x00001720, 0x0000174e, 0x0000177a, 0x00001793, + 0x000017a9, 0x000017b9, 0x000017b9, 0x000017b9, + 0x000017d4, 0x000017e4, 0x000017fa, 0x000017fa, // Entry E0 - FF - 0x000016e1, 0x000016fc, 0x00001715, 0x0000173e, - 0x00001753, 0x00001769, 0x000017c4, 0x000017f8, - 0x0000181d, 0x0000183e, 0x00001866, 0x0000188c, - 0x000018b4, 0x000018b4, 0x000018b4, 0x000018b4, - 0x000018b4, 0x000018b4, 0x000018d1, 0x00001901, - 0x0000192b, 0x0000194c, 0x0000197b, 0x0000197b, - 0x000019a9, 0x000019c7, 0x000019f0, 0x00001a08, - 0x00001a2d, 0x00001a5e, 0x00001a77, 0x00001a93, + 0x00001812, 0x00001829, 0x00001860, 0x0000188e, + 0x000018b0, 0x000018d2, 0x000018f9, 0x0000190d, + 0x00001924, 0x0000193b, 0x00001962, 0x0000198a, + 0x000019b7, 0x000019e0, 0x000019f3, 0x00001a1e, + 0x00001a4a, 0x00001a6f, 0x00001aa2, 0x00001b0b, + 0x00001b31, 0x00001b53, 0x00001b72, 0x00001b97, + 0x00001bb0, 0x00001bda, 0x00001bfe, 0x00001c1f, + 0x00001c47, 0x00001c62, 0x00001c82, 0x00001ca1, // Entry 100 - 11F - 0x00001abb, 0x00001ad0, 0x00001aef, 0x00001b05, - 0x00001b45, 0x00001b85, 0x00001ba6, 0x00001be5, - 0x00001bef, 0x00001c0a, 0x00001c29, 0x00001c47, - 0x00001c65, 0x00001c7b, 0x00001cbd, 0x00001cde, - 0x00001cf4, 0x00001cf4, 0x00001d1a, 0x00001d3f, - 0x00001d5d, 0x00001d86, 0x00001dab, 0x00001dc8, - 0x00001de4, 0x00001e0f, 0x00001e28, 0x00001e68, - 0x00001eab, 0x00001edf, 0x00001f04, 0x00001f35, + 0x00001ccb, 0x00001cf1, 0x00001d03, 0x00001d28, + 0x00001d3d, 0x00001d74, 0x00001da5, 0x00001dc1, + 0x00001ddc, 0x00001df5, 0x00001e1e, 0x00001e48, + 0x00001e5d, 0x00001e5d, 0x00001e72, 0x00001e88, + 0x00001ee3, 0x00001ee3, 0x00001f17, 0x00001f3c, + 0x00001f59, 0x00001f7a, 0x00001fa2, 0x00001fc8, + 0x00001ff0, 0x0000201a, 0x0000203f, 0x00002069, + 0x00002079, 0x00002079, 0x00002079, 0x00002079, // Entry 120 - 13F - 0x00001f55, 0x00001f65, 0x00001f86, 0x00001fac, - 0x00001fce, 0x00001ffc, 0x00002024, 0x00002031, - 0x00002051, 0x00002069, 0x0000209d, 0x000020b9, - 0x000020d5, 0x000020fd, 0x000020fd, 0x000020fd, - 0x000020fd, 0x00002117, 0x00002117, 0x00002117, - 0x0000212f, 0x0000212f, 0x0000212f, 0x0000212f, - 0x0000212f, 0x0000214f, 0x00002166, 0x0000217d, - 0x0000219b, 0x000021bd, 0x000021d6, 0x000021e6, + 0x00002096, 0x00002096, 0x000020c6, 0x000020e7, + 0x00002116, 0x00002142, 0x00002170, 0x0000218e, + 0x000021b7, 0x000021cf, 0x000021f4, 0x00002225, + 0x0000223e, 0x0000225a, 0x00002282, 0x00002297, + 0x000022b6, 0x000022cc, 0x0000230c, 0x0000234c, + 0x0000236d, 0x000023ac, 0x000023b6, 0x000023d1, + 0x000023f0, 0x0000240e, 0x0000242c, 0x00002442, + 0x00002484, 0x000024a5, 0x000024bb, 0x000024bb, // Entry 140 - 15F - 0x000021fd, 0x00002214, 0x00002224, 0x0000223c, - 0x00002249, 0x00002264, 0x00002274, 0x00002289, - 0x000022a5, 0x000022be, 0x000022e3, 0x000022fb, - 0x0000230c, 0x0000232b, 0x00002343, 0x0000235b, - 0x00002376, 0x00002390, 0x000023ac, 0x000023c5, - 0x000023ea, 0x00002402, 0x0000241a, 0x0000243f, - 0x00002487, 0x000024af, 0x000024c1, 0x000024e6, - 0x00002508, 0x0000252a, 0x0000254c, 0x00002562, + 0x000024d8, 0x000024d8, 0x000024d8, 0x000024fe, + 0x00002523, 0x00002541, 0x0000256a, 0x0000258f, + 0x000025ab, 0x000025d6, 0x000025ef, 0x000025ef, + 0x00002635, 0x00002669, 0x0000268e, 0x0000268e, + 0x000026bf, 0x000026df, 0x000026ef, 0x00002710, + 0x00002736, 0x00002758, 0x00002786, 0x000027ae, + 0x000027bb, 0x000027db, 0x000027f3, 0x00002827, + 0x00002843, 0x0000285f, 0x00002887, 0x00002887, // Entry 160 - 17F - 0x0000257e, 0x0000259a, 0x000025bb, 0x000025d4, - 0x000025ed, 0x0000260b, 0x00002623, 0x00002641, - 0x00002662, 0x0000267c, 0x0000268e, 0x0000269f, - 0x000026c3, 0x000026e6, 0x00002702, 0x00002721, - 0x00002739, 0x00002755, 0x00002755, 0x00002755, - 0x00002755, 0x00002774, 0x0000278a, 0x0000279a, - 0x000027aa, 0x000027cf, 0x000027e5, 0x000027fd, - 0x00002809, 0x00002828, 0x00002848, 0x0000285e, + 0x0000289f, 0x0000289f, 0x0000289f, 0x0000289f, + 0x0000289f, 0x0000289f, 0x0000289f, 0x0000289f, + 0x0000289f, 0x0000289f, 0x000028b6, 0x000028d6, + 0x000028ed, 0x00002904, 0x00002922, 0x00002944, + 0x0000295d, 0x0000296d, 0x00002984, 0x00002994, + 0x000029a1, 0x000029bc, 0x000029cc, 0x000029e1, + 0x000029fd, 0x00002a16, 0x00002a3b, 0x00002a53, + 0x00002a64, 0x00002a83, 0x00002a9b, 0x00002ab3, // Entry 180 - 19F - 0x00002871, 0x00002886, 0x000028a3, 0x000028b8, - 0x000028c8, 0x000028c8, 0x000028e8, 0x00002903, - 0x00002924, 0x0000293f, 0x00002954, 0x00002984, - 0x00002996, 0x000029bd, 0x000029e1, 0x000029f9, - 0x00002a12, 0x00002a1e, 0x00002a36, 0x00002a62, - 0x00002a62, 0x00002a85, 0x00002a95, 0x00002ab3, - 0x00002ad4, 0x00002b0f, 0x00002b22, 0x00002b33, - 0x00002b53, 0x00002b6f, 0x00002b6f, 0x00002b91, + 0x00002ace, 0x00002ae8, 0x00002b04, 0x00002b1d, + 0x00002b42, 0x00002b5a, 0x00002b72, 0x00002b97, + 0x00002bdf, 0x00002c07, 0x00002c19, 0x00002c3e, + 0x00002c60, 0x00002c82, 0x00002ca4, 0x00002cba, + 0x00002cd6, 0x00002cf2, 0x00002d13, 0x00002d2c, + 0x00002d45, 0x00002d63, 0x00002d7b, 0x00002d99, + 0x00002dba, 0x00002dd4, 0x00002de6, 0x00002df7, + 0x00002e1b, 0x00002e37, 0x00002e56, 0x00002e6e, // Entry 1A0 - 1BF - 0x00002bbc, 0x00002bdc, 0x00002bf2, 0x00002c1e, - 0x00002c37, 0x00002c4f, 0x00002c64, 0x00002c85, - 0x00002c95, 0x00002cb1, 0x00002cd3, 0x00002cf4, - 0x00002d2f, 0x00002d61, 0x00002d9f, 0x00002dcf, - 0x00002df8, 0x00002e21, 0x00002e4d, 0x00002e78, - 0x00002ea4, 0x00002f01, 0x00002f2c, 0x00002f5b, - 0x00002f65, 0x00002f77, 0x00002f98, 0x00002fb6, - 0x00002fce, 0x00002fe9, 0x00003006, 0x0000302d, + 0x00002e8a, 0x00002eaf, 0x00002eaf, 0x00002eaf, + 0x00002ece, 0x00002ee4, 0x00002ef4, 0x00002f16, + 0x00002f3b, 0x00002f51, 0x00002f69, 0x00002f75, + 0x00002f94, 0x00002fb4, 0x00002fca, 0x00002fdd, + 0x00002ff2, 0x0000300f, 0x00003024, 0x00003034, + 0x00003059, 0x00003075, 0x00003095, 0x000030b0, + 0x000030d1, 0x000030ec, 0x00003101, 0x00003131, + 0x00003143, 0x0000315b, 0x00003174, 0x00003180, // Entry 1C0 - 1DF - 0x0000304e, 0x00003067, 0x00003090, 0x000030cb, - 0x000030ef, 0x00003110, 0x00003144, 0x00003177, - 0x000031a2, 0x000031cc, 0x00003211, 0x0000325e, - 0x00003273, 0x000032a4, 0x000032cd, 0x000032f2, - 0x00003308, 0x0000331d, 0x0000334a, 0x00003363, - 0x0000338b, 0x000033ac, 0x000033e5, 0x00003410, - 0x00003432, 0x0000344f, 0x00003470, 0x00003491, - 0x000034c9, 0x000034db, 0x000034f2, 0x00003526, + 0x00003198, 0x00003198, 0x000031bb, 0x000031cb, + 0x000031e9, 0x0000320a, 0x00003245, 0x00003258, + 0x00003269, 0x00003289, 0x000032a5, 0x000032c7, + 0x000032f2, 0x00003312, 0x00003328, 0x00003354, + 0x00003375, 0x0000338a, 0x0000339a, 0x000033b6, + 0x000033d8, 0x000033f9, 0x00003434, 0x00003466, + 0x000034a4, 0x000034d4, 0x000034fd, 0x00003526, + 0x00003552, 0x0000357d, 0x000035a9, 0x00003606, // Entry 1E0 - 1FF - 0x00003553, 0x0000357a, 0x0000359d, 0x000035c4, - 0x000035d7, 0x000035f2, 0x00003610, 0x00003629, - 0x0000364d, 0x0000366e, 0x0000368f, 0x000036b6, - 0x000036e9, 0x00003716, 0x00003729, 0x00003754, - 0x00003771, 0x00003795, 0x000037af, 0x000037c4, - 0x000037f4, 0x00003819, 0x0000384a, 0x00003866, - 0x00003880, 0x00003895, 0x000038c5, 0x000038f3, - 0x00003912, 0x0000393d, 0x0000396e, 0x00003980, + 0x00003631, 0x00003660, 0x0000366a, 0x0000367c, + 0x0000369d, 0x000036bb, 0x000036d3, 0x000036ee, + 0x0000370b, 0x00003732, 0x00003753, 0x0000376c, + 0x00003795, 0x000037d0, 0x000037f4, 0x00003815, + 0x00003849, 0x0000387c, 0x000038a7, 0x000038d1, + 0x00003916, 0x00003963, 0x00003978, 0x000039a9, + 0x000039d2, 0x000039f7, 0x00003a0d, 0x00003a22, + 0x00003a4f, 0x00003a68, 0x00003a90, 0x00003ab1, // Entry 200 - 21F - 0x000039be, 0x000039be, 0x000039d7, 0x00003a19, - 0x00003a35, 0x00003a6b, 0x00003aa2, 0x00003ad5, - 0x00003aed, 0x00003b07, 0x00003b24, 0x00003b35, - 0x00003b4b, 0x00003b65, 0x00003b9d, 0x00003bb0, - 0x00003bca, 0x00003be4, 0x00003bee, 0x00003c00, - 0x00003c1d, 0x00003c3c, 0x00003c62, 0x00003c7b, - 0x00003ca2, 0x00003cc9, 0x00003ce4, 0x00003cf6, - 0x00003d23, 0x00003d41, 0x00003d59, 0x00003d71, + 0x00003aea, 0x00003b15, 0x00003b37, 0x00003b37, + 0x00003b37, 0x00003b51, 0x00003b51, 0x00003b72, + 0x00003b93, 0x00003bcb, 0x00003bcb, 0x00003bdd, + 0x00003bf4, 0x00003c28, 0x00003c55, 0x00003c7c, + 0x00003c9f, 0x00003c9f, 0x00003cc6, 0x00003cd9, + 0x00003cf4, 0x00003d12, 0x00003d2b, 0x00003d4f, + 0x00003d70, 0x00003d91, 0x00003db8, 0x00003deb, + 0x00003e18, 0x00003e2b, 0x00003e56, 0x00003e73, // Entry 220 - 23F - 0x00003d8c, 0x00003da7, 0x00003dd4, 0x00003def, - 0x00003e16, 0x00003e47, 0x00003e7a, 0x00003eab, - 0x00003ec5, 0x00003ee6, 0x00003f07, 0x00003f2c, - 0x00003f52, 0x00003f7b, 0x00003f97, 0x00003fb8, - 0x00003fd3, 0x00003fdd, 0x00003ff2, 0x00004007, - 0x00004037, 0x0000404f, 0x00004082, 0x0000409a, - 0x000040b8, 0x000040cc, 0x000040f3, 0x00004132, - 0x00004159, 0x00004183, 0x0000419b, 0x000041c8, + 0x00003e8d, 0x00003ea2, 0x00003ed2, 0x00003ef7, + 0x00003f28, 0x00003f44, 0x00003f63, 0x00003f8e, + 0x00003fbe, 0x00003fec, 0x0000401d, 0x0000402f, + 0x0000406d, 0x0000406d, 0x00004086, 0x00004086, + 0x000040c8, 0x000040e4, 0x0000411a, 0x00004151, + 0x00004184, 0x000041ba, 0x000041f0, 0x00004206, + 0x00004220, 0x00004232, 0x0000424f, 0x0000426c, + 0x0000428b, 0x000042b1, 0x000042ca, 0x000042f7, // Entry 240 - 25F - 0x000041ed, 0x00004212, 0x00004247, 0x00004279, - 0x000042a5, 0x000042da, 0x0000430a, 0x00004328, - 0x0000434b, 0x0000436a, 0x00004380, 0x00004396, - 0x000043c0, 0x00004408, 0x00004429, 0x00004462, - 0x00004492, 0x00004499, 0x000044a6, 0x000044bf, - 0x000044f7, 0x00004518, 0x00004537, 0x00004565, - 0x0000459a, 0x000045bf, 0x000045e8, 0x000045fd, - 0x00004641, 0x00004653, 0x00004679, 0x00004691, + 0x00004312, 0x00004330, 0x00004330, 0x00004348, + 0x00004360, 0x00004393, 0x000043ab, 0x000043c9, + 0x000043dd, 0x00004404, 0x00004443, 0x0000446a, + 0x00004494, 0x00004494, 0x000044ac, 0x000044d9, + 0x000044fe, 0x00004523, 0x00004555, 0x00004581, + 0x000045b6, 0x000045e6, 0x00004604, 0x00004627, + 0x00004646, 0x0000465c, 0x00004672, 0x0000469c, + 0x000046e4, 0x00004705, 0x0000473e, 0x0000476e, // Entry 260 - 27F - 0x000046ad, 0x000046c8, 0x000046e4, 0x000046ff, - 0x0000472a, 0x00004746, 0x00004770, 0x0000479b, - 0x000047b7, 0x000047d6, 0x000047f6, 0x00004815, - 0x0000483b, 0x0000483b, 0x0000486a, 0x0000486a, - 0x00004891, 0x000048af, 0x000048dc, 0x000048dc, - 0x000048fd, 0x0000490d, 0x0000494d, 0x00004970, - 0x00004994, 0x000049ca, 0x000049ca, 0x000049ca, - 0x000049ca, 0x000049ef, 0x00004a0e, 0x00004a2d, + 0x00004775, 0x00004782, 0x0000479b, 0x000047d3, + 0x000047f2, 0x00004820, 0x00004855, 0x0000487a, + 0x000048a3, 0x000048b8, 0x000048fc, 0x0000490e, + 0x00004934, 0x0000494c, 0x00004968, 0x00004983, + 0x0000499f, 0x000049ba, 0x000049e5, 0x00004a01, + 0x00004a2b, 0x00004a56, 0x00004a72, 0x00004a91, + 0x00004ab1, 0x00004ad0, 0x00004af6, 0x00004af6, + 0x00004b25, 0x00004b36, 0x00004b46, 0x00004b46, // Entry 280 - 29F - 0x00004a3f, 0x00004a67, 0x00004a77, 0x00004a87, - 0x00004a9c, 0x00004ab5, 0x00004afe, 0x00004b1f, - 0x00004b41, 0x00004b62, 0x00004b75, 0x00004b91, - 0x00004bbb, 0x00004bdf, 0x00004bdf, 0x00004bfe, - 0x00004c2c, 0x00004c59, 0x00004c7a, 0x00004c7a, - 0x00004ca7, 0x00004cd1, 0x00004cf9, 0x00004d15, - 0x00004d2a, 0x00004d51, 0x00004d72, 0x00004d9b, - 0x00004d9b, 0x00004dc8, 0x00004df5, 0x00004e14, + 0x00004b46, 0x00004b6d, 0x00004b8b, 0x00004bb8, + 0x00004bda, 0x00004bfb, 0x00004c0b, 0x00004c4b, + 0x00004c6e, 0x00004c92, 0x00004cc8, 0x00004cc8, + 0x00004cc8, 0x00004cc8, 0x00004ced, 0x00004d0c, + 0x00004d2b, 0x00004d3d, 0x00004d65, 0x00004d75, + 0x00004d85, 0x00004d9a, 0x00004db3, 0x00004dfc, + 0x00004e1d, 0x00004e3f, 0x00004e60, 0x00004e73, + 0x00004e8f, 0x00004eb9, 0x00004edd, 0x00004edd, // Entry 2A0 - 2BF - 0x00004e2d, 0x00004e4e, 0x00004e7f, 0x00004eac, - 0x00004ebf, 0x00004ee6, 0x00004f0c, 0x00004f32, - 0x00004f52, 0x00004f79, 0x00004f99, 0x00004f99, - 0x00004fc0, 0x00004fc0, 0x00004fe7, 0x00005008, - 0x00005047, 0x00005053, 0x00005098, 0x000050a8, - 0x000050ca, 0x000050eb, 0x00005114, 0x00005139, - 0x00005167, 0x00005188, 0x0000519b, 0x000051ae, - 0x000051cd, 0x000051ef, 0x00005208, 0x00005227, + 0x00004edd, 0x00004edd, 0x00004edd, 0x00004efc, + 0x00004f2a, 0x00004f57, 0x00004f78, 0x00004f78, + 0x00004fa5, 0x00004fcf, 0x00004ff7, 0x00005013, + 0x00005028, 0x0000504f, 0x00005070, 0x00005099, + 0x00005099, 0x00005099, 0x000050c6, 0x000050f3, + 0x00005112, 0x00005131, 0x0000514a, 0x0000516b, + 0x0000516b, 0x0000519c, 0x000051c9, 0x000051dc, + 0x00005203, 0x00005203, 0x00005203, 0x00005203, // Entry 2C0 - 2DF - 0x0000524b, 0x00005261, 0x00005279, 0x00005279, - 0x0000529b, 0x000052b2, 0x000052c7, 0x000052f3, - 0x000052f3, 0x000052f3, 0x00005327, 0x0000535b, - 0x0000536a, 0x0000537a, 0x00005391, 0x000053b1, - 0x000053d6, 0x000053f5, 0x0000540d, 0x0000543a, - 0x00005467, 0x0000548e, 0x000054a4, 0x000054c5, - 0x000054db, 0x000054fa, 0x0000551e, 0x00005537, - 0x00005568, 0x00005584, 0x000055b2, 0x000055b2, + 0x00005242, 0x0000524e, 0x00005293, 0x000052a3, + 0x000052c5, 0x000052e6, 0x0000530f, 0x00005334, + 0x00005362, 0x00005383, 0x00005383, 0x00005396, + 0x000053a9, 0x000053c8, 0x000053ea, 0x00005403, + 0x00005422, 0x00005446, 0x0000545c, 0x00005474, + 0x00005496, 0x000054ad, 0x000054c2, 0x000054ee, + 0x000054ee, 0x000054ee, 0x000054ee, 0x000054ee, + 0x000054ee, 0x000054ee, 0x00005522, 0x00005556, // Entry 2E0 - 2FF - 0x000055cb, 0x000055ef, 0x00005637, 0x0000565e, - 0x00005685, 0x000056ac, 0x000056ca, 0x000056f5, - 0x00005725, 0x0000574f, 0x0000576b, 0x000057a2, - 0x000057b4, 0x000057d3, 0x000057e5, 0x000057fd, - 0x00005813, 0x00005838, 0x0000585a, 0x0000587f, - 0x000058a0, 0x000058bc, 0x000058cc, 0x000058eb, - 0x00005907, 0x00005929, 0x0000595c, 0x00005977, - 0x0000599e, 0x000059b2, 0x000059c1, 0x000059d1, + 0x00005565, 0x00005575, 0x0000558c, 0x000055ac, + 0x000055d1, 0x000055f0, 0x00005608, 0x00005635, + 0x00005662, 0x0000568d, 0x000056b7, 0x000056de, + 0x000056f4, 0x00005715, 0x0000572b, 0x0000574a, + 0x0000574a, 0x00005763, 0x00005763, 0x0000577f, + 0x000057a4, 0x000057b6, 0x000057cf, 0x000057f3, + 0x0000583b, 0x00005862, 0x00005889, 0x000058b0, + 0x000058db, 0x0000590b, 0x00005935, 0x00005951, // Entry 300 - 31F - 0x000059e3, 0x000059fc, 0x00005a17, 0x00005a35, - 0x00005a4e, 0x00005a69, 0x00005a92, 0x00005ab4, - 0x00005acc, 0x00005ae4, 0x00005aff, 0x00005b17, - 0x00005b3c, 0x00005b51, 0x00005b68, 0x00005b74, - 0x00005b8a, 0x00005ba5, 0x00005bc1, 0x00005bee, - 0x00005c01, 0x00005c10, 0x00005c24, 0x00005c42, - 0x00005c42, 0x00005c5d, 0x00005c7f, 0x00005ca2, - 0x00005cb3, 0x00005cc5, 0x00005ceb, 0x00005d0c, + 0x00005951, 0x00005988, 0x00005988, 0x0000599a, + 0x000059b9, 0x000059cb, 0x000059dd, 0x000059f5, + 0x00005a0b, 0x00005a0b, 0x00005a30, 0x00005a52, + 0x00005a77, 0x00005a98, 0x00005ab4, 0x00005ac4, + 0x00005ae3, 0x00005aff, 0x00005aff, 0x00005aff, + 0x00005aff, 0x00005b32, 0x00005b4d, 0x00005b74, + 0x00005b88, 0x00005b97, 0x00005ba7, 0x00005bb9, + 0x00005bd2, 0x00005bed, 0x00005c0b, 0x00005c24, // Entry 320 - 33F - 0x00005d38, 0x00005d68, 0x00005d88, 0x00005da3, - 0x00005dd5, 0x00005de7, 0x00005e06, 0x00005e32, - 0x00005e4e, 0x00005e6f, 0x00005ea8, 0x00005ea8, - 0x00005ec0, 0x00005ede, 0x00005ede, 0x00005ede, - 0x00005ede, 0x00005ef7, 0x00005ef7, 0x00005f12, - 0x00005f12, 0x00005f25, 0x00005f43, 0x00005f5c, - 0x00005f6f, 0x00005f88, 0x00005f9d, 0x00005fc8, - 0x00005ff6, 0x0000600b, 0x0000603c, 0x00006062, + 0x00005c3f, 0x00005c68, 0x00005c8a, 0x00005ca2, + 0x00005cba, 0x00005cd5, 0x00005ced, 0x00005d12, + 0x00005d27, 0x00005d3a, 0x00005d49, 0x00005d5d, + 0x00005d7b, 0x00005db3, 0x00005dce, 0x00005df0, + 0x00005e13, 0x00005e13, 0x00005e13, 0x00005e39, + 0x00005e5a, 0x00005e86, 0x00005eb6, 0x00005ed6, + 0x00005ef1, 0x00005ef1, 0x00005f23, 0x00005f35, + 0x00005f54, 0x00005f80, 0x00005f9c, 0x00005fbd, // Entry 340 - 35F - 0x0000607d, 0x00006093, 0x00006093, 0x00006093, - 0x00006093, 0x00006093, 0x00006093, 0x00006093, - 0x00006093, 0x00006093, 0x00006093, 0x00006093, - 0x00006093, 0x00006093, 0x00006093, 0x00006093, - 0x00006093, 0x00006093, 0x000060b8, 0x000060e2, - 0x00006109, 0x00006133, 0x00006168, 0x000061a0, - 0x000061c9, 0x000061ef, 0x00006216, 0x00006231, - 0x00006247, 0x0000626e, 0x00006289, 0x0000629e, + 0x00005ff6, 0x00006023, 0x00006023, 0x0000603b, + 0x00006059, 0x00006059, 0x00006059, 0x00006059, + 0x00006072, 0x00006072, 0x0000608d, 0x000060a0, + 0x000060be, 0x000060d7, 0x000060ea, 0x00006103, + 0x00006134, 0x00006134, 0x00006149, 0x00006174, + 0x000061a2, 0x000061b7, 0x000061dd, 0x000061f8, + 0x0000620e, 0x0000620e, 0x0000620e, 0x0000620e, + 0x0000620e, 0x0000620e, 0x0000620e, 0x0000620e, // Entry 360 - 37F - 0x000062b3, 0x000062c5, 0x000062e9, 0x00006305, - 0x0000631a, 0x00006339, 0x00006367, 0x00006395, - 0x000063bd, 0x000063e6, 0x00006408, 0x00006415, - 0x0000642d, 0x0000644b, 0x0000644b, 0x0000644b, - 0x0000644b, 0x0000644b, 0x0000644b, 0x0000646b, - 0x00006490, 0x00006490, 0x000064aa, 0x000064dd, - 0x00006503, 0x00006503, 0x00006503, 0x00006522, - 0x00006558, 0x000065a0, 0x000065c4, 0x000065f7, + 0x0000620e, 0x0000620e, 0x0000620e, 0x0000620e, + 0x0000620e, 0x00006257, 0x00006257, 0x0000626d, + 0x00006279, 0x00006294, 0x000062b0, 0x000062b0, + 0x000062de, 0x000062f3, 0x000062f3, 0x000062f3, + 0x000062f3, 0x00006312, 0x00006312, 0x00006338, + 0x0000635e, 0x0000637e, 0x000063a5, 0x000063c5, + 0x000063e4, 0x0000640b, 0x0000642a, 0x00006451, + 0x00006472, 0x00006472, 0x00006472, 0x00006472, // Entry 380 - 39F - 0x00006634, 0x00006658, 0x00006683, 0x000066ad, - 0x000066c2, 0x000066d7, 0x000066f7, 0x0000670e, - 0x00006732, 0x00006760, 0x00006791, 0x000067bb, - 0x000067e4, 0x0000680a, 0x00006831, 0x0000684c, - 0x0000686d, 0x0000687c, 0x00006891, 0x000068a4, - 0x000068d3, 0x000068fe, 0x00006911, 0x0000692a, - 0x0000694a, 0x00006972, 0x00006987, 0x000069ad, - 0x000069cc, 0x000069ec, 0x00006a04, 0x00006a1b, + 0x00006472, 0x00006487, 0x000064bc, 0x000064bc, + 0x000064bc, 0x000064bc, 0x000064db, 0x000064db, + 0x00006500, 0x0000652a, 0x00006551, 0x0000657b, + 0x000065b0, 0x000065e8, 0x00006611, 0x00006637, + 0x0000665e, 0x00006679, 0x0000668f, 0x000066b6, + 0x000066d1, 0x000066e6, 0x000066fb, 0x0000671f, + 0x00006734, 0x00006753, 0x00006781, 0x000067af, + 0x000067d7, 0x00006800, 0x00006822, 0x0000682f, // Entry 3A0 - 3BF - 0x00006a45, 0x00006a6f, 0x00006a8e, 0x00006ab6, - 0x00006ae7, 0x00006b1f, 0x00006b50, 0x00006b72, - 0x00006b72, 0x00006b72, 0x00006b72, 0x00006b89, - 0x00006b9f, 0x00006bb6, 0x00006c0b, 0x00006c24, - 0x00006c43, 0x00006c53, 0x00006c71, 0x00006c90, - 0x00006caf, 0x00006cd1, 0x00006ceb, 0x00006d05, - 0x00006d11, 0x00006d22, 0x00006d44, 0x00006d5b, - 0x00006d70, 0x00006d8e, 0x00006daf, 0x00006dca, + 0x0000682f, 0x00006847, 0x00006865, 0x00006865, + 0x00006865, 0x00006865, 0x00006865, 0x00006865, + 0x00006885, 0x000068aa, 0x000068aa, 0x000068c4, + 0x000068f7, 0x0000691d, 0x0000691d, 0x0000691d, + 0x0000691d, 0x0000691d, 0x0000693c, 0x00006972, + 0x000069ba, 0x000069ba, 0x000069de, 0x00006a1b, + 0x00006a3f, 0x00006a54, 0x00006a69, 0x00006a89, + 0x00006aa0, 0x00006ac4, 0x00006af2, 0x00006b23, // Entry 3C0 - 3DF - 0x00006df3, 0x00006e12, 0x00006e3e, 0x00006e59, - 0x00006e7d, 0x00006ea5, 0x00006edf, 0x00006f07, - 0x00006f44, 0x00006f7e, 0x00006fa2, 0x00006fcc, - 0x00006ff0, 0x00007008, 0x00007027, 0x00007060, - 0x0000708d, 0x000070b7, 0x000070df, 0x00007106, - 0x0000711a, 0x00007138, 0x00007148, 0x00007168, - 0x00007179, 0x0000719d, 0x000071ba, 0x000071db, - 0x00007204, 0x0000722d, 0x0000723f, 0x00007269, + 0x00006b4d, 0x00006b76, 0x00006b9c, 0x00006bc3, + 0x00006bde, 0x00006bff, 0x00006c0e, 0x00006c23, + 0x00006c36, 0x00006c65, 0x00006c90, 0x00006ca3, + 0x00006cbc, 0x00006cd1, 0x00006cf7, 0x00006d16, + 0x00006d36, 0x00006d4e, 0x00006d65, 0x00006d8f, + 0x00006db9, 0x00006dd8, 0x00006e00, 0x00006e31, + 0x00006e69, 0x00006e9a, 0x00006ebc, 0x00006ebc, + 0x00006ee1, 0x00006f04, 0x00006f1a, 0x00006f31, // Entry 3E0 - 3FF - 0x0000727b, 0x0000729a, 0x000072b7, 0x000072d9, - 0x00007305, 0x00007330, 0x00007343, 0x0000735b, - 0x0000738f, 0x000073c5, 0x0000740b, 0x00007435, - 0x00007447, 0x00007475, 0x00007491, 0x000074b3, - 0x000074d2, 0x000074fa, 0x00007528, 0x0000753a, - 0x0000755d, 0x0000756f, 0x0000758b, 0x000075af, - 0x000075d2, 0x000075fc, 0x00007626, 0x0000764d, - 0x00007684, 0x000076af, 0x000076d9, 0x00007710, + 0x00006f86, 0x00006f9f, 0x00006faf, 0x00006fce, + 0x00006fce, 0x00006fec, 0x0000700b, 0x0000702d, + 0x00007047, 0x00007061, 0x0000706d, 0x0000707e, + 0x000070a0, 0x000070b7, 0x000070cc, 0x000070ea, + 0x0000710b, 0x00007126, 0x0000714f, 0x0000716e, + 0x0000719a, 0x000071b5, 0x000071d9, 0x00007201, + 0x0000723b, 0x00007263, 0x000072a0, 0x000072da, + 0x000072fe, 0x00007328, 0x0000734c, 0x00007364, // Entry 400 - 41F - 0x00007732, 0x0000775a, 0x0000777c, 0x000077c3, - 0x0000780b, 0x00007853, 0x00007878, 0x0000788b, - 0x000078a8, 0x000078cb, 0x00007908, 0x00007933, - 0x00007933, 0x00007933, 0x0000796a, 0x000079a1, - 0x000079c9, 0x000079e8, 0x000079e8, 0x000079e8, - 0x00007a07, 0x00007a1f, 0x00007a4c, 0x00007a6d, - 0x00007a8a, 0x00007ac2, 0x00007ad4, 0x00007ae9, - 0x00007b09, 0x00007b31, 0x00007b43, 0x00007b62, + 0x00007364, 0x00007364, 0x00007364, 0x00007364, + 0x00007364, 0x00007364, 0x00007364, 0x00007364, + 0x00007364, 0x00007364, 0x00007383, 0x000073bc, + 0x000073e9, 0x00007413, 0x0000743b, 0x00007462, + 0x00007476, 0x00007494, 0x000074b4, 0x000074c5, + 0x000074e9, 0x00007506, 0x00007527, 0x00007550, + 0x00007550, 0x00007550, 0x0000756f, 0x0000758c, + 0x000075ae, 0x000075da, 0x00007605, 0x00007639, // Entry 420 - 43F - 0x00007b8c, 0x00007baf, 0x00007baf, 0x00007bd3, - 0x00007bf5, 0x00007c14, 0x00007c47, 0x00007c70, - 0x00007ca3, 0x00007ccf, 0x00007cfb, 0x00007d1e, - 0x00007d38, 0x00007d65, 0x00007d86, 0x00007db6, - 0x00007dcd, 0x00007df5, 0x00007e26, 0x00007e5e, - 0x00007e6e, 0x00007e8b, 0x00007ebc, 0x00007ed6, - 0x00007f04, 0x00007f2a, 0x00007f4a, 0x00007f5f, - 0x00007f74, 0x00007f86, 0x00007fab, 0x00007fcb, + 0x0000766f, 0x000076b5, 0x000076df, 0x000076f1, + 0x0000771f, 0x0000773b, 0x0000775d, 0x0000777c, + 0x000077a4, 0x000077d2, 0x000077e4, 0x00007807, + 0x00007819, 0x00007835, 0x00007859, 0x0000787c, + 0x000078a6, 0x000078d0, 0x000078f7, 0x0000792e, + 0x00007959, 0x00007983, 0x000079ba, 0x000079dc, + 0x00007a04, 0x00007a26, 0x00007a6d, 0x00007ab5, + 0x00007afd, 0x00007b22, 0x00007b35, 0x00007b52, // Entry 440 - 45F - 0x00007fea, 0x0000800f, 0x0000803f, 0x0000806a, - 0x00008095, 0x000080a7, 0x000080d8, 0x000080ed, - 0x00008108, 0x0000813d, 0x00008158, 0x00008179, - 0x00008193, 0x000081b2, 0x000081fe, 0x0000823f, - 0x00008254, 0x0000827d, 0x000082a5, 0x000082cd, - 0x000082ee, 0x0000830a, 0x0000832f, 0x0000835a, - 0x0000837c, 0x00008398, 0x000083c9, 0x00008406, - 0x0000842e, 0x0000845e, 0x00008484, 0x000084d3, + 0x00007b75, 0x00007ba0, 0x00007ba0, 0x00007ba0, + 0x00007bd7, 0x00007c0e, 0x00007c36, 0x00007c55, + 0x00007c55, 0x00007c55, 0x00007c55, 0x00007c55, + 0x00007c55, 0x00007c55, 0x00007c55, 0x00007c55, + 0x00007c55, 0x00007c55, 0x00007c55, 0x00007c74, + 0x00007c8c, 0x00007cb9, 0x00007cb9, 0x00007cb9, + 0x00007cda, 0x00007cf7, 0x00007d2f, 0x00007d41, + 0x00007d56, 0x00007d76, 0x00007d9e, 0x00007d9e, // Entry 460 - 47F - 0x000084f9, 0x00008528, 0x00008559, 0x00008577, - 0x0000859d, 0x000085b6, 0x000085f7, 0x00008635, - 0x00008679, 0x000086a4, 0x000086d9, 0x000086fc, - 0x000086fc, 0x000086fc, 0x0000872d, 0x0000874c, - 0x00008768, 0x0000879f, 0x000087d0, 0x000087e0, - 0x000087f0, 0x0000880d, 0x0000880d, 0x00008829, - 0x00008856, 0x00008875, 0x000088c2, 0x00008903, - 0x00008944, 0x0000898f, 0x000089bf, 0x000089e7, + 0x00007d9e, 0x00007d9e, 0x00007d9e, 0x00007dca, + 0x00007ded, 0x00007e07, 0x00007e1e, 0x00007e46, + 0x00007e7e, 0x00007e8e, 0x00007eab, 0x00007edc, + 0x00007ef6, 0x00007f24, 0x00007f4a, 0x00007f6f, + 0x00007f9a, 0x00007fc5, 0x00007ff6, 0x00008011, + 0x00008046, 0x00008061, 0x00008082, 0x0000809c, + 0x000080bb, 0x00008107, 0x00008148, 0x0000815d, + 0x00008186, 0x000081ae, 0x000081ae, 0x000081ae, // Entry 480 - 49F - 0x00008a20, 0x00008a41, 0x00008a5c, 0x00008a86, - 0x00008a86, 0x00008aa8, 0x00008abf, 0x00008abf, - 0x00008abf, 0x00008abf, 0x00008abf, 0x00008abf, - 0x00008abf, 0x00008abf, 0x00008abf, 0x00008abf, - 0x00008ae6, 0x00008b0a, 0x00008b29, 0x00008b3e, - 0x00008b63, 0x00008b85, 0x00008ba0, 0x00008bb8, - 0x00008bd0, 0x00008bea, 0x00008c02, 0x00008c32, - 0x00008c47, 0x00008c5c, 0x00008c7b, 0x00008c93, + 0x000081ae, 0x000081ef, 0x000081ef, 0x000081ef, + 0x000081ef, 0x000081ef, 0x00008220, 0x0000825d, + 0x00008285, 0x000082ab, 0x000082db, 0x0000830b, + 0x00008331, 0x00008360, 0x00008391, 0x000083bf, + 0x000083bf, 0x000083bf, 0x000083bf, 0x000083bf, + 0x000083bf, 0x000083bf, 0x000083bf, 0x000083de, + 0x00008400, 0x00008445, 0x00008445, 0x00008445, + 0x00008486, 0x000084c4, 0x00008508, 0x00008533, // Entry 4A0 - 4BF - 0x00008cac, 0x00008cc4, 0x00008cdd, 0x00008d0b, - 0x00008d2f, 0x00008d4f, 0x00008d5f, 0x00008d89, - 0x00008d9e, 0x00008dbc, 0x00008dd0, 0x00008dea, - 0x00008e04, 0x00008e2b, 0x00008e43, 0x00008e43, - 0x00008e5a, 0x00008e8f, 0x00008ebf, 0x00008ecf, - 0x00008f0c, 0x00008f0c, 0x00008f49, 0x00008f6f, - 0x00008f90, 0x00008fb5, 0x00008fd1, 0x00008fed, - 0x0000901b, 0x00009042, 0x00009042, 0x0000906c, + 0x00008533, 0x00008533, 0x00008533, 0x00008533, + 0x00008533, 0x00008568, 0x0000858b, 0x0000858b, + 0x0000858b, 0x000085bc, 0x000085db, 0x000085f7, + 0x0000862e, 0x0000865f, 0x0000866f, 0x0000867f, + 0x0000869c, 0x0000869c, 0x000086b8, 0x000086e5, + 0x00008704, 0x00008751, 0x00008792, 0x000087d3, + 0x0000881e, 0x0000884e, 0x00008876, 0x000088af, + 0x000088d0, 0x000088eb, 0x00008915, 0x00008915, // Entry 4C0 - 4DF - 0x00009081, 0x000090c4, 0x000090d6, 0x00009100, - 0x0000911d, 0x00009139, 0x00009148, 0x00009165, - 0x0000917d, 0x0000918a, 0x000091a8, 0x000091c9, - 0x000091cc, 0x000091e4, 0x00009200, 0x00009200, - 0x0000922e, 0x00009250, 0x00009262, 0x00009293, - 0x000092a3, 0x000092bf, 0x000092e9, 0x0000930a, - 0x00009321, 0x00009340, 0x00009362, 0x000093a8, - 0x000093c8, 0x000093e9, 0x0000941c, 0x0000946b, + 0x00008937, 0x0000894e, 0x0000894e, 0x0000894e, + 0x0000894e, 0x0000894e, 0x0000894e, 0x0000894e, + 0x0000894e, 0x0000894e, 0x0000894e, 0x0000894e, + 0x0000894e, 0x0000894e, 0x00008975, 0x00008990, + 0x000089a8, 0x000089c0, 0x000089da, 0x000089f2, + 0x00008a22, 0x00008a37, 0x00008a56, 0x00008a6b, + 0x00008a8a, 0x00008aaf, 0x00008ad1, 0x00008ae9, + 0x00008b02, 0x00008b1a, 0x00008b33, 0x00008b61, // Entry 4E0 - 4FF - 0x00009483, 0x000094a5, 0x000094bb, 0x000094d3, - 0x000094eb, 0x00009522, 0x0000953d, 0x00009558, - 0x00009576, 0x00009597, 0x000095bb, 0x000095df, - 0x000095f8, 0x0000962f, 0x00009647, 0x00009664, - 0x00009689, 0x0000969e, 0x000096b6, 0x000096d4, - 0x000096f8, 0x0000972b, 0x0000973d, 0x00009761, - 0x00009785, 0x000097ac, 0x000097cb, 0x000097dd, - 0x000097f5, 0x0000980d, 0x00009825, 0x00009834, + 0x00008b85, 0x00008ba5, 0x00008bb5, 0x00008bdf, + 0x00008bf4, 0x00008c12, 0x00008c26, 0x00008c40, + 0x00008c5a, 0x00008c81, 0x00008c99, 0x00008c99, + 0x00008cb0, 0x00008ce5, 0x00008d15, 0x00008d25, + 0x00008d62, 0x00008d62, 0x00008d9f, 0x00008dc5, + 0x00008de6, 0x00008e0b, 0x00008e27, 0x00008e43, + 0x00008e43, 0x00008e6a, 0x00008e6a, 0x00008e94, + 0x00008ea9, 0x00008eec, 0x00008efe, 0x00008f28, // Entry 500 - 51F - 0x00009866, 0x00009894, 0x000098ac, 0x000098c4, - 0x000098e5, 0x00009905, 0x0000991a, 0x00009943, - 0x0000995c, 0x00009983, 0x000099a2, 0x000099d6, - 0x000099d6, 0x000099fa, 0x00009a19, 0x00009a31, - 0x00009a4b, 0x00009a6e, 0x00009a8d, 0x00009aa4, - 0x00009aa4, 0x00009ac7, 0x00009ae9, 0x00009ae9, - 0x00009ae9, 0x00009b14, 0x00009b2a, 0x00009b45, - 0x00009b5d, 0x00009b5d, 0x00009b5d, 0x00009b5d, + 0x00008f45, 0x00008f61, 0x00008f70, 0x00008f8d, + 0x00008fa5, 0x00008fb2, 0x00008fd0, 0x00008ff1, + 0x00008ff4, 0x0000900c, 0x00009028, 0x00009028, + 0x00009056, 0x00009078, 0x0000908a, 0x000090bb, + 0x000090cb, 0x000090e7, 0x00009111, 0x00009132, + 0x00009132, 0x00009149, 0x00009168, 0x0000918a, + 0x000091d0, 0x000091f0, 0x00009211, 0x00009244, + 0x00009293, 0x000092ab, 0x000092cd, 0x000092e3, // Entry 520 - 53F - 0x00009b5d, 0x00009b82, 0x00009ba6, 0x00009bd1, - 0x00009bf0, 0x00009c0e, 0x00009c1e, 0x00009c3d, - 0x00009c53, 0x00009c66, 0x00009cb7, 0x00009ce2, - 0x00009d0e, 0x00009d23, 0x00009d39, 0x00009d4c, - 0x00009d6d, 0x00009d98, 0x00009dbf, 0x00009deb, - 0x00009e0c, 0x00009e42, 0x00009e4f, 0x00009e7d, - 0x00009e8f, 0x00009eab, 0x00009ed2, 0x00009ee4, - 0x00009f05, 0x00009f23, 0x00009f42, 0x00009f64, + 0x000092fb, 0x00009313, 0x0000934a, 0x00009365, + 0x00009380, 0x0000939e, 0x000093bf, 0x000093e3, + 0x00009407, 0x00009420, 0x00009457, 0x0000946f, + 0x0000948c, 0x000094b1, 0x000094c6, 0x000094de, + 0x000094fc, 0x00009520, 0x00009553, 0x00009565, + 0x00009589, 0x000095ad, 0x000095d4, 0x000095f3, + 0x00009605, 0x0000961d, 0x00009635, 0x0000964d, + 0x0000965c, 0x0000968e, 0x000096bc, 0x000096d4, // Entry 540 - 55F - 0x00009fa6, 0x00009fd3, 0x00009fe8, 0x0000a019, - 0x0000a05c, 0x0000a07f, 0x0000a092, 0x0000a0ab, - 0x0000a0c7, 0x0000a0e5, 0x0000a0f8, 0x0000a10b, - 0x0000a130, 0x0000a14c, 0x0000a16a, 0x0000a182, - 0x0000a19a, 0x0000a1b8, 0x0000a1d1, 0x0000a1e7, - 0x0000a1fd, 0x0000a213, 0x0000a22c, 0x0000a24e, - 0x0000a26b, 0x0000a290, 0x0000a2c7, 0x0000a2d9, - 0x0000a2fb, 0x0000a323, 0x0000a342, 0x0000a36e, + 0x000096ec, 0x0000970d, 0x0000972d, 0x00009742, + 0x0000976b, 0x00009784, 0x000097ab, 0x000097ca, + 0x000097fe, 0x000097fe, 0x00009815, 0x00009837, + 0x00009837, 0x00009860, 0x0000987a, 0x0000987a, + 0x0000987a, 0x0000989e, 0x000098c9, 0x000098e8, + 0x00009906, 0x00009916, 0x00009935, 0x0000994b, + 0x0000999c, 0x000099c7, 0x000099f3, 0x00009a08, + 0x00009a1e, 0x00009a39, 0x00009a51, 0x00009a51, // Entry 560 - 57F - 0x0000a387, 0x0000a3a8, 0x0000a3d3, 0x0000a3f7, - 0x0000a425, 0x0000a441, 0x0000a45d, 0x0000a474, - 0x0000a4b4, 0x0000a4b4, 0x0000a4dd, 0x0000a517, - 0x0000a539, 0x0000a548, 0x0000a548, 0x0000a548, - 0x0000a548, 0x0000a55f, 0x0000a57e, 0x0000a595, - 0x0000a5b9, 0x0000a5e4, 0x0000a5ff, 0x0000a61e, - 0x0000a63c, 0x0000a655, 0x0000a655, 0x0000a655, - 0x0000a655, 0x0000a655, 0x0000a66d, 0x0000a686, + 0x00009a51, 0x00009a51, 0x00009a7c, 0x00009a8e, + 0x00009aaf, 0x00009acd, 0x00009aec, 0x00009b0e, + 0x00009b50, 0x00009b7d, 0x00009b92, 0x00009bc3, + 0x00009c06, 0x00009c29, 0x00009c3c, 0x00009c55, + 0x00009c71, 0x00009c8f, 0x00009ca2, 0x00009cb5, + 0x00009cda, 0x00009cf6, 0x00009d14, 0x00009d2c, + 0x00009d44, 0x00009d44, 0x00009d5a, 0x00009d73, + 0x00009d95, 0x00009db2, 0x00009dd7, 0x00009e0e, // Entry 580 - 59F - 0x0000a6b4, 0x0000a6f0, 0x0000a70f, 0x0000a737, - 0x0000a752, 0x0000a767, 0x0000a796, 0x0000a7bd, - 0x0000a7db, 0x0000a81c, 0x0000a83d, 0x0000a867, - 0x0000a882, 0x0000a8b0, 0x0000a8e2, 0x0000a901, - 0x0000a931, 0x0000a965, 0x0000a997, 0x0000a9bb, - 0x0000a9f0, 0x0000aa3c, 0x0000aa6c, 0x0000aa97, - 0x0000aad6, 0x0000aafd, 0x0000ab18, 0x0000ab2b, - 0x0000ab5b, 0x0000ab92, 0x0000abad, 0x0000abde, + 0x00009e20, 0x00009e42, 0x00009e6a, 0x00009e89, + 0x00009eb5, 0x00009ece, 0x00009ef9, 0x00009f27, + 0x00009f27, 0x00009f3e, 0x00009f7e, 0x00009f7e, + 0x00009fa7, 0x00009fe1, 0x0000a003, 0x0000a003, + 0x0000a003, 0x0000a003, 0x0000a003, 0x0000a003, + 0x0000a012, 0x0000a012, 0x0000a012, 0x0000a012, + 0x0000a029, 0x0000a048, 0x0000a05f, 0x0000a083, + 0x0000a083, 0x0000a0a2, 0x0000a0bb, 0x0000a0bb, // Entry 5A0 - 5BF - 0x0000ac40, 0x0000ac6b, 0x0000aca5, 0x0000acd4, - 0x0000ad23, 0x0000ad50, 0x0000ad8a, 0x0000adc0, - 0x0000adf3, 0x0000ae36, 0x0000ae72, 0x0000aeab, - 0x0000aed3, 0x0000af0d, 0x0000af2d, 0x0000af54, - 0x0000af82, 0x0000afa1, 0x0000afbb, 0x0000afcd, - 0x0000afeb, 0x0000b017, 0x0000b017, 0x0000b017, - 0x0000b017, 0x0000b017, 0x0000b017, 0x0000b02c, - 0x0000b05c, 0x0000b09a, 0x0000b0c1, 0x0000b0e7, + 0x0000a0bb, 0x0000a0bb, 0x0000a0bb, 0x0000a0d3, + 0x0000a0ec, 0x0000a112, 0x0000a112, 0x0000a140, + 0x0000a168, 0x0000a183, 0x0000a198, 0x0000a1c7, + 0x0000a1e8, 0x0000a212, 0x0000a22d, 0x0000a25f, + 0x0000a25f, 0x0000a25f, 0x0000a296, 0x0000a2b1, + 0x0000a2e2, 0x0000a344, 0x0000a36f, 0x0000a3a9, + 0x0000a3d8, 0x0000a427, 0x0000a454, 0x0000a48e, + 0x0000a4c4, 0x0000a4f7, 0x0000a53a, 0x0000a576, // Entry 5C0 - 5DF - 0x0000b10d, 0x0000b12e, 0x0000b154, 0x0000b18a, - 0x0000b1b4, 0x0000b1d4, 0x0000b1fc, 0x0000b1fc, - 0x0000b219, 0x0000b243, 0x0000b243, 0x0000b262, - 0x0000b27e, 0x0000b2a6, 0x0000b2d1, 0x0000b2d1, - 0x0000b2d1, 0x0000b2f5, 0x0000b325, 0x0000b349, - 0x0000b349, 0x0000b37d, 0x0000b3a8, 0x0000b3db, - 0x0000b405, 0x0000b432, 0x0000b46b, 0x0000b4a8, - 0x0000b4da, 0x0000b4fe, 0x0000b528, 0x0000b559, + 0x0000a5af, 0x0000a5d7, 0x0000a611, 0x0000a631, + 0x0000a658, 0x0000a686, 0x0000a6a5, 0x0000a6bf, + 0x0000a6d1, 0x0000a6d1, 0x0000a6fd, 0x0000a6fd, + 0x0000a6fd, 0x0000a6fd, 0x0000a6fd, 0x0000a6fd, + 0x0000a6fd, 0x0000a6fd, 0x0000a725, 0x0000a725, + 0x0000a742, 0x0000a742, 0x0000a742, 0x0000a742, + 0x0000a761, 0x0000a77d, 0x0000a77d, 0x0000a77d, + 0x0000a77d, 0x0000a77d, 0x0000a7b1, 0x0000a7dc, // Entry 5E0 - 5FF - 0x0000b589, 0x0000b5c9, 0x0000b5f6, 0x0000b624, - 0x0000b661, 0x0000b68f, 0x0000b6a1, 0x0000b6d8, - 0x0000b702, 0x0000b723, 0x0000b753, 0x0000b753, - 0x0000b763, 0x0000b77b, 0x0000b7ae, 0x0000b7d5, - 0x0000b7e9, 0x0000b80b, 0x0000b83b, 0x0000b863, - 0x0000b883, 0x0000b8a7, 0x0000b8da, 0x0000b926, - 0x0000b95a, 0x0000b977, 0x0000b9ac, 0x0000b9d5, - 0x0000b9f8, 0x0000b9f8, 0x0000b9f8, 0x0000ba1b, + 0x0000a7dc, 0x0000a7dc, 0x0000a815, 0x0000a852, + 0x0000a884, 0x0000a8a8, 0x0000a8d2, 0x0000a903, + 0x0000a933, 0x0000a973, 0x0000a9a0, 0x0000a9ce, + 0x0000aa0b, 0x0000aa39, 0x0000aa4b, 0x0000aa82, + 0x0000aaac, 0x0000aacd, 0x0000aacd, 0x0000aae5, + 0x0000ab18, 0x0000ab3f, 0x0000ab3f, 0x0000ab3f, + 0x0000ab3f, 0x0000ab3f, 0x0000ab67, 0x0000ab67, + 0x0000ab67, 0x0000ab8a, 0x0000ab8a, 0x0000abb2, // Entry 600 - 61F - 0x0000ba43, 0x0000ba5b, 0x0000ba7d, 0x0000ba7d, - 0x0000baac, 0x0000badb, 0x0000badb, 0x0000bafc, - 0x0000bafc, 0x0000bb20, 0x0000bb4a, 0x0000bb77, - 0x0000bb8a, 0x0000bba7, 0x0000bbcf, 0x0000bc05, - 0x0000bc27, 0x0000bc55, 0x0000bc55, 0x0000bc55, - 0x0000bc55, 0x0000bc55, 0x0000bc71, 0x0000bc91, - 0x0000bca9, 0x0000bcc4, 0x0000bcd6, 0x0000bcfe, - 0x0000bd2d, 0x0000bd4b, 0x0000bd82, 0x0000bda9, + 0x0000abca, 0x0000abec, 0x0000abec, 0x0000abec, + 0x0000abec, 0x0000ac13, 0x0000ac13, 0x0000ac13, + 0x0000ac34, 0x0000ac34, 0x0000ac34, 0x0000ac34, + 0x0000ac47, 0x0000ac7d, 0x0000ac9f, 0x0000accd, + 0x0000accd, 0x0000accd, 0x0000accd, 0x0000accd, + 0x0000accd, 0x0000accd, 0x0000accd, 0x0000ace9, + 0x0000ad09, 0x0000ad21, 0x0000ad3c, 0x0000ad4e, + 0x0000ad4e, 0x0000ad76, 0x0000ada5, 0x0000adc3, // Entry 620 - 63F - 0x0000bdcd, 0x0000bdf4, 0x0000be0d, 0x0000be1a, - 0x0000be30, 0x0000be49, 0x0000be59, 0x0000be69, - 0x0000be79, 0x0000be87, 0x0000be97, 0x0000bea7, - 0x0000bebd, 0x0000becd, 0x0000bee0, 0x0000beea, - 0x0000befa, 0x0000bf07, 0x0000bf14, 0x0000bf21, - 0x0000bf2e, 0x0000bf3b, 0x0000bf48, 0x0000bf5b, - 0x0000bf68, 0x0000bf78, 0x0000bf85, 0x0000bf8f, - 0x0000bf9f, 0x0000bfa6, 0x0000bfb3, 0x0000bfc0, + 0x0000adfa, 0x0000ae21, 0x0000ae45, 0x0000ae6c, + 0x0000ae85, 0x0000ae85, 0x0000ae85, 0x0000ae85, + 0x0000ae85, 0x0000ae85, 0x0000ae85, 0x0000ae85, + 0x0000ae85, 0x0000ae92, 0x0000ae9c, 0x0000aeb2, + 0x0000aecb, 0x0000aedb, 0x0000aeeb, 0x0000aefb, + 0x0000af09, 0x0000af19, 0x0000af29, 0x0000af3f, + 0x0000af4f, 0x0000af4f, 0x0000af5f, 0x0000af72, + 0x0000af7c, 0x0000af8c, 0x0000af99, 0x0000afa6, // Entry 640 - 65F - 0x0000bfcd, 0x0000bfd4, 0x0000bfde, 0x0000bfec, - 0x0000bfff, 0x0000c00c, 0x0000c019, 0x0000c032, - 0x0000c042, 0x0000c055, 0x0000c068, 0x0000c078, - 0x0000c088, 0x0000c098, 0x0000c0a5, 0x0000c0c4, - 0x0000c0c4, 0x0000c0f5, 0x0000c107, 0x0000c155, - 0x0000c169, 0x0000c17f, 0x0000c18f, 0x0000c198, - 0x0000c1a1, 0x0000c1ae, 0x0000c1be, 0x0000c1d3, - 0x0000c201, 0x0000c213, 0x0000c233, 0x0000c250, + 0x0000afb3, 0x0000afc0, 0x0000afcd, 0x0000afda, + 0x0000afed, 0x0000aff7, 0x0000b004, 0x0000b014, + 0x0000b021, 0x0000b02b, 0x0000b03b, 0x0000b042, + 0x0000b04c, 0x0000b059, 0x0000b066, 0x0000b073, + 0x0000b07a, 0x0000b083, 0x0000b08d, 0x0000b09b, + 0x0000b0a2, 0x0000b0b5, 0x0000b0c2, 0x0000b0d4, + 0x0000b0f0, 0x0000b0fd, 0x0000b116, 0x0000b126, + 0x0000b139, 0x0000b14c, 0x0000b15c, 0x0000b16c, // Entry 660 - 67F - 0x0000c262, 0x0000c278, 0x0000c28e, 0x0000c2a1, - 0x0000c2b1, 0x0000c2c4, 0x0000c2d7, 0x0000c2f0, - 0x0000c309, 0x0000c310, 0x0000c326, 0x0000c338, - 0x0000c350, 0x0000c36c, 0x0000c391, 0x0000c3a3, - 0x0000c3cb, 0x0000c3f9, 0x0000c421, 0x0000c43e, - 0x0000c44e, 0x0000c45b, 0x0000c46e, 0x0000c481, - 0x0000c4a3, 0x0000c4c5, 0x0000c4de, 0x0000c4fc, - 0x0000c518, 0x0000c525, 0x0000c535, 0x0000c54e, + 0x0000b17c, 0x0000b189, 0x0000b1a8, 0x0000b1b5, + 0x0000b1e6, 0x0000b1e6, 0x0000b1f8, 0x0000b246, + 0x0000b25a, 0x0000b270, 0x0000b280, 0x0000b289, + 0x0000b292, 0x0000b29f, 0x0000b2af, 0x0000b2c4, + 0x0000b2d6, 0x0000b2d6, 0x0000b2f6, 0x0000b313, + 0x0000b325, 0x0000b33b, 0x0000b351, 0x0000b364, + 0x0000b374, 0x0000b387, 0x0000b39a, 0x0000b3b3, + 0x0000b3ba, 0x0000b3d0, 0x0000b3e2, 0x0000b3fa, // Entry 680 - 69F - 0x0000c56d, 0x0000c58f, 0x0000c5a8, 0x0000c5c4, - 0x0000c5da, 0x0000c5ed, 0x0000c609, 0x0000c621, - 0x0000c636, 0x0000c652, 0x0000c66b, 0x0000c687, - 0x0000c6a0, 0x0000c6d1, 0x0000c707, 0x0000c729, - 0x0000c769, 0x0000c784, 0x0000c794, 0x0000c7b2, - 0x0000c7d3, 0x0000c7e8, 0x0000c80d, 0x0000c826, - 0x0000c83f, 0x0000c864, 0x0000c87a, 0x0000c890, - 0x0000c8a0, 0x0000c8b0, 0x0000c8c0, 0x0000c8cf, + 0x0000b416, 0x0000b43b, 0x0000b44d, 0x0000b475, + 0x0000b4a3, 0x0000b4cb, 0x0000b4e8, 0x0000b4f8, + 0x0000b505, 0x0000b518, 0x0000b52b, 0x0000b54d, + 0x0000b56f, 0x0000b588, 0x0000b5a6, 0x0000b5c2, + 0x0000b5cf, 0x0000b5df, 0x0000b5f8, 0x0000b617, + 0x0000b639, 0x0000b652, 0x0000b668, 0x0000b67b, + 0x0000b697, 0x0000b697, 0x0000b6af, 0x0000b6c4, + 0x0000b6e0, 0x0000b6f9, 0x0000b715, 0x0000b72e, // Entry 6A0 - 6BF - 0x0000c8de, 0x0000c8f4, 0x0000c90a, 0x0000c91a, - 0x0000c92d, 0x0000c943, 0x0000c957, 0x0000c96b, - 0x0000c983, 0x0000c992, 0x0000c9a8, 0x0000c9b8, - 0x0000c9dd, 0x0000c9ed, 0x0000c9fd, 0x0000ca15, - 0x0000ca22, 0x0000ca22, 0x0000ca22, 0x0000ca36, - 0x0000ca4f, 0x0000ca59, 0x0000ca68, 0x0000ca8f, - 0x0000cab8, 0x0000caf0, 0x0000cb16, 0x0000cb28, - 0x0000cb44, 0x0000cb54, 0x0000cb6c, 0x0000cb82, + 0x0000b75f, 0x0000b795, 0x0000b7b7, 0x0000b7f7, + 0x0000b812, 0x0000b822, 0x0000b840, 0x0000b861, + 0x0000b876, 0x0000b89b, 0x0000b8b4, 0x0000b8d9, + 0x0000b8ef, 0x0000b905, 0x0000b905, 0x0000b905, + 0x0000b905, 0x0000b905, 0x0000b905, 0x0000b905, + 0x0000b905, 0x0000b905, 0x0000b905, 0x0000b905, + 0x0000b905, 0x0000b905, 0x0000b905, 0x0000b905, + 0x0000b91d, 0x0000b92c, 0x0000b942, 0x0000b952, // Entry 6C0 - 6DF - 0x0000cb99, 0x0000cbb2, 0x0000cbce, 0x0000cbe9, - 0x0000cc02, 0x0000cc23, 0x0000cc37, 0x0000cc44, - 0x0000cc52, 0x0000cc66, 0x0000cc7a, 0x0000cc87, - 0x0000cc97, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, + 0x0000b977, 0x0000b987, 0x0000b997, 0x0000b9af, + 0x0000b9bc, 0x0000b9bc, 0x0000b9bc, 0x0000b9bc, + 0x0000b9bc, 0x0000b9bc, 0x0000b9bc, 0x0000b9d0, + 0x0000b9e9, 0x0000b9f3, 0x0000ba02, 0x0000ba29, + 0x0000ba52, 0x0000ba8a, 0x0000bab0, 0x0000bac2, + 0x0000bade, 0x0000baee, 0x0000bb06, 0x0000bb1c, + 0x0000bb33, 0x0000bb4c, 0x0000bb68, 0x0000bb83, + 0x0000bb9c, 0x0000bbbd, 0x0000bbd1, 0x0000bbde, // Entry 6E0 - 6FF - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, + 0x0000bbec, 0x0000bc00, 0x0000bc14, 0x0000bc21, + 0x0000bc31, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, // Entry 700 - 71F - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccac, 0x0000ccac, 0x0000ccac, 0x0000ccac, - 0x0000ccd1, 0x0000ccd1, 0x0000ccd1, 0x0000ccd1, - 0x0000ccd1, 0x0000ccd1, 0x0000ccd1, 0x0000ccd1, - 0x0000ccd1, 0x0000ccd1, 0x0000ccd1, 0x0000ccd1, - 0x0000ccd1, 0x0000cce9, 0x0000ccfe, 0x0000ccfe, - 0x0000ccfe, 0x0000ccfe, 0x0000cd11, 0x0000cd11, - 0x0000cd29, 0x0000cd29, 0x0000cd3f, 0x0000cd3f, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, // Entry 720 - 73F - 0x0000cd3f, 0x0000cd3f, 0x0000cd3f, 0x0000cd3f, - 0x0000cd5d, 0x0000cd76, -} // Size: 7344 bytes + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc46, + 0x0000bc46, 0x0000bc46, 0x0000bc46, 0x0000bc5e, + 0x0000bc5e, 0x0000bc5e, 0x0000bc5e, 0x0000bc74, + 0x0000bc74, 0x0000bc74, 0x0000bc74, 0x0000bc74, + 0x0000bc74, 0x0000bc84, 0x0000bca2, 0x0000bcbb, +} // Size: 7432 bytes -const zh_CNData string = "" + // Size: 52598 bytes +const zh_CNData string = "" + // Size: 48315 bytes "\x02获取tenantId参数失败\x02切换项目失败\x02获取password参数失败\x02用户名或密码为空\x02缺少认证信息\x02" + "用户名或者密码不正确\x02用户已经被锁定,请联系管理员\x02用户已经被禁用,请联系管理员\x02无效的认证信息\x02获取请求的JSON" + "内容失败:%v\x02此用户禁止从Web控制台登录\x02请求内容为空\x02缺少id参数\x02fetchAuthInfo调用失败:%s" + "\x02新密码相互不匹配\x02不支持重置用户密码\x02密码错误\x02无效的验证码\x02生成TOTP二维码失败\x02uid为空\x02输" + "入参数错误\x02未设置TOTP找回密码的提示问题\x02未找到密码提示问题\x02%s:答案不正确\x02验证码应为6个数字\x02验证码" + - "无效:%v\x02没有密码找到提示问题\x02解析提示问题失败:%v\x02获取管理员鉴权信息失败\x02没有可用的region,请联系管理" + - "员\x02无效的可用区%s,请联系管理员\x02会话过期,缺少%s\x02解析请求参数出错:%s\x02获取表单数据错误:%s\x02解析表" + - "单数据出错:%s\x02无效的请求\x02外部用户ID为空\x02idp_id或idp_entity_id为空\x02无效的表单\x02缺少" + - "镜像名称参数\x02缺少镜像大小参数\x02无效的镜像大小参数\x02解析查询失败:%v\x02头部中没有token:%v\x02找不到参数" + - "%s\x02不支持动作%s\x02Content-Type错误,%s,应为%s\x02打开文件出错\x02解析文件出错\x02模板文件无效,请检" + - "查\x02文件内容空\x02第%d行,用户名为空\x02第%d行,域名称为空\x02第%d行,名称重复:%s\x02找不到模板:%s\x02" + - "内部服务错误\x02无效的content_length\x02头部中没有token\x02头部中的token无效\x02token已过期" + - "\x02找不到资源%s对应的module\x02找不到id列表\x02收到无效数据\x04\x00\x01 \x16\x02无效的预置操作" + - "\x04\x00\x01 \x18\x02无效的权限(Effect)\x04\x00\x01 \x14\x02无效的IPv4地址\x02无效的s" + - "hared_mode %s\x02mx_priority应在[1,50]范围\x02无效的MX记录:无效的域名%s\x02无效的A记录:无效的I" + - "Pv4地址%s\x02无效的AAAA记录:无效的IPv6地址%s\x02无效的CNAME记录:无效的域名%s\x02缺少标签\x02条件表达式无" + - "效\x02缺少标签key\x02不支持自动创建项目\x02缺少项目Id\x02无效的路由CIDR %s\x02服务器内部错误:%s\x02服" + - "务器内部错误\x02无效的handler:%s\x02未找到handler\x02找不到请求的键:%s\x02无效的请求头部:%v\x02请" + - "求处理超时\x02不允许记录列表为空\x02记录条目数过多\x02找不到%s方法\x02%s方法参数长度不匹配,期望数%d,实际%d\x02" + - "%s返回值无效\x02ListItemFilter返回无效的计数%d\x02OrderByExtraFields返回无效的计数%d\x02Fet" + - "chCustomizeColumns返回无效的计数%d\x02FetchCustomizeColumns返回类型无数(不是slice)\x02F" + - "etchCustomizeColumns返回值无效,对象数目不匹配,输入%d,输出%d\x02ValidateUpdateData返回值无效" + - "\x02CustomizeDelete返回值无效\x02无效的联合资源%s\x02FetchCustomizeColumns返回的结果数不正确" + - "\x02找不到上下文管理器\x02没有此上下文%s(%s)\x02从上下文中获取HTTP响应Writer失败\x02反射调用%s出错:%s" + - "\x02没有返回值\x02%s %s %s找不到\x02请求体不是JSON对象?\x02未指定name或者generate_name\x02无效" + - "的JSON对象\x02%s %s已与%s %s绑定\x02非默认域中的项目是被禁止的\x02新域未指定\x02检查名称重复时出错:%s" + - "\x02不支持%s资源使用标签过滤\x02找不到动作%s\x02无法获取字符串字段\x02模型没有%s字段\x02数据库查询出错:%s\x02名" + - "称必须以字母开头,内容仅包含字母、数字或英语破折号\x02不允许删除日志\x02不允许变更直连模式配置\x02不允许删除直连模式\x02获取" + - "代理设置的使用数出错:%s\x02代理设置%s仍被%d个%s使用\x02请求体解析失败\x02找不到%s配额\x02%s默认配额不允许删除" + - "\x02权限不足\x02不允许列出域配额\x02不允许列出项目配额\x02查询配额:%s\x02权限不足(要求:%s,允许:%s)\x02无效范" + - "围%s\x02不允许创建%s,范围%s\x02不允许设置范围为整个系统\x02不允许设置范围为整个%s域\x02不允许设置范围为整个%s项目" + - "\x02只能共享给指定域: %s\x02插入共享资源出错:%s\x02名称需以字母开头,包含字母、数字,或“._@-”\x02名字长度超过%d" + - "\x02不允许使用系统保留键,请移除键名起始的下划线\x02输入键名长度超过%d\x02输入键值长度超过%d\x02找不到用户%s\x02禁止" + - "\x02非管理员不允许创建系统级别资源\x02该资源被锁定,无法执行 %s 操作\x02该资源已经被锁定\x02该资源未被锁定\x02未指定项目" + - "\x02Informer后端未初始化\x02无效的格式\x02无效的输入格式\x02缺少输入参数:%q\x02%q:常规错误:%s\x02类型错" + - "误:期望类型%s,%q的实际类型为%s\x02%q:错误的枚举值:期望%s,实际%s\x02%q:长度%d太短,最小为%d\x02%q:长度" + - "%d太长,最长为%d\x02%q:%d不在范围内,应为[%d,%d]\x02%q:无效的值%s\x02%q:无效的值:%v\x04\x00" + - "\x01 \x12\x02%q:无效的值\x02无法找到%q对应的模型管理器\x02无法通过名称或ID找到%q(%q)\x02无法通过名称或ID" + - "找到%q(%q):%s\x02无效的证书算法:%s,要求为%s\x02找不到provider\x02未实现GetProvider\x02未找" + - "到\x02Id重复\x02无效的状态\x02超时\x02未实现\x02不支持\x02无效的Provider\x02没有查询余额的权限\x02" + - "地址分配数量达到上线\x02不支持多网卡\x02%s磁盘大小必须在%dGB到%dGB范围内\x02%s要求EIP带宽必须小于100Mbps" + - "\x02与路由表关联的网络%s没有因特网网关\x02无法找到镜像%s的subformats中找到vhd,请尝试为glance target_im" + - "age_formats选项添加'vhd'\x02Azure Mv2系列SKU仅支持UEFI镜像\x02Azure UEFI镜像%s不支持此SKU" + - "\x02不能变更裸金属的配置\x02不能变更裸金属的磁盘大小\x02无效的RAID配置:%v\x02宿主机%s不是一个裸金属服务器\x02裸金属" + - "服务器%s没有准备好\x02裸金属服务器%s已被占用\x02无法为裸金属服务器保存镜像\x02未实现ValidateCreateEip" + - "\x02hypervisor %s不允许此操作\x02不支持此操作,请使用kubectl\x02容器不支持%s\x02%s不支持创建EIP" + - "\x02无法为有主机快照的虚拟机调整磁盘大小\x02ESXi虚机迁移需要指定prefer_host\x02无法为有主机快照的虚拟机重装系统" + - "\x02未知的Google存储类型\x02系统盘不支持%s磁盘\x02%s磁盘数量超过8个\x02%s和%s特性创建实例时互不兼容\x02找不到" + - "宿主机%s\x02主备机不可迁移\x02无法为状态为%s的虚机执行迁移操作,尝试救援模式或server-live-migrate\x02救援" + - "模式要求所有磁盘都使用共享存储\x02使用透传设备时不支持迁移\x02使用cdrom时无法在线迁移\x02使用透传设备时无法在线迁移\x02" + - "QEMU版本太低,无法在线迁移\x02无法在运行时移除虚拟机网卡\x02%s不支持指定CDROM参数\x02%s不支持创建EIP,仅支持绑定已有" + - "EIP\x02%s不支持创建虚机时同时创建EIP\x02数据盘不支持存储类型%s\x02%s盘的大小必须在10GB到16000GB范围内\x02" + - "磁盘 %s 的大小必须介于20GB ~ 32000GB\x02%s存储不能作为数据盘\x02数据盘大小必须是10GB的整数倍\x02找不到系" + - "统盘:%v\x02找不到磁盘%s(%s)所属的存储\x02系统盘存储在本地,不支持变更配置\x02不支持创建本地盘\x02请指定新的磁盘类型" + - "\x02磁盘存储在本地,不支持解绑\x02宿主机%s不在线\x02GetGuestCount调用出错:%s\x02宿主机已被占用\x02阿里支重" + - "置磁盘要求虚机状态为运行中或已关机\x02AWS不支持重置磁盘,您可以使用快照来创建新盘\x02不支持变更Azure磁盘名称\x02Azur" + - "e不支持重置磁盘,您可以使用快照创建新盘\x02未实现\x02ValidateResetDisk未实现\x02ValidateAttachSto" + - "rage未实现\x02RequestAttachStorage未实现\x02RequestDetachStorage未实现\x02磁盘必须已解绑" + - "\x02%s重置磁盘时要求虚机状态必须是运行中或已关机\x02主机%s必须处于关机状态\x02磁盘必须已解绑\x02不支持挂载%s存储到%s宿主" + - "机\x02挂载rbd存储要求宿主机在线\x02查询主机磁盘出错:%s\x02宿主机%s挂载点%s已有其它存储\x02挂载NFS存储要求宿主机" + - "在线\x02%s不是一个挂解点:%s\x02磁盘挂载到多个虚机\x02磁盘所在虚机必须是已关机状态\x02磁盘未挂载到虚机\x02OpenS" + - "tack不支持重置磁盘,您可以从快照创建新盘\x02Qcloud重置磁盘要求虚机状态必须是运行中或已关机\x02Ucloud重置磁盘要求磁盘处于" + - "未挂载状态\x02Ucloud仅支持数据盘重置操作\x02ZStack重置磁盘要求虚机处于关机状态\x02解析远端IP地址出错:%s\x02" + - "子网未找到\x02裸金属服务器Agent未找到\x02裸金属服务器package未准备好\x02不支持删除默认NAS权限组\x02NAS权限" + - "组不为空,请先删除挂载点\x02NAS默认权限组不支持修改规则\x02权限不足\x02NAS权限组 %s 状态不可用\x02源地址%s输入异" + - "常\x02不正确的优先权,要求必须在1-100范围内\x02不支持的读写权限 %s\x02不支持的用户权限 %s\x02不支持删除NAS默认" + - "权限组规则\x02磁盘 %s 状态不是 %s\x02无效的存储类型%s\x02检查agent唯一性失败:%s\x02manager_url冲" + - "突:%s\x02manager_url重复:%s\x02未指定duration/expire_time\x02新的过期时间先于当前值\x02" + - "无效的duration %s: %s\x02找不到名称\x02无效的桶名%s:%s\x02无效的桶名%s:%s\x02没有外部桶\x02获取" + - "对象出错:%s\x02未指定key\x02生成临时URL出错:%s\x02空的目录名\x02无效的key %s:%s\x02GetIObje" + - "ct调用出错:%s\x02对象数量超出限制\x02bucket.GetQuotaKeys调用出错:%s\x02创建目录失败:%s\x02keys" + - "列表为空\x02对象key不应以斜线结尾\x02无效的对象key:%s\x02找不到Content-Length\x02无效的Content" + - "-Length %s\x02Content-Length为负值%d\x02GetIObject调用出错:%s\x02对象大小超出限制\x02bu" + - "cket.GetQuotaKeys调用出错:%s\x02更新对象出错:%s\x02setAcl调用出错:%s\x02syncWithCloudB" + - "ucket调用出错:%s\x02桶当前有%d个活跃任务在执行,无法执行同步状态操作\x02不为空的存储桶不支持该操作\x02找不到对象%s" + - "\x02iBucket.GetIObjects调用出错:%s\x02设置静态网站配置错误 %s\x02删除静态网站配置错误 %s\x02获取静态" + - "网站配置错误 %s\x02设置CORS错误:%s\x02删除CORS设置错误:%s\x02获取CORS规则错误:%s\x02获取CDN加速域" + - "名错误:%s\x02设置Referer错误:%s\x02获取Referer错误:%s\x02获取权限设置错误:%s\x02设置权限错误:%s" + - "\x02删除权限设置错误:%s\x02unmarshal limit参数出错:%s\x02SetLimit调用出错:%s\x02更新出错:%s" + - "\x02找不到manager\x02iBucket.GetIObject调用出错:%s\x02ValidateDeleteCondition出错" + - ":%s\x02镜像已被缓存到磁盘\x02镜像引用会话还未过期\x02找不到存储缓存%s\x02不允许查询系统能力\x02云账号%s为启用SA" + - "ML认证\x02账号为启用状态\x02账号不空闲\x02%s provider: %v\x02无法启用正在删除中的账号\x02%s不支持SAML" + - "认证\x02无效的代理设备%s\x02不支持%s\x02项目%s(%s)不属于域%s(%s)\x02不支持品牌%s,仅支持%s\x02唯一性" + - "检查失败\x02账户已被注册\x02找不到provider %s\x02检查重复account_id出错\x02账号%s已被注册\x02账号" + - "已禁用\x02无法找到provider工厂:%v\x02无效的账号信息:%s\x02unmarshal输入参数出错:%v\x02检查唯一性出" + - "错:%s\x02账号%s出现冲突\x02account_id不一致,之前为%q,现在为%q\x02找不到项目%s\x02状态为%s时无法启用" + - "自动同步\x02同步时间间隔应该大于%d秒\x02provider在域间共享\x02不正确的资源类别\x02不支持%s\x02%s不支持创建" + - "订阅\x02云账号 %s 已经绑定了同步策略 %s\x02不支持provider为%s的云账号\x02不允许创建\x02provider当前" + - "是启用状态\x02provider当前不是空闲状态\x02不支持直接创建cloudprovider,请先创建云账号\x02找不到region" + - " %s\x02找不到zone %s\x02cloudprovider是已禁用状态\x02云账号是已禁用状态\x02不允许跨域变更项目属性\x02" + - "不允许变更为私有云另外一个域\x02获取provider驱动失败:%s\x02不支持存储类型\x02云订阅 %s 已经绑定了同步策略 %s" + - "\x02GetZoneCount调用失败\x02GetVpcCount调用失败\x02cloudregion不为空\x02不允许删除默认clou" + - "dregion\x02找不到VPC %s\x02不允许更新外部资源\x02禁止允许更改RDS账号名称\x02查找数据库实例出错:%s\x02数据" + - "库实例%s(%s)当前状态为%s,要求状态为%s\x02在数据库实例%s(%s)中查找%s库失败:%v\x02查找数据库%s失败,在实例%s" + - "(%s)中查找出错:%v\x02账号%s(%s)已有权限%s访问数据库%s(%s)\x02账号状态不是%s,当前状态为%s\x02实例状态不是%" + - "s,当前状态为%s\x02数据库状态不是%s,当前状态为%s\x02账号%s(%s)没有数据库%s(%s)的权限\x02数据库实例没有有效的cl" + - "oudprovider\x02数据库实例的备份当前有%d个活跃任务执行中,无法执行同步状态操作\x02禁止不允许更改RDS的数据据名称\x02找" + - "不到数据库实例%s(%s)的账号%s:%v\x02未实现\x02无效地址:%s\x02%s不在子网%s(%s)的范围中\x02云订阅 %s(" + - "%s) 无法使用\x02无效的时间长度%s\x02不支持的时间长度%s\x02区域 %s 不支持创建RDS\x02区域 %s 不支持创建 %s " + - "类型RDS\x02找不到匹配的dbinstance sku\x02%s RDS不支持安全组\x02%s RDS支持绑定最多 %d 个安全组" + - "\x02不可在%s状态做恢复操作,要求状态必须为%s\x02备份%s(%s)中不包含数据库%s\x02数据库%s与实例%s(%s)冲突\x02备" + - "份与数据库实例不属于同一个云账号\x02备份与数据库实例不在同一个cloudregion\x02无法从不同的rds引擎中恢复数据\x02无法" + - "重启状态为%s的数据库实例\x02数据库实例已有%d个活跃任务在执行,无法同步状态\x02无法为状态为%s的数据库实例执行刷新操作,要求状态" + - "为%s\x02缺少duration参数\x02数据库实例状态需要是 %s,目前是 %s\x02只有 %s 数据库实例支持该操作\x02数据库" + - "实例已开启外网访问\x02外网连接未开放\x02%s不支持此操作\x02处于状态%s无法执行变更配置操作\x02RDS磁盘不支持缩小\x02" + - "数据库实例已锁定,无法删除\x02数据库实例计费类型为%s\x02数据库实例计费类型%s不支持取消过期时间\x02该操作要求数据库实例状态为" + - " %s\x02%s 允许的安全组数量为 %d\x02快照策略%s未找到:%s\x02不支持变更磁盘类型为%s\x02找不到磁盘%s对应的存储" + - "\x02无法为存储%s和磁盘%s找不到对应的宿主机\x02找不到存储%s\x02云订阅 %s 不可用\x02存储%s(%s)需挂载到宿主机达到在" + - "线状态\x02无法使用已禁用的存储%s创建磁盘\x02无法使用离线存储%s创建磁盘\x02存储类型%s与后端%s不匹配\x02存储%s必须绑" + - "定到一个宿主机\x02空闲空间不够\x02获取快照数失败:%s\x02磁盘%s不需要转换快照\x02无法获得磁盘快照\x02获取转换快照对象" + - "失败:%s\x02快照%s没有转换快照对象\x02无法重置状态为%s的磁盘\x02无法重置快照状态为%s的磁盘\x02无法重置磁盘%s(%s" + - "),因快照属于磁盘%s\x02磁盘状态为READY时方可调整其大小\x02磁盘不可缩容\x02无法找到磁盘所归属的存储资源\x02disk.Ge" + - "tQuotaKeys失败:%s\x02无法找到磁盘%s所属的存储\x02该磁盘没有zone信息\x02重复的镜像名%s\x02磁盘状态为READ" + - "Y时方可执行保存操作\x02GetRuningGuestCount调用失败:%s\x02当磁盘未被使用时才可执行保存操作\x02镜像名称是必选参" + - "数\x02cloudprovider %s不可用\x02云账号%s不可用\x02磁盘%s所在的存储资源找不到宿主机\x02磁盘%s调用Get" + - "GuestDiskCount时出错:%s\x02磁盘%s(%s)正被虚机使用\x02无法删除状态正常的预付费磁盘\x02Diskinfo下标%d" + - ":镜像id和尺寸都未指定\x02未找到快照%s\x02快照%s归属的存储%s未找到,它是公有云资源吗\x02镜像不在活跃状态\x02磁盘有%" + - "d个任务正在执行,无法执行同步状态操作\x02GetSnapshotCount失败:%s\x02无法执行purge操作,磁盘必须不能有快照" + - "\x02无法执行删除操作,磁盘必须不能有快照\x02存储类型为%s的磁盘若有快照不可删除\x02找不到快照策略%s\x02%s %s不支持DNS" + - "类型%s\x02%s %s不支持策略类型%s\x02%s %s不支持%s\x02无效的记录名 %s\x02dns记录名和CNME重复\x02" + - "重复且不能被云厂商 %s dns策略区分的记录\x02重复的dns记录\x02%s不支持策略类型%s\x02%s %s不支持策略值%s" + - "\x02不支持\x02无效的域名%s\x02不支持%s,vpc %s支持%s\x02不支持%s,账号%s支持%s\x02不支持配置顶级公共域名 " + - "%s \x02不识别的zone类型%s\x02当前状态%s无法执行同步操作\x02当前状态%s无法执行缓存操作\x02仅%s支持为账号缓存" + - "\x02账号%s已缓存\x02当前状态%s无法执行解除缓存操作\x02vpc %s已经在这个DNS zone\x02vpc %s不在此DNS z" + - "one\x02SRV:参数不够:%s\x02SRV:无效端口号:%s\x02SRV:无效权重值:%s\x02SRV:权限值%d不在范围[0,65" + - "535]范围\x02SRV:无效优先组:%s\x02SRV:优先级%d不在[0,65535]范围\x02SRV记录不可与其它类型记录同时存在" + - "\x02CNAME记录不可与其它类型记录同时存在\x02PTR记录不可与其它类型记录同时存在\x02%s:无效的域名:%s\x02SRV:无效的" + - "srv记录名:%s\x02PTR:无效的ptr记录名:%s\x02%s:名字不可以是IP地址:%s\x02A:记录值必须是IPv4地址:%s" + - "\x02AAAA:记录值必须是IPv6地址:%s\x02%s:%s必须是域名:%s\x02%s:%s不可以是IP地址:%s\x02%s:未知的记" + - "录类型\x02空记录\x02无效的TTL值:%s\x02无效的TTL值:%d\x02不可以混合不同类型的记录:%s != %s\x02找不到" + - "调度标签%s\x02unmarshal StandaloneResourceCreateInput失败:%s\x02不支持资源类型%s" + - "\x02不支持虚拟资源类型%s\x02找不到%s资源%s\x02ElasticSearch 已锁定,不可删除\x02ElasticSearch有" + - "%d个任务进行中, 请稍后再同步状态\x02无法恢复状态为%s的弹性缓存\x02不支持删除%s弹性弹性缓存备份\x02无效的计费周期%s\x02" + - "无法重启状态为%s的弹性缓存实例\x02弹性缓存已锁定,不可删除\x02弹性缓存未过期,不可删除\x02provider不匹配:%s缓存实例" + - "不可使用%s sku\x02region不匹配:实例region %s,sku region %s\x02zone不匹配:实例zone %s" + - ",sku zone %s\x02引擎版本不匹配:实例版本%s,sku版本%s\x02无法为状态为%s的缓存实例变更配置\x02认证模式的状态" + - "已为%s\x02弹性缓存 %s 没有管理账号\x02运维时间参数没有变化\x02公网连接已分配\x02公网连接已释放\x02无效参数格式:必" + - "须为JSON Object\x02弹性缓存已有%d个任务在执行,无法执行同步状态操作\x02弹性缓存的计费类型为%s\x02弹性缓存的计费类" + - "型%s不支持取消过期时间\x02虚机状态%s不可执行添加安全组操作\x02区域\x02区域类型\x02不支持绑定安全组\x02超过可绑定的安" + - "全组数量限制,最多 %d 个\x02安全组名称%s不符合要求\x02安全组在更新后会置空\x02弹性缓存状态应该是 %s,目前是 %s" + - "\x02只有 %s 弹性缓存支持设置自动更新操作\x02弹性缓存找不到关联的区域\x02只有 %s 弹性缓存支持续期操作\x02参数%s不可变更" + - "\x02资源 %s(归属VPC %s 外部访问模式 %s)不支持关联EIP\x02找不到虚机%s\x02不支持绑定类型%s,仅支持%s\x02不" + - "支持付费类型%s\x02EIP已绑定到其它实例\x02EIP状态为%s无法绑定\x02固定EIP不可再被关联\x02不支持的实例类型%s" + - "\x02无法与正在删除的虚机进行绑定\x02实例已与其它EIP绑定\x02虚机状态%s无法进行EIP绑定操作\x02虚机与EIP在同一子网下不可" + - "关联\x02找不到虚机所属region\x02EIP的虚机不在同一region\x02EIP和虚机不在同一个zone\x02虚机所在宿主机找" + - "不到\x02虚机和EIP分属不同cloudprovider\x02虚机与EIP不在同一个zone下无法关联\x02EIP状态为%s无法执行解" + - "绑操作\x02固定的公网IP无法解绑\x02固定公网IP无法执行同步状态操作\x02EIP状态为%s无法变更带宽\x02无效的带宽\x02E" + - "IP所属cloudprovider为启用状态,无法执行purge操作\x02云账号 %s 并未共享到域 %s\x02文件系统锁定中, 不可删除" + - "\x02NAS有%d个任务进行中,请稍后再同步状态\x02请解绑组中所有虚机后再试\x02无法绑定已禁用的虚机\x02无法解绑已禁用的虚机" + - "\x02找不到实例%s\x02虚机和实例组应属于同一项目\x02找不到EIP %s\x02EIP已被关联\x02EIP配额不足:%s\x02没有" + - "可解关联的EIP\x02宿主机状态为%s,启用状态为%s,无法对虚机执行%s操作\x02状态为%s时无法发送命令\x02无法找到虚机所在宿主" + - "机\x02状态为%s时不可保持镜像\x02找不到根镜像\x02仅KVM虚机支持此操作\x02状态为%s无法执行同步状态操作\x02状态为%s" + - "无法执行在线迁移\x02主备机不支持克隆操作\x02hypervisor为%s的虚机不支持克隆操作\x02状态为%s的虚机不可执行克隆操作" + - "\x02unmarshal输入参数错误:%s\x02状态为%s的虚机无法执行部署操作\x02磁盘%s和虚机不属于同一个账号\x02磁盘%s和虚机" + - "不属于同一个zone\x02isAttached检查失败:%s\x02磁盘%s已被占用\x02磁盘%s和虚机不在同一宿主机\x02磁盘状态为" + - "%s,无法挂载\x02虚机%s的状态%s不支持挂载磁盘\x02状态为%s的虚机无法执行挂起操作\x02状态为%s的虚机无法执行恢复操作\x02宿" + - "主机虚拟机内存不足\x02部分磁盘未准备好\x02不可启动状态为%s的虚机\x02CD-ROM当前使用中,请先执行弹出操作\x02虚机状态%" + - "s不允许执行插入ISO操作\x02没有ISO可弹出\x02虚机状态%s不允许弹出ISO操作\x02无法为hypervisor %s添加安全组" + - "\x02虚机%s最多可关联%d个安全组\x02安全组%s已被虚机%s使用\x02虚机状态为%s无法解除安全组\x02安全组%s未与虚机%s关联" + - "\x02虚机状态为%s无法关联安全组\x02虚机状态为%s无法设定安全组\x02无法为虚机%s设定安全组\x02虚机所在宿主机为启用状态,不可执" + - "行purge操作\x02找不到%s\x02系统盘的镜像(%s)和虚拟机规格SKU(%s)的CPU架构不匹配\x02无效的镜像\x02镜像大小" + - "超过系统盘大小\x02无法切换操作系统:%s-%s\x02镜像uefi状态不同重装操作系统\x02找不到模板,无法重装系统\x02不支持使用" + - "另外一个镜像重装系统\x02状态为%s不支持重装系统\x02未提供Disk Info\x02找不到宿主机\x02所在宿主机无可用存储\x02" + - "所在宿主机存储空间不足\x02isAttach2Disk失败:%s\x02无法保留已解绑的磁盘\x02虚机状态%s不支持解绑磁盘\x02未指" + - "定透传设备\x02找不到透传设备%s\x02透传设备未挂载到此虚机\x02GPU数量必须大于1\x02获取GPU失败:%s\x02虚机%s所" + - "在宿主机%s透传设备不足\x02挂载设备列表参数类型不是字符串数组\x02卸载设备列表参数类型不是字符串数组\x02找不到IP %s\x02" + - "找不到MAC %s\x02未指定ip_addr或mac\x02状态为%s无法变更IP地址\x02虚机运行中无法变更MAC地址\x02MAC地" + - "址唯一性检查失败\x02MAC地址%s已被占用\x02虚机状态%s无法执行解绑网络操作\x02虚机状态%s无法执行绑定网络操作\x02虚机状" + - "态%s无法变更带宽大小\x02带宽值必须非负\x02虚机状态%s不可变更配置\x02不允许变更配置\x02主备机不允许变更配置\x02虚机状" + - "态为%s不可变更配置\x02不可变更套餐类型\x02内存大小参数错误,如256M,1G,或256\x02参数vmem_size解析出错" + - "\x02虚机状态为%s无法变更CPU/内存配置\x02不可缩小磁盘大小\x02虚机状态为%s无法重装系统\x02虚机已有%d个活跃任务执行中,无" + - "法执行同步状态操作\x02虚机状态%s无法执行关机操作\x02虚机状态%s无法执行重启操作\x02虚机状态%s无法发送键盘指令\x02虚机状" + - "态%s无法关联EIP\x02虚机与EIP不在同一region无法关联\x02虚机与EIP不属于同一provider无法关联\x02虚机状态为" + - "%s时无法切换到备机\x02虚机没有备用宿主机\x02虚机无法切换到备机,因镜像任务未结束\x02找不到虚机%s\x02输入数据不是键值字典" + - "\x02找不到虚机%s\x02查找虚机失败:%s\x02虚机已有备用机\x02使用共享存储不可创建备机\x02仅KVM虚机支持创建主备机\x02" + - "使用透传设备无法创建备机\x02GuestDisksHasSnapshot失败:%s\x02无法从快照创建备机\x02虚机无备机\x02备机" + - "所在宿主机找不到\x02备机所在宿主机离线\x02虚机不需要做reconcile操作\x02虚机的计费类型%s不支持取消过期时间\x02虚机" + - "的计费类型为%s\x02虚机%s不支持后付费自动过期\x02无效的desc内容\x02虚机Id为空\x02虚机名为空\x02虚机%s已存在" + + "无效:%v\x02没有密码找到提示问题\x02解析提示问题失败:%v\x02异常的请求地址 %s\x02获取管理员鉴权信息失败\x02没有可" + + "用的region,请联系管理员\x02无效的可用区%s,请联系管理员\x02会话过期,缺少%s\x02解析请求参数出错:%s\x02获取表单" + + "数据错误:%s\x02解析表单数据出错:%s\x02无效的请求\x02外部用户ID为空\x02idp_id或idp_entity_id为空" + + "\x02无效的表单\x02缺少镜像名称参数\x02缺少镜像大小参数\x02无效的镜像大小参数\x02镜像状态异常\x02镜像下载地址过期\x02" + + "解析查询失败:%v\x02头部中没有token:%v\x02找不到参数%s\x02不支持动作%s\x02Content-Type错误,%s," + + "应为%s\x02打开文件出错\x02解析文件出错\x02模板文件无效,请检查\x02文件内容空\x02第%d行,用户名为空\x02第 %d " + + "行密码为空\x02第%d行,域名称为空\x02第%d行,名称重复:%s\x02找不到模板:%s\x02内部服务错误\x02无效的conten" + + "t_length\x02头部中没有token\x02头部中的token无效\x02token已过期\x02找不到资源%s对应的module" + + "\x02找不到id列表\x02收到无效数据\x02syslog服务未启用\x04\x00\x01 \x16\x02无效的预置操作\x04\x00" + + "\x01 \x18\x02无效的权限(Effect)\x04\x00\x01 \x14\x02无效的IPv4地址\x02无效的shared_mo" + + "de %s\x02mx_priority应在[1,50]范围\x02无效的MX记录:无效的域名%s\x02无效的A记录:无效的IPv4地址%s" + + "\x02无效的AAAA记录:无效的IPv6地址%s\x02无效的CNAME记录:无效的域名%s\x02无效的地址%s\x02描述文本过长(%d>" + + "=%d)\x02描述文本包含不可打印字符:%v\x02访问控制包含重复的CIDR %s\x02权重超过1-100范围限制\x02端口超过1-65" + + "535限制\x02输入的 send_proxy 参数 %v 异常\x02输入的ssl %v 异常\x02输入的send_proxy %s 异常" + + "\x02输入的scheduler %s 异常\x02输入的sticky_session_type %s 异常\x02输入的sticky_sess" + + "ion_cookie %s 异常\x02输入的sticky_session %s 异常\x02输入的 listener_type %s 异常" + + "\x02监听端口超过1-65535范围限制\x02输入的tls_cipher_policy %s 异常\x02输入的health_check %" + + "s 异常\x02输入的health_check_type %s 异常\x02输入的 health_check_http_code %s 异常" + + "\x02输入的 redirect %s 异常\x02输入的 acl_status %v 异常\x02输入的 acl_type %v 异常\x02" + + "输入的 scheduler %v 异常\x02输入的 tls_cipher_policy %v 异常\x02输入的 sticky_sessi" + + "on %v 异常\x02输入的 sticky_session_type %v 异常\x02输入的 health_check %v 异常\x02输" + + "入的 health_cheack_type %v 异常\x02输入的 domain %s 异常\x02输入的 path %s 异常\x02输" + + "入的 http_request_rate %d 异常\x02输入的 http_request_rate_per_sec %d 异常\x02输" + + "入的 redirect_code %d 异常\x02输入的 redirect_path %s 异常\x02输入的 redirect_sche" + + "me %s 异常\x02输入的 redirect_host %s 异常\x02缺少标签\x02条件表达式无效\x02缺少标签key\x02不支持" + + "自动创建项目\x02缺少项目Id\x02无效的路由CIDR %s\x02repeat_weekdays 参数超过1-7范围限制\x02tim" + + "e_points 参数超过0-23范围限制\x02服务器内部错误:%s\x02服务器内部错误\x02无效的handler:%s\x02未找到ha" + + "ndler\x02找不到请求的键:%s\x02无效的请求头部:%v\x02请求处理超时\x02无权限访问\x02不允许记录列表为空\x02记录条" + + "目数过多\x02不允许删除日志\x02未实现方法\x02%s方法参数长度不匹配,期望数%d,实际%d\x02%s返回值无效\x02函数%s返" + + "回数量与预期%d不符\x02OrderByExtraFields返回无效的计数%d\x02FetchCustomizeColumns返回无效" + + "的计数%d\x02FetchCustomizeColumns返回类型无数(不是slice)\x02FetchCustomizeColumns" + + "返回值无效,对象数目不匹配,输入%d,输出%d\x02ValidateUpdateData返回值无效\x02CustomizeDelete返" + + "回值无效\x02ValidateDeleteCondition返回值无效\x02ValidateUpdateCondition返回值无效" + + "\x02无效的联合资源%s\x02过滤表达式%s无效,数据库没有%s字段\x02FetchCustomizeColumns返回的结果数不正确" + + "\x02找不到上下文管理器\x02没有此上下文%s(%s)\x02从上下文中获取HTTP响应Writer失败\x02FetchCustomize" + + "Columns返回值无效,对象数目不匹配,期望是1,输出%d\x02反射调用%s出错:%s\x02没有返回值\x02%s %s %s找不到" + + "\x02请求体不是JSON对象?\x02未指定name或者generate_name\x02模块 %s %s %s 未找到,请检查服务版本,当前" + + "版本: %s\x02无效的JSON对象\x02%s %s已与%s %s绑定\x02非默认域中的项目是被禁止的\x02新域未指定\x02检查名" + + "称重复时出错:%s\x02权限不够 %s:%s:%s (require:%s,allow:%s,query:%s)\x02不支持%s资源使用" + + "标签过滤\x02操作 %s 未实现, 请检查版本,当前版本: %s\x02无法获取字符串字段\x02模型没有%s字段\x02数据库查询出错:" + + "%s\x02数据库表 %s 未找到\x02名称必须以字母开头,内容仅包含字母、数字或英语破折号\x02不允许变更直连模式配置\x02不允许删除直" + + "连模式\x02获取代理设置的使用数出错:%s\x02代理设置%s仍被%d个%s使用\x02请求体解析失败\x02找不到%s配额\x02%s默" + + "认配额不允许删除\x02权限不足\x02不允许列出域配额\x02不允许列出项目配额\x02查询配额:%s\x02权限不足(要求:%s,允许:" + + "%s)\x02无效范围%s\x02不允许创建%s,范围%s\x02不允许设置范围为整个系统\x02不允许设置范围为整个%s域\x02不允许设置范" + + "围为整个%s项目\x02只能共享给指定域: %s\x02插入共享资源出错:%s\x02名称需以字母开头,包含字母、数字,或“._@-”" + + "\x02名字长度超过%d\x02输入键名长度超过%d\x02输入键值长度超过%d\x02不允许使用系统保留键,请移除键名起始的下划线\x02找不" + + "到用户%s\x02禁止\x02非管理员不允许创建系统级别资源\x02该资源被锁定,无法执行 %s 操作\x02该资源已经被锁定\x02该资源" + + "未被锁定\x02未指定项目\x02Informer后端未初始化\x02无效的格式\x02无效的输入格式\x02缺少输入参数:%q\x02%q" + + ":常规错误:%s\x02类型错误:期望类型%s,%q的实际类型为%s\x02%q:错误的枚举值:期望%s,实际%s\x02%q:长度%d太短" + + ",最小为%d\x02%q:长度%d太长,最长为%d\x02%q:%d不在范围内,应为[%d,%d]\x02%q:无效的值%s\x02%q:无" + + "效的值:%v\x04\x00\x01 \x12\x02%q:无效的值\x02无法找到%q对应的模型管理器\x02无法通过名称或ID找到%q(" + + "%q)\x02无法通过名称或ID找到%q(%q):%s\x02无效的证书算法:%s,要求为%s\x02不支持多网卡\x02系统盘大小必须在20G" + + "B ~ 500Gb之间\x02%s磁盘大小必须在%dGB到%dGB范围内\x02%s要求EIP带宽必须小于100Mbps\x02与路由表关联的网" + + "络%s没有因特网网关\x02无法找到镜像%s的subformats中找到vhd,请尝试为glance target_image_format" + + "s选项添加'vhd'\x02Azure Mv2系列SKU仅支持UEFI镜像\x02Azure UEFI镜像%s不支持此SKU\x02不能变更裸金" + + "属的配置\x02不能变更裸金属的磁盘大小\x02无效的RAID配置:%v\x02宿主机%s不是一个裸金属服务器\x02裸金属服务器%s没有准" + + "备好\x02裸金属服务器%s已被占用\x02无法为裸金属服务器保存镜像\x02未实现ValidateCreateEip\x02hypervi" + + "sor %s不允许此操作\x02不支持在线扩容系统盘\x02实例状态为%s时不支持扩容磁盘\x02不支持此操作,请使用kubectl\x02容器" + + "不支持%s\x02CPU卡槽数不能高于CPU总核数\x02%s不支持创建EIP\x02无法为有主机快照的虚拟机调整磁盘大小\x02无法为有主" + + "机快照的虚拟机重装系统\x02未知的Google存储类型\x02系统盘不支持%s磁盘\x02%s磁盘数量超过8个\x02%s和%s特性创建实" + + "例时互不兼容\x02%s不支持创建虚机时同时创建EIP\x02VNC端口%d不正确\x02找不到宿主机%s\x02主备机不可迁移\x02无法" + + "为状态为%s的虚机执行迁移操作,尝试救援模式或server-live-migrate\x02救援模式要求所有磁盘都使用共享存储\x02使用透" + + "传设备时不支持迁移\x02最大带宽必须高于100M\x02使用cdrom时无法在线迁移\x02使用透传设备时无法在线迁移\x02QEMU版本" + + "太低,无法在线迁移\x02无法在运行时移除虚拟机网卡\x02不支持在状态%s下更改磁盘存储\x02不支持更换主备机磁盘存储\x02存储%s未" + + "挂载或者宿主机未启用\x02不支持vdi %s\x02%s不支持指定CDROM参数\x02%s不支持创建EIP,仅支持绑定已有EIP\x02" + + "数据盘不支持存储类型%s\x02%s盘的大小必须在10GB到16000GB范围内\x02磁盘%s大小必须在10GB ~ 32000GB之间" + + "\x02磁盘 %s 的大小必须介于20GB ~ 32000GB\x02%s存储不能作为数据盘\x02数据盘大小必须是10GB的整数倍\x02找不" + + "到系统盘:%v\x02找不到磁盘%s(%s)所属的存储\x02系统盘存储在本地,不支持变更配置\x02不支持创建本地盘\x02请指定新的磁盘" + + "类型\x02磁盘存储在本地,不支持解绑\x02宿主机%s不在线\x02GetGuestCount调用出错:%s\x02宿主机已被占用\x02" + + "阿里支重置磁盘要求虚机状态为运行中或已关机\x02AWS不支持重置磁盘,您可以使用快照来创建新盘\x02不支持变更Azure磁盘名称\x02" + + "Azure不支持重置磁盘,您可以使用快照创建新盘\x02未实现\x02ValidateResetDisk未实现\x02ValidateAttac" + + "hStorage未实现\x02RequestAttachStorage未实现\x02RequestDetachStorage未实现\x02磁盘必" + + "须已解绑\x02%s重置磁盘时要求虚机状态必须是运行中或已关机\x02主机%s必须处于关机状态\x02磁盘必须已解绑\x02%s不是一个挂解" + + "点:%s\x02不支持挂载%s存储到%s宿主机\x02挂载rbd存储要求宿主机在线\x02查询主机磁盘出错:%s\x02宿主机%s挂载点%s" + + "已有其它存储\x02挂载NFS存储要求宿主机在线\x02磁盘挂载到多个虚机\x02磁盘所在虚机必须是已关机状态\x02磁盘未挂载到虚机" + + "\x02腾讯云重置磁盘要求虚机状态必须是运行中或已关机\x02Ucloud重置磁盘要求磁盘处于未挂载状态\x02Ucloud仅支持数据盘重置操作" + + "\x02ZStack重置磁盘要求虚机处于关机状态\x02解析远端IP地址出错:%s\x02子网未找到\x02裸金属服务器Agent未找到\x02" + + "裸金属服务器package未准备好\x02不支持删除默认NAS权限组\x02NAS权限组不为空,请先删除挂载点\x02NAS默认权限组不支持" + + "修改规则\x02权限不足\x02NAS权限组 %s 状态不可用\x02源地址%s输入异常\x02不正确的优先权,要求必须在1-100范围内" + + "\x02不支持的读写权限 %s\x02不支持的用户权限 %s\x02不支持删除NAS默认权限组规则\x02无效的存储类型%s\x02无效的桶名%" + + "s:%s\x02检查agent唯一性失败:%s\x02manager_url冲突:%s\x02manager_url重复:%s\x02未指定du" + + "ration/expire_time\x02新的过期时间先于当前值\x02无效的duration %s: %s\x02找不到名称\x02无效的桶" + + "名%s:%s\x02没有外部桶\x02未指定key\x02生成临时URL出错:%s\x02空的目录名\x02无效的key %s:%s\x02" + + "GetIObject调用出错:%s\x02对象数量超出限制\x02bucket.GetQuotaKeys调用出错:%s\x02创建目录失败:%s" + + "\x02keys列表为空\x02对象key不应以斜线结尾\x02无效的对象key:%s\x02找不到Content-Length\x02无效的C" + + "ontent-Length %s\x02Content-Length为负值%d\x02GetIObject调用出错:%s\x02对象大小超出限制" + + "\x02bucket.GetQuotaKeys调用出错:%s\x02更新对象出错:%s\x02setAcl调用出错:%s\x02syncWith" + + "CloudBucket调用出错:%s\x02桶当前有%d个活跃任务在执行,无法执行同步状态操作\x02不为空的存储桶不支持该操作\x02找不到对" + + "象%s\x02iBucket.GetIObjects调用出错:%s\x02设置静态网站配置错误 %s\x02删除静态网站配置错误 %s" + + "\x02获取静态网站配置错误 %s\x02设置CORS错误:%s\x02删除CORS设置错误:%s\x02获取CORS规则错误:%s\x02获取" + + "CDN加速域名错误:%s\x02设置Referer错误:%s\x02获取Referer错误:%s\x02获取权限设置错误:%s\x02设置权限错" + + "误:%s\x02删除权限设置错误:%s\x02unmarshal limit参数出错:%s\x02SetLimit调用出错:%s\x02更新" + + "出错:%s\x02找不到manager\x02iBucket.GetIObject调用出错:%s\x02镜像已被缓存到磁盘\x02镜像引用会" + + "话还未过期\x02找不到存储缓存%s\x02不允许查询系统能力\x02CDN开启删除保护,禁止删除\x02云账号%s为启用SAML认证" + + "\x02账号为启用状态\x02账号不空闲\x02云账号底下有启用的订阅\x02无法启用正在删除中的账号\x02%s不支持SAML认证\x02无效" + + "的代理设备%s\x02不支持%s\x02项目%s(%s)不属于域%s(%s)\x02不支持品牌%s,仅支持%s\x02唯一性检查失败\x02" + + "账户已被注册\x02找不到provider %s\x02检查重复account_id出错\x02账号%s已被注册\x02账号已禁用\x02账" + + "号正在同步中,稍后再试\x02请避免频繁同步资源\x02无法找到provider工厂:%v\x02无效的账号信息:%s\x02unmarsh" + + "al输入参数出错:%v\x02检查唯一性出错:%s\x02账号%s出现冲突\x02account_id不一致,之前为%q,现在为%q\x02找不" + + "到项目%s\x02provider在域间共享\x02不正确的资源类别\x02不支持%s\x02%s不支持创建订阅\x02不支持provide" + + "r为%s的云账号\x02不允许创建\x02provider当前是启用状态\x02provider当前不是空闲状态\x02不支持直接创建cloud" + + "provider,请先创建云账号\x02找不到region %s\x02找不到zone %s\x02cloudprovider是已禁用状态" + + "\x02云账号是已禁用状态\x02不允许跨域变更项目属性\x02不允许变更为私有云另外一个域\x02获取provider驱动失败:%s\x02不" + + "支持存储类型\x02云订阅 %s 已经绑定了同步策略 %s\x02不允许删除默认cloudregion\x02cloudregion不为空" + + "\x02找不到VPC %s\x02不允许更新外部资源\x02禁止允许更改RDS账号名称\x02查找数据库实例出错:%s\x02数据库实例%s(%" + + "s)当前状态为%s,要求状态为%s\x02在数据库实例%s(%s)中查找%s库失败:%v\x02查找数据库%s失败,在实例%s(%s)中查找出错" + + ":%v\x02账号%s(%s)已有权限%s访问数据库%s(%s)\x02账号状态不是%s,当前状态为%s\x02实例状态不是%s,当前状态为" + + "%s\x02数据库状态不是%s,当前状态为%s\x02账号%s(%s)没有数据库%s(%s)的权限\x02数据库实例没有有效的cloudprov" + + "ider\x02数据库实例的备份当前有%d个活跃任务执行中,无法执行同步状态操作\x02禁止不允许更改RDS的数据据名称\x02找不到数据库实例" + + "%s(%s)的账号%s:%v\x02未实现\x02无效地址:%s\x02%s不在子网%s(%s)的范围中\x02云订阅 %s(%s) 无法使用" + + "\x02无效的时间长度%s\x02不支持的时间长度%s\x02区域 %s 不支持创建RDS\x02区域 %s 不支持创建 %s 类型RDS" + + "\x02找不到匹配的dbinstance sku\x02%s RDS不支持安全组\x02%s RDS支持绑定最多 %d 个安全组\x02不可在%" + + "s状态做恢复操作,要求状态必须为%s\x02备份%s(%s)中不包含数据库%s\x02数据库%s与实例%s(%s)冲突\x02备份与数据库实例不" + + "属于同一个云账号\x02备份与数据库实例不在同一个cloudregion\x02无法从不同的rds引擎中恢复数据\x02无法重启状态为%s的" + + "数据库实例\x02数据库实例已有%d个活跃任务在执行,无法同步状态\x02无法为状态为%s的数据库实例执行刷新操作,要求状态为%s\x02缺" + + "少duration参数\x02数据库实例状态需要是 %s,目前是 %s\x02只有 %s 数据库实例支持该操作\x02数据库实例已开启外网访" + + "问\x02外网连接未开放\x02%s不支持此操作\x02处于状态%s无法执行变更配置操作\x02RDS磁盘不支持缩小\x02数据库实例已锁定" + + ",无法删除\x02数据库实例计费类型为%s\x02数据库实例计费类型%s不支持取消过期时间\x02该操作要求数据库实例状态为 %s\x02%" + + "s 允许的安全组数量为 %d\x02磁盘 %s 状态不是 %s\x02不支持变更磁盘类型为%s\x02找不到磁盘%s对应的存储\x02无法为存储" + + "%s和磁盘%s找不到对应的宿主机\x02找不到存储%s\x02云订阅 %s 不可用\x02存储%s(%s)需挂载到宿主机达到在线状态\x02无法" + + "使用已禁用的存储%s创建磁盘\x02无法使用离线存储%s创建磁盘\x02存储类型%s与后端%s不匹配\x02存储%s必须绑定到一个宿主机" + + "\x02空闲空间不够\x02获取快照数失败:%s\x02磁盘%s不需要转换快照\x02无法获得磁盘快照\x02获取转换快照对象失败:%s\x02" + + "快照%s没有转换快照对象\x02无法重置状态为%s的磁盘\x02无法重置快照状态为%s的磁盘\x02无法重置磁盘%s(%s),因快照属于磁盘" + + "%s\x02磁盘状态为READY时方可调整其大小\x02磁盘不可缩容\x02无法找到磁盘所归属的存储资源\x02disk.GetQuotaKey" + + "s失败:%s\x02该磁盘没有zone信息\x02重复的镜像名%s\x02磁盘状态为READY时方可执行保存操作\x02GetRuningGue" + + "stCount调用失败:%s\x02当磁盘未被使用时才可执行保存操作\x02镜像名称是必选参数\x02磁盘%s(%s)正被虚机使用\x02无法删" + + "除状态正常的预付费磁盘\x02磁盘%s所在的存储资源找不到宿主机\x02磁盘%s调用GetGuestDiskCount时出错:%s\x02D" + + "iskinfo下标%d:镜像id和尺寸都未指定\x02未找到快照%s\x02快照%s归属的存储%s未找到,它是公有云资源吗\x02镜像不在活跃状" + + "态\x02磁盘有%d个任务正在执行,无法执行同步状态操作\x02GetSnapshotCount失败:%s\x02无法执行purge操作,磁" + + "盘必须不能有快照\x02无法执行删除操作,磁盘必须不能有快照\x02存储类型为%s的磁盘若有快照不可删除\x02自动快照策略%s与磁盘所在的" + + "账号不匹配\x02自动快照策略%s与磁盘所在的区域不匹配\x02无效的记录名 %s\x02dns记录名和CNME重复\x02无效的域名%s" + + "\x02云订阅%s与vpc%s不匹配\x02不支持%s,vpc %s支持%s\x02不支持%s,账号%s支持%s\x02不支持配置顶级公共域名 " + + "%s \x02不识别的zone类型%s\x02当前状态%s无法执行解除缓存操作\x02仅%s支持为账号缓存\x02vpc %s已经在这个DNS " + + "zone\x02vpc %s不在此DNS zone\x02找不到调度标签%s\x02unmarshal StandaloneResourceCr" + + "eateInput失败:%s\x02不支持资源类型%s\x02不支持虚拟资源类型%s\x02找不到%s资源%s\x02ElasticSearch" + + " 已锁定,不可删除\x02ElasticSearch有%d个任务进行中, 请稍后再同步状态\x02无法恢复状态为%s的弹性缓存\x02不支持删除" + + "%s弹性弹性缓存备份\x02无效的计费周期%s\x02无法重启状态为%s的弹性缓存实例\x02弹性缓存已锁定,不可删除\x02弹性缓存未过期,不" + + "可删除\x02region不匹配:实例region %s,sku region %s\x02zone不匹配:实例zone %s,sku zo" + + "ne %s\x02引擎版本不匹配:实例版本%s,sku版本%s\x02无法为状态为%s的缓存实例变更配置\x02认证模式的状态已为%s\x02弹" + + "性缓存 %s 没有管理账号\x02运维时间参数没有变化\x02公网连接已分配\x02公网连接已释放\x02无效参数格式:必须为JSON Ob" + + "ject\x02弹性缓存已有%d个任务在执行,无法执行同步状态操作\x02弹性缓存的计费类型为%s\x02弹性缓存的计费类型%s不支持取消过期时" + + "间\x02虚机状态%s不可执行添加安全组操作\x02区域\x02区域类型\x02不支持绑定安全组\x02超过可绑定的安全组数量限制,最多 %" + + "d 个\x02安全组在更新后会置空\x02弹性缓存状态应该是 %s,目前是 %s\x02只有 %s 弹性缓存支持设置自动更新操作\x02弹性缓存" + + "找不到关联的区域\x02只有 %s 弹性缓存支持续期操作\x02参数%s不可变更\x02资源 %s(归属VPC %s 外部访问模式 %s)不" + + "支持关联EIP\x02找不到虚机%s\x02不支持绑定类型%s,仅支持%s\x02不支持付费类型%s\x02EIP已绑定到其它实例\x02E" + + "IP状态为%s无法绑定\x02固定EIP不可再被关联\x02不支持的实例类型%s\x02无法与正在删除的虚机进行绑定\x02实例已与其它EIP绑" + + "定\x02虚机状态%s无法进行EIP绑定操作\x02虚机与EIP在同一子网下不可关联\x02找不到虚机所属region\x02EIP的虚机不" + + "在同一region\x02EIP和虚机不在同一个zone\x02虚机所在宿主机找不到\x02虚机和EIP分属不同cloudprovider" + + "\x02虚机与EIP不在同一个zone下无法关联\x02NAT %s 未找到\x02LB %s 未找到\x02EIP状态为%s无法执行解绑操作" + + "\x02固定的公网IP无法解绑\x02固定公网IP无法执行同步状态操作\x02没有可用的弹性公网网络\x02EIP状态为%s无法变更带宽\x02" + + "无效的带宽\x02EIP所属cloudprovider为启用状态,无法执行purge操作\x02云账号 %s 并未共享到域 %s\x02文件" + + "系统锁定中, 不可删除\x02NAS有%d个任务进行中,请稍后再同步状态\x02请解绑组中所有虚机后再试\x02无法绑定已禁用的虚机\x02" + + "无法解绑已禁用的虚机\x02找不到实例%s\x02虚机和实例组应属于同一项目\x02找不到EIP %s\x02EIP已被关联\x02EIP配" + + "额不足:%s\x02没有可解关联的EIP\x02宿主机状态为%s,启用状态为%s,无法对虚机执行%s操作\x02状态为%s时无法发送命令" + + "\x02无法找到虚机所在宿主机\x02状态为%s时不可保持镜像\x02找不到根镜像\x02仅KVM虚机支持此操作\x02状态为%s无法执行同步状" + + "态操作\x02状态为%s无法执行在线迁移\x02主备机不支持克隆操作\x02hypervisor为%s的虚机不支持克隆操作\x02状态为%s" + + "的虚机不可执行克隆操作\x02unmarshal输入参数错误:%s\x02状态为%s的虚机无法执行部署操作\x02磁盘%s和虚机不属于同一个" + + "账号\x02磁盘%s和虚机不属于同一个zone\x02isAttached检查失败:%s\x02磁盘%s已被占用\x02磁盘%s和虚机不在同" + + "一宿主机\x02磁盘状态为%s,无法挂载\x02虚机%s的状态%s不支持挂载磁盘\x02状态为%s的虚机无法执行挂起操作\x02状态为%s的" + + "虚机无法执行恢复操作\x02宿主机虚拟cpu内存不足\x02宿主机虚拟机内存不足\x02部分磁盘未准备好\x02不可启动状态为%s的虚机" + + "\x02CD-ROM当前使用中,请先执行弹出操作\x02虚机状态%s不允许执行插入ISO操作\x02没有ISO可弹出\x02虚机状态%s不允许弹" + + "出ISO操作\x02虚机所在宿主机为启用状态,不可执行purge操作\x02找不到%s\x02系统盘的镜像(%s)和虚拟机规格SKU(%s)" + + "的CPU架构不匹配\x02无效的镜像\x02镜像大小超过系统盘大小\x02无法切换操作系统:%s-%s\x02镜像uefi状态不同重装操作系" + + "统\x02找不到模板,无法重装系统\x02不支持使用另外一个镜像重装系统\x02状态为%s不支持重装系统\x02未提供Disk Info" + + "\x02找不到宿主机\x02所在宿主机无可用存储\x02所在宿主机存储空间不足\x02isAttach2Disk失败:%s\x02无法保留已解绑" + + "的磁盘\x02虚机状态%s不支持解绑磁盘\x02未指定透传设备\x02找不到透传设备%s\x02透传设备未挂载到此虚机\x02GPU数量必须" + + "大于1\x02获取GPU失败:%s\x02虚机%s所在宿主机%s透传设备不足\x02挂载设备列表参数类型不是字符串数组\x02卸载设备列表参" + + "数类型不是字符串数组\x02找不到IP %s\x02找不到MAC %s\x02未指定ip_addr或mac\x02状态为%s无法变更IP地址" + + "\x02虚机运行中无法变更MAC地址\x02MAC地址唯一性检查失败\x02MAC地址%s已被占用\x02虚机状态%s无法执行解绑网络操作" + + "\x02虚机状态%s无法执行绑定网络操作\x02无法创建带有透传设备的主备机\x02解析透传设备描述信息出错:%s\x02虚机状态%s无法变更带" + + "宽大小\x02带宽值必须非负\x02虚机状态%s不可变更配置\x02不允许变更配置\x02主备机不允许变更配置\x02不可变更套餐类型" + + "\x02参数vmem_size解析出错\x02不支持%s状态下调整cpu/内存\x02未找到快照%s\x02不可缩小磁盘大小\x02虚机状态为%" + + "s无法重装系统\x02虚机已有%d个活跃任务执行中,无法执行同步状态操作\x02虚机状态%s无法执行关机操作\x02虚机状态%s无法执行重启操作" + + "\x02虚机状态%s无法发送键盘指令\x02虚机与EIP不在同一region无法关联\x02虚机与EIP不属于同一provider无法关联" + + "\x02虚机状态为%s时无法切换到备机\x02虚机没有备用宿主机\x02虚机无法切换到备机,因镜像任务未结束\x02找不到虚机%s\x02输入数" + + "据不是键值字典\x02找不到磁盘%s\x02找不到虚机%s\x02查找虚机失败:%s\x02虚机已有备用机\x02使用共享存储不可创建备机" + + "\x02仅KVM虚机支持创建主备机\x02使用透传设备无法创建备机\x02GuestDisksHasSnapshot失败:%s\x02无法从快照" + + "创建备机\x02虚机无备机\x02备机所在宿主机找不到\x02备机所在宿主机离线\x02虚机的计费类型%s不支持取消过期时间\x02虚机的计" + + "费类型为%s\x02虚机%s不支持后付费自动过期\x02无效的desc内容\x02虚机Id为空\x02虚机名为空\x02虚机%s已存在" + "\x02导入网卡列表为空\x02IP %s或MAC %s已被注册\x02无法通过IP %s找到网络\x02导入磁盘列表为空\x02Unmarsh" + "al数据失败:%s\x02部分宿主机配置缺少xml_file_path\x02部分宿主机缺少HostIp字段\x02无效的宿主机IP %s" + "\x02无效虚机MAC地址%s\x02无效的虚机IP地址 %s\x02创建任务失败:%s\x02Hypervisor %s无法创建libvirt" + - " XML\x02生成XML失败:%s\x02不支持hypervisor %s\x02不支持%s\x02虚机已被转换过\x02宿主机%s不是KVM" + - "类型\x02虚机必须为关机状态\x02检查并设置待使用配置时出错:%s\x02找不到宿主机\x02空的IP列表\x02IP %s不可达:%s" + - "\x02IP %s不可用:已被占用\x02磁盘%s未挂载到虚机\x02Hypervisor %s无法实现io限速\x02虚机状态%s无法设定io" + - "限速\x02bps必须大于0\x02iops必须大于0\x02虚机%s hypervisor %s不支持迁移\x02虚机%s有备机,不可迁移" + - "\x02虚拟机 %s 有直通设备,无法迁移\x02虚机%s使用本地存储不支持救援模式\x02虚机%s状态为%s不可迁移\x02虚机有cdrom不" + - "可迁移\x02虚机%s状态%s因使用本地存储无法迁移\x02未指定虚机Id\x02部分指定的虚机不存在\x02虚机hypervisor %s" + - "无法创建实例快照\x02备份机无法创建快照\x02虚机状态为%s无法做快照\x02虚机%d号磁盘快照数达到上限,不可再创建\x02创建快照失" + - "败:%s\x02创建快照任务失败:%s\x02实例快照未准备好\x02从快照恢复失败:%s\x02count必须大于0\x02生成快照名称失" + - "败:%s\x02不是裸金属服务器\x02找不到宿主机\x02宿主机不是裸金属\x02找不到主机组%s\x02主机组与虚机应属于同一个项目" + - "\x02无法关联或解关联已禁用的主机组\x02虚机没有公网IP\x02虚机状态要求为%s或%s,当前状态为%s\x02%s虚机不支持转发公网IP" + - "为EIP\x02仅%s虚机支持此操作\x02虚拟机没有VPC IP\x02虚机模板暂不支持实例快照\x02找不到虚机模板指定的安全组%s" + - "\x02虚机模板中的%s不是共享资源\x02虚机模板中的%s %q不是共享资源\x02虚机模板中的%s在范围%s内不是共享资源\x02虚机模板中" + - "的%s %q在范围%s内不是共享资源\x02虚机模板%s正被服务目录%s使用\x02虚机模板%s正被伸缩组%s使用\x02检查磁盘序号唯一性" + - "失败:%s\x02磁盘序号%d已被占用\x02无法分配网卡名\x02检查网卡序号唯一性失败:%s\x02网卡序号%d已被占用\x02找不到宿" + - "主机%s\x02找不到安全组%s\x02找不到磁盘%s\x02检查虚机磁盘数量失败:%s\x02未知的虚拟机类型 %s\x02找不到主机组%" + - "s\x02虚机已锁定,无法删除\x02不允许删除有效状态的预付费虚机\x02不允许删除已禁用宿主机上的虚机\x02无法删除离线宿主机上的虚机" + - "\x02内存大小必须在8MB〜%dGB范围内\x02CPU核数必须在范围1〜%d内\x02名称太短\x02找不到实例快照%s\x02获取实例快照" + - "出错:%s\x02metadata条目数不可超过20\x02login_account长度已超过32字节\x02无效的系统镜像: %s" + - "\x02系统盘不支持ISO镜像,请使用cdrom参数\x02解析cdrom设备信息出错误:%s\x02未指定操作系统镜像?\x02所使用的套餐%" + - "s未指出挂载的数据盘大小\x02所使用的套餐%s未指明挂载的数据盘所使用的存储类型\x02解析磁盘描述信息出错:%s\x02快照错误:序号%d大" + - "于0的磁盘类型为%s\x02无法在预付费的资源类型上创建预付费的虚机\x02解析网络描述信息出错:%s\x02无法创建带有透传设备的主备机" + - "\x02解析透传设备描述信息出错:%s\x02找不到密钥对%s\x02找不到安全组%s\x02%s最多可关联%d个安全组\x02无效的userd" + - "ata:%v\x02策略定义中有无效参数:%s\x02策略定义%s要求cloudregion在%s范围中\x02策略定义%s要求cloudreg" + - "ion不在%s范围中\x02策略定义%s(%s)包含无效的条件%s\x02策略定义%s要求必须包含%s标签\x02策略定义%s要求不可有%s标签" + - "\x02类别%s在策略定义%s(%s)中无效\x02%s 不支持静态公网IP\x02无效的静态公网IP类型 %s\x02%s不支持EIP\x02" + - "EIP %s状态无效%s\x02EIP %s已被占用\x02EIP %s属于不同cloudprovider,无法绑定\x02EIP %s属于不同" + - "的region,无法绑定\x02虚机已关联EIP\x02获取磁盘大小失败\x02镜像%s不在虚机镜像%s中\x02部分虚机镜像的子镜像未指定" + - "\x02裸金属%s未启用\x02无法运行%s,宿主机类型为%s\x02宿主机上没有可用存储\x02无效的aggregate_strategy: " + - "%s\x02找不到二层网络%s\x02不支持hypervisor %s\x02虚机状态为%s无法执行回收操作\x02虚机状态为%s无法从回收站恢" + - "复\x02宿主机应为已禁用状态\x02宿主机不是预付费资源池类型\x02预付费资源池宿主机没有可用的虚机\x02预付费资源池宿主机不可拥有超" + - "过1个虚机\x02无法从资源池中恢复已伪删除的虚机\x02不是预付费资源池宿主机\x02无效的any_mac参数\x02找不到调度标签" + - "\x02不支持hypervisor %s\x02宿主机是一个裸金属,请先恢复到转换之前状态再执行删除操作\x02宿主机还未被禁用\x02getG" + - "uestCount调用失败:%s\x02宿主机非空\x02调用GetDiskCount失败:%s\x02宿主机本地存储非空?\x02不一致:本地" + - "存储非空\x02找不到宿主机%s的IPMI信息\x02IPMI信息中缺少密码\x02检查重复%s出错:%s\x02%s %s重复\x02无效" + - "的macAddr\x02检查重复access_mac出错:%s\x02重复的access_mac %s\x02%s不在子网范围\x02IPM" + - "I子网没有zone信息?\x02IPMI地址不在所指定的zone\x02宿主机IP %s已被注册\x02宿主机所属子网没有zone信息?\x02" + - "宿主机IP不在指定的zone\x02no_probe模式缺少access_mac和uuid信息\x02IPMI子网没有zone信息\x02新" + - "的IPMI地址在另外一个zone\x02不能启动一个非裸金属服务器\x02因裸金属服务器还有活跃的虚机,不可启动\x02不可停止一个非裸金属" + - "服务器\x02因裸金属服务器还有非活跃的虚机,不可停止\x02因裸金属服务器还有活跃的虚机,不可停止\x02状态为%s无法进入维护模式" + - "\x02虚机状态为%s无法进入维护模式\x02状态为%s无法解除维护模式\x02错误的虚机状态%s\x02不是一个裸金属服务器\x02执行准备操" + - "作需要有效的access_mac和uuid参数\x02裸金属状态为%s无法执行准备操作\x02虚机状态为%s无法执行准备操作\x02状态为%" + - "s无法执行IPMI探测操作\x02状态为%s无法执行初始化操作\x02IPMI信息未配置\x02虚机插入操作出错:%s\x02无效MAC地址" + - "\x02查找二层网络%s出错:%s\x02无效IP地址%s\x02二层网络%s中没有可用子网\x02IP %s不在二层网络%s中\x02IP %" + - "s不属于任何二层网络\x02无法通过MAC地址%s找到网卡:%s\x02无法通过MAC地址找到hostwire:%s\x02网卡%s不存在" + - "\x02仅admin, ipmi类型网卡可以被启用\x02网卡%s不存在\x02不是一个裸金属服务器\x02没有在转换为hypervisor" + - "\x02未找到裸金属服务器记录\x02未找到MAC地址为 %s 的虚拟机磁盘\x02虚拟机的网卡IP地址为 %s 不是 %s\x02无效的MAC" + - "地址\x02获取网卡出错:%s\x02非裸金属服务器无法执行同步状态操作\x02裸金属服务器状态为%s无法执行重启操作\x02裸金属服务器上" + - "存在活跃的虚机,无法执行重启操作\x02状态为%s无法执行镜像缓存操作\x02找不到镜像%s\x02镜像没有校验值无法执行缓存操作\x02必" + - "须指定host_type参数\x02要求必须为裸金属服务器\x02裸金属服务器已被占用\x02hypervisor状态为%s无法执行转换" + - "\x02转换其它域的宿主机需要系统权限\x02不支持驱动%s\x02isAlterNameUnique调用失败:%s\x02转换出错:%s" + + " XML\x02生成XML失败:%s\x02找不到宿主机\x02空的IP列表\x02IP %s不可达:%s\x02IP %s不可用:已被占用" + + "\x02磁盘所在的虚拟机有实例快照,不支持扩容\x02磁盘%s未挂载到虚机\x02Hypervisor %s无法实现io限速\x02虚机状态%s" + + "无法设定io限速\x02虚机%s hypervisor %s不支持迁移\x02虚机%s有备机,不可迁移\x02虚拟机 %s 有直通设备,无法" + + "迁移\x02虚机%s使用本地存储不支持救援模式\x02虚机%s状态为%s不可迁移\x02虚机有cdrom不可迁移\x02虚机%s状态%s因使" + + "用本地存储无法迁移\x02未指定虚机Id\x02部分指定的虚机不存在\x02虚机hypervisor %s无法创建实例快照\x02备份机无法" + + "创建快照\x02虚机状态为%s无法做快照\x02虚机%d号磁盘快照数达到上限,不可再创建\x02检查并设置待使用配置时出错:%s\x02创建" + + "快照失败:%s\x02创建快照任务失败:%s\x02实例快照未准备好\x02从快照恢复失败:%s\x02count必须大于0\x02生成快照" + + "名称失败:%s\x02不是裸金属服务器\x02找不到宿主机\x02宿主机不是裸金属\x02虚机状态要求为%s或%s,当前状态为%s\x02找" + + "不到主机组%s\x02主机组与虚机应属于同一个项目\x02无法关联或解关联已禁用的主机组\x02虚机没有公网IP\x02%s虚机不支持转发公" + + "网IP为EIP\x02仅%s虚机支持此操作\x02虚拟机没有VPC IP\x02QGA探测失败, 请检查虚拟机内Qemu Guest Age" + + "nt是否正常运行\x02虚机已被转换过\x02不支持%s\x02宿主机%s不是KVM类型\x02虚机必须为关机状态\x02虚拟机状态必须是关机或" + + "者运行中\x02内存必须高于2G\x02虚拟机未处于救援模式\x02无法为hypervisor %s添加安全组\x02虚机%s最多可关联%d" + + "个安全组\x02安全组%s已被虚机%s使用\x02虚机状态为%s无法解除安全组\x02安全组%s未与虚机%s关联\x02不允许解绑管理安全组" + + "\x02虚机状态为%s无法管理安全组\x02不允许关联管理安全组\x02虚机状态为%s无法设定安全组\x02无法为虚机%s设定安全组\x02缺少" + + "username参数\x02至少需要输入private_key或password其中一种\x02没有可远程登录的地址\x02虚机模板暂不支持实例" + + "快照\x02找不到虚机模板指定的安全组%s\x02虚机模板中的%s不是共享资源\x02虚机模板中的%s %q不是共享资源\x02虚机模板中的" + + "%s在范围%s内不是共享资源\x02虚机模板中的%s %q在范围%s内不是共享资源\x02虚机模板%s正被服务目录%s使用\x02虚机模板%s正" + + "被伸缩组%s使用\x02检查磁盘序号唯一性失败:%s\x02磁盘序号%d已被占用\x02无法分配网卡名\x02检查网卡序号唯一性失败:%s" + + "\x02网卡序号%d已被占用\x02找不到宿主机%s\x02找不到安全组%s\x02检查虚机磁盘数量失败:%s\x02找不到主机组%s\x02虚" + + "机已锁定,无法删除\x02不允许删除有效状态的预付费虚机\x02不允许删除已禁用宿主机上的虚机\x02无法删除离线宿主机上的虚机\x02内存" + + "大小必须在8MB〜%dGB范围内\x02CPU核数必须在范围1〜%d内\x02名称太短\x02找不到实例快照%s\x02获取实例快照出错:%" + + "s\x02metadata条目数不可超过20\x02login_account长度已超过32字节\x02无效的系统镜像: %s\x02系统盘不支" + + "持ISO镜像,请使用cdrom参数\x02解析cdrom设备信息出错误:%s\x02未指定操作系统镜像?\x02所使用的套餐%s未指出挂载的" + + "数据盘大小\x02所使用的套餐%s未指明挂载的数据盘所使用的存储类型\x02解析磁盘描述信息出错:%s\x02无法在预付费的资源类型上创建预" + + "付费的虚机\x02解析网络描述信息出错:%s\x02找不到密钥对%s\x02找不到安全组%s\x02%s最多可关联%d个安全组\x02无效的" + + "userdata:%v\x02策略定义中有无效参数:%s\x02策略定义%s要求cloudregion在%s范围中\x02策略定义%s要求clo" + + "udregion不在%s范围中\x02策略定义%s(%s)包含无效的条件%s\x02策略定义%s要求必须包含%s标签\x02策略定义%s要求不可" + + "有%s标签\x02类别%s在策略定义%s(%s)中无效\x02%s 不支持静态公网IP\x02无效的静态公网IP类型 %s\x02%s不支持" + + "EIP\x02EIP %s状态无效%s\x02EIP %s已被占用\x02EIP %s属于不同cloudprovider,无法绑定\x02EIP" + + " %s属于不同的region,无法绑定\x02虚机已关联EIP\x02获取磁盘大小失败\x02裸金属%s未启用\x02无法运行%s,宿主机类型为" + + "%s\x02宿主机上没有可用存储\x02无效的aggregate_strategy: %s\x02找不到二层网络%s\x02不支持hypervi" + + "sor %s\x02虚机状态为%s无法执行回收操作\x02虚机状态为%s无法从回收站恢复\x02宿主机应为已禁用状态\x02宿主机不是预付费资源" + + "池类型\x02预付费资源池宿主机没有可用的虚机\x02预付费资源池宿主机不可拥有超过1个虚机\x02无法从资源池中恢复已伪删除的虚机\x02" + + "不是预付费资源池宿主机\x02Windows主机名不能超过%d字符\x02主机名必须是2个字符以上\x02找不到调度标签\x02不支持hyp" + + "ervisor %s\x02宿主机是一个裸金属,请先恢复到转换之前状态再执行删除操作\x02宿主机还未被禁用\x02宿主机非空\x02getGu" + + "estCount调用失败:%s\x02调用GetDiskCount失败:%s\x02宿主机本地存储非空?\x02找不到宿主机%s的IPMI信息" + + "\x02IPMI信息中缺少密码\x02检查重复%s出错:%s\x02%s %s重复\x02无效的macAddr\x02检查重复access_ma" + + "c出错:%s\x02重复的access_mac %s\x02%s不在子网范围\x02IPMI子网没有zone信息?\x02IPMI地址不在所指定" + + "的zone\x02宿主机IP %s已被注册\x02宿主机所属子网没有zone信息?\x02宿主机IP不在指定的zone\x02no_prob" + + "e模式缺少access_mac和uuid信息\x02IPMI子网没有zone信息\x02新的IPMI地址在另外一个zone\x02不能启动一个非" + + "裸金属服务器\x02因裸金属服务器还有活跃的虚机,不可启动\x02不可停止一个非裸金属服务器\x02因裸金属服务器还有非活跃的虚机,不可停止" + + "\x02因裸金属服务器还有活跃的虚机,不可停止\x02状态为%s无法进入维护模式\x02虚机状态为%s无法进入维护模式\x02状态为%s无法解除" + + "维护模式\x02错误的虚机状态%s\x02不是一个裸金属服务器\x02执行准备操作需要有效的access_mac和uuid参数\x02裸金属" + + "状态为%s无法执行准备操作\x02虚机状态为%s无法执行准备操作\x02状态为%s无法执行IPMI探测操作\x02状态为%s无法执行初始化操" + + "作\x02IPMI信息未配置\x02虚机插入操作出错:%s\x02查找二层网络%s出错:%s\x02无效IP地址%s\x02二层网络%s中没" + + "有可用子网\x02IP %s不在二层网络%s中\x02IP %s不属于任何二层网络\x02无法通过MAC地址%s找到网卡:%s\x02不是一" + + "个裸金属服务器\x02没有在转换为hypervisor\x02未找到裸金属服务器记录\x02未找到MAC地址为 %s 的虚拟机磁盘\x02虚" + + "拟机的网卡IP地址为 %s 不是 %s\x02非裸金属服务器无法执行同步状态操作\x02裸金属服务器状态为%s无法执行重启操作\x02裸金属" + + "服务器上存在活跃的虚机,无法执行重启操作\x02状态为%s无法执行镜像缓存操作\x02找不到镜像%s\x02镜像没有校验值无法执行缓存操作" + + "\x02必须指定host_type参数\x02要求必须为裸金属服务器\x02裸金属服务器已被占用\x02hypervisor状态为%s无法执行转" + + "换\x02转换其它域的宿主机需要系统权限\x02不支持驱动%s\x02isAlterNameUnique调用失败:%s\x02转换出错:%s" + "\x02宿主机应为禁用状态\x02当前状态为%s无法取消转换\x02不是一个转换后的hypervisor\x02宿主机状态%s无法退出维护模式" + "\x02宿主机类型%s无法进入维护模式\x02宿主机状态为%s不支持此操作\x02宿主机%s无法迁移虚机%s,因虚机状态为%s\x02因状态为%" + "s无法执行insert-iso指令\x02因状态为%s无法执行eject-iso指令\x02非裸金属服务器中无法执行同步配置操作\x02预留CP" + "U数必须为非负整数\x02预留内存大小必须为非负整数\x02预留存储必须为非负整数\x02宿主机%s无法为每个透传设备预留%d个CPU,因资源不" + "够\x02宿主机%s无法为每个透传设备预留%dM内存,因资源不够\x02宿主机%s无法为每个透传设备预留%dM存储,因资源不够\x02仅系统" + "管理员可指定宿主机\x02存储正使用中\x02GetGuestDiskCount失败:%s\x02GetGuestnicsCount调用出错" + - ":%s\x02宿主机上的虚机正在使用此二层网络中的子网\x02无法删除错误状态的虚拟机快照\x02vpc不支持加入其他云供应商的vpc互联网" + - "络\x02vpc不支持加入其他云供应商的vpc互联网络\x02vpc已经加入其他的vpc互联网络\x02vpc未加入该vpc互联网络\x02" + - "透传设备正被虚机使用\x02找不到透传设备%s\x02透传设备已被另外一台虚机%s使用\x02透传设备已被虚机%s使用\x02Kafka锁定" + - "中, 不可删除\x02Kafka有%d个任务进行中,请稍后再同步状态\x02不支持格式%s\x02无效的公钥:%v\x02GetLinked" + - "GuestsCount失败:%s\x02密钥对正被虚机使用无法删除\x02无效的地址%s\x02描述文本过长(%d>=%d)\x02描述文本包含" + - "不可打印字符:%v\x02访问控制包含重复的CIDR %s\x02获取访问控制数量失败:%s\x02访问控制%s仍被%d个%s使用\x02无" + - "效的VRRP网络接口名%q\x02无效的VRRP认证密钥长度:%d,要求[1,8]\x02无效的VRRP优先级%d,要求[1,255]" + - "\x02无效的VRRP virtual_router_id %d:要求[1,255]\x02无效的VRRP advert_int %d:要求[1" + - ",255]\x02telegraf参数:无效的influxdb URL:%s\x02%s:无效的base64编码串:%s\x02%s:无效的模板" + - ":%s\x02获取其它集群的转发节点失败:%v\x02与转发节点%s(%s)冲突:%v\x02转发集群%s(%s)已占用virtual_ro" + - "uter_id %d\x02%s:时间错误:%s\x02%s:新指定时间在未来:%s > %s\x02集群中已有节点%s(%s)使用VRRP优先" + - "级%d\x02使用yum模式需要提供有效的repo_base_url参数\x02主机名为空\x02查找宿主机%s出错:%v\x02转发节点不" + - "能部署到纳管的宿主机上\x02查找虚机%s出错:%v\x02转发节点不能部署到公有云虚机上\x02虚机当前状态为%q,要求为%q\x02un" + - "marshal输入参数出错: %v\x02主机缺少%s字段\x02主机缺少%s字段\x02认证出错:%v\x02用户必须有系统管理员权限\x02" + - "获取%s %s服务URL出错:%v\x02上次部署的信息不可用\x02查找后端组相关的资源出错\x02unmarshal VirtualRe" + - "sourceCreateInput失败:%s\x02无效的权重%d,要求在0~256范围\x02无效的端口%d,要求在1~65535范围\x02" + - "找不到虚机%s\x02仅系统管理员可指定宿主机作为后端\x02找不到宿主机%s\x02未识别的后端类型%s\x02第%d个后端所属的regi" + - "on与lb的region不匹配\x02调用isDefault出错:%s\x02后端服务器组%s是默认组\x02调用refCount出错:%s" + - "\x02后端组%s仍被%d个%s使用\x02%s要求添加到后端组中的虚机状态为%s,当前虚机状态为%s\x02虚机%s(%s)所处VPC %s(" + - "%s)和负载均衡所处VPC %s不一致\x02获取虚机%s出错\x02虚机%s(%s)所属VPC %s(%s)不是%s(%s)\x02虚机%s(" + - "%s)已存在于后端组%s(%s)\x02访问控制缓存已在region %s存在\x02获取证书使用数失败:%s\x02证书%s仍被%d个%s使用" + - "\x02无效的本地证书:私钥为空\x02无效的本地证书:证书内容为空\x02证书缓存已在region %s存在\x02不允许变更证书内容\x02" + - "zone %s(%s)不合法:仅允许本地IDC的zone\x02二层网络所属zone %s与参数中的zone %s(%s)冲突,\x02wire" + - "所属zone必须为%s,实际为%s\x02获取负载均衡集群引用次数失败:%v\x02负载均衡集群仍被%d个%s使用\x04\x00\x01 " + - "J\x02负载均衡集群%s(%s)和%s(%s)两者virtual_router_id参数冲突:%d\x02无效的条件格式,要求为JSON" + - "\x02无效的表达式格式,要求为JSON数组\x02触及条件数目上限(5),已指定%d个\x02规则%s/%s已被%s(%s)使用\x02%s监" + - "听的端口%d已被%s(%s)占用\x02无法找到region信息\x02后端服务器组%s(%s)属于负载均衡实例%s,而不是%s\x04" + + ":%s\x02无法删除错误状态的虚拟机快照\x02vpc不支持加入其他云供应商的vpc互联网络\x02vpc不支持加入其他云供应商的vpc互" + + "联网络\x02vpc已经加入其他的vpc互联网络\x02vpc未加入该vpc互联网络\x02透传设备正被虚机使用\x02找不到透传设备%s" + + "\x02透传设备已被另外一台虚机%s使用\x02透传设备已被虚机%s使用\x02Kafka锁定中, 不可删除\x02Kafka有%d个任务进行中" + + ",请稍后再同步状态\x02不支持格式%s\x02无效的公钥:%v\x02GetLinkedGuestsCount失败:%s\x02密钥对正被" + + "虚机使用无法删除\x02telegraf参数:无效的influxdb URL:%s\x02%s:无效的base64编码串:%s\x02%s:" + + "无效的模板:%s\x02%s:时间错误:%s\x02%s:新指定时间在未来:%s > %s\x02使用yum模式需要提供有效的repo_ba" + + "se_url参数\x02主机名为空\x02查找宿主机%s出错:%v\x02转发节点不能部署到纳管的宿主机上\x02查找虚机%s出错:%v\x02" + + "转发节点不能部署到公有云虚机上\x02虚机当前状态为%q,要求为%q\x02查找后端组相关的资源出错\x02无效的权重%d,要求在0~256" + + "范围\x02无效的端口%d,要求在1~65535范围\x02仅系统管理员可指定宿主机作为后端\x02未识别的后端类型%s\x02第%d个后端" + + "所属的region与lb的region不匹配\x02调用isDefault出错:%s\x02后端服务器组%s是默认组\x02调用refCou" + + "nt出错:%s\x02后端组%s仍被%d个%s使用\x02%s要求添加到后端组中的虚机状态为%s,当前虚机状态为%s\x02虚机%s(%s)所处" + + "VPC %s(%s)和负载均衡所处VPC %s不一致\x02获取虚机%s出错\x02虚机%s(%s)所属VPC %s(%s)不是%s(%s)" + + "\x02虚机%s(%s)已存在于后端组%s(%s)\x02宿主机的region %q(%s)与负载均衡实例的%q(%s)不相符\x02zone " + + "%s(%s)不合法:仅允许本地IDC的zone\x02二层网络所属zone %s与参数中的zone %s(%s)冲突,\x02wire所属zon" + + "e必须为%s,实际为%s\x02负载均衡集群仍被%d个%s使用\x02获取负载均衡集群引用次数失败:%v\x02转发集群%s(%s)已占用vir" + + "tual_router_id %d\x02无效的条件格式,要求为JSON\x02无效的表达式格式,要求为JSON数组\x02触及条件数目上限(5" + + "),已指定%d个\x02监听类型必须为http/https,输入为%s\x02弹性公网IP %s 状态异常\x02弹性公网IP%s已经关联到" + + "%s\x02lb所在的子账号%s和弹性公网ip所在的子账号%s不匹配\x02后端服务器组%s(%s)属于负载均衡实例%s,而不是%s\x04" + "\x00\x01 9\x02负载均衡集群所属zone %s与子网zone %s不匹配\x02负载均衡集群所属wire与子网所属wire不匹配:%" + "s != %s\x02负载均衡已经被锁定,无法删除\x02MongoDB有任务进行中,请稍后再同步状态\x02MongoDB锁定中,不支持删除" + "\x02MongoDB在%s状态下不支持请求备份列表\x02挂载点数量已到达上限\x02不支持的网络类型 %s\x02所选网络和文件系统不属于同" + @@ -4130,139 +4153,109 @@ const zh_CNData string = "" + // Size: 52598 bytes " 或加force参数强制删除\x02NAT网关已有%d个活跃任务在执行,无法执行同步状态操作\x02NAT计费类型为%s不支持取消到期释放" + "\x02NAT计费类型为%s,不支持此操作\x02NAT状态为%s时不支持续费操作,要求状态为%s\x02NAT要求状态为%s,当前为%s" + "\x02只有%sNAT支持此操作\x02源CIDR和网络冲突,只能输入一个\x02CIDR %s不在VPC允许范围%s内\x02子网%s不属于v" + - "pc%s\x02IP子网 %s 包含已分配的IP地址\x02地址%s不在子网%s(%s)范围内\x02isAddressUsed调用失败:%s" + - "\x02地址%s已被占用\x02getFreeAddressCount调用失败:%s\x02子网%s(%s)已没有可用地址\x02候选IP %s" + - "不在范围内\x02找不到可用IP地址\x02不允许使用网络%s\x02查找网络%s失败:%v\x02地址%s不在范围内\x02仅系统管理员允" + - "许使用预留的IP地址\x02地址%s未被预留\x02地址%s已被使用\x02带宽限速不可超过%dMbps\x02无效的时间长度%s\x02无" + - "效的IP地址%s:%s\x02地址%s不在子网中\x02获取预留地址出错\x02找到%d个二层网络(zone %s,vpc %s)\x02找" + - "不到wire(zone %s,vpc %s)\x02无效的server_type参数:%s\x02无效的VlanID\x02无法生成有效的网" + - "卡名指引:%v\x02ip_prefix错误:%s\x02子网掩码长度需小于30\x02无效的masklen %d\x02无效的起始IP %" + - "s:%s\x02无效的终止IP %s:%s\x02起始和终止IP不在同一个子网\x02%s: 无效的IP地址%s\x02无效的网关IP:%v" + - "\x02网关IP必须与起始、终止IP在同一个子网\x02当wire未指定时必须指定zone和vpc信息\x02VPC未准备好\x02EIP子网仅" + - "能存在于经典网络vpc中,实际为%s(%s)\x02起始、终止IP使用掩码后不属于同一个CIDR子网\x02子网不在VPC cidrbloc" + - "k %s范围内\x02调用vpc GetNetworks失败:%v\x02与vpc %q中已有子网地址冲突\x02查询所有子网时失败\x02与已" + - "有子网地址冲突\x02已存在分配了的地址在新范围以外\x02起始、终止IP必须在同一子网\x02子网server_type %s不支持自动分" + - "配\x02解析IP地址失败\x02子网所属cloudprovider为启用状态,无法执行purge操作\x02找不到子网%s\x02无效的目" + - "标IP子网 %s:%s 不一致\x02子网%s和%s地址不连续\x02仅本地IDC支持此操作\x02无效的IP %s\x02分割IP %s是" + - "子网起始IP\x02分割IP %s不在范围\x02名称重复\x02GenerateName调用失败:%s\x02生成网卡名指引失败:%s" + - "\x02ip\x02仅支持服务类型%s\x02仅支持本地IDC的子网\x02本地IDC子网无法执行同步状态操作\x02无法变更纳管子网的状态" + - "\x02无效的状态%s\x02BgpType字段只对EIP类型的IP子网有意义\x02不支持创建\x02不支持创建策略定义\x02同步策略已经绑" + - "定在%d个云账号\x02同步策略绑定在%d个订阅\x02无效的cidr地址 %s\x02不支持的下一条类型 %s\x02暂时不支持%s 修改" + - "路由表\x02路由表所属cloudprovider为启用状态,无法执行purge操作\x02unmarshal CIDR列表失败:%s" + - "\x02min_instance_number不应小于0\x02min_instance_number不应大于max_instance_numb" + - "er\x02desire_instance_number应在min_instance_number和max_instance_number范围内" + - "\x02找不到cloudregion %s\x02伸缩组需要指定网络参数\x02部分子网不存在\x02子网%s不在vpc %s中\x02找不到虚" + - "机模板%s\x02虚机模板%s在cloudregion %s中无效,原因:%s\x02未知的扩容原则:%s\x02未知的缩容原则:%s" + - "\x02未知的健康检查模式%s\x02找不到负载均衡后端组%s\x02找不到负载均衡后端端口%d\x02无效的负载均衡后端权重%d\x02请先禁" + - "用此伸缩组\x02此伸缩组中还存在虚机,请先将它们删除\x02找不到此伸缩组%s\x02虚机%s不属于伸缩组%s\x02伸缩策略必须属于某伸" + - "缩组\x02找不到伸缩组%s\x02未知的触发类型%s\x02未知的伸缩策略动作%s\x02未知的伸缩策略计量单位%s\x02除非状态rea" + - "dy,否则无法触发伸缩策略\x02报警id不匹配\x02告警%s中包含未知的操作符\x02告警%s中存在未知的指示器\x02告警%s中存在未知的" + - "聚合函数\x02告警周期的最小值为300\x02无效的策略%s\x02不支持资源类型%q\x02无效schedtag_id参数\x02不支持" + - "资源类型%s\x02调度标签%s\x02调度标签%s的资源类型不匹配:%s != %s\x02unmarshal JointResource" + - "CreateInput出错:%s\x02无效的调度标签%s\x02无效的默认策略%s\x02无法设定%s作为默认策略\x02GetObjectC" + - "ount调用出错:%s\x02标签已关联至%s\x02getDynamicSchedtagCount调用出错:%s\x02标签已有动态规则" + - "\x02getSchedPoliciesCount调用出错:%s\x02标签已与调度策略绑定\x02调度标签%s的资源类型为%s,与%s不匹配" + - "\x02安全组被%d个安全组所引用\x02源安全组不能指向自己\x02获取安全组%s失败\x02第%d条规则无效:%s\x02vpc %s(%s" + - ")不是一个纳管资源\x02不支持缓存经典安全组\x02无效的IP地址:%s\x02安全组%s的规则与%s不相等\x02不允许删除默认的安全组" + - "\x02当前安全组被其他安全组所引用\x02找不到虚机模板\x02解析图标URL出错:%s\x02找不到虚机模板%s\x02cpu_core_c" + - "ount应在1~256范围内\x02memory_size_mb应在512~%d范围内\x02instance_type_category应是%" + - "s其中之一\x02不支持创建公有云套餐\x02检查SKU重名时出错:%v\x02重复的SKU %s\x02实例规格列表查询出错\x02无法变更S" + - "KU名称\x02检查实例出错\x02不允许删除正在使用中的实例类型,请先移除相关的虚机:%s\x02不允许删除公有云instance_type:" + - "%s\x02查找zone %s(%s)所属的cloudregion失败\x02实例类型%s重复\x02查询SKU列表出错\x02删除SKU %s" + - "失败\x02Unmarshal输入参数失败:%s\x02保留天数须在范围1~%d内,或为-1\x02repeat_weekdays最多只能包" + - "含%d天\x02time_points最多只能包含%d个时间点\x02Unmarshal输入参数出错:%s\x02保持日期数必须在1~655" + - "35范围内,或为-1\x02无需更新\x02无法删除已绑定到磁盘的快照策略\x02找不到磁盘%s\x02磁盘快照策略已存在\x02磁盘%s绑定了" + - "过多的快照策略\x02找不到虚机%s\x02无法删除状态为%s的快照\x02获取实例快照出错:%s\x02快照仍被实例快照引用\x02磁盘重" + - "置时无法删除快照\x02快照有%d个任务自执行中,无法执行同步状态操作\x02因磁盘%s仍存在,无法删除其快照\x02磁盘%s没有快照" + - "\x02无法删除磁盘快照,因存在手工快照\x02快照所属cloudprovider为启用状态,无法执行purge操作\x02getReferen" + - "ceCount调用出错:%s\x02镜像正使用中\x02下载会话还未过期\x02无法删除最后的缓存\x02状态为%s无法取消缓存\x02存储缓存" + - "非空\x02仍被存储引用\x02无法取消非定义镜像的缓存\x02镜像不在缓存存储中\x02标记缓存状态出错:%s\x02无效的介质类型%s" + - "\x02不支持创建%s存储\x02GetHostCount调用失败:%s\x02存储已关联宿主机\x02存储上还有磁盘\x02存储上还有快照" + - "\x02找不到存储缓存\x02存储是已启用状态\x02宿主机在线状态无法解绑\x02宿主机%s找不到存储%s\x02只有公有云支持VPC对等连接" + - "\x02vpc不支持加入其他云供应商的vpc互联网络\x02ipv4 地址重叠\x02%s 不支持跨云vpc对等连接\x02%s 不支持跨可用区" + - "vpc对等连接\x02vpc %s 和 vpc %s 已经互联\x02无效的external_access_mode %q,要求%s\x02不允" + - "许删除默认VPC\x02GetNetworkCount调用出错:%s\x02VPC不为空,请先删除其中的网络\x02GetNatgatewa" + - "yCount调用出错:%v\x02VPC不为空,请先删除其中的NAT网关\x02获取请求方vpc失败 %v\x02请先删除vpc对等连接\x02" + - "无效的cidr_block %s\x02VPC所属cloudprovider为启用状态,无法执行purge操作\x02本地IDC VPC不支" + - "持同步状态操作\x02对于经典网络,仅可设置为系统级别的共享\x02禁止将经典网络设为私有\x02映射IP枯竭\x02WAF %s 状态不可" + - "用\x02不支持修改WAF规则名称\x02带宽值必须大于0\x02MTU值必须在0~1000000范围内\x02当前仅KVM平台支持创建二层" + - "网络\x02HostCount调用出错:%s\x02二层网络中包含宿主机\x02NetworkCount调用出错:%s\x02二层网络包含子" + - "网\x02找不到cloudregion %s\x02不支持为%s创建zone\x02内网负载均衡实例不支持带宽计费\x02负载均衡实例的ma" + - "nager %s(%s)与VPC的%s(%s)不匹配\x02阿里云不支持变更证书\x02主备后端组必须包含两个后端\x02不支持后端组类型%s" + - "\x02无效的虚机机%s\x02阿里云实例权限必须在0~100范围内\x02内部错误:未知的后端类型%s\x02后端组%s不支持此操作\x02宿" + - "主机的region %q(%s)与负载均衡实例的%q(%s)不相符\x02%s后端组不支持变更端口\x02%s后端组不支持变更端口和权限" + - "\x02未知的后端组类型%s\x02监听类型必须为http/https,输入为%s\x02后端组%s(%s)属于负载均衡%s,而不是%s\x02" + - "后端组必须为普通类型\x02转发规则%s(%s):获取归属监听%s失败\x02HTTP、HTTPS监听仅支持默认和普通后端组\x02heal" + - "th_check_domain长度必须在1~80范围内\x02%s长度必须在500个字母以内\x02sticky_session_cookie长" + - "度必须在1~200范围内\x02sticky_session_cookie仅允许包含字母、数字、下划线和破折号\x02未知的sticky_s" + - "ession_type,仅支持%s或%s\x02找不到负载均衡实例%s(%s)的region\x02调度算法%s对于性能共享性负载均衡实例不可用" + - "\x02cloudregion %s(%s)不支持%s调度器\x02无效%s,要求为整数\x02%s不能被置为0\x02%s不支持关闭tcp或u" + - "dp监听的健康检查\x02%s快照名称不可以auto,http://,https://开头\x02阿里云%s不支持恢复\x02阿里云仅支持从它自" + - "己的备份中恢复\x02阿里云%s 5.7/8.0支持local_ssd+high_availability,5.6仅支持从它自己的备份中恢复" + - "\x02备份实例不支持预付费计费类型\x02无法在子网%s(%s)和区域%s(%s)中找到匹配的SKU\x02%s %s不支持创建只读MySQL" + - "数据库实例\x02不支持创建只读MySQL %s %s实例:不支持%s存储类型,仅支持%s\x02不支持创建只读MySQL %s数据库实例" + - "\x02SQL Server只支持创建2017_ent型只读数据库实例\x02不可创建超过7个只读SQL Server数据库实例\x02不支持创" + - "建引擎为%s的只读数据库实例\x02主实例内在大于等于64GB,最多可创建10个只读实例\x02主实例内在小于64GB,最多可创建5个只读实" + - "例\x02VPC %s(%s)至少需要2个子网来使用阿里云%s(%s)\x02描述不可以http://、https://开头\x02阿里云数" + - "据库实例账号名称长度应在2~16内\x02%s是阿里云%s的保留名称\x02账号名称中包含无效字符:%s\x02账号名称不可以下划线开头或结" + - "尾\x02%s仅对阿里云%s或%s有效\x02%s仅对阿里云%s有效\x02未知的权限%s\x02子网%s所属的VPC未找到\x02acco" + - "unt_privilege %s仅支持Redis版本4.0\x02要求至少%d子网\x02要求至少有%d个包含8个可用IP的子网\x02负载均衡" + - "实例的manager %s与VPC %s(%s)的不匹配:%s\x02所有子网应属于同一个VPC:%s\x02已经有一个子网在区域%s:%s" + - "\x02无效的loadbalancer_spec参数:%s\x02无效的backendgroup参数:%s\x02无效的loadbalancer" + - "_spec参数:%s\x02%s当前不支持创建负载均衡访问控制规则\x02%s当前不支持创建负载均衡证书\x02后端%s已经以端口%d注册" + - "\x02%s要求掩码大小在16到28范围内\x02不支持的aws WAF类型 %s\x02%s当前不支持创建负载均衡实例\x02不支持的azur" + - "e WAF类型 %s\x02不支持的默认动作 %s\x02磁盘和快照策略应在相同的域\x02磁盘和快照策略应在相同的项目\x02%s不支持创建负" + - "载均衡实例\x02%s不支持创建负载均衡访问控制规则\x02%s不支持创建负载均衡证书\x02Google数据库实例不支持预付费计费类型" + - "\x02磁盘尺寸必须在10~30720GB范围内\x02EIP %s(%s)与vpc %s(%s)的manager id (%s)不匹配\x02" + - "负载均衡实例正被%d个监听使用\x02负载均衡实例正被%d个后端组使用\x02不支持创建引擎类型为%s的只读数据库实例\x02华为云数据库实" + - "例名称长度必须在4~64范围内\x02%s要求磁盘大小必须在40~4000GB范围内\x02disk_size_gb必须是10的整数倍" + - "\x02不支持为华为云%s实例创建账号\x02华为云RDS密码不允许是账号名的反转\x02不支持创建华为云%s实例创建数据库\x02华为云数据库" + - "实例备份名称长度应在4~64范围内\x02华为云仅支持使用%s时指定数据库\x02华为云数据库实例的磁盘不可缩容\x02华为云当前不支持重置" + - "数据库实例的账号密码\x02无需为管理员账号授予或收回权限\x02%s不支持恢复\x02华为云%s RDS不支持从它自己的备份中恢复\x02" + - "华为云仅%s引擎支持数据库恢复\x02新数据库名称不允许是%s\x02zone不匹配,弹性缓存SKU的zone %s != %s\x02SK" + - "U %s已售罄\x02%s不支持创建账号\x02华为云%s类型弹性缓存不支持创建备份\x02华为云不支持绑定弹性公网IP\x02zone信息未指" + - "定\x02VPC中的负载均衡暂不支持\x02zone %s(%s)没有可用负载均衡转发集群\x02没有可用的负载均衡转发集群\x02宿主机%" + - "s没有可访问的IP\x02查找虚机%s所在宿主机出错\x02查找负载均衡后端组%s所属的实例出错\x02宿主机%q(%s)所属的region与负" + - "载均衡实例所属的%q(%s)不一致\x02跳转应至少变更scheme, host, path中的一项\x02未指定backend_group" + - "参数\x02非跳转类型监听必须指定backend_group参数\x02仅http/https监听可启用跳转功能\x02非http监听必须指" + - "定后端组\x02无效的子网类型%q,期望%q\x02查找子网%s(%s)所属的VPC时出错\x02子网%s(%s)不属于%s\x02KVM快" + - "照找不到所属的存储\x02不可变更负载均衡监听的listener_type\x02不可变更负载均衡监听的listener_port\x02无" + - "法在状态%s时创建备份\x02负载均衡监听%s正在变更中\x02负载均衡后端组已与监听%s绑定\x02负载均衡实例已与四层监听%s关联" + - "\x02路径不可为空\x02虚机%s、端口%d已注册\x02虚机%s、端口%d正被监听%s使用\x02腾讯云基础类型MySQL实例不支持创建备份" + - "\x02腾讯云不支持创建数据库\x02腾讯云Redis 2.8版本不支持创建账号\x02未指定规格查询参数\x02解析规格参数%s出错:%v" + - "\x02获取对象出错:%v\x02空的project_id/tenant_id\x02找不到项目%s\x02快照正被磁盘使用,无法删除\x02磁" + - "盘需要至少1个快照作为后备文件\x02磁盘%s没有挂载到虚机\x02磁盘所挂载的虚机有备机,无法创建快照\x02虚机状态为%s时无法创建快照" + - "\x02检查磁盘快照数时出错:%s\x02磁盘%s快照数满,不可再创建\x02RBD存储%s(%s)已存在\x02无效网关\x02服务器内部错误" + - "\x02资源不在可用状态\x02支付类错误\x02镜像未找到\x02找不到资源\x02找不到Spec\x02找不到动作\x02找不到租户\x02" + - "服务器状态错误\x02无效的格式\x02输入参数错误\x02弱密码\x02参数不存在\x02资源不足\x02资源不足\x02配置不足\x02" + - "超出范围\x02超出上限\x02权限不足\x02不支持的操作\x02内容非空\x02无效的请求\x02空的请求\x02未授权\x02无效的凭" + - "证\x02禁止\x02不可接受\x02名称重复\x02资源重复\x02冲突\x02资源忙\x02需要License\x02被保护的资源" + - "\x02没有项目\x02实体太大\x02尝试失败次数过多\x02请求数过多\x02不支持的协议\x02策略定义错误\x02用户不存在\x02用户" + - "被锁定\x02用户被禁用\x02密码错误\x02用户名或者密码不正确\x02输入的秘钥不存在、已禁用或者错误\x02找不到镜像%s\x02密" + - "码必须12位长度,包含至少一个数字,大小写字母和符号\x02%s资源重名:%s\x02%s资源id重复:%s\x02没有此driver" + - "\x02DN为空\x02id为空\x02名称为空\x02用户已禁用\x02sysadmin受到保护\x02无法将当前用户从当前项目中移除\x02" + - "查询出错:%s\x02输入参数未指定type字段\x02输入参数缺少blob字段\x02加密出错:%s\x02不可删除默认域\x02域仍为启" + - "用状态\x02域中仍有用户\x02域中仍有组\x02域中仍有项目\x02域中仍有角色\x02域中仍有权限定义\x02域中包含外部资源\x02" + - "只读\x02默认域受到保护\x02字段%s为只读\x02endpoint为启用状态\x02缺少输入字段interface\x02缺少输入字段" + - "service/service_id\x02找不到证书%s\x02获取敏感配置需要管理员权限\x02状态为启用、已连接无法更新配置\x02状态不" + - "为空闲时无法更新配置\x02saveConfigs调用失败:%s\x02无效的模板\x02缺少driver\x02不支持driver %s" + - "\x02driver %s已存在\x02不可删除默认的SQL认证源\x02不可删除已启用的认证源\x02认证源中仍有项目\x02已启用的域%s不" + - "可删除\x02同步状态中不可更新\x02域已禁用\x02资源已启用\x02解析权限定义失败\x02不可删除系统权限定义\x02不可删除已启用" + - "权限定义\x02不可删除system项目\x02项目中包含外部资源\x02项目中包含用户\x02项目中包含组\x02不可变更system项目" + - "名\x02区域中包含endpoint\x02缺少输入删除id\x02不可变更角色的名称\x02不可删除系统角色\x02角色已被赋予给用户" + - "\x02角色已被赋予给组\x02不支持在指定上下文中执行更新操作\x02不支持在指定上下文中执行更新操作:%s\x02项目和角色不在同一个域" + - "\x02不支持在指定的第2个上下文中执行更新操作:%s\x02服务还有endpoint定义\x02服务已启用\x02更新配置版本失败:%s" + - "\x02不可变更sysadmin的用户名\x02无效的密码:%s\x02无法删除非本地的非SSO用户\x02用户仍有外部资源\x02不可删除系统" + - "用户\x02用户和组的域归属必须相同\x02不可加入只读组\x02不可离开只读组\x02版本不匹配\x02项目已禁用\x02用户已禁用" + - "\x02无效的token\x02token已过期\x02无效的fernet token\x02无效的认证方法\x02找不到用户\x02空的认证请" + - "求\x02用户不在项目中\x02无效的access key\x02过期的access key\x02输入无法识别:%s\x02未鉴权:%s" + - "\x02解析请求体失败\x02用户名重复\x02找不到用户,或用户未启用\x02无效的用户\x02无效的项目\x02内部服务错误:%s\x02无" + - "效的域\x02无效的token:%s\x02不允许获取使用量\x02未授权\x02无效的Token\x02%s服务异常,请检查服务状态" + - "\x02%s服务异常或网络异常, 请重试\x02%s服务域名解析异常, 请检查域名解析配置\x02%s服务请求超时, 请稍后再试\x02找不到名" + - "字%s\x02找不到登录密文信息\x02找不到密码\x02找不到SSH密码:%s\x02无效的资源格式\x02服务%s找不到:%v\x02找" + - "不到登录login_key\x02查询中找不到kind:%v\x02查询中找不到key:%v\x02找不到%s的TOTP信息\x02找不到%" + - "s的密文恢复信息\x02TOTP密文已存在\x02未指定uid\x02未指定pids\x02pids中未指定pid\x02pids中未指定rid" + - "\x02未指定rid\x02找不到项目\x02不支持的动作%s\x02找不到数据源对应的执行器\x02安全组id不应为空\x02找不到安全组%s" + - "\x02无效的服务点\x02解析URL %q出错:%v\x02不支持的字符 %s\x02检查重复名称失败:%s\x02权限定义正被使用" + "pc%s\x02IP子网 %s 包含已分配的IP地址\x02候选IP %s不在范围内\x02找不到可用IP地址\x02不允许使用网络%s\x02" + + "查找网络%s失败:%v\x02地址%s不在范围内\x02仅系统管理员允许使用预留的IP地址\x02地址%s未被预留\x02isAddress" + + "Used调用失败:%s\x02地址%s已被使用\x02带宽限速不可超过%dMbps\x02getFreeAddressCount调用失败:%s" + + "\x02子网%s(%s)已没有可用地址\x02无效的时间长度%s\x02无效的IP地址%s:%s\x02地址%s不在子网中\x02获取预留地址出" + + "错\x02找到%d个二层网络(zone %s,vpc %s)\x02找不到wire(zone %s,vpc %s)\x02无效的server" + + "_type参数:%s\x02无效的VlanID\x02无法生成有效的网卡名指引:%v\x02ip_prefix错误:%s\x02子网掩码长度需小" + + "于30\x02无效的masklen %d\x02无效的起始IP %s:%s\x02无效的终止IP %s:%s\x02起始和终止IP不在同一个" + + "子网\x02%s: 无效的IP地址%s\x02无效的网关IP:%v\x02网关IP必须与起始、终止IP在同一个子网\x02当wire未指定时" + + "必须指定zone和vpc信息\x02VPC未准备好\x02EIP子网仅能存在于经典网络vpc中,实际为%s(%s)\x02起始、终止IP使用" + + "掩码后不属于同一个CIDR子网\x02子网不在VPC cidrblock %s范围内\x02调用vpc GetNetworks失败:%v" + + "\x02与vpc %q中已有子网地址冲突\x02查询所有子网时失败\x02与已有子网地址冲突\x02起始、终止IP必须在同一子网\x02子网se" + + "rver_type %s不支持自动分配\x02解析IP地址失败\x02子网所属cloudprovider为启用状态,无法执行purge操作" + + "\x02找不到子网%s\x02无效的目标IP子网 %s:%s 不一致\x02子网%s和%s地址不连续\x02仅本地IDC支持此操作\x02无效的" + + "IP %s\x02分割IP %s是子网起始IP\x02分割IP %s不在范围\x02名称重复\x02GenerateName调用失败:%s" + + "\x02生成网卡名指引失败:%s\x02ip\x02仅支持服务类型%s\x02仅支持本地IDC的子网\x02本地IDC子网无法执行同步状态操作" + + "\x02无法变更纳管子网的状态\x02无效的状态%s\x02BgpType字段只对EIP类型的IP子网有意义\x02不支持创建\x02不支持创建" + + "策略定义\x02同步策略已经绑定在%d个云账号\x02同步策略绑定在%d个订阅\x02无效的cidr地址 %s\x02不支持的下一条类型 %" + + "s\x02暂时不支持%s 修改路由表\x02路由表所属cloudprovider为启用状态,无法执行purge操作\x02unmarshal C" + + "IDR列表失败:%s\x02min_instance_number不应小于0\x02min_instance_number不应大于max_ins" + + "tance_number\x02desire_instance_number应在min_instance_number和max_instance" + + "_number范围内\x02找不到cloudregion %s\x02伸缩组需要指定网络参数\x02部分子网不存在\x02子网%s不在vpc %" + + "s中\x02找不到虚机模板%s\x02虚机模板%s在cloudregion %s中无效,原因:%s\x02未知的扩容原则:%s\x02未知的缩容" + + "原则:%s\x02未知的健康检查模式%s\x02找不到负载均衡后端组%s\x02找不到负载均衡后端端口%d\x02无效的负载均衡后端权重%d" + + "\x02请先禁用此伸缩组\x02此伸缩组中还存在虚机,请先将它们删除\x02找不到此伸缩组%s\x02虚机%s不属于伸缩组%s\x02伸缩策略必" + + "须属于某伸缩组\x02找不到伸缩组%s\x02未知的触发类型%s\x02未知的伸缩策略动作%s\x02未知的伸缩策略计量单位%s\x02除非" + + "状态ready,否则无法触发伸缩策略\x02报警id不匹配\x02告警%s中包含未知的操作符\x02告警%s中存在未知的指示器\x02告警%" + + "s中存在未知的聚合函数\x02告警周期的最小值为300\x02无效的策略%s\x02不支持资源类型%q\x02无效schedtag_id参数" + + "\x02不支持资源类型%s\x02调度标签%s\x02调度标签%s的资源类型不匹配:%s != %s\x02unmarshal JointRes" + + "ourceCreateInput出错:%s\x02无效的调度标签%s\x02无效的默认策略%s\x02无法设定%s作为默认策略\x02GetOb" + + "jectCount调用出错:%s\x02标签已关联至%s\x02getDynamicSchedtagCount调用出错:%s\x02标签已有动态" + + "规则\x02getSchedPoliciesCount调用出错:%s\x02标签已与调度策略绑定\x02调度标签%s的资源类型为%s,与%s" + + "不匹配\x02无效的IP地址:%s\x02不允许删除默认的安全组\x02安全组%s当前有%d个资源在使用\x02第%d条规则无效:%s" + + "\x02memory_size_mb应在512~%d范围内\x02instance_type_category应是%s其中之一\x02不支持创建" + + "公有云套餐\x02检查SKU重名时出错:%v\x02重复的SKU %s\x02实例规格列表查询出错\x02无法变更SKU名称\x02不允许删" + + "除正在使用中的实例类型,请先移除相关的虚机:%s\x02不允许删除公有云instance_type:%s\x02查找zone %s(%s)所" + + "属的cloudregion失败\x02实例类型%s重复\x02找不到虚机模板\x02解析图标URL出错:%s\x02找不到虚机模板%s" + + "\x02保留天数须在范围1~%d内,或为-1\x02找不到虚机%s\x02无法删除状态为%s的快照\x02获取实例快照出错:%s\x02快照仍被" + + "实例快照引用\x02磁盘重置时无法删除快照\x02快照有%d个任务自执行中,无法执行同步状态操作\x02因磁盘%s仍存在,无法删除其快照" + + "\x02磁盘%s没有快照\x02无法删除磁盘快照,因存在手工快照\x02快照所属cloudprovider为启用状态,无法执行purge操作" + + "\x02getReferenceCount调用出错:%s\x02镜像正使用中\x02下载会话还未过期\x02无法删除最后的缓存\x02状态为%s" + + "无法取消缓存\x02存储缓存非空\x02仍被存储引用\x02无法取消非定义镜像的缓存\x02镜像不在缓存存储中\x02标记缓存状态出错:%s" + + "\x02无效的介质类型%s\x02不支持创建%s存储\x02找不到存储缓存\x02存储是已启用状态\x02宿主机在线状态无法解绑\x02宿主机%" + + "s找不到存储%s\x02只有公有云支持VPC对等连接\x02vpc不支持加入其他云供应商的vpc互联网络\x02ipv4 地址重叠\x02%s " + + "不支持跨云vpc对等连接\x02%s 不支持跨可用区vpc对等连接\x02vpc %s 和 vpc %s 已经互联\x02无效的extern" + + "al_access_mode %q,要求%s\x02不允许删除默认VPC\x02VPC不为空,请先删除其中的网络\x02VPC不为空,请先删除其" + + "中的NAT网关\x02无效的cidr_block %s\x02VPC所属cloudprovider为启用状态,无法执行purge操作\x02" + + "本地IDC VPC不支持同步状态操作\x02对于经典网络,仅可设置为系统级别的共享\x02禁止将经典网络设为私有\x02映射IP枯竭\x02" + + "WAF %s 状态不可用\x02不支持修改WAF规则名称\x02带宽值必须大于0\x02MTU值必须在0~1000000范围内\x02二层网络中" + + "包含宿主机\x02二层网络包含子网\x02找不到cloudregion %s\x02不支持为%s创建zone\x02无效的loadbalan" + + "cer_spec参数:%s\x02内网负载均衡实例不支持带宽计费\x02主备后端组必须包含两个后端\x02不支持后端组类型%s\x02无效的虚机" + + "机%s\x02阿里云实例权限必须在0~100范围内\x02%s后端组不支持变更端口\x02%s后端组不支持变更端口和权限\x02未知的后端组" + + "类型%s\x02health_check_domain长度必须在1~80范围内\x02%s快照名称不可以auto,http://,https" + + "://开头\x02阿里云%s不支持恢复\x02阿里云仅支持从它自己的备份中恢复\x02阿里云%s 5.7/8.0支持local_ssd+high" + + "_availability,5.6仅支持从它自己的备份中恢复\x02备份实例不支持预付费计费类型\x02无法在子网%s(%s)和区域%s(%s)" + + "中找到匹配的SKU\x02%s %s不支持创建只读MySQL数据库实例\x02不支持创建只读MySQL %s %s实例:不支持%s存储类型," + + "仅支持%s\x02不支持创建只读MySQL %s数据库实例\x02SQL Server只支持创建2017_ent型只读数据库实例\x02不可" + + "创建超过7个只读SQL Server数据库实例\x02不支持创建引擎为%s的只读数据库实例\x02主实例内在大于等于64GB,最多可创建10" + + "个只读实例\x02主实例内在小于64GB,最多可创建5个只读实例\x02VPC %s(%s)至少需要2个子网来使用阿里云%s(%s)\x02" + + "描述不可以http://、https://开头\x02阿里云数据库实例账号名称长度应在2~16内\x02%s是阿里云%s的保留名称\x02账" + + "号名称中包含无效字符:%s\x02账号名称不可以下划线开头或结尾\x02%s仅对阿里云%s或%s有效\x02%s仅对阿里云%s有效\x02未" + + "知的权限%s\x02account_privilege %s仅支持Redis版本4.0\x02%s要求掩码大小在16到28范围内\x02不支" + + "持的aws WAF类型 %s\x02不支持的azure WAF类型 %s\x02不支持的默认动作 %s\x02Google数据库实例不支持预" + + "付费计费类型\x02磁盘尺寸必须在10~30720GB范围内\x02不支持创建引擎类型为%s的只读数据库实例\x02华为云数据库实例名称长度" + + "必须在4~64范围内\x02%s要求磁盘大小必须在40~4000GB范围内\x02disk_size_gb必须是10的整数倍\x02不支持为" + + "华为云%s实例创建账号\x02华为云RDS密码不允许是账号名的反转\x02不支持创建华为云%s实例创建数据库\x02华为云数据库实例备份名称" + + "长度应在4~64范围内\x02华为云仅支持使用%s时指定数据库\x02华为云数据库实例的磁盘不可缩容\x02华为云当前不支持重置数据库实例的" + + "账号密码\x02无需为管理员账号授予或收回权限\x02%s不支持恢复\x02华为云%s RDS不支持从它自己的备份中恢复\x02华为云仅%s" + + "引擎支持数据库恢复\x02新数据库名称不允许是%s\x02%s不支持创建账号\x02华为云%s类型弹性缓存不支持创建备份\x02华为云不支持" + + "绑定弹性公网IP\x02没有可用的负载均衡转发集群\x02无效的子网类型%q,期望%q\x02查找子网%s(%s)所属的VPC时出错\x02" + + "子网%s(%s)不属于%s\x02KVM快照找不到所属的存储\x02内部错误:未知的后端类型%s\x02无法在状态%s时创建备份\x02路径" + + "不可为空\x02腾讯云基础类型MySQL实例不支持创建备份\x02腾讯云不支持创建数据库\x02腾讯云Redis 2.8版本不支持创建账号" + + "\x02未指定规格查询参数\x02解析规格参数%s出错:%v\x02获取对象出错:%v\x02空的project_id/tenant_id" + + "\x02找不到项目%s\x02快照正被磁盘使用,无法删除\x02磁盘需要至少1个快照作为后备文件\x02磁盘%s没有挂载到虚机\x02磁盘所挂载" + + "的虚机有备机,无法创建快照\x02虚机状态为%s时无法创建快照\x02检查磁盘快照数时出错:%s\x02磁盘%s快照数满,不可再创建\x02" + + "RBD存储%s(%s)已存在\x02无效网关\x02未实现\x02服务器内部错误\x02资源不在可用状态\x02支付类错误\x02镜像未找到" + + "\x02找不到资源\x02找不到Spec\x02找不到动作\x02找不到租户\x02服务器状态错误\x02无效的状态\x02无效的格式\x02输" + + "入参数错误\x02弱密码\x02参数不存在\x02资源不足\x02资源不足\x02配置不足\x02超出范围\x02超出上限\x02权限不足" + + "\x02不支持的操作\x02不支持\x02内容非空\x02无效的请求\x02空的请求\x02未授权\x02无效的凭证\x02禁止\x02未找到" + + "\x02不可接受\x02名称重复\x02资源重复\x02冲突\x02Id重复\x02资源忙\x02需要License\x02超时\x02被保护的" + + "资源\x02没有项目\x02无效的Provider\x02没有查询余额的权限\x02实体太大\x02尝试失败次数过多\x02请求数过多" + + "\x02不支持的协议\x02策略定义错误\x02用户不存在\x02用户被锁定\x02用户被禁用\x02密码错误\x02用户名或者密码不正确" + + "\x02服务异常\x02输入的秘钥不存在、已禁用或者错误\x02找不到镜像%s\x02密码必须12位长度,包含至少一个数字,大小写字母和符号" + + "\x02%s资源重名:%s\x02%s资源id重复:%s\x02没有此driver\x02DN为空\x02id为空\x02名称为空\x02用户已" + + "禁用\x02sysadmin受到保护\x02查询出错:%s\x02输入参数未指定type字段\x02输入参数缺少blob字段\x02加密出错" + + ":%s\x02不可删除默认域\x02域仍为启用状态\x02域中仍有用户\x02域中仍有组\x02域中仍有项目\x02域中仍有角色\x02域中" + + "仍有权限定义\x02只读\x02默认域受到保护\x02字段%s为只读\x02endpoint为启用状态\x02缺少输入字段interface" + + "\x02缺少输入字段service/service_id\x02找不到证书%s\x02获取敏感配置需要管理员权限\x02状态为启用、已连接无法更" + + "新配置\x02状态不为空闲时无法更新配置\x02saveConfigs调用失败:%s\x02无效的模板\x02缺少driver\x02不支持" + + "driver %s\x02driver %s已存在\x02不可删除默认的SQL认证源\x02不可删除已启用的认证源\x02认证源中仍有项目" + + "\x02已启用的域%s不可删除\x02同步状态中不可更新\x02域已禁用\x02资源已启用\x02解析权限定义失败\x02不可删除系统权限定义" + + "\x02不可删除已启用权限定义\x02不可删除system项目\x02项目中包含用户\x02项目中包含组\x02不可变更system项目名" + + "\x02区域中包含endpoint\x02缺少输入删除id\x02不可变更角色的名称\x02不可删除系统角色\x02角色已被赋予给用户\x02角" + + "色已被赋予给组\x02不支持在指定上下文中执行更新操作\x02不支持在指定上下文中执行更新操作:%s\x02项目和角色不在同一个域\x02不" + + "支持在指定的第2个上下文中执行更新操作:%s\x02服务还有endpoint定义\x02服务已启用\x02更新配置版本失败:%s\x02不可" + + "变更sysadmin的用户名\x02无效的密码:%s\x02无法删除非本地的非SSO用户\x02不可删除系统用户\x02用户和组的域归属必须" + + "相同\x02不可加入只读组\x02不可离开只读组\x02输入无法识别:%s\x02未鉴权:%s\x02解析请求体失败\x02用户名重复" + + "\x02找不到用户,或用户未启用\x02无效的用户\x02无效的项目\x02内部服务错误:%s\x02无效的域\x02无效的token:%s" + + "\x02不允许获取使用量\x02未授权\x02无效的Token\x02%s服务异常,请检查服务状态\x02%s服务异常或网络异常, 请重试" + + "\x02%s服务域名解析异常, 请检查域名解析配置\x02%s服务请求超时, 请稍后再试\x02找不到名字%s\x02找不到登录密文信息\x02" + + "找不到密码\x02找不到SSH密码:%s\x02无效的资源格式\x02服务%s找不到:%v\x02找不到登录login_key\x02查询中" + + "找不到kind:%v\x02查询中找不到key:%v\x02找不到%s的TOTP信息\x02找不到%s的密文恢复信息\x02TOTP密文已存" + + "在\x02未指定uid\x02未指定pids\x02pids中未指定pid\x02pids中未指定rid\x02未指定rid\x02找不到项" + + "目\x02不支持的动作%s\x02解析URL %q出错:%v\x02不支持的字符 %s\x02找不到用户\x02检查重复名称失败:%s" + + "\x02权限定义正被使用" - // Total table size 129405 bytes (126KiB); checksum: 39511A7A + // Total table size 125025 bytes (122KiB); checksum: 7E4626B diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/access_groups.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/access_groups.go index 9c3cdce5b..b12ecaa81 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/access_groups.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/access_groups.go @@ -17,8 +17,6 @@ package compute import "yunion.io/x/onecloud/pkg/apis" const ( - DEFAULT_ACCESS_GROUP = "default" - ACCESS_GROUP_STATUS_AVAILABLE = "available" ACCESS_GROUP_STATUS_DELETING = "deleting" ACCESS_GROUP_STATUS_DELETE_FAILED = "delete_failed" @@ -30,10 +28,15 @@ const ( type AccessGroupListInput struct { apis.StatusInfrasResourceBaseListInput + apis.ExternalizedResourceBaseListInput + ManagedResourceListInput + RegionalFilterListInput } type AccessGroupDetails struct { apis.StatusInfrasResourceBaseDetails + ManagedResourceInfo + CloudregionResourceInfo } type AccessGroupResourceInfo struct { @@ -51,4 +54,7 @@ type AccessGroupFilterListInput struct { type AccessGroupCreateInput struct { apis.StatusInfrasResourceBaseCreateInput + + CloudproviderResourceInput + CloudregionResourceInput } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/api.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/api.go index ee51d0e7a..667307807 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/api.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/api.go @@ -23,9 +23,22 @@ import ( type SchedtagConfig struct { apis.Meta - Id string `json:"id"` - Strategy string `json:"strategy"` - Weight int `json:"weight"` + // swagger: ignore + Id string `json:"id"` + // 调度策略 + // required: 必须使用 + // prefer: 尽量使用 + // avoid: 避免使用 + // exclude: 禁止使用 + // enmu: required, prefer, avoid, exclude + Strategy string `json:"strategy"` + // swagger: ignore + Weight int `json:"weight"` + // 资源类型 + // hosts: 宿主机 + // networks: 网络 + // storages: 存储 + // enmu: hosts, storages, networks ResourceType string `json:"resource_type"` } @@ -51,23 +64,42 @@ type NetworkConfig struct { // requried: false Mac string `json:"mac"` - // 子网内的IPv4地址, 若不指定会安装子网的地址分配策略分配一个IP地址 + // 如果是批量创建,指定每个网卡MAC地址 + // requried: false + Macs []string `json:"macs"` + + // 子网内的IPv4地址, 若不指定会按照子网的地址分配策略分配一个IP地址 // required: false Address string `json:"address"` + // 如果是批量创建,指定每台主机子网内的IPv4地址 + // required: false + Addresses []string `json:"addresses"` + // 子网内的IPv6地址 // required: false - // swagger:ignore Address6 string `json:"address6"` + // 如果是批量创建,指定每台主机子网内的IPv4地址 + // required: false + Addresses6 []string `json:"addresses6"` + + // 是否要求分配IPv6地址 + // required: false + RequireIPv6 bool `json:"require_ipv6"` + // 驱动方式 // 若指定镜像的网络驱动方式,此参数会被覆盖 - Driver string `json:"driver"` - BwLimit int `json:"bw_limit"` - Vip bool `json:"vip"` - Reserved bool `json:"reserved"` - NetType string `json:"net_type"` - NumQueues int `json:"num_queues"` + Driver string `json:"driver"` + BwLimit int `json:"bw_limit"` + Vip bool `json:"vip"` + Reserved bool `json:"reserved"` + NetType string `json:"net_type"` + NumQueues int `json:"num_queues"` + RxTrafficLimit int64 `json:"rx_traffic_limit"` + TxTrafficLimit int64 `json:"tx_traffic_limit"` + + IsDefault bool `json:"is_default"` // sriov nic SriovDevice *IsolatedDeviceConfig `json:"sriov_device"` @@ -91,8 +123,15 @@ type NetworkConfig struct { type AttachNetworkInput struct { // 添加的网卡的配置 - // required: true + // required: false Nets []*NetworkConfig `json:"nets"` + + // 添加的网卡的配置 + // required: false + NetDesc []string `json:"net_desc"` + + // 添加后不立即同步配置 + DisableSyncConfig *bool `json:"disable_sync_config"` } type DiskConfig struct { @@ -220,8 +259,23 @@ type DiskConfig struct { //swagger:ignore ExistingPath string `json:"existing_path"` + // requried:false + Iops int `json:"iops"` + + // 磁盘吞吐量, 仅对aws gp3生效 + // 范围: 125-1000 + Throughput int `json:"throughput"` + // NVNe device NVMEDevice *IsolatedDeviceConfig `json:"nvme_device"` + + // 预分配策略: + // off: 关闭预分配,默认关闭 + // metadata: 精简置备 + // falloc: 厚置备延迟置零 + // full: 厚置备快速置零 + // default: off + Preallocation string `json:"preallocation"` } type IsolatedDeviceConfig struct { @@ -316,6 +370,11 @@ type ServerConfigs struct { // required: false Backup bool `json:"backup"` + // 设置为 daemon 虚机 + // default: nil + // required: false + IsDaemon *bool `json:"is_daemon"` + // swagger:ignore // 创建虚拟机数量 // default: 1 @@ -382,8 +441,13 @@ type ServerCreateInput struct { // default: 1 VcpuCount int `json:"vcpu_count"` + // cpu卡槽数 + // 目前仅vmware支持此参数 + // default: 1 + CpuSockets int `json:"cpu_sockets"` + // 用户自定义启动脚本 - // 部分平台只支持 #cloud-config yaml 格式(由于部分平台密码依赖cloud-init注入密码信息,所以不支持特殊类型的user data) + // 支持 #cloud-config yaml 格式及shell脚本 // 支持特殊user data平台: Aliyun, Qcloud, Azure, Apsara, Ucloud // required: false UserData string `json:"user_data"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/backup.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/backup.go index 4fd31cf8f..ea3739298 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/backup.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/backup.go @@ -20,8 +20,12 @@ import ( "yunion.io/x/onecloud/pkg/apis" ) +type TBackupStorageType string + const ( - BACKUPSTORAGE_TYPE_NFS = "nfs" + BACKUPSTORAGE_TYPE_NFS = TBackupStorageType("nfs") + BACKUPSTORAGE_TYPE_OBJECT_STORAGE = TBackupStorageType("object") + BACKUPSTORAGE_STATUS_ONLINE = "online" BACKUPSTORAGE_STATUS_OFFLINE = "offline" @@ -55,27 +59,26 @@ type BackupStorageCreateInput struct { // enum: nfs StorageType string `json:"storage_type"` - // description: host of nfs, storage_type 为 nfs 时, 此参数必传 - // example: 192.168.222.2 - NfsHost string `json:"nfs_host"` - - // description: shared dir of nfs, storage_type 为 nfs 时, 此参数必传 - // example: /nfs_root/ - NfsSharedDir string `json:"nfs_shared_dir"` + SBackupStorageAccessInfo // description: Capacity size in MB CapacityMb int `json:"capacity_mb"` } -type BackupStorageAccessInfo struct { - AccessUrl string +type BackupStorageUpdateInput struct { + apis.EnabledStatusInfrasResourceBaseUpdateInput + + SBackupStorageAccessInfo } +/*type BackupStorageAccessInfo struct { + AccessUrl string +}*/ + type BackupStorageDetails struct { apis.EnabledStatusInfrasResourceBaseDetails - NfsHost string - NfsSharedDir string + SBackupStorageAccessInfo } type BackupStorageListInput struct { @@ -162,3 +165,38 @@ type InstanceBackupPackMetadata struct { type InstanceBackupManagerSyncstatusInput struct { } + +type SBackupStorageAccessInfo struct { + // description: host of nfs, storage_type 为 nfs 时, 此参数必传 + // example: 192.168.222.2 + NfsHost string `json:"nfs_host"` + + // description: shared dir of nfs, storage_type 为 nfs 时, 此参数必传 + // example: /nfs_root/ + NfsSharedDir string `json:"nfs_shared_dir"` + + // description: access url of object storage bucket + // example: https://qxxxxxo.tos-cn-beijing.volces.com + ObjectBucketUrl string `json:"object_bucket_url"` + // description: access key of object storage + ObjectAccessKey string `json:"object_access_key"` + // description: secret of object storage + ObjectSecret string `json:"object_secret"` +} + +func (ba *SBackupStorageAccessInfo) String() string { + return jsonutils.Marshal(ba).String() +} + +func (ba *SBackupStorageAccessInfo) IsZero() bool { + return ba == nil +} + +type ServerCreateInstanceBackupInput struct { + // 主机备份名称 + Name string `json:"name"` + // 主机备份的生成名称 + GenerateName string `json:"generate_name"` + // 备份存储ID + BackupStorageId string `json:"backup_storage_id"` +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/bucket.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/bucket.go index 1c3fb0a11..8ae94edb7 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/bucket.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/bucket.go @@ -16,10 +16,12 @@ package compute import ( "net/http" + "reflect" "yunion.io/x/cloudmux/pkg/apis/compute" "yunion.io/x/cloudmux/pkg/cloudprovider" "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/gotypes" "yunion.io/x/pkg/util/regutils" "yunion.io/x/pkg/utils" @@ -80,7 +82,7 @@ func (self BucketDetails) GetMetricTags() map[string]string { "tenant_id": self.ProjectId, "external_id": self.ExternalId, } - return ret + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } func (self BucketDetails) GetMetricPairs() map[string]string { @@ -360,3 +362,9 @@ type BucketRefererConf struct { func (input *BucketRefererConf) Validate() error { return nil } + +func init() { + gotypes.RegisterSerializable(reflect.TypeOf(&SBackupStorageAccessInfo{}), func() gotypes.ISerializable { + return &SBackupStorageAccessInfo{} + }) +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount.go index 11d2c1093..07e4cf4c3 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount.go @@ -132,6 +132,12 @@ type CloudaccountResourceInfo struct { // 云账号名称 // example: google-account Account string `json:"account,omitempty"` + + // 云账号状态 + AccountStatus string `json:"account_status,omitempty"` + // 云账号监控状态 + AccountHealthStatus string `json:"account_health_status,omitempty"` + AccountReadOnly bool `json:"account_read_only,omitempty"` } type CloudaccountCreateInput struct { @@ -214,6 +220,10 @@ type CloudaccountCreateInput struct { // 跳过指定资源同步 SkipSyncResources SkipSyncResources `json:"skip_sync_resources"` + + // 货币类型 + // enmu: CNY, USD + Currency string `json:"currency"` } type SProjectMappingResourceInput struct { @@ -250,6 +260,8 @@ type CloudaccountListInput struct { // 账号健康状态 HealthStatus []string `json:"health_status"` + ReadOnly *bool `json:"read_only"` + // 共享模式 ShareMode []string `json:"share_mode"` @@ -276,31 +288,7 @@ type ProviderProject struct { TenantId string `json:"tenant_id"` } -type CloudaccountDetail struct { - apis.EnabledStatusInfrasResourceBaseDetails - SCloudaccount - - // 子订阅项目信息 - Projects []ProviderProject `json:"projects"` - - // 同步时间间隔 - // example: 3600 - SyncIntervalSeconds int `json:"sync_interval_seconds"` - - // 同步状态 - SyncStatus2 string `json:"sync_stauts2"` - - // 云账号环境类型 - // public: 公有云 - // private: 私有云 - // onpremise: 本地IDC - // example: public - CloudEnv string `json:"cloud_env"` - - // 云账号项目名称 - // example: system - Tenant string `json:"tenant"` - +type SAccountUsage struct { // 弹性公网Ip数量 // example: 2 EipCount int `json:"eip_count,allowempty"` @@ -329,6 +317,10 @@ type CloudaccountDetail struct { // example: 1 ProviderCount int `json:"provider_count,allowempty"` + // 启用的子订阅数量 + // example: 1 + EnabledProviderCount int `json:"enabled_provider_count,allowempty"` + // 路由表数量 // example: 0 RoutetableCount int `json:"routetable_count,allowempty"` @@ -337,6 +329,32 @@ type CloudaccountDetail struct { // example: 10 StoragecacheCount int `json:"storagecache_count,allowempty"` + // 并发同步数量 + SyncCount int `json:"sync_count,allowempty"` +} + +type CloudaccountDetail struct { + apis.EnabledStatusInfrasResourceBaseDetails + SCloudaccount + + // 同步时间间隔 + // example: 3600 + SyncIntervalSeconds int `json:"sync_interval_seconds"` + + // 同步状态 + SyncStatus2 string `json:"sync_stauts2"` + + // 云账号环境类型 + // public: 公有云 + // private: 私有云 + // onpremise: 本地IDC + // example: public + CloudEnv string `json:"cloud_env"` + + apis.ProjectizedResourceInfo + + SAccountUsage + ProxySetting proxyapi.SProxySetting `json:"proxy_setting"` ProjectMappingResourceInfo @@ -353,8 +371,9 @@ func (self CloudaccountDetail) GetMetricTags() map[string]string { "brand": self.Brand, "domain_id": self.DomainId, "project_domain": self.ProjectDomain, + "currency": self.Currency, } - return ret + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } func (self CloudaccountDetail) GetMetricPairs() map[string]string { @@ -384,6 +403,8 @@ type CloudaccountUpdateInput struct { RemoveSkipSyncResources []string `json:"remove_skip_sync_resources"` ReadOnly bool `json:"read_only"` + + Currency string `json:"currency"` } type CloudaccountPerformPublicInput struct { @@ -530,7 +551,8 @@ type CloudaccountSyncSkusInput struct { } type CloudaccountProjectMappingInput struct { - AutoCreateProject bool `json:"auto_create_project"` + AutoCreateProject bool `json:"auto_create_project"` + AutoCreateProjectForProvider bool `json:"auto_create_project_for_provider"` ProjectId string `json:"project_id"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount_const.go index 56502e2f0..202e6b38b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudaccount_const.go @@ -54,6 +54,7 @@ const ( CLOUD_PROVIDER_HCS = compute.CLOUD_PROVIDER_HCS CLOUD_PROVIDER_OPENSTACK = compute.CLOUD_PROVIDER_OPENSTACK CLOUD_PROVIDER_UCLOUD = compute.CLOUD_PROVIDER_UCLOUD + CLOUD_PROVIDER_VOLCENGINE = compute.CLOUD_PROVIDER_VOLCENGINE CLOUD_PROVIDER_ZSTACK = compute.CLOUD_PROVIDER_ZSTACK CLOUD_PROVIDER_GOOGLE = compute.CLOUD_PROVIDER_GOOGLE CLOUD_PROVIDER_CTYUN = compute.CLOUD_PROVIDER_CTYUN @@ -65,6 +66,11 @@ const ( CLOUD_PROVIDER_PROXMOX = compute.CLOUD_PROVIDER_PROXMOX CLOUD_PROVIDER_REMOTEFILE = compute.CLOUD_PROVIDER_REMOTEFILE CLOUD_PROVIDER_H3C = compute.CLOUD_PROVIDER_H3C + CLOUD_PROVIDER_KSYUN = compute.CLOUD_PROVIDER_KSYUN + CLOUD_PROVIDER_BAIDU = compute.CLOUD_PROVIDER_BAIDU + CLOUD_PROVIDER_CUCLOUD = compute.CLOUD_PROVIDER_CUCLOUD + CLOUD_PROVIDER_QINGCLOUD = compute.CLOUD_PROVIDER_QINGCLOUD + CLOUD_PROVIDER_ORACLE = compute.CLOUD_PROVIDER_ORACLE CLOUD_PROVIDER_GENERICS3 = compute.CLOUD_PROVIDER_GENERICS3 CLOUD_PROVIDER_CEPH = compute.CLOUD_PROVIDER_CEPH @@ -98,8 +104,6 @@ const ( CLOUD_ACCESS_ENV_AZURE_GERMAN = compute.CLOUD_ACCESS_ENV_AZURE_GERMAN CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT = compute.CLOUD_ACCESS_ENV_AZURE_US_GOVERNMENT CLOUD_ACCESS_ENV_AZURE_CHINA = compute.CLOUD_ACCESS_ENV_AZURE_CHINA - CLOUD_ACCESS_ENV_HUAWEI_GLOBAL = compute.CLOUD_ACCESS_ENV_HUAWEI_GLOBAL - CLOUD_ACCESS_ENV_HUAWEI_CHINA = compute.CLOUD_ACCESS_ENV_HUAWEI_CHINA CLOUD_ACCESS_ENV_ALIYUN_GLOBAL = compute.CLOUD_ACCESS_ENV_ALIYUN_GLOBAL CLOUD_ACCESS_ENV_ALIYUN_FINANCE = compute.CLOUD_ACCESS_ENV_ALIYUN_FINANCE CLOUD_ACCESS_ENV_CTYUN_CHINA = compute.CLOUD_ACCESS_ENV_CTYUN_CHINA @@ -115,6 +119,23 @@ var ( CLOUD_PROVIDER_INCLOUD_SPHERE, CLOUD_PROVIDER_PROXMOX, CLOUD_PROVIDER_REMOTEFILE, CLOUD_PROVIDER_H3C, } + PUBLIC_CLOUD_PROVIDERS = []string{ + CLOUD_PROVIDER_ALIYUN, + CLOUD_PROVIDER_AWS, + CLOUD_PROVIDER_AZURE, + CLOUD_PROVIDER_BAIDU, + CLOUD_PROVIDER_CTYUN, + CLOUD_PROVIDER_CUCLOUD, + CLOUD_PROVIDER_ECLOUD, + CLOUD_PROVIDER_HUAWEI, + CLOUD_PROVIDER_QCLOUD, + CLOUD_PROVIDER_UCLOUD, + CLOUD_PROVIDER_GOOGLE, + CLOUD_PROVIDER_KSYUN, + CLOUD_PROVIDER_QINGCLOUD, + CLOUD_PROVIDER_JDCLOUD, + CLOUD_PROVIDER_VOLCENGINE, + } CLOUD_PROVIDERS = []string{ CLOUD_PROVIDER_ONECLOUD, @@ -130,6 +151,7 @@ var ( CLOUD_PROVIDER_HCS, CLOUD_PROVIDER_OPENSTACK, CLOUD_PROVIDER_UCLOUD, + CLOUD_PROVIDER_VOLCENGINE, CLOUD_PROVIDER_ZSTACK, CLOUD_PROVIDER_GOOGLE, CLOUD_PROVIDER_CTYUN, @@ -142,6 +164,11 @@ var ( CLOUD_PROVIDER_PROXMOX, CLOUD_PROVIDER_REMOTEFILE, CLOUD_PROVIDER_H3C, + CLOUD_PROVIDER_KSYUN, + CLOUD_PROVIDER_BAIDU, + CLOUD_PROVIDER_CUCLOUD, + CLOUD_PROVIDER_QINGCLOUD, + CLOUD_PROVIDER_ORACLE, } CLOUD_PROVIDER_HOST_TYPE_MAP = map[string][]string{ @@ -186,6 +213,9 @@ var ( CLOUD_PROVIDER_UCLOUD: { HOST_TYPE_UCLOUD, }, + CLOUD_PROVIDER_VOLCENGINE: { + HOST_TYPE_VOLCENGINE, + }, CLOUD_PROVIDER_ZSTACK: { HOST_TYPE_ZSTACK, }, @@ -222,6 +252,21 @@ var ( CLOUD_PROVIDER_H3C: { HOST_TYPE_H3C, }, + CLOUD_PROVIDER_KSYUN: { + HOST_TYPE_KSYUN, + }, + CLOUD_PROVIDER_BAIDU: { + HOST_TYPE_BAIDU, + }, + CLOUD_PROVIDER_CUCLOUD: { + HOST_TYPE_CUCLOUD, + }, + CLOUD_PROVIDER_QINGCLOUD: { + HOST_TYPE_QINGCLOUD, + }, + CLOUD_PROVIDER_ORACLE: { + HOST_TYPE_ORACLE, + }, } ) @@ -257,10 +302,6 @@ var ( "InternationalCloud": CLOUD_ACCESS_ENV_AWS_GLOBAL, "ChinaCloud": CLOUD_ACCESS_ENV_AWS_CHINA, }, - CLOUD_PROVIDER_HUAWEI: { - "InternationalCloud": CLOUD_ACCESS_ENV_HUAWEI_GLOBAL, - "ChinaCloud": CLOUD_ACCESS_ENV_HUAWEI_CHINA, - }, CLOUD_PROVIDER_ALIYUN: { "InternationalCloud": CLOUD_PROVIDER_ALIYUN, "FinanceCloud": CLOUD_ACCESS_ENV_ALIYUN_FINANCE, diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudprovider.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudprovider.go index aceeb5e0e..8bc9e5f6c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudprovider.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudprovider.go @@ -245,6 +245,8 @@ type CloudproviderListInput struct { ManagedResourceListInput apis.ProjectizedResourceListInput + apis.ExternalizedResourceBaseListInput + UsableResourceListInput CloudregionResourceInput @@ -255,6 +257,8 @@ type CloudproviderListInput struct { SyncableBaseResourceListInput + ReadOnly *bool `json:"read_only"` + // 账号健康状态 HealthStatus []string `json:"health_status"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudregion.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudregion.go index 02df72553..52b27f3a3 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudregion.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/cloudregion.go @@ -66,3 +66,9 @@ type CloudregionResourceInfo struct { // example: 59e7bc87-a6b3-4c39-8f02-c68e8243d4e4 RegionExtId string `json:"region_ext_id"` } + +type CloudregionPurgeInput struct { + // 云订阅Id, 若region底下不存在任何资源,会删除当前region + // required: true + ManagerId string `json:"manager_id"` +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dbinstance.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dbinstance.go index d3168bf37..c16089a61 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dbinstance.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dbinstance.go @@ -221,6 +221,9 @@ type DBInstanceListInput struct { // 通过IP搜索RDS实例 IpAddr []string `json:"ip_addr"` + + // 通过安全组Id过滤RDS实例 + SecgroupId string `json:"secgroup_id"` } type DBInstanceBackupListInput struct { @@ -345,7 +348,8 @@ func (self DBInstanceDetails) GetMetricTags() map[string]string { if len(self.IpAddrs) > 0 { ret["rds_ip"] = strings.ReplaceAll(self.IpAddrs, ",", "|") } - return ret + + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } func (self DBInstanceDetails) GetMetricPairs() map[string]string { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk.go index 98534ff78..8f89a2898 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk.go @@ -325,3 +325,7 @@ type DiskResetInput struct { SnapshotId string `json:"snapshot_id"` AutoStart bool `json:"auto_start"` } + +type DiskSnapshotpolicyInput struct { + SnapshotpolicyId string `json:"snapshotpolicy_id"` +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk_const.go index 78d21587f..f6fbf0aa9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/disk_const.go @@ -64,8 +64,23 @@ const ( DISK_NOT_EXIST = "not_exist" DISK_EXIST = "exist" + + DISK_PREALLOCATION_OFF = "off" + // 精简置备 + DISK_PREALLOCATION_METADATA = "metadata" + // 厚置备延迟归零 + DISK_PREALLOCATION_FALLOC = "falloc" + // 厚置备快速归零 + DISK_PREALLOCATION_FULL = "full" ) +var DISK_PREALLOCATIONS = []string{ + DISK_PREALLOCATION_OFF, + DISK_PREALLOCATION_METADATA, + DISK_PREALLOCATION_FALLOC, + DISK_PREALLOCATION_FULL, +} + const DISK_META_EXISTING_PATH = "disk_existing_path" const ( diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnsrecord.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnsrecord.go index e59b2435d..df9d9dfb7 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnsrecord.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnsrecord.go @@ -14,11 +14,90 @@ package compute -import "yunion.io/x/onecloud/pkg/apis" +import ( + "yunion.io/x/cloudmux/pkg/apis/compute" + "yunion.io/x/cloudmux/pkg/cloudprovider" + "yunion.io/x/pkg/util/regutils" + + "yunion.io/x/onecloud/pkg/apis" + "yunion.io/x/onecloud/pkg/httperrors" +) + +const ( + DNS_RECORDSET_STATUS_AVAILABLE = compute.DNS_RECORDSET_STATUS_AVAILABLE + DNS_RECORDSET_STATUS_CREATING = apis.STATUS_CREATING +) type DnsRecordCreateInput struct { - apis.AdminSharableVirtualResourceBaseCreateInput + apis.EnabledStatusStandaloneResourceCreateInput + + DnsZoneId string `json:"dns_zone_id"` + DnsType string `json:"dns_type"` + DnsValue string `json:"dns_value"` + TTL int64 `json:"ttl"` + MxPriority int64 `json:"mx_priority"` + + PolicyType string `json:"policy_type"` + PolicyValue string `json:"policy_value"` } type DnsRecordUpdateInput struct { + apis.EnabledStatusStandaloneResourceBaseUpdateInput + + DnsType string `json:"dns_type"` + DnsValue string `json:"dns_value"` + TTL *int64 `json:"ttl"` + MxPriority *int64 `json:"mx_priority"` +} + +type DnsRecordDetails struct { + apis.EnabledStatusStandaloneResourceDetails + SDnsRecord + + DnsZone string `json:"dns_zone"` +} + +type DnsRecordListInput struct { + apis.EnabledStatusStandaloneResourceListInput + + DnsZoneFilterListBase +} + +type DnsRecordEnableInput struct { + apis.PerformEnableInput +} + +type DnsRecordDisableInput struct { + apis.PerformDisableInput +} + +func (record *SDnsRecord) ValidateDnsrecordValue() error { + switch cloudprovider.TDnsType(record.DnsType) { + case cloudprovider.DnsTypeMX: + if record.MxPriority < 1 || record.MxPriority > 50 { + return httperrors.NewOutOfRangeError("mx_priority range limited to [1,50]") + } + if !regutils.MatchDomainName(record.DnsValue) { + return httperrors.NewInputParameterError("invalid domain %s for MX record", record.DnsValue) + } + case cloudprovider.DnsTypeA: + if !regutils.MatchIP4Addr(record.DnsValue) { + return httperrors.NewInputParameterError("invalid ipv4 %s for A record", record.DnsValue) + } + case cloudprovider.DnsTypeAAAA: + if !regutils.MatchIP6Addr(record.DnsValue) { + return httperrors.NewInputParameterError("invalid ipv6 %s for AAAA record", record.DnsValue) + } + case cloudprovider.DnsTypeCNAME: + if !regutils.MatchDomainName(record.DnsValue) { + return httperrors.NewInputParameterError("invalid domain %s for CNAME record", record.DnsValue) + } + } + return nil +} + +type SDnsResolveResult struct { + DnsValue string `json:"dns_value"` + TTL int64 `json:"ttl"` + DnsName string `json:"dns_name"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnsrecordsets.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnsrecordsets.go deleted file mode 100644 index 345daae4b..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnsrecordsets.go +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "regexp" - - "yunion.io/x/cloudmux/pkg/apis/compute" - "yunion.io/x/cloudmux/pkg/cloudprovider" - "yunion.io/x/jsonutils" - "yunion.io/x/pkg/util/regutils" - - "yunion.io/x/onecloud/pkg/apis" - "yunion.io/x/onecloud/pkg/httperrors" -) - -const ( - DNS_RECORDSET_STATUS_AVAILABLE = compute.DNS_RECORDSET_STATUS_AVAILABLE -) - -type DnsRecordPolicy struct { - // 平台 - Provider string `json:"provider"` - PolicyType string `json:"policy_type"` - PolicyValue string `json:"policy_value"` - PolicyOptions *jsonutils.JSONDict `json:"policy_options"` -} - -type DnsRecordSetCreateInput struct { - apis.EnabledStatusStandaloneResourceCreateInput - - DnsZoneId string `json:"dns_zone_id"` - DnsType string `json:"dns_type"` - DnsValue string `json:"dns_value"` - TTL int64 `json:"ttl"` - MxPriority int64 `json:"mx_priority"` - - TrafficPolicies []DnsRecordPolicy `json:"traffic_policies"` -} - -type DnsRecordSetUpdateInput struct { - apis.EnabledStatusStandaloneResourceBaseUpdateInput - - DnsType string `json:"dns_type"` - DnsValue string `json:"dns_value"` - TTL *int64 `json:"ttl"` - MxPriority *int64 `json:"mx_priority"` - - TrafficPolicies []DnsRecordPolicy -} - -type DnsRecordSetDetails struct { - apis.EnabledStatusStandaloneResourceDetails - SDnsRecordSet - - TrafficPolicies []DnsRecordPolicy - - DnsZone string `json:"dns_zone"` -} - -type DnsRecordSetListInput struct { - apis.EnabledStatusStandaloneResourceListInput - - DnsZoneFilterListBase -} - -type DnsRecordEnableInput struct { - apis.PerformEnableInput -} - -type DnsRecordDisableInput struct { - apis.PerformDisableInput -} - -type DnsRecordSetTrafficPoliciesInput struct { - TrafficPolicies []DnsRecordPolicy `json:"traffic_policies"` -} - -func (recordset *SDnsRecordSet) ValidateDnsrecordValue() error { - domainReg := regexp.MustCompile(`^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$`) - switch cloudprovider.TDnsType(recordset.DnsType) { - case cloudprovider.DnsTypeMX: - if recordset.MxPriority < 1 || recordset.MxPriority > 50 { - return httperrors.NewOutOfRangeError("mx_priority range limited to [1,50]") - } - if !domainReg.MatchString(recordset.DnsValue) { - return httperrors.NewInputParameterError("invalid domain %s for MX record", recordset.DnsValue) - } - case cloudprovider.DnsTypeA: - if !regutils.MatchIP4Addr(recordset.DnsValue) { - return httperrors.NewInputParameterError("invalid ipv4 %s for A record", recordset.DnsValue) - } - case cloudprovider.DnsTypeAAAA: - if !regutils.MatchIP6Addr(recordset.DnsValue) { - return httperrors.NewInputParameterError("invalid ipv6 %s for AAAA record", recordset.DnsValue) - } - case cloudprovider.DnsTypeCNAME: - if !domainReg.MatchString(recordset.DnsValue) { - return httperrors.NewInputParameterError("invalid domain %s for CNAME record", recordset.DnsValue) - } - } - return nil -} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnstrafficpolicy.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnstrafficpolicy.go deleted file mode 100644 index c394620eb..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnstrafficpolicy.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "yunion.io/x/jsonutils" - - "yunion.io/x/onecloud/pkg/apis" -) - -type DnsTrafficPolicyCreateInput struct { - apis.EnabledStatusInfrasResourceBaseCreateInput - - Provider string `json:"provider"` - PolicyType string `json:"policy_type"` - PolicyValue string `json:"policy_value"` - // 额外参数 - Options *jsonutils.JSONDict `json:"options"` -} - -type DnsTrafficPolicyDetails struct { - apis.EnabledStatusInfrasResourceBaseDetails - SDnsTrafficPolicy -} - -type DnsTrafficPolicyListInput struct { - apis.EnabledStatusInfrasResourceBaseListInput - - Provider []string `json:"provider"` - PolicyType string `json:"policy_type"` -} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnszone.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnszone.go index 778582271..f69fd46df 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnszone.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnszone.go @@ -16,86 +16,28 @@ package compute import ( "yunion.io/x/cloudmux/pkg/apis/compute" - "yunion.io/x/jsonutils" "yunion.io/x/onecloud/pkg/apis" ) -/* - -Architecture For DnsZone - - - +-----------+ +----------------+ +-----------+ - | RecordSet | | TrafficPolicy | | RecordSet | +-------------+ - | (A) | | (Aliyun) | | (TXT) | | Vpc1 | - | | | | | | | (Aws) | - | | | | | | | | - +-----------------------+ | | | | | | +-----------------+ | | - API | DnsZone example.com | | RecordSet | | TrafficPolicy | | RecordSet | | DnsZone abc.app | | Vpc2 | - | (Public) | ------>| (AAAA) | -----------------> | (Tencent) | <-------------| (CAA) | <-------------| (Private) |-----> | (Tencent) | - +-----------------------+ | | | | | | +-----------------+ | | - ^ | | | | | | ^ | | - | | | | | | | | | Vpc3 | - | | RecordSet | | TrafficPolicy | | RecordSet | | | (Aws) | - | | (NS) | | (Aws) | | (PTR) | | +-------------+ - | +-----------+ +----------------+ +-----------+ | - | | - | | - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - | | - v | - +-----------------+ | - | | | - | | +----------+ v - | example.com <-------------> | Account1 | +----------+ +---------------+ - | | | (Aliyun) | | Account3 | <-------> | abc.app | - | | +----------+ +------------+ | (Aws) | | | - | | | Account2 | +----------+ | | - | example.com <-------------------------------------------------------> | (Tencent) | | | - Cache | | +------------+ | | - | | | | - | | +----------+ | | - | example.com <-------------> | Account4 | <--------------------------------------------------------------------------------> | abc.app | - | | | (Aliyun) | | | - | | +----------+ +---------------+ - +-----------------+ - - --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - - - ************* *************** ************* - **** **** **** **** **** **** - Public Cloud ** Aliyun ** ** Tencent ** ** Aws ** - **** **** **** **** **** **** - ************* *************** ************* - - -*/ - const ( - DNS_ZONE_STATUS_AVAILABLE = compute.DNS_ZONE_STATUS_AVAILABLE // 可用 - DNS_ZONE_STATUS_CREATING = "creating" // 创建中 - DNS_ZONE_STATUS_CREATE_FAILE = "create_failed" // 创建失败 - DNS_ZONE_STATUS_UNCACHING = "uncaching" // 云上资源删除中 - DNS_ZONE_STATUS_UNCACHE_FAILED = "uncache_failed" // 云上资源删除失败 - DNS_ZONE_STATUS_CACHING = "caching" // 云上资源创建中 - DNS_ZONE_STATUS_CACHE_FAILED = "cache_failed" // 云上资源创建失败 - DNS_ZONE_STATUS_SYNC_VPCS = "sync_vpcs" // 同步VPC中 - DNS_ZONE_STATUS_SYNC_VPCS_FAILED = "sync_vpcs_failed" // 同步VPC失败 - DNS_ZONE_STATUS_SYNC_RECORD_SETS = "sync_record_sets" // 同步解析列表中 - DNS_ZONE_STATUS_SYNC_RECORD_SETS_FAILED = "sync_record_sets_failed" // 同步解析列表失败 - DNS_ZONE_STATUS_DELETING = "deleting" // 删除中 - DNS_ZONE_STATUS_DELETE_FAILED = "delete_failed" // 删除失败 - DNS_ZONE_STATUS_UNKNOWN = compute.DNS_ZONE_STATUS_UNKNOWN // 未知 + DNS_ZONE_STATUS_AVAILABLE = compute.DNS_ZONE_STATUS_AVAILABLE // 可用 + DNS_ZONE_STATUS_CREATING = "creating" // 创建中 + DNS_ZONE_STATUS_CREATE_FAILE = "create_failed" // 创建失败 + DNS_ZONE_STATUS_DELETING = "deleting" // 删除中 + DNS_ZONE_STATUS_DELETE_FAILED = "delete_failed" // 删除失败 + DNS_ZONE_STATUS_UNKNOWN = compute.DNS_ZONE_STATUS_UNKNOWN // 未知 ) type DnsZoneFilterListBase struct { DnsZoneId string `json:"dns_zone_id"` + ManagedResourceListInput } type DnsZoneCreateInput struct { - apis.EnabledStatusInfrasResourceBaseCreateInput + apis.SharableVirtualResourceCreateInput + + CloudproviderResourceInput // 区域类型 // @@ -109,28 +51,23 @@ type DnsZoneCreateInput struct { // VPC id列表, 仅在zone_type为PrivateZone时生效, vpc列表必须属于同一个账号 VpcIds []string `json:"vpc_ids"` - - // 云账号Id, 仅在zone_type为PublicZone时生效, 若为空则不会在云上创建 - CloudaccountId string `json:"cloudaccount_id"` - - // 额外信息 - Options *jsonutils.JSONDict `json:"options"` } type DnsZoneDetails struct { - apis.EnabledStatusInfrasResourceBaseDetails + apis.SharableVirtualResourceDetails + ManagedResourceInfo SDnsZone // Dns记录数量 - DnsRecordsetCount int `json:"dns_recordset_count"` + DnsRecordCount int `json:"dns_record_count"` // 关联vpc数量 VpcCount int `json:"vpc_count"` - // Cache info - CloudCaches []jsonutils.JSONObject `json:"cloud_caches"` } type DnsZoneListInput struct { - apis.EnabledStatusInfrasResourceBaseListInput + apis.SharableVirtualResourceListInput + + ManagedResourceListInput // 区域类型 // @@ -142,30 +79,12 @@ type DnsZoneListInput struct { ZoneType string `json:"zone_type"` // Filter dns zone By vpc - VpcId string `json:"vpc_id"` - WithCache bool `json:"with_cache"` + VpcId string `json:"vpc_id"` } type DnsZoneSyncStatusInput struct { } -type DnsZoneCacheInput struct { - // 云账号Id - // - // - // | 要求 | - // |---------- | - // | 1. dns zone 状态必须为available | - // | 2. dns zone zone_type 必须为PublicZone | - // | 3. 指定云账号未在云上创建相应的 dns zone | - CloudaccountId string -} - -type DnsZoneUnacheInput struct { - // 云账号Id - CloudaccountId string -} - type DnsZoneAddVpcsInput struct { // VPC id列表 VpcIds []string `json:"vpc_ids"` @@ -176,8 +95,5 @@ type DnsZoneRemoveVpcsInput struct { VpcIds []string `json:"vpc_ids"` } -type DnsZoneSyncRecordSetsInput struct { -} - type DnsZonePurgeInput struct { } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnszonecache.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnszonecache.go deleted file mode 100644 index 6302c963d..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/dnszonecache.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import "yunion.io/x/onecloud/pkg/apis" - -const ( - DNS_ZONE_CACHE_STATUS_DELETING = "deleting" - DNS_ZONE_CACHE_STATUS_DELETE_FAILED = "delete_failed" - DNS_ZONE_CACHE_STATUS_CREATING = "creating" - DNS_ZONE_CACHE_STATUS_CREATE_FAILED = "create_failed" - DNS_ZONE_CACHE_STATUS_AVAILABLE = "available" - DNS_ZONE_CACHE_STATUS_UNKNOWN = "unknown" -) - -type DnsZoneCacheCreateInput struct { -} - -type DnsZoneCacheDetails struct { - apis.StatusStandaloneResourceDetails - SDnsZoneCache - - Account string - Brand string - Provider string -} - -type DnsZoneCacheListInput struct { - apis.StatusStandaloneResourceListInput - - DnsZoneFilterListBase - - CloudaccountId string `json:"cloudaccount_id"` -} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache.go index 48f051f09..e5321573f 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache.go @@ -57,7 +57,7 @@ func (self ElasticcacheDetails) GetMetricTags() map[string]string { "project_domain": self.ProjectDomain, "external_id": self.ExternalId, } - return ret + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } func (self ElasticcacheDetails) GetMetricPairs() map[string]string { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache_const.go index 041fb837c..7e886638a 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticcache_const.go @@ -191,6 +191,9 @@ type ElasticcacheListInput struct { // 访问密码? on (开启密码)|off (免密码访问) AuthMode []string `json:"auth_mode"` + + // 通过安全组Id过滤缓存实例 + SecgroupId string `json:"secgroup_id"` } type ElasticcacheAccountListInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticip.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticip.go index 07641e6ae..ebdfe1e5c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticip.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/elasticip.go @@ -113,7 +113,7 @@ func (self ElasticipDetails) GetMetricTags() map[string]string { "ip_addr": self.IpAddr, "external_id": self.ExternalId, } - return ret + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } type ElasticipSyncstatusInput struct { @@ -143,3 +143,8 @@ type ElasticDissociateInput struct { // default: false AutoDelete bool `json:"auto_delete"` } + +type ElasticipRemoteUpdateInput struct { + // 是否覆盖替换所有标签 + ReplaceTags *bool `json:"replace_tags" help:"replace all remote tags"` +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/groupnetwork.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/groupnetwork.go index f1be9eac4..b379686b9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/groupnetwork.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/groupnetwork.go @@ -33,14 +33,20 @@ type GroupnetworkListInput struct { // IP地址 IpAddr []string `json:"ip_addr"` + + // IPv6地址 + Ip6Addr []string `json:"ip6_addr"` } type GroupAttachNetworkInput struct { // network id or name NetworkId string `json:"network_id" help:"The network to attach, optional"` - // candidate IPaddr - IpAddr string `json:"ip_addr" help:"The ip address to use, optional"` + // candidate IPv4 addr + IpAddr string `json:"ip_addr" help:"The ipv4 address to use, optional"` + + // candidate IPv6 addr + Ip6Addr string `json:"ip6_addr" help:"The ipv6 address to use, optional"` // Allocation direction AllocDir IPAllocationDirection `json:"alloc_dir" help:"ip allocation direction, optional"` @@ -50,9 +56,12 @@ type GroupAttachNetworkInput struct { // Required Designed IP RequireDesignatedIp *bool `json:"require_designated_ip" help:"fail if the designed ip is not available"` + + // allocate ipv6 address + RequireIPv6 bool `json:"require_ipv6" help:"fail if no ipv6 address allocated"` } type GroupDetachNetworkInput struct { - // candidate IPaddr + // candidate IPaddr, can be either IPv4 or IPv6 address IpAddr string `json:"ip_addr" help:"Ip address to detach, empty if detach all networks"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_const.go index 11e038428..bc11054af 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_const.go @@ -17,33 +17,40 @@ package compute import "yunion.io/x/cloudmux/pkg/apis/compute" const ( - VM_INIT = compute.VM_INIT - VM_UNKNOWN = compute.VM_UNKNOWN - VM_SCHEDULE = "schedule" - VM_SCHEDULE_FAILED = "sched_fail" - VM_CREATE_NETWORK = "network" - VM_NETWORK_FAILED = "net_fail" - VM_DEVICE_FAILED = "dev_fail" - VM_CREATE_FAILED = compute.VM_CREATE_FAILED - VM_CREATE_DISK = "disk" - VM_DISK_FAILED = "disk_fail" - VM_IMAGE_CACHING = "image_caching" // 缓存镜像中 - VM_START_DEPLOY = "start_deploy" - VM_DEPLOYING = compute.VM_DEPLOYING - VM_DEPLOY_FAILED = compute.VM_DEPLOY_FAILED - VM_READY = compute.VM_READY - VM_START_START = compute.VM_START_START - VM_STARTING = compute.VM_STARTING - VM_START_FAILED = "start_fail" // # = ready - VM_RUNNING = compute.VM_RUNNING - VM_START_STOP = compute.VM_START_STOP - VM_STOPPING = compute.VM_STOPPING - VM_STOP_FAILED = "stop_fail" // # = running - VM_RENEWING = "renewing" - VM_RENEW_FAILED = "renew_failed" - VM_ATTACH_DISK = "attach_disk" - VM_DETACH_DISK = "detach_disk" - VM_UNSYNC = "unsync" + VM_INIT = compute.VM_INIT + VM_UNKNOWN = compute.VM_UNKNOWN + VM_SCHEDULE = "schedule" + VM_SCHEDULE_FAILED = "sched_fail" + VM_CREATE_NETWORK = "network" + VM_NETWORK_FAILED = "net_fail" + VM_DEVICE_FAILED = "dev_fail" + VM_CREATE_FAILED = compute.VM_CREATE_FAILED + VM_CREATE_DISK = "disk" + VM_DISK_FAILED = "disk_fail" + VM_SECURITY_GROUP_FAILED = "security_group_fail" + VM_IMAGE_CACHING = "image_caching" // 缓存镜像中 + VM_START_DEPLOY = "start_deploy" + VM_DEPLOYING = compute.VM_DEPLOYING + VM_DEPLOY_FAILED = compute.VM_DEPLOY_FAILED + VM_READY = compute.VM_READY + VM_START_START = compute.VM_START_START + VM_STARTING = compute.VM_STARTING + VM_START_FAILED = "start_fail" // # = ready + VM_RUNNING = compute.VM_RUNNING + VM_START_STOP = compute.VM_START_STOP + VM_STOPPING = compute.VM_STOPPING + VM_STOP_FAILED = "stop_fail" // # = running + VM_RENEWING = "renewing" + VM_RENEW_FAILED = "renew_failed" + VM_ATTACH_DISK = "attach_disk" + VM_DETACH_DISK = "detach_disk" + VM_UNSYNC = "unsync" + + VM_START_RESCUE = "start_rescue" + VM_RESCUE = "rescue" + VM_STOP_RESCUE = "stop_rescue" + VM_START_RESCUE_FAILED = "start_rescue_failed" + VM_STOP_RESCUE_FAILED = "stop_rescue_failed" VM_BACKUP_STARTING = "backup_starting" VM_BACKUP_STOPING = "backup_stopping" @@ -108,6 +115,9 @@ const ( VM_SYNC_CONFIG = compute.VM_SYNC_CONFIG VM_SYNC_FAIL = "sync_fail" + VM_SYNC_TRAFFIC_LIMIT = "sync_traffic_limit" + VM_SYNC_TRAFFIC_LIMIT_FAILED = "sync_traffic_limit_failed" + VM_START_RESIZE_DISK = "start_resize_disk" VM_RESIZE_DISK = "resize_disk" VM_RESIZE_DISK_FAILED = "resize_disk_fail" @@ -163,6 +173,10 @@ const ( VM_QGA_SET_PASSWORD = "qga_set_password" VM_QGA_COMMAND_EXECUTING = "qga_command_executing" VM_QGA_EXEC_COMMAND_FAILED = "qga_exec_command_failed" + VM_QGA_SYNC_OS_INFO = "qga_sync_os_info" + + VM_QGA_SET_NETWORK = "qga_set_network" + VM_QGA_SET_NETWORK_FAILED = "qga_set_network_failed" SHUTDOWN_STOP = "stop" SHUTDOWN_TERMINATE = "terminate" @@ -185,6 +199,7 @@ const ( HYPERVISOR_HCSOP = compute.HYPERVISOR_HCSOP HYPERVISOR_OPENSTACK = compute.HYPERVISOR_OPENSTACK HYPERVISOR_UCLOUD = compute.HYPERVISOR_UCLOUD + HYPERVISOR_VOLCENGINE = compute.HYPERVISOR_VOLCENGINE HYPERVISOR_ZSTACK = compute.HYPERVISOR_ZSTACK HYPERVISOR_GOOGLE = compute.HYPERVISOR_GOOGLE HYPERVISOR_CTYUN = compute.HYPERVISOR_CTYUN @@ -197,6 +212,11 @@ const ( HYPERVISOR_PROXMOX = compute.HYPERVISOR_PROXMOX HYPERVISOR_REMOTEFILE = compute.HYPERVISOR_REMOTEFILE HYPERVISOR_H3C = compute.HYPERVISOR_H3C + HYPERVISOR_KSYUN = compute.HYPERVISOR_KSYUN + HYPERVISOR_BAIDU = compute.HYPERVISOR_BAIDU + HYPERVISOR_CUCLOUD = compute.HYPERVISOR_CUCLOUD + HYPERVISOR_QINGCLOUD = compute.HYPERVISOR_QINGCLOUD + HYPERVISOR_ORACLE = compute.HYPERVISOR_ORACLE // HYPERVISOR_DEFAULT = HYPERVISOR_KVM HYPERVISOR_DEFAULT = HYPERVISOR_KVM @@ -258,6 +278,7 @@ var HYPERVISORS = []string{ HYPERVISOR_HCSOP, HYPERVISOR_OPENSTACK, HYPERVISOR_UCLOUD, + HYPERVISOR_VOLCENGINE, HYPERVISOR_ZSTACK, HYPERVISOR_GOOGLE, HYPERVISOR_CTYUN, @@ -270,6 +291,11 @@ var HYPERVISORS = []string{ HYPERVISOR_PROXMOX, HYPERVISOR_REMOTEFILE, HYPERVISOR_H3C, + HYPERVISOR_KSYUN, + HYPERVISOR_BAIDU, + HYPERVISOR_CUCLOUD, + HYPERVISOR_QINGCLOUD, + HYPERVISOR_ORACLE, } var ONECLOUD_HYPERVISORS = []string{ @@ -285,10 +311,16 @@ var PUBLIC_CLOUD_HYPERVISORS = []string{ HYPERVISOR_QCLOUD, HYPERVISOR_HUAWEI, HYPERVISOR_UCLOUD, + HYPERVISOR_VOLCENGINE, HYPERVISOR_GOOGLE, HYPERVISOR_CTYUN, HYPERVISOR_ECLOUD, HYPERVISOR_JDCLOUD, + HYPERVISOR_KSYUN, + HYPERVISOR_BAIDU, + HYPERVISOR_CUCLOUD, + HYPERVISOR_QINGCLOUD, + HYPERVISOR_ORACLE, } var PRIVATE_CLOUD_HYPERVISORS = []string{ @@ -325,6 +357,7 @@ var HYPERVISOR_HOSTTYPE = map[string]string{ HYPERVISOR_HCS: HOST_TYPE_HCS, HYPERVISOR_OPENSTACK: HOST_TYPE_OPENSTACK, HYPERVISOR_UCLOUD: HOST_TYPE_UCLOUD, + HYPERVISOR_VOLCENGINE: HOST_TYPE_VOLCENGINE, HYPERVISOR_ZSTACK: HOST_TYPE_ZSTACK, HYPERVISOR_GOOGLE: HOST_TYPE_GOOGLE, HYPERVISOR_CTYUN: HOST_TYPE_CTYUN, @@ -337,6 +370,11 @@ var HYPERVISOR_HOSTTYPE = map[string]string{ HYPERVISOR_PROXMOX: HOST_TYPE_PROXMOX, HYPERVISOR_REMOTEFILE: HOST_TYPE_REMOTEFILE, HYPERVISOR_H3C: HOST_TYPE_H3C, + HYPERVISOR_KSYUN: HOST_TYPE_KSYUN, + HYPERVISOR_BAIDU: HOST_TYPE_BAIDU, + HYPERVISOR_CUCLOUD: HOST_TYPE_CUCLOUD, + HYPERVISOR_QINGCLOUD: HOST_TYPE_QINGCLOUD, + HYPERVISOR_ORACLE: HOST_TYPE_ORACLE, } var HOSTTYPE_HYPERVISOR = map[string]string{ @@ -355,6 +393,7 @@ var HOSTTYPE_HYPERVISOR = map[string]string{ HOST_TYPE_HCS: HYPERVISOR_HCS, HOST_TYPE_OPENSTACK: HYPERVISOR_OPENSTACK, HOST_TYPE_UCLOUD: HYPERVISOR_UCLOUD, + HOST_TYPE_VOLCENGINE: HYPERVISOR_VOLCENGINE, HOST_TYPE_ZSTACK: HYPERVISOR_ZSTACK, HOST_TYPE_GOOGLE: HYPERVISOR_GOOGLE, HOST_TYPE_CTYUN: HYPERVISOR_CTYUN, @@ -367,6 +406,11 @@ var HOSTTYPE_HYPERVISOR = map[string]string{ HOST_TYPE_PROXMOX: HYPERVISOR_PROXMOX, HOST_TYPE_REMOTEFILE: HYPERVISOR_REMOTEFILE, HOST_TYPE_H3C: HYPERVISOR_H3C, + HOST_TYPE_KSYUN: HYPERVISOR_KSYUN, + HOST_TYPE_BAIDU: HYPERVISOR_BAIDU, + HOST_TYPE_CUCLOUD: HYPERVISOR_CUCLOUD, + HOST_TYPE_QINGCLOUD: HYPERVISOR_QINGCLOUD, + HOST_TYPE_ORACLE: HYPERVISOR_ORACLE, } const ( @@ -390,6 +434,10 @@ const ( VM_METADATA_OS_VERSION = "os_version" VM_METADATA_CGROUP_CPUSET = "cgroup_cpuset" VM_METADATA_ENABLE_MEMCLEAN = "enable_memclean" + VM_METADATA_HOTPLUG_CPU_MEM = "hotplug_cpu_mem" + VM_METADATA_HOT_REMOVE_NIC = "hot_remove_nic" + VM_METADATA_START_VMEM_MB = "start_vmem_mb" + VM_METADATA_START_VCPU_COUNT = "start_vcpu_count" ) func Hypervisors2HostTypes(hypervisors []string) []string { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_disk.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_disk.go index 76f02fe33..593b2ac91 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_disk.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_disk.go @@ -68,29 +68,29 @@ type GuestdiskUpdateInput struct { } type GuestdiskJsonDesc struct { - DiskId string `json:"disk_id"` - Driver string `json:"driver"` - CacheMode string `json:"cache_mode"` - AioMode string `json:"aio_mode"` - Iops int `json:"iops"` - Bps int `json:"bps"` - Size int `json:"size"` - TemplateId string `json:"template_id"` - ImagePath string `json:"image_path"` - StorageId string `json:"storage_id"` - StorageType string `json:"storage_type"` - Migrating bool `json:"migrating"` - Path string `json:"path"` - Format string `json:"format"` - Index int8 `json:"index"` - BootIndex *int8 `json:"boot_index"` - MergeSnapshot bool `json:"merge_snapshot"` - EsxiFlatFilePath string `json:"esxi_flat_file_path"` - Fs string `json:"fs"` - Mountpoint string `json:"mountpoint"` - Dev string `json:"dev"` - IsSSD bool `json:"is_ssd"` - NumQueues uint8 `json:"num_queues"` + DiskId string `json:"disk_id"` + Driver string `json:"driver"` + CacheMode string `json:"cache_mode"` + AioMode string `json:"aio_mode"` + Iops int `json:"iops"` + Throughput int `json:"throughput"` + Bps int `json:"bps"` + Size int `json:"size"` + TemplateId string `json:"template_id"` + ImagePath string `json:"image_path"` + StorageId string `json:"storage_id"` + StorageType string `json:"storage_type"` + Migrating bool `json:"migrating"` + Path string `json:"path"` + Format string `json:"format"` + Index int8 `json:"index"` + BootIndex *int8 `json:"boot_index"` + MergeSnapshot bool `json:"merge_snapshot"` + Fs string `json:"fs"` + Mountpoint string `json:"mountpoint"` + Dev string `json:"dev"` + IsSSD bool `json:"is_ssd"` + NumQueues uint8 `json:"num_queues"` // esxi ImageInfo struct { @@ -98,8 +98,10 @@ type GuestdiskJsonDesc struct { ImageExternalId string `json:"image_external_id"` StorageCacheHostIp string `json:"storage_cache_host_ip"` } `json:"image_info"` + Preallocation string `json:"preallocation"` TargetStorageId string `json:"target_storage_id"` - Url string `json:"url"` + EsxiFlatFilePath string `json:"esxi_flat_file_path"` + Url string `json:"url"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_import_api.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_import_api.go index 10a7dcd89..7d5e5cd34 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_import_api.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_import_api.go @@ -15,9 +15,10 @@ package compute const ( - SERVER_META_CONVERT_FROM_ESXI = "__server_convert_from_esxi" - SERVER_META_CONVERTED_SERVER = "__server_converted_to" - DISK_META_ESXI_FLAT_FILE_PATH = "__esxi_flat_file_path" + SERVER_META_CONVERT_FROM_ESXI = "__server_convert_from_esxi" + SERVER_META_CONVERT_FROM_CLOUDPODS = "__server_convert_from_cloudpods" + SERVER_META_CONVERTED_SERVER = "__server_converted_to" + DISK_META_REMOTE_ACCESS_PATH = "__remote_access_path" ) type SImportNic struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicycache.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_rescue.go similarity index 73% rename from vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicycache.go rename to vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_rescue.go index 03a2ba167..0d64bd4f7 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicycache.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guest_rescue.go @@ -14,12 +14,8 @@ package compute -import "yunion.io/x/onecloud/pkg/apis" - -type SnapshotPolicyCacheDetails struct { - apis.StatusStandaloneResourceDetails - ManagedResourceInfo - CloudregionResourceInfo - SnapshotPolicyResourceInfo - SSnapshotPolicyCache -} +// Rescue constants are used for rescue mode +const ( + GUEST_RESCUE_INITRAMFS = "initramfs" + GUEST_RESCUE_KERNEL = "kernel" +) diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guestnetwork.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guestnetwork.go index ff3934fac..be7e18fc9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guestnetwork.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guestnetwork.go @@ -14,7 +14,10 @@ package compute -import "yunion.io/x/jsonutils" +import ( + "yunion.io/x/cloudmux/pkg/apis/compute" + "yunion.io/x/jsonutils" +) type GuestnetworkDetails struct { GuestJointResourceDetails @@ -28,6 +31,8 @@ type GuestnetworkDetails struct { // EipAddr associate with this guestnetwork EipAddr string `json:"eip_addr"` + + NetworkAddresses []NetworkAddrConf `json:"network_addresses"` } type GuestnetworkShortDesc struct { @@ -46,6 +51,8 @@ type GuestnetworkShortDesc struct { VpcId string `json:"vpc_id"` // 所属Network NetworkId string `json:"network_id"` + // 附属IP + SubIps string `json:"sub_ips"` } type GuestnetworkListInput struct { @@ -74,25 +81,37 @@ type GuestnetworkUpdateInput struct { BwLimit *int `json:"bw_limit"` Index *int8 `json:"index"` + + IsDefault *bool `json:"is_default"` } type GuestnetworkBaseDesc struct { - Net string `json:"net"` - NetId string `json:"net_id"` - Mac string `json:"mac"` - Virtual bool `json:"virtual"` - Ip string `json:"ip"` - Gateway string `json:"gateway"` - Dns string `json:"dns"` - Domain string `json:"domain"` - Ntp string `json:"ntp"` - Routes jsonutils.JSONObject `json:"routes"` - Ifname string `json:"ifname"` - Masklen int8 `json:"masklen"` - Vlan int `json:"vlan"` - Bw int `json:"bw"` - Mtu int `json:"mtu"` - Index int8 `json:"index"` + Net string `json:"net"` + NetId string `json:"net_id"` + Mac string `json:"mac"` + Virtual bool `json:"virtual"` + Ip string `json:"ip"` + Gateway string `json:"gateway"` + Dns string `json:"dns"` + Domain string `json:"domain"` + Ntp string `json:"ntp"` + Routes jsonutils.JSONObject `json:"routes"` + Ifname string `json:"ifname"` + Masklen int8 `json:"masklen"` + Vlan int `json:"vlan"` + Bw int `json:"bw"` + Mtu int16 `json:"mtu"` + Index int8 `json:"index"` + RxTrafficLimit int64 `json:"rx_traffic_limit"` + TxTrafficLimit int64 `json:"tx_traffic_limit"` + NicType compute.TNicType `json:"nic_type"` + + Ip6 string `json:"ip6"` + Gateway6 string `json:"gateway6"` + Masklen6 uint8 `json:"masklen6"` + + // 是否为缺省路由网关 + IsDefault bool `json:"is_default"` Bridge string `json:"bridge"` WireId string `json:"wire_id"` @@ -105,6 +124,8 @@ type GuestnetworkBaseDesc struct { } `json:"vpc"` Networkaddresses jsonutils.JSONObject `json:"networkaddresses"` + + VirtualIps []string `json:"virtual_ips"` } type GuestnetworkJsonDesc struct { @@ -114,10 +135,9 @@ type GuestnetworkJsonDesc struct { NumQueues int `json:"num_queues"` Vectors *int `json:"vectors"` - VirtualIps []string `json:"virtual_ips"` - ExternalId string `json:"external_id"` - TeamWith string `json:"team_with"` - Manual *bool `json:"manual"` + ExternalId string `json:"external_id"` + TeamWith string `json:"team_with"` + Manual *bool `json:"manual"` UpscriptPath string `json:"upscript_path"` DownscriptPath string `json:"downscript_path"` @@ -125,6 +145,13 @@ type GuestnetworkJsonDesc struct { // baremetal Rate int `json:"rate"` BaremetalId string `json:"baremetal_id"` - NicType string `json:"nic_type"` - LinkUp bool `json:"link_up"` + + LinkUp bool `json:"link_up"` +} + +type SNicTrafficRecord struct { + RxTraffic int64 + TxTraffic int64 + + HasBeenSetDown bool } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guests.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guests.go index 87a28aae8..e446f2ae6 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/guests.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/guests.go @@ -16,7 +16,6 @@ package compute import ( "fmt" - "strings" "time" "yunion.io/x/jsonutils" @@ -24,7 +23,6 @@ import ( "yunion.io/x/onecloud/pkg/apis" "yunion.io/x/onecloud/pkg/apis/billing" - "yunion.io/x/onecloud/pkg/apis/cloudcommon/db" imageapi "yunion.io/x/onecloud/pkg/apis/image" "yunion.io/x/onecloud/pkg/httperrors" ) @@ -75,6 +73,8 @@ type ServerListInput struct { // 列出操作系统为指定值的主机 // enum: linux,windows,vmware OsType []string `json:"os_type"` + // 操作系统发行版 + OsDist []string `json:"os_dist"` // 对列表结果按照磁盘大小进行排序 // enum: asc,desc @@ -124,6 +124,9 @@ type ServerListInput struct { InstanceType []string `json:"instance_type"` + // 根据镜像发行版排序 + OrderByOsDist string `json:"order_by_os_dist"` + // 是否调度到宿主机上 WithHost *bool `json:"with_host"` } @@ -144,13 +147,17 @@ type ServerRebuildRootInput struct { // required: true ImageId string `json:"image_id"` // swagger: ignore - Keypair string `json:"keypair" yunion-deprecated-by:"keypair_id"` + // Keypair string `json:"keypair" yunion-deprecated-by:"keypair_id"` // 秘钥Id - KeypairId string `json:"keypair_id"` - ResetPassword *bool `json:"reset_password"` - Password string `json:"password"` - AutoStart *bool `json:"auto_start"` - AllDisks *bool `json:"all_disks"` + // KeypairId string `json:"keypair_id"` + // ResetPassword *bool `json:"reset_password"` + // Password string `json:"password"` + + AutoStart *bool `json:"auto_start"` + + AllDisks *bool `json:"all_disks"` + + ServerDeployInputBase } type ServerResumeInput struct { @@ -222,6 +229,8 @@ type ServerDetails struct { Macs string `json:"macs"` // 网卡信息 Nics []GuestnetworkShortDesc `json:"nics"` + // 附属IP + SubIPs []string `json:"sub_ips"` // 归属VPC Vpc string `json:"vpc"` @@ -246,7 +255,9 @@ type ServerDetails struct { // 直通设备(GPU)列表 IsolatedDevices []SIsolatedDevice `json:"isolated_devices"` // 是否支持GPU - IsGpu bool `json:"is_gpu"` + IsGpu bool `json:"is_gpu"` + GpuModel string `json:"gpu_model"` + GpuCount string `json:"gpu_count"` // Cdrom信息 Cdrom []Cdrom `json:"cdrom"` @@ -275,6 +286,22 @@ type Cdrom struct { BootIndex int8 `json:"boot_index"` } +type IMetricResource interface { + GetMetricTags() map[string]string +} + +func AppendMetricTags(ret map[string]string, res ...IMetricResource) map[string]string { + if ret == nil { + ret = map[string]string{} + } + for _, r := range res { + for k, v := range r.GetMetricTags() { + ret[k] = v + } + } + return ret +} + func (self ServerDetails) GetMetricTags() map[string]string { ret := map[string]string{ "id": self.Id, @@ -303,12 +330,8 @@ func (self ServerDetails) GetMetricTags() map[string]string { "account_id": self.AccountId, "external_id": self.ExternalId, } - for k, v := range self.Metadata { - if strings.HasPrefix(k, db.USER_TAG_PREFIX) { - ret[k] = v - } - } - return ret + + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } func (self ServerDetails) GetMetricPairs() map[string]string { @@ -322,24 +345,25 @@ func (self ServerDetails) GetMetricPairs() map[string]string { // GuestDiskInfo describe the information of disk on the guest. type GuestDiskInfo struct { - Id string `json:"id"` - Name string `json:"name"` - FsFormat string `json:"fs,omitempty"` - DiskType string `json:"disk_type"` - Index int8 `json:"index"` - BootIndex int8 `json:"boot_index"` - SizeMb int `json:"size"` - DiskFormat string `json:"disk_format"` - Driver string `json:"driver"` - CacheMode string `json:"cache_mode"` - AioMode string `json:"aio_mode"` - MediumType string `json:"medium_type"` - StorageType string `json:"storage_type"` - Iops int `json:"iops"` - Bps int `json:"bps"` - ImageId string `json:"image_id,omitempty"` - Image string `json:"image,omitemtpy"` - StorageId string `json:"storage_id"` + Id string `json:"id"` + Name string `json:"name"` + FsFormat string `json:"fs,omitempty"` + DiskType string `json:"disk_type"` + Index int8 `json:"index"` + BootIndex int8 `json:"boot_index"` + SizeMb int `json:"size"` + DiskFormat string `json:"disk_format"` + Driver string `json:"driver"` + CacheMode string `json:"cache_mode"` + AioMode string `json:"aio_mode"` + MediumType string `json:"medium_type"` + StorageType string `json:"storage_type"` + Iops int `json:"iops"` + Bps int `json:"bps"` + ImageId string `json:"image_id,omitempty"` + Image string `json:"image,omitemtpy"` + StorageId string `json:"storage_id"` + Preallocation string `json:"preallocation"` } func (self GuestDiskInfo) ShortDesc() string { @@ -435,13 +459,16 @@ type GuestAutoRenewInput struct { Duration string `json:"duration"` } -type ConvertEsxiToKvmInput struct { +type ConvertToKvmInput struct { apis.Meta // target hypervisor TargetHypervisor string `json:"target_hypervisor"` // 指定转换的宿主机 PreferHost string `json:"prefer_host"` + + // dest guest network configs + Networks []*NetworkConfig `json:"networks"` } type GuestSaveToTemplateInput struct { @@ -652,6 +679,14 @@ type ServerDetachnetworkInput struct { IpAddr string `json:"ip_addr"` // 通过Mac解绑网卡, 优先级低于ip_addr Mac string `json:"mac"` + // 解绑后不立即同步配置 + DisableSyncConfig *bool `json:"disable_sync_config"` + // 强制卸载,无论虚拟机的状态,仅更新数据库 + Force *bool `json:"force"` +} + +func (input ServerDetachnetworkInput) IsForce() bool { + return input.Force != nil && *input.Force } type ServerMigrateForecastInput struct { @@ -684,6 +719,15 @@ type ServerMigrateNetworkInput struct { type ServerDeployInput struct { apis.Meta + ServerDeployInputBase + + // 部署完成后是否自动启动 + // 若虚拟机重置密码后需要重启生效,并且当前虚拟机状态为running, 此参数默认为true + // 若虚拟机状态为ready, 指定此参数后,部署完成后,虚拟机会自动启动 + AutoStart bool `json:"auto_start"` +} + +type ServerDeployInputBase struct { // swagger: ignore Keypair string `json:"keypair" yunion-deprecated-by:"keypair_id"` // 秘钥Id @@ -698,10 +742,7 @@ type ServerDeployInput struct { ResetPassword bool `json:"reset_password"` // 重置指定密码 Password string `json:"password"` - // 部署完成后是否自动启动 - // 若虚拟机重置密码后需要重启生效,并且当前虚拟机状态为running, 此参数默认为true - // 若虚拟机状态为ready, 指定此参数后,部署完成后,虚拟机会自动启动 - AutoStart bool `json:"auto_start"` + // swagger: ignore Restart bool `json:"restart"` @@ -738,15 +779,24 @@ type ServerChangeConfigInput struct { // swagger: ignore Flavor string `json:"flavor" yunion-deprecated-by:"instance_type"` + // cpu卡槽数 + // vmware 若开机调整配置时,需要保证调整前及调整后 vcpu_count / cpu_sockets 保持不变 + // vmware开机调整配置同样需要注意 https://kb.vmware.com/s/article/2008405 + CpuSockets *int `json:"cpu_sockets"` + // cpu大小 - VcpuCount int `json:"vcpu_count"` + VcpuCount *int `json:"vcpu_count"` // 内存大小, 1024M, 1G VmemSize string `json:"vmem_size"` // 调整完配置后是否自动启动 AutoStart bool `json:"auto_start"` + // disks start from index 1, i.e. cannot change size of system disk(1st disk) Disks []DiskConfig `json:"disks"` + + SetTrafficLimits []ServerNicTrafficLimit + ResetTrafficLimits []ServerNicTrafficLimit } type ServerUpdateInput struct { @@ -780,6 +830,7 @@ type GuestJsonDesc struct { Description string `json:"description"` UUID string `json:"uuid"` Mem int `json:"mem"` + CpuSockets int `json:"cpu_sockets"` Cpu int `json:"cpu"` Vga string `json:"vga"` Vdi string `json:"vdi"` @@ -847,6 +898,8 @@ type GuestJsonDesc struct { EncryptKeyId string `json:"encrypt_key_id,omitempty"` IsDaemon bool `json:"is_daemon"` + + LightMode bool `json:"light_mode"` } type ServerSetBootIndexInput struct { @@ -856,6 +909,13 @@ type ServerSetBootIndexInput struct { Cdroms map[string]int8 `json:"cdroms"` } +type ServerSetDiskIoThrottleInput struct { + // key disk id, value bps + Bps map[string]int `json:"bps"` + // key disk id, value iops + IOPS map[string]int `json:"iops"` +} + type ServerChangeStorageInput struct { TargetStorageId string `json:"target_storage_id"` KeepOriginDisk bool `json:"keep_origin_disk"` @@ -965,6 +1025,58 @@ type ServerGetCPUSetCoresResp struct { HostUsedCores []int `json:"host_used_cores"` } +type ServerGetHardwareInfoInput struct{} + +type ServerHardwareInfoMotherboard struct { + Manufacturer string `json:"manufacturer"` + Model string `json:"model"` + OemName string `json:"oem_name"` + SN string `json:"sn"` + Version string `json:"version"` +} + +type ServerHardwareInfoCPU struct { + Model string `json:"model"` + Count int `json:"count"` +} + +type ServerHardwareInfoMemory struct { + SizeMB int `json:"size_mb"` +} + +type ServerHardwareInfoDisk struct { + Id string `json:"id"` + StorageId string `json:"storage_id"` + Model string `json:"model"` + SizeMB int `json:"size_mb"` + // Disk's backend bandwidth. The unit is MB/s + Bandwidth float64 `json:"bandwidth"` +} + +type ServerHardwareInfoGPUPCIEInfo struct { + Throughput string `json:"pcie_throughput"` + LaneWidth int `json:"pcie_lane_width"` +} + +type ServerHardwareInfoGPU struct { + *IsolatedDeviceModelHardwareInfo + + // isolate device id + Id string `json:"id"` + // GPU model name + Model string `json:"model"` + // PCIE information + PCIEInfo *IsolatedDevicePCIEInfo `json:"pcie_info"` +} + +type ServerGetHardwareInfoResp struct { + Motherboard *ServerHardwareInfoMotherboard `json:"motherboard"` + CPU *ServerHardwareInfoCPU `json:"cpu"` + Memory *ServerHardwareInfoMemory `json:"memory"` + Disks []*ServerHardwareInfoDisk `json:"disk"` + GPUs []*ServerHardwareInfoGPU `json:"gpu"` +} + type ServerMonitorInput struct { COMMAND string QMP bool @@ -975,11 +1087,46 @@ type ServerQemuInfo struct { Cmdline string `json:"cmdline"` } +type IPAddress struct { + IPAddress string `json:"ip-address"` + IPAddressType string `json:"ip-address-type"` + Prefix int `json:"prefix"` +} + +type IfnameDetail struct { + HardwareAddress string `json:"hardware-address"` + IPAddresses []IPAddress `json:"ip-addresses"` + Name string `json:"name"` + Statistics struct { + RxBytes int `json:"rx-bytes"` + RxDropped int `json:"rx-dropped"` + RxErrs int `json:"rx-errs"` + RxPackets int `json:"rx-packets"` + TxBytes int `json:"tx-bytes"` + TxDropped int `json:"tx-dropped"` + TxErrs int `json:"tx-errs"` + TxPackets int `json:"tx-packets"` + } `json:"statistics"` +} + type ServerQgaSetPasswordInput struct { Username string Password string } +type ServerQgaGuestInfoTaskInput struct { +} + +type ServerQgaSetNetworkInput struct { + ServerQgaTimeoutInput + Device string + Ipmask string + Gateway string +} + +type ServerQgaGetNetworkInput struct { +} + type ServerQgaTimeoutInput struct { // qga execute timeout millisecond Timeout int @@ -1013,3 +1160,148 @@ type ServerSetLiveMigrateParamsInput struct { MaxBandwidthMB *int64 DowntimeLimitMS *int64 } + +type ServerNicTrafficLimit struct { + Mac string `json:"mac"` + RxTrafficLimit *int64 `json:"rx_traffic_limit"` + TxTrafficLimit *int64 `json:"tx_traffic_limit"` +} + +type GuestAddSubIpsInput struct { + ServerNetworkInfo + + Count int `json:"count"` + SubIps []string `json:"sub_ips"` + + Reserved bool `json:"reserved"` + + AllocDir IPAllocationDirection `json:"alloc_dir"` +} + +type NetworkAddrConf struct { + Id string `json:"id"` + Type string `json:"type"` + IpAddr string `json:"ip_addr"` + Masklen int `json:"masklen"` + Gateway string `json:"gateway"` +} + +type ServerLoginInfoInput struct { + PrivateKey string `json:"private_key"` +} + +type ServerLoginInfoOutput struct { + Username string `json:"username"` + Updated string `json:"updated"` + LoginKey string `json:"login_key"` + Keypair string `json:"keypair"` + Password string `json:"password"` +} + +type GuestPerformStartInput struct { + // 指定启动虚拟机的Qemu版本,可选值:2.12.1, 4.2.0 + // 仅适用于KVM虚拟机 + QemuVersion string `json:"qemu_version"` +} + +type ServerSetOSInfoInput struct { + // OS type, e.g.: Linux, Windows + Type string `json:"type" help:"OS type, e.g.: Linux, Windows"` + // OS distribution, e.g.: CentOS, Ubuntu, Windows Server 2016 Datacenter + Distribution string `json:"distribution" help:"OS distribution, e.g.: CentOS, Ubuntu, Windows Server 2016 Datacenter"` + // OS version, e.g: 7.9, 22.04, 6.3 + Version string `json:"version" help:"OS version, e.g.: 7.9, 22.04, 6.3"` + Arch string `json:"arch" help:"OS arch, e.g.: x86_64, aarch64"` +} + +type ServerNetworkInfo struct { + Index int `json:"index"` + Mac string `json:"mac"` + IpAddr string `json:"ip_addr"` + Ip6Addr string `json:"ip6_addr"` +} + +type ServerChangeIpaddrInput struct { + ServerNetworkInfo + + NetDesc string `json:"net_desc"` + NetConf *NetworkConfig `json:"net_conf"` + + Reserve *bool `json:"reserve"` + + RestartNetwork *bool `json:"restart_network"` +} + +type ServerChangeBandwidthInput struct { + ServerNetworkInfo + + Bandwidth int `json:"bandwidth"` +} + +type ServerChangeConfigSpecs struct { + CpuSockets int `json:"cpu_sockets"` + VcpuCount int `json:"vcpu_count"` + VmemSize int `json:"vmem_size"` + InstanceType string `json:"instance_type"` +} + +type DiskResizeSpec struct { + DiskId string + SizeMb int + OldSizeMb int +} + +type ServerChangeConfigSettings struct { + Old ServerChangeConfigSpecs `json:"old"` + + ServerChangeConfigSpecs + + InstanceTypeFamily string `json:"instance_type_family"` + // disks to resize + Resize []*DiskResizeSpec `json:"resize"` + // disks to create + Create []*DiskConfig `json:"create"` + + AutoStart bool `json:"auto_start"` + GuestOnline bool `json:"guest_online"` + + SetTrafficLimits []ServerNicTrafficLimit `json:"set_traffic_limits"` + ResetTrafficLimits []ServerNicTrafficLimit `json:"reset_traffic_limits"` + + SchedDesc jsonutils.JSONObject `json:"sched_desc"` +} + +func (conf ServerChangeConfigSettings) CpuChanged() bool { + return conf.VcpuCount != conf.Old.VcpuCount +} + +func (conf ServerChangeConfigSettings) AddedCpu() int { + addCpu := conf.VcpuCount - conf.Old.VcpuCount + if addCpu < 0 { + addCpu = 0 + } + return addCpu +} + +func (conf ServerChangeConfigSettings) MemChanged() bool { + return conf.VmemSize != conf.Old.VmemSize +} + +func (conf ServerChangeConfigSettings) AddedMem() int { + addMem := conf.VmemSize - conf.Old.VmemSize + if addMem < 0 { + addMem = 0 + } + return addMem +} + +func (conf ServerChangeConfigSettings) AddedDisk() int { + var size int + for _, resize := range conf.Resize { + size += resize.SizeMb - resize.OldSizeMb + } + for _, create := range conf.Create { + size += create.SizeMb + } + return size +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/host.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/host.go index c0b9f18fd..57f6ac397 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/host.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/host.go @@ -15,9 +15,13 @@ package compute import ( + "time" + + cloudmux "yunion.io/x/cloudmux/pkg/apis/compute" "yunion.io/x/jsonutils" "yunion.io/x/onecloud/pkg/apis" + "yunion.io/x/onecloud/pkg/cloudcommon/types" ) type HostSpec struct { @@ -97,8 +101,10 @@ type HostListInput struct { CpuCount []int `json:"cpu_count"` // 内存大小,单位Mb MemSize []int `json:"mem_size"` - // 存储类型 + // 存储类型(磁盘类型,sdd, rotate, hybrid) StorageType []string `json:"storage_type"` + // 宿主机绑定存储类型 + HostStorageType []string `json:"host_storage_type"` // IPMI地址 IpmiIp []string `json:"ipmi_ip"` // 宿主机状态 @@ -162,7 +168,7 @@ type HostDetails struct { // 网卡数量 NicCount int `json:"nic_count"` // 网卡详情 - NicInfo []jsonutils.JSONObject `json:"nic_info"` + NicInfo []*types.SNic `json:"nic_info"` // CPU超分比 CpuCommit int `json:"cpu_commit"` // 内存超分比 @@ -170,6 +176,9 @@ type HostDetails struct { // 云主机数量 // example: 10 Guests int `json:"guests,allowempty"` + // 主备云主机数量 + // example: 10 + BackupGuests int `json:"backup_guests,allowempty"` // 非系统云主机数量 // example: 0 NonsystemGuests int `json:"nonsystem_guests,allowempty"` @@ -249,7 +258,8 @@ func (self HostDetails) GetMetricTags() map[string]string { "account_id": self.AccountId, "external_id": self.ExternalId, } - return ret + + return AppendMetricTags(ret, self.MetadataResourceInfo) } func (self HostDetails) GetMetricPairs() map[string]string { @@ -298,7 +308,10 @@ type HostFilterListInputBase struct { HostResourceInput // 以宿主机序列号过滤 - HostSN string `json:"host_sn"` + HostSN []string `json:"host_sn"` + + // 以宿主机对接二层网络过滤 + HostWireId string `json:"host_wire_id"` // 以宿主机名称排序 OrderByHost string `json:"order_by_host"` @@ -493,6 +506,8 @@ type HostUpdateInput struct { // 主机启动模式, 可能值位PXE和ISO BootMode string `json:"boot_mode"` + + EnableNumaAllocate *bool `json:"enable_numa_allocate"` } type HostOfflineInput struct { @@ -527,3 +542,94 @@ type HostAutoMigrateInput struct { AutoMigrateOnHostDown string `json:"auto_migrate_on_host_down"` AutoMigrateOnHostShutdown string `json:"auto_migrate_on_host_shutdown"` } + +type HostNetifInput struct { + Mac string `json:"mac"` + + VlanId int `json:"vlan_id"` +} + +type HostAddNetifInput struct { + HostNetifInput + + // Deprecated + Wire string `json:"wire" yunion-deprecated-by:"wire_id"` + + WireId string `json:"wire_id"` + + IpAddr string `json:"ip_addr"` + + Rate int `json:"rate"` + + NicType cloudmux.TNicType `json:"nic_type"` + + Index int8 `json:"index"` + + LinkUp string `json:"link_up"` + + Mtu int16 `json:"mtu"` + + Reset *bool `json:"reset"` + + Interface *string `json:"interface"` + + Bridge *string `json:"bridge"` + + Reserve *bool `json:"reserve"` + + RequireDesignatedIp *bool `json:"require_designated_ip"` +} + +type HostEnableNetifInput struct { + HostNetifInput + + // Deprecated + Network string `json:"network" yunion-deprecated-by:"network_id"` + NetworkId string `json:"network_id"` + + IpAddr string `json:"ip_addr"` + + AllocDir string `json:"alloc_dir"` + + NetType string `json:"net_type"` + + Reserve *bool `json:"reserve"` + + RequireDesignatedIp *bool `json:"require_designated_ip"` +} + +type HostDisableNetifInput struct { + HostNetifInput + + Reserve *bool `json:"reserve"` +} + +type HostRemoveNetifInput struct { + HostNetifInput + + Reserve *bool `json:"reserve"` +} + +type HostError struct { + Type string + Id string + Name string + Content string + Time time.Time +} + +type HostSyncErrorsInput struct { + HostErrors []HostError +} + +type HostLoginInfoInput struct { +} + +type HostLoginInfoOutput struct { + Ip string `json:"ip"` + Username string `json:"username"` + Password string `json:"password"` +} + +type HostPerformStartInput struct { +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/host_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/host_const.go index aad781f8f..9d5ea4a45 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/host_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/host_const.go @@ -14,7 +14,9 @@ package compute -import "yunion.io/x/cloudmux/pkg/apis/compute" +import ( + "yunion.io/x/cloudmux/pkg/apis/compute" +) const ( HOST_TYPE_BAREMETAL = "baremetal" @@ -36,6 +38,7 @@ const ( HOST_TYPE_HCS = compute.HOST_TYPE_HCS HOST_TYPE_OPENSTACK = compute.HOST_TYPE_OPENSTACK HOST_TYPE_UCLOUD = compute.HOST_TYPE_UCLOUD + HOST_TYPE_VOLCENGINE = compute.HOST_TYPE_VOLCENGINE HOST_TYPE_ZSTACK = compute.HOST_TYPE_ZSTACK HOST_TYPE_GOOGLE = compute.HOST_TYPE_GOOGLE HOST_TYPE_CTYUN = compute.HOST_TYPE_CTYUN @@ -48,6 +51,11 @@ const ( HOST_TYPE_PROXMOX = compute.HOST_TYPE_PROXMOX HOST_TYPE_REMOTEFILE = compute.HOST_TYPE_REMOTEFILE HOST_TYPE_H3C = compute.HOST_TYPE_H3C + HOST_TYPE_KSYUN = compute.HOST_TYPE_KSYUN + HOST_TYPE_BAIDU = compute.HOST_TYPE_BAIDU + HOST_TYPE_CUCLOUD = compute.HOST_TYPE_CUCLOUD + HOST_TYPE_QINGCLOUD = compute.HOST_TYPE_QINGCLOUD + HOST_TYPE_ORACLE = compute.HOST_TYPE_ORACLE HOST_TYPE_DEFAULT = HOST_TYPE_HYPERVISOR @@ -57,9 +65,10 @@ const ( HOST_OFFLINE = compute.HOST_OFFLINE HOST_DISABLED = "offline" - NIC_TYPE_IPMI = compute.NIC_TYPE_IPMI - NIC_TYPE_ADMIN = compute.NIC_TYPE_ADMIN - // #NIC_TYPE_NORMAL = 'normal' + NIC_TYPE_IPMI = compute.NIC_TYPE_IPMI + NIC_TYPE_ADMIN = compute.NIC_TYPE_ADMIN + NIC_TYPE_NORMAL = compute.NIC_TYPE_NORMAL + NIC_TYPE_INFINIBAND = compute.TNicType("infiniband") BAREMETAL_INIT = "init" BAREMETAL_PREPARE = "prepare" @@ -127,6 +136,7 @@ var HOST_TYPES = []string{ HOST_TYPE_HCSOP, HOST_TYPE_OPENSTACK, HOST_TYPE_UCLOUD, + HOST_TYPE_VOLCENGINE, HOST_TYPE_ZSTACK, HOST_TYPE_CTYUN, HOST_TYPE_GOOGLE, @@ -138,9 +148,15 @@ var HOST_TYPES = []string{ HOST_TYPE_PROXMOX, HOST_TYPE_REMOTEFILE, HOST_TYPE_H3C, + HOST_TYPE_KSYUN, + HOST_TYPE_BAIDU, + HOST_TYPE_CUCLOUD, + HOST_TYPE_QINGCLOUD, + HOST_TYPE_ORACLE, } -var NIC_TYPES = []string{NIC_TYPE_IPMI, NIC_TYPE_ADMIN} +var ALL_NIC_TYPES = []compute.TNicType{NIC_TYPE_IPMI, NIC_TYPE_ADMIN, NIC_TYPE_NORMAL} +var HOST_NIC_TYPES = []compute.TNicType{NIC_TYPE_ADMIN, NIC_TYPE_NORMAL} const ( ACCESS_MAC_ANY = "00:00:00:00:00:00" @@ -162,6 +178,7 @@ const ( const ( HOSTMETA_AUTO_MIGRATE_ON_HOST_DOWN = "__auto_migrate_on_host_down" HOSTMETA_AUTO_MIGRATE_ON_HOST_SHUTDOWN = "__auto_migrate_on_host_shutdown" + HOSTMETA_HOST_ERRORS = "__host_errors" ) const ( diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostnetwork.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostnetwork.go index 2d217443e..5b1386496 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostnetwork.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostnetwork.go @@ -14,6 +14,8 @@ package compute +import "yunion.io/x/cloudmux/pkg/apis/compute" + type HostnetworkDetails struct { HostJointResourceDetails @@ -27,7 +29,7 @@ type HostnetworkDetails struct { // 二层网络ID WireId string `json:"wire_id"` - NicType string `json:"nic_type"` + NicType compute.TNicType `json:"nic_type"` } type HostnetworkListInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostwire.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostwire.go index c76dad5d6..a9c9535ce 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostwire.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/hostwire.go @@ -17,7 +17,7 @@ package compute type HostwireDetails struct { HostJointResourceDetails - SHostwire + SHostwireDeprecated // 二层网络名称 Wire string `json:"wire"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/input.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/input.go index 2c91eb992..155a7fba6 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/input.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/input.go @@ -38,6 +38,7 @@ type DeletePreventableCreateInput struct { type KeypairListInput struct { apis.UserResourceListInput + apis.SharableResourceBaseListInput // 加密类型 // example: RSA @@ -122,10 +123,6 @@ type BaremetalagentListInput struct { AgentType []string `json:"agent_type"` } -type DnsRecordListInput struct { - apis.AdminSharableVirtualResourceListInput -} - type DynamicschedtagListInput struct { apis.StandaloneResourceListInput SchedtagFilterListInput @@ -161,18 +158,13 @@ type ServiceCatalogListInput struct { type SnapshotPolicyListInput struct { apis.VirtualResourceListInput + apis.ExternalizedResourceBaseListInput + ManagedResourceListInput + RegionalFilterListInput // 按绑定的磁盘数量排序 // pattern:asc|desc OrderByBindDiskCount string `json:"order_by_bind_disk_count"` - // 是否启用? - IsActivated *bool `json:"is_activated"` -} - -type DnsRecordDetails struct { - apis.AdminSharableVirtualResourceDetails - - SDnsRecord } type HostnameInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device.go index 0c05fd4df..f071bacb9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device.go @@ -14,7 +14,14 @@ package compute -import "yunion.io/x/onecloud/pkg/apis" +import ( + "fmt" + + "yunion.io/x/jsonutils" + "yunion.io/x/pkg/errors" + + "yunion.io/x/onecloud/pkg/apis" +) type IsolateDeviceDetails struct { apis.StandaloneResourceDetails @@ -79,8 +86,13 @@ type IsolatedDeviceCreateInput struct { // # pci address of `Bus:Device.Function` format, or usb bus address of `bus.addr` Addr string `json:"addr"` + // legacy vgpu mdev id + MdevId string `json:"mdev_id"` + // 设备VendorId VendorDeviceId string `json:"vendor_device_id"` + // PCIE information + PCIEInfo *IsolatedDevicePCIEInfo `json:"pcie_info"` } type IsolatedDeviceReservedResourceInput struct { @@ -98,6 +110,8 @@ type IsolatedDeviceUpdateInput struct { apis.StandaloneResourceBaseUpdateInput IsolatedDeviceReservedResourceInput DevType string `json:"dev_type"` + // PCIE information + PCIEInfo *IsolatedDevicePCIEInfo `json:"pcie_info"` } type IsolatedDeviceJsonDesc struct { @@ -108,9 +122,12 @@ type IsolatedDeviceJsonDesc struct { VendorDeviceId string `json:"vendor_device_id"` Vendor string `json:"vendor"` NetworkIndex int8 `json:"network_index"` + IsInfinibandNic bool `json:"is_infiniband_nic"` OvsOffloadInterface string `json:"ovs_offload_interface"` DiskIndex int8 `json:"disk_index"` NvmeSizeMB int `json:"nvme_size_mb"` + MdevId string `json:"mdev_id"` + NumaNode int8 `json:"numa_node"` } type IsolatedDeviceModelCreateInput struct { @@ -174,3 +191,137 @@ type IsolatedDeviceModelListInput struct { // 支持热插拔 HotPluggable HotPluggable bool `json:"hot_pluggable"` } + +type IsolatedDeviceModelHardwareInfo struct { + // GPU memory size + MemoryMB int `json:"memory_mb" help:"Memory size MB of the device"` + // GPU bandwidth. The unit is GB/s + Bandwidth float64 `json:"bandwidth" help:"Bandwidth of the device, and the unit is GB/s"` + // TFLOPS stands for number of floating point operations per second. + TFLOPS float64 `json:"tflops" help:"TFLOPS of the device, which standing for number of floating point operations per second"` +} + +type IsolatedDevicePCIEInfo struct { + // Transder rate per lane + // Transfer rate refers to the encoded serial bit rate; 2.5 GT/s means 2.5 Gbit/s serial data rate. + TransferRatePerLane string `json:"transfer_rate_per_lane"` + // Lane width + LaneWidth int `json:"lane_width,omitzero"` + + // The following attributes are calculated by TransferRatePerLane and LaneWidth + + // Throughput indicates the unencoded bandwidth (without 8b/10b, 128b/130b, or 242B/256B encoding overhead). + // The PCIe 1.0 transfer rate of 2.5 GT/s per lane means a 2.5 Gbit/s serial bit rate corresponding to a throughput of 2.0 Gbit/s or 250 MB/s prior to 8b/10b encoding. + Throughput string `json:"throughput"` + // Version is the PCIE version + Version string `json:"version"` +} + +func NewIsolatedDevicePCIEInfo(transferRate string, laneWidth int) (*IsolatedDevicePCIEInfo, error) { + info := &IsolatedDevicePCIEInfo{ + TransferRatePerLane: transferRate, + LaneWidth: laneWidth, + } + if err := info.fillData(); err != nil { + return info, errors.Wrap(err, "fillData") + } + return info, nil +} + +func (info *IsolatedDevicePCIEInfo) String() string { + return jsonutils.Marshal(info).String() +} + +func (info *IsolatedDevicePCIEInfo) IsZero() bool { + if *info == (IsolatedDevicePCIEInfo{}) { + return true + } + return false +} + +const ( + PCIEVersion1 = "1.0" + PCIEVersion2 = "2.0" + PCIEVersion3 = "3.0" + PCIEVersion4 = "4.0" + PCIEVersion5 = "5.0" + PCIEVersion6 = "6.0" + PCIEVersion7 = "7.0" + PCIEVersionUnknown = "unknown" +) + +type PCIEVersionThroughput struct { + Version string + Throughput float64 +} + +func NewPCIEVersionThroughput(version string) PCIEVersionThroughput { + // FROM: https://en.wikipedia.org/wiki/PCI_Express + var ( + v1 = 0.25 + v2 = 0.5 + v3 = 0.985 + v4 = 1.969 + v5 = 3.938 + v6 = 7.563 + v7 = 15.125 + ) + table := map[string]float64{ + PCIEVersion1: v1, + PCIEVersion2: v2, + PCIEVersion3: v3, + PCIEVersion4: v4, + PCIEVersion5: v5, + PCIEVersion6: v6, + PCIEVersion7: v7, + } + tp, ok := table[version] + if ok { + return PCIEVersionThroughput{ + Version: version, + Throughput: tp, + } + } + return PCIEVersionThroughput{ + Version: PCIEVersionUnknown, + Throughput: -1, + } +} + +func (info *IsolatedDevicePCIEInfo) fillData() error { + vTp := info.GetThroughputPerLane() + info.Version = vTp.Version + info.Throughput = fmt.Sprintf("%.2f GB/s", vTp.Throughput*float64(info.LaneWidth)) + return nil +} + +func (info IsolatedDevicePCIEInfo) GetThroughputPerLane() PCIEVersionThroughput { + table := map[string]PCIEVersionThroughput{ + // version 1.0: 2003 + "2.5": NewPCIEVersionThroughput(PCIEVersion1), + // version 2.0: 2007 + "5": NewPCIEVersionThroughput(PCIEVersion2), + "5.0": NewPCIEVersionThroughput(PCIEVersion2), + // version 3.0: 2010 + "8": NewPCIEVersionThroughput(PCIEVersion3), + "8.0": NewPCIEVersionThroughput(PCIEVersion3), + // version 4.0: 2017 + "16": NewPCIEVersionThroughput(PCIEVersion4), + "16.0": NewPCIEVersionThroughput(PCIEVersion4), + // version 5.0: 2019 + "32": NewPCIEVersionThroughput(PCIEVersion5), + "32.0": NewPCIEVersionThroughput(PCIEVersion5), + // version 6.0: 2022 + "64": NewPCIEVersionThroughput(PCIEVersion6), + "64.0": NewPCIEVersionThroughput(PCIEVersion6), + // version 7.0: 2025(planned) + "128": NewPCIEVersionThroughput(PCIEVersion7), + "128.0": NewPCIEVersionThroughput(PCIEVersion7), + } + for key, val := range table { + if fmt.Sprintf("%sGT/s", key) == info.TransferRatePerLane { + return val + } + } + return NewPCIEVersionThroughput(PCIEVersionUnknown) +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device_const.go index d5e1ba930..ca564d5aa 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/isolated_device_const.go @@ -15,12 +15,14 @@ package compute const ( - DIRECT_PCI_TYPE = "PCI" - GPU_HPC_TYPE = "GPU-HPC" // # for compute - GPU_VGA_TYPE = "GPU-VGA" // # for display - USB_TYPE = "USB" - NIC_TYPE = "NIC" // nic sriov - NVME_PT_TYPE = "NVME-PT" // nvme passthrough + DIRECT_PCI_TYPE = "PCI" + GPU_HPC_TYPE = "GPU-HPC" // # for compute + GPU_VGA_TYPE = "GPU-VGA" // # for display + SRIOV_VGPU_TYPE = "SRIOV-VGPU" + LEGACY_VGPU_TYPE = "LEGACY-VGPU" + USB_TYPE = "USB" + NIC_TYPE = "NIC" // nic sriov + NVME_PT_TYPE = "NVME-PT" // nvme passthrough NVIDIA_VENDOR_ID = "10de" AMD_VENDOR_ID = "1002" @@ -29,8 +31,12 @@ const ( const MEAT_PROBED_HOST_COUNT = "probed_host_count" var VALID_GPU_TYPES = []string{GPU_HPC_TYPE, GPU_VGA_TYPE} +var VALID_ATTACH_TYPES = []string{GPU_HPC_TYPE, GPU_VGA_TYPE, USB_TYPE, SRIOV_VGPU_TYPE, LEGACY_VGPU_TYPE} -var VALID_PASSTHROUGH_TYPES = []string{DIRECT_PCI_TYPE, USB_TYPE, NIC_TYPE, GPU_HPC_TYPE, GPU_VGA_TYPE, NVME_PT_TYPE} +var VALID_PASSTHROUGH_TYPES = []string{ + DIRECT_PCI_TYPE, USB_TYPE, NIC_TYPE, GPU_HPC_TYPE, + GPU_VGA_TYPE, NVME_PT_TYPE, SRIOV_VGPU_TYPE, LEGACY_VGPU_TYPE, +} var ID_VENDOR_MAP = map[string]string{ NVIDIA_VENDOR_ID: "NVIDIA", @@ -41,3 +47,9 @@ var VENDOR_ID_MAP = map[string]string{ "NVIDIA": NVIDIA_VENDOR_ID, "AMD": AMD_VENDOR_ID, } + +const ( + ISOLATED_DEVICE_MODEL_METADATA_BANDWIDTH = "bandwidth" + ISOLATED_DEVICE_MODEL_METADATA_MEMORY_MB = "memory_mb" + ISOLATED_DEVICE_MODEL_METADATA_TFLOPS = "tflops" +) diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/kafka.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/kafka.go index e0426579a..9ce098bce 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/kafka.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/kafka.go @@ -42,6 +42,8 @@ type KafkaDetails struct { VpcResourceInfoBase NetworkResourceInfoBase ZoneResourceInfoBase + + SKafka } // 资源列表请求参数 @@ -50,7 +52,5 @@ type KafkaListInput struct { apis.ExternalizedResourceBaseListInput apis.DeletePreventableResourceBaseListInput - RegionalFilterListInput - ManagedResourceListInput VpcFilterListInput } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/keypair.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/keypair.go index 9bfff9540..a0c5596bd 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/keypair.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/keypair.go @@ -40,6 +40,7 @@ type KeypairCreateInput struct { type KeypairDetails struct { apis.UserResourceDetails + apis.SharableResourceBaseInfo SKeypair // 私钥长度 diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/kube_cluster.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/kube_cluster.go index 384c23d6e..82cedc0da 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/kube_cluster.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/kube_cluster.go @@ -69,8 +69,6 @@ type KubeClusterDetails struct { apis.EnabledStatusInfrasResourceBaseDetails SKubeCluster - ManagedResourceInfo - CloudregionResourceInfo VpcResourceInfo } @@ -90,7 +88,8 @@ func (self KubeClusterDetails) GetMetricTags() map[string]string { "account_id": self.AccountId, "external_id": self.ExternalId, } - return ret + + return AppendMetricTags(ret, self.MetadataResourceInfo) } func (self KubeClusterDetails) GetMetricPairs() map[string]string { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancer.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancer.go index ac48b0229..513460475 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancer.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancer.go @@ -57,6 +57,9 @@ type LoadbalancerListInput struct { // 套餐名称 LoadbalancerSpec []string `json:"loadbalancer_spec"` + // filter by security group + SecgroupId string `json:"secgroup_id"` + // filter for EIP WithEip *bool `json:"with_eip"` WithoutEip *bool `json:"without_eip"` @@ -90,6 +93,14 @@ type LoadbalancerDetails struct { // 后端服务器组名称 BackendGroup string `json:"backend_group"` + + // 关联安全组列表 + Secgroups []SimpleSecurityGroup `json:"secgroups"` +} + +type SimpleSecurityGroup struct { + Id string `json:"id"` + Name string `json:"name"` } type LoadbalancerResourceInfo struct { @@ -246,5 +257,5 @@ func (self LoadbalancerDetails) GetMetricTags() map[string]string { "tenant_id": self.ProjectId, "external_id": self.ExternalId, } - return ret + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalanceracl.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalanceracl.go index 0081940d5..930f58fc9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalanceracl.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalanceracl.go @@ -15,11 +15,8 @@ package compute import ( - "crypto/md5" - "fmt" "net" "reflect" - "sort" "strings" "unicode" @@ -36,9 +33,6 @@ type LoadbalancerAclListInput struct { ManagedResourceListInput RegionalFilterListInput - - // - Fingerprint string `json:"fingerprint"` } type LoadbalancerAclDetails struct { @@ -48,7 +42,11 @@ type LoadbalancerAclDetails struct { SLoadbalancerAcl - LbListenerCount int `json:"lb_listener_count"` + LoadbalancerAclUsage +} + +type LoadbalancerAclUsage struct { + ListenerCount int `json:"lb_listener_count"` } type LoadbalancerAclResourceInfo struct { @@ -79,15 +77,6 @@ type SAclEntry struct { type SAclEntries []SAclEntry -func (self SAclEntries) GetFingerprint() string { - cidrs := []string{} - for _, acl := range self { - cidrs = append(cidrs, acl.Cidr) - } - sort.Strings(cidrs) - return fmt.Sprintf("%x", md5.Sum([]byte(strings.Join(cidrs, "")))) -} - func (self SAclEntries) String() string { return jsonutils.Marshal(self).String() } @@ -125,9 +114,10 @@ func (aclEntry *SAclEntry) Validate() error { type LoadbalancerAclCreateInput struct { apis.SharableVirtualResourceCreateInput + CloudregionResourceInput + CloudproviderResourceInput + AclEntries SAclEntries `json:"acl_entries"` - // swagger: ignore - Fingerprint string } func (self *LoadbalancerAclCreateInput) Validate() error { @@ -146,7 +136,6 @@ func (self *LoadbalancerAclCreateInput) Validate() error { } found[acl.Cidr] = true } - self.Fingerprint = self.AclEntries.GetFingerprint() return nil } @@ -154,8 +143,6 @@ type LoadbalancerAclUpdateInput struct { apis.SharableVirtualResourceBaseUpdateInput AclEntries SAclEntries `json:"acl_entries"` - // swagger: ignore - Fingerprint string } func (self *LoadbalancerAclUpdateInput) Validate() error { @@ -172,7 +159,6 @@ func (self *LoadbalancerAclUpdateInput) Validate() error { } found[acl.Cidr] = true } - self.Fingerprint = self.AclEntries.GetFingerprint() } return nil } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancerbackendgroup.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancerbackendgroup.go index 8eff69921..2c95b052b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancerbackendgroup.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancerbackendgroup.go @@ -24,6 +24,7 @@ type LoadbalancerBackendGroupDetails struct { LbListenerCount int `json:"lb_listener_count"` + IsDefault bool `json:"is_default"` ProjectId string `json:"tenant_id"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancercertificate.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancercertificate.go index 4ca17e8a2..427ec6249 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancercertificate.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/loadbalancercertificate.go @@ -23,10 +23,14 @@ import ( type LoadbalancerCertificateDetails struct { apis.SharableVirtualResourceDetails SLoadbalancerCertificate + ManagedResourceInfo + CloudregionResourceInfo - LbListenerCount int `json:"lb_listener_count"` - // 证书内容是否完整 - IsComplete bool `json:"is_complete"` + LoadbalancerCertificateUsage +} + +type LoadbalancerCertificateUsage struct { + ListenerCount int `json:"lb_listener_count"` } type LoadbalancerCertificateResourceInfo struct { @@ -69,6 +73,9 @@ type LoadbalancerCertificateListInput struct { type LoadbalancerCertificateCreateInput struct { apis.SharableVirtualResourceCreateInput + CloudregionResourceInput + CloudproviderResourceInput + Certificate string `json:"certificate"` PrivateKey string `json:"private_key"` // swagger: ignore diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/modelarts_pool.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/modelarts_pool.go index 259a81a9a..848362d7f 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/modelarts_pool.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/modelarts_pool.go @@ -73,7 +73,8 @@ func (self ModelartsPoolDetails) GetMetricTags() map[string]string { "account": self.Account, "external_id": self.ExternalId, } - return ret + + return AppendMetricTags(ret, self.MetadataResourceInfo, self.ProjectizedResourceInfo) } type ModelartsPoolListInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/mongodb.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/mongodb.go index e45cba05e..ed5406f52 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/mongodb.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/mongodb.go @@ -59,6 +59,7 @@ type MongoDBDetails struct { ManagedResourceInfo VpcResourceInfoBase + SMongoDB // IP子网名称 // example: test-network diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/network.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/network.go index c761d24e7..463d99092 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/network.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/network.go @@ -18,6 +18,14 @@ import ( "yunion.io/x/cloudmux/pkg/apis/compute" "yunion.io/x/onecloud/pkg/apis" + "yunion.io/x/onecloud/pkg/cloudcommon/types" +) + +type TAddressType string + +const ( + AddressTypeIPv4 = TAddressType("ipv4") + AddressTypeIPv6 = TAddressType("ipv6") ) const ( @@ -181,19 +189,19 @@ type NetworkCreateInput struct { // example: 10.168.222.1/24 GuestIpPrefix string `json:"guest_ip_prefix"` - // description: ip range of guest ip start, if set guest_ip_prefix, this parameter will be useless + // description: ip range of guest ip start, if set guest_ip_prefix, this parameter will be ignored // example: 10.168.222.1 GuestIpStart string `json:"guest_ip_start"` - // description: ip range of guest ip end, if set guest_ip_prefix, this parameter will be useless + // description: ip range of guest ip end, if set guest_ip_prefix, this parameter will be ignored // example: 10.168.222.100 GuestIpEnd string `json:"guest_ip_end"` - // description: ip range of guest ip mask, if set guest_ip_prefix, this parameter will be useless + // description: ip range of guest ip mask, if set guest_ip_prefix, this parameter will be ignored // example: 24 // maximum: 30 // minimum: 12 - GuestIpMask int64 `json:"guest_ip_mask"` + GuestIpMask int8 `json:"guest_ip_mask"` IfnameHint string `json:"ifname_hint"` @@ -201,6 +209,25 @@ type NetworkCreateInput struct { // example: 192.168.222.1 GuestGateway string `json:"guest_gateway"` + // description: ipv6 range of guest, if not set, you shoud set guest_ip6_start,guest_ip6_end and guest_ip6_mask params + // example: 3ffe:3200:2001:2300::/64 + GuestIp6Prefix string `json:"guest_ip6_prefix"` + // description: ipv6 range of guest ip start, if set guest_ip6_prefix, this parameter will be ignored + // example: 3ffe:3200:2001:2300::1 + GuestIp6Start string `json:"guest_ip6_start"` + // description: ipv6 range of guest ip end, if set guest_ip6_prefix, this parameter will be ignored + // example: 3ffe:3200:2001:2300:ffff:ffff:ffff:ffff + GuestIp6End string `json:"guest_ip6_end"` + // description: ipv6 range of guest ip mask, if set guest_ip6_prefix, this parameter will be ignored + // example: 64 + // maximum: 126 + // minimum: 48 + GuestIp6Mask uint8 `json:"guest_ip6_mask"` + + // description: guest gateway of IPv6 + // example: 3ffe:3200:2001:2300::1 + GuestGateway6 string `json:"guest_gateway6"` + // description: guest dns // example: 114.114.114.114,8.8.8.8 GuestDns string `json:"guest_dns"` @@ -249,15 +276,23 @@ type NetworkCreateInput struct { type SNetworkNics struct { // 虚拟机网卡数量 Vnics int `json:"vnics"` + // IPv4地址数量 + Vnics4 int `json:"vnics4"` + // IPv6地址数量 + Vnics6 int `json:"vnics6"` // 裸金属网卡数量 BmVnics int `json:"bm_vnics"` // 负载均衡网卡数量 LbVnics int `json:"lb_vnics"` // 浮动Ip网卡数量 - EipVnics int `json:"eip_vnics"` + EipVnics int `json:"eip_vnics"` + // VIP数量 GroupVnics int `json:"group_vnics"` - // 预留IP数量 - ReserveVnics int `json:"reserve_vnics"` + + // 预留IPv4数量 + ReserveVnics4 int `json:"reserve_vnics4"` + // 预留IPv6数量 + ReserveVnics6 int `json:"reserve_vnics6"` // RDS网卡数量 RdsVnics int `json:"rds_vnics"` @@ -272,21 +307,29 @@ type SNetworkNics struct { PortsUsed int `json:"ports_used"` Total int `json:"total"` + + // 已使用IPv4端口数量 + Ports6Used int `json:"ports6_used"` + + Total6 int `json:"total6"` } func (self *SNetworkNics) SumTotal() { - self.Total = self.Vnics + + self.Total = self.Vnics4 + self.BmVnics + self.LbVnics + self.LbVnics + self.EipVnics + self.GroupVnics + - self.ReserveVnics + + self.ReserveVnics4 + self.RdsVnics + self.NetworkinterfaceVnics + self.NatVnics - self.BmReusedVnics + self.Total6 = self.Vnics6 + + self.ReserveVnics6 self.PortsUsed = self.Total + self.Ports6Used = self.Total6 } type NetworkDetails struct { @@ -301,9 +344,15 @@ type NetworkDetails struct { // 端口数量 Ports int `json:"ports"` + Dns string `json:"dns"` + // 路由信息 - Routes [][]string `json:"routes"` + Routes []types.SRoute `json:"routes"` Schedtags []SchedtagShortDescDetails `json:"schedtags"` + + IsClassic bool `json:"is_classic"` + + AdditionalWires []SSimpleWire `json:"additional_wires"` } type NetworkIpMacDetails struct { @@ -391,20 +440,29 @@ type NetworkUpdateInput struct { // 起始IP地址 GuestIpStart string `json:"guest_ip_start"` - // 接收IP地址 + // 结束IP地址 GuestIpEnd string `json:"guest_ip_end"` // 掩码 - GuestIpMask *int8 `json:"guest_ip_mask"` + GuestIpMask int8 `json:"guest_ip_mask"` // 网关地址 - GuestGateway string `json:"guest_gateway"` + GuestGateway *string `json:"guest_gateway"` // DNS - GuestDns string `json:"guest_dns"` + GuestDns *string `json:"guest_dns"` // allow multiple dhcp, seperated by "," - GuestDhcp string `json:"guest_dhcp"` + GuestDhcp *string `json:"guest_dhcp"` // NTP - GuestNtp string `json:"guest_ntp"` + GuestNtp *string `json:"guest_ntp"` + + // 起始IP6地址 + GuestIp6Start *string `json:"guest_ip6_start"` + // 结束IP6地址 + GuestIp6End *string `json:"guest_ip6_end"` + // IP6子网掩码长度 + GuestIp6Mask *uint8 `json:"guest_ip6_mask"` + // IP6网关地址 + GuestGateway6 *string `json:"guest_gateway6"` - GuestDomain string `json:"guest_domain"` + GuestDomain *string `json:"guest_domain"` VlanId *int `json:"vlan_id"` @@ -423,6 +481,20 @@ type GetNetworkAddressesInput struct { type GetNetworkAddressesOutput struct { // IP子网地址记录 Addresses []SNetworkUsedAddress `json:"addresses"` + + // IPv6子网地址记录 + Addresses6 []SNetworkUsedAddress `json:"addresses6"` +} + +type GetNetworkAvailableAddressesInput struct { +} + +type GetNetworkAvailableAddressesOutput struct { + // IP子网地址记录 + Addresses []string `json:"addresses"` + + // IPv6子网地址记录 + Addresses6 []string `json:"addresses6"` } type NetworkSetBgpTypeInput struct { @@ -447,3 +519,9 @@ type NetworkSwitchWireInput struct { // example: bcast0 WireId string `json:"wire_id"` } + +type NetworSyncAdditionalWiresInput struct { + apis.Meta + + WireIds []string `json:"wire_ids"` +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/network_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/network_const.go index 88737f173..d26da63ab 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/network_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/network_const.go @@ -20,13 +20,11 @@ import ( "yunion.io/x/cloudmux/pkg/apis/compute" ) -const ( - DefaultDNSServers = "223.5.5.5,223.6.6.6" -) - const ( // # DEFAULT_BANDWIDTH = options.default_bandwidth - MAX_BANDWIDTH = 100000 + + // in mbps, maximal is 100Tbps + MAX_BANDWIDTH = 100000000 NETWORK_TYPE_GUEST = compute.NETWORK_TYPE_GUEST NETWORK_TYPE_BAREMETAL = "baremetal" @@ -89,13 +87,14 @@ type IPAllocationDirection string const ( IPAllocationStepdown IPAllocationDirection = "stepdown" IPAllocationStepup IPAllocationDirection = "stepup" - IPAllocationRadnom IPAllocationDirection = "random" + IPAllocationRandom IPAllocationDirection = "random" IPAllocationNone IPAllocationDirection = "none" IPAllocationDefault = "" ) type SNetworkUsedAddress struct { IpAddr string + Ip6Addr string MacAddr string Owner string OwnerId string diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/networkaddress.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/networkaddress.go index da3048ff3..0c3638e19 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/networkaddress.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/networkaddress.go @@ -45,7 +45,8 @@ type NetworkAddressCreateInput struct { Type string NetworkId string - IPAddr string + IPAddr string `json:"ip_addr"` + IPAddrs []string `json:"ip_addrs"` } type NetworkAddressListInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/project_mappings.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/project_mappings.go index 639b43a45..48a6e7c15 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/project_mappings.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/project_mappings.go @@ -55,8 +55,30 @@ type ProjectMappingRuleInfo struct { Domain string `json:"domain"` } +func (rule ProjectMappingRuleInfo) IsWide() bool { + for _, tag := range rule.Tags { + if len(tag.Value) == 0 { + return true + } + } + return false +} + type MappingRules []ProjectMappingRuleInfo +func (rules MappingRules) Rules() MappingRules { + normal := []ProjectMappingRuleInfo{} + wide := []ProjectMappingRuleInfo{} + for _, rule := range rules { + if rule.IsWide() { + wide = append(wide, rule) + } else { + normal = append(normal, rule) + } + } + return append(normal, wide...) +} + func (rule *ProjectMappingRuleInfo) Validate() error { if len(rule.Tags) == 0 { return httperrors.NewInputParameterError("missing tags") @@ -79,7 +101,7 @@ func (rule *ProjectMappingRuleInfo) Validate() error { if emptyValueTags != 1 && rule.AutoCreateProject { return httperrors.NewInputParameterError("not support auto_create_project") } - if !rule.AutoCreateProject && len(rule.ProjectId) == 0 { + if !rule.AutoCreateProject && len(rule.ProjectId) == 0 && len(rule.Project) == 0 { return httperrors.NewInputParameterError("missing project_id") } return nil @@ -103,6 +125,9 @@ func (self *ProjectMappingRuleInfo) IsMatchTags(_extTags map[string]string) (str newProj = extTag } } + if !self.AutoCreateProject && len(self.ProjectId) == 0 && len(self.Project) > 0 { + newProj = self.Project + } return self.DomainId, self.ProjectId, newProj, true case MAPPING_CONDITION_OR: for _, tag := range self.Tags { @@ -110,6 +135,8 @@ func (self *ProjectMappingRuleInfo) IsMatchTags(_extTags map[string]string) (str if ok && (len(tag.Value) == 0 || tag.Value == extTag) { if self.AutoCreateProject && len(tag.Value) == 0 && len(extTag) > 0 { return "", "", extTag, true + } else if !self.AutoCreateProject && len(self.ProjectId) == 0 && len(self.Project) > 0 { + return self.DomainId, self.ProjectId, self.Project, true } else { return self.DomainId, self.ProjectId, "", true } @@ -143,6 +170,8 @@ type SProjectMappingAccount struct { } type ProjectMappingDetails struct { + SProjectMapping + apis.EnabledStatusInfrasResourceBaseDetails Rules []ProjectMappingRuleInfoDetails @@ -157,6 +186,7 @@ type ProjectMappingDetails struct { type ProjectMappingCreateInput struct { apis.EnabledStatusInfrasResourceBaseCreateInput + // 根据标签key匹配的规则会默认排到列表最后 Rules MappingRules } @@ -171,6 +201,7 @@ type ProjectMappingResourceInfo struct { type ProjectMappingUpdateInput struct { apis.EnabledStatusInfrasResourceBaseUpdateInput + // 根据标签key匹配的规则会默认排到列表最后 Rules MappingRules } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_const.go index 3cc5366ee..4a2688c43 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_const.go @@ -51,6 +51,7 @@ const ( OPERATOR_LT = "lt" // 小于 TIMER_TYPE_ONCE = "once" + TIMER_TYPE_HOUR = "hour" TIMER_TYPE_DAY = "day" TIMER_TYPE_WEEK = "week" TIMER_TYPE_MONTH = "month" diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_trigger.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_trigger.go index 13d484b27..5d9e2589c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_trigger.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/scaling_trigger.go @@ -28,6 +28,7 @@ type CycleTimerCreateInput struct { // enum: day,week,month CycleType string `json:"cycle_type"` + CycleHour int `json:"cycle_hour"` // description: 分(0-59) // example: 13 Minute int `json:"minute"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup.go index 4db9ecb2e..4eb5b755b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup.go @@ -83,6 +83,8 @@ type SSecgroupRuleResource struct { Description string `json:"description"` } +type SSecgroupRuleResourceSet []SSecgroupRuleResource + type SSecgroupRuleCreateInput struct { apis.ResourceBaseCreateInput SSecgroupRuleResource @@ -90,6 +92,9 @@ type SSecgroupRuleCreateInput struct { // swagger:ignore Secgroup string `json:"secgroup" yunion-deprecated-by:"secgroup_id"` + // swagger: ignore + Status string `json:"status"` + // 安全组ID // required: true SecgroupId string `json:"secgroup_id"` @@ -98,7 +103,37 @@ type SSecgroupRuleCreateInput struct { type SSecgroupRuleUpdateInput struct { apis.ResourceBaseUpdateInput - SSecgroupRuleResource + Priority *int `json:"priority"` + Ports *string `json:"ports"` + // ip或cidr地址, 若指定peer_secgroup_id此参数不生效 + // example: 192.168.222.121 + CIDR *string `json:"cidr"` + + // 协议 + // required: true + // + // + // + // | protocol | name | + // | -------- | ---- | + // | any | 所有协议| + // | tcp | TCP | + // | icmp | ICMP | + // | udp | UDP | + // enum: any, tcp, udp, icmp + Protocol *string `json:"protocol"` + + // 行为 + // deny: 拒绝 + // allow: 允许 + // enum: deny, allow + // required: true + Action *string `json:"action"` + + // 规则描述信息 + // requried: false + // example: test to create rule + Description string `json:"description"` } func (input *SSecgroupRuleResource) Check() error { @@ -124,11 +159,12 @@ func (input *SSecgroupRuleResource) Check() error { } if len(input.CIDR) > 0 { - if !regutils.MatchCIDR(input.CIDR) && !regutils.MatchIPAddr(input.CIDR) { + if !regutils.MatchCIDR(input.CIDR) && !regutils.MatchIP4Addr(input.CIDR) && !regutils.MatchCIDR6(input.CIDR) && !regutils.MatchIP6Addr(input.CIDR) { return fmt.Errorf("invalid ip address: %s", input.CIDR) } } else { - input.CIDR = "0.0.0.0/0" + // empty CIDR means both IPv4 and IPv6 + // input.CIDR = "0.0.0.0/0" } return rule.ValidateRule() @@ -137,6 +173,17 @@ func (input *SSecgroupRuleResource) Check() error { type SSecgroupCreateInput struct { apis.SharableVirtualResourceCreateInput + // vpc id + // defualt: default + VpcResourceInput + // swagger: ignore + CloudproviderResourceInput + // swagger: ignore + CloudregionResourceInput + + // swagger: ignore + GlobalvpcId string `json:"globalvpc_id"` + // 规则列表 // required: false Rules []SSecgroupRuleCreateInput `json:"rules"` @@ -144,19 +191,13 @@ type SSecgroupCreateInput struct { type SecgroupListInput struct { apis.SharableVirtualResourceListInput + apis.ExternalizedResourceBaseListInput ServerResourceInput DBInstanceResourceInput ELasticcacheResourceInput - // equals - Equals string - - // 按缓存数量排序 - // pattern:asc|desc - OrderByCacheCnt string `json:"order_by_cache_cnt"` - // 按缓存关联主机数排序 // pattern:asc|desc OrderByGuestCnt string `json:"order_by_guest_cnt"` @@ -174,25 +215,16 @@ type SecgroupListInput struct { // example: in Direction string `json:"direction"` - RegionalFilterListInput - - ManagedResourceListInput - WithCache bool `json:"witch_cache"` -} - -type SecurityGroupCacheListInput struct { - apis.StatusStandaloneResourceListInput - apis.ExternalizedResourceBaseListInput + VpcId string `json:"vpc_id"` - ManagedResourceListInput + LoadbalancerId string `json:"loadbalancer_id"` RegionalFilterListInput - - VpcFilterListInput - SecgroupFilterListInput + ManagedResourceListInput } type SecurityGroupRuleListInput struct { apis.ResourceBaseListInput + apis.ExternalizedResourceBaseListInput SecgroupFilterListInput Projects []string `json:"projects"` @@ -232,6 +264,9 @@ type SecgroupDetails struct { apis.SharableVirtualResourceDetails SSecurityGroup + VpcResourceInfo + GlobalVpcResourceInfo + // 关联云主机数量, 不包含回收站云主机 GuestCnt int `json:"guest_cnt,allowempty"` @@ -241,17 +276,16 @@ type SecgroupDetails struct { // admin_secgrp_id为此安全组的云主机数量, , 不包含回收站云主机 AdminGuestCnt int `json:"admin_guest_cnt,allowempty"` + // 关联LB数量 + LoadbalancerCnt int `json:"loadbalancer_cnt,allowempty"` + + // 关联RDS数量 + RdsCnt int `json:"rds_cnt,allowempty"` + // 关联Redis数量 + RedisCnt int `json:"redis_cnt,allowempty"` + // 所有关联的资源数量 TotalCnt int `json:"total_cnt,allowempty"` - - // 安全组缓存数量 - CacheCnt int `json:"cache_cnt,allowempty"` - // 规则信息 - Rules []SecgroupRuleDetails `json:"rules"` - // 入方向规则信息 - InRules []SecgroupRuleDetails `json:"in_rules"` - // 出方向规则信息 - OutRules []SecgroupRuleDetails `json:"out_rules"` } type SecurityGroupResourceInfo struct { @@ -292,18 +326,6 @@ type ElasticcachesecgroupDetails struct { Secgroup string `json:"secgroup"` } -type SecgroupMergeInput struct { - // 安全组id列表 - SecgroupIds []string `json:"secgroup_ids"` - - // swagger:ignore - // Deprecated - Secgroups []string `json:"secgroup" yunion-deprecated-by:"secgroup_ids"` -} - -type SecurityGroupPurgeInput struct { -} - type SecurityGroupCloneInput struct { Name string Description string @@ -319,17 +341,17 @@ type SecgroupJsonDesc struct { } type SSecurityGroupRef struct { - GuestCnt int `json:"guest_cnt"` - AdminGuestCnt int `json:"admin_guest_cnt"` - RdsCnt int `json:"rds_cnt"` - RedisCnt int `json:"redis_cnt"` - TotalCnt int `json:"total_cnt"` + GuestCnt int `json:"guest_cnt"` + AdminGuestCnt int `json:"admin_guest_cnt"` + RdsCnt int `json:"rds_cnt"` + RedisCnt int `json:"redis_cnt"` + LoadbalancerCnt int `json:"loadbalancer_cnt"` + TotalCnt int `json:"total_cnt"` } func (self *SSecurityGroupRef) Sum() { - self.TotalCnt = self.GuestCnt + self.AdminGuestCnt + self.RdsCnt + self.RedisCnt + self.TotalCnt = self.GuestCnt + self.AdminGuestCnt + self.RdsCnt + self.RedisCnt + self.LoadbalancerCnt } -type SecurityGroupCacheInput struct { - VpcId string `json:"vpc_id"` +type SecurityGroupSyncstatusInput struct { } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup_const.go index 2fbd7d1e6..4358ac7d1 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/secgroup_const.go @@ -17,9 +17,7 @@ package compute import "yunion.io/x/cloudmux/pkg/apis/compute" const ( - SECGROUP_STATUS_READY = compute.SECGROUP_STATUS_READY - SECGROUP_STATUS_DELETING = "deleting" // 删除中 - SECGROUP_STATUS_SYNC_RULES = "sync_rules" // 同步规则中 + SECGROUP_STATUS_READY = compute.SECGROUP_STATUS_READY SECGROUP_DEFAULT_ID = "default" ) diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/sku_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/sku_const.go index 182ca7467..622d762b9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/sku_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/sku_const.go @@ -80,6 +80,10 @@ type ServerSkuListInput struct { // 按套餐名称去重 Distinct bool `json:"distinct"` + // 根据cpu架构过滤 + // enmu: arm, x86 + CpuArch []string `json:"cpu_arch"` + // 按关联虚拟机数量排序 OrderByTotalGuestCount string `json:"order_by_total_guest_count"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshot_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshot_const.go index d9a08e34a..467f76820 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshot_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshot_const.go @@ -14,7 +14,9 @@ package compute -import "yunion.io/x/cloudmux/pkg/apis/compute" +import ( + "yunion.io/x/cloudmux/pkg/apis/compute" +) const ( // create by @@ -29,24 +31,6 @@ const ( SNAPSHOT_DELETING = compute.SNAPSHOT_DELETING SNAPSHOT_UNKNOWN = compute.SNAPSHOT_UNKNOWN - SNAPSHOT_POLICY_CREATING = compute.SNAPSHOT_POLICY_CREATING - - SNAPSHOT_POLICY_READY = compute.SNAPSHOT_POLICY_READY - SNAPSHOT_POLICY_UPDATING = "updating" - SNAPSHOT_POLICY_UNKNOWN = compute.SNAPSHOT_POLICY_UNKNOWN - SNAPSHOT_POLICY_DELETING = "deleting" - SNAPSHOT_POLICY_DELETE_FAILED = "delete_failed" - - SNAPSHOT_POLICY_APPLY = "applying" - SNAPSHOT_POLICY_APPLY_FAILED = "apply_failed" - SNAPSHOT_POLICY_CANCEL = "canceling" - SNAPSHOT_POLICY_CANCEL_FAILED = "cancel_failed" - - SNAPSHOT_POLICY_DISK_INIT = "init" - SNAPSHOT_POLICY_DISK_READY = "ready" - SNAPSHOT_POLICY_DISK_DELETING = "deleting" - SNAPSHOT_POLICY_DISK_DELETE_FAILED = "delete_failed" - INSTANCE_SNAPSHOT_READY = compute.INSTANCE_SNAPSHOT_READY INSTANCE_SNAPSHOT_UNKNOWN = "unknown" INSTANCE_SNAPSHOT_FAILED = "instance_snapshot_create_failed" @@ -54,10 +38,6 @@ const ( INSTANCE_SNAPSHOT_DELETE_FAILED = "instance_snapshot_delete_failed" INSTANCE_SNAPSHOT_RESET = "instance_snapshot_reset" - SNAPSHOT_POLICY_CACHE_STATUS_READY = "ready" - SNAPSHOT_POLICY_CACHE_STATUS_DELETING = "deleting" - SNAPSHOT_POLICY_CACHE_STATUS_DELETE_FAILED = "delete_failed" - SNAPSHOT_EXIST = "exist" SNAPSHOT_NOT_EXIST = "not_exist" ) diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicy.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicy.go index ba890c854..7ab379450 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicy.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicy.go @@ -15,92 +15,77 @@ package compute import ( - "fmt" - "sort" + "reflect" "yunion.io/x/jsonutils" - "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/gotypes" + "yunion.io/x/pkg/utils" "yunion.io/x/onecloud/pkg/apis" "yunion.io/x/onecloud/pkg/httperrors" - "yunion.io/x/onecloud/pkg/util/bitmap" +) + +const ( + SNAPSHOT_POLICY_APPLY = "applying" + SNAPSHOT_POLICY_APPLY_FAILED = "apply_failed" + SNAPSHOT_POLICY_CANCEL = "canceling" + SNAPSHOT_POLICY_CANCEL_FAILED = "cancel_failed" ) type SnapshotPolicyDetails struct { apis.VirtualResourceDetails + ManagedResourceInfo + CloudregionResourceInfo SSnapshotPolicy - RetentionDays int `json:"retention_days"` - RepeatWeekdaysDisplay []int `json:"repeat_weekdays_display"` - TimePointsDisplay []int `json:"time_points_display"` - IsActivated *bool `json:"is_activated,omitempty"` + RetentionDays int `json:"retention_days"` BindingDiskCount int `json:"binding_disk_count"` } -type SnapshotPolicyResourceInfo struct { - // 快照策略名称 - Snapshotpolicy string `json:"snapshotpolicy"` -} - type SSnapshotPolicyCreateInput struct { apis.VirtualResourceCreateInput + CloudproviderResourceInput + CloudregionResourceInput - RetentionDays int `json:"retention_days"` - RepeatWeekdays string `json:"repeat_weekdays"` - TimePoints string `json:"time_points"` -} + RetentionDays int `json:"retention_days"` -func (self SSnapshotPolicyCreateInput) GetRepeatWeekdays(limit int) (uint32, error) { - days, err := jsonutils.ParseString(self.RepeatWeekdays) - if err != nil { - return 0, errors.Wrapf(err, "ParseString %s", self.RepeatWeekdays) - } - repeatWeekdays := []int{} - days.Unmarshal(&repeatWeekdays) - err = daysCheck(repeatWeekdays, 1, 7) - if err != nil { - return 0, err - } - if len(repeatWeekdays) > limit { - return 0, httperrors.NewInputParameterError("repeat_weekdays only contains %d days at most", limit) - } - return bitmap.IntArray2Uint(repeatWeekdays), nil + RepeatWeekdays []int `json:"repeat_weekdays"` + + TimePoints []int `json:"time_points"` } -func (self SSnapshotPolicyCreateInput) GetTimePoints(limit int) (uint32, error) { - points, err := jsonutils.ParseString(self.TimePoints) - if err != nil { - return 0, errors.Wrapf(err, "ParseString %s", self.TimePoints) +func (self *SSnapshotPolicyCreateInput) Validate() error { + if len(self.RepeatWeekdays) == 0 { + return httperrors.NewMissingParameterError("repeat_weekdays") } - timepoints := []int{} - points.Unmarshal(&timepoints) - err = daysCheck(timepoints, 0, 23) - if err != nil { - return 0, err - } - if len(timepoints) > limit { - return 0, httperrors.NewInputParameterError("time_points only contains %d points at most", limit) - } - return bitmap.IntArray2Uint(timepoints), nil -} -func daysCheck(days []int, min, max int) error { - if len(days) == 0 { - return nil + repeatDays := []int{} + for _, day := range self.RepeatWeekdays { + if day < 1 || day > 7 { + return httperrors.NewOutOfRangeError("repeat_weekdays out of range 1-7") + } + if !utils.IsInArray(day, repeatDays) { + repeatDays = append(repeatDays, day) + } } - sort.Ints(days) + self.RepeatWeekdays = repeatDays - if days[0] < min || days[len(days)-1] > max { - return fmt.Errorf("Out of range") + if len(self.TimePoints) == 0 { + return httperrors.NewMissingParameterError("time_points") } - for i := 1; i < len(days); i++ { - if days[i] == days[i-1] { - return fmt.Errorf("Has repeat day %v", days) + points := []int{} + for _, point := range self.TimePoints { + if point < 0 || point > 23 { + return httperrors.NewOutOfRangeError("time_points out of range 0-23") + } + if !utils.IsInArray(point, points) { + points = append(points, point) } } + self.TimePoints = points return nil } @@ -109,46 +94,69 @@ type SSnapshotPolicyUpdateInput struct { RetentionDays *int - RepeatWeekdays *string `json:"repeat_weekdays"` - TimePoints *string `json:"time_points"` + RepeatWeekdays *[]int `json:"repeat_weekdays"` + TimePoints *[]int `json:"time_points"` } -func (self SSnapshotPolicyUpdateInput) GetRepeatWeekdays(limit int) (uint32, error) { +func (self *SSnapshotPolicyUpdateInput) Validate() error { if self.RepeatWeekdays != nil { - days, err := jsonutils.ParseString(*self.RepeatWeekdays) - if err != nil { - return 0, errors.Wrapf(err, "ParseString %s", *self.RepeatWeekdays) - } - repeatWeekdays := []int{} - days.Unmarshal(&repeatWeekdays) - err = daysCheck(repeatWeekdays, 1, 7) - if err != nil { - return 0, err + repeatDays := []int{} + for _, day := range *self.RepeatWeekdays { + if day < 1 || day > 7 { + return httperrors.NewOutOfRangeError("repeat_weekdays out of range 1-7") + } + if !utils.IsInArray(day, repeatDays) { + repeatDays = append(repeatDays, day) + } } - if len(repeatWeekdays) > limit { - return 0, httperrors.NewInputParameterError("repeat_weekdays only contains %d days at most", limit) - } - return bitmap.IntArray2Uint(repeatWeekdays), nil + self.RepeatWeekdays = &repeatDays } - return 0, nil -} -func (self SSnapshotPolicyUpdateInput) GetTimePoints(limit int) (uint32, error) { if self.TimePoints != nil { - points, err := jsonutils.ParseString(*self.TimePoints) - if err != nil { - return 0, errors.Wrapf(err, "ParseString %s", *self.TimePoints) + points := []int{} + for _, point := range *self.TimePoints { + if point < 0 || point > 23 { + return httperrors.NewOutOfRangeError("time_points out of range 0-23") + } + if !utils.IsInArray(point, points) { + points = append(points, point) + } } - timepoints := []int{} - points.Unmarshal(&timepoints) - err = daysCheck(timepoints, 0, 23) - if err != nil { - return 0, err - } - if len(timepoints) > limit { - return 0, httperrors.NewInputParameterError("time_points only contains %d points at most", limit) - } - return bitmap.IntArray2Uint(timepoints), nil + self.TimePoints = &points } - return 0, nil + return nil +} + +type SnapshotPolicyDisksInput struct { + Disks []string `json:"disk"` +} + +type RepeatWeekdays []int + +func (days RepeatWeekdays) String() string { + return jsonutils.Marshal(days).String() +} + +func (days RepeatWeekdays) IsZero() bool { + return len(days) == 0 +} + +type TimePoints []int + +func (points TimePoints) String() string { + return jsonutils.Marshal(points).String() +} + +func (points TimePoints) IsZero() bool { + return len(points) == 0 +} + +func init() { + gotypes.RegisterSerializable(reflect.TypeOf(&RepeatWeekdays{}), func() gotypes.ISerializable { + return &RepeatWeekdays{} + }) + gotypes.RegisterSerializable(reflect.TypeOf(&TimePoints{}), func() gotypes.ISerializable { + return &TimePoints{} + }) + } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicydisk.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicydisk.go deleted file mode 100644 index e85517322..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/snapshotpolicydisk.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "yunion.io/x/onecloud/pkg/apis" -) - -type SnapshotPolicyDiskDetails struct { - apis.VirtualJointResourceBaseDetails - - // 快照策略名称 - Snapshotpolicy string `json:"snapshotpolicy"` - Disk DiskDetails `json:"disk"` -} - -type SnapshotPolicyDiskListInput struct { - apis.VirtualJointResourceBaseListInput - SnapshotPolicyFilterListInput - DiskFilterListInput - - // 状态 - Status []string `json:"status"` -} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage.go index 4ddda374a..f1c9f291b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage.go @@ -34,6 +34,12 @@ func (self StorageUsage) IsZero() bool { return self.HostCount+self.DiskCount+self.SnapshotCount == 0 } +type StorageHardwareInfo struct { + Model *string `json:"model"` + Vendor *string `json:"vendor"` + Bandwidth float64 `json:"bandwidth" help:"Bandwidth of the device, and the unit is GB/s"` +} + type StorageCreateInput struct { apis.EnabledStatusInfrasResourceBaseCreateInput @@ -104,6 +110,14 @@ type StorageCreateInput struct { // 网络文件系统共享目录, storage_type 为 nfs 时, 此参数必传 // example: /nfs_root/ NfsSharedDir string `json:"nfs_shared_dir"` + + // swagger:ignore + HardwareInfo *StorageHardwareInfo `json:"hardware_info"` + // CLVM VG Name + CLVMVgName string + // SLVM VG Name + SLVMVgName string + MasterHost string } type RbdTimeoutInput struct { @@ -140,8 +154,10 @@ type SStorageCapacityInfo struct { } type StorageHost struct { - Id string - Name string + Id string + Name string + Status string + HostStatus string } type StorageDetails struct { @@ -175,7 +191,7 @@ func (self StorageDetails) GetMetricTags() map[string]string { "project_domain": self.ProjectDomain, "external_id": self.ExternalId, } - return ret + return AppendMetricTags(ret, self.MetadataResourceInfo) } func (self StorageDetails) GetMetricPairs() map[string]string { @@ -228,4 +244,8 @@ type StorageUpdateInput struct { StorageConf *jsonutils.JSONDict UpdateStorageConf bool + + // swagger:ignore + HardwareInfo *StorageHardwareInfo `json:"hardware_info"` + MasterHost string } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage_const.go index 9966d07d4..6c34c2678 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/storage_const.go @@ -34,6 +34,8 @@ const ( STORAGE_NVME_PT = "nvme_pt" // nvme passthrough STORAGE_NVME = "nvme" // nvme sriov STORAGE_LVM = "lvm" + STORAGE_CLVM = "clvm" // clustered lvm + STORAGE_SLVM = "slvm" // shared lvm STORAGE_PUBLIC_CLOUD = compute.STORAGE_PUBLIC_CLOUD STORAGE_CLOUD_EFFICIENCY = compute.STORAGE_CLOUD_EFFICIENCY @@ -43,6 +45,7 @@ const ( STORAGE_CLOUD_ESSD_PL2 = compute.STORAGE_CLOUD_ESSD_PL2 // 单盘最高随机读写IOPS 10万 STORAGE_CLOUD_ESSD_PL3 = compute.STORAGE_CLOUD_ESSD_PL3 // 单盘最高随机读写IOPS 100万 STORAGE_CLOUD_AUTO = compute.STORAGE_CLOUD_AUTO // ESSD AutoPL + STORAGE_CLOUD_ESSD_ENTRY = "cloud_essd_entry" // ESSD Entry云盘 STORAGE_EPHEMERAL_SSD = compute.STORAGE_EPHEMERAL_SSD // 单块本地SSD盘, 容量最大不能超过800 GiB STORAGE_LOCAL_HDD_PRO = compute.STORAGE_LOCAL_HDD_PRO // 实例规格族d1ne和d1搭载的SATA HDD本地盘 STORAGE_LOCAL_SSD_PRO = compute.STORAGE_LOCAL_SSD_PRO // 实例规格族i2、i2g、i1、ga1和gn5等搭载的NVMe @@ -90,6 +93,11 @@ const ( STORAGE_UCLOUD_LOCAL_SSD = compute.STORAGE_UCLOUD_LOCAL_SSD // SSD本地盘 STORAGE_UCLOUD_EXCLUSIVE_LOCAL_DISK = compute.STORAGE_UCLOUD_EXCLUSIVE_LOCAL_DISK // 独享本地盘 + // VolcEngine storage types + STORAGE_VOLC_CLOUD_FLEXPL = compute.STORAGE_VOLCENGINE_FlexPL // 极速型SSD云盘, FlexPL规格 + STORAGE_VOLC_CLOUD_PL0 = compute.STORAGE_VOLCENGINE_PL0 //极速型SSD云盘, PL0规格 + STORAGE_VOLC_CLOUD_PTSSD = compute.STORAGE_VOLCENGINE_PTSSD // 性能型SSD, 上一代产品 + // Zstack storage type STORAGE_ZSTACK_LOCAL_STORAGE = compute.STORAGE_ZSTACK_LOCAL_STORAGE STORAGE_ZSTACK_CEPH = compute.STORAGE_ZSTACK_CEPH @@ -162,7 +170,7 @@ var ( STORAGE_OPENSTACK_ISCSI, STORAGE_UCLOUD_CLOUD_NORMAL, STORAGE_UCLOUD_CLOUD_SSD, STORAGE_UCLOUD_LOCAL_NORMAL, STORAGE_UCLOUD_LOCAL_SSD, STORAGE_UCLOUD_EXCLUSIVE_LOCAL_DISK, STORAGE_ZSTACK_LOCAL_STORAGE, STORAGE_ZSTACK_CEPH, STORAGE_GPFS, STORAGE_CIFS, - STORAGE_NVME_PT, STORAGE_NVME, STORAGE_LVM, + STORAGE_NVME_PT, STORAGE_NVME, STORAGE_LVM, STORAGE_CLVM, STORAGE_SLVM, } HOST_STORAGE_LOCAL_TYPES = []string{STORAGE_LOCAL, STORAGE_BAREMETAL, STORAGE_ZSTACK_LOCAL_STORAGE, STORAGE_OPENSTACK_NOVA} @@ -172,8 +180,8 @@ var ( SHARED_FILE_STORAGE = []string{STORAGE_NFS, STORAGE_GPFS} FIEL_STORAGE = []string{STORAGE_LOCAL, STORAGE_NFS, STORAGE_GPFS} - // 目前来说只支持这些 - SHARED_STORAGE = []string{STORAGE_NFS, STORAGE_GPFS, STORAGE_RBD} + // supported shared storage types + SHARED_STORAGE = []string{STORAGE_NFS, STORAGE_GPFS, STORAGE_RBD, STORAGE_CLVM, STORAGE_SLVM} ) func IsDiskTypeMatch(t1, t2 string) bool { @@ -195,6 +203,12 @@ func IsDiskTypeMatch(t1, t2 string) bool { } } +const ( + STORAGE_METADATA_VENDOR = "vendor" + STORAGE_METADATA_MODEL = "model" + STORAGE_METADATA_BANDWIDTH = "bandwidth" +) + type StorageResourceInput struct { // 存储(ID或Name) StorageId string `json:"storage_id"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpc.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpc.go index 44767c102..1952d57c0 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpc.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpc.go @@ -55,6 +55,9 @@ type VpcResourceInfoBase struct { // VPC外部Id VpcExtId string `json:"vpc_ext_id"` + + // 是否为经典网络 + IsDefaultVpc bool `json:"is_default_vpc"` } type VpcResourceInfo struct { @@ -84,6 +87,9 @@ type VpcCreateInput struct { // CIDR_BLOCK CidrBlock string `json:"cidr_block"` + // CIDR_BLOCK + CidrBlock6 string `json:"cidr_block6"` + // 仅对谷歌云有用,若谷歌云订阅只有一个全局VPC,此参数可不传 // 若有多个全局VPC,谷歌云需要指定其中一个全局VPC GlobalvpcId string `json:"globalvpc_id"` @@ -97,6 +103,12 @@ type VpcUpdateInput struct { // Vpc外网访问模式 ExternalAccessMode string `json:"external_access_mode"` + + // CIDR BLOCK of IPv4 + CidrBlock string `json:"cidr_block"` + + // CIDR BLOCK of IPv6 + CidrBlock6 string `json:"cidr_block6"` } type VpcResourceInput struct { @@ -141,14 +153,16 @@ type VpcTopologyInput struct { } type NetworkTopologyOutput struct { - Name string `json:"name"` - Status string `json:"status"` - GuestIpStart string `json:"guest_ip_start"` - GuestIpEnd string `json:"guest_ip_end"` - GuestIpMask int8 `json:"guest_ip_mask"` - ServerType string `json:"server_type"` - VlanId int `json:"vlan_id"` - Address []SNetworkUsedAddress `json:"address"` + Name string `json:"name"` + Status string `json:"status"` + GuestIpStart string `json:"guest_ip_start"` + GuestIpEnd string `json:"guest_ip_end"` + GuestIpMask int8 `json:"guest_ip_mask"` + ServerType string `json:"server_type"` + VlanId int `json:"vlan_id"` + + GetNetworkAddressesOutput + // Address []SNetworkUsedAddress `json:"address"` } type HostnetworkTopologyOutput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpcs_const.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpcs_const.go index b99d0e5a1..78928f1b0 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpcs_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/vpcs_const.go @@ -80,6 +80,9 @@ type VpcListInput struct { // example: 192.168.222.0/24 CidrBlock []string `json:"cidr_block"` + // IPv6地址段 + CidrBlock6 []string `json:"cidr_block6"` + // enmu: eip, none ExternalAccessMode string `json:"external_access_mode"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/wire.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/wire.go index 50a2e466f..e3e276b62 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/wire.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/wire.go @@ -88,6 +88,11 @@ type WireResourceInfo struct { Zone string `json:"zone"` } +type SSimpleWire struct { + Wire string + WireId string +} + type WireUpdateInput struct { apis.InfrasResourceBaseUpdateInput diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/zone.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/zone.go index 35f65c121..92515f116 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/zone.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/zone.go @@ -121,3 +121,9 @@ type ZoneResourceInfo struct { CloudregionResourceInfo } + +type ZonePurgeInput struct { + // 云订阅Id, 若zone底下不存在任何资源,会删除当前zone + // required: true + ManagerId string `json:"manager_id"` +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/compute/zz_generated.model.go b/vendor/yunion.io/x/onecloud/pkg/apis/compute/zz_generated.model.go index 97ee98014..2fdcb0d56 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/compute/zz_generated.model.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/compute/zz_generated.model.go @@ -26,16 +26,9 @@ import ( // SAccessGroup is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SAccessGroup. type SAccessGroup struct { apis.SStatusInfrasResourceBase - IsDirty bool `json:"is_dirty"` -} - -// SAccessGroupCache is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SAccessGroupCache. -type SAccessGroupCache struct { - apis.SStatusStandaloneResourceBase apis.SExternalizedResourceBase SCloudregionResourceBase SManagedResourceBase - SAccessGroupResourceBase // 已关联的挂载点数量 MountTargetCount int `json:"mount_target_count"` FileSystemType string `json:"file_system_type"` @@ -50,14 +43,15 @@ type SAccessGroupResourceBase struct { // SAccessGroupRule is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SAccessGroupRule. type SAccessGroupRule struct { - apis.SResourceBase + apis.SStandaloneAnonResourceBase + apis.SStatusResourceBase SAccessGroupResourceBase - Id string `json:"id"` + // 云上Id, 对应云上资源自身Id + ExternalId string `json:"external_id"` Priority int `json:"priority"` Source string `json:"source"` RWAccessType string `json:"rw_access_type"` UserAccessType string `json:"user_access_type"` - Description string `json:"description"` } // SApp is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SApp. @@ -95,12 +89,6 @@ type SBackupStorage struct { CapacityMb int `json:"capacity_mb"` } -// SBackupStorageAccessInfo is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SBackupStorageAccessInfo. -type SBackupStorageAccessInfo struct { - NfsHost string `json:"nfs_host"` - NfsSharedDir string `json:"nfs_shared_dir"` -} - // SBaremetalagent is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SBaremetalagent. type SBaremetalagent struct { apis.SStandaloneResourceBase @@ -254,6 +242,9 @@ type SCloudaccount struct { // 账户余额 // example: 124.2 Balance float64 `json:"balance"` + // 账户余额货币类型 + // enmu: CNY, USD + Currency string `json:"currency"` // 上次账号探测时间 ProbeAt time.Time `json:"probe_at"` // 账号健康状态 @@ -264,6 +255,9 @@ type SCloudaccount struct { // 是否根据云上项目自动在本地创建对应项目 // example: false AutoCreateProject bool `json:"auto_create_project"` + // 是否根据云订阅自动在本地创建对应项目 + // example: false + AutoCreateProjectForProvider bool `json:"auto_create_project_for_provider"` // 云API版本 Version string `json:"version"` // 云系统信息 @@ -288,6 +282,8 @@ type SCloudaccount struct { SubAccounts *cloudprovider.SubAccounts `json:"sub_accounts"` // 缺失的权限,云账号操作资源时自动更新 LakeOfPermissions *SAccountPermissions `json:"lake_of_permissions"` + // 跳过部分资源同步 + SkipSyncResources *SkipSyncResources `json:"skip_sync_resources"` } // SCloudimage is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SCloudimage. @@ -301,6 +297,7 @@ type SCloudimage struct { type SCloudprovider struct { apis.SEnabledStatusStandaloneResourceBase apis.SProjectizedResourceBase + apis.SExternalizedResourceBase SSyncableBaseResource // 云端服务健康状态。例如欠费、项目冻结都属于不健康状态。 // | HealthStatus | 说明 | @@ -321,6 +318,9 @@ type SCloudprovider struct { CloudaccountId string `json:"cloudaccount_id"` // 云账号的平台信息 Provider string `json:"provider"` + // 云上同步资源是否在本地被更改过配置, local: 更改过, cloud: 未更改过 + // example: local + ProjectSrc string `json:"project_src"` SProjectMappingResourceBase } @@ -344,9 +344,9 @@ type SCloudproviderQuota struct { QuotaRange string `json:"quota_range"` // 已使用的配额 // -1代表未从云平台拿到已使用配额信息 - UsedCount int `json:"used_count"` + UsedCount int64 `json:"used_count"` // 最大配额限制 - MaxCount int `json:"max_count"` + MaxCount int64 `json:"max_count"` // 配额类型 QuotaType string `json:"quota_type"` } @@ -622,6 +622,12 @@ type SDisk struct { // swap: 交换盘 // example: sys DiskType string `json:"disk_type"` + // 预分配策略 + // off: 关闭预分配,默认关闭 + // metadata: 精简制备 + // falloc: 厚制制备延迟置零 + // full: 厚制备快速置零 + Preallocation string `json:"preallocation"` // # is persistent Nonpersistent bool `json:"nonpersistent"` // 是否标记为SSD磁盘 @@ -658,55 +664,27 @@ type SDiskResourceBase struct { // SDnsRecord is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SDnsRecord. type SDnsRecord struct { - apis.SAdminSharableVirtualResourceBase - apis.SEnabledResourceBase - // DNS记录的过期时间,单位为秒 - // example: 60 - Ttl int `json:"ttl"` -} - -// SDnsRecordSet is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SDnsRecordSet. -type SDnsRecordSet struct { apis.SEnabledStatusStandaloneResourceBase + apis.SExternalizedResourceBase SDnsZoneResourceBase DnsType string `json:"dns_type"` DnsValue string `json:"dns_value"` TTL int64 `json:"ttl"` MxPriority int64 `json:"mx_priority"` -} - -// SDnsRecordSetTrafficPolicy is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SDnsRecordSetTrafficPolicy. -type SDnsRecordSetTrafficPolicy struct { - apis.SJointResourceBase - DnsRecordsetId string `json:"dns_recordset_id"` - DnsTrafficPolicyId string `json:"dns_traffic_policy_id"` -} - -// SDnsTrafficPolicy is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SDnsTrafficPolicy. -type SDnsTrafficPolicy struct { - apis.SEnabledStatusInfrasResourceBase - Provider string `json:"provider"` - PolicyType string `json:"policy_type"` - PolicyValue string `json:"policy_value"` - Options *jsonutils.JSONDict `json:"options"` + // 解析线路类型 + PolicyType string `json:"policy_type"` + // 解析线路 + PolicyValue string `json:"policy_value"` } // SDnsZone is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SDnsZone. type SDnsZone struct { - apis.SEnabledStatusInfrasResourceBase - IsDirty bool `json:"is_dirty"` - ZoneType string `json:"zone_type"` - Options *jsonutils.JSONDict `json:"options"` -} - -// SDnsZoneCache is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SDnsZoneCache. -type SDnsZoneCache struct { - apis.SStatusStandaloneResourceBase + apis.SSharableVirtualResourceBase + apis.SEnabledResourceBase apis.SExternalizedResourceBase - SDnsZoneResourceBase - // 归属云账号ID - CloudaccountId string `json:"cloudaccount_id"` - ProductType string `json:"product_type"` + SManagedResourceBase + ZoneType string `json:"zone_type"` + ProductType string `json:"product_type"` } // SDnsZoneResourceBase is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SDnsZoneResourceBase. @@ -771,10 +749,12 @@ type SElasticSearch struct { type SElasticcache struct { apis.SVirtualResourceBase apis.SExternalizedResourceBase + SCloudregionResourceBase + SManagedResourceBase SBillingResourceBase SDeletePreventableResourceBase - SVpcResourceBase SZoneResourceBase + VpcId string `json:"vpc_id"` // 备可用区 SlaveZones string `json:"slave_zones"` // 实例规格 @@ -989,6 +969,9 @@ type SExternalProject struct { apis.SVirtualResourceBase apis.SExternalizedResourceBase SManagedResourceBase + // 优先级,同一个本地项目映射多个云上项目,优先级高的优先选择 + // 数值越高,优先级越大 + Priority int `json:"priority"` ExternalDomainId string `json:"external_domain_id"` // 归属云账号ID CloudaccountId string `json:"cloudaccount_id"` @@ -1071,9 +1054,12 @@ type SGroupguest struct { type SGroupnetwork struct { SGroupJointsBase NetworkId string `json:"network_id"` - IpAddr string `json:"ip_addr"` - Index byte `json:"index"` - EipId string `json:"eip_id"` + // IPv4地址 + IpAddr string `json:"ip_addr"` + // IPv6地址 + Ip6Addr string `json:"ip6_addr"` + Index byte `json:"index"` + EipId string `json:"eip_id"` } // SGuest is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SGuest. @@ -1087,9 +1073,11 @@ type SGuest struct { SHostnameResourceBase SHostResourceBase apis.SEncryptedResource - // CPU大小 + // CPU插槽(socket)的数量 + CpuSockets int `json:"cpu_sockets"` + // CPU核(core)的数量, VcpuCount = CpuSockets * (cores per socket),例如 2颗CPU,每颗CPU8核,则 VcpuCount=2*8=16 VcpuCount int `json:"vcpu_count"` - // 内存大小, 单位Mb + // 内存大小, 单位MB VmemSize int `json:"vmem_size"` // 启动顺序 BootOrder string `json:"boot_order"` @@ -1134,6 +1122,8 @@ type SGuest struct { QgaStatus string `json:"qga_status"` // power_states limit in [on, off, unknown] PowerStates string `json:"power_states"` + // Used for guest rescue + RescueMode bool `json:"rescue_mode"` } // SGuestJointsBase is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SGuestJointsBase. @@ -1207,6 +1197,12 @@ type SGuestnetwork struct { NumQueues int `json:"num_queues"` // 带宽限制,单位mbps BwLimit int `json:"bw_limit"` + // 下行流量限制,单位 bytes + RxTrafficLimit int64 `json:"rx_traffic_limit"` + RxTrafficUsed int64 `json:"rx_traffic_used"` + // 上行流量限制,单位 bytes + TxTrafficLimit int64 `json:"tx_traffic_limit"` + TxTrafficUsed int64 `json:"tx_traffic_used"` // 网卡序号 Index byte `json:"index"` // 是否为虚拟接口(无IP) @@ -1219,6 +1215,8 @@ type SGuestnetwork struct { MappedIpAddr string `json:"mapped_ip_addr"` // 网卡关联的Eip实例 EipId string `json:"eip_id"` + // 是否为缺省路由 + IsDefault bool `json:"is_default"` } // SGuestsecgroup is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SGuestsecgroup. @@ -1274,9 +1272,10 @@ type SHost struct { // 内存超分比 MemCmtbound float32 `json:"mem_cmtbound"` // 页大小 - PageSizeKB int `json:"page_size_kb"` + PageSizeKB int `json:"page_size_kb"` + EnableNumaAllocate bool `json:"enable_numa_allocate"` // 存储大小,单位Mb - StorageSize int `json:"storage_size"` + StorageSize int64 `json:"storage_size"` // 存储类型 StorageType string `json:"storage_type"` // 存储驱动类型 @@ -1343,6 +1342,8 @@ type SHostnetwork struct { IpAddr string `json:"ip_addr"` // MAC地址 MacAddr string `json:"mac_addr"` + // VLAN + VlanId int `json:"vlan_id"` } // SHostschedtag is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SHostschedtag. @@ -1369,8 +1370,8 @@ type SHoststorage struct { RealCapacity int64 `json:"real_capacity"` } -// SHostwire is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SHostwire. -type SHostwire struct { +// SHostwireDeprecated is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SHostwireDeprecated. +type SHostwireDeprecated struct { SHostJointsBase Bridge string `json:"bridge"` // 接口名称 @@ -1512,12 +1513,32 @@ type SIsolatedDevice struct { WireId string `json:"wire_id"` // Offload interface name OvsOffloadInterface string `json:"ovs_offload_interface"` + // Is infiniband nic + IsInfinibandNic bool `json:"is_infiniband_nic"` // NVME disk size NvmeSizeMB int `json:"nvme_size_mb"` // guest disk index DiskIndex byte `json:"disk_index"` // # pci address of `Bus:Device.Function` format, or usb bus address of `bus.addr` - Addr string `json:"addr"` + Addr string `json:"addr"` + // Is vgpu physical funcion, That means it cannot be attached to guest + // VGPUPhysicalFunction bool `nullable:"true" default:"false" list:"domain" create:"domain_optional"` + // nvidia vgpu config + // vgpu uuid generated on create + MdevId string `json:"mdev_id"` + // The frame rate limiter (FRL) configuration in frames per second + FRL string `json:"frl"` + // The frame buffer size in Mbytes + Framebuffer string `json:"framebuffer"` + // The maximum resolution per display head, eg: 5120x2880 + MaxResolution string `json:"max_resolution"` + // The maximum number of virtual display heads that the vGPU type supports + // In computer graphics and display technology, the term "head" is commonly used to + // describe the physical interface of a display device or display output. + // It refers to a connection point on the monitor, such as HDMI, DisplayPort, or VGA interface. + NumHeads string `json:"num_heads"` + // The maximum number of vGPU instances per physical GPU + MaxInstance string `json:"max_instance"` VendorDeviceId string `json:"vendor_device_id"` // reserved memory size for isolated device ReservedMemory int `json:"reserved_memory"` @@ -1525,6 +1546,10 @@ type SIsolatedDevice struct { ReservedCpu int `json:"reserved_cpu"` // reserved storage size for isolated device ReservedStorage int `json:"reserved_storage"` + // PciInfo stores extra PCIE information + PcieInfo *IsolatedDevicePCIEInfo `json:"pcie_info"` + // device numa node + NumaNode byte `json:"numa_node"` } // SIsolatedDeviceModel is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SIsolatedDeviceModel. @@ -1574,6 +1599,7 @@ type SKafka struct { // SKeypair is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SKeypair. type SKeypair struct { apis.SUserResourceBase + apis.SSharableBaseResource // 加密类型 // example: RSA Scheme string `json:"scheme"` @@ -1706,9 +1732,12 @@ type SLoadbalancerAgentDeployment struct { // SLoadbalancerAgentParams is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SLoadbalancerAgentParams. type SLoadbalancerAgentParams struct { - KeepalivedConfTmpl string `json:"keepalived_conf_tmpl"` - HaproxyConfTmpl string `json:"haproxy_conf_tmpl"` - TelegrafConfTmpl string `json:"telegraf_conf_tmpl"` + KeepalivedConfTmpl string `json:"keepalived_conf_tmpl"` + HaproxyConfTmpl string `json:"haproxy_conf_tmpl"` + TelegrafConfTmpl string `json:"telegraf_conf_tmpl"` + Vrrp SLoadbalancerAgentParamsVrrp `json:"vrrp"` + Haproxy SLoadbalancerAgentParamsHaproxy `json:"haproxy"` + Telegraf SLoadbalancerAgentParamsTelegraf `json:"telegraf"` } // SLoadbalancerAgentParamsHaproxy is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SLoadbalancerAgentParamsHaproxy. @@ -2186,15 +2215,21 @@ type SNetwork struct { // allow multiple dhcp, seperated by "," GuestDhcp string `json:"guest_dhcp"` // allow mutiple ntp, seperated by "," - GuestNtp string `json:"guest_ntp"` - GuestDomain string `json:"guest_domain"` + GuestNtp string `json:"guest_ntp"` + // search domain + GuestDomain string `json:"guest_domain"` + // 起始IPv6地址 GuestIp6Start string `json:"guest_ip6_start"` - GuestIp6End string `json:"guest_ip6_end"` - GuestIp6Mask byte `json:"guest_ip6_mask"` + // 结束IPv6地址 + GuestIp6End string `json:"guest_ip6_end"` + // IPv6子网掩码 + GuestIp6Mask byte `json:"guest_ip6_mask"` + // IPv6网关 GuestGateway6 string `json:"guest_gateway6"` - GuestDns6 string `json:"guest_dns6"` - GuestDomain6 string `json:"guest_domain6"` - VlanId int `json:"vlan_id"` + // IPv6域名服务器 + GuestDns6 string `json:"guest_dns6"` + GuestDomain6 string `json:"guest_domain6"` + VlanId int `json:"vlan_id"` // 服务器类型 // example: server ServerType string `json:"server_type"` @@ -2208,6 +2243,14 @@ type SNetwork struct { BgpType string `json:"bgp_type"` } +// SNetworkAdditionalWire is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SNetworkAdditionalWire. +type SNetworkAdditionalWire struct { + NetworkId string `json:"network_id"` + WireId string `json:"wire_id"` + Synced *bool `json:"synced"` + Marked *bool `json:"marked"` +} + // SNetworkAddress is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SNetworkAddress. type SNetworkAddress struct { apis.SStandaloneAnonResourceBase @@ -2309,6 +2352,8 @@ type SReservedip struct { Id int64 `json:"id"` // IP地址 IpAddr string `json:"ip_addr"` + // IPv6地址 + Ip6Addr string `json:"ip6_addr"` // 预留原因或描述 Notes string `json:"notes"` // 过期时间 @@ -2497,21 +2542,12 @@ type SSchedtagResourceBase struct { // SSecurityGroup is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSecurityGroup. type SSecurityGroup struct { apis.SSharableVirtualResourceBase - IsDirty bool `json:"is_dirty"` -} - -// SSecurityGroupCache is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSecurityGroupCache. -type SSecurityGroupCache struct { - apis.SStatusStandaloneResourceBase apis.SExternalizedResourceBase - SCloudregionResourceBase + IsDirty bool `json:"is_dirty"` SManagedResourceBase - SSecurityGroupResourceBase - // 被其他安全组引用的次数 - ReferenceCount int `json:"reference_count"` - // 虚拟私有网络外部Id - VpcId string `json:"vpc_id"` - ExternalProjectId string `json:"external_project_id"` + SCloudregionResourceBase + SGlobalVpcResourceBase + SVpcResourceBase } // SSecurityGroupResourceBase is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSecurityGroupResourceBase. @@ -2523,9 +2559,11 @@ type SSecurityGroupResourceBase struct { // SSecurityGroupRule is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSecurityGroupRule. type SSecurityGroupRule struct { apis.SResourceBase + apis.SStatusResourceBase + apis.SExternalizedResourceBase SSecurityGroupResourceBase Id string `json:"id"` - Priority int64 `json:"priority"` + Priority int `json:"priority"` Protocol string `json:"protocol"` Ports string `json:"ports"` Direction string `json:"direction"` @@ -2568,9 +2606,10 @@ type SServerSku struct { NicMaxCount int `json:"nic_max_count"` GpuAttachable *bool `json:"gpu_attachable,omitempty"` GpuSpec string `json:"gpu_spec"` - GpuCount int `json:"gpu_count"` + GpuCount string `json:"gpu_count"` GpuMaxCount int `json:"gpu_max_count"` Provider string `json:"provider"` + Md5 string `json:"md5"` } // SServiceCatalog is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SServiceCatalog. @@ -2610,35 +2649,21 @@ type SSnapshot struct { // SSnapshotPolicy is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSnapshotPolicy. type SSnapshotPolicy struct { apis.SVirtualResourceBase + apis.SExternalizedResourceBase + SManagedResourceBase + SCloudregionResourceBase RetentionDays int `json:"retention_days"` // 1~7, 1 is Monday - RepeatWeekdays byte `json:"repeat_weekdays"` + RepeatWeekdays []int `json:"repeat_weekdays"` // 0~23 - TimePoints uint32 `json:"time_points"` - IsActivated *bool `json:"is_activated,omitempty"` -} - -// SSnapshotPolicyCache is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSnapshotPolicyCache. -type SSnapshotPolicyCache struct { - apis.SStatusStandaloneResourceBase - apis.SExternalizedResourceBase - SCloudregionResourceBase - SManagedResourceBase - SSnapshotPolicyResourceBase + TimePoints []int `json:"time_points"` } // SSnapshotPolicyDisk is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSnapshotPolicyDisk. type SSnapshotPolicyDisk struct { apis.SVirtualJointResourceBase - SSnapshotPolicyResourceBase - SDiskResourceBase - Status string `json:"status"` -} - -// SSnapshotPolicyResourceBase is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SSnapshotPolicyResourceBase. -type SSnapshotPolicyResourceBase struct { - // 本地快照策略ID SnapshotpolicyId string `json:"snapshotpolicy_id"` + SDiskResourceBase } // SStorage is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SStorage. @@ -2666,6 +2691,8 @@ type SStorage struct { StorageConf jsonutils.JSONObject `json:"storage_conf"` // 存储缓存Id StoragecacheId string `json:"storagecache_id"` + // master host id + MasterHost string `json:"master_host"` // indicating whether system disk can be allocated in this storage // 是否可以用作系统盘存储 // example: true @@ -2684,6 +2711,8 @@ type SStoragecache struct { SManagedResourceBase // 镜像存储地址 Path string `json:"path"` + // master host id + MasterHost string `json:"master_host"` } // SStoragecacheResourceBase is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SStoragecacheResourceBase. @@ -2742,7 +2771,13 @@ type STimer struct { WeekDays byte `json:"week_days"` // 0-31 0 is unlimited MonthDays uint32 `json:"month_days"` - IsExpired bool `json:"is_expired"` + // StartTime represent the start time of this timer + StartTime time.Time `json:"start_time"` + // EndTime represent deadline of this timer + EndTime time.Time `json:"end_time"` + // NextTime represent the time timer should bell + NextTime time.Time `json:"next_time"` + IsExpired bool `json:"is_expired"` } // SVpc is an autogenerated struct via yunion.io/x/onecloud/pkg/compute/models.SVpc. @@ -2758,6 +2793,8 @@ type SVpc struct { // CIDR地址段 // example: 192.168.222.0/24 CidrBlock string `json:"cidr_block"` + // CIDR for IPv6 + CidrBlock6 string `json:"cidr_block6"` // Vpc外网访问模式 ExternalAccessMode string `json:"external_access_mode"` // Can it be connected directly @@ -2872,6 +2909,7 @@ type SWafRuleStatement struct { type SWire struct { apis.SStatusInfrasResourceBase apis.SExternalizedResourceBase + SManagedResourceBase SVpcResourceBase SZoneResourceBase // 带宽大小, 单位Mbps diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/const.go b/vendor/yunion.io/x/onecloud/pkg/apis/const.go index d90ed00a4..46d58367e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/const.go @@ -36,8 +36,10 @@ const ( SERVICE_TYPE_CLOUDMON = "cloudmon" SERVICE_TYPE_VPCAGENT = "vpcagent" - SERVICE_TYPE_ETCD = "etcd" - SERVICE_TYPE_INFLUXDB = "influxdb" + SERVICE_TYPE_ETCD = "etcd" + SERVICE_TYPE_INFLUXDB = "influxdb" + SERVICE_TYPE_NTP = "ntp" + SERVICE_TYPE_VICTORIA_METRICS = "victoria-metrics" SERVICE_TYPE_SCHEDULEDTASK = "scheduledtask" @@ -51,6 +53,7 @@ const ( STATUS_DELETE_FAILED = "delete_failed" STATUS_UNKNOWN = "unknown" STATUS_CREATING = "creating" + STATUS_AVAILABLE = "available" STATUS_CREATE_FAILED = "create_failed" CLOUD_TAG_PREFIX = "ext:" @@ -76,6 +79,33 @@ var ( SERVICE_TYPE_KEYSTONE, SERVICE_TYPE_ETCD, SERVICE_TYPE_INFLUXDB, + SERVICE_TYPE_CLOUDMON, + SERVICE_TYPE_METER, + SERVICE_TYPE_CLOUDEVENT, + SERVICE_TYPE_ANSIBLE, + SERVICE_TYPE_INFLUXDB, + SERVICE_TYPE_APIMAP, + SERVICE_TYPE_LOG, + "autoupdate", + "yunionagent", + "webconsole", + "esxiagent", + "s3gateway", + "common", + "websocket", + "echarts-ssr", + "lbagent", + "vpcagent", + "cloudwatcher", + "cloudnet", + "repo", + "cloudproxy", + "apigateway", + "yunionapi", + "billing", + SERVICE_TYPE_ETCD, + "itsm", + SERVICE_TYPE_NTP, } ) diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/consts.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/consts.go index 4c48bb6bb..edf0da5a9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/consts.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/consts.go @@ -84,6 +84,8 @@ const ( IdentitySyncStatusIdle = "idle" MinimalSyncIntervalSeconds = 5 * 60 // 5 minutes + + AUTH_TOKEN_LENGTH = 64 ) var ( @@ -95,13 +97,13 @@ var ( } SensitiveDomainConfigMap = map[string][]string{ - "ldap": []string{ + "ldap": { "password", }, } CommonWhitelistOptionMap = map[string][]string{ - "default": []string{ + "default": { "enable_quota_check", "default_quota_value", "non_default_domain_projects", @@ -113,12 +115,13 @@ var ( "global_https_proxy", "ignore_nonrunning_guests", "platform_name", + "enable_cloud_shell", "platform_names", }, } ServiceBlacklistOptionMap = map[string][]string{ - "default": []string{ + "default": { // ############################ // common blacklist options // ############################ @@ -151,6 +154,7 @@ var ( "is_slave_node", "config_sync_period_seconds", + "enable_app_profiling", // ############################ // db blacklist options @@ -207,6 +211,7 @@ var ( "force_dhcp_probe_ipmi", "tftp_block_size_in_bytes", "tftp_max_timeout_retries", + "enable_grub_tftp_download", "lengthy_worker_count", "short_worker_count", // "default_ipmi_password", diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/domain.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/domain.go index dffb44177..ef1e6f53a 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/domain.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/domain.go @@ -22,6 +22,13 @@ type DomainDetails struct { SDomain + DomainUsage + + // 归属该域的外部资源统计信息 + ExternalResourceInfo +} + +type DomainUsage struct { // 归属域的用户数量 UserCount int `json:"user_count"` // 归属域的用户组数量 @@ -34,9 +41,6 @@ type DomainDetails struct { PolicyCount int `json:"policy_count"` // 归属域的认证源数量 IdpCount int `json:"idp_count"` - - // 归属该域的外部资源统计信息 - ExternalResourceInfo } type DomainUpdateInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/identityprovider.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/identityprovider.go index 863780a76..047cd2f5d 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/identityprovider.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/identityprovider.go @@ -60,6 +60,9 @@ type IdpResourceInfo struct { // 认证源类型, 例如sql, cas, ldap等 IdpDriver string `json:"idp_driver"` + // 是否是SSO登录方式 + IsSso bool `json:"is_sso"` + // 认证源模板 Template string `json:"template"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/input.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/input.go index 03a1f8b56..9cb26009e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/input.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/input.go @@ -42,8 +42,7 @@ type IdentityBaseResourceListInput struct { type EnabledIdentityBaseResourceListInput struct { IdentityBaseResourceListInput - // filter by enabled status - Enabled *bool `json:"enabled"` + apis.EnabledResourceBaseListInput } type ProjectFilterListInput struct { @@ -165,6 +164,9 @@ type ProjectListInput struct { // project tags filter imposed by policy PolicyProjectTags tagutils.TTagSetList `json:"policy_project_tags"` + + // 通过项目管理员id过滤 + AdminId []string `json:"admin_id"` } type DomainListInput struct { @@ -427,11 +429,14 @@ type IdentityProviderUpdateInput struct { type PolicyTagInput struct { // 匹配的资源标签 - ObjectTags tagutils.TTagSet `json:"object_tags"` + ObjectTags tagutils.TTagSet `json:"object_tags,allowempty"` // 匹配的项目标签 - ProjectTags tagutils.TTagSet `json:"project_tags"` + ProjectTags tagutils.TTagSet `json:"project_tags,allowempty"` // 匹配的域标签 - DomainTags tagutils.TTagSet `json:"domain_tags"` + DomainTags tagutils.TTagSet `json:"domain_tags,allowempty"` + + // 组织架构节点ID + OrgNodeId []string `json:"org_node_id,allowempty"` } type PolicyUpdateInput struct { @@ -552,12 +557,7 @@ type PolicyCreateInput struct { // 是否为系统权限 IsSystem *bool `json:"is_system"` - // 匹配的资源标签 - ResourceTags tagutils.TTagSet `json:"resource_tags"` - // 匹配的项目标签 - ProjectTags tagutils.TTagSet `json:"project_tags"` - // 匹配的域标签 - DomainTags tagutils.TTagSet `json:"domain_tags"` + PolicyTagInput } type RoleCreateInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/organization.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/organization.go index 82c3eec12..85a561d31 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/organization.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/organization.go @@ -15,11 +15,13 @@ package identity import ( + "fmt" "strings" "yunion.io/x/jsonutils" "yunion.io/x/onecloud/pkg/apis" + "yunion.io/x/onecloud/pkg/util/tagutils" ) const ( @@ -59,7 +61,10 @@ func IsValidOrgType(orgType TOrgType) bool { } type OrganizationListInput struct { - apis.EnabledStatusInfrasResourceBaseListInput + EnabledIdentityBaseResourceListInput + apis.SharableResourceBaseListInput + apis.StatusResourceBaseListInput + // apis.EnabledStatusInfrasResourceBaseListInput Type []TOrgType `json:"type"` @@ -67,7 +72,10 @@ type OrganizationListInput struct { } type OrganizationCreateInput struct { - apis.EnabledStatusInfrasResourceBaseCreateInput + EnabledIdentityBaseResourceCreateInput + apis.SharableResourceBaseCreateInput + apis.StatusBaseResourceCreateInput + // apis.EnabledStatusInfrasResourceBaseCreateInput Type TOrgType `json:"type"` @@ -96,7 +104,10 @@ func (info *SOrganizationInfo) String() string { } type OrganizationUpdateInput struct { - apis.EnabledStatusInfrasResourceBaseUpdateInput + EnabledIdentityBaseUpdateInput + // apis.SharableResourceBaseUpdateInput + // apis.StatusResourceBaseUpdateInput + // apis.EnabledStatusInfrasResourceBaseUpdateInput } type OrganizationPerformAddLevelsInput struct { @@ -106,8 +117,9 @@ type OrganizationPerformAddLevelsInput struct { } type OrganizationPerformAddNodeInput struct { - Tags map[string]string - Weight int + Tags map[string]string + Weight int + Description string } type OrganizationPerformSyncInput struct { @@ -127,7 +139,9 @@ func IsValidLabel(val string) bool { } func trimLabel(label string) string { - return strings.Trim(label, OrganizationLabelSeparator+" ") + label = strings.Trim(label, OrganizationLabelSeparator+" ") + label = strings.ReplaceAll(label, "/", "\\/") + return label } func JoinLabels(seg ...string) string { @@ -149,7 +163,12 @@ func SplitLabel(label string) []string { for _, p := range parts { p = trimLabel(p) if len(p) > 0 { - ret = append(ret, p) + if len(ret) > 0 && strings.HasSuffix(ret[len(ret)-1], "\\") { + pref := ret[len(ret)-1] + ret[len(ret)-1] = fmt.Sprintf("%s/%s", pref[:len(pref)-1], p) + } else { + ret = append(ret, p) + } } } return ret @@ -169,6 +188,13 @@ type OrganizationNodeListInput struct { OrgType TOrgType `json:"org_type"` Level int `json:"level"` + + // domain tags filter imposed by policy + PolicyDomainTags tagutils.TTagSetList `json:"policy_domain_tags"` + // project tags filter imposed by policy + PolicyProjectTags tagutils.TTagSetList `json:"policy_project_tags"` + // object tags filter imposed by policy + PolicyObjectTags tagutils.TTagSetList `json:"policy_object_tags"` } type SProjectOrganization struct { @@ -182,3 +208,18 @@ type SProjectOrganizationNode struct { Id string Labels []string } + +type SOrganizationNodeDetails struct { + apis.StandaloneResourceDetails + + SOrganizationNode + + Tags tagutils.TTagSet `json:"tags"` + + Organization string `json:"organization"` + + Type TOrgType `json:"type"` +} + +type OrganizationPerformCleanInput struct { +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/policy.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/policy.go index a5ba501c4..eb6dc2ee7 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/policy.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/policy.go @@ -18,13 +18,25 @@ import ( "time" "yunion.io/x/onecloud/pkg/apis" + "yunion.io/x/onecloud/pkg/util/tagutils" ) +type SOrganizationNodeInfo struct { + Id string + FullLabel string + OrgId string + Organization string + Tags tagutils.TTagSet + Type TOrgType +} + type PolicyDetails struct { EnabledIdentityBaseResourceDetails apis.SharableResourceBaseInfo SPolicy + + OrgNodes []SOrganizationNodeInfo } type PolicyBindRoleInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/project.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/project.go index 95a1657af..712e71e12 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/project.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/project.go @@ -49,3 +49,6 @@ type ProjectDetails struct { Organization *SProjectOrganization } + +type ProjectCleanInput struct { +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/user.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/user.go index 16d9753a7..90be04424 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/user.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/user.go @@ -29,6 +29,16 @@ type UserDetails struct { SUser + UserUsage + + // 归属该用户的外部资源统计信息 + ExternalResourceInfo + + // 用户归属的的项目信息 + Projects []SFetchDomainObjectWithMetadata `json:"projects"` +} + +type UserUsage struct { // 用户归属用户组的数量 GroupCount int `json:"group_count"` // 用户归属项目的数量 @@ -39,25 +49,20 @@ type UserDetails struct { FailedAuthCount int `json:"failed_auth_count"` // 上传登录失败的时间 FailedAuthAt time.Time `json:"failed_auth_at"` - // 密码过期时间(如果开启了密码过期) - PasswordExpiresAt time.Time `json:"password_expires_at"` // 登录后是否需要重置密码 NeedResetPassword bool `json:"need_reset_password"` // 重置密码原因: admin_reset|expire PasswordResetHint string `json:"password_reset_hint"` - // 该用户关联的外部认证源的认证信息 - Idps []IdpResourceInfo `json:"idps"` + // 密码过期时间(如果开启了密码过期) + PasswordExpiresAt time.Time `json:"password_expires_at"` // 该用户是否为本地用户(SQL维护的用户) IsLocal bool `json:"is_local"` - // 归属该用户的外部资源统计信息 - ExternalResourceInfo - - // 用户归属的的项目信息 - Projects []SFetchDomainObjectWithMetadata `json:"projects"` + // 该用户关联的外部认证源的认证信息 + Idps []IdpResourceInfo `json:"idps"` } type ResetCredentialInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/usrext.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/usrext.go index 380df74dc..7e8307c5c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/usrext.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/usrext.go @@ -39,4 +39,6 @@ type SUserExtended struct { IsLocal bool // IdpId string // IdpName string + + AuditIds []string } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/identity/zz_generated.model.go b/vendor/yunion.io/x/onecloud/pkg/apis/identity/zz_generated.model.go index 9b50ff2ef..e206b6837 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/identity/zz_generated.model.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/identity/zz_generated.model.go @@ -63,6 +63,7 @@ type SCredential struct { // SDomain is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SDomain. type SDomain struct { apis.SStandaloneResourceBase + apis.SPendingDeletedBase // 额外信息 Extra *jsonutils.JSONDict `json:"extra"` // 改域是否启用 @@ -77,7 +78,7 @@ type SDomain struct { // SEnabledIdentityBaseResource is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SEnabledIdentityBaseResource. type SEnabledIdentityBaseResource struct { SIdentityBaseResource - Enabled *bool `json:"enabled,omitempty"` + apis.SEnabledResourceBase } // SEndpoint is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SEndpoint. @@ -129,6 +130,7 @@ type SGroup struct { type SIdentityBaseResource struct { apis.SStandaloneResourceBase apis.SDomainizedResourceBase + apis.SPendingDeletedBase // 额外信息 Extra *jsonutils.JSONDict `json:"extra"` } @@ -198,6 +200,33 @@ type SNonlocalUser struct { UserId string `json:"user_id"` } +// SOrganization is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SOrganization. +type SOrganization struct { + SEnabledIdentityBaseResource + apis.SSharableBaseResource + apis.SStatusResourceBase + Type string `json:"type"` + Keys string `json:"keys"` + Level int `json:"level"` +} + +// SOrganizationDetails is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SOrganizationDetails. +type SOrganizationDetails struct { + EnabledIdentityBaseResourceDetails + apis.SharableResourceBaseInfo + SOrganization +} + +// SOrganizationNode is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SOrganizationNode. +type SOrganizationNode struct { + apis.SStandaloneResourceBase + apis.SPendingDeletedBase + OrgId string `json:"org_id"` + FullLabel string `json:"full_label"` + Level int `json:"level"` + Weight int `json:"weight"` +} + // SPassword is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SPassword. type SPassword struct { apis.SResourceBase @@ -229,6 +258,8 @@ type SPolicy struct { DomainTags []tagutils.STag `json:"domain_tags"` // 匹配的资源标签 ObjectTags []tagutils.STag `json:"object_tags"` + // 匹配的组织架构节点 + OrgNodeId []string `json:"org_node_id"` } // SProject is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SProject. @@ -307,6 +338,19 @@ type SServiceCertificate struct { CaPrivateKey string `json:"ca_private_key"` } +// STokenCache is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.STokenCache. +type STokenCache struct { + apis.SStandaloneAnonResourceBase + Valid bool `json:"valid"` + Method string `json:"method"` + AuditIds string `json:"audit_ids"` + UserId string `json:"user_id"` + ProjectId string `json:"project_id"` + DomainId string `json:"domain_id"` + Source string `json:"source"` + Ip string `json:"ip"` +} + // SUser is an autogenerated struct via yunion.io/x/onecloud/pkg/keystone/models.SUser. type SUser struct { apis.SRecordChecksumResourceBase diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/image/image.go b/vendor/yunion.io/x/onecloud/pkg/apis/image/image.go index b6e61e5c7..b681043f0 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/image/image.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/image/image.go @@ -66,6 +66,8 @@ type GuestImageListInput struct { // 是否删除保护 Protected *bool `json:"protected"` + + DiskFormat []string `json:"disk_format"` } type ImageDetails struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/list.go b/vendor/yunion.io/x/onecloud/pkg/apis/list.go index e9e738aaa..1f490a90d 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/list.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/list.go @@ -26,11 +26,6 @@ type ScopedResourceInput struct { } type DomainizedResourceListInput struct { - // swagger:ignore - // Is an admin call? equivalent to scope=system - // Deprecated - Admin *bool `json:"admin"` - ScopedResourceInput DomainizedResourceInput diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/logger/input.go b/vendor/yunion.io/x/onecloud/pkg/apis/logger/input.go index df4669116..102ccef2e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/logger/input.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/logger/input.go @@ -44,7 +44,8 @@ type ActionLogListInput struct { Service []string `json:"service"` - Success *bool `json:"success"` + Success *bool `json:"success"` + IsSystemAccount *bool `json:"is_system_account"` Ip []string `json:"ip"` diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/config.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/config.go index a56969db5..d49989a97 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/config.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/config.go @@ -16,6 +16,7 @@ package notify import ( "reflect" + "time" "yunion.io/x/jsonutils" "yunion.io/x/pkg/gotypes" @@ -97,11 +98,12 @@ type ConfigManagerGetTypesOutput struct { } type SsNotification struct { - ContactType string - Topic string - Message string - Event SNotifyEvent - AdvanceDays int + ContactType string + Topic string + Message string + Event SNotifyEvent + AdvanceDays int + RobotUseTemplate bool } type SBatchSendParams struct { @@ -140,6 +142,14 @@ type SSendParams struct { Receiver SNotifyReceiver } +type SNotificationGroupSearchInput struct { + StartTime time.Time + EndTime time.Time + GroupKey string + ReceiverId string + ContactType string +} + type SendParams struct { Title string Message string @@ -148,12 +158,16 @@ type SendParams struct { Topic string Event string Receivers SNotifyReceiver - EmailMsg *SEmailMessage + EmailMsg SEmailMessage Header jsonutils.JSONObject Body jsonutils.JSONObject MsgKey string DomainId string RemoteTemplateParam SRemoteTemplateParam + GroupKey string + // minutes + GroupTimes uint + ReceiverId string } type SRemoteTemplateParam struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/const.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/const.go index fac3795ed..ef94534f1 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/const.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/const.go @@ -137,6 +137,7 @@ const ( TOPIC_RESOURCE_NET = "net" TOPIC_RESOURCE_SERVICE = "service" TOPIC_RESOURCE_VM_INTEGRITY_CHECK = "vm_integrity" + TOPIC_RESOURCE_PROJECT = "project" SUBSCRIBER_TYPE_ROLE = "role" SUBSCRIBER_TYPE_ROBOT = "robot" diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/event.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/event.go index 34cdc5b55..f9a3cfd29 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/event.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/event.go @@ -53,13 +53,19 @@ var ( ActionLock SAction = "lock" - ActionExceedCount SAction = "exceed_count" - ActionPasswordExpireSoon SAction = "password_expire_soon" - ActionWorkerBlock SAction = "woker_block" - ActionNetOutOfSync SAction = "net_out_of_sync" - ActionMysqlOutOfSync SAction = "mysql_out_of_sync" - ActionServiceAbnormal SAction = "service_abnormal" - ActionServerPanicked SAction = "server_panicked" + ActionExceedCount SAction = "exceed_count" + ActionPasswordExpireSoon SAction = "password_expire_soon" + ActionWorkerBlock SAction = "woker_block" + ActionNetOutOfSync SAction = "net_out_of_sync" + ActionMysqlOutOfSync SAction = "mysql_out_of_sync" + ActionServiceAbnormal SAction = "service_abnormal" + ActionServerPanicked SAction = "server_panicked" + ActionAttach SAction = "attach" + ActionDetach SAction = "detach" + ActionIsolatedDeviceCreate SAction = "isolated_device_create" + ActionIsolatedDeviceUpdate SAction = "isolated_device_update" + ActionIsolatedDeviceDelete SAction = "isolated_device_delete" + ActionStatusChanged SAction = "status_changed" ResultFailed SResult = "failed" ResultSucceed SResult = "succeed" diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/notification.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/notification.go index 67c926b3b..466c8921b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/notification.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/notification.go @@ -147,3 +147,24 @@ type FailedElem struct { ContactType string Reason string } + +type NotificationManagerContactNotifyInput struct { + // description: ids or names of receiver + // required: false + // example: {"adfb720ccdd34c638346ea4fa7a713a8"} + ReceiverIds []string `json:"receiver_ids"` + // description: contact types + // required: false + // example: email + ContactTypes []string `json:"contact_type"` + // description: resource details + // required: ture + + // description: ids of robot + // required: false + // example: {"adfb720ccdd34c638346ea4fa7a713a8"} + RobotIds []string `json:"robot_ids"` + RoleIds []string `json:"role_ids"` + Subject string + Body string +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/receiver.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/receiver.go index 4602efa12..a16f594c5 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/receiver.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/receiver.go @@ -206,3 +206,14 @@ type ReceiverGetSubscriptionOptions struct { Id string ShowDisabled bool } + +type SRoleContactInput struct { + RoleIds []string + Scope string + ProjectDomainId string + ProjectId string `json:"project_id"` +} + +type SRoleContactOutput struct { + ContactType []string +} diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/robot.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/robot.go index b80051b2c..3e42d9cbd 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/robot.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/robot.go @@ -16,6 +16,7 @@ package notify import ( "yunion.io/x/jsonutils" + "yunion.io/x/pkg/tristate" "yunion.io/x/onecloud/pkg/apis" ) @@ -32,10 +33,11 @@ type RobotCreateInput struct { Address string `json:"address"` // description: Language preference // example: zh_CN - Lang string `json:"lang"` - Header jsonutils.JSONObject `json:"header"` - Body jsonutils.JSONObject `json:"body"` - MsgKey string `json:"msg_key"` + Lang string `json:"lang"` + Header jsonutils.JSONObject `json:"header"` + Body jsonutils.JSONObject `json:"body"` + MsgKey string `json:"msg_key"` + UseTemplate tristate.TriState `json:"use_template"` } type RobotDetails struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/subscriber.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/subscriber.go index d55bc4aa3..531fe6437 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/subscriber.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/subscriber.go @@ -57,6 +57,8 @@ type SubscriberCreateInput struct { // description: scope // enum: system,domain Scope string + // minutes + GroupTimes *uint32 } type SubscriberChangeInput struct { @@ -72,6 +74,8 @@ type SubscriberChangeInput struct { // description: Robot(Id or Name) which is required when the type is 'robot' will Subscribe TopicID Robot string + // minutes + GroupTimes *uint32 } type SubscriberListInput struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/template.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/template.go index f45b3d0c1..55bdad6ad 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/template.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/template.go @@ -101,18 +101,18 @@ const ( PWD_EXPIRE_SOON_TITLE_EN = `{{- $d := .resource_details -}} {{ $d.account }}:Your password is valid and will expire soon` PWD_EXPIRE_SOON_CONTENT_CN = `{{- $d := .resource_details -}} - {{ $d.account }}:您的密码有效期将过,请及时登录平台更新密码。` + {{ $d.account }}:您的密码将在{{ .advance_days }} 天后失效,请及时登录平台更新密码。` PWD_EXPIRE_SOON_CONTENT_EN = `{{- $d := .resource_details -}} - {{ $d.account }}:Your password is valid and will expire soon. Please log in to the platform in time to update your password.` + {{ $d.account }}:Your password will expire in {{ .advance_days }} days. Please log in to the platform in time to update your password.` ) // 资源即将到期通知 const ( EXPIRED_RELEASE_TITLE_CN = `{{- $d := .resource_details -}} {{ $d.project }}项目的 - {{ .resource_type_display }}{{ $d.name }}到期前{{ .advance_days }}天通知` + {{ .resource_type_display }}{{ $d.name }}即将到期` EXPIRED_RELEASE_TITLE_EN = `{{- $d := .resource_details -}} - {{ .advance_days }} days notice before {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} expiration` + {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} expiration` EXPIRED_RELEASE_CONTENT_CN = `{{- $d := .resource_details -}} 您在{{ $d.project }}项目的 {{- if $d.brand -}} @@ -126,7 +126,7 @@ const ( {{- if $d.public_dns -}} ,外网地址为{{ $d.public_dns }}:{{ $d.public_connect_port }}的 {{- end -}} - {{ .resource_type_display }}{{ $d.name }}还有{{ .advance_days }}天就要到期释放,{{ if $d.auto_renew }}到期已开启自动续费,{{ end }}如有其它变更,请尽快前往控制台处理` + {{ .resource_type_display }}{{ $d.name }}将在{{ .advance_days }}天后到期释放,{{ if $d.auto_renew }}到期已开启自动续费,{{ end }}如有其它变更,请尽快前往控制台处理` EXPIRED_RELEASE_CONTENT_EN = `{{- $d := .resource_details -}} Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type }} {{ $d.name }} {{ if $d.public_dns -}} with external address {{ $d.public_dns }}:{{ $d.public_connect_port }} {{ end -}} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} will expire and be released in {{ .advance_days }} days. {{ if $d.auto_renew }}It has turned on automatic renewal. {{ end }}If there are other changes, please go to the console as soon as possible.` ) @@ -226,7 +226,7 @@ const ( ,请尽快前往控制台进行处理 {{- end -}}` COMMON_CONTENT_EN = `{{- $d := .resource_details -}} - Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type_display }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} has been {{ .action_display }} {{ .result_display }} + Your {{- if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type_display }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} has been {{ .action_display }} {{ .result_display }} {{- if eq .result "failed" -}} . And please go to the console as soon as possible to process. {{- end -}}` @@ -432,7 +432,7 @@ const ( // 资源变更通知 const ( UPDATE_TITLE_CN = `{{- $d := .resource_details -}} - if {{ $d.project }} + {{- if $d.project -}} {{ $d.project }}项目的 {{- end -}} {{ .resource_type_display }}{{ $d.name }}{{ .action_display }}成功` @@ -440,7 +440,7 @@ const ( The {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} {{ .action_display }} successfully` UPDATE_CONTENT_CN = `{{- $d := .resource_details -}} 您 - if {{$d.project }} + {{- if $d.project -}} 在{{ $d.project }}项目 {{- end -}} {{- if $d.brand -}} @@ -502,3 +502,32 @@ const ( WORK_BLOCK_CONTENT_EN = `{{- $d := .resource_details -}} The service: {{ d.service_name}} worker has been block 30 minutes.Please verify the service in time.` ) + +// TODO +// 资源挂载\卸载通知 +const ( +// ACTION_ATTACH_TITLE_CN = `{{- $d := .resource_details -}} +// 操作日志超出设置数量{{ $d.exceed_count }}条,当前{{ $d.current_count }}条` +// ACTION_ATTACH_TITLE_EN = `{{- $d := .resource_details -}} +// Action logs excced expected count {{ $d.exceed_count }}, current count is {{ $d.current_count }}` +// ACTION_ATTACH_CONTENT_CN = `{{- $d := .resource_details.action -}} +// 当前日志 ID: {{ $d.id }}` +// ACTION_ATTACH_CONTENT_EN = `{{- $d := .resource_details.action -}} +// Current log ID: {{ $d.id }}` +) + +const ( + STATUS_CHANGED_TITLE_CN = `{{- $d := .resource_details -}} + {{ $d.project }}项目的 + {{ .resource_type_display }}{{ $d.name }}状态发生变更` + STATUS_CHANGED_TITLE_EN = `{{- $d := .resource_details -}} + {{ .resource_type }} {{ $d.name }} {{ if $d.project -}} in project {{ $d.project }} {{ end -}} status changed` + STATUS_CHANGED_CONTENT_CN = `{{- $d := .resource_details -}} + 您在{{ $d.project }}项目的 + {{- if $d.brand -}} + {{ $d.brand }}平台 + {{- end -}} + {{ .resource_type_display }}{{ $d.name }}状态发生变更,原状态为:{{ $d.old_status }},变更后状态为{{$d.new_status }}` + STATUS_CHANGED_CONTENT_EN = `{{- $d := .resource_details -}} + Your {{ if $d.brand -}} {{ $d.brand }} {{ end -}} {{ .resource_type }} {{ $d.name }} status has changed,old status: {{ $d.old_status }},new_status: {{$d.new_status }}{{ if $d.project -}} in project {{ $d.project }} {{ end -}} ` +) diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/topic.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/topic.go index b0c327c85..aabe2591c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/topic.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/topic.go @@ -16,6 +16,41 @@ package notify import "yunion.io/x/onecloud/pkg/apis" +const ( + DefaultResourceCreateDelete = "resource create or delete" + DefaultResourceChangeConfig = "resource change config" + DefaultResourceUpdate = "resource update" + DefaultResourceReleaseDue1Day = "resource release due 1 day" + DefaultResourceReleaseDue3Day = "resource release due 3 day" + DefaultResourceReleaseDue30Day = "resource release due 30 day" + DefaultResourceRelease = "resource release" + DefaultScheduledTaskExecute = "scheduled task execute" + DefaultScalingPolicyExecute = "scaling policy execute" + DefaultSnapshotPolicyExecute = "snapshot policy execute" + DefaultResourceOperationFailed = "resource operation failed" + DefaultResourceSync = "resource sync" + DefaultSystemExceptionEvent = "system exception event" + DefaultChecksumTestFailed = "checksum test failed" + DefaultUserLock = "user lock" + DefaultActionLogExceedCount = "action log exceed count" + DefaultSyncAccountStatus = "cloud account sync status" + DefaultPasswordExpireDue1Day = "password expire due 1 day" + DefaultPasswordExpireDue7Day = "password expire due 7 day" + DefaultPasswordExpire = "password expire" + DefaultNetOutOfSync = "net out of sync" + DefaultMysqlOutOfSync = "mysql out of sync" + DefaultServiceAbnormal = "service abnormal" + DefaultServerPanicked = "server panicked" +) + +type TopicUpdateInput struct { + TitleCn string + TitleEn string + ContentCn string + ContentEn string + AdvanceDays []int `json:"advance_days"` +} + type TopicListInput struct { apis.StandaloneResourceListInput apis.EnabledResourceBaseListInput @@ -27,7 +62,8 @@ type TopicDetails struct { // description: resources managed // example: ["server", "eip", "disk"] - Resources []string `json:"resource_types"` + Resources []string `json:"resource_types"` + AdvanceDays []int `json:"advance_days"` } type PerformEnableInput struct { @@ -35,3 +71,6 @@ type PerformEnableInput struct { type PerformDisableInput struct { } + +type STopicGroupKeys []string +type TopicAdvanceDays []int diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/notify/zz_generated.model.go b/vendor/yunion.io/x/onecloud/pkg/apis/notify/zz_generated.model.go index 824ac1195..d63ca67b7 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/notify/zz_generated.model.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/notify/zz_generated.model.go @@ -40,6 +40,7 @@ type SEmailQueue struct { DestBcc string `json:"dest_bcc"` SessionId string `json:"session_id"` Content jsonutils.JSONObject `json:"content"` + MoreDetails jsonutils.JSONObject `json:"more_details"` ProjectId string `json:"project_id"` Project string `json:"project"` ProjectDomainId string `json:"project_domain_id"` @@ -90,6 +91,22 @@ type SNotification struct { SendTimes int `json:"send_times"` } +// SNotificationGroup is an autogenerated struct via yunion.io/x/onecloud/pkg/notify/models.SNotificationGroup. +type SNotificationGroup struct { + apis.SLogBase + GroupKey string `json:"group_key"` + Title string `json:"title"` + // swagger:ignore + Message string `json:"message"` + ReceiverId string `json:"receiver_id"` + Body jsonutils.JSONObject `json:"body"` + Header jsonutils.JSONObject `json:"header"` + MsgKey string `json:"msg_key"` + ContactType string `json:"contact_type"` + Contact string `json:"contact"` + DomainId string `json:"domain_id"` +} + // SNotificationLog is an autogenerated struct via yunion.io/x/onecloud/pkg/notify/models.SNotificationLog. type SNotificationLog struct { apis.SLogBase @@ -127,9 +144,13 @@ type SReceiver struct { type SRobot struct { apis.SSharableVirtualResourceBase apis.SEnabledResourceBase - Type string `json:"type"` - Address string `json:"address"` - Lang string `json:"lang"` + Type string `json:"type"` + Address string `json:"address"` + Lang string `json:"lang"` + Header jsonutils.JSONObject `json:"header"` + Body jsonutils.JSONObject `json:"body"` + MsgKey string `json:"msg_key"` + UseTemplate *bool `json:"use_template,omitempty"` } // SSubscriber is an autogenerated struct via yunion.io/x/onecloud/pkg/notify/models.SSubscriber. @@ -145,6 +166,8 @@ type SSubscriber struct { ResourceAttributionName string `json:"resource_attribution_name"` Scope string `json:"scope"` DomainId string `json:"domain_id"` + // minutes + GroupTimes uint32 `json:"group_times"` } // SSubscriberDis is an autogenerated struct via yunion.io/x/onecloud/pkg/notify/models.SSubscriberDis. @@ -176,14 +199,15 @@ type STemplate struct { // STopic is an autogenerated struct via yunion.io/x/onecloud/pkg/notify/models.STopic. type STopic struct { apis.SEnabledStatusStandaloneResourceBase - Type string `json:"type"` - Resources uint64 `json:"resources"` - Actions uint32 `json:"actions"` - Results *bool `json:"results,omitempty"` - AdvanceDays int `json:"advance_days"` - TitleCn string `json:"title_cn"` - TitleEn string `json:"title_en"` - ContentCn string `json:"content_cn"` - ContentEn string `json:"content_en"` - WebconsoleDisable *bool `json:"webconsole_disable,omitempty"` + Type string `json:"type"` + Resources uint64 `json:"resources"` + Actions uint32 `json:"actions"` + Results *bool `json:"results,omitempty"` + TitleCn string `json:"title_cn"` + TitleEn string `json:"title_en"` + ContentCn string `json:"content_cn"` + ContentEn string `json:"content_en"` + GroupKeys *STopicGroupKeys `json:"group_keys"` + AdvanceDays []int `json:"advance_days"` + WebconsoleDisable *bool `json:"webconsole_disable,omitempty"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/output.go b/vendor/yunion.io/x/onecloud/pkg/apis/output.go index 772858a27..b0a2840b4 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/output.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/output.go @@ -15,6 +15,7 @@ package apis import ( + "strings" "time" "yunion.io/x/onecloud/pkg/httperrors" @@ -133,6 +134,19 @@ type MetadataResourceInfo struct { Metadata map[string]string `json:"metadata"` } +func (self MetadataResourceInfo) GetMetricTags() map[string]string { + ret := map[string]string{} + for k, v := range self.Metadata { + if strings.HasPrefix(k, "user:") { + if strings.Contains(k, "login_key") || strings.Contains(v, "=") { + continue + } + ret[k] = v + } + } + return ret +} + type StatusDomainLevelUserResourceDetails struct { StatusDomainLevelResourceDetails @@ -176,6 +190,21 @@ type ProjectizedResourceInfo struct { // 资源归属项目的名称(向后兼容别名) // Deprecated Tenant string `json:"project" yunion-deprecated-by:"tenant"` + + ProjectMetadata map[string]string `json:"project_metadata"` +} + +func (self ProjectizedResourceInfo) GetMetricTags() map[string]string { + ret := map[string]string{} + for k, v := range self.ProjectMetadata { + if strings.HasPrefix(k, "user:") || strings.HasPrefix(k, "org:") { + if strings.Contains(v, "=") { + continue + } + ret["project:"+k] = v + } + } + return ret } type ScopedResourceBaseInfo struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/apis/zz_generated.model.go b/vendor/yunion.io/x/onecloud/pkg/apis/zz_generated.model.go index 9bd798785..89b321472 100644 --- a/vendor/yunion.io/x/onecloud/pkg/apis/zz_generated.model.go +++ b/vendor/yunion.io/x/onecloud/pkg/apis/zz_generated.model.go @@ -152,6 +152,7 @@ type SJointResourceBase struct { // SKeystoneCacheObject is an autogenerated struct via yunion.io/x/onecloud/pkg/cloudcommon/db.SKeystoneCacheObject. type SKeystoneCacheObject struct { SStandaloneResourceBase + SPendingDeletedBase DomainId string `json:"domain_id"` Domain string `json:"domain"` Lang string `json:"lang"` @@ -212,6 +213,14 @@ type SOpsLog struct { OwnerProjectId string `json:"owner_tenant_id"` } +// SPendingDeletedBase is an autogenerated struct via yunion.io/x/onecloud/pkg/cloudcommon/db.SPendingDeletedBase. +type SPendingDeletedBase struct { + // 资源放入回收站时间 + PendingDeletedAt time.Time `json:"pending_deleted_at"` + // 资源是否处于回收站中 + PendingDeleted bool `json:"pending_deleted"` +} + // SProjectizedResourceBase is an autogenerated struct via yunion.io/x/onecloud/pkg/cloudcommon/db.SProjectizedResourceBase. type SProjectizedResourceBase struct { SDomainizedResourceBase @@ -354,15 +363,12 @@ type SVirtualJointResourceBase struct { type SVirtualResourceBase struct { SStatusStandaloneResourceBase SProjectizedResourceBase + SPendingDeletedBase // 云上同步资源是否在本地被更改过配置, local: 更改过, cloud: 未更改过 // example: local ProjectSrc string `json:"project_src"` // 是否是系统资源 IsSystem bool `json:"is_system"` - // 资源放入回收站时间 - PendingDeletedAt time.Time `json:"pending_deleted_at"` - // 资源是否处于回收站中 - PendingDeleted bool `json:"pending_deleted"` // 资源是否被冻结 Freezed bool `json:"freezed"` } diff --git a/vendor/yunion.io/x/onecloud/pkg/appsrv/appsrv.go b/vendor/yunion.io/x/onecloud/pkg/appsrv/appsrv.go index 536ae9375..f591bb697 100644 --- a/vendor/yunion.io/x/onecloud/pkg/appsrv/appsrv.go +++ b/vendor/yunion.io/x/onecloud/pkg/appsrv/appsrv.go @@ -19,9 +19,12 @@ import ( "bytes" "context" "crypto/sha1" + "crypto/tls" "encoding/base64" "fmt" + "io" "io/ioutil" + olog "log" "math/rand" "net" "net/http" @@ -73,6 +76,8 @@ type Application struct { exception func(method, path string, body jsonutils.JSONObject, err error) isTLS bool + + enableProfiling bool } const ( @@ -471,6 +476,11 @@ func (app *Application) initServer(addr string) *http.Server { } */ + cipherSuites := []uint16{} + for _, suite := range tls.CipherSuites() { + cipherSuites = append(cipherSuites, suite.ID) + } + s := &http.Server{ Addr: addr, Handler: app, @@ -479,6 +489,13 @@ func (app *Application) initServer(addr string) *http.Server { ReadHeaderTimeout: app.readHeaderTimeout, WriteTimeout: app.writeTimeout, MaxHeaderBytes: 1 << 20, + // fix aliyun elb healt check tls error + // issue like: https://github.com/megaease/easegress/issues/481 + ErrorLog: olog.New(io.Discard, "", olog.LstdFlags), + + TLSConfig: &tls.Config{ + CipherSuites: cipherSuites, + }, } return s } @@ -553,7 +570,9 @@ func (app *Application) ListenAndServeTLSWithCleanup2(addr string, certFile, key httpSrv := app.initServer(addr) if isMaster { app.addDefaultHandlers() - AddPProfHandler("", app) + if app.enableProfiling { + addPProfHandler("", app) + } app.httpServer = httpSrv app.registerCleanShutdown(app.httpServer, onStop) } else { @@ -665,3 +684,7 @@ func FetchEnv(ctx context.Context, w http.ResponseWriter, r *http.Request) (para func (app *Application) GetContext() context.Context { return app.context } + +func (app *Application) EnableProfiling() { + app.enableProfiling = true +} diff --git a/vendor/yunion.io/x/onecloud/pkg/appsrv/handlers.go b/vendor/yunion.io/x/onecloud/pkg/appsrv/handlers.go index 9dec8a034..889b7e32b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/appsrv/handlers.go +++ b/vendor/yunion.io/x/onecloud/pkg/appsrv/handlers.go @@ -51,7 +51,7 @@ func CORSHandler(ctx context.Context, w http.ResponseWriter, r *http.Request) { } }*/ -func AddPProfHandler(prefix string, app *Application) { +func addPProfHandler(prefix string, app *Application) { pp := "/debug/pprof" if prefix != "" { prefix = fmt.Sprintf("%s/%s", prefix, pp) diff --git a/vendor/yunion.io/x/onecloud/pkg/appsrv/send.go b/vendor/yunion.io/x/onecloud/pkg/appsrv/send.go index ba301ec81..d0b0c519b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/appsrv/send.go +++ b/vendor/yunion.io/x/onecloud/pkg/appsrv/send.go @@ -22,10 +22,9 @@ import ( "strconv" "time" - "github.com/pkg/errors" - "yunion.io/x/jsonutils" "yunion.io/x/log" + "yunion.io/x/pkg/errors" "yunion.io/x/pkg/gotypes" ) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/app/app.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/app/app.go index 96b97fe6c..52bb14345 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/app/app.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/app/app.go @@ -37,6 +37,9 @@ func InitApp(options *common_options.BaseOptions, dbAccess bool) *appsrv.Applica // if dbConn != nil { // app.SetContext(appsrv.APP_CONTEXT_KEY_DB, dbConn) //} + if options.EnableAppProfiling { + app.EnableProfiling() + } return app } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/db.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/db.go index 3deb62f28..732893bb7 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/db.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/db.go @@ -18,4 +18,21 @@ var ( QueryOffsetOptimization = false OpsLogWithClickhouse = false + + defaultDBDialect string + + defaultDBConnectionString string ) + +func SetDefaultDB(dialect, connStr string) { + defaultDBDialect = dialect + defaultDBConnectionString = connStr +} + +func DefaultDBDialect() string { + return defaultDBDialect +} + +func DefaultDBConnStr() string { + return defaultDBConnectionString +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/deployer.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/deployer.go index d7526f201..c1cf65c2f 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/deployer.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/deployer.go @@ -16,6 +16,8 @@ package consts var ( deployTempDir = "" + + allowVmSELinux = false ) func DeployTempDir() string { @@ -25,3 +27,11 @@ func DeployTempDir() string { func SetDeployTempDir(dir string) { deployTempDir = dir } + +func AllowVmSELinux() bool { + return allowVmSELinux +} + +func SetAllowVmSELinux(allow bool) { + allowVmSELinux = allow +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/resource_translate.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/resource_translate.go index 7b5e4fddc..4dcfba825 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/resource_translate.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/consts/resource_translate.go @@ -1,3 +1,17 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package consts import ( diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/cronman/cronman.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/cronman/cronman.go index a54c9e74f..e862875f6 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/cronman/cronman.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/cronman/cronman.go @@ -25,12 +25,14 @@ import ( "yunion.io/x/log" "yunion.io/x/pkg/appctx" "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/util/version" "yunion.io/x/onecloud/pkg/appsrv" "yunion.io/x/onecloud/pkg/cloudcommon/consts" "yunion.io/x/onecloud/pkg/cloudcommon/elect" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" + "yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf" ) var ( @@ -444,10 +446,11 @@ func (job *SCronJob) runJobInWorker(isStart bool, startTime time.Time) { if r := recover(); r != nil { log.Errorf("CronJob task %s run error: %s", job.Name, r) debug.PrintStack() + yunionconf.BugReport.SendBugReport(context.Background(), version.GetShortString(), string(debug.Stack()), errors.Errorf("%s", r)) } }() - log.Debugf("Cron job: %s started, startTime: %s", job.Name, startTime) + log.Debugf("Cron job: %s started, startTime: %s", job.Name, startTime.Format(time.RFC3339)) ctx := context.Background() ctx = context.WithValue(ctx, appctx.APP_CONTEXT_KEY_APPNAME, fmt.Sprintf("%s/cron-service", consts.GetServiceName())) ctx = context.WithValue(ctx, appctx.APP_CONTEXT_KEY_TASKNAME, fmt.Sprintf("%s-%d", job.Name, time.Now().Unix())) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/database.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/database.go index 939732408..80b5f1e70 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/database.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/database.go @@ -17,6 +17,7 @@ package cloudcommon import ( "context" "database/sql" + "strings" "time" "github.com/mattn/go-sqlite3" @@ -25,6 +26,7 @@ import ( "yunion.io/x/log" "yunion.io/x/pkg/errors" "yunion.io/x/sqlchemy" + _ "yunion.io/x/sqlchemy/backends" noapi "yunion.io/x/onecloud/pkg/apis/notify" "yunion.io/x/onecloud/pkg/cloudcommon/consts" @@ -34,6 +36,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/informer" "yunion.io/x/onecloud/pkg/cloudcommon/notifyclient" common_options "yunion.io/x/onecloud/pkg/cloudcommon/options" + "yunion.io/x/onecloud/pkg/util/dbutils" ) func InitDB(options *common_options.DBOptions) { @@ -42,6 +45,8 @@ func InitDB(options *common_options.DBOptions) { sqlchemy.DEBUG_SQLCHEMY = true } + log.Infof("Registered SQL drivers: %s", strings.Join(sql.Drivers(), ", ")) + consts.QueryOffsetOptimization = options.QueryOffsetOptimization if options.HistoricalUniqueName { @@ -63,6 +68,10 @@ func InitDB(options *common_options.DBOptions) { } backend := sqlchemy.MySQLBackend switch dialect { + case "dm": + backend = sqlchemy.DamengBackend + dialect = "dm" + sqlStr = "dm://" + sqlStr case "sqlite3": backend = sqlchemy.SQLiteBackend dialect = "sqlite3_with_extensions" @@ -77,6 +86,8 @@ func InitDB(options *common_options.DBOptions) { log.Fatalf("cannot use clickhouse as primary database") } log.Infof("database dialect: %s sqlStr: %s", dialect, sqlStr) + // save configuration to consts + consts.SetDefaultDB(dialect, sqlStr) dbConn, err := sql.Open(dialect, sqlStr) if err != nil { panic(err) @@ -87,11 +98,11 @@ func InitDB(options *common_options.DBOptions) { if err == nil { // connect to clickcloud // force convert sqlstr from clickhouse v2 to v1 - sqlStr, err = clickhouseSqlStrV2ToV1(sqlStr) + sqlStr, err = dbutils.ClickhouseSqlStrV2ToV1(sqlStr) if err != nil { log.Fatalf("fail to convert clickhouse sqlstr from v2 to v1: %s", err) } - err = validateClickhouseV1Str(sqlStr) + err = dbutils.ValidateClickhouseV1Str(sqlStr) if err != nil { log.Fatalf("invalid clickhouse sqlstr: %s", err) } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/apply_manager_method.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/apply_manager_method.go index a50d8722e..e653e3367 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/apply_manager_method.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/apply_manager_method.go @@ -68,10 +68,11 @@ func ApplyQueryDistinctExtraField( type FilterByOwnerProvider interface { Keyword() string KeywordPlural() string - FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery + FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery } func ApplyFilterByOwner( + ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, @@ -79,7 +80,7 @@ func ApplyFilterByOwner( managers ...FilterByOwnerProvider, ) *sqlchemy.SQuery { for _, manager := range managers { - q = manager.FilterByOwner(q, manager, userCred, owner, scope) + q = manager.FilterByOwner(ctx, q, manager, userCred, owner, scope) } return q } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/caller.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/caller.go index 12b1ffd73..1e44a2a28 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/caller.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/caller.go @@ -253,6 +253,22 @@ func ValidateCreateData(funcName string, manager IModelManager, ctx context.Cont return mergeInputOutputData(data, resVal), nil } +func ExpandBatchCreateData(manager IModelManager, ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict, index int) (*jsonutils.JSONDict, error) { + funcName := "ExpandBatchCreateData" + ret, err := call(manager, funcName, ctx, userCred, ownerId, query, data, index) + if err != nil { + return nil, errors.Wrapf(err, "call %s", funcName) + } + if len(ret) != 2 { + return nil, httperrors.NewInternalServerError("Invald %s return value", funcName) + } + resVal := ret[0] + if err := ValueToError(ret[1]); err != nil { + return nil, errors.Wrap(err, "ValueToError") + } + return mergeInputOutputData(data, resVal), nil +} + func ListItemFilter(manager IModelManager, ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (*sqlchemy.SQuery, error) { return _callListQueryFilter(manager, "ListItemFilter", ctx, q, userCred, query) } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/context.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/context.go new file mode 100644 index 000000000..075581cf4 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/context.go @@ -0,0 +1,52 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package db + +import ( + "context" + + "yunion.io/x/pkg/appctx" +) + +const ( + APP_CONTEXT_KEY_DB_METADATA_MANAGER = appctx.AppContextKey("db_metadata_manager") + APP_CONTEXT_KEY_DB_TENANT_CACHE_MANAGER = appctx.AppContextKey("db_tenant_cache_manager") +) + +func GetMetadaManagerInContext(ctx context.Context) *SMetadataManager { + val := ctx.Value(APP_CONTEXT_KEY_DB_METADATA_MANAGER) + if val != nil { + return val.(*SMetadataManager) + } else { + return Metadata + } +} + +func SaveMetadaManagerInContext(ctx context.Context, manager *SMetadataManager) context.Context { + return context.WithValue(ctx, APP_CONTEXT_KEY_DB_METADATA_MANAGER, manager) +} + +func GetTenantCacheManagerInContext(ctx context.Context) *STenantCacheManager { + val := ctx.Value(APP_CONTEXT_KEY_DB_TENANT_CACHE_MANAGER) + if val != nil { + return val.(*STenantCacheManager) + } else { + return TenantCacheManager + } +} + +func SaveTenantCacheManagerInContext(ctx context.Context, manager *STenantCacheManager) context.Context { + return context.WithValue(ctx, APP_CONTEXT_KEY_DB_TENANT_CACHE_MANAGER, manager) +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_dispatcher.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_dispatcher.go index cb94e845f..b783d363d 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_dispatcher.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_dispatcher.go @@ -253,7 +253,8 @@ func ListItemQueryFilters(manager IModelManager, return listItemQueryFilters(manager, ctx, q, userCred, query, action, false) } -func listItemQueryFiltersRaw(manager IModelManager, +func listItemQueryFiltersRaw( + manager IModelManager, ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject, @@ -266,12 +267,15 @@ func listItemQueryFiltersRaw(manager IModelManager, return nil, httperrors.NewGeneralError(err) } - query.(*jsonutils.JSONDict).Update(policyTagFilters.Json()) + if !policyTagFilters.IsEmpty() { + query.(*jsonutils.JSONDict).Update(policyTagFilters.Json()) + log.Debugf("policyTagFilers: %s", query) + } if !useRawQuery { // Specifically for joint resource, these filters will exclude // deleted resources by joining with master/slave tables - q = manager.FilterByOwner(q, manager, userCred, ownerId, queryScope) + q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, queryScope) q = manager.FilterBySystemAttributes(q, userCred, query, queryScope) q = manager.FilterByHiddenSystemAttributes(q, userCred, query, queryScope) } @@ -573,6 +577,12 @@ func ListItems(manager IModelManager, ctx context.Context, userCred mcclient.Tok pagingOrderStr, _ := query.GetString("paging_order") pagingOrder := sqlchemy.QueryOrderType(strings.ToUpper(pagingOrderStr)) + // export data only + exportLimit, err := query.Int("export_limit") + if query.Contains("export_keys") && err == nil { + limit = exportLimit + } + var ( q *sqlchemy.SQuery useRawQuery bool @@ -581,7 +591,7 @@ func ListItems(manager IModelManager, ctx context.Context, userCred mcclient.Tok // query senders are responsible for clear up other constraint // like setting "pendinge_delete" to "all" queryDelete, _ := query.GetString("delete") - if queryDelete == "all" && userCred.HasSystemAdminPrivilege() { + if queryDelete == "all" && policy.PolicyManager.Allow(rbacscope.ScopeSystem, userCred, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionList).Result.IsAllow() { useRawQuery = true } } @@ -672,11 +682,7 @@ func ListItems(manager IModelManager, ctx context.Context, userCred mcclient.Tok } q = union.Query() } else { - if useRawQuery { - q = manager.RawQuery() - } else { - q = manager.Query() - } + q = manager.NewQuery(ctx, userCred, queryDict, useRawQuery) } q, err = listItemQueryFiltersRaw(manager, ctx, q, userCred, queryDict, policy.PolicyActionList, true, useRawQuery) @@ -703,12 +709,6 @@ func ListItems(manager IModelManager, ctx context.Context, userCred mcclient.Tok limit = maxLimit } - // export data only - exportLimit, err := query.Int("export_limit") - if query.Contains("export_keys") && err == nil { - limit = exportLimit - } - // orders defined in pagingConf should have the highest priority if pagingConf != nil { for _, f := range pagingConf.MarkerFields { @@ -912,6 +912,7 @@ func (dispatcher *DBModelDispatcher) List(ctx context.Context, query jsonutils.J userCred := fetchUserCredential(ctx) manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query) + ctx = manager.PrepareQueryContext(ctx, userCred, query) // list详情 items, err := ListItems(manager, ctx, userCred, query, ctxIds) if err != nil { @@ -974,24 +975,23 @@ func getItemDetails(manager IModelManager, item IModel, ctx context.Context, use return nil, httperrors.NewInternalServerError("FetchCustomizeColumns returns incorrect results(expect 1 actual %d)", len(extraRows)) } -func (dispatcher *DBModelDispatcher) tryGetModelProperty(ctx context.Context, property string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { - userCred := fetchUserCredential(ctx) +func tryGetModelProperty(manager IModelManager, ctx context.Context, userCred mcclient.TokenCredential, property string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { funcName := fmt.Sprintf("GetProperty%s", utils.Kebab2Camel(property, "-")) - manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query) + modelValue := reflect.ValueOf(manager) - params := []interface{}{ctx, userCred, query} + // params := []interface{}{ctx, userCred, query} funcValue := modelValue.MethodByName(funcName) if !funcValue.IsValid() || funcValue.IsNil() { return nil, nil } - _, _, err, _ := FetchCheckQueryOwnerScope(ctx, userCred, query, manager, policy.PolicyActionList, true) - if err != nil { - return nil, err - } + // _, _, err, _ := FetchCheckQueryOwnerScope(ctx, userCred, query, manager, policy.PolicyActionList, true) + // if err != nil { + // return nil, err + // } - outs, err := callFunc(funcValue, funcName, params...) + outs, err := callFunc(funcValue, funcName, ctx, userCred, query) if err != nil { return nil, httperrors.NewInternalServerError("reflect call %s fail %s", funcName, err) } @@ -1016,8 +1016,9 @@ func (dispatcher *DBModelDispatcher) Get(ctx context.Context, idStr string, quer // log.Debugf("Get %s", idStr) userCred := fetchUserCredential(ctx) manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query) + ctx = manager.PrepareQueryContext(ctx, userCred, query) - data, err := dispatcher.tryGetModelProperty(ctx, idStr, query) + data, err := tryGetModelProperty(manager, ctx, userCred, idStr, query) if err != nil { return nil, err } else if data != nil { @@ -1054,6 +1055,8 @@ func (dispatcher *DBModelDispatcher) Get(ctx context.Context, idStr string, quer func (dispatcher *DBModelDispatcher) GetSpecific(ctx context.Context, idStr string, spec string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { userCred := fetchUserCredential(ctx) manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query) + ctx = manager.PrepareQueryContext(ctx, userCred, query) + model, err := fetchItem(manager, ctx, userCred, idStr, query) if err == sql.ErrNoRows { return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), idStr) @@ -1284,7 +1287,7 @@ func _doCreateItem( uniqValues := manager.FetchUniqValues(ctx, dataDict) name, _ := dataDict.GetString("name") if len(name) > 0 { - err = NewNameValidator(manager, ownerId, name, uniqValues) + err = NewNameValidator(ctx, manager, ownerId, name, uniqValues) if err != nil { return nil, err } @@ -1428,11 +1431,18 @@ func (dispatcher *DBModelDispatcher) Create(ctx context.Context, query jsonutils OpsLog.LogEvent(model, ACT_CREATE, notes, userCred) logclient.AddActionLogWithContext(ctx, model, logclient.ACT_CREATE, notes, userCred, true) } - manager.OnCreateComplete(ctx, []IModel{model}, userCred, ownerId, query, data) + manager.OnCreateComplete(ctx, []IModel{model}, userCred, ownerId, query, []jsonutils.JSONObject{data}) return getItemDetails(manager, model, ctx, userCred, query) } -func expandMultiCreateParams(manager IModelManager, data jsonutils.JSONObject, count int) ([]jsonutils.JSONObject, error) { +func expandMultiCreateParams(manager IModelManager, + ctx context.Context, + userCred mcclient.TokenCredential, + ownerId mcclient.IIdentityProvider, + query jsonutils.JSONObject, + data jsonutils.JSONObject, + count int, +) ([]jsonutils.JSONObject, error) { jsonDict, ok := data.(*jsonutils.JSONDict) if !ok { return nil, httperrors.NewInputParameterError("body is not a json?") @@ -1450,7 +1460,16 @@ func expandMultiCreateParams(manager IModelManager, data jsonutils.JSONObject, c } ret := make([]jsonutils.JSONObject, count) for i := 0; i < count; i += 1 { - ret[i] = jsonDict.Copy() + input, err := ExpandBatchCreateData(manager, ctx, userCred, ownerId, query, jsonDict.Copy(), i) + if err != nil { + if errors.Cause(err) == MethodNotFoundError { + ret[i] = jsonDict.Copy() + } else { + return nil, errors.Wrap(err, "ExpandBatchCreateData") + } + } else { + ret[i] = input + } } return ret, nil } @@ -1508,7 +1527,7 @@ func (dispatcher *DBModelDispatcher) BatchCreate(ctx context.Context, query json return nil, errors.Wrap(err, "manager.BatchPreValidate") } - multiData, err = expandMultiCreateParams(manager, data, count) + multiData, err = expandMultiCreateParams(manager, ctx, userCred, ownerId, query, data, count) if err != nil { return nil, errors.Wrap(err, "expandMultiCreateParams") } @@ -1517,6 +1536,7 @@ func (dispatcher *DBModelDispatcher) BatchCreate(ctx context.Context, query json ret := make([]sCreateResult, len(multiData)) for i := range multiData { var model IModel + log.Debugf("batchCreateDoCreateItem %d %s", i, multiData[i].String()) model, err = batchCreateDoCreateItem(manager, ctx, userCred, ownerId, query, multiData[i], i+1) if err == nil { ret[i] = sCreateResult{model: model, err: nil} @@ -1576,7 +1596,7 @@ func (dispatcher *DBModelDispatcher) BatchCreate(ctx context.Context, query json lockman.LockClass(ctx, manager, GetLockClassKey(manager, ownerId)) defer lockman.ReleaseClass(ctx, manager, GetLockClassKey(manager, ownerId)) - manager.OnCreateComplete(ctx, models, userCred, ownerId, query, multiData[0]) + manager.OnCreateComplete(ctx, models, userCred, ownerId, query, multiData) } return results, nil } @@ -1728,11 +1748,11 @@ func reflectDispatcherInternal( } else { if model != nil { if _, ok := model.(IStandaloneModel); ok { - Metadata.rawSetValues(ctx, model.Keyword(), model.GetId(), tagutils.Tagset2MapString(result.ObjectTags.Flattern()), false, "") + Metadata.rawSetValues(ctx, model.Keyword(), model.GetId(), tagutils.TagsetMap2MapString(result.ObjectTags.Flattern()), false, "") if model.Keyword() == "project" { - Metadata.rawSetValues(ctx, model.Keyword(), model.GetId(), tagutils.Tagset2MapString(result.ProjectTags.Flattern()), false, "") + Metadata.rawSetValues(ctx, model.Keyword(), model.GetId(), tagutils.TagsetMap2MapString(result.ProjectTags.Flattern()), false, "") } else if model.Keyword() == "domain" { - Metadata.rawSetValues(ctx, model.Keyword(), model.GetId(), tagutils.Tagset2MapString(result.DomainTags.Flattern()), false, "") + Metadata.rawSetValues(ctx, model.Keyword(), model.GetId(), tagutils.TagsetMap2MapString(result.DomainTags.Flattern()), false, "") } } } @@ -1796,6 +1816,9 @@ func (dispatcher *DBModelDispatcher) FetchUpdateHeaderData(ctx context.Context, func (dispatcher *DBModelDispatcher) Update(ctx context.Context, idStr string, query jsonutils.JSONObject, data jsonutils.JSONObject, ctxIds []dispatcher.SResourceContext) (jsonutils.JSONObject, error) { userCred := fetchUserCredential(ctx) + if data == nil { + data = jsonutils.NewDict() + } manager := dispatcher.manager.GetMutableInstance(ctx, userCred, query, data) model, err := fetchItem(manager, ctx, userCred, idStr, nil) if err == sql.ErrNoRows { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_joint_dispatcher.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_joint_dispatcher.go index 14cc345f0..d3cd414eb 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_joint_dispatcher.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/db_joint_dispatcher.go @@ -70,19 +70,22 @@ func (dispatcher *DBJointModelDispatcher) ListMasterDescendent(ctx context.Conte } } - model, err := fetchItem(dispatcher.JointModelManager().GetMasterManager(), ctx, userCred, idStr, query) + manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query).(IJointModelManager) + ctx = manager.PrepareQueryContext(ctx, userCred, query) + + model, err := fetchItem(manager.GetMasterManager(), ctx, userCred, idStr, query) if err == sql.ErrNoRows { - return nil, httperrors.NewResourceNotFoundError2(dispatcher.JointModelManager().GetMasterManager().Keyword(), idStr) + return nil, httperrors.NewResourceNotFoundError2(manager.GetMasterManager().Keyword(), idStr) } else if err != nil { return nil, err } - queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetMasterManager().Keyword())) - queryDict.Add(jsonutils.NewString(model.GetId()), dispatcher.JointModelManager().GetMasterFieldName()) - if len(dispatcher.JointModelManager().GetMasterManager().Alias()) > 0 { - queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetMasterManager().Alias())) + queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetMasterManager().Keyword())) + queryDict.Add(jsonutils.NewString(model.GetId()), manager.GetMasterFieldName()) + if len(manager.GetMasterManager().Alias()) > 0 { + queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetMasterManager().Alias())) } - return dispatcher._listJoint(ctx, userCred, model.(IStandaloneModel), queryDict) + return _listJoint(manager, ctx, userCred, model.(IStandaloneModel), queryDict) } func (dispatcher *DBJointModelDispatcher) ListSlaveDescendent(ctx context.Context, idStr string, query jsonutils.JSONObject) (*printutils.ListResult, error) { @@ -97,23 +100,26 @@ func (dispatcher *DBJointModelDispatcher) ListSlaveDescendent(ctx context.Contex } } - model, err := fetchItem(dispatcher.JointModelManager().GetSlaveManager(), ctx, userCred, idStr, query) + manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query).(IJointModelManager) + ctx = manager.PrepareQueryContext(ctx, userCred, query) + + model, err := fetchItem(manager.GetSlaveManager(), ctx, userCred, idStr, query) if err == sql.ErrNoRows { - return nil, httperrors.NewResourceNotFoundError2(dispatcher.JointModelManager().GetSlaveManager().Keyword(), idStr) + return nil, httperrors.NewResourceNotFoundError2(manager.GetSlaveManager().Keyword(), idStr) } else if err != nil { return nil, err } - queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetSlaveManager().Keyword())) - queryDict.Add(jsonutils.NewString(model.GetId()), dispatcher.JointModelManager().GetSlaveFieldName()) - if len(dispatcher.JointModelManager().GetSlaveManager().Alias()) > 0 { - queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", dispatcher.JointModelManager().GetSlaveManager().Alias())) + queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetSlaveManager().Keyword())) + queryDict.Add(jsonutils.NewString(model.GetId()), manager.GetSlaveFieldName()) + if len(manager.GetSlaveManager().Alias()) > 0 { + queryDict.Add(jsonutils.NewString(model.GetId()), fmt.Sprintf("%s_id", manager.GetSlaveManager().Alias())) } - return dispatcher._listJoint(ctx, userCred, model.(IStandaloneModel), queryDict) + return _listJoint(manager, ctx, userCred, model.(IStandaloneModel), queryDict) } -func (dispatcher *DBJointModelDispatcher) _listJoint(ctx context.Context, userCred mcclient.TokenCredential, ctxModel IStandaloneModel, queryDict jsonutils.JSONObject) (*printutils.ListResult, error) { - items, err := ListItems(dispatcher.JointModelManager(), ctx, userCred, queryDict, nil) +func _listJoint(manager IModelManager, ctx context.Context, userCred mcclient.TokenCredential, ctxModel IStandaloneModel, queryDict jsonutils.JSONObject) (*printutils.ListResult, error) { + items, err := ListItems(manager, ctx, userCred, queryDict, nil) if err != nil { log.Errorf("Fail to list items: %s", err) return nil, httperrors.NewGeneralError(err) @@ -121,16 +127,16 @@ func (dispatcher *DBJointModelDispatcher) _listJoint(ctx context.Context, userCr return items, nil } -func fetchJointItem(dispatcher *DBJointModelDispatcher, ctx context.Context, userCred mcclient.TokenCredential, id1 string, id2 string, query jsonutils.JSONObject) (IStandaloneModel, IStandaloneModel, IJointModel, error) { - master, err := fetchItem(dispatcher.JointModelManager().GetMasterManager(), ctx, userCred, id1, query) +func fetchJointItem(manager IJointModelManager, ctx context.Context, userCred mcclient.TokenCredential, id1 string, id2 string, query jsonutils.JSONObject) (IStandaloneModel, IStandaloneModel, IJointModel, error) { + master, err := fetchItem(manager.GetMasterManager(), ctx, userCred, id1, query) if err != nil { return nil, nil, nil, httperrors.NewGeneralError(err) } - slave, err := fetchItem(dispatcher.JointModelManager().GetSlaveManager(), ctx, userCred, id2, query) + slave, err := fetchItem(manager.GetSlaveManager(), ctx, userCred, id2, query) if err != nil { return nil, nil, nil, httperrors.NewGeneralError(err) } - item, err := FetchJointByIds(dispatcher.JointModelManager(), master.GetId(), slave.GetId(), query) + item, err := FetchJointByIds(manager, master.GetId(), slave.GetId(), query) if err != nil { return nil, nil, nil, err } @@ -139,9 +145,11 @@ func fetchJointItem(dispatcher *DBJointModelDispatcher, ctx context.Context, use func (dispatcher *DBJointModelDispatcher) Get(ctx context.Context, id1 string, id2 string, query jsonutils.JSONObject) (jsonutils.JSONObject, error) { userCred := fetchUserCredential(ctx) - manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query) - _, _, item, err := fetchJointItem(dispatcher, ctx, userCred, id1, id2, query) + manager := dispatcher.manager.GetImmutableInstance(ctx, userCred, query).(IJointModelManager) + ctx = manager.PrepareQueryContext(ctx, userCred, query) + + _, _, item, err := fetchJointItem(manager, ctx, userCred, id1, id2, query) if err == sql.ErrNoRows { return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), id1+"-"+id2) } else if err != nil { @@ -151,7 +159,7 @@ func (dispatcher *DBJointModelDispatcher) Get(ctx context.Context, id1 string, i if err != nil { return nil, err } - return getItemDetails(dispatcher.JointModelManager(), item, ctx, userCred, query) + return getItemDetails(manager, item, ctx, userCred, query) } func attachItems( @@ -190,7 +198,8 @@ func attachItems( } item.PostCreate(ctx, userCred, nil, query, data) OpsLog.LogAttachEvent(ctx, master, slave, userCred, jsonutils.Marshal(item)) - dispatcher.manager.OnCreateComplete(ctx, []IModel{item}, userCred, nil, query, data) + dispatcher.manager.OnCreateComplete(ctx, []IModel{item}, userCred, nil, query, []jsonutils.JSONObject{data}) + return getItemDetails(dispatcher.JointModelManager(), item, ctx, userCred, query) } @@ -213,7 +222,7 @@ func (dispatcher *DBJointModelDispatcher) Attach(ctx context.Context, id1 string } } - _, _, joinItem, err := fetchJointItem(dispatcher, ctx, userCred, master.GetId(), slave.GetId(), query) + _, _, joinItem, err := fetchJointItem(dispatcher.JointModelManager(), ctx, userCred, master.GetId(), slave.GetId(), query) if err != nil && err != sql.ErrNoRows { return nil, err } @@ -223,7 +232,11 @@ func (dispatcher *DBJointModelDispatcher) Attach(ctx context.Context, id1 string lockman.LockJointObject(ctx, master, slave) defer lockman.ReleaseJointObject(ctx, master, slave) - return attachItems(dispatcher, master.(IStandaloneModel), slave.(IStandaloneModel), ctx, userCred, query, data) + resp, err := attachItems(dispatcher, master.(IStandaloneModel), slave.(IStandaloneModel), ctx, userCred, query, data) + if err == nil { + CallCustomizeNotifyHook(ctx, userCred, ACT_ATTACH, master, slave.GetShortDesc(ctx)) + } + return resp, err } func (dispatcher *DBJointModelDispatcher) Update(ctx context.Context, id1 string, id2 string, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { @@ -232,7 +245,7 @@ func (dispatcher *DBJointModelDispatcher) Update(ctx context.Context, id1 string manager := dispatcher.manager.GetMutableInstance(ctx, userCred, query, data) // 获取对象与关联表(such as guestdisks_tbl) - master, slave, item, err := fetchJointItem(dispatcher, ctx, userCred, id1, id2, query) + master, slave, item, err := fetchJointItem(dispatcher.JointModelManager(), ctx, userCred, id1, id2, query) if err == sql.ErrNoRows { if jsonutils.QueryBoolean(query, "auto_create", false) { queryDict := query.(*jsonutils.JSONDict) @@ -260,7 +273,7 @@ func (dispatcher *DBJointModelDispatcher) Detach(ctx context.Context, id1 string userCred := fetchUserCredential(ctx) manager := dispatcher.manager.GetMutableInstance(ctx, userCred, query, data) - master, slave, item, err := fetchJointItem(dispatcher, ctx, userCred, id1, id2, query) + master, slave, item, err := fetchJointItem(dispatcher.JointModelManager(), ctx, userCred, id1, id2, query) if err == sql.ErrNoRows { return nil, httperrors.NewResourceNotFoundError2(manager.Keyword(), id1+"-"+id2) } else if err != nil { @@ -281,6 +294,7 @@ func (dispatcher *DBJointModelDispatcher) Detach(ctx context.Context, id1 string obj, err := deleteItem(dispatcher.JointModelManager(), item, ctx, userCred, query, data) if err == nil { + CallCustomizeNotifyHook(ctx, userCred, ACT_DETACH, master, slave.GetShortDesc(ctx)) OpsLog.LogDetachEvent(ctx, JointMaster(item), JointSlave(item), userCred, jsonutils.Marshal(item)) } return obj, err diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domain.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domain.go index 9297ce541..c0eb90513 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domain.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domain.go @@ -54,7 +54,7 @@ func (manager *SDomainizedResourceBaseManager) ResourceScope() rbacscope.TRbacSc return rbacscope.ScopeDomain } -func (manager *SDomainizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *SDomainizedResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner != nil { switch scope { case rbacscope.ScopeProject, rbacscope.ScopeDomain: @@ -64,9 +64,8 @@ func (manager *SDomainizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters) } - } case rbacscope.ScopeSystem: if userCred != nil { @@ -74,14 +73,13 @@ func (manager *SDomainizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, if !result.DomainTags.IsEmpty() { policyFilters := tagutils.STagFilters{} policyFilters.AddFilters(result.DomainTags) - q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", policyFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", policyFilters) } if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters) } - } } } @@ -149,7 +147,7 @@ func (manager *SDomainizedResourceBaseManager) ListItemFilter( if !query.NoDomainTags.IsEmpty() { tagFilters.AddNoFilters(query.NoDomainTags) } - q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", tagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", tagFilters) return q, nil } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domainresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domainresource.go index 5badcacfd..c59bd4b17 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domainresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/domainresource.go @@ -20,6 +20,7 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/gotypes" "yunion.io/x/pkg/utils" "yunion.io/x/sqlchemy" @@ -125,6 +126,9 @@ func (model *SDomainLevelResourceBase) PerformChangeOwner(ctx context.Context, u if err != nil { return nil, httperrors.NewGeneralError(err) } + if gotypes.IsNil(ownerId) { + return nil, httperrors.NewMissingParameterError("domain_id") + } if len(ownerId.GetProjectDomainId()) == 0 { return nil, httperrors.NewInputParameterError("missing new domain") } @@ -153,7 +157,7 @@ func (model *SDomainLevelResourceBase) PerformChangeOwner(ctx context.Context, u } q := manager.Query().Equals("name", model.GetName()) - q = manager.FilterByOwner(q, manager, userCred, ownerId, manager.NamespaceScope()) + q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, manager.NamespaceScope()) q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope()) q = q.NotEquals("id", model.GetId()) cnt, err := q.CountWithError() @@ -326,6 +330,7 @@ func (manager *SDomainLevelResourceBaseManager) GetPropertyDomainTagValueTree( manager.GetIDomainLevelModelManager(), "domain", "domain_id", + "", ctx, userCred, query, diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/enabledbase.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/enabledbase.go index 652c7aab4..361aa650c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/enabledbase.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/enabledbase.go @@ -33,12 +33,16 @@ type SEnabledResourceBase struct { Enabled tristate.TriState `default:"false" list:"user" create:"optional"` } -type IEnabledBase interface { - IModel +type IEnabledBaseInterface interface { SetEnabled(enabled bool) GetEnabled() bool } +type IEnabledBase interface { + IModel + IEnabledBaseInterface +} + func (m *SEnabledResourceBase) SetEnabled(enabled bool) { if enabled { m.Enabled = tristate.True diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/fetch.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/fetch.go index 861bd7d43..70be13bf0 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/fetch.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/fetch.go @@ -96,7 +96,7 @@ func FetchById(manager IModelManager, idStr string) (IModel, error) { } } -func FetchByName(manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { +func FetchByName(ctx context.Context, manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { q := manager.Query() q = manager.FilterByName(q, idStr) count, err := q.CountWithError() @@ -104,7 +104,7 @@ func FetchByName(manager IModelManager, userCred mcclient.IIdentityProvider, idS return nil, err } if count > 0 && userCred != nil { - q = manager.FilterByOwner(q, manager, nil, userCred, manager.NamespaceScope()) + q = manager.FilterByOwner(ctx, q, manager, nil, userCred, manager.NamespaceScope()) q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope()) count, err = q.CountWithError() if err != nil { @@ -129,13 +129,13 @@ func FetchByName(manager IModelManager, userCred mcclient.IIdentityProvider, idS } } -func FetchByIdOrName(manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { +func FetchByIdOrName(ctx context.Context, manager IModelManager, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { if stringutils2.IsUtf8(idStr) { - return FetchByName(manager, userCred, idStr) + return FetchByName(ctx, manager, userCred, idStr) } obj, err := FetchById(manager, idStr) if err == sql.ErrNoRows { - return FetchByName(manager, userCred, idStr) + return FetchByName(ctx, manager, userCred, idStr) } else { return obj, err } @@ -197,7 +197,7 @@ func fetchItemByName(manager IModelManager, ctx context.Context, userCred mcclie if err != nil { return nil, httperrors.NewGeneralError(err) } - q = manager.FilterByOwner(q, manager, userCred, ownerId, manager.NamespaceScope()) + q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, manager.NamespaceScope()) q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope()) count, err = q.CountWithError() if err != nil { @@ -406,7 +406,11 @@ func FetchCheckQueryOwnerScope( ownerId = userCred reqScopeStr, _ := data.GetString("scope") if len(reqScopeStr) > 0 { - queryScope = rbacscope.String2Scope(reqScopeStr) + if reqScopeStr == "max" || reqScopeStr == "maxallowed" { + queryScope = allowScope + } else { + queryScope = rbacscope.String2Scope(reqScopeStr) + } } else if data.Contains("admin") { isAdmin := jsonutils.QueryBoolean(data, "admin", false) if isAdmin && allowScope.HigherThan(rbacscope.ScopeProject) { @@ -565,8 +569,11 @@ func FetchStandaloneObjectsByIds(modelManager IModelManager, ids []string, targe return FetchModelObjectsByIds(modelManager, "id", ids, targets) } -func FetchDistinctField(modelManager IModelManager, field string) ([]string, error) { - q := modelManager.Query(field).Distinct() +func FetchField(modelMan IModelManager, field string, qCallback func(q *sqlchemy.SQuery) *sqlchemy.SQuery) ([]string, error) { + q := modelMan.Query(field) + if qCallback != nil { + q = qCallback(q) + } rows, err := q.Rows() if err != nil { if errors.Cause(err) == sql.ErrNoRows { @@ -589,3 +596,9 @@ func FetchDistinctField(modelManager IModelManager, field string) ([]string, err } return values, nil } + +func FetchDistinctField(modelManager IModelManager, field string) ([]string, error) { + return FetchField(modelManager, field, func(q *sqlchemy.SQuery) *sqlchemy.SQuery { + return q.Distinct() + }) +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/infraresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/infraresource.go index 8959a1c2d..c0cacae6e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/infraresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/infraresource.go @@ -47,15 +47,15 @@ func NewInfrasResourceBaseManager( type SInfrasResourceBase struct { SDomainLevelResourceBase - SSharableBaseResource `"is_public=>create":"domain_optional" "public_scope=>create":"domain_optional"` + SSharableBaseResource `"is_public->create":"domain_optional" "public_scope->create":"domain_optional"` } func (manager *SInfrasResourceBaseManager) GetIInfrasModelManager() IInfrasModelManager { return manager.GetVirtualObject().(IInfrasModelManager) } -func (manager *SInfrasResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { - return SharableManagerFilterByOwner(manager.GetIInfrasModelManager(), q, userCred, owner, scope) +func (manager *SInfrasResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { + return SharableManagerFilterByOwner(ctx, manager.GetIInfrasModelManager(), q, userCred, owner, scope) } func (model *SInfrasResourceBase) IsSharable(reqUsrId mcclient.IIdentityProvider) bool { @@ -66,10 +66,6 @@ func (model *SInfrasResourceBase) IsShared() bool { return SharableModelIsShared(model) } -func (model *SInfrasResourceBase) AllowPerformPublic(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPublicDomainInput) bool { - return true -} - func (model *SInfrasResourceBase) PerformPublic(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPublicDomainInput) (jsonutils.JSONObject, error) { err := SharablePerformPublic(model.GetIInfrasModel(), ctx, userCred, apis.PerformPublicProjectInput{PerformPublicDomainInput: input}) if err != nil { @@ -78,10 +74,6 @@ func (model *SInfrasResourceBase) PerformPublic(ctx context.Context, userCred mc return nil, nil } -func (model *SInfrasResourceBase) AllowPerformPrivate(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPrivateInput) bool { - return true -} - func (model *SInfrasResourceBase) PerformPrivate(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPrivateInput) (jsonutils.JSONObject, error) { err := SharablePerformPrivate(model.GetIInfrasModel(), ctx, userCred) if err != nil { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/interface.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/interface.go index a8b20e773..95dea9511 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/interface.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/interface.go @@ -24,6 +24,7 @@ import ( "yunion.io/x/pkg/util/rbacscope" "yunion.io/x/sqlchemy" + "yunion.io/x/onecloud/pkg/apis" "yunion.io/x/onecloud/pkg/appsrv" "yunion.io/x/onecloud/pkg/cloudcommon/db/lockman" "yunion.io/x/onecloud/pkg/mcclient" @@ -68,16 +69,16 @@ type IModelManager interface { // OrderByExtraFields dynmically called by dispatcher // OrderByExtraFields(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (*sqlchemy.SQuery, error) + NewQuery(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, useRawQuery bool) *sqlchemy.SQuery // fetch hook Query(val ...string) *sqlchemy.SQuery - RawQuery(val ...string) *sqlchemy.SQuery + // RawQuery(val ...string) *sqlchemy.SQuery FilterById(q *sqlchemy.SQuery, idStr string) *sqlchemy.SQuery FilterByNotId(q *sqlchemy.SQuery, idStr string) *sqlchemy.SQuery FilterByName(q *sqlchemy.SQuery, name string) *sqlchemy.SQuery FilterByOwnerProvider - //FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery FilterBySystemAttributes(q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject, scope rbacscope.TRbacScope) *sqlchemy.SQuery FilterByHiddenSystemAttributes(q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject, scope rbacscope.TRbacScope) *sqlchemy.SQuery @@ -87,23 +88,21 @@ type IModelManager interface { // RawFetchById(idStr string) (IModel, error) FetchById(idStr string) (IModel, error) - FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) - FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) + FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) + FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) // create hooks // AllowCreateItem(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool // BatchCreateValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) // ValidateCreateData dynamic called by dispatcher // ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict) (*jsonutils.JSONDict, error) - OnCreateComplete(ctx context.Context, items []IModel, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) + OnCreateComplete(ctx context.Context, items []IModel, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data []jsonutils.JSONObject) BatchPreValidate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data *jsonutils.JSONDict, count int) error OnCreateFailed(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) error // allow perform action - // AllowPerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) bool - // AllowPerformCheckCreateData(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool PerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) // DoCreate(ctx context.Context, userCred mcclient.TokenCredential, kwargs jsonutils.JSONObject, data jsonutils.JSONObject, realManager IModelManager) (IModel, error) @@ -143,6 +142,8 @@ type IModelManager interface { CreateByInsertOrUpdate() bool CustomizedTotalCount(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, totalQ *sqlchemy.SQuery) (int, jsonutils.JSONObject, error) + + PrepareQueryContext(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) context.Context } type IModel interface { @@ -167,7 +168,6 @@ type IModel interface { //GetCustomizeColumns(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) *jsonutils.JSONDict // get hooks - // AllowGetDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool GetExtraDetailsHeaders(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) map[string]string // before create hooks @@ -176,7 +176,6 @@ type IModel interface { PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) // allow perform action - // AllowPerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) bool PerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) PreCheckPerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) error @@ -284,6 +283,10 @@ type IStandaloneModel interface { // IsAlterNameUnique(name string, projectId string) bool // GetExternalId() string + SetName(name string) + MarkPendingDeleted() + CancelPendingDeleted() + StandaloneModelManager() IStandaloneModelManager GetIStandaloneModel() IStandaloneModel @@ -296,9 +299,9 @@ type IStandaloneModel interface { SetUserMetadataValues(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential) error SetUserMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential) error - SetCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential) error + SetCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential, readOnly bool) error SetOrganizationMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential) error - SetSysCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential) error + SetSysCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential, readOnly bool) error RemoveMetadata(ctx context.Context, key string, userCred mcclient.TokenCredential) error RemoveAllMetadata(ctx context.Context, userCred mcclient.TokenCredential) error @@ -363,6 +366,7 @@ type IVirtualModel interface { IsOwner(userCred mcclient.TokenCredential) bool // IsAdmin(userCred mcclient.TokenCredential) bool + SetProjectSrc(apis.TOwnerSource) SyncCloudProjectId(userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider) GetIVirtualModel() IVirtualModel diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/keystonecache.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/keystonecache.go index 474640766..7a1afbc98 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/keystonecache.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/keystonecache.go @@ -26,6 +26,7 @@ type SKeystoneCacheObjectManager struct { type SKeystoneCacheObject struct { SStandaloneResourceBase + SPendingDeletedBase DomainId string `width:"128" charset:"ascii" nullable:"true"` Domain string `width:"128" charset:"utf8" nullable:"true"` diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadata.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadata.go index a92dc4478..2e517304c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadata.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadata.go @@ -56,6 +56,8 @@ const ( TAG_DELETE_RANGE_ALL = "all" OBJECT_TYPE_ID_SEP = "::" + + RE_BILLING_AT = "__re_billing_at" ) type SMetadataManager struct { @@ -108,6 +110,7 @@ func init() { } func (manager *SMetadataManager) InitializeData() error { + /*no need to do this initilization any more q := manager.RawQuery() q = q.Filter(sqlchemy.OR( sqlchemy.IsNullOrEmpty(q.Field("obj_type")), @@ -132,7 +135,7 @@ func (manager *SMetadataManager) InitializeData() error { if err != nil { return errors.Wrap(err, "update") } - } + }*/ return nil } @@ -144,9 +147,9 @@ func (m *SMetadata) GetName() string { return fmt.Sprintf("%s-%s", m.Id, m.Key) } -func (m *SMetadata) GetModelManager() IModelManager { - return Metadata -} +// func (m *SMetadata) GetModelManager() IModelManager { +// return Metadata +// } func GetModelIdstr(model IModel) string { return getObjectIdstr(model.GetModelManager().Keyword(), model.GetId()) @@ -409,7 +412,7 @@ func (manager *SMetadataManager) ListItemFilter(ctx context.Context, q *sqlchemy log.Warningf("FetchCheckQueryOwnerScope.%s error: %v", man.Keyword(), err) continue } - sq = man.FilterByOwner(sq, man, userCred, ownerId, queryScope) + sq = man.FilterByOwner(ctx, sq, man, userCred, ownerId, queryScope) sq = man.FilterBySystemAttributes(sq, userCred, query, queryScope) sq = man.FilterByHiddenSystemAttributes(sq, userCred, query, queryScope) conditions = append(conditions, sqlchemy.In(q.Field("obj_id"), sq)) @@ -435,12 +438,15 @@ func (manager *SMetadataManager) ListItemFilter(ctx context.Context, q *sqlchemy } func (manager *SMetadataManager) GetStringValue(ctx context.Context, model IModel, key string, userCred mcclient.TokenCredential) string { + if !isAllowGetMetadata(ctx, model, userCred) { + return "" + } if strings.HasPrefix(key, SYSTEM_ADMIN_PREFIX) && (userCred == nil || !IsAllowGetSpec(ctx, rbacscope.ScopeSystem, userCred, model, "metadata")) { return "" } idStr := GetModelIdstr(model) m := SMetadata{} - err := manager.Query().Equals("id", idStr).Equals("key", key).First(&m) + err := manager.Query("value").Equals("id", idStr).Equals("key", key).First(&m) if err == nil { return m.Value } @@ -448,12 +454,15 @@ func (manager *SMetadataManager) GetStringValue(ctx context.Context, model IMode } func (manager *SMetadataManager) GetJsonValue(ctx context.Context, model IModel, key string, userCred mcclient.TokenCredential) jsonutils.JSONObject { + if !isAllowGetMetadata(ctx, model, userCred) { + return nil + } if strings.HasPrefix(key, SYSTEM_ADMIN_PREFIX) && (userCred == nil || !IsAllowGetSpec(ctx, rbacscope.ScopeSystem, userCred, model, "metadata")) { return nil } idStr := GetModelIdstr(model) m := SMetadata{} - err := manager.Query().Equals("id", idStr).Equals("key", key).First(&m) + err := manager.Query("value").Equals("id", idStr).Equals("key", key).First(&m) if err == nil { json, _ := jsonutils.ParseString(m.Value) return json @@ -518,6 +527,14 @@ func (manager *SMetadataManager) SetValuesWithLog(ctx context.Context, obj IMode } if len(changes) > 0 { OpsLog.LogEvent(obj.GetIModel(), ACT_SET_METADATA, jsonutils.Marshal(changes), userCred) + for _, change := range changes { + if change.Key == RE_BILLING_AT { + desc := obj.GetIModel().GetShortDesc(ctx) + desc.Set("created_at", jsonutils.Marshal(change.NValue)) + OpsLog.LogEvent(obj.GetIModel(), ACT_RE_BILLING, desc, userCred) + break + } + } } return nil } @@ -626,6 +643,21 @@ func (manager *SMetadataManager) rawSetValues(ctx context.Context, objType strin return changes, nil } +func (manager *SMetadataManager) SetAllWithoutDelelte(ctx context.Context, obj IModel, store map[string]interface{}, userCred mcclient.TokenCredential) error { + lockman.LockObject(ctx, obj) + defer lockman.ReleaseObject(ctx, obj) + + changes, err := manager.rawSetValues(ctx, obj.Keyword(), obj.GetId(), infMap2StrMap(store), false, "") + if err != nil { + return errors.Wrap(err, "setValues") + } + + if len(changes) > 0 { + OpsLog.LogEvent(obj.GetIModel(), ACT_SET_METADATA, jsonutils.Marshal(changes), userCred) + } + return nil +} + func (manager *SMetadataManager) SetAll(ctx context.Context, obj IModel, store map[string]interface{}, userCred mcclient.TokenCredential, delRange string) error { lockman.LockObject(ctx, obj) defer lockman.ReleaseObject(ctx, obj) @@ -641,14 +673,40 @@ func (manager *SMetadataManager) SetAll(ctx context.Context, obj IModel, store m return nil } -func (manager *SMetadataManager) GetAll(ctx context.Context, obj IModel, keys []string, keyPrefix string, userCred mcclient.TokenCredential) (map[string]string, error) { +func isAllowGetMetadata(ctx context.Context, obj IModel, userCred mcclient.TokenCredential) bool { + if userCred != nil { + for _, scope := range []rbacscope.TRbacScope{ + rbacscope.ScopeSystem, + rbacscope.ScopeDomain, + rbacscope.ScopeProject, + } { + if IsAllowGetSpec(ctx, scope, userCred, obj, "metadata") { + return true + } + } + return false + } + return true +} + +type IMetadataGetter interface { + GetId() string + Keyword() string +} + +func (manager *SMetadataManager) GetAll(ctx context.Context, obj IMetadataGetter, keys []string, keyPrefix string, userCred mcclient.TokenCredential) (map[string]string, error) { + modelObj, isIModel := obj.(IModel) + + if isIModel && !isAllowGetMetadata(ctx, modelObj, userCred) { + return map[string]string{}, nil + } meta, err := manager.rawGetAll(obj.Keyword(), obj.GetId(), keys, keyPrefix) if err != nil { return nil, errors.Wrap(err, "rawGetAll") } ret := make(map[string]string) for k, v := range meta { - if strings.HasPrefix(k, SYSTEM_ADMIN_PREFIX) && (userCred == nil || !IsAllowGetSpec(ctx, rbacscope.ScopeSystem, userCred, obj, "metadata")) { + if strings.HasPrefix(k, SYSTEM_ADMIN_PREFIX) && (userCred == nil || (isIModel && !IsAllowGetSpec(ctx, rbacscope.ScopeSystem, userCred, modelObj, "metadata"))) { continue } ret[k] = v @@ -660,7 +718,7 @@ func (manager *SMetadataManager) rawGetAll(objType, objId string, keys []string, idStr := getObjectIdstr(objType, objId) records := make([]SMetadata, 0) q := manager.Query().Equals("id", idStr) - if keys != nil && len(keys) > 0 { + if len(keys) > 0 { q = q.In("key", keys) } if len(keyPrefix) > 0 { @@ -679,15 +737,19 @@ func (manager *SMetadataManager) rawGetAll(objType, objId string, keys []string, return ret, nil } -func (manager *SMetadataManager) IsSystemAdminKey(key string) bool { - return IsMetadataKeySystemAdmin(key) +/*func (manager *SMetadataManager) IsSystemAdminKey(key string) bool { + return isMetadataKeySystemAdmin(key) +}*/ + +func isMetadataLoginKey(key string) bool { + return strings.HasPrefix(key, "login_") } -func IsMetadataKeySystemAdmin(key string) bool { +func isMetadataKeySystemAdmin(key string) bool { return strings.HasPrefix(key, SYSTEM_ADMIN_PREFIX) } -func IsMetadataKeyPrivateKey(key string) bool { +func isMetadataKeyPrivateKey(key string) bool { for _, k := range []string{"admin", "project"} { for _, v := range []string{"ssh-private-key", "ssh-public-key"} { if key == fmt.Sprintf("%s-%s", k, v) { @@ -698,7 +760,7 @@ func IsMetadataKeyPrivateKey(key string) bool { return strings.HasPrefix(key, SYSTEM_ADMIN_PREFIX) } -func IsMetadataKeySysTag(key string) bool { +func isMetadataKeySysTag(key string) bool { return strings.HasPrefix(key, SYS_TAG_PREFIX) } @@ -706,11 +768,11 @@ func (manager *SMetadataManager) GetSysadminKey(key string) string { return fmt.Sprintf("%s%s", SYSTEM_ADMIN_PREFIX, key) } -func IsMetadataKeyVisiable(key string) bool { - return !(IsMetadataKeySysTag(key) || IsMetadataKeySystemAdmin(key) || IsMetadataKeyPrivateKey(key)) +func IsMetadataKeyVisible(key string) bool { + return !(isMetadataKeySysTag(key) || isMetadataKeySystemAdmin(key) || isMetadataKeyPrivateKey(key)) } -func GetVisiableMetadata(ctx context.Context, model IStandaloneModel, userCred mcclient.TokenCredential) (map[string]string, error) { +func GetVisibleMetadata(ctx context.Context, model IStandaloneModel, userCred mcclient.TokenCredential) (map[string]string, error) { metaData, err := model.GetAllMetadata(ctx, userCred) if err != nil { return nil, err @@ -719,7 +781,7 @@ func GetVisiableMetadata(ctx context.Context, model IStandaloneModel, userCred m delete(metaData, key) } for key := range metaData { - if !IsMetadataKeyVisiable(key) { + if !IsMetadataKeyVisible(key) { delete(metaData, key) } } @@ -731,7 +793,7 @@ func metaList2Map(manager IMetadataBaseModelManager, userCred mcclient.TokenCred hiddenKeys := manager.GetMetadataHiddenKeys() for _, meta := range metaList { - if IsMetadataKeyVisiable(meta.Key) && !utils.IsInStringArray(meta.Key, hiddenKeys) { + if IsMetadataKeyVisible(meta.Key) && !utils.IsInStringArray(meta.Key, hiddenKeys) { metaMap[meta.Key] = meta.Value } } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadataresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadataresource.go index ea592c2d5..a783ccb14 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadataresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/metadataresource.go @@ -15,6 +15,7 @@ package db import ( + "context" "strings" "yunion.io/x/jsonutils" @@ -32,40 +33,40 @@ import ( type SMetadataResourceBaseModelManager struct{} -func ObjectIdQueryWithPolicyResult(q *sqlchemy.SQuery, manager IModelManager, result rbacutils.SPolicyResult) *sqlchemy.SQuery { +func ObjectIdQueryWithPolicyResult(ctx context.Context, q *sqlchemy.SQuery, manager IModelManager, result rbacutils.SPolicyResult) *sqlchemy.SQuery { scope := manager.ResourceScope() if scope == rbacscope.ScopeDomain || scope == rbacscope.ScopeProject { if !result.DomainTags.IsEmpty() { tagFilters := tagutils.STagFilters{} tagFilters.AddFilters(result.DomainTags) - q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", tagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", tagFilters) } } if scope == rbacscope.ScopeProject { if !result.ProjectTags.IsEmpty() { tagFilters := tagutils.STagFilters{} tagFilters.AddFilters(result.ProjectTags) - q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", tagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", tagFilters) } } if !result.ObjectTags.IsEmpty() { tagFilters := tagutils.STagFilters{} tagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), tagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), tagFilters) } return q } -func ObjectIdQueryWithTagFilters(q *sqlchemy.SQuery, idField string, modelName string, filters tagutils.STagFilters) *sqlchemy.SQuery { +func ObjectIdQueryWithTagFilters(ctx context.Context, q *sqlchemy.SQuery, idField string, modelName string, filters tagutils.STagFilters) *sqlchemy.SQuery { if len(filters.Filters) > 0 { - sq := objIdQueryWithTags(modelName, filters.Filters) + sq := objIdQueryWithTags(ctx, modelName, filters.Filters) if sq != nil { sqq := sq.SubQuery() q = q.Join(sqq, sqlchemy.Equals(q.Field(idField), sqq.Field("obj_id"))) } } if len(filters.NoFilters) > 0 { - sq := objIdQueryWithTags(modelName, filters.NoFilters) + sq := objIdQueryWithTags(ctx, modelName, filters.NoFilters) if sq != nil { q = q.Filter(sqlchemy.NotIn(q.Field(idField), sq.SubQuery())) } @@ -73,19 +74,21 @@ func ObjectIdQueryWithTagFilters(q *sqlchemy.SQuery, idField string, modelName s return q } -func objIdQueryWithTags(modelName string, tagsList []map[string][]string) *sqlchemy.SQuery { - metadataResQ := Metadata.Query().Equals("obj_type", modelName).SubQuery() +func objIdQueryWithTags(ctx context.Context, modelName string, tagsList []map[string][]string) *sqlchemy.SQuery { + manager := GetMetadaManagerInContext(ctx) + metadataResQ := manager.Query().Equals("obj_type", modelName).SubQuery() queries := make([]sqlchemy.IQuery, 0) for _, tags := range tagsList { if len(tags) == 0 { continue } - metadataView := metadataResQ.Query(metadataResQ.Field("obj_id")) + metadataView := metadataResQ.Query(metadataResQ.Field("obj_id").Label("obj_id")) for key, val := range tags { - q := metadataResQ.Query().Equals("key", key) + q := metadataResQ.Query(metadataResQ.Field("id")) + q = q.Equals("key", key) if len(val) > 0 { - q = q.Equals("key", key).In("value", val) + q = q.In("value", val) } sq := q.SubQuery() metadataView = metadataView.Join(sq, sqlchemy.Equals(metadataView.Field("id"), sq.Field("id"))) @@ -106,10 +109,12 @@ func objIdQueryWithTags(modelName string, tagsList []map[string][]string) *sqlch } func (meta *SMetadataResourceBaseModelManager) ListItemFilter( + ctx context.Context, manager IModelManager, q *sqlchemy.SQuery, input apis.MetadataResourceListInput, ) *sqlchemy.SQuery { + metadataMan := GetMetadaManagerInContext(ctx) inputTagFilters := tagutils.STagFilters{} if len(input.Tags) > 0 { @@ -124,7 +129,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter( if !input.NoObjTags.IsEmpty() { inputTagFilters.AddNoFilters(input.NoObjTags) } - q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), inputTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), inputTagFilters) //if !input.PolicyObjectTags.IsEmpty() { // projTagFilters := tagutils.STagFilters{} @@ -133,7 +138,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter( //} if input.WithoutUserMeta != nil || input.WithUserMeta != nil { - metadatas := Metadata.Query().Equals("obj_type", manager.Keyword()).SubQuery() + metadatas := metadataMan.Query().Equals("obj_type", manager.Keyword()).SubQuery() sq := metadatas.Query(metadatas.Field("obj_id")).Startswith("key", USER_TAG_PREFIX).Distinct().SubQuery() if (input.WithoutUserMeta != nil && *input.WithoutUserMeta) || (input.WithUserMeta != nil && !*input.WithUserMeta) { q = q.Filter(sqlchemy.NotIn(q.Field("id"), sq)) @@ -143,7 +148,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter( } if input.WithCloudMeta != nil { - metadatas := Metadata.Query().Equals("obj_type", manager.Keyword()).SubQuery() + metadatas := metadataMan.Query().Equals("obj_type", manager.Keyword()).SubQuery() sq := metadatas.Query(metadatas.Field("obj_id")).Startswith("key", CLOUD_TAG_PREFIX).Distinct().SubQuery() if *input.WithCloudMeta { q = q.Filter(sqlchemy.In(q.Field("id"), sq)) @@ -153,7 +158,7 @@ func (meta *SMetadataResourceBaseModelManager) ListItemFilter( } if input.WithAnyMeta != nil { - metadatas := Metadata.Query().Equals("obj_type", manager.Keyword()).SubQuery() + metadatas := metadataMan.Query().Equals("obj_type", manager.Keyword()).SubQuery() sq := metadatas.Query(metadatas.Field("obj_id")).Distinct().SubQuery() if *input.WithAnyMeta { q = q.Filter(sqlchemy.In(q.Field("id"), sq)) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/modelbase.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/modelbase.go index 9e887948b..54b1e886e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/modelbase.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/modelbase.go @@ -28,12 +28,15 @@ import ( "yunion.io/x/pkg/util/rbacscope" "yunion.io/x/pkg/util/version" "yunion.io/x/sqlchemy" + "yunion.io/x/sqlchemy/backends/clickhouse" "yunion.io/x/onecloud/pkg/apis" "yunion.io/x/onecloud/pkg/appsrv" + "yunion.io/x/onecloud/pkg/cloudcommon/consts" "yunion.io/x/onecloud/pkg/cloudcommon/policy" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/util/dbutils" "yunion.io/x/onecloud/pkg/util/logclient" "yunion.io/x/onecloud/pkg/util/splitable" "yunion.io/x/onecloud/pkg/util/stringutils2" @@ -83,6 +86,29 @@ func NewModelBaseManagerWithSplitableDBName(model interface{}, tableName string, return modelMan } +func NewModelBaseManagerWithClickhouseMapping(manager IModelManager, keyword, keywordPlural string) SModelBaseManager { + ots := manager.TableSpec() + var extraOpts sqlchemy.TableExtraOptions + switch consts.DefaultDBDialect() { + case "mysql": + cfg := dbutils.ParseMySQLConnStr(consts.DefaultDBConnStr()) + err := cfg.Validate() + if err != nil { + panic(fmt.Sprintf("invalid mysql connection string %s", consts.DefaultDBConnStr())) + } + extraOpts = clickhouse.MySQLExtraOptions(cfg.Hostport, cfg.Database, ots.Name(), cfg.Username, cfg.Password) + default: + panic(fmt.Sprintf("unsupport dialect %s to be backend of clickhouse", consts.DefaultDBDialect())) + } + nts := newClickhouseTableSpecFromMySQL(ots, ots.Name(), ClickhouseDB, extraOpts) + modelMan := SModelBaseManager{ + tableSpec: nts, + keyword: keyword, + keywordPlural: keywordPlural, + } + return modelMan +} + func (manager *SModelBaseManager) CreateByInsertOrUpdate() bool { return true } @@ -111,6 +137,10 @@ func (manager *SModelBaseManager) GetMutableInstance(ctx context.Context, userCr return manager.GetIModelManager() } +func (manager *SModelBaseManager) PrepareQueryContext(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) context.Context { + return ctx +} + func (manager *SModelBaseManager) SetAlias(alias string, aliasPlural string) { manager.alias = alias manager.aliasPlural = aliasPlural @@ -204,6 +234,14 @@ func (manager *SModelBaseManager) ExtraSearchConditions(ctx context.Context, q * return nil } +func (manager *SModelBaseManager) NewQuery(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, useRawQuery bool) *sqlchemy.SQuery { + if useRawQuery { + return manager.Query() + } else { + return manager.GetIModelManager().Query() + } +} + // fetch hook func (manager *SModelBaseManager) getTable() *sqlchemy.STable { return manager.TableSpec().Instance() @@ -234,7 +272,7 @@ func (manager *SModelBaseManager) FilterByName(q *sqlchemy.SQuery, name string) return q } -func (manager *SModelBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *SModelBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { return q } @@ -254,11 +292,11 @@ func (manager *SModelBaseManager) FetchById(idStr string) (IModel, error) { return nil, sql.ErrNoRows } -func (manager *SModelBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { +func (manager *SModelBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { return nil, sql.ErrNoRows } -func (manager *SModelBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { +func (manager *SModelBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { return nil, sql.ErrNoRows } @@ -271,14 +309,10 @@ func (manager *SModelBaseManager) ValidateCreateData(ctx context.Context, userCr return input, nil } -func (manager *SModelBaseManager) OnCreateComplete(ctx context.Context, items []IModel, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) { +func (manager *SModelBaseManager) OnCreateComplete(ctx context.Context, items []IModel, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data []jsonutils.JSONObject) { // do nothing } -func (manager *SModelBaseManager) AllowPerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) bool { - return false -} - func (manager *SModelBaseManager) PerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { return nil, httperrors.NewActionNotFoundError("Action %s not found, please check service version, current version: %s", action, version.GetShortString()) } @@ -530,10 +564,6 @@ func (manager *SModelBaseManager) GetPropertySplitableExport(ctx context.Context return nil, httperrors.NewResourceNotFoundError("table %s not found", input.Table) } -func (manager *SModelBaseManager) AllowPerformPurgeSplitable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool { - return true -} - func (manager *SModelBaseManager) PerformPurgeSplitable(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PurgeSplitTableInput) (jsonutils.JSONObject, error) { splitable := manager.GetIModelManager().GetImmutableInstance(ctx, userCred, query).GetSplitTable() if splitable == nil { @@ -550,7 +580,7 @@ func (manager *SModelBaseManager) CustomizedTotalCount(ctx context.Context, user ret := apis.TotalCountBase{} err := totalQ.First(&ret) if err != nil { - return -1, nil, errors.Wrap(err, "SModelBaseManager Query total") + return -1, nil, errors.Wrapf(err, "SModelBaseManager Query total %s", totalQ.DebugString()) } return ret.Count, nil, nil } @@ -606,11 +636,6 @@ func (model *SModelBase) GetShortDescV2(ctx context.Context) *apis.ModelBaseShor return &apis.ModelBaseShortDescDetail{ResName: model.Keyword()} } -// get hooks -func (model *SModelBase) AllowGetDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { - return false -} - func (model *SModelBase) GetExtraDetailsHeaders(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) map[string]string { return nil } @@ -624,10 +649,6 @@ func (model *SModelBase) PostCreate(ctx context.Context, userCred mcclient.Token } -func (model *SModelBase) AllowPerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) bool { - return false -} - func (model *SModelBase) PerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { return nil, httperrors.NewActionNotFoundError("Action %s not found, please check service version, current version: %s", action, version.GetShortString()) } @@ -703,6 +724,14 @@ func (model *SModelBase) MarkDelete() error { return nil } +func (model *SModelBase) MarkPendingDeleted() { + return +} + +func (model *SModelBase) CancelPendingDeleted() { + return +} + func (model *SModelBase) Delete(ctx context.Context, userCred mcclient.TokenCredential) error { return nil } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/models.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/models.go index bf60eec30..fb5c180fb 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/models.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/models.go @@ -103,6 +103,7 @@ func mustCheckModelManager(modelMan IModelManager) { func tableSpecId(tableSpec ITableSpec) string { keys := []string{ + string(tableSpec.GetDBName()), tableSpec.Name(), } for _, c := range tableSpec.Columns() { @@ -151,6 +152,7 @@ func CheckSync(autoSync bool, enableChecksumTables bool, skipInitChecksum bool) tableSpec := modelMan.TableSpec() tableKey := tableSpecId(tableSpec) if _, ok := processedTbl[tableKey]; ok { + log.Warningf("table %s has been synced!", tableKey) continue } processedTbl[tableKey] = true diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/namevalidator.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/namevalidator.go index 8b59ee3d2..71169db5c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/namevalidator.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/namevalidator.go @@ -28,11 +28,11 @@ import ( "yunion.io/x/onecloud/pkg/util/stringutils2" ) -func isNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) (bool, error) { - return isRawNameUnique(manager, ownerId, name, uniqValues, false) +func isNameUnique(ctx context.Context, manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) (bool, error) { + return isRawNameUnique(ctx, manager, ownerId, name, uniqValues, false) } -func isRawNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject, isRaw bool) (bool, error) { +func isRawNameUnique(ctx context.Context, manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject, isRaw bool) (bool, error) { var q *sqlchemy.SQuery if isRaw { q = manager.TableSpec().Instance().Query() @@ -40,7 +40,7 @@ func isRawNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider, q = manager.Query() } q = manager.FilterByName(q, name) - q = manager.FilterByOwner(q, manager, nil, ownerId, manager.NamespaceScope()) + q = manager.FilterByOwner(ctx, q, manager, nil, ownerId, manager.NamespaceScope()) if !isRaw { q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope()) if uniqValues != nil { @@ -54,12 +54,12 @@ func isRawNameUnique(manager IModelManager, ownerId mcclient.IIdentityProvider, return cnt == 0, nil } -func NewNameValidator(manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) error { +func NewNameValidator(ctx context.Context, manager IModelManager, ownerId mcclient.IIdentityProvider, name string, uniqValues jsonutils.JSONObject) error { err := manager.ValidateName(name) if err != nil { return err } - uniq, err := isNameUnique(manager, ownerId, name, uniqValues) + uniq, err := isNameUnique(ctx, manager, ownerId, name, uniqValues) if err != nil { return err } @@ -69,11 +69,11 @@ func NewNameValidator(manager IModelManager, ownerId mcclient.IIdentityProvider, return nil } -func isAlterNameUnique(model IModel, name string) (bool, error) { - return isRawAlterNameUnique(model, name, false) +func isAlterNameUnique(ctx context.Context, model IModel, name string) (bool, error) { + return isRawAlterNameUnique(ctx, model, name, false) } -func isRawAlterNameUnique(model IModel, name string, isRaw bool) (bool, error) { +func isRawAlterNameUnique(ctx context.Context, model IModel, name string, isRaw bool) (bool, error) { manager := model.GetModelManager() var q *sqlchemy.SQuery if isRaw { @@ -82,7 +82,7 @@ func isRawAlterNameUnique(model IModel, name string, isRaw bool) (bool, error) { q = manager.Query() } q = manager.FilterByName(q, name) - q = manager.FilterByOwner(q, manager, nil, model.GetOwnerId(), manager.NamespaceScope()) + q = manager.FilterByOwner(ctx, q, manager, nil, model.GetOwnerId(), manager.NamespaceScope()) q = manager.FilterByNotId(q, model.GetId()) if !isRaw { q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope()) @@ -97,12 +97,12 @@ func isRawAlterNameUnique(model IModel, name string, isRaw bool) (bool, error) { return cnt == 0, nil } -func alterNameValidator(model IModel, name string) error { +func alterNameValidator(ctx context.Context, model IModel, name string) error { err := model.GetModelManager().ValidateName(name) if err != nil { return err } - uniq, err := isAlterNameUnique(model, name) + uniq, err := isAlterNameUnique(ctx, model, name) if err != nil { return err } @@ -139,9 +139,9 @@ func GenerateName2(ctx context.Context, manager IModelManager, ownerId mcclient. var uniq bool var err error if model == nil { - uniq, err = isRawNameUnique(manager, ownerId, name, nil, consts.IsHistoricalUniqueName()) + uniq, err = isRawNameUnique(ctx, manager, ownerId, name, nil, consts.IsHistoricalUniqueName()) } else { - uniq, err = isRawAlterNameUnique(model, name, consts.IsHistoricalUniqueName()) + uniq, err = isRawAlterNameUnique(ctx, model, name, consts.IsHistoricalUniqueName()) } if err != nil { return "", err diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/notify_hook.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/notify_hook.go index a31eadece..d0349bff5 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/notify_hook.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/notify_hook.go @@ -17,14 +17,20 @@ package db import ( "context" + "yunion.io/x/jsonutils" + "yunion.io/x/onecloud/pkg/mcclient" ) var ( - updateNotifyHook updateNotifyHookFunc + updateNotifyHook updateNotifyHookFunc + statusChangedNotifyHook statusChangedNotifyHookFunc + customizeNotifyHook customizeNotifyHookFunc ) type updateNotifyHookFunc func(ctx context.Context, userCred mcclient.TokenCredential, obj IModel) +type statusChangedNotifyHookFunc func(ctx context.Context, userCred mcclient.TokenCredential, oldStatus, status string, obj IModel) +type customizeNotifyHookFunc func(ctx context.Context, userCred mcclient.TokenCredential, action string, obj IModel, moreDetails jsonutils.JSONObject) func SetUpdateNotifyHook(f updateNotifyHookFunc) { if updateNotifyHook != nil { @@ -39,3 +45,31 @@ func CallUpdateNotifyHook(ctx context.Context, userCred mcclient.TokenCredential } updateNotifyHook(ctx, userCred, obj) } + +func SetCustomizeNotifyHook(f customizeNotifyHookFunc) { + if customizeNotifyHook != nil { + panic("updateNotifyHook already set") + } + customizeNotifyHook = f +} + +func CallCustomizeNotifyHook(ctx context.Context, userCred mcclient.TokenCredential, action string, obj IModel, customizeDetails jsonutils.JSONObject) { + if customizeNotifyHook == nil { + return + } + customizeNotifyHook(ctx, userCred, action, obj, customizeDetails) +} + +func SetStatusChangedNotifyHook(f statusChangedNotifyHookFunc) { + if statusChangedNotifyHook != nil { + panic("updateNotifyHook already set") + } + statusChangedNotifyHook = f +} + +func CallStatusChanegdNotifyHook(ctx context.Context, userCred mcclient.TokenCredential, oldStatis, newStatus string, obj IModel) { + if statusChangedNotifyHook == nil { + return + } + statusChangedNotifyHook(ctx, userCred, oldStatis, newStatus, obj) +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog.go index bb1037d38..6cc44b03d 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog.go @@ -46,7 +46,7 @@ type SOpsLogManager struct { type SOpsLog struct { SLogBase - ObjType string `width:"40" charset:"ascii" nullable:"false" list:"user" create:"required"` + ObjType string `width:"40" charset:"ascii" nullable:"false" list:"user" create:"required" index:"true"` ObjId string `width:"128" charset:"ascii" nullable:"false" list:"user" create:"required" index:"true"` ObjName string `width:"128" charset:"utf8" nullable:"false" list:"user" create:"required"` Action string `width:"32" charset:"utf8" nullable:"false" list:"user" create:"required"` @@ -362,7 +362,7 @@ func (manager *SOpsLogManager) LogSyncUpdate(m IModel, uds sqlchemy.UpdateDiffs, } } -func (self *SOpsLogManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (self *SOpsLogManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if ownerId != nil { switch scope { case rbacscope.ScopeUser: diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog_const.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog_const.go index f98cfe7f4..cc75f74ed 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog_const.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/opslog_const.go @@ -163,6 +163,9 @@ const ( ACT_SET_USER_PASSWORD = "set_user_password" ACT_SET_USER_PASSWORD_FAIL = "set_user_password_fail" + ACT_SYNC_OS_INFO = "sync_os_info" + ACT_SYNC_OS_INFO_FAIL = "sync_os_info_fail" + ACT_VM_IO_THROTTLE = "io_throttle" ACT_VM_IO_THROTTLE_FAIL = "io_throttle_fail" @@ -317,6 +320,15 @@ const ( ACT_ENCRYPT_FAIL = "encrypt_fail" ACT_ENCRYPT_DONE = "encrypted" - ACT_BIND = "bind" - ACT_UNBIND = "unbind" + ACT_SYNC_TRAFFIC_LIMIT = "sync_traffic_limit" + ACT_SYNC_TRAFFIC_LIMIT_FAIL = "sync_traffic_limit_fail" + ACT_BIND = "bind" + ACT_UNBIND = "unbind" + + ACT_START_RESCUE = "start_rescue" + ACT_STOP_RESCUE = "stop_rescue" + ACT_START_RESCUE_FAILED = "start_rescue_failed" + ACT_STOP_RESCUE_FAILED = "stop_rescue_failed" + + ACT_RE_BILLING = "re_billing" ) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/pending_deleted.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/pending_deleted.go new file mode 100644 index 000000000..643aa9d83 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/pending_deleted.go @@ -0,0 +1,131 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package db + +import ( + "context" + "strings" + "time" + + "yunion.io/x/jsonutils" + "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/util/rbacscope" + "yunion.io/x/pkg/util/timeutils" + "yunion.io/x/pkg/utils" + "yunion.io/x/sqlchemy" + + "yunion.io/x/onecloud/pkg/cloudcommon/consts" + "yunion.io/x/onecloud/pkg/cloudcommon/db/lockman" + "yunion.io/x/onecloud/pkg/cloudcommon/policy" + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/util/logclient" +) + +type SPendingDeletedBaseManager struct{} + +type SPendingDeletedBase struct { + // 资源放入回收站时间 + PendingDeletedAt time.Time `json:"pending_deleted_at" list:"user" update:"admin"` + // 资源是否处于回收站中 + PendingDeleted bool `nullable:"false" default:"false" index:"true" get:"user" list:"user" json:"pending_deleted"` +} + +// GetPendingDeleted implements IPendingDeltable +func (base *SPendingDeletedBase) GetPendingDeleted() bool { + return base.PendingDeleted +} + +func (base *SPendingDeletedBase) MarkPendingDeleted() { + base.PendingDeleted = true + base.PendingDeletedAt = timeutils.UtcNow() +} + +func (base *SPendingDeletedBase) CancelPendingDeleted() { + base.PendingDeleted = false + base.PendingDeletedAt = time.Time{} +} + +// GetPendingDeletedAt implements IPendingDeltable +func (base *SPendingDeletedBase) GetPendingDeletedAt() time.Time { + return base.PendingDeletedAt +} + +func (base *SPendingDeletedBaseManager) FilterBySystemAttributes(manager IStandaloneModelManager, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject, scope rbacscope.TRbacScope) *sqlchemy.SQuery { + var pendingDelete string + if query != nil { + pendingDelete, _ = query.GetString("pending_delete") + } + pendingDeleteLower := strings.ToLower(pendingDelete) + if pendingDeleteLower == "all" || pendingDeleteLower == "any" || utils.ToBool(pendingDeleteLower) { + var isAllow bool + allowScope, result := policy.PolicyManager.AllowScope(userCred, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionList, "pending_delete") + if result.Result.IsAllow() && !scope.HigherThan(allowScope) { + isAllow = true + } + if !isAllow { + pendingDeleteLower = "" + } + } + + if pendingDeleteLower == "all" || pendingDeleteLower == "any" { + } else if utils.ToBool(pendingDeleteLower) { + q = q.IsTrue("pending_deleted") + } else { + q = q.Filter(sqlchemy.OR(sqlchemy.IsNull(q.Field("pending_deleted")), sqlchemy.IsFalse(q.Field("pending_deleted")))) + } + return q +} + +func (base *SPendingDeletedBase) MarkPendingDelete(model IStandaloneModel, ctx context.Context, userCred mcclient.TokenCredential, newName string) error { + if !base.PendingDeleted { + _, err := Update(model, func() error { + if len(newName) > 0 { + model.SetName(newName) + } + model.MarkPendingDeleted() + return nil + }) + if err != nil { + return errors.Wrap(err, "MarkPendingDelete.Update") + } + OpsLog.LogEvent(model, ACT_PENDING_DELETE, model.GetShortDesc(ctx), userCred) + logclient.AddSimpleActionLog(model, logclient.ACT_PENDING_DELETE, model.GetShortDesc(ctx), userCred, true) + } + return nil +} + +func (base *SPendingDeletedBase) MarkCancelPendingDelete(model IStandaloneModel, ctx context.Context, userCred mcclient.TokenCredential) error { + manager := model.GetModelManager() + ownerId := model.GetOwnerId() + + lockman.LockRawObject(ctx, manager.Keyword(), "name") + defer lockman.ReleaseRawObject(ctx, manager.Keyword(), "name") + + newName, err := GenerateName(ctx, manager, ownerId, model.GetName()) + if err != nil { + return errors.Wrapf(err, "GenerateNam") + } + _, err = Update(model, func() error { + model.SetName(newName) + model.CancelPendingDeleted() + return nil + }) + if err != nil { + return errors.Wrapf(err, "MarkCancelPendingDelete.Update") + } + OpsLog.LogEvent(model, ACT_CANCEL_DELETE, model.GetShortDesc(ctx), userCred) + logclient.AddSimpleActionLog(model, logclient.ACT_CANCEL_DELETE, model.GetShortDesc(ctx), userCred, true) + return nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/policytags.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/policytags.go index 27460fb60..4a8a9aee9 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/policytags.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/policytags.go @@ -27,6 +27,9 @@ import ( ) func objectConfirmPolicyTags(ctx context.Context, model IModel, result rbacutils.SPolicyResult) error { + if result.Result.IsDeny() { + return errors.Wrap(httperrors.ErrForbidden, "no permission") + } model.GetModelManager().ResourceScope() if _, ok := model.(IStandaloneModel); !ok { // a plain resource diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/project.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/project.go index 8711e6e30..06fa803a2 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/project.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/project.go @@ -20,6 +20,7 @@ import ( "time" "yunion.io/x/jsonutils" + "yunion.io/x/log" "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/rbacscope" "yunion.io/x/pkg/util/reflectutils" @@ -51,7 +52,7 @@ func (model *SProjectizedResourceBase) GetOwnerId() mcclient.IIdentityProvider { return &owner } -func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *SProjectizedResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner != nil { switch scope { case rbacscope.ScopeProject: @@ -61,7 +62,7 @@ func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters) } } case rbacscope.ScopeDomain: @@ -71,12 +72,12 @@ func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery if !result.ProjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ProjectTags) - q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters) } if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters) } } case rbacscope.ScopeSystem: @@ -85,17 +86,17 @@ func (manager *SProjectizedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery if !result.DomainTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.DomainTags) - q = ObjectIdQueryWithTagFilters(q, "domain_id", "domain", policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "domain_id", "domain", policyTagFilters) } if !result.ProjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ProjectTags) - q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters) } if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters) } } } @@ -161,7 +162,7 @@ func (manager *SProjectizedResourceBaseManager) ListItemFilter( if !query.NoProjectTags.IsEmpty() { tagFilters.AddNoFilters(query.NoProjectTags) } - q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", tagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", tagFilters) return q, nil } @@ -189,12 +190,14 @@ func (manager *SProjectizedResourceBaseManager) FetchCustomizeColumns( isList bool, ) []apis.ProjectizedResourceInfo { ret := make([]apis.ProjectizedResourceInfo, len(objs)) + resIds := make([]string, len(objs)) if len(fields) == 0 || fields.Contains("project_domain") || fields.Contains("tenant") { projectIds := stringutils2.SSortedStrings{} for i := range objs { var base *SProjectizedResourceBase reflectutils.FindAnonymouStructPointer(objs[i], &base) if base != nil && len(base.ProjectId) > 0 { + resIds[i] = getObjectIdstr("project", base.ProjectId) projectIds = stringutils2.Append(projectIds, base.ProjectId) } } @@ -216,6 +219,26 @@ func (manager *SProjectizedResourceBaseManager) FetchCustomizeColumns( } } } + + if fields == nil || fields.Contains("__meta__") { + q := Metadata.Query("id", "key", "value") + metaKeyValues := make(map[string][]SMetadata) + err := FetchQueryObjectsByIds(q, "id", resIds, &metaKeyValues) + if err != nil { + log.Errorf("FetchQueryObjectsByIds metadata fail %s", err) + return ret + } + + for i := range objs { + if metaList, ok := metaKeyValues[resIds[i]]; ok { + ret[i].ProjectMetadata = map[string]string{} + for _, meta := range metaList { + ret[i].ProjectMetadata[meta.Key] = meta.Value + } + } + } + } + domainRows := manager.SDomainizedResourceBaseManager.FetchCustomizeColumns(ctx, userCred, query, objs, fields, isList) for i := range ret { ret[i].DomainizedResourceInfo = domainRows[i] diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rbac.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rbac.go index 10dad69a5..c5ea45550 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rbac.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rbac.go @@ -156,7 +156,7 @@ func IsAllowList(scope rbacscope.TRbacScope, userCred mcclient.TokenCredential, if userCred == nil { return rbacutils.PolicyDeny } - return userCred.IsAllow(scope, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionList) + return policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionList) } func IsAdminAllowList(userCred mcclient.TokenCredential, manager IResource) rbacutils.SPolicyResult { @@ -175,7 +175,7 @@ func IsAllowCreate(scope rbacscope.TRbacScope, userCred mcclient.TokenCredential if userCred == nil { return rbacutils.PolicyDeny } - return userCred.IsAllow(scope, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionCreate) + return policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionCreate) } func IsAdminAllowCreate(userCred mcclient.TokenCredential, manager IResource) rbacutils.SPolicyResult { @@ -194,7 +194,7 @@ func IsAllowClassPerform(scope rbacscope.TRbacScope, userCred mcclient.TokenCred if userCred == nil { return rbacutils.PolicyDeny } - return userCred.IsAllow(scope, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionPerform, action) + return policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionPerform, action) } func IsAdminAllowClassPerform(userCred mcclient.TokenCredential, manager IResource, action string) rbacutils.SPolicyResult { @@ -213,7 +213,7 @@ func IsAllowGet(ctx context.Context, scope rbacscope.TRbacScope, userCred mcclie if userCred == nil { return false } - result := userCred.IsAllow(scope, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionGet) + result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionGet) err := objectConfirmPolicyTags(ctx, obj, result) if err != nil { log.Errorf("IsAllowGet %s", err) @@ -239,7 +239,7 @@ func IsAllowGetSpec(ctx context.Context, scope rbacscope.TRbacScope, userCred mc if userCred == nil { return false } - result := userCred.IsAllow(scope, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionGet, spec) + result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionGet, spec) err := objectConfirmPolicyTags(ctx, obj, result) if err != nil { log.Errorf("IsAllowGetSpec %s", err) @@ -265,7 +265,7 @@ func IsAllowPerform(ctx context.Context, scope rbacscope.TRbacScope, userCred mc if userCred == nil { return false } - result := userCred.IsAllow(scope, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionPerform, action) + result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionPerform, action) err := objectConfirmPolicyTags(ctx, obj, result) if err != nil { log.Errorf("IsAllowPerform %s", err) @@ -291,7 +291,7 @@ func IsAllowUpdate(ctx context.Context, scope rbacscope.TRbacScope, userCred mcc if userCred == nil { return false } - result := userCred.IsAllow(scope, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionUpdate) + result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionUpdate) err := objectConfirmPolicyTags(ctx, obj, result) if err != nil { log.Errorf("IsAllowUpdate %s", err) @@ -317,7 +317,7 @@ func IsAllowUpdateSpec(ctx context.Context, scope rbacscope.TRbacScope, userCred if userCred == nil { return false } - result := userCred.IsAllow(scope, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionUpdate, spec) + result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionUpdate, spec) err := objectConfirmPolicyTags(ctx, obj, result) if err != nil { log.Errorf("IsAllowUpdateSpec %s", err) @@ -343,7 +343,7 @@ func IsAllowDelete(ctx context.Context, scope rbacscope.TRbacScope, userCred mcc if userCred == nil { return false } - result := userCred.IsAllow(scope, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionDelete) + result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), obj.KeywordPlural(), policy.PolicyActionDelete) err := objectConfirmPolicyTags(ctx, obj, result) if err != nil { log.Errorf("IsAllowDelete %s", err) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rolecache.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rolecache.go index 2f34cbe59..ca8f01534 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rolecache.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/rolecache.go @@ -122,6 +122,7 @@ func (manager *SRoleCacheManager) FetchRoleFromKeystone(ctx context.Context, idS query := jsonutils.NewDict() query.Set("scope", jsonutils.NewString("system")) query.Set("system", jsonutils.JSONTrue) + query.Set("pending_delete", jsonutils.NewString("all")) s := auth.GetAdminSession(ctx, consts.GetRegion()) role, err := modules.RolesV3.GetById(s, idStr, query) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/scoperesource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/scoperesource.go index 934fe35d5..136fca3e3 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/scoperesource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/scoperesource.go @@ -110,7 +110,7 @@ func (m *SScopedResourceBase) IsOwner(userCred mcclient.TokenCredential) bool { return userCred.HasSystemAdminPrivilege() } -func (m *SScopedResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (m *SScopedResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner == nil { return q } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablebase.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablebase.go index 147d52b89..e4f66a438 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablebase.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablebase.go @@ -214,10 +214,50 @@ func SharableManagerValidateCreateData( return input, nil } -func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func SharableManagerFilterByOwner(ctx context.Context, manager IStandaloneModelManager, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner != nil { resScope := manager.ResourceScope() - if resScope == rbacscope.ScopeProject && scope == rbacscope.ScopeProject { + if resScope == rbacscope.ScopeUser { + targetProjectId := owner.GetProjectId() + if len(targetProjectId) == 0 { + targetProjectId = userCred.GetProjectId() + } + subq := SharedResourceManager.Query("resource_id") + subq = subq.Equals("resource_type", manager.Keyword()) + subq = subq.Equals("target_project_id", targetProjectId) + subq = subq.Equals("target_type", SharedTargetProject) + subq2 := SharedResourceManager.Query("resource_id") + subq2 = subq2.Equals("resource_type", manager.Keyword()) + subq2 = subq2.Equals("target_project_id", owner.GetProjectDomainId()) + subq2 = subq2.Equals("target_type", SharedTargetDomain) + filters := []sqlchemy.ICondition{ + sqlchemy.AND( + sqlchemy.IsTrue(q.Field("is_public")), + sqlchemy.Equals(q.Field("public_scope"), rbacscope.ScopeSystem), + ), + sqlchemy.AND( + sqlchemy.IsTrue(q.Field("is_public")), + sqlchemy.Equals(q.Field("public_scope"), rbacscope.ScopeDomain), + sqlchemy.OR( + sqlchemy.In(q.Field("id"), subq2.SubQuery()), + ), + ), + sqlchemy.In(q.Field("id"), subq.SubQuery()), + } + ownerUserId := owner.GetUserId() + if len(ownerUserId) > 0 { + filters = append(filters, sqlchemy.Equals(q.Field("owner_id"), ownerUserId)) + } + q = q.Filter(sqlchemy.OR(filters...)) + if userCred != nil { + result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionList) + if !result.ObjectTags.IsEmpty() { + policyTagFilters := tagutils.STagFilters{} + policyTagFilters.AddFilters(result.ObjectTags) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters) + } + } + } else if resScope == rbacscope.ScopeProject && scope == rbacscope.ScopeProject { ownerProjectId := owner.GetProjectId() if len(ownerProjectId) > 0 { subq := SharedResourceManager.Query("resource_id") @@ -249,7 +289,7 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters) } } } @@ -277,12 +317,12 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S if !result.ProjectTags.IsEmpty() && resScope == rbacscope.ScopeProject { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ProjectTags) - q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters) } if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters) } } } @@ -296,7 +336,7 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S subq := manager.Query("id") policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.DomainTags) - subq = ObjectIdQueryWithTagFilters(subq, "domain_id", "domain", policyTagFilters) + subq = ObjectIdQueryWithTagFilters(ctx, subq, "domain_id", "domain", policyTagFilters) q = q.Filter(sqlchemy.OR( sqlchemy.In(q.Field("id"), subq.SubQuery()), sqlchemy.AND( @@ -308,12 +348,12 @@ func SharableManagerFilterByOwner(manager IStandaloneModelManager, q *sqlchemy.S if !result.ProjectTags.IsEmpty() && resScope == rbacscope.ScopeProject { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ProjectTags) - q = ObjectIdQueryWithTagFilters(q, "tenant_id", "project", policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "tenant_id", "project", policyTagFilters) } if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", manager.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", manager.Keyword(), policyTagFilters) } } } @@ -651,6 +691,7 @@ func SharableModelCustomizeCreate(model ISharableBaseModel, ctx context.Context, if managedModel, ok := model.(IManagedResourceBase); ok { isManaged = managedModel.IsManaged() } + // log.Debugf("isManaged: %v IsAdminAllowPerform %v ownerId.GetProjectDomainId %s userCred.GetProjectDomainId %s", isManaged, IsAdminAllowPerform(ctx, userCred, model, "public"), ownerId.GetProjectDomainId(), userCred.GetProjectDomainId()) if !isManaged && IsAdminAllowPerform(ctx, userCred, model, "public") && ownerId.GetProjectDomainId() == userCred.GetProjectDomainId() { model.SetShare(rbacscope.ScopeSystem) data.(*jsonutils.JSONDict).Set("public_scope", jsonutils.NewString(string(rbacscope.ScopeSystem))) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablevirtual.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablevirtual.go index de530d16e..888836ff3 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablevirtual.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharablevirtual.go @@ -30,7 +30,7 @@ import ( type SSharableVirtualResourceBase struct { SVirtualResourceBase - SSharableBaseResource `"is_public=>create":"optional" "public_scope=>create":"optional"` + SSharableBaseResource `"is_public->create":"optional" "public_scope->create":"optional"` // IsPublic bool `default:"false" nullable:"false" create:"domain_optional" list:"user" json:"is_public"` // PublicScope string `width:"16" charset:"ascii" nullable:"false" default:"system" create:"domain_optional" list:"user" json:"public_scope"` } @@ -48,8 +48,8 @@ func (manager *SSharableVirtualResourceBaseManager) GetISharableVirtualModelMana return manager.GetVirtualObject().(ISharableVirtualModelManager) } -func (manager *SSharableVirtualResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { - return SharableManagerFilterByOwner(manager.GetISharableVirtualModelManager(), q, userCred, owner, scope) +func (manager *SSharableVirtualResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { + return SharableManagerFilterByOwner(ctx, manager.GetISharableVirtualModelManager(), q, userCred, owner, scope) } func (model *SSharableVirtualResourceBase) IsSharable(reqUsrId mcclient.IIdentityProvider) bool { @@ -60,10 +60,6 @@ func (model *SSharableVirtualResourceBase) IsShared() bool { return SharableModelIsShared(model) } -func (model *SSharableVirtualResourceBase) AllowPerformPublic(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPublicProjectInput) bool { - return true -} - func (model *SSharableVirtualResourceBase) PerformPublic(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPublicProjectInput) (jsonutils.JSONObject, error) { err := SharablePerformPublic(model.GetISharableVirtualModel(), ctx, userCred, input) if err != nil { @@ -72,10 +68,6 @@ func (model *SSharableVirtualResourceBase) PerformPublic(ctx context.Context, us return nil, nil } -func (model *SSharableVirtualResourceBase) AllowPerformPrivate(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPrivateInput) bool { - return true -} - func (model *SSharableVirtualResourceBase) PerformPrivate(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformPrivateInput) (jsonutils.JSONObject, error) { err := SharablePerformPrivate(model.GetISharableVirtualModel(), ctx, userCred) if err != nil { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharedresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharedresource.go index 1fd37b3c4..f8dea9d74 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharedresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/sharedresource.go @@ -99,6 +99,14 @@ func (manager *SSharedResourceManager) shareToTarget( var requireScope rbacscope.TRbacScope resScope := model.GetModelManager().ResourceScope() switch resScope { + case rbacscope.ScopeUser: + switch targetType { + case SharedTargetDomain: + // should have system-level privileges + requireScope = rbacscope.ScopeSystem + case SharedTargetProject: + requireScope = rbacscope.ScopeDomain + } case rbacscope.ScopeProject: switch targetType { case SharedTargetProject: diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone.go index 407452e71..088fa4315 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone.go @@ -72,12 +72,12 @@ func (manager *SStandaloneResourceBaseManager) ValidateName(name string) error { return nil } -func (manager *SStandaloneResourceBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { - return FetchByName(manager.GetIStandaloneModelManager(), userCred, idStr) +func (manager *SStandaloneResourceBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { + return FetchByName(ctx, manager.GetIStandaloneModelManager(), userCred, idStr) } -func (manager *SStandaloneResourceBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { - return FetchByIdOrName(manager.GetIStandaloneModelManager(), userCred, idStr) +func (manager *SStandaloneResourceBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { + return FetchByIdOrName(ctx, manager.GetIStandaloneModelManager(), userCred, idStr) } func (manager *SStandaloneResourceBaseManager) ListItemFilter( @@ -139,6 +139,10 @@ func (model *SStandaloneResourceBase) GetName() string { return model.Name } +func (model *SStandaloneResourceBase) SetName(name string) { + model.Name = name +} + func (model *SStandaloneResourceBase) GetIStandaloneModel() IStandaloneModel { return model.GetVirtualObject().(IStandaloneModel) } @@ -199,7 +203,7 @@ func (model *SStandaloneResourceBase) ValidateUpdateData(ctx context.Context, us if strings.ContainsAny(input.Name, "\n\r\t") { return input, errors.Wrap(httperrors.ErrInputParameter, "name should not contains any \\n\\r\\t") } - err = alterNameValidator(model.GetIStandaloneModel(), input.Name) + err = alterNameValidator(ctx, model.GetIStandaloneModel(), input.Name) if err != nil { return input, errors.Wrap(err, "alterNameValidator") } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone_anon.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone_anon.go index f74d3e031..9a9f018a8 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone_anon.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/standalone_anon.go @@ -30,7 +30,6 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/policy" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" - "yunion.io/x/onecloud/pkg/mcclient/auth" "yunion.io/x/onecloud/pkg/util/stringutils2" "yunion.io/x/onecloud/pkg/util/tagutils" ) @@ -48,7 +47,7 @@ type SStandaloneAnonResourceBase struct { Id string `width:"128" charset:"ascii" primary:"true" list:"user" create:"optional" json:"id"` // 资源描述信息 - Description string `width:"256" charset:"utf8" get:"user" list:"user" update:"user" create:"optional" json:"description"` + Description string `length:"0" charset:"utf8" get:"user" list:"user" update:"user" create:"optional" json:"description"` // 是否是模拟资源, 部分从公有云上同步的资源并不真实存在, 例如宿主机 // list 接口默认不会返回这类资源,除非显示指定 is_emulate=true 过滤参数 @@ -101,13 +100,13 @@ func (manager *SStandaloneAnonResourceBaseManager) FilterByNotId(q *sqlchemy.SQu return q.NotEquals("id", idStr) } -func (manager *SStandaloneAnonResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *SStandaloneAnonResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if userCred != nil { result := policy.PolicyManager.Allow(scope, userCred, consts.GetServiceType(), man.KeywordPlural(), policy.PolicyActionList) if !result.ObjectTags.IsEmpty() { policyTagFilters := tagutils.STagFilters{} policyTagFilters.AddFilters(result.ObjectTags) - q = ObjectIdQueryWithTagFilters(q, "id", man.Keyword(), policyTagFilters) + q = ObjectIdQueryWithTagFilters(ctx, q, "id", man.Keyword(), policyTagFilters) } } return q @@ -154,7 +153,7 @@ func (manager *SStandaloneAnonResourceBaseManager) ListItemFilter( q = q.In("id", input.Ids) } - q = manager.SMetadataResourceBaseModelManager.ListItemFilter(manager.GetIModelManager(), q, input.MetadataResourceListInput) + q = manager.SMetadataResourceBaseModelManager.ListItemFilter(ctx, manager.GetIModelManager(), q, input.MetadataResourceListInput) return q, nil } @@ -322,20 +321,30 @@ func (model *SStandaloneAnonResourceBase) SetUserMetadataAll(ctx context.Context return nil } -func (model *SStandaloneAnonResourceBase) SetCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential) error { +func (model *SStandaloneAnonResourceBase) SetCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential, readOnly bool) error { var err error dictStore, err := ensurePrefixString(dictstore, CLOUD_TAG_PREFIX) if err != nil { return errors.Wrap(err, "ensurePrefix") } - err = Metadata.SetAll(ctx, model, dictStore, userCred, CLOUD_TAG_PREFIX) - if err != nil { - return errors.Wrap(err, "SetAll") + if readOnly { + err = Metadata.SetAllWithoutDelelte(ctx, model, dictStore, userCred) + if err != nil { + return errors.Wrap(err, "SetAll") + } + } else { + err = Metadata.SetAll(ctx, model, dictStore, userCred, CLOUD_TAG_PREFIX) + if err != nil { + return errors.Wrap(err, "SetAll") + } } userTags := map[string]interface{}{} for k, v := range dictstore { userTags[strings.Replace(k, CLOUD_TAG_PREFIX, USER_TAG_PREFIX, 1)] = v } + if readOnly { + return Metadata.SetAllWithoutDelelte(ctx, model, userTags, userCred) + } return Metadata.SetAll(ctx, model, userTags, userCred, USER_TAG_PREFIX) } @@ -393,8 +402,8 @@ func (model *SStandaloneAnonResourceBase) SetClassMetadataAll(ctx context.Contex return nil } -func (model *SStandaloneAnonResourceBase) InheritTo(ctx context.Context, dest IClassMetadataSetter) error { - return InheritFromTo(ctx, model, dest) +func (model *SStandaloneAnonResourceBase) InheritTo(ctx context.Context, userCred mcclient.TokenCredential, dest IClassMetadataSetter) error { + return InheritFromTo(ctx, userCred, model, dest) } type IClassMetadataSetter interface { @@ -404,7 +413,7 @@ type IClassMetadataSetter interface { SetClassMetadataAll(context.Context, map[string]string, mcclient.TokenCredential) error } -func InheritFromTo(ctx context.Context, src IClassMetadataOwner, dest IClassMetadataSetter) error { +func InheritFromTo(ctx context.Context, userCred mcclient.TokenCredential, src IClassMetadataOwner, dest IClassMetadataSetter) error { metadata, err := src.GetAllClassMetadata() if err != nil { return errors.Wrap(err, "GetAllClassMetadata") @@ -422,15 +431,17 @@ func InheritFromTo(ctx context.Context, src IClassMetadataOwner, dest IClassMeta if sv, ok := metadata[k]; ok { if sv != v { // duplicate value for identical key - return errors.Wrapf(httperrors.ErrConflict, "destination has another value for class key %s", k) + // return errors.Wrapf(httperrors.ErrConflict, "destination has another value for class key %s", k) + log.Warningf("replace class metadata %s from %s to %s", k, v, sv) } } else { // no such class key - return errors.Wrapf(httperrors.ErrConflict, "destination has extra class key %s", k) + metadata[k] = "None" + // return errors.Wrapf(httperrors.ErrConflict, "destination has extra class key %s", k) } } } - userCred := auth.AdminCredential() + // userCred := auth.AdminCredential() return dest.SetClassMetadataAll(ctx, metadata, userCred) } @@ -493,12 +504,16 @@ func (model *SStandaloneAnonResourceBase) IsInSameClass(ctx context.Context, pMo return IsInSameClass(ctx, model, pModel) } -func (model *SStandaloneAnonResourceBase) SetSysCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential) error { +func (model *SStandaloneAnonResourceBase) SetSysCloudMetadataAll(ctx context.Context, dictstore map[string]string, userCred mcclient.TokenCredential, readOnly bool) error { dictStore, err := ensurePrefixString(dictstore, SYS_CLOUD_TAG_PREFIX) if err != nil { return errors.Wrap(err, "ensurePrefixString") } - err = Metadata.SetAll(ctx, model, dictStore, userCred, SYS_CLOUD_TAG_PREFIX) + if readOnly { + err = Metadata.SetAllWithoutDelelte(ctx, model, dictStore, userCred) + } else { + err = Metadata.SetAll(ctx, model, dictStore, userCred, SYS_CLOUD_TAG_PREFIX) + } if err != nil { return errors.Wrap(err, "SetAll") } @@ -684,24 +699,21 @@ type sPolicyTags struct { func (model *SStandaloneAnonResourceBase) PostUpdate(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) { model.SResourceBase.PostUpdate(ctx, userCred, query, data) - meta := make(map[string]string) - err := data.Unmarshal(&meta, "__meta__") - if err == nil { - model.PerformMetadata(ctx, userCred, nil, meta) - } - - model.applyPolicyTags(ctx, userCred, data) + model.TrySaveMetadataInput(ctx, userCred, data) } func (model *SStandaloneAnonResourceBase) PostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, data jsonutils.JSONObject) { model.SResourceBase.PostCreate(ctx, userCred, ownerId, query, data) + model.TrySaveMetadataInput(ctx, userCred, data) +} + +func (model *SStandaloneAnonResourceBase) TrySaveMetadataInput(ctx context.Context, userCred mcclient.TokenCredential, data jsonutils.JSONObject) { meta := make(map[string]string) err := data.Unmarshal(&meta, "__meta__") if err == nil { model.PerformMetadata(ctx, userCred, nil, meta) } - model.applyPolicyTags(ctx, userCred, data) } @@ -710,12 +722,12 @@ func (model *SStandaloneAnonResourceBase) applyPolicyTags(ctx context.Context, u data.Unmarshal(&tags) log.Debugf("applyPolicyTags: %s", jsonutils.Marshal(tags)) if len(tags.PolicyObjectTags) > 0 { - model.PerformMetadata(ctx, userCred, nil, tagutils.Tagset2MapString(tags.PolicyObjectTags.Flattern())) + model.PerformMetadata(ctx, userCred, nil, tagutils.TagsetMap2MapString(tags.PolicyObjectTags.Flattern())) } if model.Keyword() == "project" && len(tags.PolicyProjectTags) > 0 { - model.PerformMetadata(ctx, userCred, nil, tagutils.Tagset2MapString(tags.PolicyProjectTags.Flattern())) + model.PerformMetadata(ctx, userCred, nil, tagutils.TagsetMap2MapString(tags.PolicyProjectTags.Flattern())) } else if model.Keyword() == "domain" && len(tags.PolicyDomainTags) > 0 { - model.PerformMetadata(ctx, userCred, nil, tagutils.Tagset2MapString(tags.PolicyDomainTags.Flattern())) + model.PerformMetadata(ctx, userCred, nil, tagutils.TagsetMap2MapString(tags.PolicyDomainTags.Flattern())) } } @@ -932,6 +944,7 @@ func (manager *SStandaloneAnonResourceBaseManager) GetPropertyTagValueTree( manager.GetIStandaloneModelManager(), manager.Keyword(), "id", + "", ctx, userCred, query, @@ -942,6 +955,7 @@ func GetPropertyTagValueTree( manager IModelManager, tagObjType string, tagIdField string, + sumField string, ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, @@ -952,7 +966,7 @@ func GetPropertyTagValueTree( return nil, errors.Wrap(err, "Unmarshal") } - valueMap, err := GetTagValueCountMap(manager, tagObjType, tagIdField, input.Keys, ctx, userCred, query) + valueMap, err := GetTagValueCountMap(manager, tagObjType, tagIdField, sumField, input.Keys, ctx, userCred, query) if err != nil { return nil, errors.Wrap(err, "AllStringAmp") } @@ -969,21 +983,36 @@ func GetTagValueCountMap( manager IModelManager, tagObjType string, tagIdField string, + sumField string, keys []string, ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, ) ([]map[string]string, error) { var err error - objSubQ := manager.Query().SubQuery() - objQ := objSubQ.Query(objSubQ.Field(tagIdField), sqlchemy.COUNT("_sub_count_")) + objQ := manager.NewQuery(ctx, userCred, query, false) objQ, err = ListItemQueryFilters(manager, ctx, objQ, userCred, query, policy.PolicyActionList) if err != nil { return nil, errors.Wrap(err, "ListItemQueryFilters") } - objQ = objQ.GroupBy(objSubQ.Field(tagIdField)) - q := objQ.SubQuery().Query(sqlchemy.SUM(tagValueCountKey, objQ.Field("_sub_count_"))) - metadataSQ := Metadata.Query().Equals("obj_type", tagObjType).In("key", keys).SubQuery() + objSubQ := objQ.SubQuery().Query() + objSubQ = objSubQ.AppendField(objSubQ.Field(tagIdField)) + objSubQ = objSubQ.GroupBy(objSubQ.Field(tagIdField)) + var sumFieldQ sqlchemy.IQueryField + if len(sumField) > 0 { + sumFieldQ = sqlchemy.SUM("_sub_count_", objSubQ.Field(sumField)) + } else { + sumFieldQ = sqlchemy.COUNT("_sub_count_") + } + objSubQ = objSubQ.AppendField(sumFieldQ) + + objSubQ.DebugQuery2("GetTagValueCountMap objSubQ") + + q := objSubQ.SubQuery().Query() + q = q.AppendField(sqlchemy.SUM(tagValueCountKey, q.Field("_sub_count_"))) + + metadataMan := GetMetadaManagerInContext(ctx) + metadataSQ := metadataMan.Query().Equals("obj_type", tagObjType).In("key", keys).SubQuery() groupBy := make([]interface{}, 0) for i, key := range keys { valueFieldName := TagValueKey(i) @@ -998,6 +1027,9 @@ func GetTagValueCountMap( groupBy = append(groupBy, q.Field(valueFieldName)) } q = q.GroupBy(groupBy...) + + q.DebugQuery2("GetTagValueCountMap") + valueMap, err := q.AllStringMap() if err != nil { return nil, errors.Wrap(err, "AllStringAmp") diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusbase.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusbase.go index 3671ce7f4..11083b516 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusbase.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusbase.go @@ -17,6 +17,7 @@ package db import ( "context" "fmt" + "strings" "yunion.io/x/jsonutils" "yunion.io/x/pkg/errors" @@ -68,8 +69,8 @@ func (model SStatusResourceBase) GetProgress() float32 { return model.Progress } -func StatusBaseSetStatus(model IStatusBaseModel, userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model, userCred, status, reason) +func StatusBaseSetStatus(ctx context.Context, model IStatusBaseModel, userCred mcclient.TokenCredential, status string, reason string) error { + return statusBaseSetStatus(ctx, model, userCred, status, reason) } func statusBaseSetProgress(model IStatusBaseModel, progress float32) error { @@ -83,7 +84,7 @@ func statusBaseSetProgress(model IStatusBaseModel, progress float32) error { return nil } -func statusBaseSetStatus(model IStatusBaseModel, userCred mcclient.TokenCredential, status string, reason string) error { +func statusBaseSetStatus(ctx context.Context, model IStatusBaseModel, userCred mcclient.TokenCredential, status string, reason string) error { if model.GetStatus() == status { return nil } @@ -95,22 +96,27 @@ func statusBaseSetStatus(model IStatusBaseModel, userCred mcclient.TokenCredenti if err != nil { return errors.Wrap(err, "Update") } + CallStatusChanegdNotifyHook(ctx, userCred, oldStatus, status, model) if userCred != nil { notes := fmt.Sprintf("%s=>%s", oldStatus, status) if len(reason) > 0 { notes = fmt.Sprintf("%s: %s", notes, reason) } OpsLog.LogEvent(model, ACT_UPDATE_STATUS, notes, userCred) - logclient.AddSimpleActionLog(model, logclient.ACT_UPDATE_STATUS, notes, userCred, true) + success := true + if strings.Contains(status, "fail") || status == apis.STATUS_UNKNOWN { + success = false + } + logclient.AddSimpleActionLog(model, logclient.ACT_UPDATE_STATUS, notes, userCred, success) } return nil } -func StatusBasePerformStatus(model IStatusBaseModel, userCred mcclient.TokenCredential, input apis.PerformStatusInput) error { +func StatusBasePerformStatus(ctx context.Context, model IStatusBaseModel, userCred mcclient.TokenCredential, input apis.PerformStatusInput) error { if len(input.Status) == 0 { return httperrors.NewMissingParameterError("status") } - err := statusBaseSetStatus(model, userCred, input.Status, input.Reason) + err := statusBaseSetStatus(ctx, model, userCred, input.Status, input.Reason) if err != nil { return errors.Wrap(err, "statusBaseSetStatus") } @@ -118,13 +124,9 @@ func StatusBasePerformStatus(model IStatusBaseModel, userCred mcclient.TokenCred } func (model *SStatusResourceBase) IsInStatus(status ...string) bool { - return utils.IsInStringArray(model.Status, status) + return utils.IsInArray(model.Status, status) } -/*func (model *SStatusStandaloneResourceBase) AllowGetDetailsStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { - return IsAllowGetSpec(rbacutils.ScopeSystem, userCred, model, "status") -}*/ - // 获取资源状态 func (model *SStatusResourceBase) GetDetailsStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (apis.GetDetailsStatusOutput, error) { ret := apis.GetDetailsStatusOutput{} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusdomainresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusdomainresource.go index a39800127..cf966e162 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusdomainresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusdomainresource.go @@ -49,15 +49,15 @@ func (self *SStatusDomainLevelResourceBase) GetIStatusDomainLevelModel() IStatus // 更新资源状态 func (self *SStatusDomainLevelResourceBase) PerformStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformStatusInput) (jsonutils.JSONObject, error) { - err := StatusBasePerformStatus(self.GetIStatusDomainLevelModel(), userCred, input) + err := StatusBasePerformStatus(ctx, self.GetIStatusDomainLevelModel(), userCred, input) if err != nil { return nil, errors.Wrap(err, "StatusBasePerformStatus") } return nil, nil } -func (model *SStatusDomainLevelResourceBase) SetStatus(userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model.GetIStatusDomainLevelModel(), userCred, status, reason) +func (model *SStatusDomainLevelResourceBase) SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error { + return statusBaseSetStatus(ctx, model.GetIStatusDomainLevelModel(), userCred, status, reason) } func (manager *SStatusDomainLevelResourceBaseManager) ValidateCreateData( diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasresource.go index 3e879881b..088bad15b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasresource.go @@ -87,15 +87,15 @@ func (manager *SStatusInfrasResourceBaseManager) GetPropertyStatistics(ctx conte // 更新资源状态 func (self *SStatusInfrasResourceBase) PerformStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformStatusInput) (jsonutils.JSONObject, error) { - err := StatusBasePerformStatus(self.GetIStatusInfrasModel(), userCred, input) + err := StatusBasePerformStatus(ctx, self.GetIStatusInfrasModel(), userCred, input) if err != nil { return nil, errors.Wrap(err, "StatusBasePerformStatus") } return nil, nil } -func (model *SStatusInfrasResourceBase) SetStatus(userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model.GetIStatusInfrasModel(), userCred, status, reason) +func (model *SStatusInfrasResourceBase) SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error { + return statusBaseSetStatus(ctx, model.GetIStatusInfrasModel(), userCred, status, reason) } func (manager *SStatusInfrasResourceBaseManager) ValidateCreateData( diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasuserresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasuserresource.go index f76bbce20..937aa6ed8 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasuserresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusinfrasuserresource.go @@ -47,8 +47,8 @@ func NewStatusDomainLevelUserResourceBaseManager(dt interface{}, tableName strin } } -func (model *SStatusDomainLevelUserResourceBase) SetStatus(userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model, userCred, status, reason) +func (model *SStatusDomainLevelUserResourceBase) SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error { + return statusBaseSetStatus(ctx, model, userCred, status, reason) } func (manager *SStatusDomainLevelUserResourceBaseManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input apis.StatusDomainLevelUserResourceCreateInput) (apis.StatusDomainLevelUserResourceCreateInput, error) { @@ -60,7 +60,7 @@ func (manager *SStatusDomainLevelUserResourceBaseManager) ValidateCreateData(ctx return input, nil } -func (manager *SStatusDomainLevelUserResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *SStatusDomainLevelUserResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner != nil { switch scope { case rbacscope.ScopeProject, rbacscope.ScopeUser: diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusstandalone.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusstandalone.go index 7a5893db5..4fae88944 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusstandalone.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/statusstandalone.go @@ -87,15 +87,15 @@ func (manager *SStatusStandaloneResourceBaseManager) GetPropertyStatistics(ctx c // 更新资源状态 func (self *SStatusStandaloneResourceBase) PerformStatus(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, input apis.PerformStatusInput) (jsonutils.JSONObject, error) { - err := StatusBasePerformStatus(self.GetIStatusStandaloneModel(), userCred, input) + err := StatusBasePerformStatus(ctx, self.GetIStatusStandaloneModel(), userCred, input) if err != nil { return nil, errors.Wrap(err, "StatusBasePerformStatus") } return nil, nil } -func (model *SStatusStandaloneResourceBase) SetStatus(userCred mcclient.TokenCredential, status string, reason string) error { - return statusBaseSetStatus(model.GetIStatusStandaloneModel(), userCred, status, reason) +func (model *SStatusStandaloneResourceBase) SetStatus(ctx context.Context, userCred mcclient.TokenCredential, status string, reason string) error { + return statusBaseSetStatus(ctx, model.GetIStatusStandaloneModel(), userCred, status, reason) } func (model *SStatusStandaloneResourceBase) SetProgress(progress float32) error { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tablespec.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tablespec.go index 5c7254806..d6587be9f 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tablespec.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tablespec.go @@ -17,11 +17,13 @@ package db import ( "context" "reflect" + "runtime/debug" "time" "yunion.io/x/jsonutils" "yunion.io/x/log" "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/gotypes" "yunion.io/x/sqlchemy" api "yunion.io/x/onecloud/pkg/apis/notify" @@ -82,6 +84,13 @@ func newTableSpec(model interface{}, tableName string, indexField string, dateFi } } +func newClickhouseTableSpecFromMySQL(spec ITableSpec, name string, dbName sqlchemy.DBName, extraOpts sqlchemy.TableExtraOptions) ITableSpec { + itbl := sqlchemy.NewTableSpecFromISpecWithDBName(spec.(*sTableSpec).ITableSpec, name, dbName, extraOpts) + return &sTableSpec{ + ITableSpec: itbl, + } +} + func (ts *sTableSpec) GetSplitTable() *splitable.SSplitTableSpec { sts, ok := ts.ITableSpec.(*splitable.SSplitTableSpec) if ok { @@ -113,7 +122,13 @@ func (ts *sTableSpec) newInformerModel(dt interface{}) (*informer.ModelObject, e jointObj, isJoint := obj.(IJointModel) if isJoint { mObj := JointMaster(jointObj) + if gotypes.IsNil(mObj) { + return nil, errors.Errorf("object %#v master is nil", obj) + } sObj := JointSlave(jointObj) + if gotypes.IsNil(sObj) { + return nil, errors.Errorf("object %#v slave is nil", obj) + } return informer.NewJointModel(jointObj, jointObj.KeywordPlural(), mObj.GetId(), sObj.GetId()), nil } return informer.NewModel(obj, obj.KeywordPlural(), obj.GetId()), nil @@ -263,6 +278,7 @@ func (ts *sTableSpec) inform(ctx context.Context, dt interface{}, f func(ctx con obj, err := ts.newInformerModel(dt) if err != nil { log.Warningf("newInformerModel error: %v", err) + debug.PrintStack() return } if err := f(ctx, obj); err != nil { @@ -284,6 +300,7 @@ func (ts *sTableSpec) informUpdate(ctx context.Context, dt interface{}, oldObj * obj, err := ts.newInformerModel(dt) if err != nil { log.Warningf("newInformerModel error: %v", err) + debug.PrintStack() return } if err := informer.Update(ctx, obj, oldObj); err != nil { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tagvaluetree.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tagvaluetree.go index e65a7db66..9f95a7027 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tagvaluetree.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tagvaluetree.go @@ -33,7 +33,7 @@ func TagValueKey(idx int) string { type sTagValueTreeNode struct { Key string `json:"key"` Value string `json:"value"` - Count int `json:"count"` + Count float64 `json:"count"` Tags tagutils.TTagSet `json:"tags"` Children []*sTagValueTreeNode `json:"children"` @@ -100,7 +100,7 @@ func constructTree(data []map[string]string, keys []string) *sTagValueTreeNode { } func processOneRow(node *sTagValueTreeNode, row map[string]string, keys []string) { - rowCount, _ := strconv.Atoi(row[tagValueCountKey]) + rowCount, _ := strconv.ParseFloat(row[tagValueCountKey], 64) node.Count += rowCount for i := range keys { key := keys[i] diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/localtaskworker.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/localtaskworker.go index 75e1365ba..200a0b09a 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/localtaskworker.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/localtaskworker.go @@ -15,13 +15,17 @@ package taskman import ( + "context" "fmt" "runtime/debug" "yunion.io/x/jsonutils" "yunion.io/x/log" + "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/util/version" "yunion.io/x/onecloud/pkg/appsrv" + "yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf" ) var localTaskWorkerMan *appsrv.SWorkerManager @@ -48,6 +52,7 @@ func (t *localTask) Run() { defer func() { if r := recover(); r != nil { + yunionconf.BugReport.SendBugReport(context.Background(), version.GetShortString(), string(debug.Stack()), errors.Errorf("%s", r)) log.Errorf("LocalTaskRun error: %s", r) debug.PrintStack() t.task.ScheduleRun(Error2TaskData(fmt.Errorf("LocalTaskRun error: %s", r))) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/tasks.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/tasks.go index 02691d567..13ecbd7b8 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/tasks.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/taskman/tasks.go @@ -47,6 +47,7 @@ import ( "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" + "yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf" "yunion.io/x/onecloud/pkg/util/logclient" ) @@ -124,10 +125,6 @@ func (manager *STaskManager) FilterByName(q *sqlchemy.SQuery, name string) *sqlc return q } -func (manager *STaskManager) AllowPerformAction(ctx context.Context, userCred mcclient.TokenCredential, action string, query jsonutils.JSONObject, data jsonutils.JSONObject) bool { - return true -} - func (manager *STaskManager) PerformAction(ctx context.Context, userCred mcclient.TokenCredential, taskId string, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { err := runTask(taskId, data) if err != nil { @@ -152,7 +149,7 @@ func (self *STask) GetOwnerId() mcclient.IIdentityProvider { return &owner } -func (manager *STaskManager) FilterByOwner(q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *STaskManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man db.FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner != nil { switch scope { case rbacscope.ScopeProject: @@ -172,10 +169,6 @@ func (manager *STaskManager) FetchTaskById(taskId string) *STask { return manager.fetchTask(taskId) } -func (self *STask) AllowGetDetails(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool { - return db.IsAdminAllowGet(ctx, userCred, self) || userCred.GetProjectId() == self.UserCred.GetProjectId() -} - func (self *STask) AllowUpdateItem(ctx context.Context, userCred mcclient.TokenCredential) bool { return false } @@ -449,36 +442,32 @@ func execITask(taskValue reflect.Value, task *STask, odata jsonutils.JSONObject, data = jsonutils.NewDict() } - var stageName string + stageName := task.Stage if taskFailed { stageName = fmt.Sprintf("%sFailed", task.Stage) - } else { - stageName = task.Stage + if strings.Contains(stageName, "_") { + stageName = fmt.Sprintf("%s_failed", task.Stage) + } + } + + if strings.Contains(stageName, "_") { + stageName = utils.Kebab2Camel(stageName, "_") } funcValue := taskValue.MethodByName(stageName) if !funcValue.IsValid() || funcValue.IsNil() { - log.Debugf("Stage %s not found, try kebab to camel and find again", stageName) + msg := fmt.Sprintf("Stage %s not found", stageName) if taskFailed { - stageName = fmt.Sprintf("%s_failed", task.Stage) - } - stageName = utils.Kebab2Camel(stageName, "_") - funcValue = taskValue.MethodByName(stageName) - - if !funcValue.IsValid() || funcValue.IsNil() { - msg := fmt.Sprintf("Stage %s not found", stageName) - if taskFailed { - // failed handler is optional, ignore the error - log.Warningf(msg) - msg, _ = data.GetString() - } else { - log.Errorf(msg) - } - task.SetStageFailed(ctx, jsonutils.NewString(msg)) - task.SaveRequestContext(&ctxData) - return + // failed handler is optional, ignore the error + log.Warningf(msg) + msg, _ = data.GetString() + } else { + log.Errorf(msg) } + task.SetStageFailed(ctx, jsonutils.NewString(msg)) + task.SaveRequestContext(&ctxData) + return } objManager := db.GetModelManager(task.ObjName) @@ -556,6 +545,7 @@ func execITask(taskValue reflect.Value, task *STask, odata jsonutils.JSONObject, if r := recover(); r != nil { // call set stage failed, should not call task.SetStageFailed // func SetStageFailed may be overloading + yunionconf.BugReport.SendBugReport(ctx, version.GetShortString(), string(debug.Stack()), errors.Errorf("%s", r)) log.Errorf("Task %s PANIC on stage %s: %v \n%s", task.TaskName, stageName, r, debug.Stack()) SetStageFailedFuncValue := taskValue.MethodByName("SetStageFailed") SetStageFailedFuncValue.Call( @@ -570,7 +560,7 @@ func execITask(taskValue reflect.Value, task *STask, odata jsonutils.JSONObject, } statusObj, ok := obj.(db.IStatusStandaloneModel) if ok { - db.StatusBaseSetStatus(statusObj, task.GetUserCred(), apis.STATUS_UNKNOWN, fmt.Sprintf("%v", r)) + db.StatusBaseSetStatus(ctx, statusObj, task.GetUserCred(), apis.STATUS_UNKNOWN, fmt.Sprintf("%v", r)) } notes := map[string]interface{}{ "Stack": string(debug.Stack()), diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcache.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcache.go index 35451fa66..93dbecf35 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcache.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcache.go @@ -191,6 +191,14 @@ func (t *STenant) IsExpired() bool { } func (manager *STenantCacheManager) FetchTenantByIdOrNameInDomain(ctx context.Context, idStr string, domainId string) (*STenant, error) { + if !stringutils2.IsUtf8(idStr) { + t, err := manager.FetchTenantById(ctx, idStr) + if t != nil { + return t, nil + } else if err != nil && errors.Cause(err) != sql.ErrNoRows { + return nil, errors.Wrap(err, "FetchTenantById") + } + } return manager.fetchTenant(ctx, idStr, domainId, false, false, func(q *sqlchemy.SQuery) *sqlchemy.SQuery { if stringutils2.IsUtf8(idStr) { return q.Equals("name", idStr) @@ -236,6 +244,7 @@ func (manager *STenantCacheManager) fetchTenantFromKeystone(ctx context.Context, if len(domainId) > 0 { query.Set("domain_id", jsonutils.NewString(domainId)) } + query.Set("pending_delete", jsonutils.NewString("all")) s := auth.GetAdminSession(ctx, consts.GetRegion()) tenant, err := modules.Projects.GetById(s, idStr, query) @@ -335,12 +344,24 @@ func (manager *STenantCacheManager) Save(ctx context.Context, item SCachedTenant log.Errorf("FetchTenantbyId fail %s", err) return nil, errors.Wrapf(err, "TenantCache FetchById %s", item.Id) } + // clean cache metadata + if item.PendingDeleted && saveMeta { + for k := range item.Metadata { + if strings.HasPrefix(k, USER_TAG_PREFIX) { + item.Metadata[k] = "none" + } + } + } now := time.Now().UTC() if err == nil { obj := objo.(*STenant) if obj.Id == item.Id && obj.Name == item.Name && obj.Domain == item.ProjectDomain && obj.DomainId == item.DomainId { Update(obj, func() error { obj.LastCheck = now + obj.PendingDeleted = item.PendingDeleted + if obj.PendingDeleted { + obj.PendingDeletedAt = item.PendingDeletedAt + } return nil }) if saveMeta { @@ -354,6 +375,10 @@ func (manager *STenantCacheManager) Save(ctx context.Context, item SCachedTenant obj.Domain = item.ProjectDomain obj.DomainId = item.DomainId obj.LastCheck = now + obj.PendingDeleted = item.PendingDeleted + if obj.PendingDeleted { + obj.PendingDeletedAt = item.PendingDeletedAt + } return nil }) if err != nil { @@ -372,6 +397,10 @@ func (manager *STenantCacheManager) Save(ctx context.Context, item SCachedTenant obj.Domain = item.ProjectDomain obj.DomainId = item.DomainId obj.LastCheck = now + obj.PendingDeleted = item.PendingDeleted + if obj.PendingDeleted { + obj.PendingDeletedAt = item.PendingDeletedAt + } err = manager.TableSpec().InsertOrUpdate(ctx, obj) if err != nil { return nil, errors.Wrap(err, "InsertOrUpdate") @@ -431,6 +460,7 @@ func (manager *STenantCacheManager) fetchDomainTenantsFromKeystone(ctx context.C params := jsonutils.NewDict() params.Add(jsonutils.NewString(domainId), "domain_id") params.Add(jsonutils.JSONTrue, "details") + params.Add(jsonutils.NewString("all"), "pending_delete") tenants, err := modules.Projects.List(s, params) if err != nil { return errors.Wrap(err, "Projects.List") @@ -550,3 +580,29 @@ func (tenant *STenant) GetAllClassMetadata() (map[string]string, error) { } return ret, nil } + +func (manager *STenantCacheManager) ConvertIds(ids []string, isDomain bool) ([]string, error) { + var q *sqlchemy.SQuery + if isDomain { + q = manager.GetDomainQuery("id") + } else { + q = manager.GetTenantQuery("id") + } + q = q.Filter(sqlchemy.OR( + sqlchemy.In(q.Field("id"), stringutils2.RemoveUtf8Strings(ids)), + sqlchemy.In(q.Field("name"), ids), + )) + q = q.Distinct() + results := []struct { + Id string + }{} + err := q.All(&results) + if err != nil { + return nil, errors.Wrap(err, "query") + } + ret := make([]string, len(results)) + for i := range results { + ret[i] = results[i].Id + } + return ret, nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcacheitem.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcacheitem.go index 9f7d4e67d..f8f5e12e0 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcacheitem.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcacheitem.go @@ -14,14 +14,20 @@ package db -import identityapi "yunion.io/x/onecloud/pkg/apis/identity" +import ( + "time" + + identityapi "yunion.io/x/onecloud/pkg/apis/identity" +) type SCachedTenant struct { - Id string `json:"id"` - Name string `json:"name"` - DomainId string `json:"domain_id"` - ProjectDomain string `json:"project_domain"` - Metadata map[string]string `json:"metadata"` + Id string `json:"id"` + Name string `json:"name"` + DomainId string `json:"domain_id"` + ProjectDomain string `json:"project_domain"` + Metadata map[string]string `json:"metadata"` + PendingDeleted bool `json:"pending_deleted"` + PendingDeletedAt time.Time `json:"pending_deleted_at"` } func (s SCachedTenant) objType() string { @@ -31,3 +37,8 @@ func (s SCachedTenant) objType() string { return "project" } } + +type SCachedUser struct { + SCachedTenant + Lang string +} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcachesync.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcachesync.go index 183546749..7615d73a1 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcachesync.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/tenantcachesync.go @@ -35,7 +35,6 @@ var ( ) func StartTenantCacheSync(ctx context.Context, intvalSeconds int) { - go runTenantCacheSync(ctx, intvalSeconds) } @@ -62,6 +61,10 @@ func (w *tenantCacheSyncWorker) Run() { if err != nil { log.Errorf("fail to syncProjects %s", err) } + err = syncUsers(w.ctx) + if err != nil { + log.Errorf("fail to syncUsers %s", err) + } } func (w *tenantCacheSyncWorker) Dump() string { @@ -74,23 +77,32 @@ func syncDomains(ctx context.Context) error { query.Add(jsonutils.NewInt(1024), "limit") query.Add(jsonutils.NewString(string(rbacscope.ScopeSystem)), "scope") query.Add(jsonutils.JSONTrue, "details") + query.Add(jsonutils.NewString("all"), "pending_delete") + query.Add(jsonutils.NewString("all"), "delete") total := -1 offset := 0 for total < 0 || offset < total { query.Set("offset", jsonutils.NewInt(int64(offset))) results, err := modules.Domains.List(s, query) if err != nil { - log.Errorf("syncDomain error %s", err) return errors.Wrap(err, "Domains.List") } total = results.Total for i := range results.Data { // update domain cache item := SCachedTenant{} - results.Data[i].Unmarshal(&item) - item.ProjectDomain = identityapi.KeystoneDomainRoot - item.DomainId = identityapi.KeystoneDomainRoot - TenantCacheManager.Save(ctx, item, true) + deleted := jsonutils.QueryBoolean(results.Data[i], "deleted", false) + err := results.Data[i].Unmarshal(&item) + if err == nil && !deleted { + item.ProjectDomain = identityapi.KeystoneDomainRoot + item.DomainId = identityapi.KeystoneDomainRoot + TenantCacheManager.Save(ctx, item, true) + } else if deleted { + tenantObj, _ := TenantCacheManager.FetchById(item.Id) + if tenantObj != nil { + tenantObj.Delete(ctx, nil) + } + } offset++ } } @@ -103,21 +115,66 @@ func syncProjects(ctx context.Context) error { query.Add(jsonutils.NewInt(1024), "limit") query.Add(jsonutils.NewString(string(rbacscope.ScopeSystem)), "scope") query.Add(jsonutils.JSONTrue, "details") + query.Add(jsonutils.NewString("all"), "pending_delete") + query.Add(jsonutils.NewString("all"), "delete") total := -1 offset := 0 for total < 0 || offset < total { query.Set("offset", jsonutils.NewInt(int64(offset))) results, err := modules.Projects.List(s, query) if err != nil { - log.Errorf("syncProjects error %s", err) return errors.Wrap(err, "Projects.List") } total = results.Total for i := range results.Data { // update project cache item := SCachedTenant{} - results.Data[i].Unmarshal(&item) - TenantCacheManager.Save(ctx, item, true) + deleted := jsonutils.QueryBoolean(results.Data[i], "deleted", false) + err := results.Data[i].Unmarshal(&item) + if err == nil && !deleted { + TenantCacheManager.Save(ctx, item, true) + } else if deleted { + tenantObj, _ := TenantCacheManager.FetchById(item.Id) + if tenantObj != nil { + tenantObj.Delete(ctx, nil) + } + } + offset++ + } + } + return nil +} + +func syncUsers(ctx context.Context) error { + s := auth.GetAdminSession(ctx, consts.GetRegion()) + query := jsonutils.NewDict() + query.Add(jsonutils.NewInt(1024), "limit") + query.Add(jsonutils.NewString(string(rbacscope.ScopeSystem)), "scope") + query.Add(jsonutils.JSONTrue, "details") + query.Add(jsonutils.NewString("all"), "pending_delete") + query.Add(jsonutils.NewString("all"), "delete") + total := -1 + offset := 0 + for total < 0 || offset < total { + query.Set("offset", jsonutils.NewInt(int64(offset))) + results, err := modules.UsersV3.List(s, query) + if err != nil { + return errors.Wrap(err, "UsersV3.List") + } + total = results.Total + for i := range results.Data { + // update user cache + item := SCachedUser{} + deleted := jsonutils.QueryBoolean(results.Data[i], "deleted", false) + err := results.Data[i].Unmarshal(&item) + if err == nil && !deleted { + UserCacheManager.Save(ctx, item.Id, item.Name, item.DomainId, item.ProjectDomain, item.Lang) + } else if deleted { + usrObj, _ := UserCacheManager.FetchById(item.Id) + if usrObj != nil { + usrObj.Delete(ctx, nil) + } + } offset++ } } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/usercache.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/usercache.go index ac6342396..98070da1e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/usercache.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/usercache.go @@ -124,6 +124,7 @@ func (manager *SUserCacheManager) FetchUserFromKeystone(ctx context.Context, idS query := jsonutils.NewDict() query.Set("scope", jsonutils.NewString("system")) query.Set("system", jsonutils.JSONTrue) + query.Set("pending_delete", jsonutils.NewString("all")) s := auth.GetAdminSession(ctx, consts.GetRegion()) user, err := modules.UsersV3.GetById(s, idStr, query) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/userresources.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/userresources.go index e89908808..08b0abe31 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/userresources.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/userresources.go @@ -125,7 +125,7 @@ func (manager *SUserResourceBaseManager) FetchCustomizeColumns( return rows } -func (manager *SUserResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *SUserResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner != nil { if scope == rbacscope.ScopeUser { if len(owner.GetUserId()) > 0 { @@ -149,12 +149,12 @@ func (manager *SUserResourceBaseManager) GetIUserModelManager() IUserModelManage return manager.GetVirtualObject().(IUserModelManager) } -func (manager *SUserResourceBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { - return FetchByName(manager, userCred, idStr) +func (manager *SUserResourceBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { + return FetchByName(ctx, manager, userCred, idStr) } -func (manager *SUserResourceBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { - return FetchByIdOrName(manager, userCred, idStr) +func (manager *SUserResourceBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { + return FetchByIdOrName(ctx, manager, userCred, idStr) } func (manager *SUserResourceBaseManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input apis.UserResourceCreateInput) (apis.UserResourceCreateInput, error) { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualjointbase.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualjointbase.go index 19afe5add..deccf4731 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualjointbase.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualjointbase.go @@ -59,12 +59,12 @@ func (manager *SVirtualJointResourceBaseManager) AllowAttach(ctx context.Context return false } -func (manager *SVirtualJointResourceBaseManager) FilterByOwner(q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { +func (manager *SVirtualJointResourceBaseManager) FilterByOwner(ctx context.Context, q *sqlchemy.SQuery, man FilterByOwnerProvider, userCred mcclient.TokenCredential, owner mcclient.IIdentityProvider, scope rbacscope.TRbacScope) *sqlchemy.SQuery { if owner != nil { masterQ := manager.GetMasterManager().Query("id") - masterQ = manager.GetMasterManager().FilterByOwner(masterQ, manager.GetMasterManager(), userCred, owner, scope) + masterQ = manager.GetMasterManager().FilterByOwner(ctx, masterQ, manager.GetMasterManager(), userCred, owner, scope) slaveQ := manager.GetSlaveManager().Query("id") - slaveQ = manager.GetSlaveManager().FilterByOwner(slaveQ, manager.GetSlaveManager(), userCred, owner, scope) + slaveQ = manager.GetSlaveManager().FilterByOwner(ctx, slaveQ, manager.GetSlaveManager(), userCred, owner, scope) iManager := manager.GetIJointModelManager() q = q.In(iManager.GetMasterFieldName(), masterQ.SubQuery()) q = q.In(iManager.GetSlaveFieldName(), slaveQ.SubQuery()) diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualresource.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualresource.go index 80460e533..a7d9be80b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualresource.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/db/virtualresource.go @@ -16,20 +16,16 @@ package db import ( "context" - "strings" - "time" "yunion.io/x/jsonutils" "yunion.io/x/log" "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/rbacscope" - "yunion.io/x/pkg/util/timeutils" "yunion.io/x/pkg/utils" "yunion.io/x/sqlchemy" "yunion.io/x/onecloud/pkg/apis" "yunion.io/x/onecloud/pkg/cloudcommon/consts" - "yunion.io/x/onecloud/pkg/cloudcommon/db/lockman" "yunion.io/x/onecloud/pkg/cloudcommon/policy" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" @@ -40,6 +36,7 @@ import ( type SVirtualResourceBaseManager struct { SStatusStandaloneResourceBaseManager SProjectizedResourceBaseManager + SPendingDeletedBaseManager } func NewVirtualResourceBaseManager(dt interface{}, tableName string, keyword string, keywordPlural string) SVirtualResourceBaseManager { @@ -52,6 +49,7 @@ func NewVirtualResourceBaseManager(dt interface{}, tableName string, keyword str type SVirtualResourceBase struct { SStatusStandaloneResourceBase SProjectizedResourceBase + SPendingDeletedBase // 云上同步资源是否在本地被更改过配置, local: 更改过, cloud: 未更改过 // example: local @@ -60,10 +58,6 @@ type SVirtualResourceBase struct { // 是否是系统资源 IsSystem bool `nullable:"true" default:"false" list:"admin" create:"optional" json:"is_system"` - // 资源放入回收站时间 - PendingDeletedAt time.Time `json:"pending_deleted_at" list:"user" update:"admin"` - // 资源是否处于回收站中 - PendingDeleted bool `nullable:"false" default:"false" index:"true" get:"user" list:"user" json:"pending_deleted"` // 资源是否被冻结 Freezed bool `nullable:"false" default:"false" get:"user" list:"user" json:"freezed"` } @@ -215,38 +209,16 @@ func (model *SVirtualResourceBase) SetProjectInfo(ctx context.Context, userCred func (manager *SVirtualResourceBaseManager) FilterBySystemAttributes(q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject, scope rbacscope.TRbacScope) *sqlchemy.SQuery { q = manager.SStatusStandaloneResourceBaseManager.FilterBySystemAttributes(q, userCred, query, scope) - - var pendingDelete string - if query != nil { - pendingDelete, _ = query.GetString("pending_delete") - } - pendingDeleteLower := strings.ToLower(pendingDelete) - if pendingDeleteLower == "all" || pendingDeleteLower == "any" || utils.ToBool(pendingDeleteLower) { - var isAllow bool - allowScope, result := policy.PolicyManager.AllowScope(userCred, consts.GetServiceType(), manager.KeywordPlural(), policy.PolicyActionList, "pending_delete") - if result.Result.IsAllow() && !scope.HigherThan(allowScope) { - isAllow = true - } - if !isAllow { - pendingDeleteLower = "" - } - } - - if pendingDeleteLower == "all" || pendingDeleteLower == "any" { - } else if utils.ToBool(pendingDeleteLower) { - q = q.IsTrue("pending_deleted") - } else { - q = q.Filter(sqlchemy.OR(sqlchemy.IsNull(q.Field("pending_deleted")), sqlchemy.IsFalse(q.Field("pending_deleted")))) - } + q = manager.SPendingDeletedBaseManager.FilterBySystemAttributes(manager.GetIStandaloneModelManager(), q, userCred, query, scope) return q } -func (manager *SVirtualResourceBaseManager) FetchByName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { - return FetchByName(manager, userCred, idStr) +func (manager *SVirtualResourceBaseManager) FetchByName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { + return FetchByName(ctx, manager, userCred, idStr) } -func (manager *SVirtualResourceBaseManager) FetchByIdOrName(userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { - return FetchByIdOrName(manager, userCred, idStr) +func (manager *SVirtualResourceBaseManager) FetchByIdOrName(ctx context.Context, userCred mcclient.IIdentityProvider, idStr string) (IModel, error) { + return FetchByIdOrName(ctx, manager, userCred, idStr) } func (manager *SVirtualResourceBaseManager) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, query jsonutils.JSONObject, input apis.VirtualResourceCreateInput) (apis.VirtualResourceCreateInput, error) { @@ -280,7 +252,7 @@ func (model *SVirtualResourceBase) PostCreate(ctx context.Context, userCred mccl log.Errorf("unable to GetTenantCache: %s", err.Error()) return } - err = InheritFromTo(ctx, project, model) + err = InheritFromTo(ctx, userCred, project, model) if err != nil { log.Errorf("unable to inherit class metadata from poject %s: %s", project.GetId(), err.Error()) } @@ -408,7 +380,7 @@ func (model *SVirtualResourceBase) PerformChangeOwner(ctx context.Context, userC } q := manager.Query().Equals("name", model.GetName()) - q = manager.FilterByOwner(q, manager, userCred, ownerId, manager.NamespaceScope()) + q = manager.FilterByOwner(ctx, q, manager, userCred, ownerId, manager.NamespaceScope()) q = manager.FilterBySystemAttributes(q, nil, nil, manager.ResourceScope()) q = q.NotEquals("id", model.GetId()) cnt, err := q.CountWithError() @@ -501,38 +473,20 @@ func (model *SVirtualResourceBase) PerformChangeOwner(ctx context.Context, userC } func (model *SVirtualResourceBase) DoPendingDelete(ctx context.Context, userCred mcclient.TokenCredential) error { - return model.MarkPendingDelete(ctx, userCred) -} - -func (model *SVirtualResourceBase) MarkPendingDelete(ctx context.Context, userCred mcclient.TokenCredential) error { if !model.PendingDeleted { - _, err := Update(model, func() error { - model.PendingDeleted = true - model.PendingDeletedAt = timeutils.UtcNow() - return nil - }) - if err != nil { - log.Errorf("MarkPendingDelete update fail %s", err) - return err - } - vm := model.GetIVirtualModel() - OpsLog.LogEvent(model, ACT_PENDING_DELETE, vm.GetShortDesc(ctx), userCred) - logclient.AddSimpleActionLog(model, logclient.ACT_PENDING_DELETE, vm.GetShortDesc(ctx), userCred, true) + return model.SPendingDeletedBase.MarkPendingDelete(model.GetIStandaloneModel(), ctx, userCred, "") } return nil } func (model *SVirtualResourceBase) Delete(ctx context.Context, userCred mcclient.TokenCredential) error { - if !model.PendingDeleted { - model.DoPendingDelete(ctx, userCred) + err := model.DoPendingDelete(ctx, userCred) + if err != nil { + return errors.Wrap(err, "DoPendingDelete") } return DeleteModel(ctx, userCred, model.GetIVirtualModel()) } -func (model *SVirtualResourceBase) AllowPerformCancelDelete(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool { - return false -} - func (model *SVirtualResourceBase) PerformCancelDelete(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) { if model.PendingDeleted && !model.Deleted { err := model.DoCancelPendingDelete(ctx, userCred) @@ -545,24 +499,8 @@ func (model *SVirtualResourceBase) PerformCancelDelete(ctx context.Context, user } func (model *SVirtualResourceBase) DoCancelPendingDelete(ctx context.Context, userCred mcclient.TokenCredential) error { - err := model.CancelPendingDelete(ctx, userCred) - //if err == nil { - // OpsLog.LogEvent(model, ACT_CANCEL_DELETE, model.GetShortDesc(ctx), userCred) - //} - return err -} - -func (model *SVirtualResourceBase) VirtualModelManager() IVirtualModelManager { - return model.GetModelManager().(IVirtualModelManager) -} - -func (model *SVirtualResourceBase) GetIVirtualModel() IVirtualModel { - return model.GetVirtualObject().(IVirtualModel) -} - -func (model *SVirtualResourceBase) CancelPendingDelete(ctx context.Context, userCred mcclient.TokenCredential) error { if model.PendingDeleted && !model.Deleted { - err := model.MarkCancelPendingDelete(ctx, userCred) + err := model.SPendingDeletedBase.MarkCancelPendingDelete(model.GetIStandaloneModel(), ctx, userCred) if err != nil { return errors.Wrap(err, "MarkCancelPendingDelete") } @@ -570,29 +508,12 @@ func (model *SVirtualResourceBase) CancelPendingDelete(ctx context.Context, user return nil } -func (model *SVirtualResourceBase) MarkCancelPendingDelete(ctx context.Context, userCred mcclient.TokenCredential) error { - manager := model.GetModelManager() - ownerId := model.GetOwnerId() - - lockman.LockRawObject(ctx, manager.Keyword(), "name") - defer lockman.ReleaseRawObject(ctx, manager.Keyword(), "name") +func (model *SVirtualResourceBase) VirtualModelManager() IVirtualModelManager { + return model.GetModelManager().(IVirtualModelManager) +} - newName, err := GenerateName(ctx, manager, ownerId, model.Name) - if err != nil { - return errors.Wrapf(err, "GenerateNam") - } - _, err = Update(model, func() error { - model.Name = newName - model.PendingDeleted = false - model.PendingDeletedAt = time.Time{} - return nil - }) - if err != nil { - return errors.Wrapf(err, "MarkCancelPendingDelete.Update") - } - vm := model.GetIVirtualModel() - OpsLog.LogEvent(model, ACT_CANCEL_DELETE, vm.GetShortDesc(ctx), userCred) - return nil +func (model *SVirtualResourceBase) GetIVirtualModel() IVirtualModel { + return model.GetVirtualObject().(IVirtualModel) } func (model *SVirtualResourceBase) GetShortDesc(ctx context.Context) *jsonutils.JSONDict { @@ -601,12 +522,21 @@ func (model *SVirtualResourceBase) GetShortDesc(ctx context.Context) *jsonutils. tc, _ := TenantCacheManager.FetchTenantById(ctx, model.ProjectId) if tc != nil { desc.Add(jsonutils.NewString(tc.GetName()), "owner_tenant") - metadata, _ := GetVisiableMetadata(ctx, tc, nil) + metadata, _ := GetVisibleMetadata(ctx, tc, nil) desc.Set("project_tags", jsonutils.Marshal(metadata)) } return desc } +func (model *SVirtualResourceBase) SetProjectSrc(src apis.TOwnerSource) { + if model.ProjectSrc != string(src) { + Update(model, func() error { + model.ProjectSrc = string(apis.OWNER_SOURCE_CLOUD) + return nil + }) + } +} + func (model *SVirtualResourceBase) SyncCloudProjectId(userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider) { if model.ProjectSrc != string(apis.OWNER_SOURCE_LOCAL) && ownerId != nil && len(ownerId.GetProjectId()) > 0 { diff, _ := Update(model, func() error { @@ -621,16 +551,6 @@ func (model *SVirtualResourceBase) SyncCloudProjectId(userCred mcclient.TokenCre } } -// GetPendingDeleted implements IPendingDeltable -func (model *SVirtualResourceBase) GetPendingDeleted() bool { - return model.PendingDeleted -} - -// GetPendingDeletedAt implements IPendingDeltable -func (model *SVirtualResourceBase) GetPendingDeletedAt() time.Time { - return model.PendingDeletedAt -} - func (manager *SVirtualResourceBaseManager) OrderByExtraFields(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query apis.VirtualResourceListInput) (*sqlchemy.SQuery, error) { q, err := manager.SStatusStandaloneResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.StatusStandaloneResourceListInput) if err != nil { @@ -735,6 +655,7 @@ func (manager *SVirtualResourceBaseManager) GetPropertyProjectTagValueTree( manager.GetIVirtualModelManager(), "project", "tenant_id", + "", ctx, userCred, query, diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/events.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/events.go index 7a641d9bf..40f1523a5 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/events.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/events.go @@ -63,10 +63,13 @@ var ( ActionPendingDelete = api.ActionPendingDelete - ActionSyncCreate = api.ActionSyncCreate - ActionSyncUpdate = api.ActionSyncUpdate - ActionSyncDelete = api.ActionSyncDelete - ActionSyncAccountStatus = api.ActionSyncAccountStatus + ActionSyncCreate = api.ActionSyncCreate + ActionSyncUpdate = api.ActionSyncUpdate + ActionSyncDelete = api.ActionSyncDelete + ActionSyncAccountStatus = api.ActionSyncAccountStatus + ActionIsolatedDeviceCreate = api.ActionIsolatedDeviceCreate + ActionIsolatedDeviceUpdate = api.ActionIsolatedDeviceUpdate + ActionIsolatedDeviceDelete = api.ActionIsolatedDeviceDelete ) type SEvent struct { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/notify.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/notify.go index b0841940a..fa4bad923 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/notify.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/notifyclient/notify.go @@ -55,6 +55,37 @@ func init() { Action: ActionUpdate, }) }) + + db.SetCustomizeNotifyHook(func(ctx context.Context, userCred mcclient.TokenCredential, action string, obj db.IModel, moreDetails jsonutils.JSONObject) { + _, ok := notifyDBHookResources.Load(obj.KeywordPlural()) + if !ok { + return + } + EventNotify(ctx, userCred, SEventNotifyParam{ + Obj: obj, + Action: api.SAction(action), + ObjDetailsDecorator: func(ctx context.Context, details *jsonutils.JSONDict) { + if moreDetails != nil { + details.Set("customize_details", moreDetails) + } + }, + }) + }) + + db.SetStatusChangedNotifyHook(func(ctx context.Context, userCred mcclient.TokenCredential, oldStatus, newStatus string, obj db.IModel) { + _, ok := notifyDBHookResources.Load(obj.KeywordPlural()) + if !ok { + return + } + EventNotify(ctx, userCred, SEventNotifyParam{ + Obj: obj, + Action: api.ActionStatusChanged, + ObjDetailsDecorator: func(ctx context.Context, details *jsonutils.JSONDict) { + details.Set("old_status", jsonutils.NewString(oldStatus)) + details.Set("new_status", jsonutils.NewString(newStatus)) + }, + }) + }) } func AddNotifyDBHookResources(keywordPlurals ...string) { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/manager.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/manager.go index 6a37c8f3f..a429451c4 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/manager.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/manager.go @@ -60,12 +60,12 @@ func StartOptionManager(option interface{}, refreshSeconds int, serviceType, ser } func StartOptionManagerWithSessionDriver(options interface{}, refreshSeconds int, serviceType, serviceVersion string, onChange TOptionsChangeFunc, session IServiceConfigSession) { - log.Infof("OptionManager start to fetch service configs ...") if refreshSeconds <= MIN_REFRESH_INTERVAL_SECONDS { // a minimal 30 seconds refresh interval refreshSeconds = MIN_REFRESH_INTERVAL_SECONDS } refreshInterval := time.Duration(refreshSeconds) * time.Second + log.Infof("OptionManager start to fetch service configs with interval %s ...", refreshInterval) OptionManager = &SOptionManager{ serviceType: serviceType, serviceVersion: serviceVersion, @@ -77,7 +77,9 @@ func StartOptionManagerWithSessionDriver(options interface{}, refreshSeconds int OptionManager.InitSync(OptionManager) - OptionManager.FirstSync() + if err := OptionManager.FirstSync(); err != nil { + log.Errorf("OptionManager.FirstSync error: %v", err) + } if session.IsRemote() { var opts *CommonOptions diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/mergeconf.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/mergeconf.go index 32d966ec8..79be8ea53 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/mergeconf.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/mergeconf.go @@ -80,17 +80,19 @@ func (s *mcclientServiceConfigSession) Merge(opts interface{}, serviceType strin region, _ := s.config.GetString("region") // epType, _ := s.config.GetString("session_endpoint_type") s.session = auth.GetAdminSession(context.Background(), region) - s.serviceId, _ = getServiceIdByType(s.session, serviceType, serviceVersion) - if len(s.serviceId) > 0 { - serviceConf, err := getServiceConfig(s.session, s.serviceId) - if err != nil { - log.Errorf("getServiceConfig for %s failed: %s", serviceType, err) - } else if serviceConf != nil { - s.config.Update(serviceConf) - merged = true - } else { - // not initialized - // s.Upload() + if len(serviceType) > 0 { + s.serviceId, _ = getServiceIdByType(s.session, serviceType, serviceVersion) + if len(s.serviceId) > 0 { + serviceConf, err := getServiceConfig(s.session, s.serviceId) + if err != nil { + log.Errorf("getServiceConfig for %s failed: %s", serviceType, err) + } else if serviceConf != nil { + s.config.Update(serviceConf) + merged = true + } else { + // not initialized + // s.Upload() + } } } s.commonServiceId, _ = getServiceIdByType(s.session, consts.COMMON_SERVICE, "") diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/options.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/options.go index 40d4ed386..0534d2958 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/options.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/options/options.go @@ -42,6 +42,7 @@ import ( "yunion.io/x/onecloud/pkg/cloudcommon/consts" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/util/atexit" + "yunion.io/x/onecloud/pkg/util/fileutils2" ) const ( @@ -116,6 +117,8 @@ type BaseOptions struct { PlatformName string `help:"identity name of this platform" default:"Cloudpods"` PlatformNames map[string]string `help:"identity name of this platform by language"` + + EnableAppProfiling bool `help:"enable profiling API" default:"false"` } const ( @@ -134,7 +137,7 @@ type CommonOptions struct { TenantCacheExpireSeconds int `help:"expire seconds of cached tenant/domain info. defailt 15 minutes" default:"900"` - SessionEndpointType string `help:"Client session end point type"` + SessionEndpointType string `help:"Client session end point type" default:"internal"` BaseOptions } @@ -147,7 +150,9 @@ type HostCommonOptions struct { EnableRemoteExecutor bool `help:"Enable remote executor" default:"false"` - ExecutorConnectTimeoutSeconds int `help:"executor client connection timeout in seconds, default is 30" default:"30"` + ExecutorConnectTimeoutSeconds int `help:"executor client connection timeout in seconds, default is 30" default:"30"` + EnableIsolatedDeviceWhitelist bool `help:"enable isolated device white list" default:"false"` + ImageDeployDriver string `help:"Image deploy driver" default:"qemu-kvm" choices:"qemu-kvm|nbd|libguestfs"` } type DBOptions struct { @@ -263,7 +268,15 @@ func (opt *DBOptions) GetClickhouseConnStr() (string, string, error) { return "clickhouse", opt.Clickhouse, nil } +func ParseOptionsIgnoreNoConfigfile(optStruct interface{}, args []string, configFileName string, serviceType string) { + parseOptions(optStruct, args, configFileName, serviceType, true) +} + func ParseOptions(optStruct interface{}, args []string, configFileName string, serviceType string) { + parseOptions(optStruct, args, configFileName, serviceType, false) +} + +func parseOptions(optStruct interface{}, args []string, configFileName string, serviceType string, ignoreNoConfigfile bool) { if len(serviceType) == 0 { log.Fatalf("ServiceType must provided!") } @@ -313,10 +326,14 @@ func ParseOptions(optStruct interface{}, args []string, configFileName string, s } if len(optionsRef.Config) > 0 { - log.Infof("Use configuration file: %s", optionsRef.Config) - err = parser.ParseFile(optionsRef.Config) - if err != nil { - log.Fatalf("Parse configuration file: %v", err) + if !fileutils2.Exists(optionsRef.Config) && !ignoreNoConfigfile { + log.Fatalf("Configuration file %s not exist", optionsRef.Config) + } else if fileutils2.Exists(optionsRef.Config) { + log.Infof("Use configuration file: %s", optionsRef.Config) + err = parser.ParseFile(optionsRef.Config) + if err != nil { + log.Fatalf("Parse configuration file: %v", err) + } } } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/policy.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/policy.go index a2109e6cb..00f9036de 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/policy.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/policy.go @@ -30,6 +30,7 @@ import ( "yunion.io/x/pkg/util/rbacscope" "yunion.io/x/onecloud/pkg/apis" + identity_api "yunion.io/x/onecloud/pkg/apis/identity" "yunion.io/x/onecloud/pkg/appsrv" "yunion.io/x/onecloud/pkg/cloudcommon/consts" "yunion.io/x/onecloud/pkg/httperrors" @@ -92,11 +93,34 @@ type sPolicyData struct { Policy jsonutils.JSONObject `json:"policy"` DomainTags tagutils.TTagSet `json:"domain_tags"` ProjectTags tagutils.TTagSet `json:"project_tags"` - ResourceTags tagutils.TTagSet `json:"resource_tags"` + ObjectTags tagutils.TTagSet `json:"resource_tags"` + + OrgNodes []identity_api.SOrganizationNodeInfo `json:"org_nodes"` } func (data sPolicyData) getPolicy() (*rbacutils.SPolicy, error) { - return rbacutils.DecodePolicyData(data.DomainTags, data.ProjectTags, data.ResourceTags, data.Policy) + var domainTags, projectTags, objectTags tagutils.TTagSetList + if len(data.DomainTags) > 0 { + domainTags = domainTags.Append(data.DomainTags) + } + if len(data.ProjectTags) > 0 { + projectTags = projectTags.Append(data.ProjectTags) + } + if len(data.ObjectTags) > 0 { + objectTags = objectTags.Append(data.ObjectTags) + } + for i := range data.OrgNodes { + orgNode := data.OrgNodes[i] + switch orgNode.Type { + case identity_api.OrgTypeDomain: + domainTags = domainTags.Append(orgNode.Tags) + case identity_api.OrgTypeProject: + projectTags = projectTags.Append(orgNode.Tags) + case identity_api.OrgTypeObject: + objectTags = objectTags.Append(orgNode.Tags) + } + } + return rbacutils.DecodePolicyData(domainTags, projectTags, objectTags, data.Policy) } func (manager *SPolicyManager) init(refreshInterval time.Duration, workerCount int) { @@ -339,6 +363,9 @@ func (manager *SPolicyManager) allowWithoutCache(policies rbacutils.TPolicySet, log.Warningf("no policies fetched for scope %s", scope) } else { matchRules = policies.GetMatchRules(service, resource, action, extra...) + if consts.IsRbacDebug() { + log.Debugf("service %s resource %s action %s extra %s matchRules: %s", service, resource, action, jsonutils.Marshal(extra), jsonutils.Marshal(matchRules)) + } } scopedDeny := false @@ -369,26 +396,31 @@ func (manager *SPolicyManager) allowWithoutCache(policies rbacutils.TPolicySet, matchRules = append(matchRules, rule) } - // try default policies - defaultPolicies, ok := manager.defaultPolicies[scope] - if ok { - for i := range defaultPolicies { - isMatched, _ := defaultPolicies[i].Match(userCred) - if !isMatched { - continue - } - rule := defaultPolicies[i].Rules.GetMatchRule(service, resource, action, extra...) - if rule != nil { - matchRules = append(matchRules, - rbacutils.SPolicyMatch{ - Rule: *rule, - }, - ) + result := matchRules.GetResult() + if result.Result.IsDeny() { + // denied, try default policies + defaultPolicies, ok := manager.defaultPolicies[scope] + if ok { + for i := range defaultPolicies { + isMatched, _ := defaultPolicies[i].Match(userCred) + if !isMatched { + continue + } + rule := defaultPolicies[i].Rules.GetMatchRule(service, resource, action, extra...) + if rule != nil { + if consts.IsRbacDebug() { + log.Debugf("service: %s resource: %s action: %s extra: %s match default policy: %s match rule: %s", service, resource, action, jsonutils.Marshal(extra), jsonutils.Marshal(defaultPolicies[i]), jsonutils.Marshal(rule)) + } + matchRules = append(matchRules, + rbacutils.SPolicyMatch{ + Rule: *rule, + }, + ) + } } } + result = matchRules.GetResult() } - - result := matchRules.GetResult() if consts.IsRbacDebug() { log.Debugf("[RBAC: %s] %s %s %s %s permission %s userCred: %s MatchRules: %d(%s)", scope, service, resource, action, jsonutils.Marshal(extra), result, userCred, len(matchRules), jsonutils.Marshal(matchRules)) } @@ -464,9 +496,9 @@ func explainPolicyInternal(userCred mcclient.TokenCredential, policyReq jsonutil result = rbacutils.PolicyDeny if match != nil { result.Result = match.Rule.Result - result.DomainTags = tagutils.TTagSetList{match.DomainTags} - result.ProjectTags = tagutils.TTagSetList{match.ProjectTags} - result.ObjectTags = tagutils.TTagSetList{match.ObjectTags} + result.DomainTags = match.DomainTags + result.ProjectTags = match.ProjectTags + result.ObjectTags = match.ObjectTags } } } diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/token.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/token.go index d7b972e86..c1bc42cc5 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/token.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/policy/token.go @@ -22,7 +22,6 @@ import ( "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" - "yunion.io/x/onecloud/pkg/util/rbacutils" ) type SPolicyTokenCredential struct { @@ -34,13 +33,13 @@ func (self *SPolicyTokenCredential) HasSystemAdminPrivilege() bool { return PolicyManager.IsScopeCapable(self.TokenCredential, rbacscope.ScopeSystem) } -func (self *SPolicyTokenCredential) IsAllow(targetScope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { +/*func (self *SPolicyTokenCredential) IsAllow(targetScope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { allowScope, result := PolicyManager.AllowScope(self.TokenCredential, service, resource, action, extra...) if result.Result == rbacutils.Allow && !targetScope.HigherThan(allowScope) { return result } return rbacutils.PolicyDeny -} +}*/ func init() { gotypes.RegisterSerializableTransformer(mcclient.TokenCredentialType, func(input gotypes.ISerializable) gotypes.ISerializable { diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/types/nic.go b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/types/nic.go index 648acf84b..f6896cdd2 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/types/nic.go +++ b/vendor/yunion.io/x/onecloud/pkg/cloudcommon/types/nic.go @@ -17,32 +17,45 @@ package types import ( "net" + "yunion.io/x/cloudmux/pkg/apis/compute" "yunion.io/x/pkg/util/netutils" ) type SNic struct { - Type string `json:"nic_type"` + Type compute.TNicType `json:"nic_type"` + Domain string `json:"domain"` Wire string `json:"wire"` IpAddr string `json:"ip_addr"` WireId string `json:"wire_id"` NetId string `json:"net_id"` - Rate int64 `json:"rate"` - Mtu int64 `json:"mtu"` + Rate int `json:"rate"` + Mtu int16 `json:"mtu"` Mac string `json:"mac"` Dns string `json:"dns"` Ntp string `json:"ntp"` - MaskLen int8 `json:"masklen"` + Masklen int8 `json:"masklen"` Net string `json:"net"` Gateway string `json:"gateway"` LinkUp bool `json:"link_up"` Routes []SRoute `json:"routes,omitempty"` + + Ip6Addr string `json:"ip6_addr"` + Masklen6 uint8 `json:"masklen6"` + Gateway6 string `json:"gateway6"` + + Interface string `json:"interface"` + Bridge string `json:"bridge"` + + VlanId int `json:"vlan_id"` + + Bandwidth int `json:"bandwidth"` } type SRoute []string func (n SNic) GetNetMask() string { - return netutils.Masklen2Mask(n.MaskLen).String() + return netutils.Masklen2Mask(n.Masklen).String() } func (n SNic) GetMac() net.HardwareAddr { @@ -64,7 +77,7 @@ type SServerNic struct { NetId string `json:"net_id"` Mac string `json:"mac"` BandWidth int `json:"bw"` - Mtu int `json:"mtu,omitempty"` + Mtu int16 `json:"mtu,omitempty"` Dns string `json:"dns"` Ntp string `json:"ntp"` Net string `json:"net"` @@ -72,9 +85,17 @@ type SServerNic struct { Gateway string `json:"gateway"` Ifname string `json:"ifname"` Routes []SRoute `json:"routes,omitempty"` - NicType string `json:"nic_type,omitempty"` - LinkUp bool `json:"link_up,omitempty"` - TeamWith string `json:"team_with,omitempty"` + + Ip6 string `json:"ip6"` + Masklen6 int `json:"masklen6"` + Gateway6 string `json:"gateway6"` + + IsDefault bool `json:"is_default"` + + NicType compute.TNicType `json:"nic_type,omitempty"` + + LinkUp bool `json:"link_up,omitempty"` + TeamWith string `json:"team_with,omitempty"` TeamingMaster *SServerNic `json:"-"` TeamingSlaves []*SServerNic `json:"-"` @@ -98,11 +119,15 @@ func (n SServerNic) ToNic() SNic { Mac: n.Mac, Dns: n.Dns, Ntp: n.Ntp, - MaskLen: int8(n.Masklen), + Masklen: int8(n.Masklen), Net: n.Net, Gateway: n.Gateway, Routes: n.Routes, LinkUp: n.LinkUp, - Mtu: int64(n.Mtu), + Mtu: n.Mtu, + + Ip6Addr: n.Ip6, + Masklen6: uint8(n.Masklen6), + Gateway6: n.Gateway6, } } diff --git a/vendor/yunion.io/x/onecloud/pkg/i18n/print.go b/vendor/yunion.io/x/onecloud/pkg/i18n/print.go index 8fb80a013..e7c028cc2 100644 --- a/vendor/yunion.io/x/onecloud/pkg/i18n/print.go +++ b/vendor/yunion.io/x/onecloud/pkg/i18n/print.go @@ -18,10 +18,10 @@ import ( "golang.org/x/text/language" "golang.org/x/text/message" - "yunion.io/x/onecloud/locales" + _ "yunion.io/x/onecloud/locales" ) func P(tag language.Tag, id string, a ...interface{}) string { - p := message.NewPrinter(tag, message.Catalog(locales.Catalog)) + p := message.NewPrinter(tag) return p.Sprintf(id, a...) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/auth/auth.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/auth/auth.go index c4c1ea04b..25aeb1cb7 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/auth/auth.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/auth/auth.go @@ -24,13 +24,13 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" - "yunion.io/x/pkg/appctx" "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/cache" + "yunion.io/x/pkg/util/httputils" "yunion.io/x/onecloud/pkg/apis/identity" - "yunion.io/x/onecloud/pkg/cloudcommon/consts" "yunion.io/x/onecloud/pkg/cloudcommon/syncman" + "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/util/stringutils2" ) @@ -140,6 +140,17 @@ func (c *TokenCacheVerify) Verify(ctx context.Context, cli *mcclient.Client, adm return cred, nil } +func (c *TokenCacheVerify) Remove(ctx context.Context, cli *mcclient.Client, adminToken, token string) error { + c.DeleteToken(token) + + err := cli.Invalidate(ctx, adminToken, token) + if err != nil { + return errors.Wrap(err, "Invalidate") + } + + return nil +} + type authManager struct { syncman.SSyncManager @@ -158,9 +169,32 @@ func newAuthManager(cli *mcclient.Client, info *AuthInfo) *authManager { accessKeyCache: newAccessKeyCache(), } authm.InitSync(authm) + go authm.startRefreshRevokeTokens() return authm } +func (a *authManager) startRefreshRevokeTokens() { + err := a.refreshRevokeTokens(context.Background()) + if err != nil { + log.Errorf("%s", err) + } + time.AfterFunc(5*time.Minute, a.startRefreshRevokeTokens) +} + +func (a *authManager) refreshRevokeTokens(ctx context.Context) error { + if a.adminCredential == nil { + return fmt.Errorf("refreshRevokeTokens: No valid admin token credential") + } + tokens, err := a.client.FetchInvalidTokens(getContext(ctx), a.adminCredential.GetTokenString()) + if err != nil { + return errors.Wrap(err, "client.FetchInvalidTokens") + } + for _, token := range tokens { + a.tokenCacheVerify.DeleteToken(token) + } + return nil +} + func (a *authManager) verifyRequest(req http.Request, virtualHost bool) (mcclient.TokenCredential, error) { if a.adminCredential == nil { return nil, fmt.Errorf("No valid admin token credential") @@ -174,15 +208,31 @@ func (a *authManager) verifyRequest(req http.Request, virtualHost bool) (mcclien func (a *authManager) verify(ctx context.Context, token string) (mcclient.TokenCredential, error) { if a.adminCredential == nil { - return nil, fmt.Errorf("No valid admin token credential") + a.reAuth() + return nil, errors.Wrap(httperrors.ErrInvalidCredential, "No valid admin token credential") } cred, err := a.tokenCacheVerify.Verify(ctx, a.client, a.adminCredential.GetTokenString(), token) if err != nil { - return nil, err + if httputils.ErrorCode(err) == 403 { + // adminCredential need to be refresh + a.reAuth() + } + return nil, errors.Wrap(err, "tokenCacheVerify.Verify") } return cred, nil } +func (a *authManager) remove(ctx context.Context, token string) error { + if a.adminCredential == nil { + return errors.Wrap(httperrors.ErrInvalidCredential, "No valid admin token credential") + } + err := a.tokenCacheVerify.Remove(ctx, a.client, a.adminCredential.GetTokenString(), token) + if err != nil { + return errors.Wrap(err, "tokenCacheVerify.Remove") + } + return nil +} + var ( defaultAuthSource = mcclient.AuthSourceSrv ) @@ -289,6 +339,10 @@ func (a *authManager) getAdminSession(ctx context.Context, region, zone, endpoin return a.getSession(ctx, manager.adminCredential, region, zone, endpointType) } +func getContext(ctx context.Context) context.Context { + return mcclient.FixContext(ctx) +} + func (a *authManager) getSession(ctx context.Context, token mcclient.TokenCredential, region, zone, endpointType string) *mcclient.ClientSession { cli := Client() if cli == nil { @@ -297,11 +351,7 @@ func (a *authManager) getSession(ctx context.Context, token mcclient.TokenCreden if endpointType == "" && globalEndpointType != "" { endpointType = globalEndpointType } - srvType := consts.GetServiceType() - if len(srvType) > 0 && len(appctx.AppContextServiceName(ctx)) == 0 { - ctx = context.WithValue(ctx, appctx.APP_CONTEXT_KEY_APPNAME, srvType) - } - return cli.NewSession(ctx, region, zone, endpointType, token) + return cli.NewSession(getContext(ctx), region, zone, endpointType, token) } func GetCatalogData(serviceTypes []string, region string) jsonutils.JSONObject { @@ -312,6 +362,10 @@ func Verify(ctx context.Context, tokenId string) (mcclient.TokenCredential, erro return manager.verify(ctx, tokenId) } +func Remove(ctx context.Context, tokenId string) error { + return manager.remove(ctx, tokenId) +} + func VerifyRequest(req http.Request, virtualHost bool) (mcclient.TokenCredential, error) { return manager.verifyRequest(req, virtualHost) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/mcclient.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/mcclient.go index 2a25b8e5d..5a150e848 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/mcclient.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/mcclient.go @@ -25,6 +25,7 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/log" + "yunion.io/x/pkg/appctx" "yunion.io/x/pkg/errors" "yunion.io/x/pkg/gotypes" "yunion.io/x/pkg/util/httputils" @@ -33,6 +34,7 @@ import ( "yunion.io/x/onecloud/pkg/apis" api "yunion.io/x/onecloud/pkg/apis/identity" "yunion.io/x/onecloud/pkg/appsrv" + "yunion.io/x/onecloud/pkg/cloudcommon/consts" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/util/rbacutils" "yunion.io/x/onecloud/pkg/util/seclib2" @@ -91,41 +93,41 @@ func NewClient(authUrl string, timeout int, debug bool, insecure bool, certFile, return &client } -func (this *Client) HttpClient() *http.Client { - return this.httpconn +func (client *Client) HttpClient() *http.Client { + return client.httpconn } -func (this *Client) SetHttpTransportProxyFunc(proxyFunc httputils.TransportProxyFunc) { - httputils.SetClientProxyFunc(this.httpconn, proxyFunc) +func (client *Client) SetHttpTransportProxyFunc(proxyFunc httputils.TransportProxyFunc) { + httputils.SetClientProxyFunc(client.httpconn, proxyFunc) } -func (this *Client) GetClient() *http.Client { - return this.httpconn +func (client *Client) GetClient() *http.Client { + return client.httpconn } -func (this *Client) SetTransport(ts http.RoundTripper) { - this.httpconn.Transport = ts +func (client *Client) SetTransport(ts http.RoundTripper) { + client.httpconn.Transport = ts } -func (this *Client) SetDebug(debug bool) { - this.debug = debug +func (client *Client) SetDebug(debug bool) { + client.debug = debug } -func (this *Client) GetDebug() bool { - return this.debug +func (client *Client) GetDebug() bool { + return client.debug } -func (this *Client) AuthVersion() string { - pos := strings.LastIndexByte(this.authUrl, '/') +func (client *Client) AuthVersion() string { + pos := strings.LastIndexByte(client.authUrl, '/') if pos > 0 { - return this.authUrl[pos+1:] + return client.authUrl[pos+1:] } else { return "" } } -func (this *Client) NewAuthTokenCredential() TokenCredential { - if this.AuthVersion() == "v3" { +func (client *Client) NewAuthTokenCredential() TokenCredential { + if client.AuthVersion() == "v3" { return &TokenCredentialV3{} } return &TokenCredentialV2{} @@ -153,15 +155,28 @@ func joinUrl(baseUrl, path string) string { return fmt.Sprintf("%s%s", baseUrl, path) } -func (this *Client) rawRequest(ctx context.Context, endpoint string, token string, method httputils.THttpMethod, url string, header http.Header, body io.Reader) (*http.Response, error) { - return httputils.Request(this.httpconn, ctx, method, joinUrl(endpoint, url), getDefaultHeader(header, token), body, this.debug) +func FixContext(ctx context.Context) context.Context { + if ctx == nil { + ctx = context.Background() + } + srvType := consts.GetServiceType() + if len(srvType) > 0 && len(appctx.AppContextServiceName(ctx)) == 0 { + ctx = context.WithValue(ctx, appctx.APP_CONTEXT_KEY_APPNAME, srvType) + } + return ctx +} + +func (client *Client) rawRequest(ctx context.Context, endpoint string, token string, method httputils.THttpMethod, url string, header http.Header, body io.Reader) (*http.Response, error) { + ctx = FixContext(ctx) + return httputils.Request(client.httpconn, ctx, method, joinUrl(endpoint, url), getDefaultHeader(header, token), body, client.debug) } -func (this *Client) jsonRequest(ctx context.Context, endpoint string, token string, method httputils.THttpMethod, url string, header http.Header, body jsonutils.JSONObject) (http.Header, jsonutils.JSONObject, error) { - return httputils.JSONRequest(this.httpconn, ctx, method, joinUrl(endpoint, url), getDefaultHeader(header, token), body, this.debug) +func (client *Client) jsonRequest(ctx context.Context, endpoint string, token string, method httputils.THttpMethod, url string, header http.Header, body jsonutils.JSONObject) (http.Header, jsonutils.JSONObject, error) { + ctx = FixContext(ctx) + return httputils.JSONRequest(client.httpconn, ctx, method, joinUrl(endpoint, url), getDefaultHeader(header, token), body, client.debug) } -func (this *Client) _authV3(domainName, uname, passwd, projectId, projectName, projectDomain, token string, aCtx SAuthContext) (TokenCredential, error) { +func (client *Client) _authV3(domainName, uname, passwd, projectId, projectName, projectDomain, token string, aCtx SAuthContext) (TokenCredential, error) { input := SAuthenticationInputV3{} if len(uname) > 0 && len(passwd) > 0 { // Password authentication input.Auth.Identity.Methods = []string{api.AUTH_METHOD_PASSWORD} @@ -190,24 +205,24 @@ func (this *Client) _authV3(domainName, uname, passwd, projectId, projectName, p // } } input.Auth.Context = aCtx - return this._authV3Input(input) + return client._authV3Input(input) } -func (this *Client) _authV3Input(input SAuthenticationInputV3) (TokenCredential, error) { - hdr, rbody, err := this.jsonRequest(context.Background(), this.authUrl, "", "POST", "/auth/tokens", nil, jsonutils.Marshal(&input)) +func (client *Client) _authV3Input(input SAuthenticationInputV3) (TokenCredential, error) { + hdr, rbody, err := client.jsonRequest(context.Background(), client.authUrl, "", "POST", "/auth/tokens", nil, jsonutils.Marshal(&input)) if err != nil { return nil, err } tokenId := hdr.Get("X-Subject-Token") if len(tokenId) == 0 { - return nil, fmt.Errorf("No X-Subject-Token in header") + return nil, errors.Wrap(httperrors.ErrInputParameter, "No X-Subject-Token in header") } - ret, err := this.unmarshalV3Token(rbody, tokenId) + ret, err := client.unmarshalV3Token(rbody, tokenId) return ret, err } -func (this *Client) _authV2(uname, passwd, tenantId, tenantName, token string, aCtx SAuthContext) (TokenCredential, error) { +func (client *Client) _authV2(uname, passwd, tenantId, tenantName, token string, aCtx SAuthContext) (TokenCredential, error) { input := SAuthenticationInputV2{} input.Auth.PasswordCredentials.Username = uname input.Auth.PasswordCredentials.Password = passwd @@ -221,144 +236,170 @@ func (this *Client) _authV2(uname, passwd, tenantId, tenantName, token string, a input.Auth.Token.Id = token } input.Auth.Context = aCtx - _, rbody, err := this.jsonRequest(context.Background(), this.authUrl, "", "POST", "/tokens", nil, jsonutils.Marshal(&input)) + _, rbody, err := client.jsonRequest(context.Background(), client.authUrl, "", "POST", "/tokens", nil, jsonutils.Marshal(&input)) if err != nil { return nil, err } - return this.unmarshalV2Token(rbody) + return client.unmarshalV2Token(rbody) } -func (this *Client) Authenticate(uname, passwd, domainName, tenantName, tenantDomain string) (TokenCredential, error) { - return this.AuthenticateApi(uname, passwd, domainName, tenantName, tenantDomain) +func (client *Client) Authenticate(uname, passwd, domainName, tenantName, tenantDomain string) (TokenCredential, error) { + return client.AuthenticateApi(uname, passwd, domainName, tenantName, tenantDomain) } -func (this *Client) AuthenticateApi(uname, passwd, domainName, tenantName, tenantDomain string) (TokenCredential, error) { - return this.AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain, AuthSourceAPI) +func (client *Client) AuthenticateApi(uname, passwd, domainName, tenantName, tenantDomain string) (TokenCredential, error) { + return client.AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain, AuthSourceAPI) } -func (this *Client) AuthenticateWeb(uname, passwd, domainName, tenantName, tenantDomain string, cliIp string) (TokenCredential, error) { +func (client *Client) AuthenticateWeb(uname, passwd, domainName, tenantName, tenantDomain string, cliIp string) (TokenCredential, error) { aCtx := SAuthContext{ Source: AuthSourceWeb, Ip: cliIp, } - return this.authenticateWithContext(uname, passwd, domainName, tenantName, tenantDomain, aCtx) + return client.authenticateWithContext(uname, passwd, domainName, tenantName, tenantDomain, aCtx) } -func (this *Client) AuthenticateOperator(uname, passwd, domainName, tenantName, tenantDomain string) (TokenCredential, error) { - return this.AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain, AuthSourceOperator) +func (client *Client) AuthenticateOperator(uname, passwd, domainName, tenantName, tenantDomain string) (TokenCredential, error) { + return client.AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain, AuthSourceOperator) } -func (this *Client) AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain string, source string) (TokenCredential, error) { +func (client *Client) AuthenticateWithSource(uname, passwd, domainName, tenantName, tenantDomain string, source string) (TokenCredential, error) { aCtx := SAuthContext{ Source: source, } - return this.authenticateWithContext(uname, passwd, domainName, tenantName, tenantDomain, aCtx) + return client.authenticateWithContext(uname, passwd, domainName, tenantName, tenantDomain, aCtx) } -func (this *Client) authenticateWithContext(uname, passwd, domainName, tenantName, tenantDomain string, aCtx SAuthContext) (TokenCredential, error) { - if this.AuthVersion() == "v3" { - return this._authV3(domainName, uname, passwd, "", tenantName, tenantDomain, "", aCtx) +func (client *Client) authenticateWithContext(uname, passwd, domainName, tenantName, tenantDomain string, aCtx SAuthContext) (TokenCredential, error) { + if client.AuthVersion() == "v3" { + return client._authV3(domainName, uname, passwd, "", tenantName, tenantDomain, "", aCtx) } - return this._authV2(uname, passwd, "", tenantName, "", aCtx) + return client._authV2(uname, passwd, "", tenantName, "", aCtx) } -func (this *Client) unmarshalV3Token(rbody jsonutils.JSONObject, tokenId string) (cred TokenCredential, err error) { +func (client *Client) unmarshalV3Token(rbody jsonutils.JSONObject, tokenId string) (cred TokenCredential, err error) { cred = &TokenCredentialV3{Id: tokenId} err = rbody.Unmarshal(cred) if err != nil { - err = fmt.Errorf("Invalid response when unmarshal V3 Token: %v", err) + err = errors.Wrap(err, "Invalid response when unmarshal V3 Token") } cata := cred.GetServiceCatalog() if cata == nil || cata.Len() == 0 { log.Warningf("No service catalog avaiable") } else { - this.SetServiceCatalog(cata) + client.SetServiceCatalog(cata) } return } -func (this *Client) unmarshalV2Token(rbody jsonutils.JSONObject) (cred TokenCredential, err error) { +func (client *Client) unmarshalV2Token(rbody jsonutils.JSONObject) (cred TokenCredential, err error) { access, err := rbody.Get("access") if err == nil { cred = &TokenCredentialV2{} err = access.Unmarshal(cred) if err != nil { - err = fmt.Errorf("Invalid response when unmarshal V2 Token: %s", err) + err = errors.Wrap(err, "Invalid response when unmarshal V2 Token") } cata := cred.GetServiceCatalog() if cata == nil || cata.Len() == 0 { log.Warningf("No srvice catalog avaiable") } else { - this.SetServiceCatalog(cata) + client.SetServiceCatalog(cata) } return } - err = fmt.Errorf("Invalid response: no access object") + err = errors.Wrap(httperrors.ErrInvalidFormat, "Invalid response: no access object") return } -func (this *Client) verifyV3(adminToken, token string) (TokenCredential, error) { +func (client *Client) verifyV3(adminToken, token string) (TokenCredential, error) { header := http.Header{} header.Add(api.AUTH_TOKEN_HEADER, adminToken) header.Add(api.AUTH_SUBJECT_TOKEN_HEADER, token) - _, rbody, err := this.jsonRequest(context.Background(), this.authUrl, "", "GET", "/auth/tokens", header, nil) + _, rbody, err := client.jsonRequest(context.Background(), client.authUrl, "", "GET", "/auth/tokens", header, nil) if err != nil { return nil, err } - return this.unmarshalV3Token(rbody, token) + return client.unmarshalV3Token(rbody, token) } -func (this *Client) verifyV2(adminToken, token string) (TokenCredential, error) { +func (client *Client) verifyV2(adminToken, token string) (TokenCredential, error) { header := http.Header{} header.Add(api.AUTH_TOKEN_HEADER, adminToken) verifyUrl := fmt.Sprintf("/tokens/%s", token) - _, rbody, err := this.jsonRequest(context.Background(), this.authUrl, "", "GET", verifyUrl, header, nil) + _, rbody, err := client.jsonRequest(context.Background(), client.authUrl, "", "GET", verifyUrl, header, nil) if err != nil { return nil, err } - return this.unmarshalV2Token(rbody) + return client.unmarshalV2Token(rbody) } -func (this *Client) Verify(adminToken, token string) (cred TokenCredential, err error) { - if this.AuthVersion() == "v3" { - return this.verifyV3(adminToken, token) +func (client *Client) Verify(adminToken, token string) (cred TokenCredential, err error) { + if client.AuthVersion() == "v3" { + return client.verifyV3(adminToken, token) + } + return client.verifyV2(adminToken, token) +} + +func (client *Client) Invalidate(ctx context.Context, adminToken, token string) error { + header := http.Header{} + header.Add(api.AUTH_TOKEN_HEADER, adminToken) + header.Add(api.AUTH_SUBJECT_TOKEN_HEADER, token) + _, _, err := client.jsonRequest(ctx, client.authUrl, "", "DELETE", "/auth/tokens", header, nil) + if err != nil { + return errors.Wrap(err, "jsonRequest") + } + return nil +} + +func (client *Client) FetchInvalidTokens(ctx context.Context, adminToken string) ([]string, error) { + header := http.Header{} + header.Add(api.AUTH_TOKEN_HEADER, adminToken) + _, resp, err := client.jsonRequest(ctx, client.authUrl, "", "GET", "/auth/tokens/invalid", header, nil) + if err != nil { + return nil, errors.Wrap(err, "jsonRequest") + } + tokens := make([]string, 0) + err = resp.Unmarshal(&tokens, "tokens") + if err != nil { + return nil, errors.Wrap(err, "Unmarshal") } - return this.verifyV2(adminToken, token) + return tokens, nil } -func (this *Client) SetTenant(tenantId, tenantName, tenantDomain string, token TokenCredential) (TokenCredential, error) { - return this.SetProject(tenantId, tenantName, tenantDomain, token) +func (client *Client) SetTenant(tenantId, tenantName, tenantDomain string, token TokenCredential) (TokenCredential, error) { + return client.SetProject(tenantId, tenantName, tenantDomain, token) } -func (this *Client) AuthenticateToken(token string, projName, projDomain string, source string) (TokenCredential, error) { +func (client *Client) AuthenticateToken(token string, projName, projDomain string, source string) (TokenCredential, error) { aCtx := SAuthContext{ Source: source, } - if this.AuthVersion() == "v3" { - return this._authV3("", "", "", "", projName, projDomain, token, aCtx) + if client.AuthVersion() == "v3" { + return client._authV3("", "", "", "", projName, projDomain, token, aCtx) } else { - return this._authV2("", "", "", projName, token, aCtx) + return client._authV2("", "", "", projName, token, aCtx) } } -func (this *Client) SetProject(tenantId, tenantName, tenantDomain string, token TokenCredential) (TokenCredential, error) { +func (client *Client) SetProject(tenantId, tenantName, tenantDomain string, token TokenCredential) (TokenCredential, error) { aCtx := SAuthContext{ Source: token.GetLoginSource(), Ip: token.GetLoginIp(), } - if this.AuthVersion() == "v3" { - return this._authV3("", "", "", tenantId, tenantName, tenantDomain, token.GetTokenString(), aCtx) + if client.AuthVersion() == "v3" { + return client._authV3("", "", "", tenantId, tenantName, tenantDomain, token.GetTokenString(), aCtx) } else { - return this._authV2("", "", "", tenantName, token.GetTokenString(), aCtx) + return client._authV2("", "", "", tenantName, token.GetTokenString(), aCtx) } } -func (this *Client) GetCommonEtcdEndpoint(token TokenCredential, region, interfaceType string) (*api.EndpointDetails, error) { - if this.AuthVersion() != "v3" { - return nil, errors.Errorf("current version %s not support get internal etcd endpoint", this.AuthVersion()) +func (client *Client) GetCommonEtcdEndpoint(token TokenCredential, region, interfaceType string) (*api.EndpointDetails, error) { + if client.AuthVersion() != "v3" { + return nil, errors.Errorf("current version %s not support get internal etcd endpoint", client.AuthVersion()) } - _, err := this.GetServiceCatalog().getServiceURL(apis.SERVICE_TYPE_ETCD, region, "", interfaceType) + _, err := client.GetServiceCatalog().getServiceURL(apis.SERVICE_TYPE_ETCD, region, "", interfaceType) if err != nil { return nil, err } @@ -371,7 +412,7 @@ func (this *Client) GetCommonEtcdEndpoint(token TokenCredential, region, interfa params.Add(jsonutils.NewString(region), "region") epUrl := "/endpoints?" + params.QueryString() - _, rbody, err := this.jsonRequest(context.Background(), this.authUrl, token.GetTokenString(), httputils.GET, epUrl, nil, nil) + _, rbody, err := client.jsonRequest(context.Background(), client.authUrl, token.GetTokenString(), httputils.GET, epUrl, nil, nil) if err != nil { return nil, errors.Wrap(err, "get internal etcd endpoint") } @@ -392,7 +433,7 @@ func (this *Client) GetCommonEtcdEndpoint(token TokenCredential, region, interfa return endpoint, nil } -func (this *Client) GetCommonEtcdTLSConfig(endpoint *api.EndpointDetails) (*tls.Config, error) { +func (client *Client) GetCommonEtcdTLSConfig(endpoint *api.EndpointDetails) (*tls.Config, error) { if endpoint.CertId == "" { return nil, nil } @@ -402,13 +443,13 @@ func (this *Client) GetCommonEtcdTLSConfig(endpoint *api.EndpointDetails) (*tls. return seclib2.InitTLSConfigByData(caData, certData, keyData) } -func (this *Client) NewSession(ctx context.Context, region, zone, endpointType string, token TokenCredential) *ClientSession { +func (client *Client) NewSession(ctx context.Context, region, zone, endpointType string, token TokenCredential) *ClientSession { cata := token.GetServiceCatalog() - if this.GetServiceCatalog() == nil { + if client.GetServiceCatalog() == nil { if cata == nil || cata.Len() == 0 { log.Warningf("Missing service catalog in token") } else { - this.SetServiceCatalog(cata) + client.SetServiceCatalog(cata) } } if ctx == nil { @@ -416,7 +457,7 @@ func (this *Client) NewSession(ctx context.Context, region, zone, endpointType s } return &ClientSession{ ctx: ctx, - client: this, + client: client, region: region, zone: zone, endpointType: endpointType, diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/base.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/base.go index e51f7d8d5..c5133f308 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/base.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/base.go @@ -28,6 +28,7 @@ import ( "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/httputils" "yunion.io/x/pkg/util/printutils" + "yunion.io/x/pkg/util/sets" "yunion.io/x/onecloud/pkg/httperrors" "yunion.io/x/onecloud/pkg/mcclient" @@ -41,6 +42,8 @@ type BaseManager struct { columns []string adminColumns []string + + specificMethods sets.String } func NewBaseManager(serviceType, endpointType, version string, columns, adminColumns []string) *BaseManager { @@ -49,11 +52,20 @@ func NewBaseManager(serviceType, endpointType, version string, columns, adminCol endpointType: endpointType, version: version, // apiVersion: apiVersion, - columns: columns, - adminColumns: adminColumns, + columns: columns, + adminColumns: adminColumns, + specificMethods: sets.NewString(), } } +func (m *BaseManager) GetSpecificMethods() sets.String { + return m.specificMethods +} + +func (m *BaseManager) SetSpecificMethods(ms ...string) { + m.specificMethods = sets.NewString(ms...) +} + func (this *BaseManager) GetColumns(session *mcclient.ClientSession) []string { cols := this.columns if session.HasSystemAdminPrivilege() && len(this.adminColumns) > 0 { diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/modules.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/modules.go index c4012f79a..825b12aa6 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/modules.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modulebase/modules.go @@ -23,6 +23,7 @@ import ( "yunion.io/x/log" "yunion.io/x/pkg/errors" "yunion.io/x/pkg/util/printutils" + "yunion.io/x/pkg/util/sets" "yunion.io/x/onecloud/pkg/mcclient" ) @@ -142,6 +143,8 @@ type Manager interface { BatchDeleteInContextWithParam(session *mcclient.ClientSession, idlist []string, query jsonutils.JSONObject, body jsonutils.JSONObject, ctx Manager, ctxid string) []printutils.SubmitResult BatchDeleteInContexts(session *mcclient.ClientSession, idlist []string, body jsonutils.JSONObject, ctxs []ManagerContext) []printutils.SubmitResult BatchDeleteInContextsWithParam(session *mcclient.ClientSession, idlist []string, query jsonutils.JSONObject, body jsonutils.JSONObject, ctxs []ManagerContext) []printutils.SubmitResult + + GetSpecificMethods() sets.String } type IResourceManager interface { diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_cloudaccounts.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_cloudaccounts.go index 5db815342..358cacf8b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_cloudaccounts.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_cloudaccounts.go @@ -26,7 +26,7 @@ var ( func init() { Cloudaccounts = modules.NewComputeManager("cloudaccount", "cloudaccounts", []string{"ID", "Name", "Enabled", "Status", "Access_url", - "balance", "error_count", "health_status", + "balance", "currency", "error_count", "health_status", "Sync_Status", "Last_sync", "guest_count", "project_domain", "domain_id", "Provider", "Brand", diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_dnsrecords.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_dnsrecords.go index e38fccf98..0c24e4121 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_dnsrecords.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_dnsrecords.go @@ -20,13 +20,13 @@ import ( ) var ( - DNSRecords modulebase.ResourceManager + DnsRecords modulebase.ResourceManager ) func init() { - DNSRecords = modules.NewComputeManager("dnsrecord", "dnsrecords", - []string{"ID", "Name", "Records", "TTL", "is_public"}, + DnsRecords = modules.NewComputeManager("dnsrecord", "dnsrecords", + []string{}, []string{}) - modules.RegisterCompute(&DNSRecords) + modules.RegisterCompute(&DnsRecords) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_hosts.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_hosts.go index 12f7d8d53..cb507ed14 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_hosts.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_hosts.go @@ -96,7 +96,7 @@ func parseHosts(titles []string, data string) []*jsonutils.JSONDict { for i, host := range hosts { host = strings.TrimSpace(host) if len(host) == 0 { - log.Debugf(fmt.Sprintf("DoBatchRegister 第%d行: 空白行(已忽略)\n", i)) + log.Warningf(fmt.Sprintf("DoBatchRegister 第%d行: 空白行(已忽略)\n", i)) continue } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_hostwires.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_hostwires.go deleted file mode 100644 index 1b501367f..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_hostwires.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "yunion.io/x/onecloud/pkg/mcclient/modulebase" - "yunion.io/x/onecloud/pkg/mcclient/modules" -) - -var ( - Hostwires modulebase.JointResourceManager -) - -func init() { - Hostwires = modules.NewJointComputeManager("hostwire", "hostwires", - []string{"Host_ID", "Host", "Wire_ID", "Wire", - "Bridge", "Interface", "Mac_addr", "is_master"}, - []string{}, - &Hosts, - &Wires) - modules.RegisterCompute(&Hostwires) -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_isolatedevices.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_isolatedevices.go index ceaa7bd56..3c6e847bd 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_isolatedevices.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_isolatedevices.go @@ -26,9 +26,9 @@ var ( func init() { IsolatedDevices = modules.NewComputeManager("isolated_device", "isolated_devices", []string{"ID", "Dev_type", - "Model", "Addr", "Vendor_device_id", + "Model", "Addr", "Vendor_device_id", "Mdev_id", "Host_id", "Host", - "Guest_id", "Guest", "Guest_status"}, + "Guest_id", "Guest", "Guest_status", "PCIE_Info"}, []string{}) modules.RegisterCompute(&IsolatedDevices) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalanceracls.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalanceracls.go index 6dbf4b1ea..70047cc3a 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalanceracls.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalanceracls.go @@ -35,6 +35,9 @@ func init() { []string{ "id", "name", + "status", + "cloudregion", + "manager", "project", "is_public", "acl_entries", diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalancercachedcertificates.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalancercachedcertificates.go deleted file mode 100644 index a34d469b7..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalancercachedcertificates.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "yunion.io/x/onecloud/pkg/mcclient/modulebase" - "yunion.io/x/onecloud/pkg/mcclient/modules" -) - -type LoadbalancerCachedCertificateManager struct { - modulebase.ResourceManager -} - -var ( - LoadbalancerCachedCertificates LoadbalancerCachedCertificateManager -) - -func init() { - LoadbalancerCachedCertificates = LoadbalancerCachedCertificateManager{ - modules.NewComputeManager( - "cachedloadbalancercertificate", - "cachedloadbalancercertificates", - []string{ - "id", - "certificate_id", - "name", - "algorithm", - "fingerprint", - "not_before", - "not_after", - "common_name", - "subject_alternative_names", - }, - []string{"tenant"}, - ), - } - modules.RegisterCompute(&LoadbalancerCachedCertificates) -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_network_ip_macs.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_network_ip_macs.go index c34b9ae91..6386d713b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_network_ip_macs.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_network_ip_macs.go @@ -1,3 +1,17 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package compute import ( diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_secgroupcaches.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_secgroupcaches.go deleted file mode 100644 index 9dbdafa51..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_secgroupcaches.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "yunion.io/x/onecloud/pkg/mcclient/modulebase" - "yunion.io/x/onecloud/pkg/mcclient/modules" -) - -var ( - SecGroupCaches modulebase.ResourceManager -) - -func init() { - SecGroupCaches = modules.NewComputeManager("secgroupcache", "secgroupcaches", - []string{"ID", "Name", "Descritpion", "Status", - "Vpc_Id", "Vpc", "Region", "Account", - "Secgroup_Id"}, - []string{""}) - - modules.RegisterCompute(&SecGroupCaches) -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_servernetworks.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_servernetworks.go index 6016476ba..2f9bf55a6 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_servernetworks.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_servernetworks.go @@ -30,7 +30,7 @@ func init() { []string{"Guest_ID", "Guest", "Network_ID", "Network", "Mac_addr", "Mapped_Ip_Addr", "IP_addr", "Driver", "BW_limit", "Index", - "Virtual", "Ifname", "team_with"}, + "Virtual", "Ifname", "team_with", "is_default"}, []string{}, &Servers, &Networks) diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_snapshotpolicycache.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_snapshotpolicycache.go deleted file mode 100644 index 0d3bc3439..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_snapshotpolicycache.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "yunion.io/x/onecloud/pkg/mcclient/modulebase" - "yunion.io/x/onecloud/pkg/mcclient/modules" -) - -var SnapshotPolicyCache modulebase.ResourceManager - -func init() { - SnapshotPolicyCache = modules.NewComputeManager("snapshotpolicycache", "snapshotpolicycaches", - []string{"Snapshotpolicy_Id", "External_Id", "Cloudregion_Id", "Manager_Id"}, - []string{}, - ) - - modules.RegisterCompute(&SnapshotPolicyCache) -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_snapshotpolicydisk.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_snapshotpolicydisk.go deleted file mode 100644 index 5bcc152f4..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_snapshotpolicydisk.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package compute - -import ( - "yunion.io/x/onecloud/pkg/mcclient/modulebase" - "yunion.io/x/onecloud/pkg/mcclient/modules" -) - -var ( - SnapshotPolicyDisk modulebase.JointResourceManager - SnapshotPolicyDisk1 modulebase.JointResourceManager -) - -func init() { - SnapshotPolicyDisk = modules.NewJointComputeManager( - "snapshotpolicydisk", - "snapshotpolicydisks", - []string{"Disk_ID", "Snapshotpolicy_ID"}, - []string{}, - &Disks, - &SnapshotPoliciy) - modules.RegisterCompute(&SnapshotPolicyDisk) - - SnapshotPolicyDisk1 = modules.NewJointComputeManager( - "snapshotpolicydisk", - "snapshotpolicydisks", - []string{"Disk_ID", "Snapshotpolicy_ID"}, - []string{}, - &SnapshotPoliciy, - &Disks) - modules.RegisterCompute(&SnapshotPolicyDisk1) -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_usages.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_usages.go index f4c7d614c..749bcce45 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_usages.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_usages.go @@ -43,6 +43,11 @@ type UsageManager struct { managers map[TUsageManager]IUsageManager } +type HistoryUsageManager struct { + modulebase.ResourceManager + managers map[TUsageManager]IUsageManager +} + func (this *UsageManager) RegisterManager(manType TUsageManager, man IUsageManager) { if this.managers == nil { this.managers = make(map[TUsageManager]IUsageManager, 0) @@ -50,6 +55,13 @@ func (this *UsageManager) RegisterManager(manType TUsageManager, man IUsageManag this.managers[manType] = man } +func (this *HistoryUsageManager) RegisterManager(manType TUsageManager, man IUsageManager) { + if this.managers == nil { + this.managers = make(map[TUsageManager]IUsageManager, 0) + } + this.managers[manType] = man +} + func (this *UsageManager) GetGeneralUsage(session *mcclient.ClientSession, params jsonutils.JSONObject) (jsonutils.JSONObject, error) { url := "/usages" if params != nil { @@ -90,7 +102,8 @@ func (this *UsageManager) GetImageUsage(s *mcclient.ClientSession, params jsonut } var ( - Usages *UsageManager + Usages *UsageManager + HistoryUsages *HistoryUsageManager ) func init() { @@ -101,6 +114,13 @@ func init() { } modules.RegisterCompute(Usages) + + HistoryUsages = &HistoryUsageManager{ + ResourceManager: modules.NewComputeManager("history-usage", "history-usages", + []string{}, + []string{}), + } + modules.RegisterCompute(HistoryUsages) } func InitUsages() { diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_policies.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_policies.go index b818d7100..aad19e417 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_policies.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_policies.go @@ -89,7 +89,7 @@ func init() { Policies = SPolicyManager{modules.NewIdentityV3Manager( "policy", "policies", - []string{"id", "name", "policy", "scope", "enabled", + []string{"id", "name", "scope", "enabled", "domain_id", "domain", "project_domain", "public_scope", "is_public", "description", "is_system", }, diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_services.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_services.go index e4a95447f..4226ac58f 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_services.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/identity/mod_services.go @@ -15,15 +15,56 @@ package identity import ( + "yunion.io/x/jsonutils" + "yunion.io/x/pkg/errors" + + identity_api "yunion.io/x/onecloud/pkg/apis/identity" + "yunion.io/x/onecloud/pkg/httperrors" + "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/modulebase" "yunion.io/x/onecloud/pkg/mcclient/modules" ) +type SServiceManager struct { + modulebase.ResourceManager +} + var ( Services modulebase.ResourceManager - ServicesV3 modulebase.ResourceManager + ServicesV3 SServiceManager ) +func (manager *SServiceManager) GetConfig(s *mcclient.ClientSession, typeStr string) (*jsonutils.JSONDict, error) { + opts := struct { + Type string + Scope string + }{ + Type: s.GetServiceName(typeStr), + Scope: "system", + } + list, err := manager.List(s, jsonutils.Marshal(opts)) + if err != nil { + return nil, errors.Wrap(err, "List") + } + if len(list.Data) == 0 { + return nil, errors.Wrapf(httperrors.ErrNotFound, "type %s not found", typeStr) + } + srv := identity_api.SService{} + err = list.Data[0].Unmarshal(&srv) + if err != nil { + return nil, errors.Wrap(err, "Unmarshal service") + } + + configObj, err := manager.GetSpecific(s, srv.Id, "config", nil) + if err != nil { + return nil, errors.Wrap(err, "GetSpecific config") + } + if configObj.Contains("config") { + configObj, _ = configObj.Get("config") + } + return configObj.(*jsonutils.JSONDict), nil +} + func init() { Services = modules.NewIdentityManager("OS-KSADM:service", "OS-KSADM:services", @@ -32,10 +73,11 @@ func init() { modules.Register(&Services) - ServicesV3 = modules.NewIdentityV3Manager("service", - "services", - []string{}, - []string{"ID", "Name", "Type", "Description"}) - + ServicesV3 = SServiceManager{ + ResourceManager: modules.NewIdentityV3Manager("service", + "services", + []string{}, + []string{"ID", "Name", "Type", "Description"}), + } modules.Register(&ServicesV3) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/image/mod_images.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/image/mod_images.go index 28cc3cfea..fd45421ab 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/image/mod_images.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/image/mod_images.go @@ -43,7 +43,8 @@ const ( IMAGE_META = "X-Image-Meta-" IMAGE_META_PROPERTY = "X-Image-Meta-Property-" - IMAGE_METADATA = "X-Image-Meta-Metadata" + IMAGE_METADATA = "X-Image-Meta-Metadata" + IMAGE_PROJECT_METADATA = "X-Image-Meta-Project_metadata" IMAGE_META_COPY_FROM = "x-glance-api-copy-from" IMAGE_META_COMPRESS_FORMAT = "x-glance-compress-format" @@ -67,6 +68,11 @@ func FetchImageMeta(h http.Header) jsonutils.JSONObject { if metadata != nil { meta.Add(metadata, "metadata") } + } else if k == IMAGE_PROJECT_METADATA && len(v) == 1 { + metadata, _ := jsonutils.Parse([]byte(v[0])) + if metadata != nil { + meta.Add(metadata, "project_metadata") + } } else if strings.HasPrefix(k, IMAGE_META_PROPERTY) { k := strings.ToLower(k[len(IMAGE_META_PROPERTY):]) meta.Add(jsonutils.NewString(decodeMeta(v[0])), "properties", k) diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/doc.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/doc.go new file mode 100644 index 000000000..66e936db6 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/doc.go @@ -0,0 +1,15 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yunionconf // import "yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf" diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_bugreport.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_bugreport.go new file mode 100644 index 000000000..0a86acf61 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_bugreport.go @@ -0,0 +1,64 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yunionconf + +import ( + "context" + + "yunion.io/x/jsonutils" + + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/auth" + "yunion.io/x/onecloud/pkg/mcclient/modulebase" + "yunion.io/x/onecloud/pkg/mcclient/modules" +) + +type BugReportManager struct { + modulebase.ResourceManager +} + +var ( + BugReport BugReportManager +) + +func init() { + BugReport = BugReportManager{modules.NewYunionConfManager("bug-report", "bug-report", + []string{}, + []string{}, + )} + modules.Register(&BugReport) +} + +func (m BugReportManager) DoBugReportEnable(s *mcclient.ClientSession, _ jsonutils.JSONObject) (jsonutils.JSONObject, error) { + return modulebase.Post(m.ResourceManager, s, "enable-bug-report", nil, "") +} + +func (m BugReportManager) DoBugReportDisable(s *mcclient.ClientSession, _ jsonutils.JSONObject) (jsonutils.JSONObject, error) { + return modulebase.Post(m.ResourceManager, s, "disable-bug-report", nil, "") +} + +func (m BugReportManager) GetBugReportEnabled(s *mcclient.ClientSession, params jsonutils.JSONObject) (jsonutils.JSONObject, error) { + return modulebase.Get(m.ResourceManager, s, "bug-report-status", "") +} + +func (m BugReportManager) SendBugReport(ctx context.Context, version, stack string, err error) (jsonutils.JSONObject, error) { + msg := map[string]interface{}{ + "version": version, + "stack": stack, + "message": err.Error(), + } + s := auth.GetAdminSession(ctx, "") + return modulebase.Post(m.ResourceManager, s, "send-bug-report", jsonutils.Marshal(msg), "") +} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_parameters.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_parameters.go new file mode 100644 index 000000000..bf6d3bcee --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_parameters.go @@ -0,0 +1,76 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package yunionconf + +import ( + "context" + + "yunion.io/x/jsonutils" + "yunion.io/x/pkg/util/httputils" + + "yunion.io/x/onecloud/pkg/mcclient" + "yunion.io/x/onecloud/pkg/mcclient/auth" + "yunion.io/x/onecloud/pkg/mcclient/modulebase" + "yunion.io/x/onecloud/pkg/mcclient/modules" + "yunion.io/x/onecloud/pkg/mcclient/modules/identity" +) + +type ParametersManager struct { + modulebase.ResourceManager +} + +var ( + Parameters ParametersManager +) + +func init() { + Parameters = ParametersManager{modules.NewYunionConfManager("parameter", "parameters", + []string{"id", "created_at", "update_at", "name", "value"}, + []string{"namespace", "namespace_id", "created_by", "updated_by"}, + )} + modules.Register(&Parameters) +} + +func (m *ParametersManager) GetGlobalSettings(s *mcclient.ClientSession, params jsonutils.JSONObject) (jsonutils.JSONObject, error) { + return m.getParametersRpc(s, "global-settings", params) +} + +func (m *ParametersManager) GetWidgetSettings(s *mcclient.ClientSession, params jsonutils.JSONObject) (jsonutils.JSONObject, error) { + return m.getParametersRpc(s, "widget-settings", params) +} + +func (m *ParametersManager) getParametersRpc(s *mcclient.ClientSession, key string, params jsonutils.JSONObject) (jsonutils.JSONObject, error) { + adminSession := auth.GetAdminSession(context.Background(), "") + p := jsonutils.NewDict() + p.Add(jsonutils.NewString("system"), "scope") + p.Add(jsonutils.NewString(key), "name") + parameters, err := m.ListInContext(adminSession, p, &identity.ServicesV3, "yunionagent") + if err != nil { + return nil, err + } + if parameters.Total == 0 { + // if no such setting, create one + empty := jsonutils.NewDict() + empty.Add(jsonutils.NewString(key), "name") + empty.Add(jsonutils.NewDict(), "value") + empty.Add(jsonutils.NewString("yunionagent"), "service_id") + _, err := m.Create(adminSession, empty) + if err != nil && httputils.ErrorCode(err) != 409 { + return nil, err + } + return m.getParametersRpc(s, key, params) + } + return parameters.Data[0], nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_access_group_caches.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_scopedpolicies.go similarity index 70% rename from vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_access_group_caches.go rename to vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_scopedpolicies.go index dcf989649..70952e121 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_access_group_caches.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_scopedpolicies.go @@ -12,25 +12,26 @@ // See the License for the specific language governing permissions and // limitations under the License. -package compute +package yunionconf import ( "yunion.io/x/onecloud/pkg/mcclient/modulebase" "yunion.io/x/onecloud/pkg/mcclient/modules" ) -type AccessGroupCacheManager struct { +type ScopedPolicyManager struct { modulebase.ResourceManager } var ( - AccessGroupCaches AccessGroupCacheManager + ScopedPolicies ScopedPolicyManager ) func init() { - AccessGroupCaches = AccessGroupCacheManager{modules.NewComputeManager("access_group_cache", "access_group_caches", + ScopedPolicies = ScopedPolicyManager{modules.NewYunionConfManager( + "scopedpolicy", "scopedpolicies", + []string{"id", "name", "category", "policies", "public_scope", "domain_id", "ref_count"}, []string{}, - []string{})} - - modules.RegisterCompute(&AccessGroupCaches) + )} + modules.Register(&ScopedPolicies) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalancercachedacls.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_scopedpolicybindings.go similarity index 62% rename from vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalancercachedacls.go rename to vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_scopedpolicybindings.go index 20acfa228..9a1035c0e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_loadbalancercachedacls.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf/mod_scopedpolicybindings.go @@ -12,34 +12,36 @@ // See the License for the specific language governing permissions and // limitations under the License. -package compute +package yunionconf import ( "yunion.io/x/onecloud/pkg/mcclient/modulebase" "yunion.io/x/onecloud/pkg/mcclient/modules" ) -type LoadbalancerCachedAclManager struct { +type ScopedPolicyBindingManager struct { modulebase.ResourceManager } var ( - LoadbalancerCachedAcls LoadbalancerCachedAclManager + ScopedPolicyBindings ScopedPolicyBindingManager ) func init() { - LoadbalancerCachedAcls = LoadbalancerCachedAclManager{ - modules.NewComputeManager( - "cachedloadbalanceracl", - "cachedloadbalanceracls", - []string{ - "id", - "acl_id", - "name", - "acl_entries", - }, - []string{"tenant"}, - ), - } - modules.RegisterCompute(&LoadbalancerCachedAcls) + ScopedPolicyBindings = ScopedPolicyBindingManager{modules.NewYunionConfManager( + "scopedpolicybinding", "scopedpolicybindings", + []string{ + "id", + "policy_id", + "policy_name", + "category", + "domain_id", + "project_domain", + "project_id", + "project", + "priority", + }, + []string{}, + )} + modules.Register(&ScopedPolicyBindings) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/base.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/base.go index 6d1ad5ca3..da2ae5ea5 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/base.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/base.go @@ -245,7 +245,7 @@ type BaseListOptions struct { Manager []string `help:"List objects belonging to the cloud provider" json:"manager,omitempty"` Account string `help:"List objects belonging to the cloud account" json:"account,omitempty"` - Provider []string `help:"List objects from the provider" choices:"OneCloud|VMware|Aliyun|Apsara|Qcloud|Azure|Aws|Huawei|OpenStack|Ucloud|ZStack|Google|Ctyun|Cloudpods|Nutanix|BingoCloud|IncloudSphere|JDcloud|Proxmox|Ceph|Ecloud|HCSO|HCS|HCSOP|H3C|S3|RemoteFile" json:"provider,omitempty"` + Provider []string `help:"List objects from the provider" choices:"OneCloud|VMware|Aliyun|Apsara|Qcloud|Azure|Aws|Huawei|OpenStack|Ucloud|VolcEngine|ZStack|Google|Ctyun|Cloudpods|Nutanix|BingoCloud|IncloudSphere|JDcloud|Proxmox|Ceph|Ecloud|HCSO|HCS|HCSOP|H3C|S3|RemoteFile|Ksyun|Baidu|QingCloud" json:"provider,omitempty"` Brand []string `help:"List objects belonging to a special brand"` CloudEnv string `help:"Cloud environment" choices:"public|private|onpremise|private_or_onpremise" json:"cloud_env,omitempty"` PublicCloud *bool `help:"List objects belonging to public cloud" json:"public_cloud"` @@ -447,8 +447,8 @@ func (o *MultiArchListOptions) Params() (*jsonutils.JSONDict, error) { } type BaseUpdateOptions struct { - ID string `help:"ID or Name of resource to update"` - Name string `help:"Name of resource to update"` + ID string `help:"ID or Name of resource to update" json:"-"` + Name string `help:"Name of resource to update" json:"name"` Desc string `metavar:"" help:"Description" json:"description"` } @@ -468,9 +468,10 @@ func (opts *BaseUpdateOptions) Params() (jsonutils.JSONObject, error) { } type BasePublicOptions struct { - ID string `help:"ID or name of resource" json:"-"` - Scope string `help:"sharing scope" choices:"system|domain"` - SharedDomains []string `help:"share to domains"` + ID string `help:"ID or name of resource" json:"-"` + Scope string `help:"sharing scope" choices:"system|domain|project"` + SharedDomains []string `help:"share to domains"` + SharedProjects []string `help:"share to projects"` } func (opts *BasePublicOptions) GetId() string { diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/cloudaccounts.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/cloudaccounts.go index f78d4a135..98f3f37ce 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/cloudaccounts.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/cloudaccounts.go @@ -16,7 +16,7 @@ package options import ( "fmt" - "io/ioutil" + "os" "yunion.io/x/cloudmux/pkg/cloudprovider" "yunion.io/x/jsonutils" @@ -28,6 +28,7 @@ type CloudaccountListOptions struct { BaseListOptions Capability []string `help:"capability filter" choices:"project|compute|network|loadbalancer|objectstore|rds|cache|event|tablestore"` + ReadOnly *bool `help:"filter read only account" negative:"no-read-only"` //DistinctField string `help:"distinct field"` ProxySetting string `help:"Proxy setting id or name"` // 按宿主机数量排序 @@ -118,8 +119,9 @@ type SCloudAccountCreateBaseOptions struct { Desc string `help:"Description" token:"desc" json:"description"` Brand string `help:"Brand of cloud account" choices:"DStack"` - AutoCreateProject bool `help:"Enable the account with same name project"` - EnableAutoSync bool `help:"Enable automatically synchronize resources of this account"` + AutoCreateProject bool `help:"Enable the account with same name project"` + AutoCreateProjectForProvider bool `help:"Is Auto Create Project For Provider"` + EnableAutoSync bool `help:"Enable automatically synchronize resources of this account"` SyncIntervalSeconds int `help:"Interval to synchronize if auto sync is enable" metavar:"SECONDS"` @@ -142,6 +144,8 @@ type SCloudAccountCreateBaseOptions struct { EnableResourceSync bool SkipSyncResources []string `help:"Skip sync resource, etc snapshot"` + + Currency string `choices:"CNY|USD"` } type SVMwareCloudAccountCreateOptions struct { @@ -203,11 +207,20 @@ func (opts *SAzureCloudAccountCreateOptions) Params() (jsonutils.JSONObject, err type SQcloudCloudAccountCreateOptions struct { SCloudAccountCreateBaseOptions SQcloudCredential + + OptionsBillingReportBucket string `help:"bucket that stores billing report" json:"-"` } func (opts *SQcloudCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { - params := jsonutils.Marshal(opts) - params.(*jsonutils.JSONDict).Add(jsonutils.NewString("Qcloud"), "provider") + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + params.Add(jsonutils.NewString("Qcloud"), "provider") + options := jsonutils.NewDict() + if len(opts.OptionsBillingReportBucket) > 0 { + options.Set("billing_report_bucket", jsonutils.NewString(opts.OptionsBillingReportBucket)) + } + if options.Length() > 0 { + params.Set("options", options) + } return params, nil } @@ -217,7 +230,7 @@ type SGoogleCloudAccountCreateOptions struct { } func parseGcpCredential(filename string) (jsonutils.JSONObject, error) { - data, err := ioutil.ReadFile(filename) + data, err := os.ReadFile(filename) if err != nil { return nil, err } @@ -297,7 +310,7 @@ func (opts *SOpenStackCloudAccountCreateOptions) Params() (jsonutils.JSONObject, type SHuaweiCloudAccountCreateOptions struct { SCloudAccountCreateBaseOptions - SAccessKeyCredentialWithEnvironment + SAccessKeyCredential } func (opts *SHuaweiCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { @@ -343,6 +356,26 @@ func (opts *SUcloudCloudAccountCreateOptions) Params() (jsonutils.JSONObject, er return params, nil } +type SVolcengineCloudAccountCreateOptions struct { + SCloudAccountCreateBaseOptions + SAccessKeyCredential + + OptionsBillingReportBucket string `help:"update Aliyun S3 bucket that stores account billing report" json:"-"` +} + +func (opts *SVolcengineCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + params.Add(jsonutils.NewString("VolcEngine"), "provider") + options := jsonutils.NewDict() + if len(opts.OptionsBillingReportBucket) > 0 { + options.Set("billing_report_bucket", jsonutils.NewString(opts.OptionsBillingReportBucket)) + } + if options.Length() > 0 { + params.Set("options", options) + } + return params, nil +} + type SZStackCloudAccountCreateOptions struct { SCloudAccountCreateBaseOptions SUserPasswordCredential @@ -402,8 +435,6 @@ func (opts *SXskyCloudAccountCreateOptions) Params() (jsonutils.JSONObject, erro type SCtyunCloudAccountCreateOptions struct { SCloudAccountCreateBaseOptions SAccessKeyCredentialWithEnvironment - - cloudprovider.SCtyunExtraOptions } func (opts *SCtyunCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { @@ -463,6 +494,9 @@ func (opts *SCloudAccountIdOptions) Params() (jsonutils.JSONObject, error) { type SVMwareCloudAccountUpdateCredentialOptions struct { SCloudAccountIdOptions SUserPasswordCredential + + Host string `help:"VMware VCenter/ESXi host"` + Port string `help:"VMware VCenter/ESXi host port" default:"443"` } func (opts *SVMwareCloudAccountUpdateCredentialOptions) Params() (jsonutils.JSONObject, error) { @@ -561,6 +595,15 @@ func (opts *SUcloudCloudAccountUpdateCredentialOptions) Params() (jsonutils.JSON return jsonutils.Marshal(opts), nil } +type SVolcengineCloudAccountUpdateCredentialOptions struct { + SCloudAccountIdOptions + SUserPasswordCredential +} + +func (opts *SVolcengineCloudAccountUpdateCredentialOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts), nil +} + type SZStackCloudAccountUpdateCredentialOptions struct { SCloudAccountIdOptions SUserPasswordCredential @@ -635,6 +678,8 @@ type SCloudAccountUpdateBaseOptions struct { RemoveSkipSyncResources []string Desc string `help:"Description" json:"description" token:"desc"` + + Currency string `choices:"CNY|USD"` } func (opts *SCloudAccountUpdateBaseOptions) Params() (jsonutils.JSONObject, error) { @@ -658,6 +703,8 @@ type SAliyunCloudAccountUpdateOptions struct { RemoveOptionsBillingBucketAccount bool `help:"remove id of account that can access bucket, blank if this account can access" json:"-"` OptionsBillingFilePrefix string `help:"update prefix of billing file name" json:"-"` RemoveOptionsBillingFilePrefix bool `help:"remove prefix of billing file name" json:"-"` + OptionsBillingScope string `help:"update billing scope" choices:"all|managed" json:"-"` + RemoveOptionsBillingScope bool `help:"remove billing scope" json:"-"` } func (opts *SAliyunCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { @@ -673,6 +720,9 @@ func (opts *SAliyunCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, er if len(opts.OptionsBillingFilePrefix) > 0 { options.Add(jsonutils.NewString(opts.OptionsBillingFilePrefix), "billing_file_prefix") } + if len(opts.OptionsBillingScope) > 0 { + options.Add(jsonutils.NewString(opts.OptionsBillingScope), "billing_scope") + } if options.Size() > 0 { params.Add(options, "options") } @@ -686,6 +736,9 @@ func (opts *SAliyunCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, er if opts.RemoveOptionsBillingFilePrefix { removeOptions = append(removeOptions, "billing_file_prefix") } + if opts.RemoveOptionsBillingScope { + removeOptions = append(removeOptions, "billing_scope") + } if len(removeOptions) > 0 { params.Add(jsonutils.NewStringArray(removeOptions), "remove_options") } @@ -697,6 +750,9 @@ type SAzureCloudAccountUpdateOptions struct { OptionsBalanceKey string `help:"update cloud balance account key, such as Azure EA key" json:"-"` RemoveOptionsBalanceKey bool `help:"remove cloud blance account key" json:"-"` + + OptionsBillingReportBucket string `help:"update Azure bucket that stores account billing report" json:"-"` + RemoveOptionsBillingReportBucket bool `help:"remove Azure bucket that stores account billing report" json:"-"` } func (opts *SAzureCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { @@ -706,6 +762,9 @@ func (opts *SAzureCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, err if len(opts.OptionsBalanceKey) > 0 { options.Add(jsonutils.NewString(opts.OptionsBalanceKey), "balance_key") } + if len(opts.OptionsBillingReportBucket) > 0 { + options.Add(jsonutils.NewString(opts.OptionsBillingReportBucket), "billing_report_bucket") + } if options.Size() > 0 { params.Add(options, "options") } @@ -713,6 +772,9 @@ func (opts *SAzureCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, err if opts.RemoveOptionsBalanceKey { removeOptions = append(removeOptions, "balance_key") } + if opts.RemoveOptionsBillingReportBucket { + removeOptions = append(removeOptions, "billing_report_bucket") + } if len(removeOptions) > 0 { params.Add(jsonutils.NewStringArray(removeOptions), "remove_options") } @@ -721,10 +783,29 @@ func (opts *SAzureCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, err type SQcloudCloudAccountUpdateOptions struct { SCloudAccountUpdateBaseOptions + + OptionsBillingReportBucket string `help:"update TencentCloud S3 bucket that stores account billing report" json:"-"` + RemoveOptionsBillingReportBucket bool `help:"remove TencentCloud S3 bucket that stores account billing report" json:"-"` } func (opts *SQcloudCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { - return jsonutils.Marshal(opts), nil + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + + options := jsonutils.NewDict() + if len(opts.OptionsBillingReportBucket) > 0 { + options.Add(jsonutils.NewString(opts.OptionsBillingReportBucket), "billing_report_bucket") + } + if options.Size() > 0 { + params.Add(options, "options") + } + removeOptions := make([]string, 0) + if opts.RemoveOptionsBillingReportBucket { + removeOptions = append(removeOptions, "billing_report_bucket") + } + if len(removeOptions) > 0 { + params.Add(jsonutils.NewStringArray(removeOptions), "remove_options") + } + return params, nil } type SGoogleCloudAccountUpdateOptions struct { @@ -934,6 +1015,32 @@ func (opts *SUcloudCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, er return jsonutils.Marshal(opts), nil } +type SVolcengineCloudAccountUpdateOptions struct { + SCloudAccountUpdateBaseOptions + + OptionsBillingReportBucket string `help:"update VolcEngine S3 bucket that stores account billing report" json:"-"` + RemoveOptionsBillingReportBucket bool `help:"remove VolcEngine S3 bucket that stores account billing report" json:"-"` +} + +func (opts *SVolcengineCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + options := jsonutils.NewDict() + if len(opts.OptionsBillingReportBucket) > 0 { + options.Add(jsonutils.NewString(opts.OptionsBillingReportBucket), "billing_report_bucket") + } + if options.Size() > 0 { + params.Add(options, "options") + } + removeOptions := make([]string, 0) + if opts.RemoveOptionsBillingReportBucket { + removeOptions = append(removeOptions, "billing_report_bucket") + } + if len(removeOptions) > 0 { + params.Add(jsonutils.NewStringArray(removeOptions), "remove_options") + } + return params, nil +} + type SZStackCloudAccountUpdateOptions struct { SCloudAccountUpdateBaseOptions } @@ -952,16 +1059,11 @@ func (opts *SS3CloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) type SCtyunCloudAccountUpdateOptions struct { SCloudAccountUpdateBaseOptions - - cloudprovider.SCtyunExtraOptions } func (opts *SCtyunCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) options := jsonutils.NewDict() - if len(opts.SCtyunExtraOptions.CrmBizId) > 0 { - options.Add(jsonutils.NewString(opts.SCtyunExtraOptions.CrmBizId), "crm_biz_id") - } if options.Size() > 0 { params.Add(options, "options") } @@ -1270,3 +1372,141 @@ func (opts *SRemoteFileAccountCreateOptions) Params() (jsonutils.JSONObject, err params.(*jsonutils.JSONDict).Add(jsonutils.NewString(api.CLOUD_PROVIDER_REMOTEFILE), "provider") return params, nil } + +type SKsyunCloudAccountCreateOptions struct { + SCloudAccountCreateBaseOptions + SAccessKeyCredential +} + +func (opts *SKsyunCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts) + params.(*jsonutils.JSONDict).Add(jsonutils.NewString("Ksyun"), "provider") + return params, nil +} + +type SKsyunCloudAccountUpdateOptions struct { + SCloudAccountUpdateBaseOptions +} + +func (opts *SKsyunCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + + return params, nil +} + +type SKsyunCloudAccountUpdateCredentialOptions struct { + SCloudAccountIdOptions + SAccessKeyCredential +} + +func (opts *SKsyunCloudAccountUpdateCredentialOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts), nil +} + +type SBaiduCloudAccountCreateOptions struct { + SCloudAccountCreateBaseOptions + SAccessKeyCredential +} + +func (opts *SBaiduCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts) + params.(*jsonutils.JSONDict).Add(jsonutils.NewString("Baidu"), "provider") + return params, nil +} + +type SBaiduCloudAccountUpdateOptions struct { + SCloudAccountUpdateBaseOptions +} + +func (opts *SBaiduCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + + return params, nil +} + +type SBaiduCloudAccountUpdateCredentialOptions struct { + SCloudAccountIdOptions + SAccessKeyCredential +} + +func (opts *SBaiduCloudAccountUpdateCredentialOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts), nil +} + +type SCucloudCloudAccountCreateOptions struct { + SCloudAccountCreateBaseOptions + SAccessKeyCredential +} + +func (opts *SCucloudCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts) + params.(*jsonutils.JSONDict).Add(jsonutils.NewString("ChinaUnion"), "provider") + return params, nil +} + +type SCucloudCloudAccountUpdateOptions struct { + SCloudAccountUpdateBaseOptions +} + +func (opts *SCucloudCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + + return params, nil +} + +type SCucloudCloudAccountUpdateCredentialOptions struct { + SCloudAccountIdOptions + SAccessKeyCredential +} + +func (opts *SCucloudCloudAccountUpdateCredentialOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts), nil +} + +type SQingCloudCloudAccountCreateOptions struct { + SCloudAccountCreateBaseOptions + SAccessKeyCredential +} + +func (opts *SQingCloudCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts) + params.(*jsonutils.JSONDict).Add(jsonutils.NewString("QingCloud"), "provider") + return params, nil +} + +type SQingCloudCloudAccountUpdateOptions struct { + SCloudAccountUpdateBaseOptions +} + +func (opts *SQingCloudCloudAccountUpdateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + + return params, nil +} + +type SQingCloudCloudAccountUpdateCredentialOptions struct { + SCloudAccountIdOptions + SAccessKeyCredential +} + +func (opts *SQingCloudCloudAccountUpdateCredentialOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts), nil +} + +type SOracleCloudAccountCreateOptions struct { + SCloudAccountCreateBaseOptions + OraclePrivateKeyFile string `help:"Oracle private key" positional:"true"` + OracleTenancyOCID string + OracleUserOCID string +} + +func (opts *SOracleCloudAccountCreateOptions) Params() (jsonutils.JSONObject, error) { + params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) + params.Add(jsonutils.NewString("OracleCloud"), "provider") + data, err := os.ReadFile(opts.OraclePrivateKeyFile) + if err != nil { + return nil, err + } + params.Set("oracle_private_key", jsonutils.NewString(string(data))) + return params, nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dns_trafficpolicy.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dns_trafficpolicy.go deleted file mode 100644 index 6bc171495..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dns_trafficpolicy.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package options - -import ( - "yunion.io/x/jsonutils" - "yunion.io/x/pkg/errors" -) - -type DnsTrafficPolicyListOptions struct { - BaseListOptions - PolicyType string `choices:"Simple|ByCarrier|ByGeoLocation|BySearchEngine|IpRange|Weighted|Failover|MultiValueAnswer|Latency"` -} - -func (opts *DnsTrafficPolicyListOptions) Params() (jsonutils.JSONObject, error) { - return ListStructToParams(opts) -} - -type DnsTrafficPolicyCreateOptions struct { - BaseCreateOptions - PROVIDER string `choices:"Aws|Qcloud"` - POLICY_TYPE string `choices:"Simple|ByCarrier|ByGeoLocation|BySearchEngine|IpRange|Weighted|Failover|MultiValueAnswer|Latency"` - PolicyValue string - PolicyOptions string -} - -func (opts *DnsTrafficPolicyCreateOptions) Params() (jsonutils.JSONObject, error) { - params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) - params.Remove("policy_options") - if len(opts.PolicyOptions) > 0 { - policyParams, err := jsonutils.Parse([]byte(opts.PolicyOptions)) - if err != nil { - return nil, errors.Wrapf(err, "jsonutils.Parse(%s)", opts.PolicyOptions) - } - params.Add(policyParams, "options") - } - return params, nil -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnsrecords.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnsrecords.go deleted file mode 100644 index 550f6d447..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnsrecords.go +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package options - -import ( - "fmt" - - "yunion.io/x/jsonutils" -) - -type DNSRecordOptions struct { - A []string `help:"DNS A record" metavar:"A_RECORD" positional:"false"` - AAAA []string `help:"DNS AAAA record" metavar:"AAAA_RECORD" positional:"false"` - CNAME string `help:"DNS CNAME record" metavar:"CNAME_RECORD" positional:"false"` - PTR string `help:"DNS PTR record" metavar:"PTR_RECORD" positional:"false"` - - SRVHost string `help:"(deprecated) DNS SRV record, server of service" metavar:"SRV_RECORD_HOST" positional:"false"` - SRVPort int64 `help:"(deprecated) DNS SRV record, port of service" metavar:"SRV_RECORD_PORT" positional:"false"` - SRV []string `help:"DNS SRV record, in the format of host:port:weight:priority" metavar:"SRV_RECORD" positional:"false"` -} - -func parseDNSRecords(opts *DNSRecordOptions, params *jsonutils.JSONDict) { - if len(opts.A) > 0 || len(opts.AAAA) > 0 { - for i, a := range opts.A { - params.Add(jsonutils.NewString(a), fmt.Sprintf("A.%d", i)) - } - for i, a := range opts.AAAA { - params.Add(jsonutils.NewString(a), fmt.Sprintf("AAAA.%d", i)) - } - } else if len(opts.CNAME) > 0 { - params.Add(jsonutils.NewString(opts.CNAME), "CNAME") - } else if len(opts.SRV) > 0 || (len(opts.SRVHost) > 0 && opts.SRVPort > 0) { - for i, s := range opts.SRV { - params.Set(fmt.Sprintf("SRV.%d", i), jsonutils.NewString(s)) - } - // Keep using the original argument passing method in case a - // newer climc is used against old service - if len(opts.SRVHost) > 0 && opts.SRVPort > 0 { - params.Set("SRV_host", jsonutils.NewString(opts.SRVHost)) - params.Set("SRV_port", jsonutils.NewInt(opts.SRVPort)) - } - } else if len(opts.PTR) > 0 { - params.Add(jsonutils.NewString(opts.PTR), "PTR") - } -} - -type DNSCreateOptions struct { - NAME string `help:"DNS name to create"` - TTL int64 `help:"TTL in seconds" positional:"false"` - Desc string `help:"Description" json:"description"` - IsPublic *bool `help:"Make the newly created record public to all"` - - DNSRecordOptions -} - -func (opts *DNSCreateOptions) Params() (*jsonutils.JSONDict, error) { - params, err := StructToParams(opts) - if err != nil { - return nil, err - } - parseDNSRecords(&opts.DNSRecordOptions, params) - return params, nil -} - -type DNSUpdateOptions struct { - ID string `help:"ID of DNS record to update" json:"-"` - Name string `help:"Domain name"` - TTL int64 `help:"TTL in seconds" positional:"false"` - Desc string `help:"Description" json:"description"` - - DNSRecordOptions -} - -func (opts *DNSUpdateOptions) Params() (*jsonutils.JSONDict, error) { - params, err := StructToParams(opts) - if err != nil { - return nil, err - } - parseDNSRecords(&opts.DNSRecordOptions, params) - return params, nil -} - -type DNSUpdateRecordsOptions struct { - ID string `help:"ID of dns record to modify" json:"-"` - - DNSRecordOptions -} - -func (opts *DNSUpdateRecordsOptions) Params() (*jsonutils.JSONDict, error) { - params := jsonutils.NewDict() - parseDNSRecords(&opts.DNSRecordOptions, params) - if params.Size() == 0 { - return nil, fmt.Errorf("Nothing to add") - } - return params, nil -} - -type DNSListOptions struct { - BaseListOptions - - IsPublic string `choices:"0|1"` -} - -type DNSGetOptions struct { - ID string `help:"ID of DNS record to show" json:"-"` -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnszone.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnszone.go deleted file mode 100644 index 009ed145c..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnszone.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package options - -import ( - "yunion.io/x/jsonutils" - "yunion.io/x/pkg/errors" -) - -type SDnsZoneListOptions struct { - BaseListOptions - - VpcId string `help:"Filter dns zone by vpc"` - ZoneType string `help:"Filter dns zone by zone type" choices:"PublicZone|PrivateZone"` - WithCache bool `help:"Whether to bring cache information"` -} - -func (opts *SDnsZoneListOptions) Params() (jsonutils.JSONObject, error) { - return ListStructToParams(opts) -} - -type SDnsZoneIdOptions struct { - ID string `help:"Dns zone Id or Name"` -} - -func (opts *SDnsZoneIdOptions) GetId() string { - return opts.ID -} - -func (opts *SDnsZoneIdOptions) Params() (jsonutils.JSONObject, error) { - return nil, nil -} - -type DnsZoneCreateOptions struct { - EnabledStatusCreateOptions - ZONE_TYPE string `choices:"PublicZone|PrivateZone" metavar:"zone_type"` - VpcIds []string `help:"Vpc Ids"` - CloudaccountId string `help:"Cloudaccount id"` - Options string -} - -func (opts *DnsZoneCreateOptions) Params() (jsonutils.JSONObject, error) { - params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) - params.Remove("options") - if len(opts.Options) > 0 { - options, err := jsonutils.Parse([]byte(opts.Options)) - if err != nil { - return nil, errors.Wrapf(err, "jsonutils.Parse") - } - params.Add(options, "options") - } - return params, nil -} - -type DnsZoneCapabilitiesOptions struct { -} - -func (opts *DnsZoneCapabilitiesOptions) GetId() string { - return "capability" -} - -func (opts *DnsZoneCapabilitiesOptions) Params() (jsonutils.JSONObject, error) { - return nil, nil -} - -type DnsZoneCacheOptions struct { - SDnsZoneIdOptions - CLOUDACCOUNT_ID string -} - -func (opts *DnsZoneCacheOptions) Params() (jsonutils.JSONObject, error) { - return jsonutils.Marshal(map[string]string{"cloudaccount_id": opts.CLOUDACCOUNT_ID}), nil -} - -type DnsZoneUncacheOptions struct { - SDnsZoneIdOptions - CLOUDACCOUNT_ID string -} - -func (opts *DnsZoneUncacheOptions) Params() (jsonutils.JSONObject, error) { - return jsonutils.Marshal(map[string]string{"cloudaccount_id": opts.CLOUDACCOUNT_ID}), nil -} - -type DnsZoneAddVpcsOptions struct { - SDnsZoneIdOptions - VPC_IDS string -} - -func (opts *DnsZoneAddVpcsOptions) Params() (jsonutils.JSONObject, error) { - return jsonutils.Marshal(map[string]string{"vpc_ids": opts.VPC_IDS}), nil -} - -type DnsZoneRemoveVpcsOptions struct { - SDnsZoneIdOptions - VPC_IDS string -} - -func (opts *DnsZoneRemoveVpcsOptions) Params() (jsonutils.JSONObject, error) { - return jsonutils.Marshal(map[string]string{"vpc_ids": opts.VPC_IDS}), nil -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnszone_recordsets.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnszone_recordsets.go deleted file mode 100644 index 5500127d0..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/dnszone_recordsets.go +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package options - -import ( - "yunion.io/x/jsonutils" - "yunion.io/x/pkg/errors" -) - -type DnsRecordSetListOptions struct { - BaseListOptions - DnsZoneId string `help:"DnsZone Id or Name"` -} - -func (opts *DnsRecordSetListOptions) Params() (jsonutils.JSONObject, error) { - return ListStructToParams(opts) -} - -type DnsRecordSetCreateOptions struct { - EnabledStatusCreateOptions - DNS_ZONE_ID string `help:"Dns Zone Id"` - DNS_TYPE string `choices:"A|AAAA|CAA|CNAME|MX|NS|SRV|SOA|TXT|PTR|DS|DNSKEY|IPSECKEY|NAPTR|SPF|SSHFP|TLSA|REDIRECT_URL|FORWARD_URL"` - DNS_VALUE string `help:"Dns Value"` - TTL int64 `help:"Dns ttl"` - MxPriority int64 `help:"dns mx type mxpriority"` - Provider string `help:"Dns triffic policy provider" choices:"Aws|Qcloud|Aliyun"` - PolicyType string `choices:"Simple|ByCarrier|ByGeoLocation|BySearchEngine|IpRange|Weighted|Failover|MultiValueAnswer|Latency"` - PolicyValue string `help:"Dns Traffic policy value"` - PolicyOptions string -} - -func (opts *DnsRecordSetCreateOptions) Params() (jsonutils.JSONObject, error) { - params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) - params.Remove("policy_type") - params.Remove("policy_options") - if len(opts.PolicyType) > 0 && len(opts.Provider) > 0 { - policies := jsonutils.NewArray() - policy := jsonutils.NewDict() - policy.Add(jsonutils.NewString(opts.PolicyType), "policy_type") - policy.Add(jsonutils.NewString(opts.Provider), "provider") - policy.Add(jsonutils.NewString(opts.PolicyValue), "policy_value") - if len(opts.PolicyOptions) > 0 { - policyParams, err := jsonutils.Parse([]byte(opts.PolicyOptions)) - if err != nil { - return nil, errors.Wrapf(err, "jsonutils.Parse(%s)", opts.PolicyOptions) - } - policy.Add(policyParams, "policy_options") - } - policies.Add(policy) - params.Add(policies, "traffic_policies") - } - return params, nil -} - -type DnsRecordSetIdOptions struct { - ID string -} - -func (opts *DnsRecordSetIdOptions) GetId() string { - return opts.ID -} - -func (opts *DnsRecordSetIdOptions) Params() (jsonutils.JSONObject, error) { - return nil, nil -} - -type DnsRecordSetUpdateOptions struct { - BaseUpdateOptions - DnsType string `choices:"A|AAAA|CAA|CNAME|MX|NS|SRV|SOA|TXT|PRT|DS|DNSKEY|IPSECKEY|NAPTR|SPF|SSHFP|TLSA|REDIRECT_URL|FORWARD_URL"` - DnsValue string - Ttl int64 - MxPriority int64 `help:"dns mx type mxpriority"` - Provider string `help:"Dns triffic policy provider" choices:"Aws|Qcloud|Aliyun"` - PolicyType string `choices:"Simple|ByCarrier|ByGeoLocation|BySearchEngine|IpRange|Weighted|Failover|MultiValueAnswer|Latency"` - PolicyValue string `help:"Dns Traffic policy value"` - PolicyOptions string -} - -func (opts *DnsRecordSetUpdateOptions) Params() (jsonutils.JSONObject, error) { - params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) - params.Remove("id") - params.Remove("policy_type") - params.Remove("policy_options") - if len(opts.PolicyType) > 0 && len(opts.Provider) > 0 { - policies := jsonutils.NewArray() - policy := jsonutils.NewDict() - policy.Add(jsonutils.NewString(opts.PolicyType), "policy_type") - policy.Add(jsonutils.NewString(opts.Provider), "provider") - policy.Add(jsonutils.NewString(opts.PolicyValue), "policy_value") - if len(opts.PolicyOptions) > 0 { - policyParams, err := jsonutils.Parse([]byte(opts.PolicyOptions)) - if err != nil { - return nil, errors.Wrapf(err, "jsonutils.Parse(%s)", opts.PolicyOptions) - } - policy.Add(policyParams, "policy_options") - } - policies.Add(policy) - params.Add(policies, "traffic_policies") - } - return params, nil -} - -type DnsRecordSetTrafficPolicyOptions struct { - DnsRecordSetIdOptions - - PROVIDER string `help:"provider" choices:"Qcloud|Aws"` - POLICY_TYPE string `help:"PolicyType" choices:"Simple|ByCarrier|ByGeoLocation|BySearchEngine|IpRange|Weighted|Failover|MultiValueAnswer|Latency"` - PolicyValue string - PolicyOptions string `help:"Json format policy"` -} - -func (opts DnsRecordSetTrafficPolicyOptions) Params() (jsonutils.JSONObject, error) { - params := jsonutils.NewArray() - policy := jsonutils.NewDict() - policy.Add(jsonutils.NewString(opts.PROVIDER), "provider") - policy.Add(jsonutils.NewString(opts.POLICY_TYPE), "policy_type") - policy.Add(jsonutils.NewString(opts.PolicyValue), "policy_value") - if len(opts.PolicyOptions) > 0 { - value, err := jsonutils.Parse([]byte(opts.PolicyOptions)) - if err != nil { - return nil, errors.Wrapf(err, "jsonutils.Parse(%s)", opts.PolicyOptions) - } - policy.Add(value, "policy_options") - } - params.Add(policy) - return jsonutils.Marshal(map[string]interface{}{"traffic_policies": params}), nil -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/elasticcache.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/elasticcache.go index 2652122f8..9189798b8 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/elasticcache.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/elasticcache.go @@ -15,57 +15,11 @@ package options import ( - "fmt" - "strings" - "yunion.io/x/jsonutils" computeapi "yunion.io/x/onecloud/pkg/apis/compute" ) -type ElasticCacheCreateOptions struct { - NAME string - Manager string - Cloudregion string - Zone string - VpcId string - Network string `help:"network id"` - SecurityGroup string `help:"elastic cache security group. required by huawei."` - SecgroupIds []string `help:"elastic cache security group. required by qcloud."` - Engine string `choices:"redis"` - EngineVersion string `choices:"2.8|3.0|3.2|4.0|5.0"` - PrivateIP string `help:"private ip address in specificated network"` - Password string `help:"set auth password"` - InstanceType string - CapacityMB string `help:"elastic cache capacity. required by huawei."` - BillingType string `choices:"postpaid|prepaid" default:"postpaid"` - Month int `help:"billing duration (unit:month)"` - Tags []string `help:"Tags info,prefix with 'user:', eg: user:project=default" json:"-"` -} - -func (opts *ElasticCacheCreateOptions) Params() (*jsonutils.JSONDict, error) { - params, err := StructToParams(opts) - if err != nil { - return nil, err - } - Tagparams := jsonutils.NewDict() - for _, tag := range opts.Tags { - info := strings.Split(tag, "=") - if len(info) == 2 { - if len(info[0]) == 0 { - return nil, fmt.Errorf("invalidate tag info %s", tag) - } - Tagparams.Add(jsonutils.NewString(info[1]), info[0]) - } else if len(info) == 1 { - Tagparams.Add(jsonutils.NewString(info[0]), info[0]) - } else { - return nil, fmt.Errorf("invalidate tag info %s", tag) - } - } - params.Add(Tagparams, "__meta__") - return params, nil -} - type ElasticCacheAccountCreateOptions struct { Elasticcache string `help:"elastic cache instance id"` Name string diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/organization_nodes.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/organization_nodes.go index 1170e4733..62470814b 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/organization_nodes.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/organization_nodes.go @@ -50,7 +50,8 @@ func (opts *OrganizationNodeIdOptions) Params() (jsonutils.JSONObject, error) { type OrganizationNodeUpdateOptions struct { OrganizationNodeIdOptions - Weigth int `help:"update weight of node"` + Weigth int `help:"update weight of node"` + Description string `help:"update description"` } func (opts *OrganizationNodeUpdateOptions) Params() (jsonutils.JSONObject, error) { diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/project.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/project.go index 3fafd85b6..645a78701 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/project.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/project.go @@ -28,6 +28,7 @@ type ProjectListOptions struct { UserId string `help:"filter by user id"` GroupId string `help:"filter by group id"` IdpId string `help:"filter by idp id"` + AdminId []string OrderByDomain string `help:"order by domain name" choices:"asc|desc"` } @@ -113,3 +114,10 @@ type ProjectSetAdminOptions struct { func (opts *ProjectSetAdminOptions) Params() (jsonutils.JSONObject, error) { return jsonutils.Marshal(opts), nil } + +type ProjectCleanOptions struct { +} + +func (opts *ProjectCleanOptions) Params() (jsonutils.JSONObject, error) { + return jsonutils.Marshal(opts), nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/users.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/users.go index ad8e66206..3755e3a4c 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/users.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/identity/users.go @@ -34,3 +34,24 @@ type UserListOptions struct { func (opts *UserListOptions) Params() (jsonutils.JSONObject, error) { return options.ListStructToParams(opts) } + +type UserIdOptions struct { + ID string `help:"ID or name of user"` +} + +func (opts *UserIdOptions) GetId() string { + return opts.ID +} + +type UserDetailOptions struct { + UserIdOptions + Domain string `help:"Domain"` +} + +func (opts *UserDetailOptions) Params() (jsonutils.JSONObject, error) { + ret := jsonutils.NewDict() + if len(opts.Domain) > 0 { + ret.Add(jsonutils.NewString(opts.Domain), "domain_id") + } + return ret, nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/networkaddress.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/networkaddress.go index 64a462829..4865abe34 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/networkaddress.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/networkaddress.go @@ -73,3 +73,15 @@ func (opts *NetworkAddressIdOptions) GetId() string { func (opts *NetworkAddressIdOptions) Params() (jsonutils.JSONObject, error) { return nil, nil } + +type NetworkAddressIdsOptions struct { + ID []string +} + +func (opts *NetworkAddressIdsOptions) GetIds() []string { + return opts.ID +} + +func (opts *NetworkAddressIdsOptions) Params() (jsonutils.JSONObject, error) { + return nil, nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/secgroup.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/secgroup.go index d5abf873e..c856c5e8e 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/secgroup.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/secgroup.go @@ -29,15 +29,16 @@ import ( type SecgroupListOptions struct { BaseListOptions - Equals string `help:"Secgroup ID or Name, filter secgroups whose rules equals the specified one"` - Server string `help:"Filter secgroups bound to specified server"` - Ip string `help:"Filter secgroup by ip"` - Ports string `help:"Filter secgroup by ports"` - Direction string `help:"Filter secgroup by ports" choices:"all|in|out"` - DBInstance string `help:"Filter secgroups bound to specified rds" json:"dbinstance"` - Cloudregion string `help:"Filter secgroups by region"` - Cloudaccount string `help:"Filter secgroups by account"` - WithCache bool `help:"Whether to bring cache information"` + Equals string `help:"Secgroup ID or Name, filter secgroups whose rules equals the specified one"` + Server string `help:"Filter secgroups bound to specified server"` + Ip string `help:"Filter secgroup by ip"` + Ports string `help:"Filter secgroup by ports"` + Direction string `help:"Filter secgroup by ports" choices:"all|in|out"` + DBInstance string `help:"Filter secgroups bound to specified rds" json:"dbinstance"` + Cloudregion string `help:"Filter secgroups by region"` + VpcId string + Cloudaccount string `help:"Filter secgroups by account"` + LoadbalancerId string } func (opts *SecgroupListOptions) Params() (jsonutils.JSONObject, error) { @@ -46,6 +47,8 @@ func (opts *SecgroupListOptions) Params() (jsonutils.JSONObject, error) { type SecgroupCreateOptions struct { BaseCreateOptions + VpcId string + Tags []string Rules []string `help:"security rule to create"` } @@ -64,6 +67,18 @@ func (opts *SecgroupCreateOptions) Params() (jsonutils.JSONObject, error) { if len(rules) > 0 { params.Add(jsonutils.Marshal(rules), "rules") } + params.Remove("tags") + tags := map[string]string{} + for _, tag := range opts.Tags { + info := strings.Split(tag, "=") + if len(info) != 2 { + return nil, fmt.Errorf("invalid tag %s, tag should like key=value", tag) + } + tags["user:"+info[0]] = info[1] + } + if len(tags) > 0 { + params.Set("__meta__", jsonutils.Marshal(tags)) + } return params, nil } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/serverskus.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/serverskus.go index b836de8ee..76fbfad81 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/serverskus.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/serverskus.go @@ -27,6 +27,7 @@ type ServerSkusListOptions struct { Name string `help:"Name of Sku"` PostpaidStatus string `help:"Postpaid status" choices:"soldout|available"` PrepaidStatus string `help:"Prepaid status" choices:"soldout|available"` + CpuArch string `help:"Cpu Arch" choices:"x86|arm"` Enabled *bool `help:"Filter enabled skus"` Distinct bool `help:"distinct sku by name"` OrderByTotalGuestCount string diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/skus.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/skus.go deleted file mode 100644 index 65a09d834..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/skus.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package options - -import ( - "fmt" - - "yunion.io/x/jsonutils" -) - -type SkuSyncOptions struct { - // 云平台名称 - // example: Google - Provider string `json:"provider,omitempty" help:"cloud provider name"` - - // 区域ID - CloudregionIds []string `json:"cloudregion_ids" help:"cloud region id list"` -} - -func (opts *SkuSyncOptions) Params() (jsonutils.JSONObject, error) { - return jsonutils.Marshal(opts), nil -} - -type SkuTaskQueryOptions struct { - // 异步任务ID - TaskIds []string `json:"task_ids" help:"task ids"` -} - -func (opts *SkuTaskQueryOptions) Params() (jsonutils.JSONObject, error) { - if len(opts.TaskIds) == 0 { - return nil, fmt.Errorf("task_ids is empty") - } - - params := jsonutils.NewDict() - params.Set("task_ids", jsonutils.Marshal(opts.TaskIds)) - return params, nil -} - -type CloudregionSkuSyncOptions struct { - RESOURCE string `help:"Resource of skus" choices:"serversku|elasticcachesku|dbinstance_sku"` - SkuSyncOptions -} - -func (opts *CloudregionSkuSyncOptions) Params() (jsonutils.JSONObject, error) { - return jsonutils.Marshal(opts), nil -} - -type CloudregionIdOptions struct { - ID string `help:"Cloudregion Id"` -} - -func (opts *CloudregionIdOptions) GetId() string { - return opts.ID -} - -func (opts *CloudregionIdOptions) Params() (jsonutils.JSONObject, error) { - return nil, nil -} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/vpc.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/vpc.go index 082a9fba9..55187e3e4 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/vpc.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/vpc.go @@ -32,6 +32,8 @@ type VpcListOptions struct { ZoneId string `help:"Filter by zone which has networks"` UsableForInterVpcNetworkId string `help:"Filter usable vpcs for inter vpc network"` OrderByWireCount string + CidrBlock string `help:"IPv4 cidr block"` + CidrBlock6 string `help:"IPv6 cidr block"` } func (opts *VpcListOptions) GetContextId() string { @@ -47,6 +49,7 @@ type VpcCreateOptions struct { Id string `help:"ID of the new VPC"` NAME string `help:"Name of the VPC" json:"name"` CIDR string `help:"CIDR block"` + CIDR6 string `help:"IPv6 CIDR block"` Default bool `help:"default VPC for the region" default:"false"` Desc string `help:"Description of the VPC"` Manager string `help:"ID or Name of Cloud provider" json:"manager_id"` @@ -59,6 +62,9 @@ func (opts *VpcCreateOptions) Params() (jsonutils.JSONObject, error) { params.Add(jsonutils.NewString(opts.REGION), "cloudregion_id") params.Add(jsonutils.NewString(opts.NAME), "name") params.Add(jsonutils.NewString(opts.CIDR), "cidr_block") + if len(opts.CIDR6) > 0 { + params.Add(jsonutils.NewString(opts.CIDR6), "cidr_block6") + } if len(opts.Id) > 0 { params.Add(jsonutils.NewString(opts.Id), "id") } @@ -96,11 +102,13 @@ type VpcUpdateOptions struct { BaseUpdateOptions ExternalAccessMode string `help:"Filter by external access mode" choices:"distgw|eip|eip-distgw"` Direct bool `help:"Can it be connected directly"` + + CidrBlock string `help:"IPv4 CIDR block"` + CidrBlock6 string `help:"IPv6 CIDR block"` } func (opts *VpcUpdateOptions) Params() (jsonutils.JSONObject, error) { params := jsonutils.Marshal(opts).(*jsonutils.JSONDict) - params.Remove("id") return params, nil } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/webconsole.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/webconsole.go index 55d4ba8cf..d8b431316 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/options/webconsole.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/options/webconsole.go @@ -71,10 +71,13 @@ func (opt *WebConsoleBaremetalOptions) Params() (*jsonutils.JSONDict, error) { type WebConsoleSshOptions struct { WebConsoleOptions - IP string `help:"IP to connect" json:"-"` - Port int `help:"Remote server port"` - Username string `help:"Remote server username"` - Password string `help:"Remote server password"` + ID string `help:"ID of server" json:"-"` + Ip string `help:"IP to connect if multiple IPs on server"` + Port int `help:"Remote server port"` + Username string `help:"Remote server username"` + KeepUsername bool `help:"Keep remove username"` + Password string `help:"Remote server password"` + ResourceType string `help:"Resource Type" choices:"host|server"` } func (opt *WebConsoleSshOptions) Params() (*jsonutils.JSONDict, error) { @@ -91,3 +94,17 @@ type WebConsoleServerOptions struct { WebConsoleOptions ID string `help:"Server id or name"` } + +type WebConsoleServerRdpOptions struct { + WebConsoleOptions + ID string `help:"Server id or name"` + + Host *string + Port *int + Username *string + Password *string + + Width *int + Height *int + Dpi *int +} diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/session.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/session.go index 0231b6a28..7e80ac8ff 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/session.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/session.go @@ -121,7 +121,7 @@ func getApiVersionByServiceType(serviceType string) string { return "" } -func (this *ClientSession) getServiceName(service string) string { +func (this *ClientSession) GetServiceName(service string) string { apiVersion := getApiVersionByServiceType(service) if len(apiVersion) > 0 && apiVersion != DEFAULT_API_VERSION { service = fmt.Sprintf("%s_%s", service, apiVersion) @@ -161,7 +161,7 @@ func (this *ClientSession) GetServiceVersionURLs(service, endpointType string) ( // session specific endpoint type should override the input endpointType, which is supplied by manager endpointType = this.endpointType } - service = this.getServiceName(service) + service = this.GetServiceName(service) if endpointType == api.EndpointInterfaceApigateway { return this.getApigatewayServiceURLs(service, this.region, this.zone, endpointType) } else { @@ -212,13 +212,13 @@ func (this *ClientSession) getServiceVersionURLs(service, region, zone, endpoint return []string{this.client.authUrl}, nil } urls, err := catalog.getServiceURLs(service, region, zone, endpointType) - // HACK! in case of fail to get kestone url or schema of keystone changed, always trust authUrl + // HACK! in case of fail to get keystone url or schema of keystone changed, always trust authUrl if service == api.SERVICE_TYPE && (err != nil || len(urls) == 0 || (len(this.client.authUrl) != 0 && this.client.authUrl[:5] != urls[0][:5])) { var msg string if err != nil { msg = fmt.Sprintf("fail to retrieve keystone urls: %s", err) } else if len(urls) == 0 { - msg = fmt.Sprintf("empty keystone url") + msg = "empty keystone url" } else { msg = fmt.Sprintf("Schema of keystone authUrl and endpoint mismatch: %s!=%s", this.client.authUrl, urls) } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/token.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/token.go index 5e4b529b1..77ffef0a4 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/token.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/token.go @@ -20,8 +20,6 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/pkg/gotypes" "yunion.io/x/pkg/util/rbacscope" - - "yunion.io/x/onecloud/pkg/util/rbacutils" ) type ExternalService struct { @@ -94,7 +92,7 @@ type TokenCredential interface { // IsAdmin() bool HasSystemAdminPrivilege() bool - IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult + // IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult GetRegions() []string @@ -107,4 +105,5 @@ type TokenCredential interface { GetLoginSource() string GetLoginIp() string + IsSystemAccount() bool } diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/token2.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/token2.go index 3ed098356..ac9da3bfe 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/token2.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/token2.go @@ -21,10 +21,8 @@ import ( "time" "yunion.io/x/jsonutils" - "yunion.io/x/pkg/util/rbacscope" api "yunion.io/x/onecloud/pkg/apis/identity" - "yunion.io/x/onecloud/pkg/util/rbacutils" ) type KeystoneEndpointV2 struct { @@ -62,7 +60,8 @@ type KeystoneUserV2 struct { // 用户名 Name string `json:"name"` // 用户username - Username string `json:"username"` + Username string `json:"username"` + IsSystemAccount bool `json:"is_system_account"` // 用户角色列表 Roles []KeystoneRoleV2 `json:"roles"` } @@ -163,6 +162,10 @@ func (token *TokenCredentialV2) GetUserId() string { return token.User.Id } +func (token *TokenCredentialV2) IsSystemAccount() bool { + return token.User.IsSystemAccount +} + func (token *TokenCredentialV2) GetRoles() []string { roles := make([]string, 0) for i := 0; i < len(token.User.Roles); i++ { @@ -208,7 +211,7 @@ func (this *TokenCredentialV2) HasSystemAdminPrivilege() bool { return this.IsAdmin() && this.GetTenantName() == "system" } -func (this *TokenCredentialV2) IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { +/*func (this *TokenCredentialV2) IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { if this.isAllow(scope, service, resource, action, extra...) { return rbacutils.PolicyAllow } else { @@ -222,7 +225,7 @@ func (this *TokenCredentialV2) isAllow(scope rbacscope.TRbacScope, service strin } else { return true } -} +}*/ func (this *TokenCredentialV2) Len() int { return this.ServiceCatalog.Len() diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/token3.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/token3.go index fceee9684..aeca41957 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/token3.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/token3.go @@ -22,12 +22,10 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/pkg/errors" - "yunion.io/x/pkg/util/rbacscope" "yunion.io/x/pkg/utils" api "yunion.io/x/onecloud/pkg/apis/identity" "yunion.io/x/onecloud/pkg/httperrors" - "yunion.io/x/onecloud/pkg/util/rbacutils" ) const REGION_ZONE_SEP = '-' @@ -89,6 +87,8 @@ type KeystoneUserV3 struct { Domain KeystoneDomainV3 // 用户密码过期时间 PasswordExpiresAt time.Time + // 是否为系统账号 + IsSystemAccount bool // 用户的显式名称,通常为中文名 Displayname string @@ -195,6 +195,10 @@ func (token *TokenCredentialV3) GetUserId() string { return token.Token.User.Id } +func (token *TokenCredentialV3) IsSystemAccount() bool { + return token.Token.User.IsSystemAccount +} + func (token *TokenCredentialV3) GetRoles() []string { roles := make([]string, 0) for i := 0; i < len(token.Token.Roles); i++ { @@ -236,7 +240,7 @@ func (this *TokenCredentialV3) HasSystemAdminPrivilege() bool { return this.IsAdmin() && this.GetTenantName() == "system" } -func (this *TokenCredentialV3) IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { +/*func (this *TokenCredentialV3) IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { if this.isAllow(scope, service, resource, action, extra...) { return rbacutils.PolicyAllow } else { @@ -250,7 +254,7 @@ func (this *TokenCredentialV3) isAllow(scope rbacscope.TRbacScope, service strin } else { return true } -} +}*/ func (this *TokenCredentialV3) GetRegions() []string { return this.Token.Catalog.getRegions() diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/tokensimple.go b/vendor/yunion.io/x/onecloud/pkg/mcclient/tokensimple.go index 720ff9da6..609abb2dd 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/tokensimple.go +++ b/vendor/yunion.io/x/onecloud/pkg/mcclient/tokensimple.go @@ -22,10 +22,8 @@ import ( "yunion.io/x/jsonutils" "yunion.io/x/pkg/gotypes" - "yunion.io/x/pkg/util/rbacscope" api "yunion.io/x/onecloud/pkg/apis/identity" - "yunion.io/x/onecloud/pkg/util/rbacutils" ) type SSimpleToken struct { @@ -44,6 +42,8 @@ type SSimpleToken struct { RoleIds string Expires time.Time + SystemAccount bool + Context SAuthContext } @@ -131,7 +131,7 @@ func (self *SSimpleToken) HasSystemAdminPrivilege() bool { return self.IsAdmin() && self.Project == "system" } -func (this *SSimpleToken) IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { +/*func (this *SSimpleToken) IsAllow(scope rbacscope.TRbacScope, service string, resource string, action string, extra ...string) rbacutils.SPolicyResult { if this.isAllow(scope, service, resource, action, extra...) { return rbacutils.PolicyAllow } else { @@ -145,7 +145,7 @@ func (this *SSimpleToken) isAllow(scope rbacscope.TRbacScope, service string, re } else { return true } -} +}*/ func (self *SSimpleToken) GetRegions() []string { return nil @@ -183,6 +183,10 @@ func (this *SSimpleToken) GetServiceCatalog() IServiceCatalog { return nil } +func (this *SSimpleToken) IsSystemAccount() bool { + return this.SystemAccount +} + func (this *SSimpleToken) GetLoginSource() string { return this.Context.Source } @@ -214,6 +218,7 @@ func SimplifyToken(token TokenCredential) TokenCredential { Source: token.GetLoginSource(), Ip: token.GetLoginIp(), }, + SystemAccount: token.IsSystemAccount(), } } diff --git a/vendor/yunion.io/x/onecloud/pkg/util/atexit/atexit.go b/vendor/yunion.io/x/onecloud/pkg/util/atexit/atexit.go index 43ef6fbbb..a75063a3d 100644 --- a/vendor/yunion.io/x/onecloud/pkg/util/atexit/atexit.go +++ b/vendor/yunion.io/x/onecloud/pkg/util/atexit/atexit.go @@ -15,10 +15,16 @@ package atexit import ( + "context" "os" "runtime/debug" "sort" "sync" + + "yunion.io/x/pkg/errors" + "yunion.io/x/pkg/util/version" + + "yunion.io/x/onecloud/pkg/mcclient/modules/yunionconf" ) // ExitHandlerFunc is the type of handler func @@ -95,6 +101,7 @@ func Handle() { if val != nil { print("panic ", val, "\n") debug.PrintStack() + yunionconf.BugReport.SendBugReport(context.Background(), version.GetShortString(), string(debug.Stack()), errors.Errorf("%s", val)) } }() eh.Func(eh) diff --git a/vendor/yunion.io/x/onecloud/pkg/util/bitmap/bitmap.go b/vendor/yunion.io/x/onecloud/pkg/util/bitmap/bitmap.go deleted file mode 100644 index 6027bcfdf..000000000 --- a/vendor/yunion.io/x/onecloud/pkg/util/bitmap/bitmap.go +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2019 Yunion -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package bitmap - -// Uint2IntArray transfer bitmap displayed as n to int array -func Uint2IntArray(n uint32) []int { - return Uint64ToIntArray(uint64(n)) -} - -// IntArray2Uint transfer int array nums to bitmap number -func IntArray2Uint(nums []int) uint32 { - return uint32(IntArrayToUint64(nums)) -} - -func Uint64ToIntArray(n uint64) []int { - ret := make([]int, 0, 2) - var i uint = 0 - for n != 0 { - if n&(1< bm.size { - return - } - subscript := idx / 8 - var pos = uint64(idx % 8) - bm.bits[subscript] = (bm.bits[subscript] | 1< bm.size { - return false - } - subscript := idx / 8 - var pos = uint64(idx % 8) - return bm.bits[subscript]&(1< 0 -} - -func (bm *BitMap) Clean(idx int64) { - if idx > bm.size { - return - } - subscript := idx / 8 - var pos = uint64(idx % 8) - bm.bits[subscript] &= ^(1 << pos) -} - -func NewBitMap(size int64) *BitMap { - bits := make([]byte, (size>>3)+1) - return &BitMap{bits: bits, size: size} -} diff --git a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/clickhouse.go b/vendor/yunion.io/x/onecloud/pkg/util/dbutils/clickhouse.go similarity index 93% rename from vendor/yunion.io/x/onecloud/pkg/cloudcommon/clickhouse.go rename to vendor/yunion.io/x/onecloud/pkg/util/dbutils/clickhouse.go index 9a9e9ed87..8cd1b0cfd 100644 --- a/vendor/yunion.io/x/onecloud/pkg/cloudcommon/clickhouse.go +++ b/vendor/yunion.io/x/onecloud/pkg/util/dbutils/clickhouse.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cloudcommon +package dbutils import ( "fmt" @@ -27,7 +27,7 @@ import ( // convert clickhouse sqlstr v1 to v2 // v1: tcp://192.168.222.4:9000?database=yunionmeter&read_timeout=10&write_timeout=20 // v2: clickhouse://username:password@host1:9000,host2:9000/database?dial_timeout=200ms&max_execution_time=60 -func clickhouseSqlStrV1ToV2(sqlstr string) (string, error) { +func ClickhouseSqlStrV1ToV2(sqlstr string) (string, error) { if strings.HasPrefix(sqlstr, "clickhouse://") { // already v2 format return sqlstr, nil @@ -57,7 +57,7 @@ func clickhouseSqlStrV1ToV2(sqlstr string) (string, error) { return fmt.Sprintf("clickhouse://%s/%s?dial_timeout=200ms&max_execution_time=60", hostPart, dbname), nil } -func clickhouseSqlStrV2ToV1(sqlstr string) (string, error) { +func ClickhouseSqlStrV2ToV1(sqlstr string) (string, error) { if strings.HasPrefix(sqlstr, "tcp://") { // already v1 format return sqlstr, nil @@ -89,7 +89,7 @@ func clickhouseSqlStrV2ToV1(sqlstr string) (string, error) { return fmt.Sprintf("tcp://%s?%s&read_timeout=10&write_timeout=20", hostPart, jsonutils.Marshal(qs).QueryString()), nil } -func validateClickhouseV2Str(sqlstr string) error { +func ValidateClickhouseV2Str(sqlstr string) error { if !strings.HasPrefix(sqlstr, "clickhouse://") { return errors.Wrapf(httperrors.ErrInputParameter, "must start with clickhouse://") } @@ -108,7 +108,7 @@ func validateClickhouseV2Str(sqlstr string) error { return nil } -func validateClickhouseV1Str(sqlstr string) error { +func ValidateClickhouseV1Str(sqlstr string) error { if !strings.HasPrefix(sqlstr, "tcp://") { return errors.Wrapf(httperrors.ErrInputParameter, "must start with tcp://") } diff --git a/vendor/yunion.io/x/onecloud/pkg/util/dbutils/doc.go b/vendor/yunion.io/x/onecloud/pkg/util/dbutils/doc.go new file mode 100644 index 000000000..5e6aad280 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/dbutils/doc.go @@ -0,0 +1,15 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package dbutils // import "yunion.io/x/onecloud/pkg/util/dbutils" diff --git a/vendor/yunion.io/x/onecloud/pkg/util/dbutils/mysql.go b/vendor/yunion.io/x/onecloud/pkg/util/dbutils/mysql.go new file mode 100644 index 000000000..982a77f18 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/dbutils/mysql.go @@ -0,0 +1,72 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package dbutils + +import ( + "strings" + + "yunion.io/x/pkg/errors" +) + +type SDBConfig struct { + Hostport string + Database string + Username string + Password string +} + +func (cfg SDBConfig) Validate() error { + errs := make([]error, 0) + if len(cfg.Hostport) == 0 { + errs = append(errs, errors.Error("empty host port")) + } + if len(cfg.Username) == 0 { + errs = append(errs, errors.Error("empty username")) + } + if len(cfg.Database) == 0 { + errs = append(errs, errors.Error("empty database")) + } + return errors.NewAggregate(errs) +} + +func ParseMySQLConnStr(connStr string) SDBConfig { + // fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s", user, passwd, host, port, dburl, query.Encode()) + cfg := SDBConfig{} + index := strings.Index(connStr, "@tcp(") + if index > 0 { + userpass := connStr[:index] + hostdb := connStr[index+len("@tcp("):] + + index = strings.Index(userpass, ":") + if index > 0 { + cfg.Username = userpass[:index] + cfg.Password = userpass[index+1:] + } else if index < 0 { + cfg.Username = userpass + } + index = strings.Index(hostdb, ")/") + if index > 0 { + cfg.Hostport = hostdb[:index] + dbstr := hostdb[index+len(")/"):] + index = strings.Index(dbstr, "?") + if index > 0 { + cfg.Database = dbstr[:index] + } else if index < 0 { + cfg.Database = dbstr + } + } + } + return cfg +} diff --git a/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/blkid.go b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/blkid.go new file mode 100644 index 000000000..8271b68d3 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/blkid.go @@ -0,0 +1,44 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fileutils2 + +import ( + "regexp" + + "yunion.io/x/log" + + "yunion.io/x/onecloud/pkg/util/procutils" +) + +const ( + blkidTypePattern = `TYPE="(?P\w+)"` +) + +var ( + blkidTypeRegexp = regexp.MustCompile(blkidTypePattern) +) + +func GetBlkidType(filepath string) string { + out, err := procutils.NewCommand("blkid", filepath).Output() + if err != nil { + log.Errorf("blkid fail %s %s", filepath, out) + return "" + } + matches := blkidTypeRegexp.FindStringSubmatch(string(out)) + if len(matches) > 1 { + return matches[1] + } + return "" +} diff --git a/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/cheksum.go b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/cheksum.go new file mode 100644 index 000000000..02ae4fec0 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/cheksum.go @@ -0,0 +1,91 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fileutils2 + +import ( + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "fmt" + "hash" + "io" + "os" + + "yunion.io/x/log" +) + +func FileHash(filename string, hash []hash.Hash) ([][]byte, error) { + fp, err := os.Open(filename) + if err != nil { + log.Errorf("open file for hash fail %s", err) + return nil, err + } + defer fp.Close() + + buf := make([]byte, 4096) + for { + n, err := fp.Read(buf) + if n > 0 { + for i := 0; i < len(hash); i += 1 { + hash[i].Write(buf[:n]) + } + } + if n == 0 || err == io.EOF { + break + } + if err != nil { + log.Errorf("read file error %s", err) + return nil, err + } + } + sums := make([][]byte, len(hash)) + for i := 0; i < len(hash); i += 1 { + sums[i] = hash[i].Sum(nil) + } + return sums, nil +} + +func MD5(filename string) (string, error) { + sums, err := FileHash(filename, []hash.Hash{md5.New()}) + if err != nil { + return "", err + } + return fmt.Sprintf("%x", sums[0]), nil +} + +func SHA1(filename string) (string, error) { + sums, err := FileHash(filename, []hash.Hash{sha1.New()}) + if err != nil { + return "", err + } + return fmt.Sprintf("%x", sums[0]), nil +} + +func SHA256(filename string) (string, error) { + sums, err := FileHash(filename, []hash.Hash{sha256.New()}) + if err != nil { + return "", err + } + return fmt.Sprintf("%x", sums[0]), nil +} + +func SHA512(filename string) (string, error) { + sums, err := FileHash(filename, []hash.Hash{sha512.New()}) + if err != nil { + return "", err + } + return fmt.Sprintf("%x", sums[0]), nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/doc.go b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/doc.go new file mode 100644 index 000000000..e5fcef277 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/doc.go @@ -0,0 +1,15 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fileutils2 // import "yunion.io/x/onecloud/pkg/util/fileutils2" diff --git a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_dnsrecordset.go b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/exists.go similarity index 65% rename from vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_dnsrecordset.go rename to vendor/yunion.io/x/onecloud/pkg/util/fileutils2/exists.go index 5d1494388..f5b8931ef 100644 --- a/vendor/yunion.io/x/onecloud/pkg/mcclient/modules/compute/mod_dnsrecordset.go +++ b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/exists.go @@ -12,21 +12,26 @@ // See the License for the specific language governing permissions and // limitations under the License. -package compute +package fileutils2 import ( - "yunion.io/x/onecloud/pkg/mcclient/modulebase" - "yunion.io/x/onecloud/pkg/mcclient/modules" -) + "os" -var ( - DnsRecordSets modulebase.ResourceManager + "yunion.io/x/pkg/util/fileutils" ) -func init() { - DnsRecordSets = modules.NewComputeManager("dns_recordset", "dns_recordsets", - []string{}, - []string{}) +func Exists(filepath string) bool { + _, err := os.Lstat(filepath) + if err != nil { + return false + } + return true +} + +func IsFile(filepath string) bool { + return fileutils.IsFile(filepath) +} - modules.RegisterCompute(&DnsRecordSets) +func IsDir(filepath string) bool { + return fileutils.IsDir(filepath) } diff --git a/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/fasthash.go b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/fasthash.go new file mode 100644 index 000000000..1b29649ae --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/fasthash.go @@ -0,0 +1,107 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fileutils2 + +import ( + "crypto/md5" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "fmt" + "hash" + "io" + "os" + + "yunion.io/x/log" +) + +const ( + BLOCK_SIZE = 32 * 1024 // 2**15 + BLOCK_WIDTH = 15 +) + +func SumHashes(sums [][]byte) []byte { + minLen := 0 + for i := 0; i < len(sums); i += 1 { + if minLen == 0 || minLen > len(sums[i]) { + minLen = len(sums[i]) + } + } + ret := make([]byte, minLen) + for j := 0; j < minLen; j += 1 { + for i := 0; i < len(sums); i += 1 { + ret[j] += sums[i][j] + } + } + return ret +} + +func FileFastHash(filename string, hashAlgo []hash.Hash, rate int) ([][]byte, error) { + size := FileSize(filename) + blockCount := size >> BLOCK_WIDTH + samples := int(blockCount / int64(rate)) + + // log.Infof("block_count: %d samples: %d", blockCount, samples) + + if samples == 0 { + return FileHash(filename, hashAlgo) + } + + fp, err := os.Open(filename) + if err != nil { + log.Errorf("open file for hash fail %s", err) + return nil, err + } + defer fp.Close() + + buf := make([]byte, BLOCK_SIZE) + offset := int64(0) + for i := 0; i < samples; i += 1 { + // log.Infof("%dth offset %d %d", i, offset, size) + _, err := fp.Seek(offset, io.SeekStart) + if err != nil { + log.Errorf("seek error %s", err) + return nil, err + } + n, err := fp.Read(buf) + if err != nil { + log.Errorf("read error %s", err) + return nil, err + } + if n != BLOCK_SIZE { + return nil, fmt.Errorf("fail to read all???") + } + for i := 0; i < len(hashAlgo); i += 1 { + hashAlgo[i].Write(buf) + } + offset += (int64(rate) << BLOCK_WIDTH) + } + + sums := make([][]byte, len(hashAlgo)) + for i := 0; i < len(hashAlgo); i += 1 { + sums[i] = hashAlgo[i].Sum(nil) + } + return sums, nil +} + +func FastCheckSum(filePath string) (string, error) { + hashes := []hash.Hash{md5.New(), sha1.New(), sha256.New(), sha512.New()} + results, err := FileFastHash(filePath, hashes, 128) + if err != nil { + return "", err + } + sum := SumHashes(results) + return fmt.Sprintf("%x", sum), nil +} diff --git a/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/fileutils.go b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/fileutils.go new file mode 100644 index 000000000..3aa5432ea --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/fileutils.go @@ -0,0 +1,404 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fileutils2 + +import ( + "bufio" + "bytes" + "fmt" + "io/ioutil" + "os" + "path" + "path/filepath" + "regexp" + "strconv" + "strings" + + "yunion.io/x/log" + "yunion.io/x/pkg/errors" + + "yunion.io/x/onecloud/pkg/util/procutils" +) + +func Cleandir(sPath string, keepdir bool) error { + if f, _ := os.Lstat(sPath); f == nil || f.Mode()&os.ModeSymlink == os.ModeSymlink { + return nil + } + files, _ := ioutil.ReadDir(sPath) + for _, file := range files { + fp := path.Join(sPath, file.Name()) + if f, _ := os.Lstat(fp); f.Mode()&os.ModeSymlink == os.ModeSymlink { + if !keepdir { + if err := os.Remove(fp); err != nil { + return err + } + } + } else if f.IsDir() { + Cleandir(fp, keepdir) + if !keepdir { + if err := os.Remove(fp); err != nil { + return err + } + } + } else { + if err := os.Remove(fp); err != nil { + return err + } + } + } + return nil +} + +// TODO: test +func Zerofiles(sPath string) error { + f, err := os.Lstat(sPath) + switch { + case err != nil: + return err + case f.Mode()&os.ModeSymlink == os.ModeSymlink: + // islink + return nil + case f.Mode().IsRegular(): + return FilePutContents(sPath, "", false) + case f.Mode().IsDir(): + files, err := ioutil.ReadDir(sPath) + if err != nil { + return err + } + for _, file := range files { + if file.Mode()&os.ModeSymlink == os.ModeSymlink { + continue + } else if file.Mode().IsRegular() { + if err := FilePutContents(path.Join(sPath, file.Name()), "", false); err != nil { + return err + } + } else if file.Mode().IsDir() { + return Zerofiles(path.Join(sPath, file.Name())) + } + } + } + return nil +} + +func FileSetContents(filename string, content string) error { + return FilePutContents(filename, content, false) +} + +func FileAppendContents(filename string, content string) error { + return FilePutContents(filename, content, true) +} + +func FilePutContents(filename string, content string, modAppend bool) error { + var mode = os.O_WRONLY | os.O_CREATE + if modAppend { + mode = mode | os.O_APPEND + } else { + mode = mode | os.O_TRUNC + } + fd, err := os.OpenFile(filename, mode, 0644) + if err != nil { + return err + } + defer fd.Close() + _, err = fd.WriteString(content) + return err +} + +func IsBlockDevMounted(dev string) bool { + devPath := "/dev/" + dev + mounts, err := procutils.NewCommand("mount").Output() + if err != nil { + return false + } + for _, s := range strings.Split(string(mounts), "\n") { + if strings.HasPrefix(s, devPath) { + return true + } + } + return false +} + +func IsBlockDeviceUsed(dev string) bool { + if strings.HasPrefix(dev, "/dev/") { + dev = dev[strings.LastIndex(dev, "/")+1:] + } + devStr := fmt.Sprintf(" %s\n", dev) + devs, _ := procutils.NewCommand("cat", "/proc/partitions").Output() + if idx := strings.Index(string(devs), devStr); idx > 0 { + return true + } + return false +} + +func GetAllBlkdevsIoSchedulers() ([]string, error) { + if _, err := os.Stat("/sys/block"); !os.IsNotExist(err) { + blockDevs, err := ioutil.ReadDir("/sys/block") + if err != nil { + log.Errorf("ReadDir /sys/block error: %s", err) + return nil, errors.Wrap(err, "ioutil.ReadDir(/sys/block)") + } + for _, b := range blockDevs { + if IsBlockDevMounted(b.Name()) { + conf, err := GetBlkdevConfig(b.Name(), "queue/scheduler") + if err != nil { + log.Errorf("Get %s queue/scheduler fail %s", b.Name(), err) + } else { + algs := make([]string, 0) + for _, alg := range strings.Split(strings.TrimSpace(conf), " ") { + if len(alg) > 0 { + if alg[0] == '[' { + alg = alg[1 : len(alg)-1] + } + algs = append(algs, alg) + } + } + return algs, nil + } + } + } + log.Errorf("no block device avaiable") + return nil, nil + } else { + log.Errorf("stat /sys/block fail %s", err) + return nil, errors.Wrap(err, "stat /sys/block fail") + } +} + +func ChangeAllBlkdevsParams(params map[string]string) { + if _, err := os.Stat("/sys/block"); !os.IsNotExist(err) { + blockDevs, err := ioutil.ReadDir("/sys/block") + if err != nil { + log.Errorf("ReadDir /sys/block error: %s", err) + return + } + for _, b := range blockDevs { + if IsBlockDevMounted(b.Name()) { + for k, v := range params { + ChangeBlkdevParameter(b.Name(), k, v) + } + } + } + } +} + +func ChangeBlkdevParameter(dev, key, value string) { + p := path.Join("/sys/block", dev, key) + if _, err := os.Stat(p); !os.IsNotExist(err) { + err = FilePutContents(p, value, false) + if err != nil { + log.Errorf("Fail to set %s of %s to %s:%s", key, dev, value, err) + } + log.Infof("Set %s of %s to %s", key, dev, value) + } +} + +func GetBlkdevConfig(dev, key string) (string, error) { + p := path.Join("/sys/block", dev, key) + if _, err := os.Stat(p); !os.IsNotExist(err) { + return FileGetContents(p) + } else { + return "", err + } +} + +func FileGetContents(file string) (string, error) { + content, err := ioutil.ReadFile(file) + if err != nil { + return "", err + } + return string(content), nil +} + +func FileGetIntContent(file string) (int, error) { + content, err := FileGetContents(file) + if err != nil { + return -1, errors.Wrap(err, "FileGetContents") + } + val, err := strconv.Atoi(strings.TrimSpace(content)) + if err != nil { + return -1, errors.Wrapf(err, "convert %s to int", content) + } + return val, nil +} + +func GetFsFormat(diskPath string) string { + ret, err := procutils.NewCommand("blkid", "-o", "value", "-s", "TYPE", diskPath).Output() + if err != nil { + log.Errorf("failed exec blkid of dev %s: %s, %s", diskPath, err, ret) + return "" + } + var res string + for _, line := range strings.Split(string(ret), "\n") { + res += line + } + return res +} + +func CleanFailedMountpoints() { + var mtfile = "/etc/mtab" + if _, err := os.Stat(mtfile); os.IsNotExist(err) { + mtfile = "/proc/mounts" + } + f, err := os.Open(mtfile) + if err != nil { + log.Errorf("CleanFailedMountpoints error: %s", err) + } + reader := bufio.NewReader(f) + line, _, err := reader.ReadLine() + for err != nil { + m := strings.Split(string(line), " ") + if len(m) > 1 { + mp := m[1] + if _, err := os.Stat(mp); os.IsNotExist(err) { + log.Warningf("Mount point %s not exists", mp) + } + procutils.NewCommand("umount", mp).Run() + } + } +} + +type HostsFile map[string][]string + +func (hf HostsFile) Parse(content string) { + lines := strings.Split(content, "\n") + for _, line := range lines { + data := regexp.MustCompile(`\s+`).Split(line, -1) + for len(data) > 0 && data[len(data)-1] == "" { + data = data[:len(data)-1] + } + if len(data) > 1 { + hf[data[0]] = data[1:] + } + } +} + +func (hf HostsFile) Add(name string, value ...string) { + hf[name] = value +} + +func (hf HostsFile) String() string { + var ret = "" + for k, v := range hf { + if len(v) > 0 { + ret += fmt.Sprintf("%s\t%s\n", k, strings.Join(v, "\t")) + } + } + return ret +} + +func FsFormatToDiskType(fsFormat string) string { + switch { + case fsFormat == "swap": + return "linux-swap" + case strings.HasPrefix(fsFormat, "ext") || fsFormat == "xfs": + return "ext2" + case strings.HasPrefix(fsFormat, "fat"): + return "fat32" + case fsFormat == "ntfs": + return fsFormat + default: + return "" + } +} + +func GetDevOfPath(spath string) string { + spath, err := filepath.Abs(spath) + if err != nil { + log.Errorln(err) + return "" + } + lines, err := procutils.NewCommand("mount").Output() + if err != nil { + log.Errorln(err) + return "" + } + var ( + maxMatchLen int + matchDev string + ) + + for _, line := range strings.Split(string(lines), "\n") { + segs := strings.Split(line, " ") + if len(segs) < 3 { + continue + } + if strings.HasPrefix(segs[0], "/dev/") { + if strings.HasPrefix(spath, segs[2]) { + matchLen := len(segs[2]) + if maxMatchLen < matchLen { + maxMatchLen = matchLen + matchDev = segs[0] + } + } + } + } + return matchDev +} + +func GetDevId(spath string) string { + dev := GetDevOfPath(spath) + if len(dev) == 0 { + return "" + } + devInfo, err := procutils.NewCommand("ls", "-l", dev).Output() + if err != nil { + log.Errorln(err) + return "" + } + devInfos := strings.Split(string(devInfo), "\n") + data := strings.Split(string(devInfos[0]), " ") + data[4] = data[4][:len(data[4])-1] + return strings.Join(data, ":") +} + +func GetDevUuid(dev string) (map[string]string, error) { + lines, err := procutils.NewCommand("blkid", dev).Output() + if err != nil { + log.Errorf("GetDevUuid %s error: %v", dev, err) + return map[string]string{}, errors.Wrapf(err, "blkid") + } + for _, l := range strings.Split(string(lines), "\n") { + if strings.HasPrefix(l, dev) { + var ret = map[string]string{} + for _, part := range strings.Split(l, " ") { + data := strings.Split(part, "=") + if len(data) == 2 && strings.HasSuffix(data[0], "UUID") { + if data[1][0] == '"' || data[1][0] == '\'' { + ret[data[0]] = data[1][1 : len(data[1])-1] + } else { + ret[data[0]] = data[1] + } + } + } + return ret, nil + } + } + return map[string]string{}, nil +} + +func IsIsoFile(sPath string) bool { + file, err := os.Open(sPath) + if err != nil { + return false + } + defer file.Close() + file.Seek(0x8001, 0) + buffer := make([]byte, 5) + _, err = file.Read(buffer) + if err != nil { + return false + } + return bytes.Equal(buffer, []byte("CD001")) +} diff --git a/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/partition.go b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/partition.go new file mode 100644 index 000000000..39327e684 --- /dev/null +++ b/vendor/yunion.io/x/onecloud/pkg/util/fileutils2/partition.go @@ -0,0 +1,127 @@ +// Copyright 2019 Yunion +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fileutils2 + +import ( + "fmt" + "regexp" + "strconv" + "strings" + + "yunion.io/x/pkg/utils" + + regutils "yunion.io/x/onecloud/pkg/util/regutils2" +) + +type Partition struct { + Index int + Bootable bool + Start int64 + End int64 + Count int64 + DiskType string + Fs string + DevName string +} + +func NewPartition(idx int, bootable bool, start int64, end int64, count int64, diskType string, fs string, devName string) Partition { + return Partition{ + Index: idx, + Bootable: bootable, + Start: start, + End: end, + Count: count, + DiskType: diskType, + Fs: fs, + DevName: devName, + } +} + +// ParseDiskPartitions parse command `parted -s /dev/sda -- unit s print` result +func ParseDiskPartitions(dev string, lines []string) ([]Partition, string) { + parts := make([]Partition, 0) + labelPattern := `Partition Table:\s+(?P