diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb0b54c8..8ffeb7f2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,4 +15,4 @@ jobs: with: go-version-file: go.mod - - run: go test ./msrpc/... ./dcerpc/... + - run: go test ./msrpc/... ./dcerpc/... ./ssp/... ./ndr/... ./smb2/... ./text/... ./midl/... ./config/... diff --git a/go.mod b/go.mod index 7a8b14f4..f40b7ec9 100644 --- a/go.mod +++ b/go.mod @@ -1,25 +1,27 @@ module github.com/oiweiwei/go-msrpc -go 1.25 +go 1.25.0 require ( github.com/go-xmlfmt/xmlfmt v1.1.2 - github.com/indece-official/go-ebcdic v1.2.0 github.com/jcmturner/gofork v1.7.6 github.com/jcmturner/gokrb5/v8 v8.4.4 github.com/miekg/dns v1.1.58 + github.com/oiweiwei/go-math v1.0.0 + github.com/oiweiwei/go-oem v1.0.0 github.com/oiweiwei/go-smb2.fork v1.0.1 github.com/oiweiwei/gokrb5.fork/v9 v9.0.6 github.com/rs/zerolog v1.32.0 - github.com/stretchr/testify v1.10.0 - golang.org/x/crypto v0.45.0 - golang.org/x/text v0.31.0 + github.com/stretchr/testify v1.11.1 + golang.org/x/crypto v0.49.0 + golang.org/x/text v0.36.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/geoffgarside/ber v1.1.0 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/indece-official/go-ebcdic v1.2.0 // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect github.com/jcmturner/goidentity/v6 v6.0.1 // indirect @@ -27,10 +29,10 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.47.0 // indirect - golang.org/x/sync v0.18.0 // indirect - golang.org/x/sys v0.38.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/mod v0.34.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/tools v0.43.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 68e8b0e2..083baf27 100644 --- a/go.sum +++ b/go.sum @@ -39,6 +39,10 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4= github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY= +github.com/oiweiwei/go-math v1.0.0 h1:eBxtydohwi0RTfSX8EPQRO7Xt8j4Ck5v7PVv8Hvp7jg= +github.com/oiweiwei/go-math v1.0.0/go.mod h1:rWG2PIZRYIjovChTlCcssArtO/s2pVj38c1h2QfH1UM= +github.com/oiweiwei/go-oem v1.0.0 h1:77MJnres0RkNadz7oPEfsbUmZxw1XfYtl8yaxfm8bMM= +github.com/oiweiwei/go-oem v1.0.0/go.mod h1:+QzsBHKmIIYsYk6Cx+vmjBNSymazlroCVurNRzsgyIg= github.com/oiweiwei/go-smb2.fork v1.0.1 h1:qtXQtuHImkToy3W8x0aByZne3ruHnA70ayCT7Ue9Ejo= github.com/oiweiwei/go-smb2.fork v1.0.1/go.mod h1:h0CzLVvGAmq39izdYVHKyI5cLv6aHdbQAMKEe4dz4N8= github.com/oiweiwei/gokrb5.fork/v9 v9.0.6 h1:ZMXO5OtzPPSqZ7KPgknVuvHE5iAbSXq5JLgzrkiXknM= @@ -56,29 +60,29 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= -golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -88,8 +92,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -97,13 +101,13 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= +golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/ndr/buffer.go b/ndr/buffer.go index 5a59c7ea..6b5e97ad 100644 --- a/ndr/buffer.go +++ b/ndr/buffer.go @@ -6,7 +6,7 @@ import ( go_math "math" "sync" - "github.com/oiweiwei/go-msrpc/ndr/math" + "github.com/oiweiwei/go-math" ) // ChunkedBuffer interface is aimed to provide an interface diff --git a/ndr/math/cray.go b/ndr/math/cray.go deleted file mode 100644 index da176a53..00000000 --- a/ndr/math/cray.go +++ /dev/null @@ -1,144 +0,0 @@ -package math - -// Cray machine architecture defines only a double-precision floating-point format. -// However, because Cray machines may be required to handle single-precision -// floating-point values (for instance, if single-precision values are specified -// in an interface definition), NDR defines a single-precision floating-point format -// for Cray machines; this format is identical to IEEE big-endian single-precision -// format. - -/* - - Cray NDR Single-precision Floating-point Format (IEEE Big-Endian Single-Precision) - - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f3 | f2 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | e2 | f1 | s | e1 | - +-------------------------------------------------------------------------------+ - -*/ - -// CrayFloat32frombits ... -func CrayFloat32frombits(b uint32) float32 { - - var ( - r uint32 - ) - - r |= (b & 0x000000ff) << 24 - r |= (b & 0x0000ff00) << 8 - r |= (b & 0x00ff0000) >> 8 - r |= (b & 0xff000000) >> 24 - - return Float32frombits(r) -} - -// CrayFloat32bits ... -func CrayFloat32bits(v float32) uint32 { - - var ( - b uint32 = Float32bits(v) - - r uint32 - ) - - r |= (b & 0x000000ff) << 24 - r |= (b & 0x0000ff00) << 8 - r |= (b & 0x00ff0000) >> 8 - r |= (b & 0xff000000) >> 24 - - return r -} - -/* - - Cray NDR Double-precision Floating-point Format - - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f6 | f5 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f4 | f3 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f2 | f1 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | e2 | s | e1 | - +---------------------------------------+----+----------------------------------+ - -*/ - -func CrayFloat64bits(v float64) uint64 { - - var ( - b uint64 = Float64bits(v) - - exp int - s, e, m uint64 - ) - - s |= (b & IEEE64Sign) >> IEEE64SignPos - s <<= 7 - - exp = IEEE64Exponent(b) - exp -= 16384 - - e |= (uint64(exp) & 0x00000000000000ff) << 8 - e |= (uint64(exp) & 0x0000000000007f00) >> 8 - - m |= (b & 0x000ff00000000000) >> 28 - m |= (b & 0x00000ff000000000) >> 12 - m |= (b & 0x0000000ff0000000) << 4 - m |= (b & 0x000000000ff00000) << 20 - m |= (b & 0x00000000000ff000) << 36 - - return (s | e | m) -} - -func CrayFloat64frombits(b uint64) float64 { - - var ( - exp int - s, e, m uint64 - ) - - s = (b & 0x0000000000000080) >> 7 - s <<= IEEE64SignPos - - e |= (b & 0x000000000000007f) << 8 - e |= (b & 0x000000000000ff00) >> 8 - - exp = int(e) - exp += 16384 - - e = ToIEEE64Exponent(exp) - - m |= (b & 0x0000000000ff0000) << 28 - m |= (b & 0x00000000ff000000) << 12 - m |= (b & 0x000000ff00000000) >> 4 - m |= (b & 0x0000ff0000000000) >> 20 - m |= (b & 0x00ff000000000000) >> 36 - - m &= IEEE64Mantissa - - return Float64frombits(s | e | m) - -} - -var Cray = floatFormat{ - float32frombits: CrayFloat32frombits, - float32bits: CrayFloat32bits, - float64frombits: CrayFloat64frombits, - float64bits: CrayFloat64bits, -} diff --git a/ndr/math/cray_test.go b/ndr/math/cray_test.go deleted file mode 100644 index 2f57a12b..00000000 --- a/ndr/math/cray_test.go +++ /dev/null @@ -1,74 +0,0 @@ -package math - -import ( - "github.com/stretchr/testify/assert" - "testing" -) - -func TestCrayFloat32(t *testing.T) { - - var ( - ret float32 - ) - - for _, testCase := range []float32{ - -118.625, - 0.1526, - 25.34, - 25.33, - 234566.23, - -0.1752, - 0.001525, - 0.00023, - 0.000215, - 0.000015, - 123.45, - 1e3, - 1e-45, - } { - ret = CrayFloat32frombits(CrayFloat32bits(testCase)) - t.Logf("checking %v... ~ %v [abs: %v, rel: %v]", testCase, ret, ret-testCase, (ret-testCase)/testCase) - t.Logf("0x%08x", CrayFloat32bits(testCase)) - - abs := ret-testCase < cDelta32 && ret-testCase > -cDelta32 - - rel := (ret-testCase)/testCase < cDelta32 && (ret-testCase)/testCase > -cDelta32 - - assert.True(t, abs || rel) - - } -} - -func TestCrayFloat64(t *testing.T) { - - var ( - ret float64 - ) - - for _, testCase := range []float64{ - -118.625, - 0.1526, - 25.34, - 25.33, - 234566.23, - -0.1752, - 0.001525, - 0.00023, - 0.000215, - 0.000015, - 123.45, - 1e3, - 1e-45, - } { - ret = CrayFloat64frombits(CrayFloat64bits(testCase)) - t.Logf("checking %v... ~ %v [abs: %v, rel: %v]", testCase, ret, ret-testCase, (ret-testCase)/testCase) - t.Logf("0x%08x", CrayFloat64bits(testCase)) - - abs := ret-testCase < cDelta64 && ret-testCase > -cDelta64 - - rel := (ret-testCase)/testCase < cDelta64 && (ret-testCase)/testCase > -cDelta64 - - assert.True(t, abs || rel) - - } -} diff --git a/ndr/math/ibm.go b/ndr/math/ibm.go deleted file mode 100644 index c37be7e9..00000000 --- a/ndr/math/ibm.go +++ /dev/null @@ -1,168 +0,0 @@ -package math - -import ( - "math/bits" -) - -/* - IBM Hexadecimal Single-precision Floating-point Format - - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | s | e | f1 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f2 | - +-------------------------------------------------------------------------------+ - -*/ - -// IBMHexfloat32frombits ... -func IBMHexfloat32frombits(b uint32) float32 { - - var ( - exp int - s, e, m uint32 - ) - - var ( - lz int = bits.LeadingZeros32(b & 0x00ffffff) - ) - - s = b & IEEE32Sign - - exp = int((b & 0x7f000000) >> 24) - exp -= 64 - exp *= 4 - exp -= 1 - exp -= lz - 8 - - e = ToIEEE32Exponent(exp) - - m = b & 0x00ffffff - m ^= 1 << (31 - lz) - m <<= (lz - 8) - m &= IEEE32Mantissa - - return Float32frombits(s | e | m) - -} - -// IBMHexfloat32bits ... -func IBMHexfloat32bits(v float32) uint32 { - - var ( - b uint32 = Float32bits(v) - - exp int - s, e, m uint32 - ) - - s = b & 0x80000000 - - exp = IEEE32Exponent(b) - exp += 1 - - m = b & 0x007fffff - m += 0x00800000 - m >>= uint((4 - exp%4) % 4) - - exp += (4 - exp%4) % 4 - exp /= 4 - exp += 64 - - e = uint32(exp) << 24 - - return (s | e | m) -} - -/* - IBM Hexadecimal Double-precision Floating-point Format - - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | s | e | f1 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f2 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f3 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f4 | - +-------------------------------------------------------------------------------+ - -*/ - -// IBMHexfloat64frombits ... -func IBMHexfloat64frombits(b uint64) float64 { - - var ( - exp int - s, e, m uint64 - ) - - var ( - lz int = bits.LeadingZeros64(b & 0x00ffffffffffffff) - ) - - s = b & IEEE64Sign - - exp = int((b & 0x7f00000000000000) >> 56) - exp -= 64 - exp *= 4 - exp -= 1 - exp -= lz - 8 - - e = ToIEEE64Exponent(exp) - - m = b & 0x00ffffffffffffff - m ^= 1 << (63 - lz) - m <<= uint(lz) - 8 - m = (m >> 3) & IEEE64Mantissa - - return Float64frombits(s | e | m) -} - -// IBMHexfloat64bits ... -func IBMHexfloat64bits(v float64) uint64 { - - var ( - b uint64 = Float64bits(v) - - exp int - s, e, m uint64 - ) - - s = b & 0x8000000000000000 - - exp = IEEE64Exponent(b) - exp += 1 - - m = (b & IEEE64Mantissa) << 3 - m += 0x0080000000000000 - m >>= uint((4 - (exp)%4) % 4) - m &= 0x00ffffffffffffff - - exp += (4 - (exp)%4) % 4 - exp /= 4 - exp += 64 - - e = uint64(exp) << 56 - - return (s | e | m) -} - -var IBMHex = floatFormat{ - float32frombits: IBMHexfloat32frombits, - float32bits: IBMHexfloat32bits, - float64frombits: IBMHexfloat64frombits, - float64bits: IBMHexfloat64bits, -} diff --git a/ndr/math/ibm_test.go b/ndr/math/ibm_test.go deleted file mode 100644 index 370d6bcf..00000000 --- a/ndr/math/ibm_test.go +++ /dev/null @@ -1,79 +0,0 @@ -package math - -import ( - "github.com/stretchr/testify/assert" - "testing" -) - -const ( - cDelta32 = float32(1e-6) - cDelta64 = float64(1e-6) -) - -func TestIBMHexfloat32(t *testing.T) { - - var ( - ret float32 - ) - - for _, testCase := range []float32{ - -118.625, - 0.1526, - 25.34, - 25.33, - 234566.23, - -0.1752, - 0.001525, - 0.00023, - 0.000215, - 0.000015, - 123.45, - 1e3, - 1e-45, - } { - ret = IBMHexfloat32frombits(IBMHexfloat32bits(testCase)) - t.Logf("checking %v... ~ %v [abs: %v, rel: %v]", testCase, ret, ret-testCase, (ret-testCase)/testCase) - t.Logf("0x%08x", IBMHexfloat32bits(testCase)) - - abs := ret-testCase < cDelta32 && ret-testCase > -cDelta32 - - rel := (ret-testCase)/testCase < cDelta32 && (ret-testCase)/testCase > -cDelta32 - - assert.True(t, abs || rel) - - } -} - -func TestIBMHexfloat64(t *testing.T) { - - var ( - ret float64 - ) - - for _, testCase := range []float64{ - -118.625, - 0.1526, - 25.34, - 25.33, - 234566.23, - -0.1752, - 0.001525, - 0.00023, - 0.000215, - 0.000015, - 123.45, - 1e3, - 1e-45, - } { - ret = IBMHexfloat64frombits(IBMHexfloat64bits(testCase)) - t.Logf("checking %v... ~ %v [abs: %v, rel: %v]", testCase, ret, ret-testCase, (ret-testCase)/testCase) - t.Logf("0x%08x", IBMHexfloat64bits(testCase)) - - abs := ret-testCase < cDelta64 && ret-testCase > -cDelta64 - - rel := (ret-testCase)/testCase < cDelta64 && (ret-testCase)/testCase > -cDelta64 - - assert.True(t, abs || rel) - - } -} diff --git a/ndr/math/ieee.go b/ndr/math/ieee.go deleted file mode 100644 index add3983f..00000000 --- a/ndr/math/ieee.go +++ /dev/null @@ -1,49 +0,0 @@ -package math - -import ( - "math" -) - -var ( - Float32bits = math.Float32bits - Float32frombits = math.Float32frombits - Float64bits = math.Float64bits - Float64frombits = math.Float64frombits -) - -const ( - IEEE32Excess = 127 - IEEE64Excess = 1023 - - IEEE32Mantissa = 0x007fffff - IEEE64Mantissa = 0x000fffffffffffff - - IEEE32Sign = 0x80000000 - IEEE64Sign = 0x8000000000000000 - - IEEE32SignPos = 31 - IEEE64SignPos = 63 -) - -func ToIEEE32Exponent(e int) uint32 { - return (uint32(e+IEEE32Excess) << 23) & 0x7f800000 -} - -func IEEE32Exponent(u uint32) int { - return int((u&0x7f800000)>>23) - IEEE32Excess -} - -func ToIEEE64Exponent(e int) uint64 { - return (uint64(e+IEEE64Excess) << 52) & 0x7ff0000000000000 -} - -func IEEE64Exponent(u uint64) int { - return int((u&0x7ff0000000000000)>>52) - IEEE64Excess -} - -var IEEE = floatFormat{ - float32frombits: Float32frombits, - float32bits: Float32bits, - float64frombits: Float64frombits, - float64bits: Float64bits, -} diff --git a/ndr/math/math.go b/ndr/math/math.go deleted file mode 100644 index fc089b8d..00000000 --- a/ndr/math/math.go +++ /dev/null @@ -1,31 +0,0 @@ -package math - -type FloatFormat interface { - Float32bits(float32) uint32 - Float32frombits(uint32) float32 - Float64bits(float64) uint64 - Float64frombits(uint64) float64 -} - -type floatFormat struct { - float32bits func(float32) uint32 - float32frombits func(uint32) float32 - float64bits func(float64) uint64 - float64frombits func(uint64) float64 -} - -func (ff floatFormat) Float32bits(f float32) uint32 { - return ff.float32bits(f) -} - -func (ff floatFormat) Float32frombits(b uint32) float32 { - return ff.float32frombits(b) -} - -func (ff floatFormat) Float64bits(f float64) uint64 { - return ff.float64bits(f) -} - -func (ff floatFormat) Float64frombits(b uint64) float64 { - return ff.float64frombits(b) -} diff --git a/ndr/math/vax.go b/ndr/math/vax.go deleted file mode 100644 index 44cae261..00000000 --- a/ndr/math/vax.go +++ /dev/null @@ -1,148 +0,0 @@ -package math - -/* - VAX Single-precision (F) Floating-point Format - - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f2 | f3 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | s | e1 | e2 | f1 | - +----+----------------------------------+----+----------------------------------+ - -*/ - -// VaxFfloat32frombits ... -func VaxFfloat32frombits(b uint32) float32 { - - var ( - exp int - s, e, m uint32 - ) - - s = (b & 0x00008000) >> 15 - s <<= IEEE32SignPos - - exp = int((b & 0x00007f80) >> 7) - exp -= 128 - exp -= 1 - - e = ToIEEE32Exponent(exp) - - m |= (b & 0x0000007f) << 16 - m |= (b & 0xffff0000) >> 16 - - return Float32frombits(s | e | m) - -} - -// VaxFfloat32bits ... -func VaxFfloat32bits(v float32) uint32 { - - var ( - b uint32 = Float32bits(v) - - exp int - s, e, m uint32 - ) - - s = (b & IEEE32Sign) >> (IEEE32SignPos - 15) - - exp = IEEE32Exponent(b) - exp += 1 - exp += 128 - - e = uint32(exp) & 0x000000ff - e <<= 7 - - m |= (b & 0x007f0000) >> 16 - m |= (b & 0x0000ffff) << 16 - - return s | e | m -} - -/* - VAX Double-precision (G) Floating-point Format - - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 | 49 | 48 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f4 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | 35 | 34 | 33 | 32 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f3 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | f2 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | - +----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+ - | s | e | f1 | - +----+------------------------------------------------------+-------------------+ - -*/ - -// VaxGfloat64frombits ... -func VaxGfloat64frombits(b uint64) float64 { - - var ( - exp int - s, e, m uint64 - ) - - s = (b & 0x0000000000008000) >> 15 - s <<= IEEE64SignPos - - exp = int((b & 0x0000000000007ff0) >> 4) - exp -= 1024 - exp -= 1 - - e = ToIEEE64Exponent(exp) - - m |= (b & 0x000000000000000f) << 48 - m |= (b & 0x00000000ffff0000) << 16 - m |= (b & 0x0000ffff00000000) >> 16 - m |= (b & 0xffff000000000000) >> 48 - m &= IEEE64Mantissa - - return Float64frombits(s | e | m) - -} - -// VaxGfloat64bits ... -func VaxGfloat64bits(v float64) uint64 { - - var ( - b uint64 = Float64bits(v) - - exp int - s, e, m uint64 - ) - - exp = IEEE64Exponent(b) - exp += 1 - exp += 1024 - - s = ((b & IEEE64Sign) >> (IEEE64SignPos - 15)) - - e = uint64(exp) << 4 - - m |= (b & 0x000f000000000000) >> 48 - m |= (b & 0x0000ffff00000000) >> 16 - m |= (b & 0x00000000ffff0000) << 16 - m |= (b & 0x000000000000ffff) << 48 - - return (s | e | m) -} - -var Vax = floatFormat{ - float32frombits: VaxFfloat32frombits, - float32bits: VaxFfloat32bits, - float64frombits: VaxGfloat64frombits, - float64bits: VaxGfloat64bits, -} diff --git a/ndr/math/vax_test.go b/ndr/math/vax_test.go deleted file mode 100644 index 75448fc0..00000000 --- a/ndr/math/vax_test.go +++ /dev/null @@ -1,124 +0,0 @@ -package math - -import ( - "github.com/stretchr/testify/assert" - "testing" -) - -func TestVaxFFloat32(t *testing.T) { - - var ( - ret float32 - ) - - // source for the test data : https://pubs.usgs.gov/of/2005/1424/ - - for _, testCase := range []struct { - V float32 - Ret uint32 - }{ - {1.000000, 0x00004080}, - {-1.000000, 0x0000C080}, - {3.500000, 0x00004160}, - {-3.500000, 0x0000C160}, - {3.141590, 0x0FD04149}, - {-3.141590, 0x0FD0C149}, - {9.9999999e+36, 0xBDC27DF0}, - {-9.9999999e+36, 0xBDC2FDF0}, - {9.9999999e-38, 0x1CEA0308}, - {-9.9999999e-38, 0x1CEA8308}, - {1.234568, 0x0653409E}, - {-1.234568, 0x0653C09E}, - } { - - t.Logf("checking value for %v...", testCase.V) - assert.Equal(t, testCase.Ret, VaxFfloat32bits(testCase.V)) - } - - for _, testCase := range []float32{ - -118.625, - 0.1526, - 25.34, - 25.33, - 234566.23, - -0.1752, - 0.001525, - 0.00023, - 0.000215, - 0.000015, - 123.45, - 1e3, - 1e-45, - } { - - ret = VaxFfloat32frombits(VaxFfloat32bits(testCase)) - t.Logf("checking %v... ~ %v [abs: %v, rel: %v]", testCase, ret, ret-testCase, (ret-testCase)/testCase) - t.Logf("vax: 0x%08x, float: 0x%08x", VaxFfloat32bits(testCase), Float32bits(testCase)) - - abs := ret-testCase < cDelta32 && ret-testCase > -cDelta32 - - rel := (ret-testCase)/testCase < cDelta32 && (ret-testCase)/testCase > -cDelta32 - - assert.True(t, abs || rel) - - } -} - -func TestVaxGfloat64(t *testing.T) { - - var ( - ret float64 - ) - - // source for the test data : https://pubs.usgs.gov/of/2005/1424/ - - for _, testCase := range []struct { - V float64 - Ret uint64 - }{ - - {1.000000000000000, 0x0000000000004010}, - {-1.000000000000000, 0x000000000000C010}, - {3.500000000000000, 0x000000000000402C}, - {-3.500000000000000, 0x000000000000C02C}, - {3.141592653589793, 0x2D18544421FB4029}, - {-3.141592653589793, 0x2D18544421FBC029}, - {1.0000000000000000e+37, 0x691B435717B847BE}, - {-1.0000000000000000e+37, 0x691B435717B8C7BE}, - {9.9999999999999999e-38, 0x8B8F428A039D3861}, - {-9.9999999999999999e-38, 0x8B8F428A039DB861}, - {1.234567890123450, 0x59DD428CC0CA4013}, - {-1.234567890123450, 0x59DD428CC0CAC013}, - } { - t.Logf("checking value for %v..., float: %v", testCase.V, VaxGfloat64frombits(VaxGfloat64bits(testCase.V))) - assert.Equal(t, testCase.Ret, VaxGfloat64bits(testCase.V)) - } - - for _, testCase := range []float64{ - -118.625, - 0.1526, - 25.34, - 25.33, - 234566.23, - -0.1752, - 0.001525, - 0.00023, - 0.000215, - 0.000015, - 123.45, - 1e3, - 1e-45, - } { - - ret = VaxGfloat64frombits(VaxGfloat64bits(testCase)) - t.Logf("checking %v... ~ %v [abs: %v, rel: %v]", testCase, ret, ret-testCase, (ret-testCase)/testCase) - t.Logf("vax: 0x%08x, float: 0x%08x", VaxGfloat64bits(testCase), Float64bits(testCase)) - - abs := ret-testCase < cDelta64 && ret-testCase > -cDelta64 - - rel := (ret-testCase)/testCase < cDelta64 && (ret-testCase)/testCase > -cDelta64 - - assert.True(t, abs || rel) - - } -} diff --git a/ndr/ndr_data_representation.go b/ndr/ndr_data_representation.go index 15f495ca..b934af04 100644 --- a/ndr/ndr_data_representation.go +++ b/ndr/ndr_data_representation.go @@ -3,7 +3,7 @@ package ndr import ( "encoding/binary" - "github.com/oiweiwei/go-msrpc/ndr/math" + "github.com/oiweiwei/go-math" ) // The NDR data representation. diff --git a/ssp/netlogon/netlogon.go b/ssp/netlogon/netlogon.go index 7f712b95..25eefb5e 100644 --- a/ssp/netlogon/netlogon.go +++ b/ssp/netlogon/netlogon.go @@ -11,7 +11,7 @@ import ( "fmt" "strings" - "github.com/oiweiwei/go-msrpc/text/encoding/oem" + "github.com/oiweiwei/go-oem" ) type NegFlag uint32 diff --git a/ssp/ntlm/internal/codec.go b/ssp/ntlm/internal/codec.go index 3516cade..b8952679 100644 --- a/ssp/ntlm/internal/codec.go +++ b/ssp/ntlm/internal/codec.go @@ -7,7 +7,7 @@ import ( "fmt" "io" - "github.com/oiweiwei/go-msrpc/text/encoding/oem" + "github.com/oiweiwei/go-oem" ) type StringCodec = oem.Encoding diff --git a/text/encoding/oem/ascii.go b/text/encoding/oem/ascii.go deleted file mode 100644 index fcee5978..00000000 --- a/text/encoding/oem/ascii.go +++ /dev/null @@ -1,34 +0,0 @@ -package oem - -import "unicode" - -type ascii struct{} - -const ( - asciiReplacementChar = 0x1A -) - -func (ascii) Encode(s string) ([]byte, error) { - runes := []rune(s) - b := make([]byte, len(runes)) - for i := 0; i < len(b); i++ { - if runes[i] > unicode.MaxASCII { - b[i] = asciiReplacementChar - } else { - b[i] = byte(runes[i]) - } - } - return b, nil -} - -func (ascii) Decode(b []byte) (string, error) { - runes := make([]rune, len(b)) - for i := 0; i < len(b); i++ { - if b[i] == asciiReplacementChar { - runes[i] = unicode.ReplacementChar - } else { - runes[i] = rune(b[i]) - } - } - return string(runes), nil -} diff --git a/text/encoding/oem/charmap.go b/text/encoding/oem/charmap.go deleted file mode 100644 index 3f136b32..00000000 --- a/text/encoding/oem/charmap.go +++ /dev/null @@ -1,16 +0,0 @@ -package oem - -import "golang.org/x/text/encoding" - -type Charmap struct { - charmap encoding.Encoding -} - -func (e Charmap) Encode(s string) ([]byte, error) { - return e.charmap.NewEncoder().Bytes([]byte(s)) -} - -func (e Charmap) Decode(b []byte) (string, error) { - b, err := e.charmap.NewDecoder().Bytes(b) - return string(b), err -} diff --git a/text/encoding/oem/charmap2.go b/text/encoding/oem/charmap2.go deleted file mode 100644 index 743121e7..00000000 --- a/text/encoding/oem/charmap2.go +++ /dev/null @@ -1,39 +0,0 @@ -package oem - -import "unicode" - -type Charmap2 struct { - toUTF8 [256]rune - fromUTF8 map[rune]byte -} - -func (c2 Charmap2) Encode(s string) ([]byte, error) { - out := make([]byte, len([]rune(s))) - for i, r := range []rune(s) { - c, ok := c2.fromUTF8[r] - if !ok { - c = 0x1A - } - out[i] = c - } - return out, nil -} - -func (c2 Charmap2) Decode(b []byte) (string, error) { - out := make([]rune, len(b)) - for i := range b { - out[i] = c2.toUTF8[b[i]] - } - return string(out), nil -} - -func NewCharmap2(toUTF8 [256]rune) *Charmap2 { - chrmap := Charmap2{toUTF8: toUTF8, fromUTF8: make(map[rune]byte)} - for i := range toUTF8 { - if toUTF8[i] == unicode.ReplacementChar { - continue - } - chrmap.fromUTF8[toUTF8[i]] = byte(i) - } - return &chrmap -} diff --git a/text/encoding/oem/ebcdic.go b/text/encoding/oem/ebcdic.go deleted file mode 100644 index 3bdec194..00000000 --- a/text/encoding/oem/ebcdic.go +++ /dev/null @@ -1,17 +0,0 @@ -package oem - -import ( - "github.com/indece-official/go-ebcdic" -) - -type EBCDIC struct { - CodePage int -} - -func (e EBCDIC) Encode(s string) ([]byte, error) { - return ebcdic.Encode(s, e.CodePage) -} - -func (e EBCDIC) Decode(b []byte) (string, error) { - return ebcdic.Decode(b, e.CodePage) -} diff --git a/text/encoding/oem/maketables.go b/text/encoding/oem/maketables.go deleted file mode 100644 index 22faa24b..00000000 --- a/text/encoding/oem/maketables.go +++ /dev/null @@ -1,204 +0,0 @@ -//go:build ignore - -package main - -import ( - "bufio" - "bytes" - "errors" - "flag" - "fmt" - "io" - "net/http" - "os" - "strconv" - "strings" - - "go/format" -) - -var ( - file string -) - -func init() { - flag.StringVar(&file, "o", "", "output") - flag.Parse() -} - -var tables = []struct { - name string - source string -}{ - { - "cp437_DOSLatinUS", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP437.TXT", - }, - { - "cp737_DOSGreek", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP737.TXT", - }, - { - "cp775_DOSBaltRim", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP775.TXT", - }, - { - "cp850_DOSLatin1", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP850.TXT", - }, - { - "cp852_DOSLatin2", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP852.TXT", - }, - { - "cp855_DOSCyrillic", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP855.TXT", - }, - { - "cp857_DOSTurkish", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP857.TXT", - }, - { - "cp860_DOSPortuguese", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP860.TXT", - }, - { - "cp861_DOSIcelandic", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP861.TXT", - }, - { - "cp862_DOSHebrew", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP862.TXT", - }, - { - "cp863_DOSCanadaF", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP863.TXT", - }, - { - "cp864_DOSArabic", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP864.TXT", - }, - { - "cp865_DOSNordic", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP865.TXT", - }, - { - "cp866_DOSCyrillicRussian", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP866.TXT", - }, - { - "cp869_DOSGreek2", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP869.TXT", - }, - { - "cp874", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP874.TXT", - }, - { - "cp875_IBMGreek", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP875.TXT", - }, - { - "cp1026_IBMLatin5Turkish", - "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/EBCDIC/CP1026.TXT", - }, -} - -func main() { - - out := bytes.NewBuffer(nil) - - fmt.Fprintln(out, "//", "Code generated by maketables.go. DO NOT EDIT.") - - fmt.Fprintln(out, "package", "oem") - - for _, e := range tables { - cp, err := GetCodePage(e.name, e.source) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - fmt.Fprintln(out, "//", e.name) - fmt.Fprintln(out, "var", e.name, "=", "[256]rune{") - for i := 0; i < 256; i += 16 { - fmt.Fprintln(out, strings.Join(cp[i:i+16], ", "), ",") - } - fmt.Fprintln(out, "}") - } - - b, err := format.Source(out.Bytes()) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - - f := os.Stdout - - if file != "" && file != "-" { - f, err = os.OpenFile(file, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - defer f.Close() - } - - fmt.Fprintln(f, string(b)) -} - -type CodePage [265]string - -func GetCodePage(n string, url string) (*CodePage, error) { - - resp, err := http.Get(url) - if err != nil { - return nil, err - } - - defer resp.Body.Close() - - reader := bufio.NewReader(resp.Body) - - codePage := CodePage{} - - for { - line, _, err := reader.ReadLine() - if err != nil { - if err == io.EOF { - break - } - return nil, err - } - if len(line) == 0 || line[0] == 0x1A || line[0] == '#' { - // skip '', '^Z', '#' - continue - } - - chr, uni, _, err := split3(line) - if err != nil { - return nil, err - } - - chri, err := strconv.ParseInt(chr, 16, 16) - if err != nil { - return nil, err - } - - if uni == "" { - codePage[chri] = "0xfffd" - } else { - codePage[chri] = "0x" + strings.ToLower(uni) - } - } - - return &codePage, nil - -} - -func split3(line []byte) (string, string, string, error) { - l := strings.Split(string(line), "\t") - if len(l) != 3 { - return "", "", "", errors.New("invalid line") - } - return strings.TrimSpace(strings.TrimPrefix(l[0], "0x")), strings.TrimSpace(strings.TrimPrefix(l[1], "0x")), strings.TrimPrefix(l[2], "#"), nil -} diff --git a/text/encoding/oem/oem.go b/text/encoding/oem/oem.go deleted file mode 100644 index 44a119f0..00000000 --- a/text/encoding/oem/oem.go +++ /dev/null @@ -1,105 +0,0 @@ -//go:generate go run ./maketables.go -o tables.go - -package oem - -// package oem privdes the set of original equipment manufacturer (OEM) -// encoders/decoders. - -import ( - "context" - "sync" - - "golang.org/x/text/encoding/charmap" - "golang.org/x/text/encoding/japanese" - "golang.org/x/text/encoding/korean" - "golang.org/x/text/encoding/simplifiedchinese" - "golang.org/x/text/encoding/traditionalchinese" - - "github.com/indece-official/go-ebcdic" -) - -// The OEM encoding. -type Encoding interface { - // Encode function encodes the string to the OEM encoding. - Encode(string) ([]byte, error) - // Decode function decodes the bytes from the OEM encoding. - Decode([]byte) (string, error) -} - -var ( - ASCII = func() Encoding { return ascii{} } - CP437_DOSLatinUS = func() Encoding { return Charmap{charmap.CodePage437} } - CP500_IBMInternational = func() Encoding { return EBCDIC{ebcdic.EBCDIC500} } - CP737_DOSGreek = func() Encoding { return NewCharmap2(cp737_DOSGreek) } - CP775_DOSBaltRim = func() Encoding { return NewCharmap2(cp775_DOSBaltRim) } - CP850_DOSLatin1 = func() Encoding { return Charmap{charmap.CodePage850} } - CP852_DOSLatin2 = func() Encoding { return Charmap{charmap.CodePage852} } - CP855_DOSCyrillic = func() Encoding { return Charmap{charmap.CodePage855} } - CP857_DOSTurkish = func() Encoding { return NewCharmap2(cp857_DOSTurkish) } - CP860_DOSPortuguese = func() Encoding { return Charmap{charmap.CodePage860} } - CP861_DOSIcelandic = func() Encoding { return NewCharmap2(cp861_DOSIcelandic) } - CP862_DOSHebrew = func() Encoding { return Charmap{charmap.CodePage862} } - CP863_DOSCanadaF = func() Encoding { return Charmap{charmap.CodePage863} } - CP864_DOSArabic = func() Encoding { return NewCharmap2(cp864_DOSArabic) } - CP865_DOSNordic = func() Encoding { return Charmap{charmap.CodePage863} } - CP866_DOSCyrillicRussian = func() Encoding { return Charmap{charmap.CodePage866} } - CP869_DOSGreek2 = func() Encoding { return NewCharmap2(cp869_DOSGreek2) } - CP874_DOSThai = func() Encoding { return NewCharmap2(cp874) } - CP875_IBMGreek = func() Encoding { return NewCharmap2(cp875_IBMGreek) } - CP932 = func() Encoding { return Charmap{japanese.ShiftJIS} } - CP936 = func() Encoding { return Charmap{simplifiedchinese.GBK} } - CP949 = func() Encoding { return Charmap{korean.EUCKR} } - CP950 = func() Encoding { return Charmap{traditionalchinese.Big5} } - CP1026_IBMLatin5Turkish = func() Encoding { return NewCharmap2(cp1026_IBMLatin5Turkish) } - CP1250 = func() Encoding { return Charmap{charmap.Windows1250} } - CP1251 = func() Encoding { return Charmap{charmap.Windows1251} } - CP1252 = func() Encoding { return Charmap{charmap.Windows1252} } - EBCDIC037 = func() Encoding { return EBCDIC{ebcdic.EBCDIC037} } - EBCDIC1140 = func() Encoding { return EBCDIC{ebcdic.EBCDIC1140} } - EBCDIC1141 = func() Encoding { return EBCDIC{ebcdic.EBCDIC1141} } - EBCDIC1148 = func() Encoding { return EBCDIC{ebcdic.EBCDIC1148} } - EBCDIC273 = func() Encoding { return EBCDIC{ebcdic.EBCDIC273} } - EBCDIC500 = func() Encoding { return EBCDIC{ebcdic.EBCDIC500} } -) - -var ( - defaultEncodingMu = new(sync.Mutex) - defaultEncoding = CP437_DOSLatinUS() -) - -// DefaultEncoding function returns the default OEM encoding. -func DefaultEncoding() Encoding { - return defaultEncoding -} - -// WithDefaultEncoding function sets the default OEM encoding for -// all top-level encode/decode operations. -func WithDefaultEncoding(e Encoding) { - defaultEncodingMu.Lock() - defaultEncoding = e - defaultEncodingMu.Unlock() -} - -// Encode function encodes the string to the default OEM encoding. -func Encode(s string) ([]byte, error) { - return defaultEncoding.Encode(s) -} - -// Decode function decodes the string from the default OEM encoding. -func Decode(b []byte) (string, error) { - return defaultEncoding.Decode(b) -} - -type ctxKey struct{} - -func WithContext(ctx context.Context, e Encoding) context.Context { - return context.WithValue(ctx, ctxKey{}, e) -} - -func FromContext(ctx context.Context) Encoding { - e, ok := ctx.Value(ctxKey{}).(Encoding) - if !ok { - return defaultEncoding - } - return e -} diff --git a/text/encoding/oem/tables.go b/text/encoding/oem/tables.go deleted file mode 100644 index 3f457f03..00000000 --- a/text/encoding/oem/tables.go +++ /dev/null @@ -1,363 +0,0 @@ -// Code generated by maketables.go. DO NOT EDIT. -package oem - -// cp437_DOSLatinUS -var cp437_DOSLatinUS = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, - 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, - 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, -} - -// cp737_DOSGreek -var cp737_DOSGreek = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, - 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, - 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03c9, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd, 0x03cb, 0x03ce, 0x0386, 0x0388, 0x0389, 0x038a, 0x038c, 0x038e, - 0x038f, 0x00b1, 0x2265, 0x2264, 0x03aa, 0x03ab, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, -} - -// cp775_DOSBaltRim -var cp775_DOSBaltRim = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x0106, 0x00fc, 0x00e9, 0x0101, 0x00e4, 0x0123, 0x00e5, 0x0107, 0x0142, 0x0113, 0x0156, 0x0157, 0x012b, 0x0179, 0x00c4, 0x00c5, - 0x00c9, 0x00e6, 0x00c6, 0x014d, 0x00f6, 0x0122, 0x00a2, 0x015a, 0x015b, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x00a4, - 0x0100, 0x012a, 0x00f3, 0x017b, 0x017c, 0x017a, 0x201d, 0x00a6, 0x00a9, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x0141, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010c, 0x0118, 0x0116, 0x2563, 0x2551, 0x2557, 0x255d, 0x012e, 0x0160, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0172, 0x016a, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x017d, - 0x0105, 0x010d, 0x0119, 0x0117, 0x012f, 0x0161, 0x0173, 0x016b, 0x017e, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x00d3, 0x00df, 0x014c, 0x0143, 0x00f5, 0x00d5, 0x00b5, 0x0144, 0x0136, 0x0137, 0x013b, 0x013c, 0x0146, 0x0112, 0x0145, 0x2019, - 0x00ad, 0x00b1, 0x201c, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x201e, 0x00b0, 0x2219, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, -} - -// cp850_DOSLatin1 -var cp850_DOSLatin1 = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, - 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, - 0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce, 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, - 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe, 0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4, - 0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, -} - -// cp852_DOSLatin2 -var cp852_DOSLatin2 = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x016f, 0x0107, 0x00e7, 0x0142, 0x00eb, 0x0150, 0x0151, 0x00ee, 0x0179, 0x00c4, 0x0106, - 0x00c9, 0x0139, 0x013a, 0x00f4, 0x00f6, 0x013d, 0x013e, 0x015a, 0x015b, 0x00d6, 0x00dc, 0x0164, 0x0165, 0x0141, 0x00d7, 0x010d, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x0104, 0x0105, 0x017d, 0x017e, 0x0118, 0x0119, 0x00ac, 0x017a, 0x010c, 0x015f, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x011a, 0x015e, 0x2563, 0x2551, 0x2557, 0x255d, 0x017b, 0x017c, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x0102, 0x0103, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, - 0x0111, 0x0110, 0x010e, 0x00cb, 0x010f, 0x0147, 0x00cd, 0x00ce, 0x011b, 0x2518, 0x250c, 0x2588, 0x2584, 0x0162, 0x016e, 0x2580, - 0x00d3, 0x00df, 0x00d4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161, 0x0154, 0x00da, 0x0155, 0x0170, 0x00fd, 0x00dd, 0x0163, 0x00b4, - 0x00ad, 0x02dd, 0x02db, 0x02c7, 0x02d8, 0x00a7, 0x00f7, 0x00b8, 0x00b0, 0x00a8, 0x02d9, 0x0171, 0x0158, 0x0159, 0x25a0, 0x00a0, -} - -// cp855_DOSCyrillic -var cp855_DOSCyrillic = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404, 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408, - 0x0459, 0x0409, 0x045a, 0x040a, 0x045b, 0x040b, 0x045c, 0x040c, 0x045e, 0x040e, 0x045f, 0x040f, 0x044e, 0x042e, 0x044a, 0x042a, - 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414, 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438, 0x0418, 0x2563, 0x2551, 0x2557, 0x255d, 0x0439, 0x0419, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x043a, 0x041a, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, - 0x043b, 0x041b, 0x043c, 0x041c, 0x043d, 0x041d, 0x043e, 0x041e, 0x043f, 0x2518, 0x250c, 0x2588, 0x2584, 0x041f, 0x044f, 0x2580, - 0x042f, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443, 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044c, 0x042c, 0x2116, - 0x00ad, 0x044b, 0x042b, 0x0437, 0x0417, 0x0448, 0x0428, 0x044d, 0x042d, 0x0449, 0x0429, 0x0447, 0x0427, 0x00a7, 0x25a0, 0x00a0, -} - -// cp857_DOSTurkish -var cp857_DOSTurkish = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x0131, 0x00c4, 0x00c5, - 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x0130, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x015e, 0x015f, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x011e, 0x011f, 0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0, 0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4, - 0x00ba, 0x00aa, 0x00ca, 0x00cb, 0x00c8, 0xfffd, 0x00cd, 0x00ce, 0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580, - 0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0xfffd, 0x00d7, 0x00da, 0x00db, 0x00d9, 0x00ec, 0x00ff, 0x00af, 0x00b4, - 0x00ad, 0x00b1, 0xfffd, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8, 0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0, -} - -// cp860_DOSPortuguese -var cp860_DOSPortuguese = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e3, 0x00e0, 0x00c1, 0x00e7, 0x00ea, 0x00ca, 0x00e8, 0x00cd, 0x00d4, 0x00ec, 0x00c3, 0x00c2, - 0x00c9, 0x00c0, 0x00c8, 0x00f4, 0x00f5, 0x00f2, 0x00da, 0x00f9, 0x00cc, 0x00d5, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x20a7, 0x00d3, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x00d2, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, - 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, -} - -// cp861_DOSIcelandic -var cp861_DOSIcelandic = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00d0, 0x00f0, 0x00de, 0x00c4, 0x00c5, - 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00fe, 0x00fb, 0x00dd, 0x00fd, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00c1, 0x00cd, 0x00d3, 0x00da, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, - 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, -} - -// cp862_DOSHebrew -var cp862_DOSHebrew = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, - 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9, 0x05ea, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, - 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, -} - -// cp863_DOSCanadaF -var cp863_DOSCanadaF = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00c2, 0x00e0, 0x00b6, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x2017, 0x00c0, 0x00a7, - 0x00c9, 0x00c8, 0x00ca, 0x00f4, 0x00cb, 0x00cf, 0x00fb, 0x00f9, 0x00a4, 0x00d4, 0x00dc, 0x00a2, 0x00a3, 0x00d9, 0x00db, 0x0192, - 0x00a6, 0x00b4, 0x00f3, 0x00fa, 0x00a8, 0x00b8, 0x00b3, 0x00af, 0x00ce, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00be, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, - 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, -} - -// cp864_DOSArabic -var cp864_DOSArabic = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 0x066a, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00b0, 0x00b7, 0x2219, 0x221a, 0x2592, 0x2500, 0x2502, 0x253c, 0x2524, 0x252c, 0x251c, 0x2534, 0x2510, 0x250c, 0x2514, 0x2518, - 0x03b2, 0x221e, 0x03c6, 0x00b1, 0x00bd, 0x00bc, 0x2248, 0x00ab, 0x00bb, 0xfef7, 0xfef8, 0xfffd, 0xfffd, 0xfefb, 0xfefc, 0xfffd, - 0x00a0, 0x00ad, 0xfe82, 0x00a3, 0x00a4, 0xfe84, 0xfffd, 0xfffd, 0xfe8e, 0xfe8f, 0xfe95, 0xfe99, 0x060c, 0xfe9d, 0xfea1, 0xfea5, - 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, 0x0668, 0x0669, 0xfed1, 0x061b, 0xfeb1, 0xfeb5, 0xfeb9, 0x061f, - 0x00a2, 0xfe80, 0xfe81, 0xfe83, 0xfe85, 0xfeca, 0xfe8b, 0xfe8d, 0xfe91, 0xfe93, 0xfe97, 0xfe9b, 0xfe9f, 0xfea3, 0xfea7, 0xfea9, - 0xfeab, 0xfead, 0xfeaf, 0xfeb3, 0xfeb7, 0xfebb, 0xfebf, 0xfec1, 0xfec5, 0xfecb, 0xfecf, 0x00a6, 0x00ac, 0x00f7, 0x00d7, 0xfec9, - 0x0640, 0xfed3, 0xfed7, 0xfedb, 0xfedf, 0xfee3, 0xfee7, 0xfeeb, 0xfeed, 0xfeef, 0xfef3, 0xfebd, 0xfecc, 0xfece, 0xfecd, 0xfee1, - 0xfe7d, 0x0651, 0xfee5, 0xfee9, 0xfeec, 0xfef0, 0xfef2, 0xfed0, 0xfed5, 0xfef5, 0xfef6, 0xfedd, 0xfed9, 0xfef1, 0x25a0, 0xfffd, -} - -// cp865_DOSNordic -var cp865_DOSNordic = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, - 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192, - 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00a4, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, - 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0, -} - -// cp866_DOSCyrillicRussian -var cp866_DOSCyrillicRussian = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, - 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, - 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, - 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, - 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0, -} - -// cp869_DOSGreek2 -var cp869_DOSGreek2 = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0386, 0xfffd, 0x00b7, 0x00ac, 0x00a6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389, - 0x038a, 0x03aa, 0x038c, 0xfffd, 0xfffd, 0x038e, 0x03ab, 0x00a9, 0x038f, 0x00b2, 0x00b3, 0x03ac, 0x00a3, 0x03ad, 0x03ae, 0x03af, - 0x03ca, 0x0390, 0x03cc, 0x03cd, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x00bd, 0x0398, 0x0399, 0x00ab, 0x00bb, - 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039a, 0x039b, 0x039c, 0x039d, 0x2563, 0x2551, 0x2557, 0x255d, 0x039e, 0x039f, 0x2510, - 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x03a0, 0x03a1, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x03a3, - 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x2518, 0x250c, 0x2588, 0x2584, 0x03b4, 0x03b5, 0x2580, - 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x0384, - 0x00ad, 0x00b1, 0x03c5, 0x03c6, 0x03c7, 0x00a7, 0x03c8, 0x0385, 0x00b0, 0x00a8, 0x03c9, 0x03cb, 0x03b0, 0x03ce, 0x25a0, 0x00a0, -} - -// cp874 -var cp874 = [256]rune{ - 0x0000, 0x0001, 0x0002, 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, 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, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, - 0x20ac, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2026, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, - 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, - 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, - 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, - 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f, - 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, - 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd, -} - -// cp875_IBMGreek -var cp875_IBMGreek = [256]rune{ - 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, - 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, - 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, - 0x0020, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x005b, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, - 0x0026, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x005d, 0x0024, 0x002a, 0x0029, 0x003b, 0x005e, - 0x002d, 0x002f, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x007c, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, - 0x00a8, 0x0386, 0x0388, 0x0389, 0x00a0, 0x038a, 0x038c, 0x038e, 0x038f, 0x0060, 0x003a, 0x0023, 0x0040, 0x0027, 0x003d, 0x0022, - 0x0385, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, - 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, - 0x00b4, 0x007e, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, - 0x00a3, 0x03ac, 0x03ad, 0x03ae, 0x03ca, 0x03af, 0x03cc, 0x03cd, 0x03cb, 0x03ce, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, - 0x007b, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x03c9, 0x0390, 0x03b0, 0x2018, 0x2015, - 0x007d, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b1, 0x00bd, 0x001a, 0x0387, 0x2019, 0x00a6, - 0x005c, 0x001a, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00a7, 0x001a, 0x001a, 0x00ab, 0x00ac, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00a9, 0x001a, 0x001a, 0x00bb, 0x009f, -} - -// cp1026_IBMLatin5Turkish -var cp1026_IBMLatin5Turkish = [256]rune{ - 0x0000, 0x0001, 0x0002, 0x0003, 0x009c, 0x0009, 0x0086, 0x007f, 0x0097, 0x008d, 0x008e, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, - 0x0010, 0x0011, 0x0012, 0x0013, 0x009d, 0x0085, 0x0008, 0x0087, 0x0018, 0x0019, 0x0092, 0x008f, 0x001c, 0x001d, 0x001e, 0x001f, - 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000a, 0x0017, 0x001b, 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x0005, 0x0006, 0x0007, - 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004, 0x0098, 0x0099, 0x009a, 0x009b, 0x0014, 0x0015, 0x009e, 0x001a, - 0x0020, 0x00a0, 0x00e2, 0x00e4, 0x00e0, 0x00e1, 0x00e3, 0x00e5, 0x007b, 0x00f1, 0x00c7, 0x002e, 0x003c, 0x0028, 0x002b, 0x0021, - 0x0026, 0x00e9, 0x00ea, 0x00eb, 0x00e8, 0x00ed, 0x00ee, 0x00ef, 0x00ec, 0x00df, 0x011e, 0x0130, 0x002a, 0x0029, 0x003b, 0x005e, - 0x002d, 0x002f, 0x00c2, 0x00c4, 0x00c0, 0x00c1, 0x00c3, 0x00c5, 0x005b, 0x00d1, 0x015f, 0x002c, 0x0025, 0x005f, 0x003e, 0x003f, - 0x00f8, 0x00c9, 0x00ca, 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x0131, 0x003a, 0x00d6, 0x015e, 0x0027, 0x003d, 0x00dc, - 0x00d8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x00ab, 0x00bb, 0x007d, 0x0060, 0x00a6, 0x00b1, - 0x00b0, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x00aa, 0x00ba, 0x00e6, 0x00b8, 0x00c6, 0x00a4, - 0x00b5, 0x00f6, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x00a1, 0x00bf, 0x005d, 0x0024, 0x0040, 0x00ae, - 0x00a2, 0x00a3, 0x00a5, 0x00b7, 0x00a9, 0x00a7, 0x00b6, 0x00bc, 0x00bd, 0x00be, 0x00ac, 0x007c, 0x00af, 0x00a8, 0x00b4, 0x00d7, - 0x00e7, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x00ad, 0x00f4, 0x007e, 0x00f2, 0x00f3, 0x00f5, - 0x011f, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x00b9, 0x00fb, 0x005c, 0x00f9, 0x00fa, 0x00ff, - 0x00fc, 0x00f7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x00b2, 0x00d4, 0x0023, 0x00d2, 0x00d3, 0x00d5, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x00b3, 0x00db, 0x0022, 0x00d9, 0x00da, 0x009f, -} -